From 9dda6162610c2b0bf3c7b557db2f26a87515fc6b Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 11:25:38 -0500 Subject: [PATCH 01/19] Updated migration checklist: you don't need to test in SQLite (#29948) no ref Ghost [dropped SQLite in production years ago][0]. Developers don't need to test migrations with SQLite. This change should have no user impact. [0]: https://ghost.org/changelog/5/ --- .github/workflows/migration-review.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/migration-review.yml b/.github/workflows/migration-review.yml index b0413e0a1b3..fceacbfcdf3 100644 --- a/.github/workflows/migration-review.yml +++ b/.github/workflows/migration-review.yml @@ -44,7 +44,6 @@ jobs: - [ ] Uses the correct utils - [ ] Contains a minimal changeset - [ ] Does not mix DDL/DML operations - - [ ] Tested in MySQL and SQLite ### Schema changes From 74eeda5c0911e46f4fa839710094224bfa2017a6 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 11:27:40 -0500 Subject: [PATCH 02/19] Tested email analytics database queries (#29890) no ref _I recommend reviewing this [one commit at a time](https://github.com/TryGhost/Ghost/pull/29890/commits)._ This change should have no user impact. This change: - tests email analytics database queries - stops using a global reference to the database, and injects the dependencies (DI) In addition to automated testing, I also manually tested this. I sent a newsletter, opened it in Gmail, and verified that I saw the open appear in the newsletter's analytics. --- .../email-analytics-service-wrapper.js | 4 +- .../server/services/email-analytics/index.ts | 6 +- .../services/email-analytics/lib/queries.ts | 100 ++-- .../automation-email-analytics.test.js | 6 +- .../newsletter-email-event-storage.test.js | 4 +- .../mailgun-email-suppression-list.test.js | 4 +- .../services/email-analytics/queries.test.ts | 535 ++++++++++++++++++ ghost/core/test/utils/fixture-utils.js | 4 +- 8 files changed, 608 insertions(+), 55 deletions(-) create mode 100644 ghost/core/test/unit/server/services/email-analytics/queries.test.ts diff --git a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js index 0f0ecbdffd7..82207ee984b 100644 --- a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js +++ b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js @@ -2,6 +2,7 @@ const logging = require('@tryghost/logging'); const metrics = require('@tryghost/metrics'); const config = require('../../../shared/config'); const domainEvents = require('@tryghost/domain-events'); +/** @import {Queries} from './lib/queries' */ /** @import {PrometheusClient} from '@tryghost/prometheus-metrics' */ /** @import {BatchEventProcessor} from './batch-event-processor' */ /** @import {JobNames, CursorSeed, EmailAnalyticsFetchResult} from './email-analytics-service' */ @@ -28,6 +29,7 @@ class EmailAnalyticsServiceWrapper { /** * @param {object} options * @param {Parameters[0]} options.event + * @param {Queries} options.queries * @param {string[]} options.mailgunTags * @param {JobNames} options.jobNames * @param {CursorSeed} options.cursorSeed @@ -36,6 +38,7 @@ class EmailAnalyticsServiceWrapper { */ init({ event, + queries, mailgunTags, jobNames, cursorSeed, @@ -49,7 +52,6 @@ class EmailAnalyticsServiceWrapper { const {EmailAnalyticsService} = require('./email-analytics-service'); const {fetchMailgunEvents} = require('./fetch-mailgun-events'); const settings = require('../../../shared/settings-cache'); - const {queries} = require('./lib/queries'); this.service = new EmailAnalyticsService({ fetchEvents: (options) => fetchMailgunEvents({...options, config, settings, tags: mailgunTags}), diff --git a/ghost/core/core/server/services/email-analytics/index.ts b/ghost/core/core/server/services/email-analytics/index.ts index 34da53958d3..f985e3b1c50 100644 --- a/ghost/core/core/server/services/email-analytics/index.ts +++ b/ghost/core/core/server/services/email-analytics/index.ts @@ -18,7 +18,7 @@ import {EmailRecipientFailure, EmailSpamComplaintEvent, Email} from '../../model import domainEvents from '@tryghost/domain-events'; // @ts-expect-error This module lacks type definitions. import prometheusClient from '../../../shared/prometheus-client'; -import {queries} from './lib/queries'; +import {Queries} from './lib/queries'; import {StartEmailAnalyticsJobEvent} from './events/start-email-analytics-job-event'; import {StartAutomationEmailAnalyticsJobEvent} from './events/start-automation-email-analytics-job-event'; import {AUTOMATION_EMAIL_TAG} from '../member-welcome-emails/constants'; @@ -34,6 +34,8 @@ export const automations = new EmailAnalyticsServiceWrapper({ }); export const init = () => { + const queries = new Queries(db.knex); + const newsletterEmailEventProcessor = new EmailEventProcessor({ domainEvents, db, @@ -58,6 +60,7 @@ export const init = () => { newsletters.init({ event: StartEmailAnalyticsJobEvent, + queries, mailgunTags: newsletterMailgunTags, jobNames: { latestNonOpened: 'email-analytics-latest-others', @@ -86,6 +89,7 @@ export const init = () => { automations.init({ event: StartAutomationEmailAnalyticsJobEvent, + queries, mailgunTags: [AUTOMATION_EMAIL_TAG], jobNames: { latestNonOpened: 'email-analytics-automation-latest-others', diff --git a/ghost/core/core/server/services/email-analytics/lib/queries.ts b/ghost/core/core/server/services/email-analytics/lib/queries.ts index 0df7080e8dd..92a52233594 100644 --- a/ghost/core/core/server/services/email-analytics/lib/queries.ts +++ b/ghost/core/core/server/services/email-analytics/lib/queries.ts @@ -1,9 +1,8 @@ import _ from 'lodash'; import debugFactory from '@tryghost/debug'; -// @ts-expect-error This module lacks type definitions. -import db from '../../../data/db'; import logging from '@tryghost/logging'; import ObjectID from 'bson-objectid'; +import type {Knex} from 'knex'; import type {JsonObject} from 'type-fest'; const debug = debugFactory('services:email-analytics'); @@ -31,8 +30,8 @@ type JobData = { * Creates a job in the jobs table if it does not already exist. * @param jobName - The name of the job to create. */ -async function createJobIfNotExists(jobName: EmailAnalyticsJobName): Promise { - await db.knex('jobs').insert({ +async function createJobIfNotExists(knex: Knex, jobName: EmailAnalyticsJobName): Promise { + await knex('jobs').insert({ id: new ObjectID().toHexString(), name: jobName, started_at: new Date(), @@ -67,7 +66,13 @@ function parseJobMetadata(rawMetadata: unknown): JobMetadata { }; } -export const queries = { +export class Queries { + #knex: Knex; + + constructor(knex: Knex) { + this.#knex = knex; + } + /** * Retrieves the timestamp of the last seen event for the specified email analytics events. * @param jobName - The name of the job to update. @@ -80,6 +85,8 @@ export const queries = { events: EmailAnalyticsEvent[], cursorSeed: CursorSeed ): Promise { + const knex = this.#knex; + const startDate = new Date(); let timestamps: (Date | string | null)[] = []; @@ -97,13 +104,13 @@ export const queries = { if (!columnName) { continue; } - const row = await db.knex(cursorSeed.tableName) - .select(db.knex.raw('MAX(??) as maxTimestamp', [columnName])) + const row = await knex(cursorSeed.tableName) + .select(knex.raw('MAX(??) as maxTimestamp', [columnName])) .first(); timestamps.push(row.maxTimestamp); } - await createJobIfNotExists(jobName); + await createJobIfNotExists(knex, jobName); } // Convert string dates to Date objects for SQLite compatibility @@ -118,7 +125,7 @@ export const queries = { debug(`getLastEventTimestamp: finished in ${Date.now() - startDate.getTime()}ms`); return lastSeenEventTimestamp; - }, + } /** * Retrieves the job data for the specified job name. @@ -126,7 +133,7 @@ export const queries = { * @returns The job data, or null if no job data is found. */ async getJobData(jobName: EmailAnalyticsJobName): Promise { - const row = await db.knex('jobs') + const row = await this.#knex('jobs') .select('finished_at', 'started_at', 'metadata') .where('name', jobName) .first(); @@ -135,7 +142,7 @@ export const queries = { started_at: row.started_at, metadata: parseJobMetadata(row.metadata) } : null; - }, + } /** * Retrieves the timestamp of the last job run for the specified job name. @@ -145,7 +152,7 @@ export const queries = { async getLastJobRunTimestamp(jobName: EmailAnalyticsJobName): Promise { const jobData = await this.getJobData(jobName); return jobData ? jobData.finished_at || jobData.started_at : null; - }, + } /** * Sets the timestamp of the last seen event for the specified email analytics events. @@ -162,9 +169,9 @@ export const queries = { debug(`Setting ${field} timestamp for job ${jobName} to ${date}`); const updateField = field === 'finished' ? 'finished_at' : 'started_at'; const status = field === 'finished' ? 'finished' : 'started'; - const result = await db.knex('jobs').update({[updateField]: date, updated_at: new Date(), status: status}).where('name', jobName); + const result = await this.#knex('jobs').update({[updateField]: date, updated_at: new Date(), status: status}).where('name', jobName); if (result === 0) { - await db.knex('jobs').insert({ + await this.#knex('jobs').insert({ id: new ObjectID().toHexString(), name: jobName, [updateField]: date.toISOString(), // force to iso string for sqlite @@ -176,7 +183,7 @@ export const queries = { const message = err instanceof Error ? err.message : String(err); debug(`Error setting ${field} timestamp for job ${jobName}: ${message}`); } - }, + } /** * Retrieves and parses the metadata JSON for the specified job. @@ -184,9 +191,9 @@ export const queries = { * @returns The parsed metadata object, or null. */ async getJobMetadata(jobName: EmailAnalyticsJobName): Promise { - const row = await db.knex('jobs').select('metadata').where('name', jobName).first(); + const row = await this.#knex('jobs').select('metadata').where('name', jobName).first(); return row ? parseJobMetadata(row.metadata) : null; - }, + } /** * Writes metadata JSON for the specified job. @@ -196,7 +203,7 @@ export const queries = { async setJobMetadata(jobName: EmailAnalyticsJobName, metadata: JobMetadata | null): Promise { try { const value = metadata ? JSON.stringify(metadata) : null; - await db.knex.transaction(async (trx: typeof db.knex) => { + await this.#knex.transaction(async (trx: Knex.Transaction) => { const result = await trx('jobs').update({metadata: value, updated_at: new Date()}).where('name', jobName); if (result === 0 && metadata) { await trx('jobs').insert({ @@ -212,7 +219,7 @@ export const queries = { const message = err instanceof Error ? err.message : String(err); logging.error(`Error setting metadata for job ${jobName}: ${message}`); } - }, + } /** * Sets the status of the specified email analytics job. @@ -225,7 +232,7 @@ export const queries = { async setJobStatus(jobName: EmailAnalyticsJobName, status: 'started' | 'finished' | 'failed'): Promise { debug(`Setting status for job ${jobName} to ${status}`); try { - const result = await db.knex('jobs') + const result = await this.#knex('jobs') .update({ status: status, updated_at: new Date() @@ -233,7 +240,7 @@ export const queries = { .where('name', jobName); if (result === 0) { - await db.knex('jobs').insert({ + await this.#knex('jobs').insert({ id: new ObjectID().toHexString(), name: jobName, status: status, @@ -246,11 +253,11 @@ export const queries = { debug(`Error setting status for job ${jobName}: ${message}`); throw err; } - }, + } async aggregateEmailStats(emailId: string, updateOpenedCount: boolean): Promise { - const [deliveredCount] = await db.knex('email_recipients').count('id as count').whereRaw('email_id = ? AND delivered_at IS NOT NULL', [emailId]); - const [failedCount] = await db.knex('email_recipients').count('id as count').whereRaw('email_id = ? AND failed_at IS NOT NULL', [emailId]); + const [deliveredCount] = await this.#knex('email_recipients').count('id as count').whereRaw('email_id = ? AND delivered_at IS NOT NULL', [emailId]); + const [failedCount] = await this.#knex('email_recipients').count('id as count').whereRaw('email_id = ? AND failed_at IS NOT NULL', [emailId]); const updateData: Record = { delivered_count: deliveredCount.count, @@ -258,37 +265,44 @@ export const queries = { }; if (updateOpenedCount) { - const [openedCount] = await db.knex('email_recipients').count('id as count').whereRaw('email_id = ? AND opened_at IS NOT NULL', [emailId]); + const [openedCount] = await this.#knex('email_recipients').count('id as count').whereRaw('email_id = ? AND opened_at IS NOT NULL', [emailId]); updateData.opened_count = openedCount.count; } - await db.knex('emails').update(updateData).where('id', emailId); - }, + await this.#knex('emails').update(updateData).where('id', emailId); + } async aggregateMemberStats(memberId: string): Promise { - const {trackedEmailCount} = await db.knex('email_recipients') - .select(db.knex.raw('COUNT(email_recipients.id) as trackedEmailCount')) + const {trackedEmailCount} = await this.#knex('email_recipients') + .select(this.#knex.raw('COUNT(email_recipients.id) as trackedEmailCount')) .leftJoin('emails', 'email_recipients.email_id', 'emails.id') .where('email_recipients.member_id', memberId) .where('emails.track_opens', true) .first() || {}; - - const [emailCount] = await db.knex('email_recipients').count('id as count').whereRaw('member_id = ?', [memberId]); - const [emailOpenedCount] = await db.knex('email_recipients').count('id as count').whereRaw('member_id = ? AND opened_at IS NOT NULL', [memberId]); + const emailCountResult = await this.#knex('email_recipients') + .count('id as count') + .whereRaw('member_id = ?', [memberId]) + .first(); + const emailOpenedCountResult = await this.#knex('email_recipients') + .count('id as count') + .whereRaw('member_id = ? AND opened_at IS NOT NULL', [memberId]) + .first(); + const emailCount = Number(emailCountResult?.count || 0); + const emailOpenedCount = Number(emailOpenedCountResult?.count || 0); const updateQuery: Record = { - email_count: emailCount.count, - email_opened_count: emailOpenedCount.count + email_count: emailCount, + email_opened_count: emailOpenedCount }; if (trackedEmailCount >= MIN_EMAIL_COUNT_FOR_OPEN_RATE) { - updateQuery.email_open_rate = Math.round(emailOpenedCount.count / trackedEmailCount * 100); + updateQuery.email_open_rate = Math.round(emailOpenedCount / trackedEmailCount * 100); } - await db.knex('members') + await this.#knex('members') .update(updateQuery) .where('id', memberId); - }, + } async aggregateMemberStatsBatch(memberIds: string[]): Promise { if (!memberIds || memberIds.length === 0) { @@ -296,13 +310,13 @@ export const queries = { } // Batch query to get stats for all members at once - const stats = await db.knex('email_recipients') + const stats = await this.#knex('email_recipients') .leftJoin('emails', 'emails.id', 'email_recipients.email_id') .select( 'email_recipients.member_id', - db.knex.raw('COUNT(email_recipients.id) as email_count'), - db.knex.raw('SUM(CASE WHEN email_recipients.opened_at IS NOT NULL THEN 1 ELSE 0 END) as email_opened_count'), - db.knex.raw('SUM(CASE WHEN emails.track_opens = 1 THEN 1 ELSE 0 END) as tracked_count') + this.#knex.raw('COUNT(email_recipients.id) as email_count'), + this.#knex.raw('SUM(CASE WHEN email_recipients.opened_at IS NOT NULL THEN 1 ELSE 0 END) as email_opened_count'), + this.#knex.raw('SUM(CASE WHEN emails.track_opens = 1 THEN 1 ELSE 0 END) as tracked_count') ) .whereIn('email_recipients.member_id', memberIds) .groupBy('email_recipients.member_id'); @@ -364,7 +378,7 @@ export const queries = { ]; // Execute batched update with CASE statements - await db.knex.raw(` + await this.#knex.raw(` UPDATE members SET email_count = CASE id ${emailCountCases.join(' ')} END, @@ -374,5 +388,3 @@ export const queries = { `, bindings); } }; - -export type Queries = typeof queries; diff --git a/ghost/core/test/integration/services/email-analytics/automation-email-analytics.test.js b/ghost/core/test/integration/services/email-analytics/automation-email-analytics.test.js index 582d78d9e5e..404911bec89 100644 --- a/ghost/core/test/integration/services/email-analytics/automation-email-analytics.test.js +++ b/ghost/core/test/integration/services/email-analytics/automation-email-analytics.test.js @@ -7,7 +7,7 @@ const {agentProvider} = require('../../../utils/e2e-framework'); const testUtils = require('../../../utils'); const MailgunClient = require('../../../../core/server/services/lib/mailgun-client'); const {AUTOMATION_EMAIL_TAG, DEFAULT_EMAIL_DESIGN_SETTING_SLUG} = require('../../../../core/server/services/member-welcome-emails/constants'); -const {queries} = require('../../../../core/server/services/email-analytics/lib/queries'); +const {Queries} = require('../../../../core/server/services/email-analytics/lib/queries'); const emailAnalytics = require('../../../../core/server/services/email-analytics'); const automationsApi = require('../../../../core/server/services/automations/automations-api'); @@ -28,9 +28,9 @@ describe('Automation email analytics', function () { let emailDesignSettingId; beforeAll(async function () { - sinon.stub(queries, 'getLastEventTimestamp').resolves(new Date(2000, 0, 1)); + sinon.stub(Queries.prototype, 'getLastEventTimestamp').resolves(new Date(2000, 0, 1)); // Same reason, for the cursor fetchMissing starts from. - sinon.stub(queries, 'getLastJobRunTimestamp').resolves(new Date(2000, 0, 1)); + sinon.stub(Queries.prototype, 'getLastJobRunTimestamp').resolves(new Date(2000, 0, 1)); await agentProvider.getAdminAPIAgent(); diff --git a/ghost/core/test/integration/services/email-service/newsletter-email-event-storage.test.js b/ghost/core/test/integration/services/email-service/newsletter-email-event-storage.test.js index e36491e7a59..c434be268e6 100644 --- a/ghost/core/test/integration/services/email-service/newsletter-email-event-storage.test.js +++ b/ghost/core/test/integration/services/email-service/newsletter-email-event-storage.test.js @@ -35,8 +35,8 @@ processingModes.forEach(({name, batchProcessing}) => { configUtils.set('emailAnalytics:batchProcessing', batchProcessing); // Stub queries before boot - const {queries} = require('../../../../core/server/services/email-analytics/lib/queries'); - sinon.stub(queries, 'getLastEventTimestamp').callsFake(async function () { + const {Queries} = require('../../../../core/server/services/email-analytics/lib/queries'); + sinon.stub(Queries.prototype, 'getLastEventTimestamp').callsFake(async function () { // This is required because otherwise the last event timestamp will be now, and that is too close to NOW to start fetching new events return new Date(2000, 0, 1); }); diff --git a/ghost/core/test/integration/services/mailgun-email-suppression-list.test.js b/ghost/core/test/integration/services/mailgun-email-suppression-list.test.js index 1d70a749f5e..f50ca9d3181 100644 --- a/ghost/core/test/integration/services/mailgun-email-suppression-list.test.js +++ b/ghost/core/test/integration/services/mailgun-email-suppression-list.test.js @@ -18,8 +18,8 @@ describe('MailgunEmailSuppressionList', function () { // fetched, so no suppression is created. The suite previously passed only // by free-riding on an earlier file's timestamp state, which breaks under // per-file isolation. Mirrors newsletter-email-event-storage.test.js. - const {queries} = require('../../../core/server/services/email-analytics/lib/queries'); - sinon.stub(queries, 'getLastEventTimestamp').callsFake(async function () { + const {Queries} = require('../../../core/server/services/email-analytics/lib/queries'); + sinon.stub(Queries.prototype, 'getLastEventTimestamp').callsFake(async function () { return new Date(2000, 0, 1); }); diff --git a/ghost/core/test/unit/server/services/email-analytics/queries.test.ts b/ghost/core/test/unit/server/services/email-analytics/queries.test.ts new file mode 100644 index 00000000000..6c50e360a27 --- /dev/null +++ b/ghost/core/test/unit/server/services/email-analytics/queries.test.ts @@ -0,0 +1,535 @@ +import assert from 'node:assert/strict'; +import ObjectId from 'bson-objectid'; +import createKnex, {type Knex} from 'knex'; +import {Queries} from '../../../../../core/server/services/email-analytics/lib/queries'; + +const createDatabase = async (): Promise => { + const database = createKnex({ + client: 'better-sqlite3', + connection: { + filename: ':memory:' + }, + pool: { + min: 1, + max: 1 + }, + useNullAsDefault: true + }); + + await database.schema.createTable('jobs', (table) => { + table.text('id').primary(); + table.text('name').notNullable().unique(); + table.text('status').notNullable().defaultTo('queued'); + table.datetime('started_at'); + table.datetime('finished_at'); + table.datetime('created_at').notNullable(); + table.datetime('updated_at'); + table.text('metadata'); + table.integer('queue_entry').unsigned(); + }); + + await database.schema.createTable('emails', (table) => { + table.text('id').primary(); + table.boolean('track_opens').notNullable().defaultTo(false); + table.integer('delivered_count').notNullable().defaultTo(0); + table.integer('failed_count').notNullable().defaultTo(0); + table.integer('opened_count').notNullable().defaultTo(0); + }); + + await database.schema.createTable('members', (table) => { + table.text('id').primary(); + table.integer('email_count').notNullable().defaultTo(0); + table.integer('email_opened_count').notNullable().defaultTo(0); + table.integer('email_open_rate'); + }); + + await database.schema.createTable('email_recipients', (table) => { + table.text('id').primary(); + table.text('email_id').references('id').inTable('emails'); + table.text('member_id').references('id').inTable('members'); + table.datetime('delivered_at'); + table.datetime('opened_at'); + table.datetime('failed_at'); + }); + + return database; +}; + +describe('Email analytics queries', function () { + let knex: Knex; + let queries: Queries; + + const insertJob = async (attributes: Record = {}) => { + const job = { + id: ObjectId().toHexString(), + name: 'email-analytics-scheduled', + status: 'queued', + started_at: null, + finished_at: null, + created_at: '2026-08-11T09:00:00.000Z', + updated_at: null, + metadata: null, + queue_entry: null, + ...attributes + }; + + await knex('jobs').insert(job); + return job; + }; + + const insertEmail = async (id: string, trackOpens: boolean) => { + await knex('emails').insert({id, track_opens: trackOpens}); + }; + + const insertMember = async (id: string, attributes: Record = {}) => { + await knex('members').insert({id, ...attributes}); + }; + + const insertRecipient = async (attributes: Record) => { + await knex('email_recipients').insert({ + id: ObjectId().toHexString(), + email_id: null, + member_id: null, + delivered_at: null, + opened_at: null, + failed_at: null, + ...attributes + }); + }; + + beforeEach(async function () { + knex = await createDatabase(); + queries = new Queries(knex); + }); + + afterEach(async function () { + await knex.destroy(); + }); + + describe('getLastEventTimestamp', function () { + const cursorSeed = { + tableName: 'email_recipients', + eventColumns: { + delivered: 'delivered_at', + opened: 'opened_at', + failed: 'failed_at' + } + } as const; + + it('returns stored finished timestamp without consulting recipient data', async function () { + const finishedAt = '2026-08-11T10:00:00.000Z'; + await insertJob({ + started_at: '2026-08-11T09:00:00.000Z', + finished_at: finishedAt + }); + await insertRecipient({delivered_at: '2026-08-11T12:00:00.000Z'}); + + const result = await queries.getLastEventTimestamp( + 'email-analytics-scheduled', + ['delivered'], + cursorSeed + ); + + assert.equal(result?.toISOString(), finishedAt); + }); + + it('uses latest configured recipient event and creates cursor job', async function () { + await insertRecipient({ + delivered_at: '2026-08-11T10:00:00.000Z', + opened_at: '2026-08-11T11:00:00.000Z', + failed_at: '2026-08-11T12:00:00.000Z' + }); + + const result = await queries.getLastEventTimestamp( + 'email-analytics-latest-others', + ['delivered', 'opened'], + cursorSeed + ); + + assert.equal(result?.toISOString(), '2026-08-11T11:00:00.000Z'); + const job = await knex('jobs').where('name', 'email-analytics-latest-others').first(); + assert.equal(job.status, 'started'); + }); + + it('skips events without a cursor column', async function () { + await insertRecipient({ + delivered_at: '2026-08-11T10:00:00.000Z', + failed_at: '2026-08-11T12:00:00.000Z' + }); + + const result = await queries.getLastEventTimestamp( + 'email-analytics-automation-latest-others', + ['delivered', 'failed'], + { + tableName: 'email_recipients', + eventColumns: {delivered: 'delivered_at'} + } + ); + + assert.equal(result?.toISOString(), '2026-08-11T10:00:00.000Z'); + }); + + it('returns null and creates cursor job when no events exist', async function () { + const result = await queries.getLastEventTimestamp( + 'email-analytics-missing', + [], + cursorSeed + ); + + assert.equal(result, null); + assert(await knex('jobs').where('name', 'email-analytics-missing').first()); + }); + }); + + describe('getJobData', function () { + it('returns job data when job exists', async function () { + const startedAt = '2026-08-11T10:00:00.000Z'; + const finishedAt = '2026-08-11T10:05:00.000Z'; + const metadata = {begin: startedAt, end: finishedAt}; + + await knex('jobs').insert({ + id: ObjectId().toHexString(), + name: 'email-analytics-scheduled', + status: 'finished', + started_at: startedAt, + finished_at: finishedAt, + created_at: startedAt, + updated_at: finishedAt, + metadata: JSON.stringify(metadata), + queue_entry: 1 + }); + + const result = await queries.getJobData('email-analytics-scheduled'); + + assert.deepEqual(result, { + finished_at: finishedAt, + started_at: startedAt, + metadata + }); + }); + + it('returns null when job does not exist', async function () { + const result = await queries.getJobData('email-analytics-scheduled'); + + assert.equal(result, null); + }); + }); + + describe('getLastJobRunTimestamp', function () { + it('prefers finished timestamp over started timestamp', async function () { + await insertJob({ + started_at: '2026-08-11T10:00:00.000Z', + finished_at: '2026-08-11T11:00:00.000Z' + }); + + assert.equal( + await queries.getLastJobRunTimestamp('email-analytics-scheduled'), + '2026-08-11T11:00:00.000Z' + ); + }); + + it('falls back to started timestamp', async function () { + await insertJob({started_at: '2026-08-11T10:00:00.000Z'}); + + assert.equal( + await queries.getLastJobRunTimestamp('email-analytics-scheduled'), + '2026-08-11T10:00:00.000Z' + ); + }); + + it('returns null when job or timestamps do not exist', async function () { + assert.equal(await queries.getLastJobRunTimestamp('email-analytics-missing'), null); + await insertJob(); + assert.equal(await queries.getLastJobRunTimestamp('email-analytics-scheduled'), null); + }); + }); + + describe('setJobTimestamp', function () { + it('sets started timestamp and status on existing job', async function () { + await insertJob(); + const date = new Date('2026-08-11T10:00:00.000Z'); + + await queries.setJobTimestamp('email-analytics-scheduled', 'started', date); + + const job = await knex('jobs').where('name', 'email-analytics-scheduled').first(); + assert.equal(new Date(job.started_at).toISOString(), date.toISOString()); + assert.equal(job.finished_at, null); + assert.equal(job.status, 'started'); + assert(job.updated_at); + }); + + it('sets finished timestamp and status on existing job', async function () { + await insertJob({started_at: '2026-08-11T10:00:00.000Z'}); + const date = new Date('2026-08-11T11:00:00.000Z'); + + await queries.setJobTimestamp('email-analytics-scheduled', 'finished', date); + + const job = await knex('jobs').where('name', 'email-analytics-scheduled').first(); + assert.equal(new Date(job.finished_at).toISOString(), date.toISOString()); + assert.equal(job.status, 'finished'); + }); + + it('swallows database errors', async function () { + await knex.schema.dropTable('jobs'); + + await assert.doesNotReject( + queries.setJobTimestamp('email-analytics-scheduled', 'started', new Date()) + ); + }); + }); + + describe('getJobMetadata', function () { + it('returns parsed metadata', async function () { + await insertJob({metadata: JSON.stringify({begin: 'start', end: 'finish'})}); + + assert.deepEqual(await queries.getJobMetadata('email-analytics-scheduled'), { + begin: 'start', + end: 'finish' + }); + }); + + it('returns null if the job does not exist', async function () { + assert.equal(await queries.getJobMetadata('email-analytics-missing'), null); + }); + + it('returns empty metadata for missing, null, or invalid metadata', async function () { + await insertJob(); + assert.deepEqual(await queries.getJobMetadata('email-analytics-scheduled'), {begin: null, end: null}); + + await knex('jobs').where('name', 'email-analytics-scheduled').update({metadata: 'invalid-json'}); + assert.deepEqual(await queries.getJobMetadata('email-analytics-scheduled'), {begin: null, end: null}); + }); + }); + + describe('setJobMetadata', function () { + it('updates metadata on existing job', async function () { + await insertJob(); + + await queries.setJobMetadata('email-analytics-scheduled', {begin: 'start', end: 'finish'}); + + const job = await knex('jobs').where('name', 'email-analytics-scheduled').first(); + assert.equal(job.metadata, JSON.stringify({begin: 'start', end: 'finish'})); + assert(job.updated_at); + }); + + it('creates queued job when metadata is set for missing job', async function () { + await queries.setJobMetadata('email-analytics-scheduled', {begin: 'start', end: 'finish'}); + + const job = await knex('jobs').where('name', 'email-analytics-scheduled').first(); + assert.equal(job.status, 'queued'); + assert.equal(job.metadata, JSON.stringify({begin: 'start', end: 'finish'})); + assert(job.created_at); + }); + + it('clears existing metadata but does not create missing job for null', async function () { + await insertJob({metadata: JSON.stringify({begin: 'start'})}); + + await queries.setJobMetadata('email-analytics-scheduled', null); + await queries.setJobMetadata('email-analytics-missing', null); + + assert.deepEqual(await queries.getJobMetadata('email-analytics-scheduled'), {begin: null, end: null}); + assert.equal(await knex('jobs').where('name', 'email-analytics-missing').first(), undefined); + }); + }); + + describe('setJobStatus', function () { + it('updates existing job', async function () { + await insertJob(); + + await queries.setJobStatus('email-analytics-scheduled', 'finished'); + + const job = await knex('jobs').where('name', 'email-analytics-scheduled').first(); + assert.equal(job.status, 'finished'); + assert(job.updated_at); + }); + + it('creates missing job', async function () { + await queries.setJobStatus('email-analytics-scheduled', 'failed'); + + const job = await knex('jobs').where('name', 'email-analytics-scheduled').first(); + assert.equal(job.status, 'failed'); + assert(job.created_at); + assert(job.updated_at); + }); + + it('rethrows database errors', async function () { + await knex.schema.dropTable('jobs'); + + await assert.rejects( + queries.setJobStatus('email-analytics-scheduled', 'started'), + /no such table: jobs/ + ); + }); + }); + + describe('aggregateEmailStats', function () { + it('updates delivered, failed, and opened counts', async function () { + await insertEmail('email-1', true); + await insertRecipient({email_id: 'email-1', delivered_at: '2026-08-11T10:00:00.000Z'}); + await insertRecipient({email_id: 'email-1', failed_at: '2026-08-11T10:00:00.000Z'}); + await insertRecipient({email_id: 'email-1', opened_at: '2026-08-11T10:00:00.000Z'}); + await insertRecipient({ + email_id: 'email-1', + delivered_at: '2026-08-11T10:00:00.000Z', + failed_at: '2026-08-11T10:00:00.000Z' + }); + await insertEmail('email-2', true); + await insertRecipient({email_id: 'email-2', delivered_at: '2026-08-11T10:00:00.000Z'}); + + await queries.aggregateEmailStats('email-1', true); + + const email = await knex('emails').where('id', 'email-1').first(); + assert.deepEqual({ + delivered_count: email.delivered_count, + failed_count: email.failed_count, + opened_count: email.opened_count + }, { + delivered_count: 2, + failed_count: 2, + opened_count: 1 + }); + }); + + it('preserves opened count when opened aggregation is disabled', async function () { + await insertEmail('email-1', true); + await knex('emails').where('id', 'email-1').update({opened_count: 7}); + await insertRecipient({email_id: 'email-1', opened_at: '2026-08-11T10:00:00.000Z'}); + + await queries.aggregateEmailStats('email-1', false); + + const email = await knex('emails').where('id', 'email-1').first(); + assert.equal(email.opened_count, 7); + assert.equal(email.delivered_count, 0); + assert.equal(email.failed_count, 0); + }); + + it('does nothing when email does not exist', async function () { + await assert.doesNotReject(queries.aggregateEmailStats('missing-email', true)); + }); + }); + + describe('aggregateMemberStats', function () { + it('updates counts and calculates open rate after five tracked emails', async function () { + await insertMember('member-1'); + await insertEmail('tracked-email', true); + for (let index = 0; index < 5; index += 1) { + await insertRecipient({ + email_id: 'tracked-email', + member_id: 'member-1', + opened_at: index < 2 ? '2026-08-11T10:00:00.000Z' : null + }); + } + + await queries.aggregateMemberStats('member-1'); + + const member = await knex('members').where('id', 'member-1').first(); + assert.equal(member.email_count, 5); + assert.equal(member.email_opened_count, 2); + assert.equal(member.email_open_rate, 40); + }); + + it('counts untracked emails but preserves open rate below threshold', async function () { + await insertMember('member-1', {email_open_rate: 75}); + await insertEmail('tracked-email', true); + await insertEmail('untracked-email', false); + await insertRecipient({ + email_id: 'tracked-email', + member_id: 'member-1', + opened_at: '2026-08-11T10:00:00.000Z' + }); + await insertRecipient({email_id: 'untracked-email', member_id: 'member-1'}); + + await queries.aggregateMemberStats('member-1'); + + const member = await knex('members').where('id', 'member-1').first(); + assert.equal(member.email_count, 2); + assert.equal(member.email_opened_count, 1); + assert.equal(member.email_open_rate, 75); + }); + + it('resets counts for member without recipients', async function () { + await insertMember('member-1', { + email_count: 10, + email_opened_count: 4, + email_open_rate: 40 + }); + + await queries.aggregateMemberStats('member-1'); + + const member = await knex('members').where('id', 'member-1').first(); + assert.equal(member.email_count, 0); + assert.equal(member.email_opened_count, 0); + assert.equal(member.email_open_rate, 40); + }); + + it('does nothing when member does not exist', async function () { + await assert.doesNotReject(queries.aggregateMemberStats('missing-member')); + }); + }); + + describe('aggregateMemberStatsBatch', function () { + it('updates multiple members, including below-threshold and empty members', async function () { + await insertMember('member-1'); + await insertMember('member-2', {email_open_rate: 80}); + await insertMember('member-3', { + email_count: 4, + email_opened_count: 3, + email_open_rate: 75 + }); + await insertMember('untouched-member', { + email_count: 9, + email_opened_count: 8, + email_open_rate: 89 + }); + await insertEmail('tracked-email', true); + + for (let index = 0; index < 5; index += 1) { + await insertRecipient({ + email_id: 'tracked-email', + member_id: 'member-1', + opened_at: index < 2 ? '2026-08-11T10:00:00.000Z' : null + }); + } + await insertRecipient({ + email_id: 'tracked-email', + member_id: 'member-2', + opened_at: '2026-08-11T10:00:00.000Z' + }); + + await queries.aggregateMemberStatsBatch(['member-1', 'member-2', 'member-3']); + + const members = await knex('members').orderBy('id'); + assert.deepEqual(members, [{ + id: 'member-1', + email_count: 5, + email_opened_count: 2, + email_open_rate: 40 + }, { + id: 'member-2', + email_count: 1, + email_opened_count: 1, + email_open_rate: null + }, { + id: 'member-3', + email_count: 0, + email_opened_count: 0, + email_open_rate: null + }, { + id: 'untouched-member', + email_count: 9, + email_opened_count: 8, + email_open_rate: 89 + }]); + }); + + it('returns without querying for empty member list', async function () { + await knex.schema.dropTable('email_recipients'); + + await assert.doesNotReject(queries.aggregateMemberStatsBatch([])); + }); + + it('ignores missing member IDs', async function () { + await assert.doesNotReject(queries.aggregateMemberStatsBatch(['missing-member'])); + }); + }); +}); diff --git a/ghost/core/test/utils/fixture-utils.js b/ghost/core/test/utils/fixture-utils.js index ae0743b42e7..6a293038a5d 100644 --- a/ghost/core/test/utils/fixture-utils.js +++ b/ghost/core/test/utils/fixture-utils.js @@ -14,6 +14,7 @@ const {fixtureManager} = require('../../core/server/data/schema/fixtures'); const permissions = require('../../core/server/services/permissions'); const settingsService = require('../../core/server/services/settings/settings-service'); const labsService = require('../../core/shared/labs'); +const {Queries: EmailAnalyticsQueries} = require('../../core/server/services/email-analytics/lib/queries'); // Other Test Utilities const context = require('./fixtures/context'); @@ -715,8 +716,7 @@ const fixtures = { }, insertEmailsAndRecipients: async function insertEmailsAndRecipients(withFailed = false) { - // NOTE: This require touches the database, so it can't be done at the top of the file as test setup is being performed. - const {queries: emailAnalyticsQueries} = require('../../core/server/services/email-analytics/lib/queries'); + const emailAnalyticsQueries = new EmailAnalyticsQueries(models.Base.knex); for (const email of _.cloneDeep(DataGenerator.forKnex.emails)) { await models.Email.add(email, context.internal); From 84acdc3e55ad146b5d8b5424d0f207f947f3304e Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Thu, 13 Aug 2026 13:23:20 -0400 Subject: [PATCH 03/19] Updated actions/docker digests to latest (#29949) no ref - update all action references to latest versions - update Docker digest pins to latest (except for mysql) - update pnpm to latest - add renovate rule to pin mysql to v8.x - pin tb-cli to v4.6.13 due to an upstream bug/change --- .github/actions/load-docker-image/action.yml | 2 +- .../actions/report-boot-benchmark/action.yml | 2 +- .github/actions/setup-playwright/action.yml | 2 +- .github/renovate.json5 | 19 ++- .github/workflows/README.md | 2 +- .github/workflows/ci.yml | 150 +++++++++--------- .github/workflows/copilot-setup-steps.yml | 4 +- .github/workflows/create-release-branch.yml | 4 +- .github/workflows/devcontainer-build.yml | 4 +- .github/workflows/e2e-runner-image.yml | 4 +- .github/workflows/i18n-review-checks.yml | 4 +- .github/workflows/koenig-demo.yml | 6 +- .github/workflows/label-actions.yml | 2 +- .github/workflows/publish-packages.yml | 6 +- .github/workflows/publish-tb-cli.yml | 4 +- .github/workflows/release.yml | 6 +- .github/workflows/renovate.yml | 4 +- .github/workflows/stale-i18n.yml | 2 +- .github/workflows/stale.yml | 2 +- .github/workflows/sync-fork.yml | 2 +- .github/workflows/tinybird.yml | 23 ++- .github/workflows/translation-review.yml | 4 +- Dockerfile.production | 2 +- compose.dev.analytics.yaml | 4 +- compose.dev.yaml | 4 +- docker/ghost-dev/Dockerfile | 2 +- docker/tb-cli/Dockerfile | 5 +- package.json | 2 +- 28 files changed, 155 insertions(+), 122 deletions(-) diff --git a/.github/actions/load-docker-image/action.yml b/.github/actions/load-docker-image/action.yml index d9c07a078ca..c1961aa6bdf 100644 --- a/.github/actions/load-docker-image/action.yml +++ b/.github/actions/load-docker-image/action.yml @@ -34,7 +34,7 @@ runs: - name: Log in to GitHub Container Registry if: inputs.use-artifact == 'false' - uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/actions/report-boot-benchmark/action.yml b/.github/actions/report-boot-benchmark/action.yml index 9ce2fa4229b..16d43f3189f 100644 --- a/.github/actions/report-boot-benchmark/action.yml +++ b/.github/actions/report-boot-benchmark/action.yml @@ -148,7 +148,7 @@ runs: # means summary-only, so callers can use this action without publishing. - name: Publish to benchmark series if: github.event_name != 'pull_request' && inputs.github-token != '' - uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1.20.7 + uses: benchmark-action/github-action-benchmark@52576c92bccf6ac60c8223ec7eb2565637cae9ba # v1.22.1 with: name: ${{ inputs.series }} tool: 'customSmallerIsBetter' diff --git a/.github/actions/setup-playwright/action.yml b/.github/actions/setup-playwright/action.yml index e1c4cb48aec..bc2d87c37b0 100644 --- a/.github/actions/setup-playwright/action.yml +++ b/.github/actions/setup-playwright/action.yml @@ -26,7 +26,7 @@ runs: - name: Check if Playwright browser is cached id: playwright-cache - uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25 # v5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6 with: path: ~/.cache/ms-playwright key: ${{ runner.os }}-Playwright-${{ steps.playwright-version.outputs.version }} diff --git a/.github/renovate.json5 b/.github/renovate.json5 index dab71f2c093..bc6851ed57c 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -4,7 +4,10 @@ // Track `# renovate:`-annotated `ARG/ENV *_VERSION` pins in Dockerfiles, // for tool versions that no native manager sees (e.g. the Tinybird CLI // installed via `uv tool install` in docker/tb-cli/Dockerfile). - "customManagers:dockerfileVersions" + "customManagers:dockerfileVersions", + // Same, for `# renovate:`-annotated `env:` version pins in workflows + // (the Tinybird CLI in .github/workflows/tinybird.yml). + "customManagers:githubActionsVersions" ], // Keep Renovate's own concurrency guardrails in place. The shared preset // extends :disableRateLimiting (prConcurrentLimit: 0, prHourlyLimit: 0), @@ -303,6 +306,20 @@ "allowedVersions": "<3.14" }, + // Stay on the MySQL 8 line — that's what Ghost supports and what CI and + // local dev run against. Capping (rather than disabling) keeps 8.x + // patches and digest re-pins flowing. + { + "description": "Cap MySQL at the 8.x line", + "matchDatasources": [ + "docker" + ], + "matchPackageNames": [ + "mysql" + ], + "allowedVersions": "<9" + }, + // Keep `@types/*` aligned with the runtime major they describe. Type defs // for a different major than what actually runs are silently wrong at best // (e.g. @types/express 5 vs Express 4) and build-breaking at worst diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 2fb66651971..2d687d29d0e 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -40,7 +40,7 @@ How we write GitHub Actions workflows safely. Follow these when adding or editin - **Pin every third-party action to a full commit SHA**, with the version as a trailing comment: ```yaml - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 ``` A tag or branch ref can be re-pointed at malicious code; a SHA cannot. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fb7fb09df3..aff8d927f28 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,7 +65,7 @@ jobs: pull-requests: read steps: - name: Checkout current commit - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: ref: ${{ env.HEAD_COMMIT }} fetch-depth: 0 @@ -78,9 +78,9 @@ jobs: echo "GITHUB_EVENT_NAME: ${{ github.event_name }}" echo "GITHUB_CONTEXT: ${{ toJson(github.event) }}" - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 - name: Set up Node - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -319,7 +319,7 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout PR head commit - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 @@ -327,8 +327,8 @@ jobs: - name: Fetch main branch run: git fetch --no-tags origin main - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -362,7 +362,7 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout PR head commit - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 @@ -382,11 +382,11 @@ jobs: if: needs.job_setup.outputs.is_tag == 'true' || needs.job_setup.outputs.affected_projects_str != '' name: Lint steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 1000 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -396,7 +396,7 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25 # v5 + - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6 with: path: ghost/**/.eslintcache key: eslint-cache @@ -410,7 +410,7 @@ jobs: - name: Lint boundaries run: pnpm nx run ghost-monorepo:lint:boundaries - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -423,9 +423,9 @@ jobs: needs: [job_setup] if: needs.job_setup.outputs.changed_docs == 'true' steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} @@ -438,11 +438,11 @@ jobs: needs: [job_setup] if: needs.job_setup.outputs.changed_package_standards == 'true' steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} @@ -460,9 +460,9 @@ jobs: needs.job_setup.outputs.is_tag == 'true' || needs.job_setup.outputs.changed_i18n_apps == 'true' steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm @@ -486,9 +486,9 @@ jobs: CI: true COVERAGE: ${{ needs.job_setup.outputs.coverage_enabled }} steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm @@ -511,7 +511,7 @@ jobs: name: admin-coverage path: apps/*/coverage/cobertura-coverage.xml - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -530,13 +530,13 @@ jobs: if: (needs.job_setup.outputs.changed_core == 'true' && needs.job_setup.outputs.is_development == 'true') || needs.job_setup.outputs.has_perf_tests_label == 'true' name: Performance tests steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: # Boot activates the default theme, which is a submodule submodules: true - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -586,7 +586,7 @@ jobs: packages: read steps: # Only for .github/actions/load-docker-image; nothing is built from source here. - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false @@ -668,11 +668,11 @@ jobs: node: ${{ fromJSON(needs.job_setup.outputs.node_test_matrix) }} name: Unit tests (Node ${{ matrix.node }}) steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 1000 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -729,7 +729,7 @@ jobs: exit 1 fi - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -758,7 +758,7 @@ jobs: --health-timeout=5s --health-retries=60 redis: - image: redis:7.4@sha256:a8f08480e1f88f2647fed492d1178c06abb0d0c1fbf02c682a61e2f483fb3954 + image: redis:7.4@sha256:e9b2e45ecd47fbb69b877cf8d045d5cccaaaed52524b6e098b4abe8212994f73 ports: - 6379:6379 options: >- @@ -786,9 +786,9 @@ jobs: COVERAGE_ENABLED: ${{ needs.job_setup.outputs.coverage_enabled == 'true' && matrix.env.DB == 'better-sqlite3' }} name: Acceptance tests (Node ${{ matrix.node }}, ${{ matrix.env.DB }}) steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -878,7 +878,7 @@ jobs: ghost/*/coverage-e2e/cobertura-coverage.xml ghost/*/coverage-integration/cobertura-coverage.xml - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -919,11 +919,11 @@ jobs: NODE_ENV: ${{ matrix.env.NODE_ENV }} name: Legacy tests (Node ${{ matrix.node }}, ${{ matrix.env.DB }}) steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: submodules: true - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -968,7 +968,7 @@ jobs: exit 1 fi - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -987,9 +987,9 @@ jobs: env: CI: true steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -1054,7 +1054,7 @@ jobs: path: ${{ steps.app_name.outputs.root }}/playwright-report retention-days: 30 - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1067,7 +1067,7 @@ jobs: if: needs.job_setup.outputs.is_tag == 'true' || needs.job_setup.outputs.changed_core == 'true' runs-on: ubuntu-latest steps: - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -1125,7 +1125,7 @@ jobs: run: | [ -f ~/.ghost/logs/*.log ] && cat ~/.ghost/logs/*.log - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1140,12 +1140,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -1207,7 +1207,7 @@ jobs: retention-days: 7 if-no-files-found: error - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1226,15 +1226,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false # Themes (content/themes/casper|source) are submodules packed into the # archive — without them the tarball ships empty theme dirs. submodules: true - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -1290,7 +1290,7 @@ jobs: retention-days: 7 if-no-files-found: error - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1313,7 +1313,7 @@ jobs: packages: write steps: - name: Checkout repository - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false # The deploy stage packs content/themes/casper|source (submodules). @@ -1378,7 +1378,7 @@ jobs: - name: Log in to GitHub Container Registry if: steps.strategy.outputs.should-push == 'true' - uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4 with: registry: ghcr.io username: ${{ github.actor }} @@ -1728,11 +1728,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: @@ -1836,7 +1836,7 @@ jobs: shardTotal: 2 steps: - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Setup Docker Registry Mirrors uses: ./.github/actions/setup-docker-registry-mirrors @@ -1872,8 +1872,8 @@ jobs: image-tags: ${{ needs.job_docker.outputs.image-e2e-tags }} artifact-name: docker-image-e2e - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm @@ -1927,7 +1927,7 @@ jobs: path: e2e/test-results retention-days: 7 - - uses: tryghost/actions/actions/slack-build@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1947,10 +1947,10 @@ jobs: fail-fast: false steps: - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm @@ -2033,7 +2033,7 @@ jobs: if: always() && needs.job_setup.outputs.coverage_enabled == 'true' runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Restore Admin coverage if: contains(needs.job_admin-tests.result, 'success') @@ -2048,7 +2048,7 @@ jobs: - name: Upload Admin test coverage if: contains(needs.job_admin-tests.result, 'success') - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v6 + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7 with: flags: admin-tests files: apps/ember-admin/coverage/cobertura-coverage.xml @@ -2067,7 +2067,7 @@ jobs: - name: Upload E2E test coverage if: contains(needs.job_acceptance-tests.result, 'success') - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v6 + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7 with: flags: e2e-tests files: ghost/core/coverage-e2e/cobertura-coverage.xml,ghost/core/coverage-integration/cobertura-coverage.xml @@ -2143,11 +2143,11 @@ jobs: include: ${{ fromJSON(needs.job_setup.outputs.publish_public_apps_matrix) }} steps: - name: Checkout code - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 - name: Set up Node.js - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm @@ -2280,7 +2280,7 @@ jobs: name: ghost-npm-tarball - name: Set up Node.js - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} package-manager-cache: false @@ -2337,7 +2337,7 @@ jobs: env: GH_TOKEN: ${{ secrets.CANARY_DOCKER_BUILD }} steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 8b89425542f..c13c8fd1948 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -19,8 +19,8 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Install gh-aw extension - uses: github/gh-aw/actions/setup-cli@eed4304d8740f0593f2797276cb8299d228ffd9b # v0.81.6 + uses: github/gh-aw/actions/setup-cli@53843da968225dc56e1590978a7ed6407a8438ac # v0.85.4 with: version: v0.49.3 diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index f1bc90b6797..cb579a27566 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -21,14 +21,14 @@ jobs: if: github.repository == 'TryGhost/Ghost' runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 if: inputs.base-ref == 'latest' with: ref: main fetch-depth: 0 submodules: true - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 if: inputs.base-ref != 'latest' with: ref: ${{ inputs.base-ref }} diff --git a/.github/workflows/devcontainer-build.yml b/.github/workflows/devcontainer-build.yml index c0c4f1a1e59..279ded2e340 100644 --- a/.github/workflows/devcontainer-build.yml +++ b/.github/workflows/devcontainer-build.yml @@ -41,7 +41,7 @@ jobs: cancel-in-progress: true steps: - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Set up QEMU uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0 @@ -50,7 +50,7 @@ jobs: uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4 - name: Login to GHCR - uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/e2e-runner-image.yml b/.github/workflows/e2e-runner-image.yml index f5a9de403eb..4c8eea28117 100644 --- a/.github/workflows/e2e-runner-image.yml +++ b/.github/workflows/e2e-runner-image.yml @@ -44,7 +44,7 @@ jobs: cancel-in-progress: true steps: - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false @@ -93,7 +93,7 @@ jobs: uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4 - name: Login to GHCR - uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/i18n-review-checks.yml b/.github/workflows/i18n-review-checks.yml index 069486d5854..1dc04fd09cf 100644 --- a/.github/workflows/i18n-review-checks.yml +++ b/.github/workflows/i18n-review-checks.yml @@ -38,7 +38,7 @@ jobs: runs-on: ubuntu-slim timeout-minutes: 5 steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false sparse-checkout: | @@ -47,7 +47,7 @@ jobs: # Must match translation-review.yml, where this tool actually runs. - name: Set up Node - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: '24' diff --git a/.github/workflows/koenig-demo.yml b/.github/workflows/koenig-demo.yml index c29e06b51c1..517581c4569 100644 --- a/.github/workflows/koenig-demo.yml +++ b/.github/workflows/koenig-demo.yml @@ -32,11 +32,11 @@ jobs: VITE_KLIPY_API_KEY: ${{ secrets.KLIPY_API_KEY }} steps: - name: Checkout repo - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 - name: Set up Node.js - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm diff --git a/.github/workflows/label-actions.yml b/.github/workflows/label-actions.yml index 6535bb8f958..27c71467525 100644 --- a/.github/workflows/label-actions.yml +++ b/.github/workflows/label-actions.yml @@ -18,4 +18,4 @@ jobs: runs-on: ubuntu-slim if: github.repository_owner == 'TryGhost' steps: - - uses: tryghost/actions/actions/label-actions@e7a401946f91165a6426290705f501a377ec1533 # main + - uses: tryghost/actions/actions/label-actions@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml index fd504cc32cb..f73e8191db8 100644 --- a/.github/workflows/publish-packages.yml +++ b/.github/workflows/publish-packages.yml @@ -60,15 +60,15 @@ jobs: id-token: write steps: - name: Checkout code - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: # Publishing uses OIDC + the public registry; no git operations need # the token, so don't leave it in .git/config for later steps. persist-credentials: false - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 - name: Set up Node.js - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: ${{ env.NODE_VERSION }} package-manager-cache: false diff --git a/.github/workflows/publish-tb-cli.yml b/.github/workflows/publish-tb-cli.yml index 6fd55d987d1..00ffe4aa1e8 100644 --- a/.github/workflows/publish-tb-cli.yml +++ b/.github/workflows/publish-tb-cli.yml @@ -21,13 +21,13 @@ jobs: cancel-in-progress: true steps: - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Set up Docker Buildx uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4 - name: Login to GHCR - uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a18d27ae62f..4b45f6f6d6e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,7 @@ jobs: with: ssh-private-key: ${{ secrets.DEPLOY_KEY }} - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: # Deploy key (via ssh-agent) is used for git push — it bypasses # branch protection and triggers downstream workflows (unlike GITHUB_TOKEN) @@ -63,8 +63,8 @@ jobs: # Ghost only and can't authenticate against Casper/Source over SSH - run: git submodule update --init - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 env: FORCE_COLOR: 0 with: diff --git a/.github/workflows/renovate.yml b/.github/workflows/renovate.yml index 00e8b088e36..abe8f946bc3 100644 --- a/.github/workflows/renovate.yml +++ b/.github/workflows/renovate.yml @@ -67,7 +67,7 @@ jobs: repositories: Ghost - name: Checkout - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 # Enforce a live cap on open Renovate PRs while still letting Renovate # maintain and automerge the PRs that already exist. @@ -126,7 +126,7 @@ jobs: echo "RENOVATE_FORCE=$force" >> "$GITHUB_ENV" - name: Self-hosted Renovate - uses: renovatebot/github-action@dd5302ec17783b2fc721b19ae7209b57b1587765 # v46.1.17 + uses: renovatebot/github-action@e09d604f8f803bb527bd8321ed5be06c460b8682 # v46.2.2 with: token: ${{ steps.app-token.outputs.token }} env: diff --git a/.github/workflows/stale-i18n.yml b/.github/workflows/stale-i18n.yml index 11b546de44b..beebd9f6655 100644 --- a/.github/workflows/stale-i18n.yml +++ b/.github/workflows/stale-i18n.yml @@ -12,7 +12,7 @@ jobs: if: github.repository_owner == 'TryGhost' runs-on: ubuntu-slim steps: - - uses: actions/stale@1e223db275d687790206a7acac4d1a11bd6fe629 # v10 + - uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11 with: stale-pr-message: | Thanks for contributing to Ghost's i18n :) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 127a808041b..a2181e4e889 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -13,7 +13,7 @@ jobs: if: github.repository_owner == 'TryGhost' runs-on: ubuntu-slim steps: - - uses: actions/stale@1e223db275d687790206a7acac4d1a11bd6fe629 # v10 + - uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11 with: stale-issue-message: | Our bot has automatically marked this issue as stale because there has not been any activity here in some time. diff --git a/.github/workflows/sync-fork.yml b/.github/workflows/sync-fork.yml index 0889a74e74c..7a8df37ec22 100644 --- a/.github/workflows/sync-fork.yml +++ b/.github/workflows/sync-fork.yml @@ -70,7 +70,7 @@ jobs: exit 1 fi - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: ref: main # Full history — a shallow clone can't compute a merge base against diff --git a/.github/workflows/tinybird.yml b/.github/workflows/tinybird.yml index ea297e13509..a141b015bc4 100644 --- a/.github/workflows/tinybird.yml +++ b/.github/workflows/tinybird.yml @@ -30,7 +30,7 @@ jobs: outputs: tinybird: ${{ steps.changed.outputs.tinybird }} steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 @@ -58,13 +58,13 @@ jobs: working-directory: ghost/core/core/server/data/tinybird services: tinybird: - image: tinybirdco/tinybird-local:latest@sha256:942cb8a703806bedc39a5ca77bc9cd36dd813ddad1556d46022ce9492f5acdb8 + image: tinybirdco/tinybird-local:latest@sha256:59d162c1a83f893dcd2f821060fffe3a7f1a545a0cd8cb5413ba1af2882af64a ports: - 7181:7181 outputs: datafiles_changed: ${{ steps.datafiles.outputs.tinybird }} steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 @@ -78,8 +78,21 @@ jobs: - 'ghost/core/core/server/data/tinybird/**' - '!ghost/core/core/server/data/tinybird/**/*.md' + # tinybird.co/install.sh always installs the latest CLI, so this job + # silently tracked upstream. 4.6.14 ingests a nested JSON object into a + # String column as ClickHouse Tuple syntax instead of raw JSON, so every + # JSONExtractString(payload, ...) in pipes/mv_hits.pipe returns '' and all + # 29 endpoint tests read back empty. Pin until that's fixed upstream; keep + # in lockstep with docker/tb-cli/Dockerfile. - name: Install Tinybird CLI - run: curl -fsSL https://tinybird.co/install.sh | sh + env: + # renovate: datasource=pypi depName=tinybird versioning=pep440 + TINYBIRD_VERSION: 4.6.13 + run: | + curl -LsSf https://astral.sh/uv/install.sh | sh + export PATH="$HOME/.local/bin:$PATH" + uv tool install "tinybird@${TINYBIRD_VERSION}" --python 3.11 --force + echo "$HOME/.local/bin" >> "$GITHUB_PATH" - name: Build project run: tb build @@ -120,7 +133,7 @@ jobs: needs: [tests] if: github.repository == 'TryGhost/Ghost' && github.event_name == 'push' && github.ref == 'refs/heads/main' && needs.tests.outputs.datafiles_changed == 'true' steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Trigger and watch traffic analytics infra Tinybird workflow env: diff --git a/.github/workflows/translation-review.yml b/.github/workflows/translation-review.yml index 6686f7e6694..046da2b8ec7 100644 --- a/.github/workflows/translation-review.yml +++ b/.github/workflows/translation-review.yml @@ -64,7 +64,7 @@ jobs: ) steps: - name: Checkout main (trusted ref — never the PR head) - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false ref: main @@ -77,7 +77,7 @@ jobs: # Tracks current LTS rather than the repo's NODE_VERSION: i18n-review is # outside the workspace and shares no runtime with Ghost. - name: Set up Node - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: '24' diff --git a/Dockerfile.production b/Dockerfile.production index 32a497372a4..94163a7e1f1 100644 --- a/Dockerfile.production +++ b/Dockerfile.production @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1-labs@sha256:7d49dad25a050e14338ba7028b0460243f9d911dedc160a8fe20c34738fef3af +# syntax=docker/dockerfile:1-labs@sha256:63e440b412b6acba117974e793b7e7f702e58ee65e044bdff1b8d388ee0d853b # Production Dockerfile for Ghost # Targets: diff --git a/compose.dev.analytics.yaml b/compose.dev.analytics.yaml index 9c49cb54217..34d9dafc5f2 100644 --- a/compose.dev.analytics.yaml +++ b/compose.dev.analytics.yaml @@ -5,7 +5,7 @@ services: analytics: - image: ghost/traffic-analytics:1.0.265@sha256:14121127f23440f64e725bec2370d9de0d64ba956c8d3001478ce922e94348d7 + image: ghost/traffic-analytics:1.0.336@sha256:13ca3b62c1334fba8fc3c9486290ef42d1f8fb6c628e19dd75356f30cea9733d container_name: ghost-dev-analytics platform: linux/amd64 command: ["node", "--enable-source-maps", "dist/server.js"] @@ -31,7 +31,7 @@ services: condition: service_completed_successfully tinybird-local: - image: tinybirdco/tinybird-local:latest@sha256:942cb8a703806bedc39a5ca77bc9cd36dd813ddad1556d46022ce9492f5acdb8 + image: tinybirdco/tinybird-local:latest@sha256:59d162c1a83f893dcd2f821060fffe3a7f1a545a0cd8cb5413ba1af2882af64a container_name: ghost-dev-tinybird platform: linux/amd64 stop_grace_period: 2s diff --git a/compose.dev.yaml b/compose.dev.yaml index 5f11ee8b5d4..3bc0ef7ae43 100644 --- a/compose.dev.yaml +++ b/compose.dev.yaml @@ -2,7 +2,7 @@ name: ghost-dev services: mysql: - image: mysql:8.4.10@sha256:8dbcf531a03aade657e181b9cf2f1d1803ce621a1d55610cb44cb531ab7d7db6 + image: mysql:8.4.11@sha256:b3b90af2a6552ae30c266fdb7d5dd55f3afb72404bb78d37fe8a23eb857fd3fb container_name: ghost-dev-mysql command: --innodb-buffer-pool-size=1G --innodb-log-buffer-size=500M --innodb-change-buffer-max-size=50 --innodb-flush-log-at-trx_commit=0 --innodb-flush-method=O_DIRECT --log-error-verbosity=1 ports: @@ -22,7 +22,7 @@ services: start_period: 10s redis: - image: redis:7.4@sha256:a8f08480e1f88f2647fed492d1178c06abb0d0c1fbf02c682a61e2f483fb3954 + image: redis:7.4@sha256:e9b2e45ecd47fbb69b877cf8d045d5cccaaaed52524b6e098b4abe8212994f73 container_name: ghost-dev-redis command: ["redis-server", "--loglevel", "warning"] ports: diff --git a/docker/ghost-dev/Dockerfile b/docker/ghost-dev/Dockerfile index 8d4d1fff3a3..c1278101df5 100644 --- a/docker/ghost-dev/Dockerfile +++ b/docker/ghost-dev/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89 +# syntax=docker/dockerfile:1@sha256:ecfaec9ed6d810b56388c508f4121597bfbba70d41a6dfeee4d8cad5f295fc32 # Minimal Development Dockerfile for Ghost Core # Source code is mounted at runtime for hot-reload support diff --git a/docker/tb-cli/Dockerfile b/docker/tb-cli/Dockerfile index acf7a2a49d7..eb2784a9d7b 100644 --- a/docker/tb-cli/Dockerfile +++ b/docker/tb-cli/Dockerfile @@ -14,8 +14,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ WORKDIR /home/tinybird +# Held at 4.6.13: 4.6.14 ingests a nested JSON object into a String column as +# ClickHouse Tuple syntax instead of raw JSON, so JSONExtractString on +# `analytics_events.payload` returns '' (see .github/workflows/tinybird.yml). # renovate: datasource=pypi depName=tinybird versioning=pep440 -ARG TINYBIRD_VERSION=4.6.14 +ARG TINYBIRD_VERSION=4.6.13 RUN uv tool install tinybird@${TINYBIRD_VERSION} --python 3.13 --force diff --git a/package.json b/package.json index 38b41bf79c8..1b0edb769a1 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0-private", "description": "The professional publishing platform", "private": true, - "packageManager": "pnpm@11.15.1+sha512.81350b07e53c9538a02f1f2303b4290fa2d7be04e56e2a970c4cc4b417dc761de196edabd49d55c7dc9580db81007c44143e4e3d7e462b3000d23c255122d065", + "packageManager": "pnpm@11.21.0+sha512.521705bce689924eac72f5a3587122f362689ef6571e55ba80076fd637c11132ecffada26fad4ea79c485bfddbfd3d5a2a5b05805a77e893de71ec8a6cca3bb1", "engines": { "node": "^22.23.1" }, From aac8c2a5284bcc0894aafab27902dc863a459ce0 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 12:32:38 -0500 Subject: [PATCH 04/19] Added types for database connection object (#29891) no ref This change should have no user impact. It adds a type declaration for `core/server/data/index.js`. --- ghost/core/core/server/data/db/index.d.ts | 3 +++ ghost/core/core/server/services/email-analytics/index.ts | 3 +-- ghost/core/test/utils/automations-fixtures.ts | 1 - 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 ghost/core/core/server/data/db/index.d.ts diff --git a/ghost/core/core/server/data/db/index.d.ts b/ghost/core/core/server/data/db/index.d.ts new file mode 100644 index 00000000000..444269e3c3c --- /dev/null +++ b/ghost/core/core/server/data/db/index.d.ts @@ -0,0 +1,3 @@ +import type { Knex } from 'knex'; + +export const knex: Knex; \ No newline at end of file diff --git a/ghost/core/core/server/services/email-analytics/index.ts b/ghost/core/core/server/services/email-analytics/index.ts index f985e3b1c50..4a90f56fb71 100644 --- a/ghost/core/core/server/services/email-analytics/index.ts +++ b/ghost/core/core/server/services/email-analytics/index.ts @@ -7,8 +7,7 @@ import {NewsletterEmailAnalyticsBatchProcessor} from './newsletter-email-analyti import NewsletterEmailEventStorage from '../email-service/newsletter-email-event-storage'; // @ts-expect-error This module lacks type definitions. import EmailEventProcessor from '../email-service/email-event-processor'; -// @ts-expect-error This module lacks type definitions. -import db from '../../data/db'; +import * as db from '../../data/db'; import membersService from '../members'; // @ts-expect-error This module lacks type definitions. import emailSuppressionList from '../email-suppression-list'; diff --git a/ghost/core/test/utils/automations-fixtures.ts b/ghost/core/test/utils/automations-fixtures.ts index af3ec92a7ea..e4fa4b85443 100644 --- a/ghost/core/test/utils/automations-fixtures.ts +++ b/ghost/core/test/utils/automations-fixtures.ts @@ -1,7 +1,6 @@ import ObjectId from 'bson-objectid'; import moment from 'moment'; import {MEMBER_WELCOME_EMAIL_SLUGS} from '../../core/server/services/member-welcome-emails/constants'; -// @ts-expect-error Database has not been converted to TypeScript yet. import * as db from '../../core/server/data/db'; export const TEST_EMAIL_DESIGN_SETTING_ID = '64b6f7b7c8f1a2b3c4d5e6f7'; From b23de250204a59b480c48288fdf320115493bdff Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 12:32:38 -0500 Subject: [PATCH 05/19] Tested email analytics initializer (#29892) no ref _I recommend reviewing this [one commit at a time](https://github.com/TryGhost/Ghost/pull/29892/commits)._ This change should have no user impact. This change: - tests the email analytics initializer - stops using global references and injects the dependencies (DI) In addition to automated testing, I also manually tested this. I sent a newsletter, opened it in Gmail, and verified that I saw the open appear in the newsletter's analytics. --- ghost/core/core/boot.js | 21 +++- .../email-analytics-service-wrapper.js | 54 ++++++-- .../server/services/email-analytics/index.ts | 64 ++++++++-- .../newsletter-email-event-storage.js | 11 +- .../email-analytics-service-wrapper.test.js | 61 +++++++-- .../services/email-analytics/index.test.ts | 117 ++++++++++++++++++ .../newsletter-email-event-storage.test.js | 57 +++++---- 7 files changed, 321 insertions(+), 64 deletions(-) create mode 100644 ghost/core/test/unit/server/services/email-analytics/index.test.ts diff --git a/ghost/core/core/boot.js b/ghost/core/core/boot.js index a92be27ec0f..b741f0392d5 100644 --- a/ghost/core/core/boot.js +++ b/ghost/core/core/boot.js @@ -317,7 +317,7 @@ async function initAppService() { * These services should all be part of core, frontend services should be loaded with the frontend * We are working towards this being a service loader, with the ability to make certain services optional */ -async function initServices({ghostServer} = {}) { +async function initServices({ghostServer, config, prometheusClient}) { debug('Begin: initServices'); debug('Begin: Services'); @@ -353,9 +353,13 @@ async function initServices({ghostServer} = {}) { const explorePingService = require('./server/services/explore-ping'); const domainEvents = require('@tryghost/domain-events'); const automations = require('./server/services/automations'); + const automationsApi = require('./server/services/automations/automations-api'); const adapterManager = require('./server/services/adapter-manager').default; const {withErrorCapture} = require('./server/adapters/scheduling/error-capture'); + const metrics = require('@tryghost/metrics'); + const db = require('./server/data/db'); + const models = require('./server/models'); const urlUtils = require('./shared/url-utils').default; const settingsCache = require('./shared/settings-cache'); const internalKeys = require('./server/services/internal-keys').default; @@ -382,7 +386,18 @@ async function initServices({ghostServer} = {}) { slack.init(), audienceFeedback.init(), emailService.init({ghostServer}), - emailAnalytics.init(), + emailAnalytics.init({ + automationsApi, + config, + db, + domainEvents, + emailSuppressionList, + membersRepository: members.api.members, + models, + metrics, + prometheusClient, + settingsCache + }), webhooks.listen(), comments.init(), linkTracking.init(), @@ -594,7 +609,7 @@ async function bootGhost({backend = true, frontend = true, server = true} = {}) await initAppService(); } - await initServices({ghostServer}); + await initServices({ghostServer, config, prometheusClient}); debug('End: Load Ghost Services & Apps'); // Step 5 - Mount the full Ghost app onto the minimal root app & disable maintenance mode diff --git a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js index 82207ee984b..c364e769a3c 100644 --- a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js +++ b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js @@ -1,14 +1,17 @@ +const errors = require('@tryghost/errors'); const logging = require('@tryghost/logging'); -const metrics = require('@tryghost/metrics'); -const config = require('../../../shared/config'); -const domainEvents = require('@tryghost/domain-events'); +/** @import {ConfigInstance} from '../../../shared/config/loader' */ +/** @import DomainEvents from '@tryghost/domain-events' */ /** @import {Queries} from './lib/queries' */ +/** @import Metrics from '@tryghost/metrics' */ /** @import {PrometheusClient} from '@tryghost/prometheus-metrics' */ /** @import {BatchEventProcessor} from './batch-event-processor' */ /** @import {JobNames, CursorSeed, EmailAnalyticsFetchResult} from './email-analytics-service' */ class EmailAnalyticsServiceWrapper { /** @type {string} */ #logName; + /** @type {Pick | undefined} */ #config; + /** @type {Pick | undefined} */ #metrics; #fetching = false; #restoredSchedule = false; @@ -28,42 +31,52 @@ class EmailAnalyticsServiceWrapper { /** * @param {object} options - * @param {Parameters[0]} options.event + * @param {Pick} options.config + * @param {Pick} options.domainEvents + * @param {Parameters[0]} options.event * @param {Queries} options.queries * @param {string[]} options.mailgunTags * @param {JobNames} options.jobNames * @param {CursorSeed} options.cursorSeed * @param {() => BatchEventProcessor} options.createEventProcessor - * @param {PrometheusClient} [options.prometheusClient] + * @param {Pick} options.metrics + * @param {PrometheusClient | null} options.prometheusClient + * @param {{get: (key: string) => unknown}} options.settingsCache */ init({ + config, + domainEvents, event, queries, mailgunTags, jobNames, cursorSeed, createEventProcessor, - prometheusClient + metrics, + prometheusClient, + settingsCache }) { if (this.service) { return; } + this.#config = config; + this.#metrics = metrics; + const {EmailAnalyticsService} = require('./email-analytics-service'); const {fetchMailgunEvents} = require('./fetch-mailgun-events'); - const settings = require('../../../shared/settings-cache'); this.service = new EmailAnalyticsService({ - fetchEvents: (options) => fetchMailgunEvents({...options, config, settings, tags: mailgunTags}), + fetchEvents: (options) => fetchMailgunEvents({...options, config, settings: settingsCache, tags: mailgunTags}), queries, - prometheusClient, jobNames, cursorSeed, - createEventProcessor + createEventProcessor, + ...(prometheusClient ? {prometheusClient} : {}) }); // Log the processing mode on initialization - const batchProcessingEnabled = config.get('emailAnalytics:batchProcessing'); + const batchProcessingEnabled = this.#config.get('emailAnalytics:batchProcessing'); logging.info(`${this.#logPrefix} Initialized with ${batchProcessingEnabled ? 'BATCHED' : 'SEQUENTIAL'} processing mode`); // We currently cannot trigger a non-offloaded job from the job manager @@ -73,6 +86,14 @@ class EmailAnalyticsServiceWrapper { }); } + #getConfig() { + const result = this.#config; + if (!result) { + throw new errors.InternalServerError({message: "EmailAnalyticsServiceWrapper is not initialized with config"}); + } + return result; + } + /** * Log comprehensive job completion with timing metrics * @param {string} jobType - Type of job (e.g., 'latest-opened', 'latest', 'missing', 'scheduled') @@ -80,6 +101,8 @@ class EmailAnalyticsServiceWrapper { * @param {number} totalDurationMs - Total duration in milliseconds */ _logJobCompletion(jobType, fetchResult, totalDurationMs) { + const config = this.#getConfig(); + const {eventCount, apiPollingTimeMs, processingTimeMs, aggregationTimeMs, emailAggregationTimeMs, memberAggregationTimeMs, result} = fetchResult; if (eventCount === 0) { @@ -110,6 +133,13 @@ class EmailAnalyticsServiceWrapper { const metricName = this.#logName === 'newsletters' ? 'email-analytics-open-throughput' : `email-${this.#logName}-analytics-open-throughput`; + + const metrics = this.#metrics; + if (!metrics) { + throw new errors.InternalServerError({ + message: 'EmailAnalyticsServiceWrapper is not initialized with metrics' + }); + } metrics.metric(metricName, { value: throughput, events: eventCount, @@ -120,6 +150,8 @@ class EmailAnalyticsServiceWrapper { } async fetchLatestOpenedEvents({maxEvents} = {maxEvents: Infinity}) { + const config = this.#getConfig(); + const beginTimestamp = await this.service.getLastOpenedEventTimestamp(); const lagMinutes = (Date.now() - beginTimestamp.getTime()) / 60000; const lagThreshold = config.get('emailAnalytics:openedJobLagWarningMinutes'); diff --git a/ghost/core/core/server/services/email-analytics/index.ts b/ghost/core/core/server/services/email-analytics/index.ts index 4a90f56fb71..845aa300e0f 100644 --- a/ghost/core/core/server/services/email-analytics/index.ts +++ b/ghost/core/core/server/services/email-analytics/index.ts @@ -1,27 +1,30 @@ +import type {Knex} from 'knex'; +import type {PrometheusClient} from '@tryghost/prometheus-metrics'; +import type {ConfigInstance} from '../../../shared/config/loader'; +// @ts-expect-error This module lacks type definitions. +import type Metrics from '@tryghost/metrics'; +// @ts-expect-error This module lacks type definitions. +import type SettingsCache from '../../../shared/settings-cache'; // @ts-expect-error This module lacks type definitions. import EmailAnalyticsServiceWrapper from './email-analytics-service-wrapper'; -import config from '../../../shared/config'; // @ts-expect-error This module lacks type definitions. import {NewsletterEmailAnalyticsBatchProcessor} from './newsletter-email-analytics-batch-processor'; // @ts-expect-error This module lacks type definitions. import NewsletterEmailEventStorage from '../email-service/newsletter-email-event-storage'; // @ts-expect-error This module lacks type definitions. import EmailEventProcessor from '../email-service/email-event-processor'; -import * as db from '../../data/db'; -import membersService from '../members'; -// @ts-expect-error This module lacks type definitions. -import emailSuppressionList from '../email-suppression-list'; +import type membersService from '../members'; // @ts-expect-error This module lacks type definitions. -import {EmailRecipientFailure, EmailSpamComplaintEvent, Email} from '../../models'; +import type EmailSuppressionList from '../email-suppression-list'; // @ts-expect-error This module lacks type definitions. -import domainEvents from '@tryghost/domain-events'; +import type {EmailRecipientFailure, EmailSpamComplaintEvent, Email} from '../../models'; // @ts-expect-error This module lacks type definitions. -import prometheusClient from '../../../shared/prometheus-client'; +import type DomainEvents from '@tryghost/domain-events'; import {Queries} from './lib/queries'; import {StartEmailAnalyticsJobEvent} from './events/start-email-analytics-job-event'; import {StartAutomationEmailAnalyticsJobEvent} from './events/start-automation-email-analytics-job-event'; import {AUTOMATION_EMAIL_TAG} from '../member-welcome-emails/constants'; -import * as automationsApi from '../automations/automations-api'; +import type * as AutomationsApi from '../automations/automations-api'; import {AutomationEmailAnalyticsBatchProcessor} from './automation-email-analytics-batch-processor'; export const newsletters = new EmailAnalyticsServiceWrapper({ @@ -32,15 +35,46 @@ export const automations = new EmailAnalyticsServiceWrapper({ logName: 'automations', }); -export const init = () => { +export const init = ({ + automationsApi, + config, + db, + domainEvents, + emailSuppressionList, + membersRepository, + models: { + Email, + EmailRecipientFailure, + EmailSpamComplaintEvent + }, + metrics, + prometheusClient, + settingsCache +}: { + automationsApi: Pick; + config: Pick; + db: {knex: Knex}, + domainEvents: Pick; + emailSuppressionList: Pick; + membersRepository: Pick; + models: { + Email: Email; + EmailRecipientFailure: EmailRecipientFailure; + EmailSpamComplaintEvent: EmailSpamComplaintEvent; + }; + metrics: Pick; + prometheusClient: PrometheusClient | null; + settingsCache: Pick; +}) => { const queries = new Queries(db.knex); const newsletterEmailEventProcessor = new EmailEventProcessor({ domainEvents, db, eventStorage: new NewsletterEmailEventStorage({ + config, db, - membersRepository: membersService.api.members, + membersRepository, models: { Email, EmailRecipientFailure, @@ -58,6 +92,8 @@ export const init = () => { } newsletters.init({ + config, + domainEvents, event: StartEmailAnalyticsJobEvent, queries, mailgunTags: newsletterMailgunTags, @@ -75,7 +111,9 @@ export const init = () => { failed: 'failed_at' } }, + metrics, prometheusClient, + settingsCache, createEventProcessor: () => ( new NewsletterEmailAnalyticsBatchProcessor({ config, @@ -87,6 +125,8 @@ export const init = () => { }); automations.init({ + config, + domainEvents, event: StartAutomationEmailAnalyticsJobEvent, queries, mailgunTags: [AUTOMATION_EMAIL_TAG], @@ -103,6 +143,8 @@ export const init = () => { opened: 'opened_at' } }, + metrics, + settingsCache, createEventProcessor: () => ( new AutomationEmailAnalyticsBatchProcessor({ automationsApi diff --git a/ghost/core/core/server/services/email-service/newsletter-email-event-storage.js b/ghost/core/core/server/services/email-service/newsletter-email-event-storage.js index a11da70b658..06b81a8b0d3 100644 --- a/ghost/core/core/server/services/email-service/newsletter-email-event-storage.js +++ b/ghost/core/core/server/services/email-service/newsletter-email-event-storage.js @@ -1,9 +1,9 @@ const moment = require('moment-timezone'); const errors = require('@tryghost/errors'); const logging = require('@tryghost/logging'); -const config = require('../../../shared/config'); class NewsletterEmailEventStorage { + #config; #db; #membersRepository; #models; @@ -11,7 +11,8 @@ class NewsletterEmailEventStorage { #prometheusClient; #pendingUpdates; - constructor({db, models, membersRepository, emailSuppressionList, prometheusClient}) { + constructor({config, db, models, membersRepository, emailSuppressionList, prometheusClient}) { + this.#config = config; this.#db = db; this.#models = models; this.#membersRepository = membersRepository; @@ -35,7 +36,7 @@ class NewsletterEmailEventStorage { } async handleDelivered(event) { - const useBatchProcessing = config.get('emailAnalytics:batchProcessing'); + const useBatchProcessing = this.#config.get('emailAnalytics:batchProcessing'); if (useBatchProcessing) { // Accumulate update for batch processing @@ -61,7 +62,7 @@ class NewsletterEmailEventStorage { } async handleOpened(event) { - const useBatchProcessing = config.get('emailAnalytics:batchProcessing'); + const useBatchProcessing = this.#config.get('emailAnalytics:batchProcessing'); if (useBatchProcessing) { // Accumulate update for batch processing @@ -87,7 +88,7 @@ class NewsletterEmailEventStorage { } async handlePermanentFailed(event) { - const useBatchProcessing = config.get('emailAnalytics:batchProcessing'); + const useBatchProcessing = this.#config.get('emailAnalytics:batchProcessing'); if (useBatchProcessing) { // Accumulate update for batch processing diff --git a/ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.js b/ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.js index 011d864d3d1..4c87f539c2d 100644 --- a/ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.js +++ b/ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.js @@ -1,25 +1,72 @@ const sinon = require('sinon'); -const metrics = require('@tryghost/metrics'); - -const configUtils = require('../../../../utils/config-utils'); const EmailAnalyticsServiceWrapper = require('../../../../../core/server/services/email-analytics/email-analytics-service-wrapper'); +const {Queries} = require('../../../../../core/server/services/email-analytics/lib/queries'); + +class FakeEvent { + timestamp = new Date(); + data = null; +} describe('EmailAnalyticsServiceWrapper', function () { + /** @type {sinon.SinonStub} */ let metricStub; beforeEach(function () { - configUtils.set('emailAnalytics:metrics:openThroughput:enabled', true); - configUtils.set('emailAnalytics:metrics:openThroughput:threshold', 0); - metricStub = sinon.stub(metrics, 'metric'); + metricStub = sinon.stub(); }); afterEach(async function () { sinon.restore(); - await configUtils.restore(); }); function logLatestOpenedJob(logName) { const wrapper = new EmailAnalyticsServiceWrapper({logName}); + wrapper.init({ + config: { + get: (key) => { + switch (key) { + case 'emailAnalytics:metrics:openThroughput:enabled': + return true; + case 'emailAnalytics:metrics:openThroughput:threshold': + return 0; + default: + return undefined; + } + } + }, + domainEvents: { + subscribe: sinon.stub(), + }, + event: FakeEvent, + queries: sinon.createStubInstance(Queries), + mailgunTags: [], + jobNames: { + latestNonOpened: 'email-analytics-latest-others', + missing: 'email-analytics-missing', + latestOpened: 'email-analytics-latest-opened', + scheduled: 'email-analytics-scheduled' + }, + cursorSeed: { + tableName: 'email_recipients', + eventColumns: { + delivered: 'delivered_at', + opened: 'opened_at', + failed: 'failed_at' + } + }, + settingsCache: { + get: sinon.stub() + }, + createEventProcessor: sinon.stub().returns({ + process: sinon.stub().resolves() + }), + metrics: { + metric: metricStub + }, + prometheusClient: { + registerCounter: sinon.stub() + }, + }); wrapper._logJobCompletion('latest-opened', { eventCount: 10, apiPollingTimeMs: 500, diff --git a/ghost/core/test/unit/server/services/email-analytics/index.test.ts b/ghost/core/test/unit/server/services/email-analytics/index.test.ts new file mode 100644 index 00000000000..0e77556cb9f --- /dev/null +++ b/ghost/core/test/unit/server/services/email-analytics/index.test.ts @@ -0,0 +1,117 @@ +import sinon from 'sinon'; +import createKnex from 'knex'; + +import {automations, init, newsletters} from '../../../../../core/server/services/email-analytics'; +import {AUTOMATION_EMAIL_TAG} from '../../../../../core/server/services/member-welcome-emails/constants'; + +describe('email analytics service', function () { + const automationsApi = { + getAutomatedEmailRecipientsByMailgunIds: sinon.stub(), + trackEmailDeliveredAndOpened: sinon.stub() + }; + const config = {get: sinon.stub()}; + config.get.withArgs('bulkEmail:mailgun:tag').returns('custom-mailgun-tag'); + const domainEvents = {subscribe: sinon.stub()}; + const metrics = {metric: sinon.stub()}; + const settingsCache = {get: sinon.stub()}; + + let newslettersInit: sinon.SinonStub; + let automationsInit: sinon.SinonStub; + + let dependencies: Parameters[0]; + + beforeEach(function () { + newslettersInit = sinon.stub(newsletters, 'init'); + automationsInit = sinon.stub(automations, 'init'); + + dependencies = { + automationsApi, + config, + db: { + knex: createKnex({ + client: 'better-sqlite3', + connection: { + filename: ':memory:' + }, + useNullAsDefault: true + }) + }, + domainEvents, + emailSuppressionList: { + removeComplaint: sinon.stub(), + removeUnsubscribe: sinon.stub() + }, + membersRepository: { + get: sinon.stub(), + update: sinon.stub() + }, + models: { + Email: {}, + EmailRecipientFailure: {}, + EmailSpamComplaintEvent: {} + }, + metrics, + prometheusClient: null, + settingsCache + }; + }); + + afterEach(function () { + sinon.restore(); + }); + + it('initializes newsletter and automation analytics', function () { + init(dependencies); + + sinon.assert.calledOnceWithExactly(newslettersInit, sinon.match({ + config, + domainEvents, + event: { + name: 'StartEmailAnalyticsJobEvent', + }, + mailgunTags: ['bulk-email', 'custom-mailgun-tag'], + jobNames: { + latestNonOpened: 'email-analytics-latest-others', + missing: 'email-analytics-missing', + latestOpened: 'email-analytics-latest-opened', + scheduled: 'email-analytics-scheduled' + }, + cursorSeed: { + tableName: 'email_recipients', + eventColumns: { + delivered: 'delivered_at', + opened: 'opened_at', + failed: 'failed_at' + } + }, + metrics, + settingsCache, + createEventProcessor: sinon.match.func + })); + + sinon.assert.calledOnceWithExactly(automationsInit, sinon.match({ + config, + domainEvents, + event: { + name: 'StartAutomationEmailAnalyticsJobEvent', + }, + mailgunTags: [AUTOMATION_EMAIL_TAG], + jobNames: { + latestNonOpened: 'email-analytics-automation-latest-others', + missing: 'email-analytics-automation-missing', + latestOpened: 'email-analytics-automation-latest-opened', + scheduled: 'email-analytics-automation-scheduled' + }, + cursorSeed: { + tableName: 'automated_email_recipients', + eventColumns: { + delivered: 'delivered_at', + opened: 'opened_at' + } + }, + metrics, + settingsCache, + createEventProcessor: sinon.match.func + })); + }); +}); diff --git a/ghost/core/test/unit/server/services/email-service/newsletter-email-event-storage.test.js b/ghost/core/test/unit/server/services/email-service/newsletter-email-event-storage.test.js index f8bf1c63e34..f4cb8e34b0e 100644 --- a/ghost/core/test/unit/server/services/email-service/newsletter-email-event-storage.test.js +++ b/ghost/core/test/unit/server/services/email-service/newsletter-email-event-storage.test.js @@ -4,6 +4,7 @@ const sinon = require('sinon'); const assert = require('node:assert/strict'); const logging = require('@tryghost/logging'); const {createDb, createPrometheusClient} = require('./utils'); +const config = require('../../../../../core/shared/config'); const EmailDeliveredEvent = require('../../../../../core/server/services/email-service/events/email-delivered-event'); const EmailOpenedEvent = require('../../../../../core/server/services/email-service/events/email-opened-event'); @@ -12,6 +13,8 @@ const EmailTemporaryBouncedEvent = require('../../../../../core/server/services/ const EmailUnsubscribedEvent = require('../../../../../core/server/services/email-service/events/email-unsubscribed-event'); const SpamComplaintEvent = require('../../../../../core/server/services/email-service/events/spam-complaint-event'); +const createEventStorage = (dependencies = {}) => new NewsletterEmailEventStorage({config, ...dependencies}); + describe('Email Event Storage', function () { let logError; @@ -26,12 +29,12 @@ describe('Email Event Storage', function () { describe('Constructor', function () { it('doesn\'t throw', function () { - new NewsletterEmailEventStorage({}); + createEventStorage({}); }); it('sets up metrics if prometheusClient is provided', function () { const prometheusClient = createPrometheusClient(); - new NewsletterEmailEventStorage({prometheusClient}); + createEventStorage({prometheusClient}); sinon.assert.calledOnce(prometheusClient.registerCounter); }); }); @@ -46,7 +49,7 @@ describe('Email Event Storage', function () { }); const db = createDb(); - const eventHandler = new NewsletterEmailEventStorage({db}); + const eventHandler = createEventStorage({db}); await eventHandler.handleDelivered(event); sinon.assert.calledOnce(db.update); assert(!!db.update.firstCall.args[0].delivered_at); @@ -56,7 +59,7 @@ describe('Email Event Storage', function () { const event = EmailDeliveredEvent.create({}); const db = createDb(); const prometheusClient = createPrometheusClient(); - const eventHandler = new NewsletterEmailEventStorage({db, prometheusClient}); + const eventHandler = createEventStorage({db, prometheusClient}); sinon.stub(eventHandler, 'recordEventStored').resolves(); await eventHandler.handleDelivered(event); sinon.assert.calledOnce(eventHandler.recordEventStored); @@ -72,7 +75,7 @@ describe('Email Event Storage', function () { }); const db = createDb(); - const eventHandler = new NewsletterEmailEventStorage({db}); + const eventHandler = createEventStorage({db}); await eventHandler.handleOpened(event); sinon.assert.calledOnce(db.update); assert(!!db.update.firstCall.args[0].opened_at); @@ -82,7 +85,7 @@ describe('Email Event Storage', function () { const event = EmailOpenedEvent.create({}); const db = createDb(); const prometheusClient = createPrometheusClient(); - const eventHandler = new NewsletterEmailEventStorage({db, prometheusClient}); + const eventHandler = createEventStorage({db, prometheusClient}); sinon.stub(eventHandler, 'recordEventStored').resolves(); await eventHandler.handleOpened(event); sinon.assert.calledOnce(eventHandler.recordEventStored); @@ -122,7 +125,7 @@ describe('Email Event Storage', function () { findOne: sinon.stub().resolves(existing) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ db, models: { EmailRecipientFailure @@ -168,7 +171,7 @@ describe('Email Event Storage', function () { findOne: sinon.stub().resolves(existing) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ db, models: { EmailRecipientFailure @@ -213,7 +216,7 @@ describe('Email Event Storage', function () { findOne: sinon.stub().resolves(existing) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ db, models: { EmailRecipientFailure @@ -248,7 +251,7 @@ describe('Email Event Storage', function () { add: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ db, models: { EmailRecipientFailure @@ -283,7 +286,7 @@ describe('Email Event Storage', function () { add: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ db, models: { EmailRecipientFailure @@ -317,7 +320,7 @@ describe('Email Event Storage', function () { add: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ db, models: { EmailRecipientFailure @@ -340,7 +343,7 @@ describe('Email Event Storage', function () { }); const db = createDb(); - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ db, models: {} }); @@ -382,7 +385,7 @@ describe('Email Event Storage', function () { findOne: sinon.stub().resolves(existing) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ db, models: { EmailRecipientFailure @@ -428,7 +431,7 @@ describe('Email Event Storage', function () { findOne: sinon.stub().resolves(existing) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ models: { EmailRecipientFailure } @@ -470,7 +473,7 @@ describe('Email Event Storage', function () { findOne: sinon.stub().resolves(existing) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ models: { EmailRecipientFailure } @@ -509,7 +512,7 @@ describe('Email Event Storage', function () { }) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ membersRepository: { get, update @@ -557,7 +560,7 @@ describe('Email Event Storage', function () { }) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ membersRepository: { get, update @@ -590,7 +593,7 @@ describe('Email Event Storage', function () { removeUnsubscribe: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ membersRepository: { get, update @@ -625,7 +628,7 @@ describe('Email Event Storage', function () { removeUnsubscribe: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ membersRepository: { get, update @@ -663,7 +666,7 @@ describe('Email Event Storage', function () { removeUnsubscribe: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ membersRepository: { get, update @@ -705,7 +708,7 @@ describe('Email Event Storage', function () { }) }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ membersRepository, models: { Email @@ -734,7 +737,7 @@ describe('Email Event Storage', function () { removeComplaint: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ models: { EmailSpamComplaintEvent }, @@ -762,7 +765,7 @@ describe('Email Event Storage', function () { removeComplaint: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ models: { EmailSpamComplaintEvent }, @@ -789,7 +792,7 @@ describe('Email Event Storage', function () { removeComplaint: sinon.stub().resolves() }; - const eventHandler = new NewsletterEmailEventStorage({ + const eventHandler = createEventStorage({ models: { EmailSpamComplaintEvent }, @@ -809,7 +812,7 @@ describe('Email Event Storage', function () { inc: incStub }) }; - const eventHandler = new NewsletterEmailEventStorage({prometheusClient}); + const eventHandler = createEventStorage({prometheusClient}); eventHandler.recordEventStored('delivered'); sinon.assert.calledOnce(incStub); }); @@ -819,7 +822,7 @@ describe('Email Event Storage', function () { registerCounter: sinon.stub(), getMetric: sinon.stub().throws(new Error('Metric not found')) }; - const eventHandler = new NewsletterEmailEventStorage({prometheusClient}); + const eventHandler = createEventStorage({prometheusClient}); assert.doesNotThrow(() => eventHandler.recordEventStored('delivered')); }); }); From c19b9a2190c36f37646de859e87f891646bc2e09 Mon Sep 17 00:00:00 2001 From: "tryghost-renovate[bot]" <269725441+tryghost-renovate[bot]@users.noreply.github.com> Date: Thu, 13 Aug 2026 13:42:21 -0400 Subject: [PATCH 06/19] Update CSS preprocessors (#29478) This PR contains the following updates: This PR contains the following updates: - autoprefixer@10.5.4 - postcss@8.5.26 Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com> --- .changeset/petite-schools-accept.md | 6 + apps/comments-ui/package.json | 2 +- apps/signup-form/package.json | 2 +- apps/sodo-search/package.json | 2 +- koenig/kg-unsplash-selector/package.json | 2 +- koenig/koenig-lexical/package.json | 2 +- pnpm-lock.yaml | 806 ++++++++++++----------- pnpm-workspace.yaml | 2 +- 8 files changed, 448 insertions(+), 376 deletions(-) create mode 100644 .changeset/petite-schools-accept.md diff --git a/.changeset/petite-schools-accept.md b/.changeset/petite-schools-accept.md new file mode 100644 index 00000000000..d9c67c82823 --- /dev/null +++ b/.changeset/petite-schools-accept.md @@ -0,0 +1,6 @@ +--- +"@tryghost/koenig-lexical": patch +"@tryghost/kg-unsplash-selector": patch +--- + +Updated dependencies diff --git a/apps/comments-ui/package.json b/apps/comments-ui/package.json index 019ddb31eb4..31bdc724c2c 100644 --- a/apps/comments-ui/package.json +++ b/apps/comments-ui/package.json @@ -75,7 +75,7 @@ "@types/react": "catalog:react17", "@types/react-dom": "catalog:react17", "@vitest/coverage-v8": "catalog:", - "autoprefixer": "10.5.2", + "autoprefixer": "10.5.4", "bson-objectid": "catalog:", "eslint": "catalog:", "eslint-plugin-tailwindcss": "catalog:tailwind3", diff --git a/apps/signup-form/package.json b/apps/signup-form/package.json index 176c10bd221..30250e5de35 100644 --- a/apps/signup-form/package.json +++ b/apps/signup-form/package.json @@ -47,7 +47,7 @@ "@tryghost/i18n": "workspace:*", "@types/react": "catalog:", "@types/react-dom": "catalog:", - "autoprefixer": "10.5.2", + "autoprefixer": "10.5.4", "eslint": "catalog:", "eslint-plugin-tailwindcss": "catalog:tailwind3", "postcss": "catalog:", diff --git a/apps/sodo-search/package.json b/apps/sodo-search/package.json index 9eb4cdb9b46..fb086fbf06e 100644 --- a/apps/sodo-search/package.json +++ b/apps/sodo-search/package.json @@ -55,7 +55,7 @@ "@testing-library/jest-dom": "catalog:", "@testing-library/react": "catalog:react17", "@vitest/coverage-v8": "catalog:", - "autoprefixer": "10.5.2", + "autoprefixer": "10.5.4", "cross-fetch": "catalog:", "eslint": "catalog:", "jsdom": "catalog:", diff --git a/koenig/kg-unsplash-selector/package.json b/koenig/kg-unsplash-selector/package.json index e90fd30643c..1a0bb797a45 100644 --- a/koenig/kg-unsplash-selector/package.json +++ b/koenig/kg-unsplash-selector/package.json @@ -40,7 +40,7 @@ "@types/react-dom": "catalog:", "@vitejs/plugin-react": "catalog:", "@vitest/coverage-v8": "catalog:", - "autoprefixer": "10.5.2", + "autoprefixer": "10.5.4", "eslint": "catalog:", "eslint-plugin-ghost": "catalog:", "eslint-plugin-react": "catalog:", diff --git a/koenig/koenig-lexical/package.json b/koenig/koenig-lexical/package.json index 471460b69bd..cdcce2d77da 100644 --- a/koenig/koenig-lexical/package.json +++ b/koenig/koenig-lexical/package.json @@ -101,7 +101,7 @@ "@vitejs/plugin-react": "catalog:", "@vitest/coverage-v8": "catalog:", "@vitest/ui": "4.1.9", - "autoprefixer": "10.5.2", + "autoprefixer": "10.5.4", "clsx": "catalog:", "concurrently": "catalog:", "dompurify": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38b68513d89..53b0224afff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -340,8 +340,8 @@ catalogs: specifier: 2.0.0 version: 2.0.0 postcss: - specifier: 8.5.16 - version: 8.5.16 + specifier: 8.5.26 + version: 8.5.26 preact: specifier: ^10.29.2 version: 10.29.2 @@ -1133,8 +1133,8 @@ importers: specifier: 'catalog:' version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) autoprefixer: - specifier: 10.5.2 - version: 10.5.2(postcss@8.5.16) + specifier: 10.5.4 + version: 10.5.4(postcss@8.5.26) bson-objectid: specifier: 'catalog:' version: 2.0.4 @@ -1152,10 +1152,10 @@ importers: version: 2.30.1 postcss: specifier: 'catalog:' - version: 8.5.16 + version: 8.5.26 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.16) + version: 16.1.1(postcss@8.5.26) sinon: specifier: 'catalog:' version: 22.0.0 @@ -1185,7 +1185,7 @@ importers: version: 1.0.1 webpack: specifier: 5.105.4 - version: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + version: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) devDependencies: '@babel/core': specifier: 7.29.7 @@ -1234,7 +1234,7 @@ importers: version: link:../../configs/eslint '@sentry/ember': specifier: 7.120.3 - version: 7.120.3(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 7.120.3(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@sentry/integrations': specifier: 7.114.0 version: 7.114.0 @@ -1249,7 +1249,7 @@ importers: version: 0.2.20 '@tryghost/ember-promise-modals': specifier: 2.0.1 - version: 2.0.1(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(postcss@8.5.16)(supports-color@10.2.2) + version: 2.0.1(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2) '@tryghost/helpers': specifier: 'catalog:' version: 1.1.106 @@ -1330,7 +1330,7 @@ importers: version: 0.5.0(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) ember-auto-import: specifier: 2.10.0 - version: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-classic-decorator: specifier: 3.0.1 version: 3.0.1(supports-color@10.2.2) @@ -1414,10 +1414,10 @@ importers: version: 8.1.2(encoding@0.1.13)(supports-color@10.2.2) ember-in-viewport: specifier: 4.1.0 - version: 4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-infinity: specifier: 2.3.0 - version: 2.3.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 2.3.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-keyboard: specifier: 8.2.1 version: 8.2.1(@babel/core@7.29.7(supports-color@10.2.2))(@ember/test-helpers@2.9.6(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) @@ -1794,13 +1794,13 @@ importers: version: link:../../configs/eslint-react '@storybook/addon-docs': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/addon-links': specifier: 'catalog:' version: 10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@tailwindcss/postcss': specifier: 'catalog:' version: 4.2.2 @@ -1830,7 +1830,7 @@ importers: version: 29.1.1(@noble/hashes@1.8.0) postcss: specifier: 'catalog:' - version: 8.5.16 + version: 8.5.26 remark-gfm: specifier: 4.0.1 version: 4.0.1(supports-color@10.2.2) @@ -1885,13 +1885,13 @@ importers: version: 1.61.1 '@storybook/addon-docs': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/addon-links': specifier: 'catalog:' version: 10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@tryghost/i18n': specifier: workspace:* version: link:../../packages/i18n @@ -1905,8 +1905,8 @@ importers: specifier: 'catalog:' version: typescript@7.0.2 autoprefixer: - specifier: 10.5.2 - version: 10.5.2(postcss@8.5.16) + specifier: 10.5.4 + version: 10.5.4(postcss@8.5.26) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -1915,10 +1915,10 @@ importers: version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)) postcss: specifier: 'catalog:' - version: 8.5.16 + version: 8.5.26 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.16) + version: 16.1.1(postcss@8.5.26) storybook: specifier: 'catalog:' version: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1966,8 +1966,8 @@ importers: specifier: 'catalog:' version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) autoprefixer: - specifier: 10.5.2 - version: 10.5.2(postcss@8.5.16) + specifier: 10.5.4 + version: 10.5.4(postcss@8.5.26) cross-fetch: specifier: 'catalog:' version: 4.1.0(encoding@0.1.13) @@ -1982,10 +1982,10 @@ importers: version: 14.0.16 postcss: specifier: 'catalog:' - version: 8.5.16 + version: 8.5.26 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.16) + version: 16.1.1(postcss@8.5.26) tailwindcss: specifier: catalog:tailwind3 version: 3.4.19(tsx@4.23.0)(yaml@2.9.0) @@ -2717,7 +2717,7 @@ importers: version: 3.12.0 cssnano: specifier: 7.1.9 - version: 7.1.9(postcss@8.5.16) + version: 7.1.9(postcss@8.5.26) esbuild: specifier: 0.28.1 version: 0.28.1 @@ -2756,10 +2756,10 @@ importers: version: 3.1.14 postcss: specifier: 'catalog:' - version: 8.5.16 + version: 8.5.26 postcss-cli: specifier: 11.0.1 - version: 11.0.1(jiti@2.7.0)(postcss@8.5.16)(tsx@4.23.0) + version: 11.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.0) qs: specifier: 6.15.3 version: 6.15.3 @@ -3297,8 +3297,8 @@ importers: specifier: 'catalog:' version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) autoprefixer: - specifier: 10.5.2 - version: 10.5.2(postcss@8.5.16) + specifier: 10.5.4 + version: 10.5.4(postcss@8.5.26) eslint: specifier: 'catalog:' version: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) @@ -3322,10 +3322,10 @@ importers: version: 29.1.1(@noble/hashes@1.8.0) postcss: specifier: 'catalog:' - version: 8.5.16 + version: 8.5.26 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.16) + version: 16.1.1(postcss@8.5.26) tailwindcss: specifier: catalog:tailwind3 version: 3.4.19(tsx@4.23.0)(yaml@2.9.0) @@ -3340,7 +3340,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vite-plugin-dts: specifier: 5.0.3 - version: 5.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 5.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) vite-plugin-svgr: specifier: 5.2.0 version: 5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) @@ -3467,7 +3467,7 @@ importers: version: 5.3.0(encoding@0.1.13)(rollup@4.62.2)(supports-color@10.2.2) '@storybook/addon-docs': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/addon-links': specifier: 'catalog:' version: 10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) @@ -3476,7 +3476,7 @@ importers: version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@testing-library/dom': specifier: 10.4.1 version: 10.4.1 @@ -3535,8 +3535,8 @@ importers: specifier: 4.1.9 version: 4.1.9(vitest@4.1.9) autoprefixer: - specifier: 10.5.2 - version: 10.5.2(postcss@8.5.16) + specifier: 10.5.4 + version: 10.5.4(postcss@8.5.26) clsx: specifier: 'catalog:' version: 2.1.1 @@ -3596,10 +3596,10 @@ importers: version: 8.0.0 postcss: specifier: 'catalog:' - version: 8.5.16 + version: 8.5.26 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.16) + version: 16.1.1(postcss@8.5.26) prettier: specifier: 3.9.4 version: 3.9.4 @@ -10195,6 +10195,7 @@ packages: '@xmldom/xmldom@0.9.10': resolution: {integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==} engines: {node: '>=14.6'} + deprecated: this version has critical issues, please update to the latest version '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -10681,8 +10682,8 @@ packages: resolution: {integrity: sha512-yj9C819u3ED3/OyRd9mLKMXGy8wsElaf6bkkv6OqZEKrNAT461TjiznS4IfPBy8Mmh6DWaXCQCVYSq3+VHkpjQ==} engines: {node: '>=0.10.0'} - autoprefixer@10.5.2: - resolution: {integrity: sha512-rD5t5DwOjJdmSORcTq64j8MawTC+tbQ+HHqjR4NDumamy/ambn1UJrlKL+KdwujWxMkFjPM3pPHOEA9tl4767Q==} + autoprefixer@10.5.4: + resolution: {integrity: sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -11109,6 +11110,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + baseline-browser-mapping@2.11.13: + resolution: {integrity: sha512-k9HNuUVMlqVjQ9UHzfPjIqiDbWw7WqT1AoT7GL8VwvF3r0ZfArtgiSPAlmupyNquNgOJHTuH4CKYf8ttMTWBTQ==} + engines: {node: '>=6.0.0'} + hasBin: true + basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} @@ -11482,6 +11488,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.28.8: + resolution: {integrity: sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -11674,6 +11685,9 @@ packages: caniuse-lite@1.0.30001799: resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==} + caniuse-lite@1.0.30001809: + resolution: {integrity: sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==} + capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} engines: {node: 6.* || 8.* || >= 10.*} @@ -13397,6 +13411,9 @@ packages: electron-to-chromium@1.5.376: resolution: {integrity: sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==} + electron-to-chromium@1.5.403: + resolution: {integrity: sha512-MQsYmdaLzvaCX5j+ZZBr5Fm6uCCnPQcRtlvmvRlWqrXy+BH2O4ffXIAScF+JQznQWB9brWp4lSD9Z4yNmaf2BA==} + element-closest@2.0.2: resolution: {integrity: sha512-QCqAWP3kwj8Gz9UXncVXQGdrhnWxD8SQBSeZp5pOsyCcQ6RpL738L1/tfuwBiMi6F1fYkxqPnBrFBR4L+f49Cg==} engines: {node: '>=4.0.0'} @@ -17951,6 +17968,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.18: + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} @@ -18069,6 +18091,10 @@ packages: resolution: {integrity: sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==} engines: {node: '>=18'} + node-releases@2.0.53: + resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==} + engines: {node: '>=18'} + node@runtime:22.23.1: resolution: type: variations @@ -19537,6 +19563,10 @@ packages: resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.26: + resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + engines: {node: ^10 || ^12 || >=14} + preact@10.29.2: resolution: {integrity: sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==} @@ -22071,6 +22101,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.3.1: + resolution: {integrity: sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + upper-case@1.1.3: resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} @@ -24161,79 +24197,79 @@ snapshots: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - '@csstools/postcss-cascade-layers@1.1.1(postcss@8.5.16)': + '@csstools/postcss-cascade-layers@1.1.1(postcss@8.5.26)': dependencies: '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.4) - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 - '@csstools/postcss-color-function@1.1.1(postcss@8.5.16)': + '@csstools/postcss-color-function@1.1.1(postcss@8.5.26)': dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.16) - postcss: 8.5.16 + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.26) + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-font-format-keywords@1.0.1(postcss@8.5.16)': + '@csstools/postcss-font-format-keywords@1.0.1(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-hwb-function@1.0.2(postcss@8.5.16)': + '@csstools/postcss-hwb-function@1.0.2(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-ic-unit@1.0.1(postcss@8.5.16)': + '@csstools/postcss-ic-unit@1.0.1(postcss@8.5.26)': dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.16) - postcss: 8.5.16 + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.26) + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.5.16)': + '@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.5.26)': dependencies: '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.4) - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 - '@csstools/postcss-nested-calc@1.0.0(postcss@8.5.16)': + '@csstools/postcss-nested-calc@1.0.0(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-normalize-display-values@1.0.1(postcss@8.5.16)': + '@csstools/postcss-normalize-display-values@1.0.1(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@1.1.1(postcss@8.5.16)': + '@csstools/postcss-oklab-function@1.1.1(postcss@8.5.26)': dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.16) - postcss: 8.5.16 + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.26) + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.5.16)': + '@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.5.16)': + '@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-text-decoration-shorthand@1.0.0(postcss@8.5.16)': + '@csstools/postcss-text-decoration-shorthand@1.0.0(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@1.0.2(postcss@8.5.16)': + '@csstools/postcss-trigonometric-functions@1.0.2(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - '@csstools/postcss-unset-value@1.0.2(postcss@8.5.16)': + '@csstools/postcss-unset-value@1.0.2(postcss@8.5.26)': dependencies: - postcss: 8.5.16 + postcss: 8.5.26 '@csstools/selector-resolve-nested@4.0.0(postcss-selector-parser@7.1.4)': dependencies: @@ -27573,14 +27609,14 @@ snapshots: '@sentry/types': 7.120.4 '@sentry/utils': 7.120.4 - '@sentry/ember@7.120.3(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@sentry/ember@7.120.3(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@embroider/macros': 1.16.13(supports-color@10.2.2) '@sentry/browser': 7.120.3 '@sentry/core': 7.120.3 '@sentry/types': 7.120.3 '@sentry/utils': 7.120.3 - ember-auto-import: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + ember-auto-import: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-cli-babel: 7.26.11(supports-color@10.2.2) ember-cli-htmlbars: 6.3.0(supports-color@10.2.2) ember-cli-typescript: 5.3.0(supports-color@10.2.2) @@ -27876,10 +27912,10 @@ snapshots: '@standard-schema/utils@0.3.0': {} - '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.31)(react@18.3.1) - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -27895,10 +27931,10 @@ snapshots: - vite - webpack - '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.31)(react@18.3.1) - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -27922,9 +27958,9 @@ snapshots: '@types/react': 18.3.31 react: 18.3.1 - '@storybook/builder-vite@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@storybook/builder-vite@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.3.0 vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) @@ -27933,9 +27969,9 @@ snapshots: - rollup - webpack - '@storybook/builder-vite@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@storybook/builder-vite@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.3.0 vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) @@ -27944,7 +27980,7 @@ snapshots: - rollup - webpack - '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 @@ -27952,9 +27988,9 @@ snapshots: esbuild: 0.28.1 rollup: 4.62.2 vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) - '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 @@ -27962,7 +27998,7 @@ snapshots: esbuild: 0.28.1 rollup: 4.62.2 vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) '@storybook/global@5.0.0': {} @@ -27980,11 +28016,11 @@ snapshots: '@types/react': 18.3.31 '@types/react-dom': 18.3.7(@types/react@18.3.31) - '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@rollup/pluginutils': 5.4.0(rollup@4.62.2) - '@storybook/builder-vite': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + '@storybook/builder-vite': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/react': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) empathic: 2.0.1 magic-string: 0.30.21 @@ -28004,11 +28040,11 @@ snapshots: - typescript - webpack - '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3))': + '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@rollup/pluginutils': 5.4.0(rollup@4.62.2) - '@storybook/builder-vite': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + '@storybook/builder-vite': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/react': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) empathic: 2.0.1 magic-string: 0.30.21 @@ -28281,7 +28317,7 @@ snapshots: '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 - postcss: 8.5.16 + postcss: 8.5.26 tailwindcss: 4.2.2 '@tailwindcss/vite@4.2.2(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': @@ -28695,7 +28731,7 @@ snapshots: '@tryghost/email-mock-receiver@2.1.0': {} - '@tryghost/ember-promise-modals@2.0.1(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(postcss@8.5.16)(supports-color@10.2.2)': + '@tryghost/ember-promise-modals@2.0.1(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)': dependencies: '@ember/test-waiters': 3.1.0(supports-color@10.2.2) '@embroider/util': 1.13.5(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) @@ -28706,7 +28742,7 @@ snapshots: ember-cli-babel: 7.26.11(supports-color@10.2.2) ember-cli-htmlbars: 6.3.0(supports-color@10.2.2) focus-trap: 6.9.4 - postcss-preset-env: 7.8.3(postcss@8.5.16) + postcss-preset-env: 7.8.3(postcss@8.5.26) transitivePeerDependencies: - '@glint/environment-ember-loose' - '@glint/template' @@ -31016,13 +31052,13 @@ snapshots: audio-extensions@0.0.0: {} - autoprefixer@10.5.2(postcss@8.5.16): + autoprefixer@10.5.4(postcss@8.5.26): dependencies: - browserslist: 4.28.4 - caniuse-lite: 1.0.30001799 + browserslist: 4.28.8 + caniuse-lite: 1.0.30001809 fraction.js: 5.3.4 picocolors: 1.1.1 - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 autoprefixer@9.8.6: @@ -31231,14 +31267,14 @@ snapshots: schema-utils: 2.7.1 webpack: 4.47.0 - babel-loader@8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + babel-loader@8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) babel-messages@6.23.0: dependencies: @@ -31753,6 +31789,8 @@ snapshots: baseline-browser-mapping@2.10.38: {} + baseline-browser-mapping@2.11.13: {} + basic-auth@2.0.1: dependencies: safe-buffer: 5.1.2 @@ -32540,6 +32578,14 @@ snapshots: node-releases: 2.0.48 update-browserslist-db: 1.2.3(browserslist@4.28.4) + browserslist@4.28.8: + dependencies: + baseline-browser-mapping: 2.11.13 + caniuse-lite: 1.0.30001809 + electron-to-chromium: 1.5.403 + node-releases: 2.0.53 + update-browserslist-db: 1.3.1(browserslist@4.28.8) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -32786,6 +32832,8 @@ snapshots: caniuse-lite@1.0.30001799: {} + caniuse-lite@1.0.30001809: {} + capture-exit@2.0.0: dependencies: rsvp: 4.8.5 @@ -33602,9 +33650,9 @@ snapshots: coffeescript: 1.12.7 optional: true - css-blank-pseudo@3.0.3(postcss@8.5.16): + css-blank-pseudo@3.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 css-color-names@0.0.4: {} @@ -33614,22 +33662,22 @@ snapshots: postcss: 7.0.39 timsort: 0.3.0 - css-declaration-sorter@7.4.0(postcss@8.5.16): + css-declaration-sorter@7.4.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 css-functions-list@3.3.3: {} - css-has-pseudo@3.0.4(postcss@8.5.16): + css-has-pseudo@3.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 css-line-break@2.1.0: dependencies: utrie: 1.0.2 - css-loader@5.2.7(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + css-loader@5.2.7(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: icss-utils: 5.1.0(postcss@8.5.16) loader-utils: 2.0.4 @@ -33641,11 +33689,11 @@ snapshots: postcss-value-parser: 4.2.0 schema-utils: 3.3.0 semver: 7.8.5 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) - css-prefers-color-scheme@6.0.3(postcss@8.5.16): + css-prefers-color-scheme@6.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 css-select-base-adapter@0.1.1: {} @@ -33746,39 +33794,39 @@ snapshots: postcss-svgo: 4.0.3 postcss-unique-selectors: 4.0.1 - cssnano-preset-default@7.0.17(postcss@8.5.16): + cssnano-preset-default@7.0.17(postcss@8.5.26): dependencies: browserslist: 4.28.4 - css-declaration-sorter: 7.4.0(postcss@8.5.16) - cssnano-utils: 5.0.3(postcss@8.5.16) - postcss: 8.5.16 - postcss-calc: 10.1.1(postcss@8.5.16) - postcss-colormin: 7.0.10(postcss@8.5.16) - postcss-convert-values: 7.0.12(postcss@8.5.16) - postcss-discard-comments: 7.0.8(postcss@8.5.16) - postcss-discard-duplicates: 7.0.4(postcss@8.5.16) - postcss-discard-empty: 7.0.3(postcss@8.5.16) - postcss-discard-overridden: 7.0.3(postcss@8.5.16) - postcss-merge-longhand: 7.0.7(postcss@8.5.16) - postcss-merge-rules: 7.0.11(postcss@8.5.16) - postcss-minify-font-values: 7.0.3(postcss@8.5.16) - postcss-minify-gradients: 7.0.5(postcss@8.5.16) - postcss-minify-params: 7.0.9(postcss@8.5.16) - postcss-minify-selectors: 7.1.2(postcss@8.5.16) - postcss-normalize-charset: 7.0.3(postcss@8.5.16) - postcss-normalize-display-values: 7.0.3(postcss@8.5.16) - postcss-normalize-positions: 7.0.4(postcss@8.5.16) - postcss-normalize-repeat-style: 7.0.4(postcss@8.5.16) - postcss-normalize-string: 7.0.3(postcss@8.5.16) - postcss-normalize-timing-functions: 7.0.3(postcss@8.5.16) - postcss-normalize-unicode: 7.0.9(postcss@8.5.16) - postcss-normalize-url: 7.0.3(postcss@8.5.16) - postcss-normalize-whitespace: 7.0.3(postcss@8.5.16) - postcss-ordered-values: 7.0.4(postcss@8.5.16) - postcss-reduce-initial: 7.0.9(postcss@8.5.16) - postcss-reduce-transforms: 7.0.3(postcss@8.5.16) - postcss-svgo: 7.1.3(postcss@8.5.16) - postcss-unique-selectors: 7.0.7(postcss@8.5.16) + css-declaration-sorter: 7.4.0(postcss@8.5.26) + cssnano-utils: 5.0.3(postcss@8.5.26) + postcss: 8.5.26 + postcss-calc: 10.1.1(postcss@8.5.26) + postcss-colormin: 7.0.10(postcss@8.5.26) + postcss-convert-values: 7.0.12(postcss@8.5.26) + postcss-discard-comments: 7.0.8(postcss@8.5.26) + postcss-discard-duplicates: 7.0.4(postcss@8.5.26) + postcss-discard-empty: 7.0.3(postcss@8.5.26) + postcss-discard-overridden: 7.0.3(postcss@8.5.26) + postcss-merge-longhand: 7.0.7(postcss@8.5.26) + postcss-merge-rules: 7.0.11(postcss@8.5.26) + postcss-minify-font-values: 7.0.3(postcss@8.5.26) + postcss-minify-gradients: 7.0.5(postcss@8.5.26) + postcss-minify-params: 7.0.9(postcss@8.5.26) + postcss-minify-selectors: 7.1.2(postcss@8.5.26) + postcss-normalize-charset: 7.0.3(postcss@8.5.26) + postcss-normalize-display-values: 7.0.3(postcss@8.5.26) + postcss-normalize-positions: 7.0.4(postcss@8.5.26) + postcss-normalize-repeat-style: 7.0.4(postcss@8.5.26) + postcss-normalize-string: 7.0.3(postcss@8.5.26) + postcss-normalize-timing-functions: 7.0.3(postcss@8.5.26) + postcss-normalize-unicode: 7.0.9(postcss@8.5.26) + postcss-normalize-url: 7.0.3(postcss@8.5.26) + postcss-normalize-whitespace: 7.0.3(postcss@8.5.26) + postcss-ordered-values: 7.0.4(postcss@8.5.26) + postcss-reduce-initial: 7.0.9(postcss@8.5.26) + postcss-reduce-transforms: 7.0.3(postcss@8.5.26) + postcss-svgo: 7.1.3(postcss@8.5.26) + postcss-unique-selectors: 7.0.7(postcss@8.5.26) cssnano-util-get-arguments@4.0.0: {} @@ -33790,9 +33838,9 @@ snapshots: cssnano-util-same-parent@4.0.1: {} - cssnano-utils@5.0.3(postcss@8.5.16): + cssnano-utils@5.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 cssnano@4.1.10: dependencies: @@ -33801,11 +33849,11 @@ snapshots: is-resolvable: 1.1.0 postcss: 7.0.39 - cssnano@7.1.9(postcss@8.5.16): + cssnano@7.1.9(postcss@8.5.26): dependencies: - cssnano-preset-default: 7.0.17(postcss@8.5.16) + cssnano-preset-default: 7.0.17(postcss@8.5.26) lilconfig: 3.1.3 - postcss: 8.5.16 + postcss: 8.5.26 csso@3.5.1: dependencies: @@ -34366,6 +34414,8 @@ snapshots: electron-to-chromium@1.5.376: {} + electron-to-chromium@1.5.403: {} + element-closest@2.0.2: {} element-resize-detector@1.2.4: @@ -34454,7 +34504,7 @@ snapshots: - webpack-cli - webpack-command - ember-auto-import@2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + ember-auto-import@2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) @@ -34464,7 +34514,7 @@ snapshots: '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@embroider/macros': 1.16.13(supports-color@10.2.2) '@embroider/shared-internals': 2.9.2(supports-color@10.2.2) - babel-loader: 8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + babel-loader: 8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) babel-plugin-ember-modules-api-polyfill: 3.5.0 babel-plugin-ember-template-compilation: 2.4.1 babel-plugin-htmlbars-inline-precompile: 5.3.1 @@ -34474,7 +34524,7 @@ snapshots: broccoli-merge-trees: 4.2.0(supports-color@10.2.2) broccoli-plugin: 4.0.7(supports-color@10.2.2) broccoli-source: 3.0.1 - css-loader: 5.2.7(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + css-loader: 5.2.7(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) debug: 4.4.3(supports-color@10.2.2) fs-extra: 10.1.0 fs-tree-diff: 2.0.1(supports-color@10.2.2) @@ -34482,14 +34532,14 @@ snapshots: is-subdir: 1.2.0 js-string-escape: 1.0.1 lodash: 4.18.1 - mini-css-extract-plugin: 2.10.2(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + mini-css-extract-plugin: 2.10.2(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) minimatch: 3.1.5 parse5: 6.0.1 pkg-entry-points: 1.1.2 resolve: 1.22.12 resolve-package-path: 4.0.3 semver: 7.8.5 - style-loader: 2.0.0(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + style-loader: 2.0.0(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) typescript-memoize: 1.1.1 walk-sync: 3.0.0 transitivePeerDependencies: @@ -35384,10 +35434,10 @@ snapshots: transitivePeerDependencies: - supports-color - ember-in-viewport@4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + ember-in-viewport@4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@embroider/macros': 1.16.13(supports-color@10.2.2) - ember-auto-import: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + ember-auto-import: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-cli-babel: 7.26.11(supports-color@10.2.2) ember-destroyable-polyfill: 2.0.3(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) ember-modifier: 4.2.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) @@ -35401,12 +35451,12 @@ snapshots: - supports-color - webpack - ember-infinity@2.3.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + ember-infinity@2.3.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@ember/render-modifiers': 2.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) ember-cli-babel: 7.26.11(supports-color@10.2.2) ember-cli-htmlbars: 5.7.2(supports-color@10.2.2) - ember-in-viewport: 4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + ember-in-viewport: 4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) transitivePeerDependencies: - '@babel/core' - '@glint/template' @@ -36390,7 +36440,7 @@ snapshots: eslint-plugin-tailwindcss@3.18.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)): dependencies: fast-glob: 3.3.3 - postcss: 8.5.16 + postcss: 8.5.26 synckit: 0.11.13 tailwind-api-utils: 1.0.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)) tailwindcss: 3.4.19(tsx@4.23.0)(yaml@2.9.0) @@ -41127,11 +41177,11 @@ snapshots: mingo@2.5.3: {} - mini-css-extract-plugin@2.10.2(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + mini-css-extract-plugin@2.10.2(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: schema-utils: 4.3.3 tapable: 2.3.3 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) mini-queue@0.0.14(supports-color@10.2.2): dependencies: @@ -41498,6 +41548,8 @@ snapshots: nanoid@3.3.15: {} + nanoid@3.3.18: {} + napi-build-utils@2.0.0: optional: true @@ -41680,6 +41732,8 @@ snapshots: node-releases@2.0.48: {} + node-releases@2.0.53: {} + node@runtime:22.23.1: {} nodemailer-mailgun-transport@2.1.5(babel-core@6.26.3(supports-color@10.2.2))(debug@4.4.3(supports-color@10.2.2))(handlebars@4.7.9)(lodash@4.18.1)(supports-color@10.2.2)(underscore@1.13.8): @@ -42644,14 +42698,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-attribute-case-insensitive@5.0.2(postcss@8.5.16): + postcss-attribute-case-insensitive@5.0.2(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 - postcss-calc@10.1.1(postcss@8.5.16): + postcss-calc@10.1.1(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 7.1.4 postcss-value-parser: 4.2.0 @@ -42661,20 +42715,20 @@ snapshots: postcss-selector-parser: 6.1.4 postcss-value-parser: 4.2.0 - postcss-clamp@4.1.0(postcss@8.5.16): + postcss-clamp@4.1.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-cli@11.0.1(jiti@2.7.0)(postcss@8.5.16)(tsx@4.23.0): + postcss-cli@11.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.0): dependencies: chokidar: 3.6.0 dependency-graph: 1.0.0 fs-extra: 11.3.6 picocolors: 1.1.1 - postcss: 8.5.16 - postcss-load-config: 5.1.0(jiti@2.7.0)(postcss@8.5.16)(tsx@4.23.0) - postcss-reporter: 7.1.0(postcss@8.5.16) + postcss: 8.5.26 + postcss-load-config: 5.1.0(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.0) + postcss-reporter: 7.1.0(postcss@8.5.26) pretty-hrtime: 1.0.3 read-cache: 1.0.0 slash: 5.1.0 @@ -42684,14 +42738,14 @@ snapshots: - jiti - tsx - postcss-color-functional-notation@4.2.4(postcss@8.5.16): + postcss-color-functional-notation@4.2.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-color-hex-alpha@8.0.4(postcss@8.5.16): + postcss-color-hex-alpha@8.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-color-mod-function@3.0.3: @@ -42700,9 +42754,9 @@ snapshots: postcss: 7.0.39 postcss-values-parser: 2.0.1 - postcss-color-rebeccapurple@7.1.1(postcss@8.5.16): + postcss-color-rebeccapurple@7.1.1(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-colormin@4.0.3: @@ -42713,12 +42767,12 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-colormin@7.0.10(postcss@8.5.16): + postcss-colormin@7.0.10(postcss@8.5.26): dependencies: '@colordx/core': 5.4.3 browserslist: 4.28.4 caniuse-api: 3.0.0 - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-convert-values@4.0.1: @@ -42726,19 +42780,19 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-convert-values@7.0.12(postcss@8.5.16): + postcss-convert-values@7.0.12(postcss@8.5.26): dependencies: browserslist: 4.28.4 - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-custom-media@7.0.8: dependencies: postcss: 7.0.39 - postcss-custom-media@8.0.2(postcss@8.5.16): + postcss-custom-media@8.0.2(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-custom-properties@10.0.0: @@ -42746,86 +42800,86 @@ snapshots: postcss: 7.0.39 postcss-values-parser: 4.0.0 - postcss-custom-properties@12.1.11(postcss@8.5.16): + postcss-custom-properties@12.1.11(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-custom-selectors@6.0.3(postcss@8.5.16): + postcss-custom-selectors@6.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 - postcss-dir-pseudo-class@6.0.5(postcss@8.5.16): + postcss-dir-pseudo-class@6.0.5(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 postcss-discard-comments@4.0.2: dependencies: postcss: 7.0.39 - postcss-discard-comments@7.0.8(postcss@8.5.16): + postcss-discard-comments@7.0.8(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 7.1.4 postcss-discard-duplicates@4.0.2: dependencies: postcss: 7.0.39 - postcss-discard-duplicates@7.0.4(postcss@8.5.16): + postcss-discard-duplicates@7.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-discard-empty@4.0.1: dependencies: postcss: 7.0.39 - postcss-discard-empty@7.0.3(postcss@8.5.16): + postcss-discard-empty@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-discard-overridden@4.0.1: dependencies: postcss: 7.0.39 - postcss-discard-overridden@7.0.3(postcss@8.5.16): + postcss-discard-overridden@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-double-position-gradients@3.1.2(postcss@8.5.16): + postcss-double-position-gradients@3.1.2(postcss@8.5.26): dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.16) - postcss: 8.5.16 + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.26) + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-env-function@4.0.6(postcss@8.5.16): + postcss-env-function@4.0.6(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-focus-visible@6.0.4(postcss@8.5.16): + postcss-focus-visible@6.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 - postcss-focus-within@5.0.4(postcss@8.5.16): + postcss-focus-within@5.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 - postcss-font-variant@5.0.0(postcss@8.5.16): + postcss-font-variant@5.0.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-gap-properties@3.0.5(postcss@8.5.16): + postcss-gap-properties@3.0.5(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-image-set-function@4.0.7(postcss@8.5.16): + postcss-image-set-function@4.0.7(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-import@12.0.1: @@ -42835,60 +42889,60 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.12 - postcss-import@15.1.0(postcss@8.5.16): + postcss-import@15.1.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.12 - postcss-import@16.1.1(postcss@8.5.16): + postcss-import@16.1.1(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.12 - postcss-initial@4.0.1(postcss@8.5.16): + postcss-initial@4.0.1(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-js@4.1.0(postcss@8.5.16): + postcss-js@4.1.0(postcss@8.5.26): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.16 + postcss: 8.5.26 - postcss-lab-function@4.2.1(postcss@8.5.16): + postcss-lab-function@4.2.1(postcss@8.5.26): dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.16) - postcss: 8.5.16 + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.26) + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-load-config@5.1.0(jiti@2.7.0)(postcss@8.5.16)(tsx@4.23.0): + postcss-load-config@5.1.0(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.0): dependencies: lilconfig: 3.1.3 yaml: 2.9.0 optionalDependencies: jiti: 2.7.0 - postcss: 8.5.16 + postcss: 8.5.26 tsx: 4.23.0 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.16)(tsx@4.23.0)(yaml@2.9.0): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.0)(yaml@2.9.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 - postcss: 8.5.16 + postcss: 8.5.26 tsx: 4.23.0 yaml: 2.9.0 - postcss-logical@5.0.4(postcss@8.5.16): + postcss-logical@5.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-media-minmax@5.0.0(postcss@8.5.16): + postcss-media-minmax@5.0.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-merge-longhand@4.0.11: dependencies: @@ -42897,11 +42951,11 @@ snapshots: postcss-value-parser: 3.3.1 stylehacks: 4.0.3 - postcss-merge-longhand@7.0.7(postcss@8.5.16): + postcss-merge-longhand@7.0.7(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - stylehacks: 7.0.11(postcss@8.5.16) + stylehacks: 7.0.11(postcss@8.5.26) postcss-merge-rules@4.0.3: dependencies: @@ -42912,12 +42966,12 @@ snapshots: postcss-selector-parser: 3.1.2 vendors: 1.0.4 - postcss-merge-rules@7.0.11(postcss@8.5.16): + postcss-merge-rules@7.0.11(postcss@8.5.26): dependencies: browserslist: 4.28.4 caniuse-api: 3.0.0 - cssnano-utils: 5.0.3(postcss@8.5.16) - postcss: 8.5.16 + cssnano-utils: 5.0.3(postcss@8.5.26) + postcss: 8.5.26 postcss-selector-parser: 7.1.4 postcss-minify-font-values@4.0.2: @@ -42925,9 +42979,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-minify-font-values@7.0.3(postcss@8.5.16): + postcss-minify-font-values@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-minify-gradients@4.0.2: @@ -42937,11 +42991,11 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-minify-gradients@7.0.5(postcss@8.5.16): + postcss-minify-gradients@7.0.5(postcss@8.5.26): dependencies: '@colordx/core': 5.4.3 - cssnano-utils: 5.0.3(postcss@8.5.16) - postcss: 8.5.16 + cssnano-utils: 5.0.3(postcss@8.5.26) + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-minify-params@4.0.2: @@ -42953,11 +43007,11 @@ snapshots: postcss-value-parser: 3.3.1 uniqs: 2.0.0 - postcss-minify-params@7.0.9(postcss@8.5.16): + postcss-minify-params@7.0.9(postcss@8.5.26): dependencies: browserslist: 4.28.4 - cssnano-utils: 5.0.3(postcss@8.5.16) - postcss: 8.5.16 + cssnano-utils: 5.0.3(postcss@8.5.26) + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-minify-selectors@4.0.2: @@ -42967,12 +43021,12 @@ snapshots: postcss: 7.0.39 postcss-selector-parser: 3.1.2 - postcss-minify-selectors@7.1.2(postcss@8.5.16): + postcss-minify-selectors@7.1.2(postcss@8.5.26): dependencies: browserslist: 4.28.4 caniuse-api: 3.0.0 cssesc: 3.0.0 - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 7.1.4 postcss-modules-extract-imports@3.1.0(postcss@8.5.16): @@ -42996,9 +43050,9 @@ snapshots: icss-utils: 5.1.0(postcss@8.5.16) postcss: 8.5.16 - postcss-nested@6.2.0(postcss@8.5.16): + postcss-nested@6.2.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 postcss-nested@7.0.2(postcss@8.5.16): @@ -43006,19 +43060,19 @@ snapshots: postcss: 8.5.16 postcss-selector-parser: 7.1.4 - postcss-nesting@10.2.0(postcss@8.5.16): + postcss-nesting@10.2.0(postcss@8.5.26): dependencies: '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.4) - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 postcss-normalize-charset@4.0.1: dependencies: postcss: 7.0.39 - postcss-normalize-charset@7.0.3(postcss@8.5.16): + postcss-normalize-charset@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-normalize-display-values@4.0.2: dependencies: @@ -43026,9 +43080,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-display-values@7.0.3(postcss@8.5.16): + postcss-normalize-display-values@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-normalize-positions@4.0.2: @@ -43038,9 +43092,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-positions@7.0.4(postcss@8.5.16): + postcss-normalize-positions@7.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-normalize-repeat-style@4.0.2: @@ -43050,9 +43104,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-repeat-style@7.0.4(postcss@8.5.16): + postcss-normalize-repeat-style@7.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-normalize-string@4.0.2: @@ -43061,9 +43115,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-string@7.0.3(postcss@8.5.16): + postcss-normalize-string@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-normalize-timing-functions@4.0.2: @@ -43072,9 +43126,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-timing-functions@7.0.3(postcss@8.5.16): + postcss-normalize-timing-functions@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-normalize-unicode@4.0.1: @@ -43083,10 +43137,10 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-unicode@7.0.9(postcss@8.5.16): + postcss-normalize-unicode@7.0.9(postcss@8.5.26): dependencies: browserslist: 4.28.4 - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-normalize-url@4.0.1: @@ -43096,9 +43150,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-url@7.0.3(postcss@8.5.16): + postcss-normalize-url@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 postcss-normalize-whitespace@4.0.2: @@ -43106,14 +43160,14 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-whitespace@7.0.3(postcss@8.5.16): + postcss-normalize-whitespace@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-opacity-percentage@1.1.3(postcss@8.5.16): + postcss-opacity-percentage@1.1.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-ordered-values@4.1.2: dependencies: @@ -43121,82 +43175,82 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-ordered-values@7.0.4(postcss@8.5.16): + postcss-ordered-values@7.0.4(postcss@8.5.26): dependencies: - cssnano-utils: 5.0.3(postcss@8.5.16) - postcss: 8.5.16 + cssnano-utils: 5.0.3(postcss@8.5.26) + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@3.0.4(postcss@8.5.16): + postcss-overflow-shorthand@3.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.5.16): + postcss-page-break@3.0.4(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-place@7.0.5(postcss@8.5.16): + postcss-place@7.0.5(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-preset-env@7.8.3(postcss@8.5.16): - dependencies: - '@csstools/postcss-cascade-layers': 1.1.1(postcss@8.5.16) - '@csstools/postcss-color-function': 1.1.1(postcss@8.5.16) - '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.5.16) - '@csstools/postcss-hwb-function': 1.0.2(postcss@8.5.16) - '@csstools/postcss-ic-unit': 1.0.1(postcss@8.5.16) - '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.5.16) - '@csstools/postcss-nested-calc': 1.0.0(postcss@8.5.16) - '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.5.16) - '@csstools/postcss-oklab-function': 1.1.1(postcss@8.5.16) - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.16) - '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.5.16) - '@csstools/postcss-text-decoration-shorthand': 1.0.0(postcss@8.5.16) - '@csstools/postcss-trigonometric-functions': 1.0.2(postcss@8.5.16) - '@csstools/postcss-unset-value': 1.0.2(postcss@8.5.16) - autoprefixer: 10.5.2(postcss@8.5.16) + postcss-preset-env@7.8.3(postcss@8.5.26): + dependencies: + '@csstools/postcss-cascade-layers': 1.1.1(postcss@8.5.26) + '@csstools/postcss-color-function': 1.1.1(postcss@8.5.26) + '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.5.26) + '@csstools/postcss-hwb-function': 1.0.2(postcss@8.5.26) + '@csstools/postcss-ic-unit': 1.0.1(postcss@8.5.26) + '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.5.26) + '@csstools/postcss-nested-calc': 1.0.0(postcss@8.5.26) + '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.5.26) + '@csstools/postcss-oklab-function': 1.1.1(postcss@8.5.26) + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.26) + '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.5.26) + '@csstools/postcss-text-decoration-shorthand': 1.0.0(postcss@8.5.26) + '@csstools/postcss-trigonometric-functions': 1.0.2(postcss@8.5.26) + '@csstools/postcss-unset-value': 1.0.2(postcss@8.5.26) + autoprefixer: 10.5.4(postcss@8.5.26) browserslist: 4.28.4 - css-blank-pseudo: 3.0.3(postcss@8.5.16) - css-has-pseudo: 3.0.4(postcss@8.5.16) - css-prefers-color-scheme: 6.0.3(postcss@8.5.16) + css-blank-pseudo: 3.0.3(postcss@8.5.26) + css-has-pseudo: 3.0.4(postcss@8.5.26) + css-prefers-color-scheme: 6.0.3(postcss@8.5.26) cssdb: 7.11.2 - postcss: 8.5.16 - postcss-attribute-case-insensitive: 5.0.2(postcss@8.5.16) - postcss-clamp: 4.1.0(postcss@8.5.16) - postcss-color-functional-notation: 4.2.4(postcss@8.5.16) - postcss-color-hex-alpha: 8.0.4(postcss@8.5.16) - postcss-color-rebeccapurple: 7.1.1(postcss@8.5.16) - postcss-custom-media: 8.0.2(postcss@8.5.16) - postcss-custom-properties: 12.1.11(postcss@8.5.16) - postcss-custom-selectors: 6.0.3(postcss@8.5.16) - postcss-dir-pseudo-class: 6.0.5(postcss@8.5.16) - postcss-double-position-gradients: 3.1.2(postcss@8.5.16) - postcss-env-function: 4.0.6(postcss@8.5.16) - postcss-focus-visible: 6.0.4(postcss@8.5.16) - postcss-focus-within: 5.0.4(postcss@8.5.16) - postcss-font-variant: 5.0.0(postcss@8.5.16) - postcss-gap-properties: 3.0.5(postcss@8.5.16) - postcss-image-set-function: 4.0.7(postcss@8.5.16) - postcss-initial: 4.0.1(postcss@8.5.16) - postcss-lab-function: 4.2.1(postcss@8.5.16) - postcss-logical: 5.0.4(postcss@8.5.16) - postcss-media-minmax: 5.0.0(postcss@8.5.16) - postcss-nesting: 10.2.0(postcss@8.5.16) - postcss-opacity-percentage: 1.1.3(postcss@8.5.16) - postcss-overflow-shorthand: 3.0.4(postcss@8.5.16) - postcss-page-break: 3.0.4(postcss@8.5.16) - postcss-place: 7.0.5(postcss@8.5.16) - postcss-pseudo-class-any-link: 7.1.6(postcss@8.5.16) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.16) - postcss-selector-not: 6.0.1(postcss@8.5.16) + postcss: 8.5.26 + postcss-attribute-case-insensitive: 5.0.2(postcss@8.5.26) + postcss-clamp: 4.1.0(postcss@8.5.26) + postcss-color-functional-notation: 4.2.4(postcss@8.5.26) + postcss-color-hex-alpha: 8.0.4(postcss@8.5.26) + postcss-color-rebeccapurple: 7.1.1(postcss@8.5.26) + postcss-custom-media: 8.0.2(postcss@8.5.26) + postcss-custom-properties: 12.1.11(postcss@8.5.26) + postcss-custom-selectors: 6.0.3(postcss@8.5.26) + postcss-dir-pseudo-class: 6.0.5(postcss@8.5.26) + postcss-double-position-gradients: 3.1.2(postcss@8.5.26) + postcss-env-function: 4.0.6(postcss@8.5.26) + postcss-focus-visible: 6.0.4(postcss@8.5.26) + postcss-focus-within: 5.0.4(postcss@8.5.26) + postcss-font-variant: 5.0.0(postcss@8.5.26) + postcss-gap-properties: 3.0.5(postcss@8.5.26) + postcss-image-set-function: 4.0.7(postcss@8.5.26) + postcss-initial: 4.0.1(postcss@8.5.26) + postcss-lab-function: 4.2.1(postcss@8.5.26) + postcss-logical: 5.0.4(postcss@8.5.26) + postcss-media-minmax: 5.0.0(postcss@8.5.26) + postcss-nesting: 10.2.0(postcss@8.5.26) + postcss-opacity-percentage: 1.1.3(postcss@8.5.26) + postcss-overflow-shorthand: 3.0.4(postcss@8.5.26) + postcss-page-break: 3.0.4(postcss@8.5.26) + postcss-place: 7.0.5(postcss@8.5.26) + postcss-pseudo-class-any-link: 7.1.6(postcss@8.5.26) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.26) + postcss-selector-not: 6.0.1(postcss@8.5.26) postcss-value-parser: 4.2.0 - postcss-pseudo-class-any-link@7.1.6(postcss@8.5.16): + postcss-pseudo-class-any-link@7.1.6(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 postcss-reduce-initial@4.0.3: @@ -43206,11 +43260,11 @@ snapshots: has: 1.0.4 postcss: 7.0.39 - postcss-reduce-initial@7.0.9(postcss@8.5.16): + postcss-reduce-initial@7.0.9(postcss@8.5.26): dependencies: browserslist: 4.28.4 caniuse-api: 3.0.0 - postcss: 8.5.16 + postcss: 8.5.26 postcss-reduce-transforms@4.0.2: dependencies: @@ -43219,28 +43273,28 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-reduce-transforms@7.0.3(postcss@8.5.16): + postcss-reduce-transforms@7.0.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.5.16): + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-reporter@7.1.0(postcss@8.5.16): + postcss-reporter@7.1.0(postcss@8.5.26): dependencies: picocolors: 1.1.1 - postcss: 8.5.16 + postcss: 8.5.26 thenby: 1.4.1 - postcss-safe-parser@7.0.1(postcss@8.5.16): + postcss-safe-parser@7.0.1(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-selector-not@6.0.1(postcss@8.5.16): + postcss-selector-not@6.0.1(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 6.1.4 postcss-selector-parser@3.1.2: @@ -43265,9 +43319,9 @@ snapshots: postcss-value-parser: 3.3.1 svgo: 1.3.2 - postcss-svgo@7.1.3(postcss@8.5.16): + postcss-svgo@7.1.3(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-value-parser: 4.2.0 svgo: 4.0.1 @@ -43277,9 +43331,9 @@ snapshots: postcss: 7.0.39 uniqs: 2.0.0 - postcss-unique-selectors@7.0.7(postcss@8.5.16): + postcss-unique-selectors@7.0.7(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 7.1.4 postcss-value-parser@3.3.1: {} @@ -43309,6 +43363,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.26: + dependencies: + nanoid: 3.3.18 + picocolors: 1.1.1 + source-map-js: 1.2.1 + preact@10.29.2: {} prebuild-install@7.1.3: @@ -44569,7 +44629,7 @@ snapshots: is-plain-object: 5.0.0 launder: 1.7.1 parse-srcset: 1.0.2 - postcss: 8.5.16 + postcss: 8.5.26 sax@1.2.4: {} @@ -45384,11 +45444,11 @@ snapshots: dependencies: boundary: 2.0.0 - style-loader@2.0.0(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + style-loader@2.0.0(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) style-mod@4.1.3: {} @@ -45408,10 +45468,10 @@ snapshots: postcss: 7.0.39 postcss-selector-parser: 3.1.2 - stylehacks@7.0.11(postcss@8.5.16): + stylehacks@7.0.11(postcss@8.5.26): dependencies: browserslist: 4.28.4 - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 7.1.4 stylelint@17.14.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2): @@ -45442,8 +45502,8 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.16 - postcss-safe-parser: 7.0.1(postcss@8.5.16) + postcss: 8.5.26 + postcss-safe-parser: 7.0.1(postcss@8.5.26) postcss-selector-parser: 7.1.4 postcss-value-parser: 4.2.0 string-width: 8.2.1 @@ -45621,11 +45681,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.16 - postcss-import: 15.1.0(postcss@8.5.16) - postcss-js: 4.1.0(postcss@8.5.16) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.16)(tsx@4.23.0)(yaml@2.9.0) - postcss-nested: 6.2.0(postcss@8.5.16) + postcss: 8.5.26 + postcss-import: 15.1.0(postcss@8.5.26) + postcss-js: 4.1.0(postcss@8.5.26) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.0)(yaml@2.9.0) + postcss-nested: 6.2.0(postcss@8.5.26) postcss-selector-parser: 6.1.4 resolve: 1.22.12 sucrase: 3.35.1 @@ -45721,13 +45781,13 @@ snapshots: webpack-sources: 1.4.3 worker-farm: 1.7.0 - terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) optionalDependencies: '@swc/core': 1.15.43(@swc/helpers@0.5.23) clean-css: 4.2.4 @@ -45735,24 +45795,24 @@ snapshots: csso: 5.0.5 esbuild: 0.28.1 lightningcss: 1.32.0 - postcss: 8.5.16 + postcss: 8.5.26 uglify-js: 3.19.3 - terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) optionalDependencies: '@swc/core': 1.15.43(@swc/helpers@0.5.23) clean-css: 4.2.4 - cssnano: 7.1.9(postcss@8.5.16) + cssnano: 7.1.9(postcss@8.5.26) csso: 5.0.5 esbuild: 0.28.1 lightningcss: 1.32.0 - postcss: 8.5.16 + postcss: 8.5.26 uglify-js: 3.19.3 optional: true @@ -46437,7 +46497,7 @@ snapshots: unpipe@1.0.0: {} - unplugin-dts@1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + unplugin-dts@1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) '@volar/typescript': 2.4.28 @@ -46453,7 +46513,7 @@ snapshots: rolldown: 1.1.4 rollup: 4.62.2 vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) transitivePeerDependencies: - supports-color @@ -46483,6 +46543,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.3.1(browserslist@4.28.8): + dependencies: + browserslist: 4.28.8 + escalade: 3.2.0 + picocolors: 1.1.1 + upper-case@1.1.3: {} uri-js@4.4.1: @@ -46730,9 +46796,9 @@ snapshots: dependencies: vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - vite-plugin-dts@5.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): + vite-plugin-dts@5.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: - unplugin-dts: 1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + unplugin-dts: 1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) optionalDependencies: rollup: 4.62.2 vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) @@ -47157,7 +47223,7 @@ snapshots: watchpack: 1.7.5 webpack-sources: 1.4.3 - webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3): + webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.9 @@ -47181,7 +47247,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) watchpack: 2.5.2 webpack-sources: 3.5.0 transitivePeerDependencies: @@ -47198,7 +47264,7 @@ snapshots: - postcss - uglify-js - webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3): + webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.9 @@ -47222,7 +47288,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) watchpack: 2.5.2 webpack-sources: 3.5.0 transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6ad6ab1d3cf..9c823c28632 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -146,7 +146,7 @@ catalog: moment-timezone: 0.5.45 msw: 2.14.6 node-html-markdown: 2.0.0 - postcss: 8.5.16 + postcss: 8.5.26 preact: ^10.29.2 react: 18.3.1 react-dom: 18.3.1 From 47018a3f983ae3e1147e6317a65acc7f949342bd Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Thu, 13 Aug 2026 13:44:47 -0400 Subject: [PATCH 07/19] Fixed renovate config issues (#29947) no ref - switch rebaseWhen to 'conflicted', removing the consistent rebase force-push cycle that led to PRs being stuck - widen automerge window to allow for CI re-runs - reduce Renovate log noise by default, allow debug logging on manual runs --- .github/renovate.json5 | 35 ++++++++++++++++++------------- .github/workflows/renovate.yml | 38 +++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 24 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index bc6851ed57c..cec3982c13c 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -45,13 +45,17 @@ // We have to disable platform based automerge (forcing renovate to do it manually) // as otherwise renovate wont follow our schedule "platformAutomerge": false, - // Keep every open Renovate branch current, including updates that require - // human review. The shared preset uses `rebaseWhen: automerging`, which - // Renovate resolves to `never` whenever a package rule disables automerge. - // Those PRs then conflict with main indefinitely and occupy the open-PR cap - // until somebody manually requests a rebase. Runner scheduling below still - // limits when the resulting branch updates and CI runs can happen. - "rebaseWhen": "behind-base-branch", + // Branch protection does not require up-to-date branches (the required + // status checks ruleset has strict: false), so a green-but-behind branch + // is still mergeable. Rebasing on every `main` commit therefore buys + // nothing and costs a force-push plus a full CI re-run per branch, which + // is what stopped branches from ever being green *and* current inside an + // automerge window. "conflicted" rebases only when a branch genuinely + // conflicts — in practice whenever another Renovate PR lands a + // pnpm-lock.yaml change, which is exactly when it's needed. It also keeps + // needs:review PRs current, unlike the preset's "automerging", which + // Renovate resolves to "never" wherever a package rule disables automerge. + "rebaseWhen": "conflicted", // Soak every dependency update for 72 hours before opening a PR. This guards // against compromised publishes (malicious version yanked within a few hours) // and against unstable releases that get hotfixed shortly after publish. @@ -85,8 +89,6 @@ // self-hosted workflow that means a CI-storm of force-pushes across all // open Renovate PRs during the workday. Setting `updateNotScheduled: // false` keeps existing branch maintenance inside the same windows. - // Existing branches can still be maintained outside the normal creation - // schedule when the workflow switches Renovate into cap-reached mode. "updateNotScheduled": false, "schedule": [ // Run all weekend @@ -94,15 +96,17 @@ // Run on weekday evenings "* 23 * * 1-5", // Run on early weekday mornings (previous day 23:00 is already - // covered by the evening/weekend blocks above) - "* 0-4 * * 1-6" + // covered by the evening/weekend blocks above). Extends to 05:59 to + // absorb GitHub Actions scheduler drift — delayed ticks were landing + // outside the window and doing nothing. + "* 0-5 * * 1-6" ], "automergeSchedule": [ // Allow automerge all weekend "* * * * 0,6", - // Allow automerge overnight on weekday evenings (11pm-4:59am UTC) + // Allow automerge overnight on weekday evenings (11pm-5:59am UTC) "* 23 * * 1-5", - "* 0-4 * * 1-6" + "* 0-5 * * 1-6" ], // Vulnerability alerts normally bypass Renovate's PR concurrency, hourly // PR, and schedule limits. Let them keep doing that so security fixes can @@ -111,7 +115,10 @@ "vulnerabilityAlerts": { "schedule": ["at any time"], "minimumReleaseAge": "3 days", - "rebaseWhen": "behind-base-branch", + // Same reasoning as the global `rebaseWhen` above: branches don't have + // to be current to merge, so rebasing a security PR on every `main` + // commit only delays the fix behind another CI cycle. + "rebaseWhen": "conflicted", "dependencyDashboardApproval": false, "labels": ["dependencies", "security"] }, diff --git a/.github/workflows/renovate.yml b/.github/workflows/renovate.yml index abe8f946bc3..cede723baec 100644 --- a/.github/workflows/renovate.yml +++ b/.github/workflows/renovate.yml @@ -23,8 +23,11 @@ on: # duration, giving each merge a fresh rebase + green CI window. # # Times are UTC; matches renovate.json5's `schedule` block. - # Weekday early-morning window (Mon-Sat 00:00-04:59 UTC) - - cron: '17 0-4 * * 1-6' + # Weekday early-morning window (Mon-Sat 00:00-05:59 UTC). Last tick is + # 03:47 rather than the end of the window: Actions has been delivering + # these up to ~70min late, so a later cron lands outside the window and + # wastes the freshest-CI opportunity of the night. + - cron: '47 0-3 * * 1-6' # Weekday evening window (Mon-Fri 23:00-23:59 UTC) - cron: '17 23 * * 1-5' # Weekend - every 2h is plenty; no automerge urgency, just batch creation @@ -38,6 +41,12 @@ on: required: false default: false type: boolean + logLevel: + description: 'Renovate log level for this manual run' + required: false + default: 'info' + type: choice + options: [info, debug, trace] concurrency: group: renovate @@ -81,9 +90,13 @@ jobs: # # Below the cap, restrict PR creation to the number of slots left. At or # above the cap, or when RENOVATE_MAINTENANCE_ONLY=true, force dashboard - # approval for new branches/PRs while allowing existing PR branches to - # keep updating outside the creation schedule. That gives us "rebase and - # merge the 10, but create no more." + # approval for new branches/PRs. Existing PRs keep updating and merging + # on the normal schedule. That gives us "rebase and merge the 10, but + # create no more." + # + # Deliberately does NOT force `updateNotScheduled: true` — that overrides + # renovate.json5's `false` and puts a full-fleet force-push in the middle + # of the workday, which is exactly what #28207 removed. - name: Configure Renovate PR cap env: GH_TOKEN: ${{ steps.app-token.outputs.token }} @@ -98,19 +111,24 @@ jobs: PR_CAP=10 fi + # Exclude `needs:review` PRs: Renovate cannot merge them itself, so + # counting them lets a handful of parked updates hold the cap shut + # forever — the cap is only released by Renovate merging something. open_count=$(gh pr list \ --repo "${{ github.repository }}" \ --author "app/tryghost-renovate" \ --state open \ - --json number --jq 'length') + --limit 100 \ + --json number,labels \ + --jq '[.[] | select(any(.labels[].name; . == "needs:review") | not)] | length') - echo "Renovate has $open_count open PRs (cap: $PR_CAP)" + echo "Renovate has $open_count open PRs it can merge itself (cap: $PR_CAP)" if [ "$MAINTENANCE_ONLY" = "true" ]; then - force='{"dependencyDashboardApproval":true,"prCreation":"approval","updateNotScheduled":true,"vulnerabilityAlerts":{"dependencyDashboardApproval":false}}' + force='{"dependencyDashboardApproval":true,"prCreation":"approval","vulnerabilityAlerts":{"dependencyDashboardApproval":false}}' echo "::notice::RENOVATE_MAINTENANCE_ONLY=true. Running in maintenance-only mode: existing PRs may update/automerge, new PRs require dashboard approval." elif [ "$open_count" -ge "$PR_CAP" ]; then - force='{"dependencyDashboardApproval":true,"prCreation":"approval","updateNotScheduled":true,"vulnerabilityAlerts":{"dependencyDashboardApproval":false}}' + force='{"dependencyDashboardApproval":true,"prCreation":"approval","vulnerabilityAlerts":{"dependencyDashboardApproval":false}}' echo "::notice::Renovate is at or above the open PR cap. Running in maintenance-only mode: existing PRs may update/automerge, new PRs require dashboard approval." else remaining=$((PR_CAP - open_count)) @@ -130,7 +148,7 @@ jobs: with: token: ${{ steps.app-token.outputs.token }} env: - LOG_LEVEL: debug + LOG_LEVEL: ${{ inputs.logLevel || 'info' }} RENOVATE_REPOSITORY_CACHE: enabled RENOVATE_REPOSITORIES: TryGhost/Ghost # Ghost is already onboarded via Mend; don't open an onboarding PR. From 375981f91d1606f3d24b0e754f4889be1e247692 Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Thu, 13 Aug 2026 13:50:52 -0400 Subject: [PATCH 08/19] Updated nx + other root dev dependencies (#29954) no ref - update nx to latest v23 - update secretlint monorepo - update knip/lint-staged/dep-cruiser --- package.json | 12 +- pnpm-lock.yaml | 1331 +++++++++++++++++++++---------------------- pnpm-workspace.yaml | 9 +- 3 files changed, 672 insertions(+), 680 deletions(-) diff --git a/package.json b/package.json index 1b0edb769a1..cd2300d3d01 100644 --- a/package.json +++ b/package.json @@ -88,16 +88,16 @@ }, "devDependencies": { "@playwright/test": "catalog:", - "@secretlint/secretlint-rule-pattern": "13.0.2", - "@secretlint/secretlint-rule-preset-recommend": "13.0.2", + "@secretlint/secretlint-rule-pattern": "catalog:", + "@secretlint/secretlint-rule-preset-recommend": "catalog:", "dependency-cruiser": "catalog:", "eslint": "catalog:", "husky": "9.1.7", - "knip": "6.24.0", - "lint-staged": "17.0.8", - "nx": "23.0.1", + "knip": "catalog:", + "lint-staged": "catalog:", + "nx": "23.1.1", "rimraf": "6.1.3", - "secretlint": "13.0.2", + "secretlint": "catalog:", "shell-quote": "catalog:", "typescript": "catalog:", "vitest": "catalog:" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53b0224afff..338f6aa3365 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,6 +108,12 @@ catalogs: '@radix-ui/react-tooltip': specifier: 1.2.11 version: 1.2.11 + '@secretlint/secretlint-rule-pattern': + specifier: 13.0.4 + version: 13.0.4 + '@secretlint/secretlint-rule-preset-recommend': + specifier: 13.0.4 + version: 13.0.4 '@sentry/react': specifier: 7.120.4 version: 7.120.4 @@ -265,8 +271,8 @@ catalogs: specifier: 4.1.0 version: 4.1.0 dependency-cruiser: - specifier: ^18.0.0 - version: 18.0.0 + specifier: ^18.1.1 + version: 18.1.1 dequal: specifier: 2.0.3 version: 2.0.3 @@ -321,6 +327,12 @@ catalogs: knex-migrator: specifier: 5.4.1 version: 5.4.1 + knip: + specifier: 6.32.1 + version: 6.32.1 + lint-staged: + specifier: 17.3.0 + version: 17.3.0 lodash: specifier: 4.18.1 version: 4.18.1 @@ -354,6 +366,9 @@ catalogs: react-router: specifier: 7.18.1 version: 7.18.1 + secretlint: + specifier: 13.0.4 + version: 13.0.4 semver: specifier: 7.8.5 version: 7.8.5 @@ -509,14 +524,14 @@ importers: specifier: 'catalog:' version: 1.61.1 '@secretlint/secretlint-rule-pattern': - specifier: 13.0.2 - version: 13.0.2(supports-color@10.2.2) + specifier: 'catalog:' + version: 13.0.4(supports-color@10.2.2) '@secretlint/secretlint-rule-preset-recommend': - specifier: 13.0.2 - version: 13.0.2 + specifier: 'catalog:' + version: 13.0.4 dependency-cruiser: specifier: 'catalog:' - version: 18.0.0 + version: 18.1.1 eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -524,23 +539,23 @@ importers: specifier: 9.1.7 version: 9.1.7 knip: - specifier: 6.24.0 - version: 6.24.0 + specifier: 'catalog:' + version: 6.32.1 lint-staged: - specifier: 17.0.8 - version: 17.0.8 + specifier: 'catalog:' + version: 17.3.0 node: specifier: runtime:22.23.1 version: runtime:22.23.1 nx: - specifier: 23.0.1 - version: 23.0.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(debug@4.4.3(supports-color@10.2.2)) + specifier: 23.1.1 + version: 23.1.1(@swc/core@1.15.43(@swc/helpers@0.5.23)) rimraf: specifier: 6.1.3 version: 6.1.3 secretlint: - specifier: 13.0.2 - version: 13.0.2(supports-color@10.2.2) + specifier: 'catalog:' + version: 13.0.4(supports-color@10.2.2) shell-quote: specifier: 'catalog:' version: 1.10.0 @@ -912,7 +927,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/admin-x-framework: dependencies: @@ -1046,7 +1061,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/comments-ui: dependencies: @@ -1994,7 +2009,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) configs/eslint: dependencies: @@ -2056,16 +2071,16 @@ importers: version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) vite-plugin-svgr: specifier: 'catalog:' - version: 4.5.0(rollup@4.62.2)(supports-color@10.2.2)(typescript@7.0.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) configs/vitest: dependencies: vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) e2e: devDependencies: @@ -3968,7 +3983,7 @@ importers: version: 9.4.0(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/nql-string: devDependencies: @@ -5379,6 +5394,9 @@ packages: '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + '@emnapi/core@1.4.5': resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} @@ -5391,6 +5409,9 @@ packages: '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/runtime@1.4.5': resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} @@ -6544,6 +6565,13 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 + '@napi-rs/wasm-runtime@1.2.2': + resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.3 + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} @@ -6589,57 +6617,57 @@ packages: react: ^18 || ^19 react-dom: ^18 || ^19 - '@nx/nx-darwin-arm64@23.0.1': - resolution: {integrity: sha512-gQJvgPnbI91DBe23Th2CqD9R/S54cPS3C1f0DhyQ8YEf9rR7EEc+sVGjhgVxlhfOk2W7I1Gy6EkXwpN4aDoW4w==} + '@nx/nx-darwin-arm64@23.1.1': + resolution: {integrity: sha512-Rq/RXLX5uIvJQfb6kuUgEirquT5ARaAgQyNaMZVnOPAL5wuxaDvQag8WX/WUCIgbUKZuGkclJwM7Vlnvtn3bdg==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@23.0.1': - resolution: {integrity: sha512-e/lvzHKN6gpuD7MqEtfH1fOfnR75E55ytYNt8jaRxKI6EvpCq+Q3MunDuh9GQYAkqDrUqE7AhHrHc+eKATVEHw==} + '@nx/nx-darwin-x64@23.1.1': + resolution: {integrity: sha512-doWaPLPd6yUas3FhQJqMAScupCsToeTedK4RRWm700VhHoVdBTN4ejIBRBfoiT/SPAwY6EOHb8uFDJhGo7geMg==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@23.0.1': - resolution: {integrity: sha512-f582OhSYN9qHpA9Ox9qnr3kZSZ7gQHs7crmBUutmbXmZQB2TDS/TlhvYSNnxudpwHR/tuWGi2IOQqa7zGOZj1Q==} + '@nx/nx-freebsd-x64@23.1.1': + resolution: {integrity: sha512-9rDZKBPGuX8mid11RimJ2ENqDYZpPZhrqTlI9q/VnqcPLq0Bw/8AhqCKhBVlfNqJjbi4OsRQYDK7UkqIlcfThg==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@23.0.1': - resolution: {integrity: sha512-VjhqPc6E7aiI0e+lowrkVbdyulsmP9fgMdcX1mCzXCEu/XZDcUbZ5qveR964cMhvm5qKn0ILJtJOUqZgmOT3Xg==} + '@nx/nx-linux-arm-gnueabihf@23.1.1': + resolution: {integrity: sha512-NDR5X2HiD6WU3JEaDJmOLteIGIFqjrjkzoFWrQke2Y1oCRYu+UyFdPeaMVUyAs5OyUx4U+SD+eBQPTCNbWmazA==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@23.0.1': - resolution: {integrity: sha512-zX2JdHQejZWB3DRgNsh77qOVYaSSjSLuBP2qIqc7EWVlCUnR7Aj3e65PTIps4LxMMmUp4twZA2ezS0rtyK2A4w==} + '@nx/nx-linux-arm64-gnu@23.1.1': + resolution: {integrity: sha512-tWDHJII8+aHweTzHelf5dGM6qGNmHbAPhCc3jrtrM0uE+UD/wt2Dpq7H3086Iyia9M9jGM9sYpuD/6W6WAFAMA==} cpu: [arm64] os: [linux] libc: [glibc] - '@nx/nx-linux-arm64-musl@23.0.1': - resolution: {integrity: sha512-9lyhxRNBgNYwHt6paq0OLzoKNoEGF5LnNW2YYrgFY8Cjtsg/Q4pcfZ1vB5o9FX9OmUgUQs3t2d4tU8YDukRUWg==} + '@nx/nx-linux-arm64-musl@23.1.1': + resolution: {integrity: sha512-t7iVMZ7Cj3LmPcfaYt9KOkojpuC5XRmtZ/0G+NBMA2GuRhCVbzpOgUCob0nQMV2TrTwn5oAWJeDc4xLni+oteg==} cpu: [arm64] os: [linux] libc: [musl] - '@nx/nx-linux-x64-gnu@23.0.1': - resolution: {integrity: sha512-kVszY2xRyyrCXgdCdM1qG1WUhDjNPZxtdWq86a0TyIRJjfJTP9NHqpyhmvj9c2RdZxKVWHotx6fBJzY6Vn2ZrA==} + '@nx/nx-linux-x64-gnu@23.1.1': + resolution: {integrity: sha512-stuCayctOt/4AFvxKYgGTPluUc0HW7DcyTz9yeTMl/zj0+FENEr8RCTjInD0Q5qVGzYphma6SssVSh432w5agw==} cpu: [x64] os: [linux] libc: [glibc] - '@nx/nx-linux-x64-musl@23.0.1': - resolution: {integrity: sha512-co71K2n4zcS1SYR8EBRlCvIko7M1YycO2tZL0nrCrga87AF5dzCwx+wEclpyCR/4tNOY3FrACk4gIkVskh3CdA==} + '@nx/nx-linux-x64-musl@23.1.1': + resolution: {integrity: sha512-cZSUqGV+iHda39W91BNKSysSu6OFfR6M4ViQBcMtbwq3ce19gDr2f23MqGZEQZtaD/eSQ9UNEhx09nhrdYxWDg==} cpu: [x64] os: [linux] libc: [musl] - '@nx/nx-win32-arm64-msvc@23.0.1': - resolution: {integrity: sha512-7oma7iy5fbnn+x5AP7SFGMuleAA2R5RZm26dn+faikyQ4PXjoRAikWJJNiOWAeCA0BaMAeVedI6fJeAsVeDUKg==} + '@nx/nx-win32-arm64-msvc@23.1.1': + resolution: {integrity: sha512-iDlYbFHgTYV5lg1ypEt+LAj86o/uyy6vR0ha5pcUs4FqXzQgy14lOeyRod/EZs9Er3DIyJlEi/rpEvaP99/Hag==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@23.0.1': - resolution: {integrity: sha512-TE/wvBa2cpkVXmk/AXUQAneong4JReS2hyNpAUONKG1yXU7TDKe0wvn1xQXxAbyspudT9NuCnVtpVuEkRz8S+Q==} + '@nx/nx-win32-x64-msvc@23.1.1': + resolution: {integrity: sha512-UD21AHWJ2PEA+PuANPCt+lj3kYpAzYNq+bm4VCbrt3KZd7zDPas0ns85UIhfrhsNiSmYzjWz2/JDk2S3cA6lGw==} cpu: [x64] os: [win32] @@ -6766,8 +6794,8 @@ packages: cpu: [arm] os: [android] - '@oxc-parser/binding-android-arm-eabi@0.137.0': - resolution: {integrity: sha512-KDs+0VPdEmasOkpuJHW9V5WCF+cvYdMQv2Jd+aJXt+cxIx12NToRQRbXaRwUEDsZw+/jMk81Ve8ZFbjUkJTOwA==} + '@oxc-parser/binding-android-arm-eabi@0.142.0': + resolution: {integrity: sha512-ZiRGDutGsv1G6bL/ozy/koC0Sv39T1DqyoC4KD1DOy9ZoACm1O5UWhEK2c02Qdk+4lfLVkvFa/mQ0fm/4h1BtQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] @@ -6778,8 +6806,8 @@ packages: cpu: [arm64] os: [android] - '@oxc-parser/binding-android-arm64@0.137.0': - resolution: {integrity: sha512-WhALNzfy3x/RfC6bsqX+csavuUY0yHHE7XfgPE5M542uhoBZUUoGTPG+nkMbGoG4+gcfss5s7urMyn5QBHu0sw==} + '@oxc-parser/binding-android-arm64@0.142.0': + resolution: {integrity: sha512-WZkvGRLNQTz8lR9zP5nLjUdlroRCopBu3g9zF1p/laE6DzT1UbQo8Rdz5MWhaJUPYg/6gp+jo7HUgsyKaN1FtQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -6790,8 +6818,8 @@ packages: cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-arm64@0.137.0': - resolution: {integrity: sha512-bFPr5hgmNMOMoyPTGtdsK4Ug21RovIPojRMgDDhSp1LtCnc/DkLwGONKjgRjszg677RlGnkYSviQ8hHaUPOVYA==} + '@oxc-parser/binding-darwin-arm64@0.142.0': + resolution: {integrity: sha512-l4khS8LQOOVYsGRVARo1gSaCT/aBSceUVXgtovWc2+drnxVuDr082WA3OCHVdVzIz5JIrP/y9CWsSKxBDNmYGg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -6802,8 +6830,8 @@ packages: cpu: [x64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.137.0': - resolution: {integrity: sha512-CL5dMm1asqXIDZHg14FLxj3Mc36w8PI7xCWh1uA4is6z8g2XrIILoTcQYOxDbwzuk34RDPX5IAGUxZr6LA9KAg==} + '@oxc-parser/binding-darwin-x64@0.142.0': + resolution: {integrity: sha512-QBsNF3nqlXmcH2B1YOPqQYmCJoy4HuIjUxGbBO/k5JAJUl68ghU2psRY2zPk+RyBaWqKP/qfL4oaFgEMCdwskA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -6814,8 +6842,8 @@ packages: cpu: [x64] os: [freebsd] - '@oxc-parser/binding-freebsd-x64@0.137.0': - resolution: {integrity: sha512-79h8rYGnSlKPGWo7mHr2ixO6ea7aW8B0CT965SZ8SLbNnCOH5aOYBTeVXUY6eMvEaiLyWr8Skuiugr5pDYgLGw==} + '@oxc-parser/binding-freebsd-x64@0.142.0': + resolution: {integrity: sha512-b7Q7m4Cqc6XqNhri3R+QhU+GVy646Pn+bkdhrDdWym/Fdi0ZUa+d73H9dm5H91JtbtAQ/z1d8XKMW3oOV8a4tQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -6826,8 +6854,8 @@ packages: cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-gnueabihf@0.137.0': - resolution: {integrity: sha512-ASgmlSimhGyr0lksgVIo6hibz1obnDq4qJbiMX/AzltfgPnanRrzG1Q+23g8ljOHOjv6dsznkUuCYL3gg0sY1Q==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.142.0': + resolution: {integrity: sha512-3riVS5IhdH3uCZj1Y9ftDQlR0dvLsIlw/edrRqk8JhgNd5K0XSs+UBtgh50N13CAlW9/TXj6sVGXaKNBocd0Yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -6838,8 +6866,8 @@ packages: cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.137.0': - resolution: {integrity: sha512-AU2J9aa22Sx32wRGnDjybOU9TQXXQUud5sdUi+ZB0XxwM8aToWLweV+yA0wlQm0yIUVqljquqoHCYEq9II8gJQ==} + '@oxc-parser/binding-linux-arm-musleabihf@0.142.0': + resolution: {integrity: sha512-NmXUOpgpTSkhl795TiXmWppTwmSJ92RC1qvD6e4XOF+slgmo3e6Ah+kEu+6AN8s7NAOEwqGmir58MgSQSWmBSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -6851,8 +6879,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-arm64-gnu@0.137.0': - resolution: {integrity: sha512-GdEtiG89yMr7XkUGxifgodXEEm2f+xW2f9CpDjlgAnBOwhTmrpQMvhOGobLVKUyzf/qHBXW16smk5zbF3nZU6w==} + '@oxc-parser/binding-linux-arm64-gnu@0.142.0': + resolution: {integrity: sha512-gc0EXsKtXgerujmU2Bql3u1L1HsSQ2774R83idq/FoNMPVV/RY/1ErFsvnit7KoiP/sLvzQixeUo4Ut0ic0wmw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -6865,8 +6893,8 @@ packages: os: [linux] libc: [musl] - '@oxc-parser/binding-linux-arm64-musl@0.137.0': - resolution: {integrity: sha512-EGJ+Bs8iXx8KBH8DQ5BLoEm5lnHaYjlh4/8j8vFhrr/6z4tqONy5BZDzLpKmmNWlN6Hlc5r8YOuBVHqZ9vRFEQ==} + '@oxc-parser/binding-linux-arm64-musl@0.142.0': + resolution: {integrity: sha512-F2XvmWSE0uWpie+jHKKIFgdVOe9ypGhkEZxKx5DuW215K6cbAC274yYaPkcM7EqY4Df3Weyhpcz3lsURyH2LVg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -6879,8 +6907,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-ppc64-gnu@0.137.0': - resolution: {integrity: sha512-vzFUQENy/fnbSe5DZWovq6tIBc1uhuMztanSW6rz1e9WdQE4gHwYuD7ZII6JnrJifd1R3RSoqiZbgRFlVL2tYQ==} + '@oxc-parser/binding-linux-ppc64-gnu@0.142.0': + resolution: {integrity: sha512-wLMbT21U/QxknQsk+VvNF0b9D2/aGWhcaQQQ+VYlE8FwD5+GoWZIPPXNzyHmkYyhm0KB3itL+TBavjMatqNnYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -6893,8 +6921,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.137.0': - resolution: {integrity: sha512-SfVI14HBQs9gtLcUD5hTt5hsNbdrqSUNg9S8muN+LhVQ5nf1WwH3hAoK6B9NKgdYgWAQSXFXGiiBedQ4r/BKuw==} + '@oxc-parser/binding-linux-riscv64-gnu@0.142.0': + resolution: {integrity: sha512-+G8F/4ckwT7FCJV4H2bt09xEzJbjNCfuL4Sp1AYNaFtFMVtgIGMuJlteT82U+K0UIZ/DzAR/LDlMFnEuajG7Kw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -6907,8 +6935,8 @@ packages: os: [linux] libc: [musl] - '@oxc-parser/binding-linux-riscv64-musl@0.137.0': - resolution: {integrity: sha512-e7Ppy4FCIFNQxT/ikSeIWFoQ0l+N9vgtRBtLcyZXeolTzApyVoPqEXsYPrcdM/9i0Bwk8knvYd37vaEMxHyi6g==} + '@oxc-parser/binding-linux-riscv64-musl@0.142.0': + resolution: {integrity: sha512-hTsHtTLxMAfCo+rpF5K3qZJKW2NpPN/CHd4mYB3y7XlSdspHkd2gehDIofP64AacA9nWQw2tY3O7wR6UY8IVOA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -6921,8 +6949,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-s390x-gnu@0.137.0': - resolution: {integrity: sha512-Bho5qFwdhqsIFR7gipYEUlqvi3SRrY8sugxXig380MIaakBB1PyU9+7dBiBVScfImTNWhijUxdBwqrprGdq5WA==} + '@oxc-parser/binding-linux-s390x-gnu@0.142.0': + resolution: {integrity: sha512-6y7qYY3TCUDYjqswImdTGl92y+KA/80twALegQPN27kfY+bG7Ib1+L3jbmrCZQx6wrVnai9IPsEZp07I0hx7JQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -6935,8 +6963,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.137.0': - resolution: {integrity: sha512-36mGWtg7PyFzjJwGDkH6/F4o2nIDEoKXLPr/X/lwqklkomQwJJt1I5GJVmGhovUEmgPK5WAeAZMqlFCehwiy9Q==} + '@oxc-parser/binding-linux-x64-gnu@0.142.0': + resolution: {integrity: sha512-i69kAWU+2LgoH5bR+zWiiu+UzAw7Oxkwv7COeJTeY19pn4e70nKQcr9Pm6cL2Z0Z54d+gl9qADlK/0yyuCPiBA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -6949,8 +6977,8 @@ packages: os: [linux] libc: [musl] - '@oxc-parser/binding-linux-x64-musl@0.137.0': - resolution: {integrity: sha512-/Jqx6+N7A44n2BdvUr7pXhVr2vFjs6WGH3unZRczwrfiH0H1zY0QwKQMG/dtRiTlKGDKGukznPT8lx84/oEsZg==} + '@oxc-parser/binding-linux-x64-musl@0.142.0': + resolution: {integrity: sha512-4SQs678MmjYVrmhAgCWD4o0vpaFszXw9xLX5p2Z9MMFcltxiLkA88wQjh80YHjPrXtpyZ2CWI5m+1yNKM0m2Pw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -6962,8 +6990,8 @@ packages: cpu: [arm64] os: [openharmony] - '@oxc-parser/binding-openharmony-arm64@0.137.0': - resolution: {integrity: sha512-9Uj0qHNNl+OgT1UTGwF7ixIXU6T1u2SbMidmgPy/h1h/fl2gRS6YpAxxY1gwHofcWjoTwkoMFd8xs5Vuj6GOFA==} + '@oxc-parser/binding-openharmony-arm64@0.142.0': + resolution: {integrity: sha512-YHpx9N7Ln3a++Tc8rv+H7mrK1zyJQOAwCFg8LZ3lTs1T5afGWeZrLPhPT9HLnIwSjCyJqPWVMIrMxbjcmBr2oQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -6973,8 +7001,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@oxc-parser/binding-wasm32-wasi@0.137.0': - resolution: {integrity: sha512-gW2vfkytNGgMVADiuzdvOfw0mWG9za20F/1fCJsif5aBMAvWJTSbpIXbIe0XkOe0VENk+PadpQ7cZgUy2sUJcA==} + '@oxc-parser/binding-wasm32-wasi@0.142.0': + resolution: {integrity: sha512-3pLDyY3+oogW73RM5uehNgAiR/Xfb7fvO2Q1Z1gIqZ2+50XDVQmBVlRkHXZTU4gKnQHpwETNsYQVsJ3joVB2iA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] @@ -6984,8 +7012,8 @@ packages: cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-arm64-msvc@0.137.0': - resolution: {integrity: sha512-x+pFANF0yL5uK/6T7lu6SlR5qid6sp//eZXKLq5iNsIE+EQg6EaS8/wsW7E91nXXjpnPhSoMOHXShSVhGRdn8w==} + '@oxc-parser/binding-win32-arm64-msvc@0.142.0': + resolution: {integrity: sha512-Had/VeVY28Oyb0K+Q4FV8KCzoBycIh93oDK6pCbya9lkzdq+ikMHMgBubsdqqlybjJmQRawCQRrnBRHyQwYvcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -6996,8 +7024,8 @@ packages: cpu: [ia32] os: [win32] - '@oxc-parser/binding-win32-ia32-msvc@0.137.0': - resolution: {integrity: sha512-sQUqym80PFi6McRsIqfJrSu2JrSClEZIXXD+/FjAFoULEKzOPsldIdFBG96xdX8aVMzCNQ9792FPx3MfkEIrFA==} + '@oxc-parser/binding-win32-ia32-msvc@0.142.0': + resolution: {integrity: sha512-GGi3+YphVHavvgs6gum2UXoNCqzHAmPt/nXkn8ZQZstV2Q1qZD1Mn8fz/nWrDkefHQtrG/+1/XrbMxsBTo6Svw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] @@ -7008,8 +7036,8 @@ packages: cpu: [x64] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.137.0': - resolution: {integrity: sha512-2AsevxlvNN4WKxpEn3RtqD5zbqMaXF+T7JXblsP4gVuY+vC9dXS4ED/PwfRCliFqoeisYS3Iro4DHzxr0TEvVA==} + '@oxc-parser/binding-win32-x64-msvc@0.142.0': + resolution: {integrity: sha512-Ny/Wv4Us1LGC/ljwNTp+Hx3r/pH15EFfeDF0p+n898gt+TtRd6C9SccHcuUhDiNTb8s5tt7jdeAMDRQZ4Vq6hg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -7017,115 +7045,218 @@ packages: '@oxc-project/types@0.127.0': resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} - '@oxc-project/types@0.137.0': - resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} - '@oxc-project/types@0.138.0': resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==} + '@oxc-project/types@0.142.0': + resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==} + '@oxc-resolver/binding-android-arm-eabi@11.21.3': resolution: {integrity: sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==} cpu: [arm] os: [android] + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==} + cpu: [arm] + os: [android] + '@oxc-resolver/binding-android-arm64@11.21.3': resolution: {integrity: sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==} cpu: [arm64] os: [android] + '@oxc-resolver/binding-android-arm64@11.24.2': + resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==} + cpu: [arm64] + os: [android] + '@oxc-resolver/binding-darwin-arm64@11.21.3': resolution: {integrity: sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==} cpu: [arm64] os: [darwin] + '@oxc-resolver/binding-darwin-arm64@11.24.2': + resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==} + cpu: [arm64] + os: [darwin] + '@oxc-resolver/binding-darwin-x64@11.21.3': resolution: {integrity: sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==} cpu: [x64] os: [darwin] + '@oxc-resolver/binding-darwin-x64@11.24.2': + resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==} + cpu: [x64] + os: [darwin] + '@oxc-resolver/binding-freebsd-x64@11.21.3': resolution: {integrity: sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==} cpu: [x64] os: [freebsd] + '@oxc-resolver/binding-freebsd-x64@11.24.2': + resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==} + cpu: [x64] + os: [freebsd] + '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': resolution: {integrity: sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==} cpu: [arm] os: [linux] + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==} + cpu: [arm] + os: [linux] + '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': resolution: {integrity: sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==} cpu: [arm] os: [linux] + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==} + cpu: [arm] + os: [linux] + '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': resolution: {integrity: sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==} cpu: [arm64] os: [linux] libc: [glibc] + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@oxc-resolver/binding-linux-arm64-musl@11.21.3': resolution: {integrity: sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==} cpu: [arm64] os: [linux] libc: [musl] + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': resolution: {integrity: sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==} cpu: [ppc64] os: [linux] libc: [glibc] + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': resolution: {integrity: sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==} cpu: [riscv64] os: [linux] libc: [glibc] + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': resolution: {integrity: sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==} cpu: [riscv64] os: [linux] libc: [musl] + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': resolution: {integrity: sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==} cpu: [s390x] os: [linux] libc: [glibc] + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@oxc-resolver/binding-linux-x64-gnu@11.21.3': resolution: {integrity: sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==} cpu: [x64] os: [linux] libc: [glibc] + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@oxc-resolver/binding-linux-x64-musl@11.21.3': resolution: {integrity: sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==} cpu: [x64] os: [linux] libc: [musl] + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==} + cpu: [x64] + os: [linux] + libc: [musl] + '@oxc-resolver/binding-openharmony-arm64@11.21.3': resolution: {integrity: sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==} cpu: [arm64] os: [openharmony] + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==} + cpu: [arm64] + os: [openharmony] + '@oxc-resolver/binding-wasm32-wasi@11.21.3': resolution: {integrity: sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': resolution: {integrity: sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==} cpu: [arm64] os: [win32] + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==} + cpu: [arm64] + os: [win32] + '@oxc-resolver/binding-win32-x64-msvc@11.21.3': resolution: {integrity: sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==} cpu: [x64] os: [win32] + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==} + cpu: [x64] + os: [win32] + '@paralleldrive/cuid2@2.3.1': resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} @@ -8053,54 +8184,54 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@secretlint/config-creator@13.0.2': - resolution: {integrity: sha512-wEHE/x7jeaWnDqVhzUg3qLsnl3NOQTA2fVnxwc0Z7dn3SOSh5sEKFr6xTp/LhZxyuHnKJltlcF085UDUFOoqYQ==} + '@secretlint/config-creator@13.0.4': + resolution: {integrity: sha512-rSYBD36alOtDch10H2fOgiCVMyOrn4IfzICnoBg6IeValIESj7iz22GVC8hEbm3WLBwKVBZ3RjK2SYOteh7Bkw==} engines: {node: '>=22.0.0'} - '@secretlint/config-loader@13.0.2': - resolution: {integrity: sha512-r0ZVJ3oGUwWqoFPwhR9RK/fnp358TImaa72UhrBdBiuzMvAcPtE6EbnAYhbj0Yr5QS6ns+GI11jV344MLqkhTg==} + '@secretlint/config-loader@13.0.4': + resolution: {integrity: sha512-K6jq7IDqlGdOWKqfiFiKSiWmMHryAIwnFs84u5A5rjWVvrkrHYjNqNRyk6iO7hXM/7cXkxO8Mm8zb77hF1HT1A==} engines: {node: '>=22.0.0'} - '@secretlint/core@13.0.2': - resolution: {integrity: sha512-15vg+zCmjQuDFVoOPNt0TyEu0Z95eir2MO19++wG82yM/vbPtFu/m9qd6oh54ZOBXgMcchdGDTxMwJNDnCLxcA==} + '@secretlint/core@13.0.4': + resolution: {integrity: sha512-Wv49KcI5XX6xjLR1wxyjORA15PtMb5ar/M27ShimVudaSi6iAM04QCA5Ozx+uEahfHNefUUKbjKGpy/9pxuW7g==} engines: {node: '>=22.0.0'} - '@secretlint/formatter@13.0.2': - resolution: {integrity: sha512-DoU+aEsqPQxiWTQBNkTvQDmGTWB+TQS4UC6XEliWYv4KHpMV81O52jOE7XKS7QUoDMD4dbjh5wUTAgNO1dpzEg==} + '@secretlint/formatter@13.0.4': + resolution: {integrity: sha512-si7tXQeOIMh/Wqu7lhXnutbnMheGXWGVivbQPhoUR9eMJwT32gTII7Bh3t30zPsUop+SGr/SIc+bPmKehPKb9g==} engines: {node: '>=22.0.0'} - '@secretlint/node@13.0.2': - resolution: {integrity: sha512-xAK+0INjjMASH5guHLSozl++6kDyeOTy4FNC6dhPA7ieebCmHe/+QiAsr4KP9yDRZoh/uRmEno2NMDy5lgQpkA==} + '@secretlint/node@13.0.4': + resolution: {integrity: sha512-4HmD9yfA9etThrxhDbyTMBaHj556uKxrS+tOBIkP5AAnB6sXk4mmA9fjKDTrk8dkrpg7S/g2Uds3AKb+yeUNnA==} engines: {node: '>=22.0.0'} - '@secretlint/profiler@13.0.2': - resolution: {integrity: sha512-vGaLZCoi9KewOF+sM0iIEBviWaH9mls1HmQFBgEPq4fnvmVO4PfKIkVr4CcAFm3Msg4NjzFE2RBAGwRR+5HEmQ==} + '@secretlint/profiler@13.0.4': + resolution: {integrity: sha512-T2hSyZmJrQbGAe+Vl9AGNlMnoB0MP6m2BLh7EH80QcesvNM2t0pCzdiBvQ/yCe76w6/gZNpHlrSVayUeT43qVw==} - '@secretlint/resolver@13.0.2': - resolution: {integrity: sha512-Ko50V0P3YAtEO20xBTczOzguBVk6+taSqkoAPHoOSdsTsSq1gzeYggY1UC8vVEHPGyRp/mb2QOuwIShdJZ8JFg==} + '@secretlint/resolver@13.0.4': + resolution: {integrity: sha512-+s4fRFctBlAbHu4H8lRLj/e6dyDIGpIM2QLAJWgaMJUn9bFxetjRBQEv/HD2U4ohpGHYURLMkDcnS3iZdSTmGg==} - '@secretlint/secretlint-rule-pattern@13.0.2': - resolution: {integrity: sha512-ntXHndXRJLB4TEt9bGY+dKH4naOq3mHM8h4hwftg/HA1EyrmuRN8+6qPUbBzsJvZWmMd7CZBBBU7DsNERdMqCQ==} + '@secretlint/secretlint-rule-pattern@13.0.4': + resolution: {integrity: sha512-Z/K7EJS56QDkbnU8WwKVa4yI1i06tBQhPBfJFencpM8UxLsXVnaHonyGF9P891vAaYB7hNx+F/ekw9bLKx8egg==} engines: {node: '>=22.0.0'} - '@secretlint/secretlint-rule-preset-recommend@13.0.2': - resolution: {integrity: sha512-D03Kw51qOgffj9zNlJFZUarVmP8zGcCZNi7A14+vZtHskbbBPEsS/f09idb48rrlMSaRMBN29IkqfbmPyL9xtw==} + '@secretlint/secretlint-rule-preset-recommend@13.0.4': + resolution: {integrity: sha512-Nbcr7tvyKuRF4BKh7RQSCEOaif4gFPH/qjK2ajcoUDGL7HAY/C6PzcsmVR1Y0qQCRqrBuMuXn1onXE+wxNNNsw==} engines: {node: '>=22.0.0'} - '@secretlint/source-creator@13.0.2': - resolution: {integrity: sha512-tSooHad8QL+lqHP88zH9F8GMoR7bHUqPja5M/QnNHGnvOq/8OT1V8t1uigm6jlD03oJWNLwwF8QeHIedWKJ13g==} + '@secretlint/source-creator@13.0.4': + resolution: {integrity: sha512-YfVVY7GHbHV6CN/tLIf1BGiONVjX2fvmJyvCv2MhonUiWtLPVU4fnOQIrWMLFakeRJ/GVoV8FfqvPW3jnUHfVA==} engines: {node: '>=22.0.0'} - '@secretlint/tester@13.0.2': - resolution: {integrity: sha512-4336ry9t/LHhOjL1nQqzaVMwVS9NNnWhZoIOCavr1QU2ICDeizslUuucrVMOzM6ptc1IRx1xk8PG2qUiOOwf0w==} + '@secretlint/tester@13.0.4': + resolution: {integrity: sha512-P/2jho4nLTLWUeFXssoOgeRHO9c2+47xxEdk2CMCzwU2VgVELr8amsXt/aHo4TF+hRM638qUsb0Co+8Tq3E1fg==} engines: {node: '>=22.0.0'} - '@secretlint/types@13.0.2': - resolution: {integrity: sha512-cAZjr6ZTKgSuJMLyTGDrUEtK3XEZa+JStIkD+DmdkT32VGAN+dQJiYr1So3XJopsKSrqhP5kjZKT8WWtftZIpQ==} + '@secretlint/types@13.0.4': + resolution: {integrity: sha512-on/DivRDZEFzRD2pZJO0wkIL+AvEY+KOoZLPCWcz4pjZnJ4NzMuHQjvTJc9KY0yht+ugcYg9AmtOUzpEk31IWA==} engines: {node: '>=22.0.0'} - '@secretlint/walker@13.0.2': - resolution: {integrity: sha512-9GtWeTb763Ilr/nbRzdFidfZTBtbNEsz/BKrilgqLpKR9EqSWe9eYWDQaLIYb4PddIhwOgHuahRrX2BYATNcLQ==} + '@secretlint/walker@13.0.4': + resolution: {integrity: sha512-ufAWro6oqdTkZYbMXHXlW56IAO+1YhKLwIDTqMYSzDna6bJdph2FXqm2IdnKTd4TNbdVficp1w7GoBm4JHxddA==} engines: {node: '>=22.0.0'} '@selderee/plugin-htmlparser2@0.6.0': @@ -8915,23 +9046,24 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@textlint/ast-node-types@15.7.1': - resolution: {integrity: sha512-Wii5UgUKFEh9Uv6wbq1zr4/Kf+dtjiUuzPrrXzKp8H+ifkvKNzi23V4Nz+6wVyHQn5T28AFuc8VH8OtzvGYecA==} + '@textlint/ast-node-types@15.8.0': + resolution: {integrity: sha512-5CiH9COYmovWmExQgs7763DzX6Gy9zjkjJ7JxCC95wyTcjwQn/8poNF6fv3qzRlmx8CRRde8DHr9FcgAAiPzgw==} - '@textlint/linter-formatter@15.7.1': - resolution: {integrity: sha512-TdwZ/debWYFD05K3CcoHtwvnCrza29wZxD+BjDTk/V5N7iRqkK1dTTHSD4A8AIgROLiDkHJmIKQbasbmsg8AvA==} + '@textlint/linter-formatter@15.8.0': + resolution: {integrity: sha512-+oU3A235NATv6Lzi4xa4kJ65PuNJlIxesaO4AvDhDWA9FWm7y4XKWaoQCW1esgaQQ6dwnUiFKArQ8TcJ86mC4w==} + engines: {node: '>=20.18.0'} - '@textlint/module-interop@15.7.1': - resolution: {integrity: sha512-Jg+sQW2L/cRJypk59wtcMUVVpt8vmit5ZMT3gUnFwevP3A6Qp1HfOtUy9ObT4hBX3lOSGT/ekcCDxR1pL7uH1g==} + '@textlint/module-interop@15.8.0': + resolution: {integrity: sha512-rt+OR1WYGoLOY8HkA/aBPrqufF6yUUEsKEAh7XohTsT3lp9IyZFT6zOIbjul9P4FAzsmSPkcrYjVx3Bz/IUfkg==} '@textlint/regexp-string-matcher@2.0.2': resolution: {integrity: sha512-OXLD9XRxMhd3S0LWuPHpiARQOI7z9tCOs0FsynccW2lmyZzHHFJ9/eR6kuK9xF459Qf+740qI5h+/0cx+NljzA==} - '@textlint/resolver@15.7.1': - resolution: {integrity: sha512-8XnO0pgF6mXnm41VvWmBbEIdGPhiCUt31uLZkOis1ECeg/1SoUcIT6Mx/F0e1rukq8l0UlOSeY9a31CsvRMK0g==} + '@textlint/resolver@15.8.0': + resolution: {integrity: sha512-E88tzfX3K8Jykk+38aJ9cy8RquD8ABVOPTO2rFEESq0wcg8x6/ypdAS8ZgR7OKiGqlRF0hkO/m5PbQwVfKM3VA==} - '@textlint/types@15.7.1': - resolution: {integrity: sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A==} + '@textlint/types@15.8.0': + resolution: {integrity: sha512-Anhc6y5736YIsvqae0U6k0YmB2M/QVHkEeOv2aydAn/WIkdI69dCOiDbe3/+RagS3qstFTSFWJzNRA2lUjv19w==} '@tinybirdco/charts@0.3.0': resolution: {integrity: sha512-nL/SswRPO8VBOjRBxpJ9o4O6dWCgvs2xcsYiucA7AR4dTTewydTy+2bPFBxkubuX/LFce9FLOGWwFy8yOIi37g==} @@ -10089,6 +10221,11 @@ packages: '@volar/typescript@2.4.28': resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -10336,6 +10473,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -10701,9 +10843,6 @@ packages: resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} engines: {node: '>= 6.0.0'} - axios@1.16.0: - resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==} - axios@1.18.1: resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==} @@ -11246,6 +11385,10 @@ packages: resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.8: + resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} + engines: {node: 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -11890,10 +12033,6 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - cli-progress@3.12.0: resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} @@ -11914,10 +12053,6 @@ packages: resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} engines: {node: '>= 0.2.0'} - cli-truncate@5.2.0: - resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} - engines: {node: '>=20'} - cli-width@2.2.1: resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} @@ -13106,10 +13241,18 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + default-browser-id@5.0.1: resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + default-browser@5.5.0: resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} engines: {node: '>=18'} @@ -13125,10 +13268,6 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -13160,8 +13299,8 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - dependency-cruiser@18.0.0: - resolution: {integrity: sha512-51Q7wbHoP3/GZrENpINnvKE/xfBsj41NVKarqu5Fff/kmqB/bg0GpiD5bOBwj0+CVunxPGzO80uTdYoy/d4Rsw==} + dependency-cruiser@18.1.1: + resolution: {integrity: sha512-qK29b8kBW60KI1Qvf2w93823AE55lJuXV21iUw9tAMiZudgA95mR2j/EzqsploqS8d8uavTzn1IVoKDSilLD4g==} engines: {node: ^22||^24||>=26} hasBin: true @@ -13977,6 +14116,10 @@ packages: resolution: {integrity: sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.24.5: + resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} + engines: {node: '>=10.13.0'} + enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -15065,6 +15208,9 @@ packages: get-tsconfig@4.14.0: resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@4.14.1: + resolution: {integrity: sha512-Dz/6HxkrxgNehhxLVeyv8sad9UzF2xBVeaKBQNDfJ5XiSXmp2gTR0eO0RWiT2NCKS5aGP9jjkOMggTN90qU50A==} + getopts@2.2.5: resolution: {integrity: sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==} @@ -15608,6 +15754,10 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + engines: {node: '>= 4'} + image-extensions@1.1.0: resolution: {integrity: sha512-P0t7ByhK8Jk9TU05ct/7+f7h8dNuXq5OY4m0IO/T+1aga/qHkpC0Wf472x3FLdq/zFDG17pgapCM3JDTxwZzow==} engines: {node: '>=0.10.0'} @@ -15920,10 +16070,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@5.1.0: - resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} - engines: {node: '>=18'} - is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} @@ -16158,6 +16304,10 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + is-wsl@3.1.1: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} @@ -16482,6 +16632,10 @@ packages: resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + hasBin: true + jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} @@ -16731,8 +16885,8 @@ packages: tedious: optional: true - knip@6.24.0: - resolution: {integrity: sha512-PokLlgeEjLh1rAsB7ts+52wZ37HBr1nDhE6NNONwEaXdeZGCJOkP7ZlIAI2Gtu8xohquzTWy75bc/1diI9shQw==} + knip@6.32.1: + resolution: {integrity: sha512-mIiIHMTJVUgSlz0mxEgPt7wg8DmfbCp1Txqab3WpbMCJF7YHvHtC9jeAHHXfISMl72N8WzhyG71SQlaqCOGZtg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -16897,8 +17051,8 @@ packages: linkifyjs@4.3.3: resolution: {integrity: sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==} - lint-staged@17.0.8: - resolution: {integrity: sha512-B2P/d+jVW0UXOQ0MVMLrB/9ydA1P+zz6jYfdrbbEd9ur3S2rcbduFWKiUCC02Sm5hbC8nrm7y24WuYMG54HfxA==} + lint-staged@17.3.0: + resolution: {integrity: sha512-woZS3vNe3UKqBaLPvbLOtKRY4tLANpWQhom12MGWqC8Mh1lCOO+WgSwmX2amjJAqTY9BkXYW87fCUH5H9Ph6xw==} engines: {node: '>=22.22.1'} hasBin: true @@ -16914,10 +17068,6 @@ packages: peerDependencies: liquid-fire: ^0.34.0 - listr2@10.2.1: - resolution: {integrity: sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==} - engines: {node: '>=22.13.0'} - livereload-js@3.4.1: resolution: {integrity: sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==} @@ -17155,10 +17305,6 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} - logd-console-output@1.3.0: resolution: {integrity: sha512-Aau5xxpDXWBRIwl6zgConqmyNRBFq8VoQbzpQJjp9QVfrEtMgWUMbP2CUF9lCmMg0d2TQ79tEJA83+uQY36WAA==} @@ -17205,6 +17351,10 @@ packages: resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} engines: {node: 20 || >=22} + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -17700,10 +17850,6 @@ packages: resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} engines: {node: '>=8'} - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} @@ -18372,8 +18518,8 @@ packages: nwsapi@2.2.24: resolution: {integrity: sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==} - nx@23.0.1: - resolution: {integrity: sha512-HnK0Ke8FcPeVQffYm1oyzkLNn7khrI8SeDeC3iyLhw/UEMCB24hjI5JSs6Amlyeb0/GaeiuQuts8NkQKd/NpGA==} + nx@23.1.1: + resolution: {integrity: sha512-oDdW2JgVllgfyyN6OqlRzeABw0QrlXdxyl9rtOUMMXQzlkpYA1RTs8jinJCe6QSo7aEn0dZ+Ar7dd09hMudBsg==} hasBin: true peerDependencies: '@swc-node/register': ^1.11.1 @@ -18467,18 +18613,14 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} open@10.2.0: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - optional-require@1.1.10: resolution: {integrity: sha512-0r3OB9EIQsP+a5HVATHq2ExIy2q/Vaffoo4IAikW1spCYswhLxqWQS0i3GwS3AdY/OIP4SWZHLGz8CMU558PGw==} engines: {node: '>=4'} @@ -18543,13 +18685,16 @@ packages: resolution: {integrity: sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-parser@0.137.0: - resolution: {integrity: sha512-yFImD+WLElJpLKy8llG1qe4DCmMsL18peRp8XP1JKfig/gISbJkglnpDtX2aTmAn10kZF7164HbN2H8QPsXxGg==} + oxc-parser@0.142.0: + resolution: {integrity: sha512-kKR+jPiRJYJDexVoziIg/FVGvr1fT1FZSSJOk6tVoMKKSlsf1Cso+cgGCJkOEDWOP174vRntCPFKg+AS7InWvw==} engines: {node: ^20.19.0 || >=22.12.0} oxc-resolver@11.21.3: resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==} + oxc-resolver@11.24.2: + resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==} + p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -18622,8 +18767,8 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} - p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + p-map@7.0.6: + resolution: {integrity: sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg==} engines: {node: '>=18'} p-reflect@2.1.0: @@ -18873,10 +19018,6 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} - picomatch@4.0.5: resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} @@ -20405,10 +20546,6 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - ret@0.1.15: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} @@ -20424,9 +20561,6 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rgb-regex@1.0.1: resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} @@ -20511,6 +20645,10 @@ packages: resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} engines: {node: 6.* || >= 7.*} + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + run-applescript@7.1.0: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} @@ -20615,8 +20753,8 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - secretlint@13.0.2: - resolution: {integrity: sha512-veYNpVC+Yw9H/EWzdGyEsYHqCFXgKOinGEMbRffvnkHoWnE0CongrCnWXZJ1bkYmirlhemq/gkiOZ5zdHcHCQg==} + secretlint@13.0.4: + resolution: {integrity: sha512-OhNXAkLN/OAWWByVS/QcIzTwc/NkUJxzvVKvp5N8iAYNny7YdV/M321vfh8wh41tAB0UthYfahMRSPOfBXtbqg==} engines: {node: '>=22.0.0'} hasBin: true @@ -20652,6 +20790,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + engines: {node: '>=10'} + hasBin: true + semver@7.8.5: resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} @@ -20838,14 +20981,6 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - slice-ansi@7.1.2: - resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} - engines: {node: '>=18'} - - slice-ansi@8.0.0: - resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} - engines: {node: '>=20'} - slick@1.12.2: resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==} @@ -20861,8 +20996,8 @@ packages: resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} - smol-toml@1.7.0: - resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==} + smol-toml@1.7.1: + resolution: {integrity: sha512-PPlsspAZ4jbMBu5DMFhfUGDQLu/vrL4SyBROVS37x8ynnVmFIs1VPBz1Co8Xks3TvpIaZXmU85y4DrQ+UyVFoQ==} engines: {node: '>= 18'} snake-case@3.0.4: @@ -21557,6 +21692,10 @@ packages: resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + engines: {node: '>=18'} + tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} @@ -21793,6 +21932,10 @@ packages: resolution: {integrity: sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==} engines: {node: '>=20'} + type-fest@5.8.0: + resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==} + engines: {node: '>=20'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -21881,8 +22024,8 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} - unbash@4.0.2: - resolution: {integrity: sha512-8gwNZ29+0/3zmXw7ToIHZtg6wK37xnniRUdBt7B27xZxaxfgR5tGMaGHT0t0dLtBV9fXE7zurh0s6Z1DHVjfWg==} + unbash@4.0.10: + resolution: {integrity: sha512-b7zoBQvpWp0vuN5q2vK2RRBR2SvuruQAs50DApdDveBSn3eSYd84IaHodFqQIMlvY9K2VnyBUEXgwOBuGU9GBg==} engines: {node: '>=14'} unbox-primitive@1.1.0: @@ -22664,10 +22807,6 @@ packages: workerpool@9.3.4: resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} - wrap-ansi@10.0.0: - resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} - engines: {node: '>=20'} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -24792,6 +24931,12 @@ snapshots: '@emnapi/wasi-threads': 1.2.2 tslib: 2.8.1 + '@emnapi/core@1.11.2': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.4.5': dependencies: '@emnapi/wasi-threads': 1.0.4 @@ -24812,6 +24957,11 @@ snapshots: dependencies: tslib: 2.8.1 + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.4.5': dependencies: tslib: 2.8.1 @@ -26098,6 +26248,13 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': dependencies: eslint-scope: 5.1.1 @@ -26145,34 +26302,34 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@nx/nx-darwin-arm64@23.0.1': + '@nx/nx-darwin-arm64@23.1.1': optional: true - '@nx/nx-darwin-x64@23.0.1': + '@nx/nx-darwin-x64@23.1.1': optional: true - '@nx/nx-freebsd-x64@23.0.1': + '@nx/nx-freebsd-x64@23.1.1': optional: true - '@nx/nx-linux-arm-gnueabihf@23.0.1': + '@nx/nx-linux-arm-gnueabihf@23.1.1': optional: true - '@nx/nx-linux-arm64-gnu@23.0.1': + '@nx/nx-linux-arm64-gnu@23.1.1': optional: true - '@nx/nx-linux-arm64-musl@23.0.1': + '@nx/nx-linux-arm64-musl@23.1.1': optional: true - '@nx/nx-linux-x64-gnu@23.0.1': + '@nx/nx-linux-x64-gnu@23.1.1': optional: true - '@nx/nx-linux-x64-musl@23.0.1': + '@nx/nx-linux-x64-musl@23.1.1': optional: true - '@nx/nx-win32-arm64-msvc@23.0.1': + '@nx/nx-win32-arm64-msvc@23.1.1': optional: true - '@nx/nx-win32-x64-msvc@23.0.1': + '@nx/nx-win32-x64-msvc@23.1.1': optional: true '@octokit/auth-token@6.0.0': {} @@ -26313,97 +26470,97 @@ snapshots: '@oxc-parser/binding-android-arm-eabi@0.127.0': optional: true - '@oxc-parser/binding-android-arm-eabi@0.137.0': + '@oxc-parser/binding-android-arm-eabi@0.142.0': optional: true '@oxc-parser/binding-android-arm64@0.127.0': optional: true - '@oxc-parser/binding-android-arm64@0.137.0': + '@oxc-parser/binding-android-arm64@0.142.0': optional: true '@oxc-parser/binding-darwin-arm64@0.127.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.137.0': + '@oxc-parser/binding-darwin-arm64@0.142.0': optional: true '@oxc-parser/binding-darwin-x64@0.127.0': optional: true - '@oxc-parser/binding-darwin-x64@0.137.0': + '@oxc-parser/binding-darwin-x64@0.142.0': optional: true '@oxc-parser/binding-freebsd-x64@0.127.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.137.0': + '@oxc-parser/binding-freebsd-x64@0.142.0': optional: true '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.137.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.142.0': optional: true '@oxc-parser/binding-linux-arm-musleabihf@0.127.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.137.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.142.0': optional: true '@oxc-parser/binding-linux-arm64-gnu@0.127.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.137.0': + '@oxc-parser/binding-linux-arm64-gnu@0.142.0': optional: true '@oxc-parser/binding-linux-arm64-musl@0.127.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.137.0': + '@oxc-parser/binding-linux-arm64-musl@0.142.0': optional: true '@oxc-parser/binding-linux-ppc64-gnu@0.127.0': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.137.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.142.0': optional: true '@oxc-parser/binding-linux-riscv64-gnu@0.127.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.137.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.142.0': optional: true '@oxc-parser/binding-linux-riscv64-musl@0.127.0': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.137.0': + '@oxc-parser/binding-linux-riscv64-musl@0.142.0': optional: true '@oxc-parser/binding-linux-s390x-gnu@0.127.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.137.0': + '@oxc-parser/binding-linux-s390x-gnu@0.142.0': optional: true '@oxc-parser/binding-linux-x64-gnu@0.127.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.137.0': + '@oxc-parser/binding-linux-x64-gnu@0.142.0': optional: true '@oxc-parser/binding-linux-x64-musl@0.127.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.137.0': + '@oxc-parser/binding-linux-x64-musl@0.142.0': optional: true '@oxc-parser/binding-openharmony-arm64@0.127.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.137.0': + '@oxc-parser/binding-openharmony-arm64@0.142.0': optional: true '@oxc-parser/binding-wasm32-wasi@0.127.0': @@ -26413,85 +26570,133 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true - '@oxc-parser/binding-wasm32-wasi@0.137.0': + '@oxc-parser/binding-wasm32-wasi@0.142.0': dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true '@oxc-parser/binding-win32-arm64-msvc@0.127.0': optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.137.0': + '@oxc-parser/binding-win32-arm64-msvc@0.142.0': optional: true '@oxc-parser/binding-win32-ia32-msvc@0.127.0': optional: true - '@oxc-parser/binding-win32-ia32-msvc@0.137.0': + '@oxc-parser/binding-win32-ia32-msvc@0.142.0': optional: true '@oxc-parser/binding-win32-x64-msvc@0.127.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.137.0': + '@oxc-parser/binding-win32-x64-msvc@0.142.0': optional: true '@oxc-project/types@0.127.0': {} - '@oxc-project/types@0.137.0': {} - '@oxc-project/types@0.138.0': {} + '@oxc-project/types@0.142.0': {} + '@oxc-resolver/binding-android-arm-eabi@11.21.3': optional: true + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + optional: true + '@oxc-resolver/binding-android-arm64@11.21.3': optional: true + '@oxc-resolver/binding-android-arm64@11.24.2': + optional: true + '@oxc-resolver/binding-darwin-arm64@11.21.3': optional: true + '@oxc-resolver/binding-darwin-arm64@11.24.2': + optional: true + '@oxc-resolver/binding-darwin-x64@11.21.3': optional: true + '@oxc-resolver/binding-darwin-x64@11.24.2': + optional: true + '@oxc-resolver/binding-freebsd-x64@11.21.3': optional: true + '@oxc-resolver/binding-freebsd-x64@11.24.2': + optional: true + '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': optional: true + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + optional: true + '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': optional: true + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + optional: true + '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': optional: true + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + optional: true + '@oxc-resolver/binding-linux-arm64-musl@11.21.3': optional: true + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + optional: true + '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': optional: true + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + optional: true + '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': optional: true + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + optional: true + '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': optional: true + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + optional: true + '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': optional: true + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + optional: true + '@oxc-resolver/binding-linux-x64-gnu@11.21.3': optional: true + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + optional: true + '@oxc-resolver/binding-linux-x64-musl@11.21.3': optional: true + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + optional: true + '@oxc-resolver/binding-openharmony-arm64@11.21.3': optional: true + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + optional: true + '@oxc-resolver/binding-wasm32-wasi@11.21.3': dependencies: '@emnapi/core': 1.11.0 @@ -26499,12 +26704,25 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0) optional: true + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true + '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': optional: true + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + optional: true + '@oxc-resolver/binding-win32-x64-msvc@11.21.3': optional: true + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + optional: true + '@paralleldrive/cuid2@2.3.1': dependencies: '@noble/hashes': 1.8.0 @@ -27364,37 +27582,37 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@secretlint/config-creator@13.0.2': + '@secretlint/config-creator@13.0.4': dependencies: - '@secretlint/types': 13.0.2 + '@secretlint/types': 13.0.4 - '@secretlint/config-loader@13.0.2(supports-color@10.2.2)': + '@secretlint/config-loader@13.0.4(supports-color@10.2.2)': dependencies: - '@secretlint/profiler': 13.0.2 - '@secretlint/resolver': 13.0.2 - '@secretlint/types': 13.0.2 + '@secretlint/profiler': 13.0.4 + '@secretlint/resolver': 13.0.4 + '@secretlint/types': 13.0.4 ajv: 8.20.0 debug: 4.4.3(supports-color@10.2.2) rc-config-loader: 4.1.4(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@secretlint/core@13.0.2(supports-color@10.2.2)': + '@secretlint/core@13.0.4(supports-color@10.2.2)': dependencies: - '@secretlint/profiler': 13.0.2 - '@secretlint/types': 13.0.2 + '@secretlint/profiler': 13.0.4 + '@secretlint/types': 13.0.4 debug: 4.4.3(supports-color@10.2.2) structured-source: 4.0.0 transitivePeerDependencies: - supports-color - '@secretlint/formatter@13.0.2(supports-color@10.2.2)': + '@secretlint/formatter@13.0.4(supports-color@10.2.2)': dependencies: - '@secretlint/resolver': 13.0.2 - '@secretlint/types': 13.0.2 - '@textlint/linter-formatter': 15.7.1(supports-color@10.2.2) - '@textlint/module-interop': 15.7.1 - '@textlint/types': 15.7.1 + '@secretlint/resolver': 13.0.4 + '@secretlint/types': 13.0.4 + '@textlint/linter-formatter': 15.8.0(supports-color@10.2.2) + '@textlint/module-interop': 15.8.0 + '@textlint/types': 15.8.0 chalk: 5.6.2 debug: 4.4.3(supports-color@10.2.2) pluralize: 8.0.0 @@ -27404,53 +27622,53 @@ snapshots: transitivePeerDependencies: - supports-color - '@secretlint/node@13.0.2(supports-color@10.2.2)': + '@secretlint/node@13.0.4(supports-color@10.2.2)': dependencies: - '@secretlint/config-loader': 13.0.2(supports-color@10.2.2) - '@secretlint/core': 13.0.2(supports-color@10.2.2) - '@secretlint/formatter': 13.0.2(supports-color@10.2.2) - '@secretlint/profiler': 13.0.2 - '@secretlint/source-creator': 13.0.2 - '@secretlint/types': 13.0.2 + '@secretlint/config-loader': 13.0.4(supports-color@10.2.2) + '@secretlint/core': 13.0.4(supports-color@10.2.2) + '@secretlint/formatter': 13.0.4(supports-color@10.2.2) + '@secretlint/profiler': 13.0.4 + '@secretlint/source-creator': 13.0.4 + '@secretlint/types': 13.0.4 debug: 4.4.3(supports-color@10.2.2) - p-map: 7.0.4 + p-map: 7.0.6 transitivePeerDependencies: - supports-color - '@secretlint/profiler@13.0.2': {} + '@secretlint/profiler@13.0.4': {} - '@secretlint/resolver@13.0.2': {} + '@secretlint/resolver@13.0.4': {} - '@secretlint/secretlint-rule-pattern@13.0.2(supports-color@10.2.2)': + '@secretlint/secretlint-rule-pattern@13.0.4(supports-color@10.2.2)': dependencies: - '@secretlint/tester': 13.0.2(supports-color@10.2.2) - '@secretlint/types': 13.0.2 + '@secretlint/tester': 13.0.4(supports-color@10.2.2) + '@secretlint/types': 13.0.4 '@textlint/regexp-string-matcher': 2.0.2 micromatch: 4.0.8 transitivePeerDependencies: - supports-color - '@secretlint/secretlint-rule-preset-recommend@13.0.2': {} + '@secretlint/secretlint-rule-preset-recommend@13.0.4': {} - '@secretlint/source-creator@13.0.2': + '@secretlint/source-creator@13.0.4': dependencies: - '@secretlint/types': 13.0.2 + '@secretlint/types': 13.0.4 istextorbinary: 9.5.0 - '@secretlint/tester@13.0.2(supports-color@10.2.2)': + '@secretlint/tester@13.0.4(supports-color@10.2.2)': dependencies: - '@secretlint/config-loader': 13.0.2(supports-color@10.2.2) - '@secretlint/core': 13.0.2(supports-color@10.2.2) - '@secretlint/source-creator': 13.0.2 - '@secretlint/types': 13.0.2 + '@secretlint/config-loader': 13.0.4(supports-color@10.2.2) + '@secretlint/core': 13.0.4(supports-color@10.2.2) + '@secretlint/source-creator': 13.0.4 + '@secretlint/types': 13.0.4 transitivePeerDependencies: - supports-color - '@secretlint/types@13.0.2': {} + '@secretlint/types@13.0.4': {} - '@secretlint/walker@13.0.2': + '@secretlint/walker@13.0.4': dependencies: - ignore: 7.0.5 + ignore: 7.0.6 picomatch: 4.0.5 '@selderee/plugin-htmlparser2@0.6.0': @@ -28137,17 +28355,6 @@ snapshots: - supports-color - typescript - '@svgr/core@8.1.0(supports-color@10.2.2)(typescript@7.0.2)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@svgr/babel-preset': 8.1.0(@babel/core@7.29.7(supports-color@10.2.2)) - camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@7.0.2) - snake-case: 3.0.4 - transitivePeerDependencies: - - supports-color - - typescript - '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: '@babel/types': 7.29.7 @@ -28163,16 +28370,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@svgr/babel-preset': 8.1.0(@babel/core@7.29.7(supports-color@10.2.2)) - '@svgr/core': 8.1.0(supports-color@10.2.2)(typescript@7.0.2) - '@svgr/hast-util-to-babel-ast': 8.0.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - '@swc/core-darwin-arm64@1.15.43': optional: true @@ -28426,18 +28623,17 @@ snapshots: dependencies: '@testing-library/dom': 10.4.1 - '@textlint/ast-node-types@15.7.1': {} + '@textlint/ast-node-types@15.8.0': {} - '@textlint/linter-formatter@15.7.1(supports-color@10.2.2)': + '@textlint/linter-formatter@15.8.0(supports-color@10.2.2)': dependencies: '@azu/format-text': 1.0.2 '@azu/style-format': 1.0.1 - '@textlint/module-interop': 15.7.1 - '@textlint/resolver': 15.7.1 - '@textlint/types': 15.7.1 - chalk: 4.1.2 + '@textlint/module-interop': 15.8.0 + '@textlint/resolver': 15.8.0 + '@textlint/types': 15.8.0 debug: 4.4.3(supports-color@10.2.2) - js-yaml: 4.3.0 + js-yaml: 4.3.1 lodash: 4.18.1 pluralize: 2.0.0 string-width: 4.2.3 @@ -28447,7 +28643,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@textlint/module-interop@15.7.1': {} + '@textlint/module-interop@15.8.0': {} '@textlint/regexp-string-matcher@2.0.2': dependencies: @@ -28456,11 +28652,11 @@ snapshots: lodash.uniq: 4.5.0 lodash.uniqwith: 4.5.0 - '@textlint/resolver@15.7.1': {} + '@textlint/resolver@15.8.0': {} - '@textlint/types@15.7.1': + '@textlint/types@15.8.0': dependencies: - '@textlint/ast-node-types': 15.7.1 + '@textlint/ast-node-types': 15.8.0 '@tinybirdco/charts@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -30137,34 +30333,6 @@ snapshots: - vite optional: true - '@vitest/browser-playwright@4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': - dependencies: - '@vitest/browser': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - playwright: 1.61.1 - tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - - '@vitest/browser-playwright@4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': - dependencies: - '@vitest/browser': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - playwright: 1.61.1 - tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - '@vitest/browser@4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': dependencies: '@blazediff/core': 1.9.1 @@ -30218,42 +30386,6 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': - dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.9 - magic-string: 0.30.21 - pngjs: 7.0.0 - sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - ws: 8.21.0 - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - - '@vitest/browser@4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': - dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.9 - magic-string: 0.30.21 - pngjs: 7.0.0 - sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - ws: 8.21.0 - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - '@vitest/coverage-v8@4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9)': dependencies: '@bcoe/v8-coverage': 1.0.2 @@ -30314,24 +30446,6 @@ snapshots: msw: 2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2) vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': - dependencies: - '@vitest/spy': 4.1.9 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - msw: 2.14.6(@types/node@26.0.0)(typescript@5.9.3) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - - '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': - dependencies: - '@vitest/spy': 4.1.9 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - msw: 2.14.6(@types/node@26.0.0)(typescript@7.0.2) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 @@ -30387,11 +30501,13 @@ snapshots: '@volar/source-map@2.4.28': {} - '@volar/typescript@2.4.28': + '@volar/typescript@2.4.28(@typescript/typescript6@6.0.2)': dependencies: '@volar/language-core': 2.4.28 path-browserify: 1.0.1 vscode-uri: 3.1.0 + optionalDependencies: + typescript: '@typescript/typescript6@6.0.2' '@webassemblyjs/ast@1.14.1': dependencies: @@ -30657,15 +30773,19 @@ snapshots: dependencies: acorn: 8.17.0 + acorn-jsx@5.3.2(acorn@8.18.0): + dependencies: + acorn: 8.18.0 + acorn-loose@8.5.2: dependencies: - acorn: 8.17.0 + acorn: 8.18.0 acorn-walk@7.2.0: {} acorn-walk@8.3.5: dependencies: - acorn: 8.17.0 + acorn: 8.18.0 acorn@5.7.4: {} @@ -30675,6 +30795,8 @@ snapshots: acorn@8.17.0: {} + acorn@8.18.0: {} + agent-base@6.0.2(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -31077,14 +31199,6 @@ snapshots: aws-ssl-profiles@1.1.2: {} - axios@1.16.0(debug@4.4.3(supports-color@10.2.2)): - dependencies: - follow-redirects: 1.16.0(debug@4.4.3(supports-color@10.2.2)) - form-data: 4.0.6 - proxy-from-env: 2.1.0 - transitivePeerDependencies: - - debug - axios@1.18.1(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2): dependencies: follow-redirects: 1.16.0(debug@4.4.3(supports-color@10.2.2)) @@ -31954,6 +32068,10 @@ snapshots: dependencies: balanced-match: 4.0.3 + brace-expansion@5.0.8: + dependencies: + balanced-match: 4.0.3 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -33076,10 +33194,6 @@ snapshots: dependencies: restore-cursor: 3.1.0 - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - cli-progress@3.12.0: dependencies: string-width: 4.2.3 @@ -33098,11 +33212,6 @@ snapshots: dependencies: colors: 1.0.3 - cli-truncate@5.2.0: - dependencies: - slice-ansi: 8.0.0 - string-width: 8.2.1 - cli-width@2.2.1: {} cli-width@3.0.0: {} @@ -33510,15 +33619,6 @@ snapshots: optionalDependencies: typescript: '@typescript/typescript6@6.0.2' - cosmiconfig@8.3.6(typescript@7.0.2): - dependencies: - import-fresh: 3.3.1 - js-yaml: 4.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 7.0.2 - cosmiconfig@9.0.2(@typescript/typescript6@6.0.2): dependencies: env-paths: 2.2.1 @@ -34100,8 +34200,15 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + default-browser@5.5.0: dependencies: bundle-name: 4.1.0 @@ -34119,8 +34226,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - define-lazy-prop@2.0.0: {} - define-lazy-prop@3.0.0: {} define-properties@1.2.1: @@ -34141,20 +34246,20 @@ snapshots: depd@2.0.0: {} - dependency-cruiser@18.0.0: + dependency-cruiser@18.1.1: dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) acorn-jsx-walk: 2.0.0 acorn-loose: 8.5.2 acorn-walk: 8.3.5 commander: 15.0.0 - enhanced-resolve: 5.24.1 - ignore: 7.0.5 + enhanced-resolve: 5.24.5 + ignore: 7.0.6 interpret: 3.1.1 is-installed-globally: 1.0.0 json5: 2.2.3 - picomatch: 4.0.4 + picomatch: 4.0.5 prompts: 2.4.2 rechoir: 0.8.0 safe-regex: 2.1.1 @@ -35919,6 +36024,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.3 + enhanced-resolve@5.24.5: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 @@ -37658,6 +37768,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.14.1: + dependencies: + resolve-pkg-maps: 1.0.0 + getopts@2.2.5: {} getopts@2.3.0: {} @@ -38141,7 +38255,7 @@ snapshots: hosted-git-info@9.0.3: dependencies: - lru-cache: 11.5.1 + lru-cache: 11.5.2 hpagent@1.2.0: {} @@ -38385,6 +38499,8 @@ snapshots: ignore@7.0.5: {} + ignore@7.0.6: {} + image-extensions@1.1.0: {} image-size@1.2.1: @@ -38710,10 +38826,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@5.1.0: - dependencies: - get-east-asian-width: 1.6.0 - is-generator-fn@2.1.0: {} is-generator-function@1.1.2: @@ -38906,6 +39018,10 @@ snapshots: dependencies: is-docker: 2.2.1 + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + is-wsl@3.1.1: dependencies: is-inside-container: 1.0.0 @@ -39542,6 +39658,10 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.3.1: + dependencies: + argparse: 2.0.1 + jsdom@16.7.0(supports-color@10.2.2): dependencies: abab: 2.0.6 @@ -39868,19 +39988,19 @@ snapshots: transitivePeerDependencies: - supports-color - knip@6.24.0: + knip@6.32.1: dependencies: fdir: 6.5.0(picomatch@4.0.5) formatly: 0.3.0 - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.1 jiti: 2.7.0 - oxc-parser: 0.137.0 - oxc-resolver: 11.21.3 + oxc-parser: 0.142.0 + oxc-resolver: 11.24.2 picomatch: 4.0.5 - smol-toml: 1.7.0 + smol-toml: 1.7.1 strip-json-comments: 5.0.3 tinyglobby: 0.2.17 - unbash: 4.0.2 + unbash: 4.0.10 yaml: 2.9.0 zod: 4.4.3 @@ -40027,12 +40147,11 @@ snapshots: linkifyjs@4.3.3: {} - lint-staged@17.0.8: + lint-staged@17.3.0: dependencies: - listr2: 10.2.1 picomatch: 4.0.5 string-argv: 0.3.2 - tinyexec: 1.2.4 + tinyexec: 1.3.0 optionalDependencies: yaml: 2.9.0 @@ -40072,14 +40191,6 @@ snapshots: - ember-source - supports-color - listr2@10.2.1: - dependencies: - cli-truncate: 5.2.0 - eventemitter3: 5.0.4 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 10.0.0 - livereload-js@3.4.1: {} loader-runner@2.4.0: {} @@ -40297,14 +40408,6 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 - log-update@6.1.0: - dependencies: - ansi-escapes: 7.3.0 - cli-cursor: 5.0.0 - slice-ansi: 7.1.2 - strip-ansi: 7.2.0 - wrap-ansi: 9.0.2 - logd-console-output@1.3.0: dependencies: app-root-path: 2.2.1 @@ -40344,6 +40447,8 @@ snapshots: lru-cache@11.5.1: {} + lru-cache@11.5.2: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -41165,8 +41270,6 @@ snapshots: mimic-fn@3.1.0: {} - mimic-function@5.0.1: {} - mimic-response@1.0.1: {} mimic-response@3.1.0: {} @@ -41425,58 +41528,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3): - dependencies: - '@inquirer/confirm': 6.1.1(@types/node@26.0.0) - '@mswjs/interceptors': 0.41.9 - '@open-draft/deferred-promise': 3.0.0 - '@types/statuses': 2.0.6 - cookie: 1.1.1 - graphql: 16.14.2 - headers-polyfill: 5.0.1 - is-node-process: 1.2.0 - outvariant: 1.4.3 - path-to-regexp: 6.3.0 - picocolors: 1.1.1 - rettime: 0.11.11 - statuses: 2.0.2 - strict-event-emitter: 0.5.1 - tough-cookie: 6.0.1 - type-fest: 5.7.0 - until-async: 3.0.2 - yargs: 17.7.3 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@types/node' - optional: true - - msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2): - dependencies: - '@inquirer/confirm': 6.1.1(@types/node@26.0.0) - '@mswjs/interceptors': 0.41.9 - '@open-draft/deferred-promise': 3.0.0 - '@types/statuses': 2.0.6 - cookie: 1.1.1 - graphql: 16.14.2 - headers-polyfill: 5.0.1 - is-node-process: 1.2.0 - outvariant: 1.4.3 - path-to-regexp: 6.3.0 - picocolors: 1.1.1 - rettime: 0.11.11 - statuses: 2.0.2 - strict-event-emitter: 0.5.1 - tough-cookie: 6.0.1 - type-fest: 5.7.0 - until-async: 3.0.2 - yargs: 17.7.3 - optionalDependencies: - typescript: 7.0.2 - transitivePeerDependencies: - - '@types/node' - optional: true - multer@2.2.0: dependencies: append-field: 1.0.0 @@ -41928,7 +41979,7 @@ snapshots: nwsapi@2.2.24: {} - nx@23.0.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(debug@4.4.3(supports-color@10.2.2)): + nx@23.1.1(@swc/core@1.15.43(@swc/helpers@0.5.23)): dependencies: '@emnapi/core': 1.4.5 '@emnapi/runtime': 1.4.5 @@ -41938,17 +41989,19 @@ snapshots: '@tybys/wasm-util': 0.9.0 '@yarnpkg/lockfile': 1.1.0 '@zkochan/js-yaml': 0.0.7 + agent-base: 6.0.2(supports-color@10.2.2) ansi-colors: 4.1.3 ansi-regex: 5.0.1 ansi-styles: 4.3.0 argparse: 2.0.1 asynckit: 0.4.0 - axios: 1.16.0(debug@4.4.3(supports-color@10.2.2)) + axios: 1.18.1(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2) balanced-match: 4.0.3 base64-js: 1.5.1 bl: 4.1.0 - brace-expansion: 5.0.6 + brace-expansion: 5.0.8 buffer: 5.7.1 + bundle-name: 4.1.0 call-bind-apply-helpers: 1.0.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -41958,8 +42011,11 @@ snapshots: color-convert: 2.0.1 color-name: 1.1.4 combined-stream: 1.0.8 + debug: 4.4.3(supports-color@10.2.2) + default-browser: 5.2.1 + default-browser-id: 5.0.0 defaults: 1.0.4 - define-lazy-prop: 2.0.0 + define-lazy-prop: 3.0.0 delayed-stream: 1.0.0 dotenv: 16.4.7 dotenv-expand: 12.0.3 @@ -41988,14 +42044,16 @@ snapshots: has-symbols: 1.1.0 has-tostringtag: 1.0.2 hasown: 2.0.4 + https-proxy-agent: 5.0.1(supports-color@10.2.2) ieee754: 1.2.1 ignore: 7.0.5 inherits: 2.0.4 - is-docker: 2.2.1 + is-docker: 3.0.0 is-fullwidth-code-point: 3.0.0 + is-inside-container: 1.0.0 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 - is-wsl: 2.2.0 + is-wsl: 3.1.0 isexe: 2.0.0 json5: 2.2.3 jsonc-parser: 3.3.1 @@ -42007,10 +42065,11 @@ snapshots: mimic-fn: 2.1.0 minimatch: 10.2.5 minimist: 1.2.8 + ms: 2.1.3 npm-run-path: 4.0.1 once: 1.4.0 onetime: 5.1.2 - open: 8.4.2 + open: 10.1.0 ora: 5.4.1 path-key: 3.1.1 picocolors: 1.1.1 @@ -42019,8 +42078,9 @@ snapshots: require-directory: 2.1.1 resolve.exports: 2.0.3 restore-cursor: 3.1.0 + run-applescript: 7.0.0 safe-buffer: 5.2.1 - semver: 7.7.4 + semver: 7.8.4 signal-exit: 3.0.7 smol-toml: 1.6.1 string-width: 4.2.3 @@ -42042,19 +42102,17 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 23.0.1 - '@nx/nx-darwin-x64': 23.0.1 - '@nx/nx-freebsd-x64': 23.0.1 - '@nx/nx-linux-arm-gnueabihf': 23.0.1 - '@nx/nx-linux-arm64-gnu': 23.0.1 - '@nx/nx-linux-arm64-musl': 23.0.1 - '@nx/nx-linux-x64-gnu': 23.0.1 - '@nx/nx-linux-x64-musl': 23.0.1 - '@nx/nx-win32-arm64-msvc': 23.0.1 - '@nx/nx-win32-x64-msvc': 23.0.1 + '@nx/nx-darwin-arm64': 23.1.1 + '@nx/nx-darwin-x64': 23.1.1 + '@nx/nx-freebsd-x64': 23.1.1 + '@nx/nx-linux-arm-gnueabihf': 23.1.1 + '@nx/nx-linux-arm64-gnu': 23.1.1 + '@nx/nx-linux-arm64-musl': 23.1.1 + '@nx/nx-linux-x64-gnu': 23.1.1 + '@nx/nx-linux-x64-musl': 23.1.1 + '@nx/nx-win32-arm64-msvc': 23.1.1 + '@nx/nx-win32-x64-msvc': 23.1.1 '@swc/core': 1.15.43(@swc/helpers@0.5.23) - transitivePeerDependencies: - - debug object-assign@4.1.1: {} @@ -42151,9 +42209,12 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@7.0.0: + open@10.1.0: dependencies: - mimic-function: 5.0.1 + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.1 open@10.2.0: dependencies: @@ -42162,12 +42223,6 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - optional-require@1.1.10: dependencies: require-at: 1.0.6 @@ -42284,30 +42339,30 @@ snapshots: '@oxc-parser/binding-win32-ia32-msvc': 0.127.0 '@oxc-parser/binding-win32-x64-msvc': 0.127.0 - oxc-parser@0.137.0: + oxc-parser@0.142.0: dependencies: - '@oxc-project/types': 0.137.0 + '@oxc-project/types': 0.142.0 optionalDependencies: - '@oxc-parser/binding-android-arm-eabi': 0.137.0 - '@oxc-parser/binding-android-arm64': 0.137.0 - '@oxc-parser/binding-darwin-arm64': 0.137.0 - '@oxc-parser/binding-darwin-x64': 0.137.0 - '@oxc-parser/binding-freebsd-x64': 0.137.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.137.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.137.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.137.0 - '@oxc-parser/binding-linux-arm64-musl': 0.137.0 - '@oxc-parser/binding-linux-ppc64-gnu': 0.137.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.137.0 - '@oxc-parser/binding-linux-riscv64-musl': 0.137.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.137.0 - '@oxc-parser/binding-linux-x64-gnu': 0.137.0 - '@oxc-parser/binding-linux-x64-musl': 0.137.0 - '@oxc-parser/binding-openharmony-arm64': 0.137.0 - '@oxc-parser/binding-wasm32-wasi': 0.137.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.137.0 - '@oxc-parser/binding-win32-ia32-msvc': 0.137.0 - '@oxc-parser/binding-win32-x64-msvc': 0.137.0 + '@oxc-parser/binding-android-arm-eabi': 0.142.0 + '@oxc-parser/binding-android-arm64': 0.142.0 + '@oxc-parser/binding-darwin-arm64': 0.142.0 + '@oxc-parser/binding-darwin-x64': 0.142.0 + '@oxc-parser/binding-freebsd-x64': 0.142.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.142.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.142.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.142.0 + '@oxc-parser/binding-linux-arm64-musl': 0.142.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.142.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.142.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.142.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.142.0 + '@oxc-parser/binding-linux-x64-gnu': 0.142.0 + '@oxc-parser/binding-linux-x64-musl': 0.142.0 + '@oxc-parser/binding-openharmony-arm64': 0.142.0 + '@oxc-parser/binding-wasm32-wasi': 0.142.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.142.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.142.0 + '@oxc-parser/binding-win32-x64-msvc': 0.142.0 oxc-resolver@11.21.3: optionalDependencies: @@ -42331,6 +42386,28 @@ snapshots: '@oxc-resolver/binding-win32-arm64-msvc': 11.21.3 '@oxc-resolver/binding-win32-x64-msvc': 11.21.3 + oxc-resolver@11.24.2: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.24.2 + '@oxc-resolver/binding-android-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-x64': 11.24.2 + '@oxc-resolver/binding-freebsd-x64': 11.24.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.24.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.24.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-musl': 11.24.2 + '@oxc-resolver/binding-openharmony-arm64': 11.24.2 + '@oxc-resolver/binding-wasm32-wasi': 11.24.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.24.2 + p-cancelable@2.1.1: {} p-cancelable@3.0.0: {} @@ -42390,7 +42467,7 @@ snapshots: aggregate-error: 3.1.0 optional: true - p-map@7.0.4: {} + p-map@7.0.6: {} p-reflect@2.1.0: {} @@ -42621,8 +42698,6 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.4: {} - picomatch@4.0.5: {} pify@2.3.0: {} @@ -43775,7 +43850,7 @@ snapshots: rc-config-loader@4.1.4(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) - js-yaml: 4.3.0 + js-yaml: 4.3.1 json5: 2.2.3 require-from-string: 2.0.2 transitivePeerDependencies: @@ -43968,7 +44043,7 @@ snapshots: '@types/normalize-package-data': 2.4.4 normalize-package-data: 8.0.0 parse-json: 8.3.0 - type-fest: 5.7.0 + type-fest: 5.8.0 unicorn-magic: 0.4.0 read-pkg@5.2.0: @@ -44400,11 +44475,6 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - ret@0.1.15: {} retry@0.12.0: {} @@ -44413,8 +44483,6 @@ snapshots: reusify@1.1.0: {} - rfdc@1.4.1: {} - rgb-regex@1.0.1: {} rgba-regex@1.0.0: {} @@ -44551,6 +44619,8 @@ snapshots: rsvp@4.8.5: {} + run-applescript@7.0.0: {} + run-applescript@7.1.0: {} run-async@2.4.1: {} @@ -44677,14 +44747,14 @@ snapshots: ajv-formats: 2.1.1(ajv@8.20.0) ajv-keywords: 5.1.0(ajv@8.20.0) - secretlint@13.0.2(supports-color@10.2.2): + secretlint@13.0.4(supports-color@10.2.2): dependencies: - '@secretlint/config-creator': 13.0.2 - '@secretlint/formatter': 13.0.2(supports-color@10.2.2) - '@secretlint/node': 13.0.2(supports-color@10.2.2) - '@secretlint/profiler': 13.0.2 - '@secretlint/resolver': 13.0.2 - '@secretlint/walker': 13.0.2 + '@secretlint/config-creator': 13.0.4 + '@secretlint/formatter': 13.0.4(supports-color@10.2.2) + '@secretlint/node': 13.0.4(supports-color@10.2.2) + '@secretlint/profiler': 13.0.4 + '@secretlint/resolver': 13.0.4 + '@secretlint/walker': 13.0.4 debug: 4.4.3(supports-color@10.2.2) read-pkg: 10.1.0 transitivePeerDependencies: @@ -44716,6 +44786,8 @@ snapshots: semver@7.7.4: {} + semver@7.8.4: {} + semver@7.8.5: {} send@0.19.2(supports-color@10.2.2): @@ -44983,16 +45055,6 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - slice-ansi@7.1.2: - dependencies: - ansi-styles: 6.2.3 - is-fullwidth-code-point: 5.1.0 - - slice-ansi@8.0.0: - dependencies: - ansi-styles: 6.2.3 - is-fullwidth-code-point: 5.1.0 - slick@1.12.2: {} smart-buffer@4.2.0: @@ -45002,7 +45064,7 @@ snapshots: smol-toml@1.6.1: {} - smol-toml@1.7.0: {} + smol-toml@1.7.1: {} snake-case@3.0.4: dependencies: @@ -45994,6 +46056,8 @@ snapshots: tinyexec@1.2.4: {} + tinyexec@1.3.0: {} + tinyglobby@0.2.17: dependencies: fdir: 6.5.0(picomatch@4.0.5) @@ -46158,7 +46222,7 @@ snapshots: tsconfig-paths-webpack-plugin@4.2.0: dependencies: chalk: 4.1.2 - enhanced-resolve: 5.24.1 + enhanced-resolve: 5.24.5 tapable: 2.3.3 tsconfig-paths: 4.2.0 @@ -46215,6 +46279,10 @@ snapshots: dependencies: tagged-tag: 1.0.0 + type-fest@5.8.0: + dependencies: + tagged-tag: 1.0.0 + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -46336,7 +46404,7 @@ snapshots: uint8array-extras@1.5.0: {} - unbash@4.0.2: {} + unbash@4.0.10: {} unbox-primitive@1.1.0: dependencies: @@ -46500,7 +46568,7 @@ snapshots: unplugin-dts@1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) - '@volar/typescript': 2.4.28 + '@volar/typescript': 2.4.28(@typescript/typescript6@6.0.2) compare-versions: 6.1.1 debug: 4.4.3(supports-color@10.2.2) kolorist: 1.8.0 @@ -46833,17 +46901,6 @@ snapshots: - supports-color - typescript - vite-plugin-svgr@4.5.0(rollup@4.62.2)(supports-color@10.2.2)(typescript@7.0.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) - '@svgr/core': 8.1.0(supports-color@10.2.2)(typescript@7.0.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - transitivePeerDependencies: - - rollup - - supports-color - - typescript - vite-plugin-svgr@5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) @@ -47019,70 +47076,6 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.1.9 - '@vitest/snapshot': 4.1.9 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 - es-module-lexer: 2.1.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.3 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.1.0 - tinybench: 2.9.0 - tinyexec: 1.2.4 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 26.0.0 - '@vitest/browser-playwright': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/coverage-v8': 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) - '@vitest/ui': 4.1.9(vitest@4.1.9) - jsdom: 29.1.1(@noble/hashes@1.8.0) - transitivePeerDependencies: - - msw - - vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.1.9 - '@vitest/snapshot': 4.1.9 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 - es-module-lexer: 2.1.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.3 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.1.0 - tinybench: 2.9.0 - tinyexec: 1.2.4 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 26.0.0 - '@vitest/browser-playwright': 4.1.9(msw@2.14.6(@types/node@26.0.0)(typescript@7.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/coverage-v8': 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) - '@vitest/ui': 4.1.9(vitest@4.1.9) - jsdom: 29.1.1(@noble/hashes@1.8.0) - transitivePeerDependencies: - - msw - vm-browserify@1.1.2: {} vscode-uri@3.1.0: {} @@ -47445,12 +47438,6 @@ snapshots: workerpool@9.3.4: {} - wrap-ansi@10.0.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 8.2.1 - strip-ansi: 7.2.0 - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9c823c28632..e7f04436cad 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -29,7 +29,7 @@ allowBuilds: 'esbuild@0.25.12 || 0.28.1': true 'fsevents@1.2.13 || 2.3.2 || 2.3.3': true 'msw@2.14.6': true - 'nx@23.0.1': true + 'nx@23.1.1': true 'protobufjs@7.6.4': true 're2@1.25.0': true 'sharp@0.35.3': true @@ -121,7 +121,7 @@ catalog: concurrently: 10.0.3 country-flag-icons: 1.6.20 cross-fetch: 4.1.0 - dependency-cruiser: ^18.0.0 + dependency-cruiser: ^18.1.1 dequal: 2.0.3 dompurify: 3.4.11 dotenv: 17.4.2 @@ -188,6 +188,11 @@ catalog: '@octokit/core': 7.0.7 '@octokit/plugin-retry': 8.1.1 '@octokit/plugin-throttling': 11.0.5 + '@secretlint/secretlint-rule-pattern': 13.0.4 + '@secretlint/secretlint-rule-preset-recommend': 13.0.4 + knip: 6.32.1 + lint-staged: 17.3.0 + secretlint: 13.0.4 catalogs: react17: From ca8e43e982588e58fc882c9ff376d92691455955 Mon Sep 17 00:00:00 2001 From: "tryghost-renovate[bot]" <269725441+tryghost-renovate[bot]@users.noreply.github.com> Date: Thu, 13 Aug 2026 18:18:02 +0000 Subject: [PATCH 09/19] Update Docker image digests (#29590) Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com> --- .github/workflows/tinybird.yml | 2 +- compose.dev.analytics.yaml | 2 +- compose.dev.yaml | 4 ++-- docker/dev-gateway/Dockerfile | 2 +- docker/tb-cli/Dockerfile | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/tinybird.yml b/.github/workflows/tinybird.yml index a141b015bc4..cdb48a7e6b0 100644 --- a/.github/workflows/tinybird.yml +++ b/.github/workflows/tinybird.yml @@ -58,7 +58,7 @@ jobs: working-directory: ghost/core/core/server/data/tinybird services: tinybird: - image: tinybirdco/tinybird-local:latest@sha256:59d162c1a83f893dcd2f821060fffe3a7f1a545a0cd8cb5413ba1af2882af64a + image: tinybirdco/tinybird-local:latest@sha256:0865fb2f8aef0b8f0cd3ffe53a7a9832787b2d995fd0d34ddaa6563f1638feed ports: - 7181:7181 outputs: diff --git a/compose.dev.analytics.yaml b/compose.dev.analytics.yaml index 34d9dafc5f2..ffcae8f2caf 100644 --- a/compose.dev.analytics.yaml +++ b/compose.dev.analytics.yaml @@ -31,7 +31,7 @@ services: condition: service_completed_successfully tinybird-local: - image: tinybirdco/tinybird-local:latest@sha256:59d162c1a83f893dcd2f821060fffe3a7f1a545a0cd8cb5413ba1af2882af64a + image: tinybirdco/tinybird-local:latest@sha256:0865fb2f8aef0b8f0cd3ffe53a7a9832787b2d995fd0d34ddaa6563f1638feed container_name: ghost-dev-tinybird platform: linux/amd64 stop_grace_period: 2s diff --git a/compose.dev.yaml b/compose.dev.yaml index 3bc0ef7ae43..04f247047ef 100644 --- a/compose.dev.yaml +++ b/compose.dev.yaml @@ -40,7 +40,7 @@ services: retries: 120 mailpit: - image: axllent/mailpit@sha256:956d688cbd13dca36c72d8e94c34d6d1cdf4a005aa6aa4ff6edaaac56c34d8df + image: axllent/mailpit@sha256:d5ecbb067db3705fa953d79e1b7f81ef84038df67aba6c52825d8c02a1ea748a container_name: ghost-dev-mailpit command: ["--quiet"] ports: @@ -144,7 +144,7 @@ services: condition: service_healthy stripe: - image: stripe/stripe-cli:latest@sha256:43dde8fdca05f88a09ef4c7f1fcc3cc113ba988ba967938c41e16f57840342c8 + image: stripe/stripe-cli:latest@sha256:4b7f2994f827ad134185daf180a8b70d7340f24d3614e1d70d2d09bf59b77980 container_name: ghost-dev-stripe entrypoint: ["/entrypoint.sh"] profiles: ["stripe"] diff --git a/docker/dev-gateway/Dockerfile b/docker/dev-gateway/Dockerfile index 490e03839a5..2ef35fc12a5 100644 --- a/docker/dev-gateway/Dockerfile +++ b/docker/dev-gateway/Dockerfile @@ -1,4 +1,4 @@ -FROM caddy:2.11.4-builder-alpine@sha256:b6a94e74b72261bd536b35acdd22f3577d4e466a9550f2c8d6c8ed6413085d72 AS builder +FROM caddy:2.11.4-builder-alpine@sha256:8e89605351333ad2cc2f3bcc95275a2ccc427f88914050e86a5fde0fd77a63c4 AS builder RUN xcaddy build --with github.com/caddyserver/transform-encoder@ba4124974830222da7f12a091cf11ddf4d49363f diff --git a/docker/tb-cli/Dockerfile b/docker/tb-cli/Dockerfile index eb2784a9d7b..b524e4b9be6 100644 --- a/docker/tb-cli/Dockerfile +++ b/docker/tb-cli/Dockerfile @@ -1,6 +1,6 @@ # The Tinybird CLI requires >=3.10,<3.14 — keep the base image in that range. # Renovate is capped at <3.14 for this file (.github/renovate.json5). -FROM python:3.13-slim@sha256:6771159cd4fa5d9bba1258caf0b82e6b73458c694d178ad97c5e925c2d0e1a91 +FROM python:3.13-slim@sha256:ffb752e139c0a19692a43af8d8523b274222dd68eebad5d583b45c2201c6e30a # Install uv from Astral.sh COPY --from=ghcr.io/astral-sh/uv:0.11.6@sha256:b1e699368d24c57cda93c338a57a8c5a119009ba809305cc8e86986d4a006754 /uv /uvx /bin/ From 51aa95d972a6583d30b86d8fccf796fc80d95a88 Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Thu, 13 Aug 2026 14:32:49 -0400 Subject: [PATCH 10/19] Updated vitest/types/scripts dependencies (#29956) no ref - update vitest et. al to latest - update deps in scripts/* package - update types dependencies --- .changeset/breezy-olives-brush.md | 20 + koenig/kg-default-nodes/package.json | 4 +- pnpm-lock.yaml | 1273 +++++++++++++------------- pnpm-workspace.yaml | 15 +- scripts/package.json | 6 +- 5 files changed, 659 insertions(+), 659 deletions(-) create mode 100644 .changeset/breezy-olives-brush.md diff --git a/.changeset/breezy-olives-brush.md b/.changeset/breezy-olives-brush.md new file mode 100644 index 00000000000..20d462f0cb1 --- /dev/null +++ b/.changeset/breezy-olives-brush.md @@ -0,0 +1,20 @@ +--- +"@tryghost/kg-default-nodes": none +"@tryghost/adapter-base-cache": none +"@tryghost/adapter-base-scheduling": none +"@tryghost/adapter-base-sso": none +"@tryghost/kg-card-factory": none +"@tryghost/kg-clean-basic-html": none +"@tryghost/kg-converters": none +"@tryghost/kg-default-cards": none +"@tryghost/kg-default-transforms": none +"@tryghost/kg-html-to-lexical": none +"@tryghost/kg-lexical-html-renderer": none +"@tryghost/kg-markdown-html-renderer": none +"@tryghost/kg-unsplash-selector": none +"@tryghost/kg-utils": none +"@tryghost/koenig-lexical": none +"ghost-storage-base": none +--- + +Dev Dependency Updates diff --git a/koenig/kg-default-nodes/package.json b/koenig/kg-default-nodes/package.json index 9088e9aaf31..3257505074e 100644 --- a/koenig/kg-default-nodes/package.json +++ b/koenig/kg-default-nodes/package.json @@ -53,8 +53,8 @@ "@lexical/html": "0.13.1", "@prettier/sync": "0.6.1", "@types/jsdom": "catalog:", - "@types/lodash": "4.17.24", - "@types/luxon": "3.7.2", + "@types/lodash": "catalog:", + "@types/luxon": "catalog:", "@types/node": "catalog:", "@typescript/native": "catalog:", "@vitest/coverage-v8": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 338f6aa3365..1706af35d96 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,6 +78,12 @@ catalogs: '@playwright/test': specifier: 1.61.1 version: 1.61.1 + '@pnpm/releasing.versioning': + specifier: 1100.2.4 + version: 1100.2.4 + '@pnpm/workspace.workspace-manifest-reader': + specifier: 1100.1.5 + version: 1100.1.5 '@radix-ui/react-avatar': specifier: 1.2.1 version: 1.2.1 @@ -195,12 +201,18 @@ catalogs: '@types/jsdom': specifier: 28.0.3 version: 28.0.3 + '@types/lodash': + specifier: 4.17.25 + version: 4.17.25 + '@types/luxon': + specifier: 3.7.4 + version: 3.7.4 '@types/nconf': specifier: 0.10.7 version: 0.10.7 '@types/node': - specifier: 22.20.0 - version: 22.20.0 + specifier: 22.20.1 + version: 22.20.1 '@types/react': specifier: 18.3.31 version: 18.3.31 @@ -211,8 +223,8 @@ catalogs: specifier: 2.16.1 version: 2.16.1 '@types/semver': - specifier: 7.7.1 - version: 7.7.1 + specifier: 7.8.0 + version: 7.8.0 '@types/sinon': specifier: 22.0.0 version: 22.0.0 @@ -232,11 +244,11 @@ catalogs: specifier: 6.0.3 version: 6.0.3 '@vitest/browser-playwright': - specifier: 4.1.9 - version: 4.1.9 + specifier: 4.1.10 + version: 4.1.10 '@vitest/coverage-v8': - specifier: 4.1.9 - version: 4.1.9 + specifier: 4.1.10 + version: 4.1.10 ajv: specifier: 8.20.0 version: 8.20.0 @@ -303,6 +315,9 @@ catalogs: eslint-plugin-tailwindcss: specifier: 4.0.4 version: 4.0.4 + execa: + specifier: 10.0.1 + version: 10.0.1 form-data: specifier: 4.0.6 version: 4.0.6 @@ -424,8 +439,8 @@ catalogs: specifier: 4.5.0 version: 4.5.0 vitest: - specifier: 4.1.9 - version: 4.1.9 + specifier: 4.1.10 + version: 4.1.10 vitest-browser-react: specifier: 2.2.0 version: 2.2.0 @@ -564,7 +579,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/activitypub: dependencies: @@ -655,7 +670,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/admin: dependencies: @@ -815,7 +830,7 @@ importers: version: link:../../configs/eslint-react '@tailwindcss/vite': specifier: 'catalog:' - version: 4.2.2(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.2.2(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@testing-library/jest-dom': specifier: 'catalog:' version: 6.9.1 @@ -827,7 +842,7 @@ importers: version: link:../../packages/testing/test-data '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@types/papaparse': specifier: 5.5.2 version: 5.5.2 @@ -842,7 +857,7 @@ importers: version: 2.1.4 '@types/semver': specifier: 'catalog:' - version: 7.7.1 + version: 7.8.0 '@types/validator': specifier: 'catalog:' version: 13.15.10 @@ -851,10 +866,10 @@ importers: version: typescript@7.0.2 '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) + version: 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -866,13 +881,13 @@ importers: version: link:../ember-admin jest-extended: specifier: 7.0.0 - version: 7.0.0(@typescript/typescript6@6.0.2)(jest@29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2)) + version: 7.0.0(@typescript/typescript6@6.0.2)(jest@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2)) jsdom: specifier: 'catalog:' version: 29.1.1(@noble/hashes@1.8.0) msw: specifier: 'catalog:' - version: 2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2) + version: 2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2) sirv: specifier: 3.0.2 version: 3.0.2 @@ -887,13 +902,13 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vite: specifier: 'catalog:' - version: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) vitest-browser-react: specifier: 'catalog:' - version: 2.2.0(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@4.1.9) + version: 2.2.0(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@4.1.10) apps/admin-toolbar: dependencies: @@ -927,7 +942,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/admin-x-framework: dependencies: @@ -997,7 +1012,7 @@ importers: version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -1027,7 +1042,7 @@ importers: version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/announcement-bar: dependencies: @@ -1046,7 +1061,7 @@ importers: version: link:../../configs/vite-public-app '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) cross-fetch: specifier: 'catalog:' version: 4.1.0(encoding@0.1.13) @@ -1061,7 +1076,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/comments-ui: dependencies: @@ -1146,7 +1161,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) autoprefixer: specifier: 10.5.4 version: 10.5.4(postcss@8.5.26) @@ -1185,7 +1200,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/ember-admin: dependencies: @@ -1628,7 +1643,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) cross-fetch: specifier: 'catalog:' version: 4.1.0(encoding@0.1.13) @@ -1655,7 +1670,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/shade: dependencies: @@ -1809,13 +1824,13 @@ importers: version: link:../../configs/eslint-react '@storybook/addon-docs': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/addon-links': specifier: 'catalog:' version: 10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@tailwindcss/postcss': specifier: 'catalog:' version: 4.2.2 @@ -1824,16 +1839,16 @@ importers: version: 14.3.1(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -1869,13 +1884,13 @@ importers: version: '@typescript/typescript6@6.0.2' vite: specifier: 'catalog:' - version: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vite-plugin-svgr: specifier: 'catalog:' - version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) apps/signup-form: dependencies: @@ -1979,7 +1994,7 @@ importers: version: 12.1.5(@types/react@17.0.93)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) autoprefixer: specifier: 10.5.4 version: 10.5.4(postcss@8.5.26) @@ -2009,7 +2024,7 @@ importers: version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) configs/eslint: dependencies: @@ -2074,13 +2089,13 @@ importers: version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) configs/vitest: dependencies: vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) e2e: devDependencies: @@ -2194,7 +2209,7 @@ importers: version: 2.3.8(supports-color@10.2.2) '@tryghost/brute-knex': specifier: 'catalog:' - version: 3.2.1(better-sqlite3@12.11.1)(express@4.22.2(supports-color@10.2.2))(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) + version: 3.2.1(better-sqlite3@12.11.1)(express@4.22.2(supports-color@10.2.2))(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) '@tryghost/color-utils': specifier: 'catalog:' version: 0.2.20 @@ -2233,7 +2248,7 @@ importers: version: link:../../packages/i18n '@tryghost/image-transform': specifier: 1.4.17 - version: 1.4.17(@types/node@22.20.0) + version: 1.4.17(@types/node@22.20.1) '@tryghost/job-manager': specifier: 1.0.9 version: 1.0.9(supports-color@10.2.2) @@ -2338,10 +2353,10 @@ importers: version: 1.20.5(supports-color@10.2.2) bookshelf: specifier: 1.2.0 - version: 1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)) + version: 1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)) bookshelf-relations: specifier: 2.8.0 - version: 2.8.0(bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)))(supports-color@10.2.2) + version: 2.8.0(bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)))(supports-color@10.2.2) bson-objectid: specifier: 'catalog:' version: 2.0.4 @@ -2494,10 +2509,10 @@ importers: version: 1.0.4 knex: specifier: 2.4.2 - version: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) + version: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) knex-migrator: specifier: 'catalog:' - version: 5.4.1(@types/node@22.20.0)(bluebird@3.7.2)(supports-color@10.2.2) + version: 5.4.1(@types/node@22.20.1)(bluebird@3.7.2)(supports-color@10.2.2) leaky-bucket: specifier: 2.2.0 version: 2.2.0 @@ -2560,7 +2575,7 @@ importers: version: 2.2.0 mysql2: specifier: 3.22.5 - version: 3.22.5(@types/node@22.20.0) + version: 3.22.5(@types/node@22.20.1) nconf: specifier: 0.13.0 version: 0.13.0 @@ -2605,7 +2620,7 @@ importers: version: 7.8.5 sharp: specifier: 0.35.3 - version: 0.35.3(@types/node@22.20.0) + version: 0.35.3(@types/node@22.20.1) simple-dom: specifier: 1.4.0 version: 1.4.0 @@ -2654,7 +2669,7 @@ importers: version: 2.1.0 '@types/bookshelf': specifier: 1.2.9 - version: 1.2.9(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) + version: 1.2.9(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) '@types/common-tags': specifier: 1.8.4 version: 1.8.4 @@ -2687,7 +2702,7 @@ importers: version: 0.10.7 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@types/node-fetch': specifier: 2.6.13 version: 2.6.13 @@ -2708,7 +2723,7 @@ importers: version: 2.16.1 '@types/semver': specifier: 'catalog:' - version: 7.7.1 + version: 7.8.0 '@types/sinon': specifier: 'catalog:' version: 22.0.0 @@ -2720,7 +2735,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) c8: specifier: 'catalog:' version: 11.0.0 @@ -2750,10 +2765,10 @@ importers: version: 17.7.0 html-validate: specifier: 11.5.5 - version: 11.5.5(@jest/globals@29.7.0(supports-color@10.2.2))(@vitest/expect@4.1.9)(jest-snapshot@30.3.0(supports-color@10.2.2))(jest@29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2))(vitest@4.1.9) + version: 11.5.5(@jest/globals@29.7.0(supports-color@10.2.2))(@vitest/expect@4.1.10)(jest-snapshot@30.3.0(supports-color@10.2.2))(jest@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2))(vitest@4.1.10) inquirer: specifier: 8.2.7 - version: 8.2.7(@types/node@22.20.0) + version: 8.2.7(@types/node@22.20.1) jwk-to-pem: specifier: 2.0.7 version: 2.0.7 @@ -2801,7 +2816,7 @@ importers: version: 13.12.0 vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) optionalDependencies: better-sqlite3: specifier: 'catalog:' @@ -2814,13 +2829,13 @@ importers: version: 9.39.4 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -2835,7 +2850,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-clean-basic-html: devDependencies: @@ -2847,13 +2862,13 @@ importers: version: 28.0.3 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -2868,7 +2883,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-converters: devDependencies: @@ -2877,13 +2892,13 @@ importers: version: 9.39.4 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -2895,7 +2910,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-default-cards: dependencies: @@ -2929,13 +2944,13 @@ importers: version: 28.0.3 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -2953,7 +2968,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-default-nodes: dependencies: @@ -3016,20 +3031,20 @@ importers: specifier: 'catalog:' version: 28.0.3 '@types/lodash': - specifier: 4.17.24 - version: 4.17.24 + specifier: 'catalog:' + version: 4.17.25 '@types/luxon': - specifier: 3.7.2 - version: 3.7.2 + specifier: 'catalog:' + version: 3.7.4 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -3044,7 +3059,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-default-transforms: dependencies: @@ -3078,7 +3093,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -3090,7 +3105,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-html-to-lexical: dependencies: @@ -3136,7 +3151,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -3148,7 +3163,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-lexical-html-renderer: dependencies: @@ -3194,7 +3209,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -3209,7 +3224,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-markdown-html-renderer: dependencies: @@ -3249,7 +3264,7 @@ importers: version: 14.1.2 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@types/semver': specifier: 7.7.1 version: 7.7.1 @@ -3258,7 +3273,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -3270,7 +3285,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-simplemde: dependencies: @@ -3310,7 +3325,7 @@ importers: version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) autoprefixer: specifier: 10.5.4 version: 10.5.4(postcss@8.5.26) @@ -3361,7 +3376,7 @@ importers: version: 5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/kg-utils: dependencies: @@ -3374,7 +3389,7 @@ importers: version: 9.39.4 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@types/semver': specifier: 7.7.1 version: 7.7.1 @@ -3383,7 +3398,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -3395,7 +3410,7 @@ importers: version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) koenig/koenig-lexical: devDependencies: @@ -3545,10 +3560,10 @@ importers: version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) '@vitest/ui': specifier: 4.1.9 - version: 4.1.9(vitest@4.1.9) + version: 4.1.9(vitest@4.1.10) autoprefixer: specifier: 10.5.4 version: 10.5.4(postcss@8.5.26) @@ -3668,7 +3683,7 @@ importers: version: 5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) y-websocket: specifier: 3.0.0 version: 3.0.0(yjs@13.6.31) @@ -3689,13 +3704,13 @@ importers: version: link:../../../configs/vitest '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3704,7 +3719,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/adapters/redirects-base: devDependencies: @@ -3719,13 +3734,13 @@ importers: version: link:../../../configs/vitest '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3734,7 +3749,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/adapters/route-settings-base: devDependencies: @@ -3749,13 +3764,13 @@ importers: version: link:../../../configs/vitest '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3764,7 +3779,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/adapters/scheduling-base: dependencies: @@ -3783,7 +3798,7 @@ importers: version: link:../../../configs/vitest '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@types/sinon': specifier: 'catalog:' version: 22.0.0 @@ -3792,7 +3807,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3804,7 +3819,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/adapters/sso-base: dependencies: @@ -3826,13 +3841,13 @@ importers: version: 4.17.25 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3841,7 +3856,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/adapters/storage-base: dependencies: @@ -3863,13 +3878,13 @@ importers: version: 4.17.25 '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3878,7 +3893,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/admin-api-schema: dependencies: @@ -3903,13 +3918,13 @@ importers: version: link:../../configs/vitest '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3918,7 +3933,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/custom-field-types: dependencies: @@ -3937,13 +3952,13 @@ importers: version: link:../../configs/vitest '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3952,7 +3967,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/i18n: dependencies: @@ -3968,7 +3983,7 @@ importers: version: link:../../configs/eslint '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -3983,7 +3998,7 @@ importers: version: 9.4.0(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/nql-string: devDependencies: @@ -4001,13 +4016,13 @@ importers: version: 0.13.1(supports-color@10.2.2) '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -4016,7 +4031,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/parse-email-address: dependencies: @@ -4035,13 +4050,13 @@ importers: version: link:../../configs/vitest '@types/node': specifier: 'catalog:' - version: 22.20.0 + version: 22.20.1 '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) + version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -4050,7 +4065,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) packages/testing/test-data: dependencies: @@ -4072,7 +4087,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) scripts: dependencies: @@ -4086,17 +4101,17 @@ importers: specifier: 'catalog:' version: 11.0.5(@octokit/core@7.0.7) '@pnpm/releasing.versioning': - specifier: 1100.1.0 - version: 1100.1.0(@pnpm/logger@1100.0.0) + specifier: 'catalog:' + version: 1100.2.4(@pnpm/logger@1100.0.0) '@pnpm/workspace.workspace-manifest-reader': - specifier: 1100.1.0 - version: 1100.1.0 + specifier: 'catalog:' + version: 1100.1.5 camelcase-keys: specifier: 10.0.2 version: 10.0.2 execa: - specifier: 9.6.1 - version: 9.6.1 + specifier: 'catalog:' + version: 10.0.1 js-yaml: specifier: 'catalog:' version: 4.3.0 @@ -5388,9 +5403,6 @@ packages: '@glint/template': optional: true - '@emnapi/core@1.11.0': - resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==} - '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} @@ -5403,9 +5415,6 @@ packages: '@emnapi/core@1.9.2': resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} - '@emnapi/runtime@1.11.0': - resolution: {integrity: sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==} - '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} @@ -6559,12 +6568,6 @@ packages: '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@napi-rs/wasm-runtime@1.2.2': resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} @@ -7051,207 +7054,104 @@ packages: '@oxc-project/types@0.142.0': resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==} - '@oxc-resolver/binding-android-arm-eabi@11.21.3': - resolution: {integrity: sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==} - cpu: [arm] - os: [android] - '@oxc-resolver/binding-android-arm-eabi@11.24.2': resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.21.3': - resolution: {integrity: sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==} - cpu: [arm64] - os: [android] - '@oxc-resolver/binding-android-arm64@11.24.2': resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.21.3': - resolution: {integrity: sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==} - cpu: [arm64] - os: [darwin] - '@oxc-resolver/binding-darwin-arm64@11.24.2': resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.21.3': - resolution: {integrity: sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==} - cpu: [x64] - os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.24.2': resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.21.3': - resolution: {integrity: sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==} - cpu: [x64] - os: [freebsd] - '@oxc-resolver/binding-freebsd-x64@11.24.2': resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': - resolution: {integrity: sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==} - cpu: [arm] - os: [linux] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': - resolution: {integrity: sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==} - cpu: [arm] - os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': - resolution: {integrity: sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-arm64-musl@11.21.3': - resolution: {integrity: sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@oxc-resolver/binding-linux-arm64-musl@11.24.2': resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': - resolution: {integrity: sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': - resolution: {integrity: sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': - resolution: {integrity: sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': - resolution: {integrity: sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-x64-gnu@11.21.3': - resolution: {integrity: sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@oxc-resolver/binding-linux-x64-gnu@11.24.2': resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-x64-musl@11.21.3': - resolution: {integrity: sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==} - cpu: [x64] - os: [linux] - libc: [musl] - '@oxc-resolver/binding-linux-x64-musl@11.24.2': resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==} cpu: [x64] os: [linux] libc: [musl] - '@oxc-resolver/binding-openharmony-arm64@11.21.3': - resolution: {integrity: sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==} - cpu: [arm64] - os: [openharmony] - '@oxc-resolver/binding-openharmony-arm64@11.24.2': resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==} cpu: [arm64] os: [openharmony] - '@oxc-resolver/binding-wasm32-wasi@11.21.3': - resolution: {integrity: sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - '@oxc-resolver/binding-wasm32-wasi@11.24.2': resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': - resolution: {integrity: sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==} - cpu: [arm64] - os: [win32] - '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.21.3': - resolution: {integrity: sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==} - cpu: [x64] - os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.24.2': resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==} cpu: [x64] @@ -7269,66 +7169,66 @@ packages: engines: {node: '>=18'} hasBin: true - '@pnpm/constants@1100.0.0': - resolution: {integrity: sha512-CSJ5fKSUgqXrON5J2zQd1LwttU4gdqffJ3zYyHGAEhZ8u22fhQEVfCnc4+3aczDHbBNU0pNRX2ajiioPj46YtA==} + '@pnpm/constants@1101.0.0': + resolution: {integrity: sha512-jJQU6y8lhic2at0+W246+tMDdEqhbS1WSRlTjmIXeXrrWU2rAbhixi11loE+lI3f/E1Ci1+3i5N6ewOumeNJdg==} engines: {node: '>=22.13'} - '@pnpm/core-loggers@1100.2.2': - resolution: {integrity: sha512-/TU7WIIXXMzXbOeUn78fihNIMDpBMgoCEEVhaL/HNXzt4thJugF/SAxORqXNJZMvFzkvcCLIYb+lr6OamZUokQ==} + '@pnpm/core-loggers@1100.3.2': + resolution: {integrity: sha512-dsxDByU2KFLxTzVdXZCMjsv0rIxMmFMhWWjo6e1Sq8+TqdoPXSAGcFMN0psVJHRj5+xxXqZen4+NfFhHHsRQMg==} engines: {node: '>=22.13'} peerDependencies: '@pnpm/logger': ^1100.0.0 - '@pnpm/deps.peer-range@1100.0.2': - resolution: {integrity: sha512-kiPFbLNdasVrJohn5jnQ0evnTdLWzHWBpnMaCGqJmz0GwQQ5S/TqQLuLhnBYGnnUkEiN3sCaSGr2TFXcL3xrig==} + '@pnpm/deps.peer-range@1100.1.1': + resolution: {integrity: sha512-G3J83gBJ5XCKhoJ7XbnF0uVJw7D5FC2X1T+txoGtEV1e1dFLT98b05zlBjgaMonkbxFCIUCuwHxttyEyKJvXow==} engines: {node: '>=22.13'} - '@pnpm/error@1100.0.1': - resolution: {integrity: sha512-+SRTHRx9/etv+6AYMv6RX/uGW6CEQbV/o2Ojtjk4aHkmdVMe1Q9LekOV6gKmlEmeWOzv6zTzH/soFcuOWxIxTA==} + '@pnpm/error@1100.1.1': + resolution: {integrity: sha512-dqFXd5jTgBkGkwwI6AO9ON/WBXlQ8LIMRyyRysgSshix1XDyYjMmk7+bdPLuY2gjpB95j0Wu9Xq+3l7uuGZToQ==} engines: {node: '>=22.13'} - '@pnpm/fs.graceful-fs@1100.1.0': - resolution: {integrity: sha512-sqz/s9GmCpMdTL1CP7lteu6EzV2FpAB2xBTztWh7ZCZUoM2MFQZlQI1OuCqdkn6VI3WRnhkUgV0pIOlbqFTCSw==} + '@pnpm/fs.graceful-fs@1100.1.1': + resolution: {integrity: sha512-knCLxjy9vx18Z1cwzzqD251jxrJhQpJ09Gch+AecX0rOWj/sygjk0UXSWZPaHPwVtK5Je7i2CIAoyYwsb8wZTg==} engines: {node: '>=22.13'} '@pnpm/logger@1100.0.0': resolution: {integrity: sha512-A3bRMTIZ5ptDPAE/KsDeY1J5UqqOiyo66+k/mUvaVjx++OJdMbp9If5kisEq9ljAV5r5TRpkxsJbSdrdJ5WtzQ==} engines: {node: '>=22.13'} - '@pnpm/pkg-manifest.utils@1100.2.7': - resolution: {integrity: sha512-+VNfp7Jh+9WvkJ6A0v2Jb4YEEi1qwxbltWFWOZFrOd347nwRre6hbsCfgeV4cu8HsJPfEQlNCTXi2wrfDKH3vA==} + '@pnpm/pkg-manifest.utils@1100.3.1': + resolution: {integrity: sha512-9gYZ0NFNac2+qYV8suA7KWmZia0eJJNQDeByAhTfFpM1ji3Md7SFoNY9WnqXntpx/p1r9rRTeww4iwou/NEztg==} engines: {node: '>=22.13'} peerDependencies: '@pnpm/logger': ^1100.0.0 - '@pnpm/releasing.versioning@1100.1.0': - resolution: {integrity: sha512-U1g75Gfb9RQERK1fN5d20tiQEx+VtTJR5wWUDoIptUVO2fta8odl/se51KxpG8j4YHu0FrhB0nmijhdzzbDLyA==} + '@pnpm/releasing.versioning@1100.2.4': + resolution: {integrity: sha512-9ZlTz5+/nG2yhLMpV0gxBF4QH3MSOAj+xM3RhXCqTvnBQ+h6zaObVeCOChpzrIQtyWjf0wvJCdzyc3xaZakrMA==} engines: {node: '>=22.13'} - '@pnpm/text.comments-parser@1100.0.0': - resolution: {integrity: sha512-POntpaKUaDXaRBYLKZTnd0uxYZSMGLwpS3BqENlH4SEyz/8OK409573XtJgOQgtpmLM3DHZ6iJaRcr8ig6qSnw==} + '@pnpm/text.comments-parser@1100.0.1': + resolution: {integrity: sha512-10rRwfC9ffkuS4RugetHD+AiNZLdg9ZVv0rkbr/8o14EW6Vh6ZwFwAfTOlkp3Eyse8518jVFvXXPKQKyeh9kNw==} engines: {node: '>=22.13'} - '@pnpm/types@1101.4.0': - resolution: {integrity: sha512-s03f87SySGMvjOE16dWXmUOsXt+5Ic/DabWaB4/+L13l4q/tMjOusIu3t2plazCK0gCY9wYOIw2p9CQ9+CHbcA==} + '@pnpm/types@1101.9.0': + resolution: {integrity: sha512-lB2aSB2h950UX1GX3JW4AZ86xjXD92YJbV92IBSQqHXXZdiemoVKADLA2cDQ4/wKeS7djY8fkITM6X+6iYF62A==} engines: {node: '>=22.13'} - '@pnpm/workspace.project-manifest-reader@1100.0.15': - resolution: {integrity: sha512-dEvDXnAVTnBw1/eQ1mvUzXB8gmAbdD6VmbJZhoTW4x9Y8zVGYH2/vS4wZiTz40TPM92BXxSEpSR7aE7uxk6oIQ==} + '@pnpm/workspace.project-manifest-reader@1100.0.23': + resolution: {integrity: sha512-sIZ9QLZJOVt9nf7qiWd/bUFqyF12T0HrkRhkkkAAzc50NpXEzvbZjRV1V6r9zoWfJwntFx2jzyzYVIn4Zn9Snw==} engines: {node: '>=22.13'} peerDependencies: '@pnpm/logger': ^1100.0.0 - '@pnpm/workspace.project-manifest-writer@1100.0.9': - resolution: {integrity: sha512-QJh894R8HxUyp/FKPG6AbHihMRoLiMza8SI8B/BfqzRAz7eMo3KtqDULdooy16WZAtjk3nr76PNu+vrYy+QjVA==} + '@pnpm/workspace.project-manifest-writer@1100.0.14': + resolution: {integrity: sha512-1s+T0xtNHbfQ73LdyE5mEZ8+cXKPQRT0N8qUXp+AZio9Mbgu2R9Qsz2n68vh4tiBrNSndaDc6PlyIb1N/tAEUA==} engines: {node: '>=22.13'} - '@pnpm/workspace.spec-parser@1100.0.0': - resolution: {integrity: sha512-tjTU6mSIx38pxOlzzKkQXjEgYr68jZv2b4+uORFPq5rVPz95iSCooSfxMsXQcbxmqQ6yiMnZcCfOQFz88rNHNw==} + '@pnpm/workspace.spec-parser@1100.0.1': + resolution: {integrity: sha512-lEvwougkILMozWY/7wN1/uyxrOZJfOHSzmeaFBKa69EhzjoqM0Qn9bE+PrFiMr5xUEc1sln3en6bNh4kQJdfSw==} engines: {node: '>=22.13'} - '@pnpm/workspace.workspace-manifest-reader@1100.1.0': - resolution: {integrity: sha512-c2NgP8evfZ2i3SYecfhIwLGiMl++jYidyY95q3xHf8ItjGBk8eXbW6RFCubG26YltGO+OB4diUqGPb0jOwwB2Q==} + '@pnpm/workspace.workspace-manifest-reader@1100.1.5': + resolution: {integrity: sha512-NMUVtTcyY8vm9xPMmpWRtWaCTdO3JyaHrm1AHdCpTQUhvhemLnULrSp5LG36o6BqUOF/P/cj/i8j97vDOypO5A==} engines: {node: '>=22.13'} '@polka/url@1.0.0-next.29': @@ -9649,8 +9549,11 @@ packages: '@types/lodash@4.17.24': resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} - '@types/luxon@3.7.2': - resolution: {integrity: sha512-gW+Oib+vUtGJBtNC8V9Reww0oIpusw+4m81uncg9REGZAJfqOQHfo/nkabnc7w0QReXyPqjrbWMJk6NuAkiX3Q==} + '@types/lodash@4.17.25': + resolution: {integrity: sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==} + + '@types/luxon@3.7.4': + resolution: {integrity: sha512-V536ZAd6ZJztrrBlLcDFaaZrXNAL2E5uGmssWf/dpSiLkmkLScXUYhUBnWPmtW+cIqnNHzf6//TCMpIc9SCRRQ==} '@types/markdown-it@14.1.2': resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} @@ -9695,8 +9598,8 @@ packages: '@types/node@18.19.130': resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - '@types/node@22.20.0': - resolution: {integrity: sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==} + '@types/node@22.20.1': + resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} '@types/node@24.13.2': resolution: {integrity: sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA==} @@ -9771,6 +9674,9 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/semver@7.8.0': + resolution: {integrity: sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==} + '@types/send@0.17.6': resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} @@ -10147,22 +10053,22 @@ packages: babel-plugin-react-compiler: optional: true - '@vitest/browser-playwright@4.1.9': - resolution: {integrity: sha512-Bq1rOGf9waevzG3EOkO/dene6bvKTUsZMVg8S1i+WH3JcMjuXEjiahP9rAqZRELUqjBySOJsvvSWqK/B3wjKQw==} + '@vitest/browser-playwright@4.1.10': + resolution: {integrity: sha512-nMoXGEiRpT7m3W7NsbvrM2aKNwiNHZf+zEpUCvMteGjZFvfT96Q9fh7QyB98dvDWXiKvrLxA7bJ1mCOOv+JQPw==} peerDependencies: playwright: '*' - vitest: 4.1.9 + vitest: 4.1.10 - '@vitest/browser@4.1.9': - resolution: {integrity: sha512-j1BKtWmPcqpMhmx/L9EPLgAJpCb0zKfwoWLmqBbxaogCXHjOwHFSEoHCBfnGtx93xKQwilZ26m+UOsHqHMkRNg==} + '@vitest/browser@4.1.10': + resolution: {integrity: sha512-UDwuWGwXj646CBx/bQHOaJSX7np0I8JL/UKQYa1e4QrVHH8VdWtx8eaOuf8sy0ShwDgR6NjJAsp5eF6vjF6qng==} peerDependencies: - vitest: 4.1.9 + vitest: 4.1.10 - '@vitest/coverage-v8@4.1.9': - resolution: {integrity: sha512-G9/lgqibheLVBDRuya45EbsEXTYcWoSG+TLg7i2axuzx0Eq62eXn+aWXyaVdV5vKvFSWd6ywcX8hA7la9Pvu8g==} + '@vitest/coverage-v8@4.1.10': + resolution: {integrity: sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==} peerDependencies: - '@vitest/browser': 4.1.9 - vitest: 4.1.9 + '@vitest/browser': 4.1.10 + vitest: 4.1.10 peerDependenciesMeta: '@vitest/browser': optional: true @@ -10170,11 +10076,11 @@ packages: '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/expect@4.1.9': - resolution: {integrity: sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==} + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} - '@vitest/mocker@4.1.9': - resolution: {integrity: sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==} + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -10187,20 +10093,23 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} + '@vitest/pretty-format@4.1.9': resolution: {integrity: sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==} - '@vitest/runner@4.1.9': - resolution: {integrity: sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==} + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - '@vitest/snapshot@4.1.9': - resolution: {integrity: sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==} + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.1.9': - resolution: {integrity: sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==} + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} '@vitest/ui@4.1.9': resolution: {integrity: sha512-U/cRvtqfEPj27FI1n9cyUvi4vXXdcLhjJiI+InYKdk8hP4VrS6RXOjGL7rfFaeBc37iRKANsR6eEzIoC7lmgBQ==} @@ -10210,6 +10119,9 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + '@vitest/utils@4.1.9': resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} @@ -14561,6 +14473,10 @@ packages: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} + execa@10.0.1: + resolution: {integrity: sha512-ge98qjkRK4IB7tL7Ju/6qmm5LHoH1eEMt5FNZrz3f4UIYhF28lggX20z3FaX1sgc67msLEn0N0BscOs29iuwyw==} + engines: {node: '>=22'} + execa@2.1.0: resolution: {integrity: sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==} engines: {node: ^8.12.0 || >=9.7.0} @@ -18689,9 +18605,6 @@ packages: resolution: {integrity: sha512-kKR+jPiRJYJDexVoziIg/FVGvr1fT1FZSSJOk6tVoMKKSlsf1Cso+cgGCJkOEDWOP174vRntCPFKg+AS7InWvw==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-resolver@11.21.3: - resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==} - oxc-resolver@11.24.2: resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==} @@ -21688,10 +21601,6 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} - engines: {node: '>=18'} - tinyexec@1.3.0: resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} engines: {node: '>=18'} @@ -22527,20 +22436,20 @@ packages: '@types/react-dom': optional: true - vitest@4.1.9: - resolution: {integrity: sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==} + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.9 - '@vitest/browser-preview': 4.1.9 - '@vitest/browser-webdriverio': 4.1.9 - '@vitest/coverage-istanbul': 4.1.9 - '@vitest/coverage-v8': 4.1.9 - '@vitest/ui': 4.1.9 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -22742,6 +22651,11 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} + which-command@0.1.0: + resolution: {integrity: sha512-XZyoF5/5hZtXitIwzrU4NKK+Wtbb9aB9CezUEw2Q0wlYK8NUYQxC1rRXgNueYLtBAJwXIb+/tFVk4dozciNJMA==} + engines: {node: '>=22'} + hasBin: true + which-typed-array@1.1.22: resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} engines: {node: '>= 0.4'} @@ -22982,6 +22896,10 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + yoctocolors@2.2.0: + resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==} + engines: {node: '>=18'} + yup@0.32.9: resolution: {integrity: sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==} engines: {node: '>=10'} @@ -23341,7 +23259,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.4 + browserslist: 4.28.8 lru-cache: 5.1.1 semver: 6.3.1 @@ -24920,12 +24838,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@emnapi/core@1.11.0': - dependencies: - '@emnapi/wasi-threads': 1.2.2 - tslib: 2.8.1 - optional: true - '@emnapi/core@1.11.1': dependencies: '@emnapi/wasi-threads': 1.2.2 @@ -24948,11 +24860,6 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.11.0': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.11.1': dependencies: tslib: 2.8.1 @@ -25558,12 +25465,12 @@ snapshots: '@inquirer/ansi@2.0.7': {} - '@inquirer/confirm@6.1.1(@types/node@22.20.0)': + '@inquirer/confirm@6.1.1(@types/node@22.20.1)': dependencies: - '@inquirer/core': 11.2.1(@types/node@22.20.0) - '@inquirer/type': 4.0.7(@types/node@22.20.0) + '@inquirer/core': 11.2.1(@types/node@22.20.1) + '@inquirer/type': 4.0.7(@types/node@22.20.1) optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/confirm@6.1.1(@types/node@26.0.0)': dependencies: @@ -25572,17 +25479,17 @@ snapshots: optionalDependencies: '@types/node': 26.0.0 - '@inquirer/core@11.2.1(@types/node@22.20.0)': + '@inquirer/core@11.2.1(@types/node@22.20.1)': dependencies: '@inquirer/ansi': 2.0.7 '@inquirer/figures': 2.0.7 - '@inquirer/type': 4.0.7(@types/node@22.20.0) + '@inquirer/type': 4.0.7(@types/node@22.20.1) cli-width: 4.1.0 fast-wrap-ansi: 0.2.2 mute-stream: 3.0.0 signal-exit: 4.1.0 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/core@11.2.1(@types/node@26.0.0)': dependencies: @@ -25596,18 +25503,18 @@ snapshots: optionalDependencies: '@types/node': 26.0.0 - '@inquirer/external-editor@1.0.3(@types/node@22.20.0)': + '@inquirer/external-editor@1.0.3(@types/node@22.20.1)': dependencies: chardet: 2.2.0 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/figures@2.0.7': {} - '@inquirer/type@4.0.7(@types/node@22.20.0)': + '@inquirer/type@4.0.7(@types/node@22.20.1)': optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/type@4.0.7(@types/node@26.0.0)': optionalDependencies: @@ -25867,11 +25774,11 @@ snapshots: '@types/yargs': 17.0.35 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(@typescript/typescript6@6.0.2) - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) optionalDependencies: typescript: '@typescript/typescript6@6.0.2' @@ -26227,31 +26134,24 @@ snapshots: '@emnapi/runtime': 1.11.1 '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': - dependencies: - '@emnapi/core': 1.11.0 - '@emnapi/runtime': 1.11.0 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@emnapi/core': 1.11.2 - '@emnapi/runtime': 1.11.2 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.3 optional: true @@ -26567,7 +26467,7 @@ snapshots: dependencies: '@emnapi/core': 1.9.2 '@emnapi/runtime': 1.9.2 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true '@oxc-parser/binding-wasm32-wasi@0.142.0': @@ -26601,109 +26501,54 @@ snapshots: '@oxc-project/types@0.142.0': {} - '@oxc-resolver/binding-android-arm-eabi@11.21.3': - optional: true - '@oxc-resolver/binding-android-arm-eabi@11.24.2': optional: true - '@oxc-resolver/binding-android-arm64@11.21.3': - optional: true - '@oxc-resolver/binding-android-arm64@11.24.2': optional: true - '@oxc-resolver/binding-darwin-arm64@11.21.3': - optional: true - '@oxc-resolver/binding-darwin-arm64@11.24.2': optional: true - '@oxc-resolver/binding-darwin-x64@11.21.3': - optional: true - '@oxc-resolver/binding-darwin-x64@11.24.2': optional: true - '@oxc-resolver/binding-freebsd-x64@11.21.3': - optional: true - '@oxc-resolver/binding-freebsd-x64@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': - optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': - optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': - optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.21.3': - optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.24.2': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': - optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': - optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': - optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': - optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.21.3': - optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.21.3': - optional: true - '@oxc-resolver/binding-linux-x64-musl@11.24.2': optional: true - '@oxc-resolver/binding-openharmony-arm64@11.21.3': - optional: true - '@oxc-resolver/binding-openharmony-arm64@11.24.2': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.21.3': - dependencies: - '@emnapi/core': 1.11.0 - '@emnapi/runtime': 1.11.0 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0) - optional: true - '@oxc-resolver/binding-wasm32-wasi@11.24.2': dependencies: '@emnapi/core': 1.11.2 @@ -26711,15 +26556,9 @@ snapshots: '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': - optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.21.3': - optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.24.2': optional: true @@ -26733,22 +26572,22 @@ snapshots: dependencies: playwright: 1.61.1 - '@pnpm/constants@1100.0.0': {} + '@pnpm/constants@1101.0.0': {} - '@pnpm/core-loggers@1100.2.2(@pnpm/logger@1100.0.0)': + '@pnpm/core-loggers@1100.3.2(@pnpm/logger@1100.0.0)': dependencies: '@pnpm/logger': 1100.0.0 - '@pnpm/types': 1101.4.0 + '@pnpm/types': 1101.9.0 - '@pnpm/deps.peer-range@1100.0.2': + '@pnpm/deps.peer-range@1100.1.1': dependencies: semver: 7.8.5 - '@pnpm/error@1100.0.1': + '@pnpm/error@1100.1.1': dependencies: - '@pnpm/constants': 1100.0.0 + '@pnpm/constants': 1101.0.0 - '@pnpm/fs.graceful-fs@1100.1.0': + '@pnpm/fs.graceful-fs@1100.1.1': dependencies: graceful-fs: 4.2.11 @@ -26757,42 +26596,42 @@ snapshots: bole: 5.0.29 split2: 4.2.0 - '@pnpm/pkg-manifest.utils@1100.2.7(@pnpm/logger@1100.0.0)': + '@pnpm/pkg-manifest.utils@1100.3.1(@pnpm/logger@1100.0.0)': dependencies: - '@pnpm/core-loggers': 1100.2.2(@pnpm/logger@1100.0.0) - '@pnpm/deps.peer-range': 1100.0.2 - '@pnpm/error': 1100.0.1 + '@pnpm/core-loggers': 1100.3.2(@pnpm/logger@1100.0.0) + '@pnpm/deps.peer-range': 1100.1.1 + '@pnpm/error': 1100.1.1 '@pnpm/logger': 1100.0.0 - '@pnpm/types': 1101.4.0 + '@pnpm/types': 1101.9.0 semver: 7.8.5 - '@pnpm/releasing.versioning@1100.1.0(@pnpm/logger@1100.0.0)': + '@pnpm/releasing.versioning@1100.2.4(@pnpm/logger@1100.0.0)': dependencies: - '@pnpm/error': 1100.0.1 - '@pnpm/types': 1101.4.0 - '@pnpm/workspace.project-manifest-reader': 1100.0.15(@pnpm/logger@1100.0.0) - '@pnpm/workspace.spec-parser': 1100.0.0 + '@pnpm/error': 1100.1.1 + '@pnpm/types': 1101.9.0 + '@pnpm/workspace.project-manifest-reader': 1100.0.23(@pnpm/logger@1100.0.0) + '@pnpm/workspace.spec-parser': 1100.0.1 human-id: 4.2.0 semver: 7.8.5 yaml: 2.9.0 transitivePeerDependencies: - '@pnpm/logger' - '@pnpm/text.comments-parser@1100.0.0': + '@pnpm/text.comments-parser@1100.0.1': dependencies: strip-comments-strings: 1.2.0 - '@pnpm/types@1101.4.0': {} + '@pnpm/types@1101.9.0': {} - '@pnpm/workspace.project-manifest-reader@1100.0.15(@pnpm/logger@1100.0.0)': + '@pnpm/workspace.project-manifest-reader@1100.0.23(@pnpm/logger@1100.0.0)': dependencies: - '@pnpm/error': 1100.0.1 - '@pnpm/fs.graceful-fs': 1100.1.0 + '@pnpm/error': 1100.1.1 + '@pnpm/fs.graceful-fs': 1100.1.1 '@pnpm/logger': 1100.0.0 - '@pnpm/pkg-manifest.utils': 1100.2.7(@pnpm/logger@1100.0.0) - '@pnpm/text.comments-parser': 1100.0.0 - '@pnpm/types': 1101.4.0 - '@pnpm/workspace.project-manifest-writer': 1100.0.9 + '@pnpm/pkg-manifest.utils': 1100.3.1(@pnpm/logger@1100.0.0) + '@pnpm/text.comments-parser': 1100.0.1 + '@pnpm/types': 1101.9.0 + '@pnpm/workspace.project-manifest-writer': 1100.0.14 detect-indent: 7.0.2 fast-deep-equal: 3.1.3 is-windows: 1.0.2 @@ -26802,21 +26641,21 @@ snapshots: read-yaml-file: 3.0.0 strip-bom: 5.0.0 - '@pnpm/workspace.project-manifest-writer@1100.0.9': + '@pnpm/workspace.project-manifest-writer@1100.0.14': dependencies: - '@pnpm/text.comments-parser': 1100.0.0 - '@pnpm/types': 1101.4.0 + '@pnpm/text.comments-parser': 1100.0.1 + '@pnpm/types': 1101.9.0 json5: 2.2.3 write-file-atomic: 7.0.1 write-yaml-file: 6.0.0 - '@pnpm/workspace.spec-parser@1100.0.0': {} + '@pnpm/workspace.spec-parser@1100.0.1': {} - '@pnpm/workspace.workspace-manifest-reader@1100.1.0': + '@pnpm/workspace.workspace-manifest-reader@1100.1.5': dependencies: - '@pnpm/constants': 1100.0.0 - '@pnpm/error': 1100.0.1 - '@pnpm/types': 1101.4.0 + '@pnpm/constants': 1101.0.0 + '@pnpm/error': 1100.1.1 + '@pnpm/types': 1101.9.0 read-yaml-file: 3.0.0 '@polka/url@1.0.0-next.29': {} @@ -27471,7 +27310,7 @@ snapshots: dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true '@rolldown/binding-win32-arm64-msvc@1.1.4': @@ -28130,10 +27969,10 @@ snapshots: '@standard-schema/utils@0.3.0': {} - '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.31)(react@18.3.1) - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -28176,12 +28015,12 @@ snapshots: '@types/react': 18.3.31 react: 18.3.1 - '@storybook/builder-vite@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/builder-vite@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.3.0 - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) transitivePeerDependencies: - esbuild - rollup @@ -28198,14 +28037,14 @@ snapshots: - rollup - webpack - '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: esbuild: 0.28.1 rollup: 4.62.2 - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': @@ -28234,11 +28073,11 @@ snapshots: '@types/react': 18.3.31 '@types/react-dom': 18.3.7(@types/react@18.3.31) - '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@rollup/pluginutils': 5.4.0(rollup@4.62.2) - '@storybook/builder-vite': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/builder-vite': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/react': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) empathic: 2.0.1 magic-string: 0.30.21 @@ -28248,7 +28087,7 @@ snapshots: resolve: 1.22.12 storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -28517,12 +28356,12 @@ snapshots: postcss: 8.5.26 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@tailwindcss/vite@4.2.2(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) '@tanstack/query-core@5.101.4': {} @@ -28836,10 +28675,10 @@ snapshots: '@tryghost/bookshelf-transaction-events@2.3.7': {} - '@tryghost/brute-knex@3.2.1(better-sqlite3@12.11.1)(express@4.22.2(supports-color@10.2.2))(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)': + '@tryghost/brute-knex@3.2.1(better-sqlite3@12.11.1)(express@4.22.2(supports-color@10.2.2))(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: express-brute: 1.0.1(express@4.22.2(supports-color@10.2.2)) - knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) + knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - better-sqlite3 - express @@ -28976,12 +28815,12 @@ snapshots: '@tryghost/errors': 3.3.5 '@tryghost/request': 3.3.5 - '@tryghost/image-transform@1.4.17(@types/node@22.20.0)': + '@tryghost/image-transform@1.4.17(@types/node@22.20.1)': dependencies: '@tryghost/errors': 3.3.5 fs-extra: 11.3.6 optionalDependencies: - sharp: 0.35.3(@types/node@22.20.0) + sharp: 0.35.3(@types/node@22.20.1) transitivePeerDependencies: - '@types/node' @@ -29420,12 +29259,12 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 26.0.0 - '@types/bookshelf@1.2.9(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)': + '@types/bookshelf@1.2.9(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@types/bluebird': 3.5.42 '@types/create-error': 0.3.33 '@types/lodash': 4.17.24 - knex: 0.21.21(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) + knex: 0.21.21(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - mssql - mysql @@ -29656,7 +29495,9 @@ snapshots: '@types/lodash@4.17.24': {} - '@types/luxon@3.7.2': {} + '@types/lodash@4.17.25': {} + + '@types/luxon@3.7.4': {} '@types/markdown-it@14.1.2': dependencies: @@ -29700,7 +29541,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.20.0': + '@types/node@22.20.1': dependencies: undici-types: 6.21.0 @@ -29781,6 +29622,8 @@ snapshots: '@types/semver@7.7.1': {} + '@types/semver@7.8.0': {} + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 @@ -30277,10 +30120,10 @@ snapshots: '@ungap/structured-clone@1.3.1': {} - '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': dependencies: @@ -30292,26 +30135,26 @@ snapshots: '@rolldown/pluginutils': 1.0.1 vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - '@vitest/browser-playwright@4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': + '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) playwright: 1.61.1 tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser-playwright@4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': + '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) playwright: 1.61.1 tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -30319,13 +30162,13 @@ snapshots: - vite optional: true - '@vitest/browser-playwright@4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': + '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) playwright: 1.61.1 tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -30333,16 +30176,30 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': + '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': + dependencies: + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + playwright: 1.61.1 + tinyrainbow: 3.1.0 + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + optional: true + + '@vitest/browser@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.9 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) ws: 8.21.0 transitivePeerDependencies: - bufferutil @@ -30350,16 +30207,16 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': + '@vitest/browser@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.9 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) ws: 8.21.0 transitivePeerDependencies: - bufferutil @@ -30368,16 +30225,34 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9)': + '@vitest/browser@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.9 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/utils': 4.1.10 + magic-string: 0.30.21 + pngjs: 7.0.0 + sirv: 3.0.2 + tinyrainbow: 3.1.0 + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + optional: true + + '@vitest/browser@4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': + dependencies: + '@blazediff/core': 1.9.1 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) ws: 8.21.0 transitivePeerDependencies: - bufferutil @@ -30386,10 +30261,10 @@ snapshots: - vite optional: true - '@vitest/coverage-v8@4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9)': + '@vitest/coverage-v8@4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.9 + '@vitest/utils': 4.1.10 ast-v8-to-istanbul: 1.0.4 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -30398,9 +30273,9 @@ snapshots: obug: 2.1.3 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) '@vitest/expect@3.2.4': dependencies: @@ -30410,59 +30285,72 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.1.9': + '@vitest/expect@4.1.10': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.9 + '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2) - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + msw: 2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.9 + '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2) vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.9 + '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2) vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.1.10 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + msw: 2.14.6(@types/node@26.0.0)(typescript@5.9.3) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 + '@vitest/pretty-format@4.1.10': + dependencies: + tinyrainbow: 3.1.0 + '@vitest/pretty-format@4.1.9': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.9': + '@vitest/runner@4.1.10': dependencies: - '@vitest/utils': 4.1.9 + '@vitest/utils': 4.1.10 pathe: 2.0.3 - '@vitest/snapshot@4.1.9': + '@vitest/snapshot@4.1.10': dependencies: - '@vitest/pretty-format': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 magic-string: 0.30.21 pathe: 2.0.3 @@ -30470,9 +30358,9 @@ snapshots: dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.1.9': {} + '@vitest/spy@4.1.10': {} - '@vitest/ui@4.1.9(vitest@4.1.9)': + '@vitest/ui@4.1.9(vitest@4.1.10)': dependencies: '@vitest/utils': 4.1.9 fflate: 0.8.3 @@ -30481,7 +30369,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) '@vitest/utils@3.2.4': dependencies: @@ -30489,6 +30377,12 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 + '@vitest/utils@4.1.10': + dependencies: + '@vitest/pretty-format': 4.1.10 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + '@vitest/utils@4.1.9': dependencies: '@vitest/pretty-format': 4.1.9 @@ -30763,9 +30657,9 @@ snapshots: dependencies: acorn: 8.17.0 - acorn-import-phases@1.0.4(acorn@8.17.0): + acorn-import-phases@1.0.4(acorn@8.18.0): dependencies: - acorn: 8.17.0 + acorn: 8.18.0 acorn-jsx-walk@2.0.0: {} @@ -32016,22 +31910,22 @@ snapshots: fast-safe-stringify: 2.1.1 individual: 3.0.0 - bookshelf-relations@2.8.0(bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)))(supports-color@10.2.2): + bookshelf-relations@2.8.0(bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)))(supports-color@10.2.2): dependencies: '@tryghost/debug': 0.1.40(supports-color@10.2.2) '@tryghost/errors': 3.3.5 bluebird: 3.7.2 - bookshelf: 1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)) + bookshelf: 1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)) lodash: 4.18.1 transitivePeerDependencies: - supports-color - bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)): + bookshelf@1.2.0(knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2)): dependencies: bluebird: 3.7.2 create-error: 0.3.1 inflection: 1.13.4 - knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) + knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) lodash: 4.18.1 boolbase@1.0.0: {} @@ -33613,7 +33507,7 @@ snapshots: cosmiconfig@8.3.6(@typescript/typescript6@6.0.2): dependencies: import-fresh: 3.3.1 - js-yaml: 4.3.0 + js-yaml: 4.3.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -33669,13 +33563,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.12 - create-jest@29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2): + create-jest@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(supports-color@10.2.2): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) + jest-config: 29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -33896,7 +33790,7 @@ snapshots: cssnano-preset-default@7.0.17(postcss@8.5.26): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.8 css-declaration-sorter: 7.4.0(postcss@8.5.26) cssnano-utils: 5.0.3(postcss@8.5.26) postcss: 8.5.26 @@ -36835,6 +36729,21 @@ snapshots: signal-exit: 3.0.7 strip-eof: 1.0.0 + execa@10.0.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + which-command: 0.1.0 + yoctocolors: 2.2.0 + execa@2.1.0: dependencies: cross-spawn: 7.0.6 @@ -38305,7 +38214,7 @@ snapshots: minimist: 1.2.8 selderee: 0.6.0 - html-validate@11.5.5(@jest/globals@29.7.0(supports-color@10.2.2))(@vitest/expect@4.1.9)(jest-snapshot@30.3.0(supports-color@10.2.2))(jest@29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2))(vitest@4.1.9): + html-validate@11.5.5(@jest/globals@29.7.0(supports-color@10.2.2))(@vitest/expect@4.1.10)(jest-snapshot@30.3.0(supports-color@10.2.2))(jest@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2))(vitest@4.1.10): dependencies: '@html-validate/stylish': 6.0.0 '@sidvind/better-ajv-errors': 7.0.0(ajv@8.20.0) @@ -38315,10 +38224,10 @@ snapshots: semver: 7.8.5 optionalDependencies: '@jest/globals': 29.7.0(supports-color@10.2.2) - '@vitest/expect': 4.1.9 - jest: 29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) + '@vitest/expect': 4.1.10 + jest: 29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) jest-snapshot: 30.3.0(supports-color@10.2.2) - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) html2canvas-pro@2.2.1: dependencies: @@ -38622,9 +38531,9 @@ snapshots: strip-ansi: 6.0.1 through: 2.3.8 - inquirer@8.2.7(@types/node@22.20.0): + inquirer@8.2.7(@types/node@22.20.1): dependencies: - '@inquirer/external-editor': 1.0.3(@types/node@22.20.0) + '@inquirer/external-editor': 1.0.3(@types/node@22.20.1) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -39157,16 +39066,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2): + jest-cli@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) + create-jest: 29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) + jest-config: 29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.3 @@ -39200,7 +39109,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2): + jest-config@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@jest/test-sequencer': 29.7.0 @@ -39225,7 +39134,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -39303,12 +39212,12 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - jest-extended@7.0.0(@typescript/typescript6@6.0.2)(jest@29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2)): + jest-extended@7.0.0(@typescript/typescript6@6.0.2)(jest@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2)): dependencies: jest-diff: 30.4.1 typescript: '@typescript/typescript6@6.0.2' optionalDependencies: - jest: 29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) + jest: 29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) jest-get-type@29.6.3: {} @@ -39588,12 +39497,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 10.2.2 - jest@29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2): + jest@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.20.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) + jest-cli: 29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) optionalDependencies: node-notifier: 10.0.1 transitivePeerDependencies: @@ -39708,7 +39617,7 @@ snapshots: decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0) is-potential-custom-element-name: 1.0.1 - lru-cache: 11.5.1 + lru-cache: 11.5.2 parse5: 8.0.1 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -39894,7 +39803,7 @@ snapshots: kleur@4.1.5: {} - knex-migrator@5.4.1(@types/node@22.20.0)(bluebird@3.7.2)(supports-color@10.2.2): + knex-migrator@5.4.1(@types/node@22.20.1)(bluebird@3.7.2)(supports-color@10.2.2): dependencies: '@tryghost/database-info': 0.3.35 '@tryghost/errors': 3.3.5 @@ -39903,10 +39812,10 @@ snapshots: commander: 5.1.0 compare-ver: 2.0.2 debug: 4.4.3(supports-color@10.2.2) - knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) + knex: 2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2) lodash: 4.18.1 moment: 2.30.1 - mysql2: 3.22.5(@types/node@22.20.0) + mysql2: 3.22.5(@types/node@22.20.1) nconf: 0.13.0 resolve: 1.22.12 optionalDependencies: @@ -39922,7 +39831,7 @@ snapshots: - supports-color - tedious - knex@0.21.21(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2): + knex@0.21.21(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: colorette: 1.2.1 commander: 6.2.1 @@ -39937,12 +39846,12 @@ snapshots: tildify: 2.0.0 v8flags: 3.2.0 optionalDependencies: - mysql2: 3.22.5(@types/node@22.20.0) + mysql2: 3.22.5(@types/node@22.20.1) sqlite3: 5.1.7(bluebird@3.7.2)(supports-color@10.2.2) transitivePeerDependencies: - supports-color - knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2): + knex@2.4.2(better-sqlite3@12.11.1)(mysql2@3.22.5(@types/node@22.20.1))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: colorette: 2.0.19 commander: 9.5.0 @@ -39960,7 +39869,7 @@ snapshots: tildify: 2.0.0 optionalDependencies: better-sqlite3: 12.11.1 - mysql2: 3.22.5(@types/node@22.20.0) + mysql2: 3.22.5(@types/node@22.20.1) sqlite3: 5.1.7(bluebird@3.7.2)(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -41478,9 +41387,9 @@ snapshots: ms@2.1.3: {} - msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2): + msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2): dependencies: - '@inquirer/confirm': 6.1.1(@types/node@22.20.0) + '@inquirer/confirm': 6.1.1(@types/node@22.20.1) '@mswjs/interceptors': 0.41.9 '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 @@ -41495,7 +41404,7 @@ snapshots: statuses: 2.0.2 strict-event-emitter: 0.5.1 tough-cookie: 6.0.1 - type-fest: 5.7.0 + type-fest: 5.8.0 until-async: 3.0.2 yargs: 17.7.3 optionalDependencies: @@ -41520,7 +41429,7 @@ snapshots: statuses: 2.0.2 strict-event-emitter: 0.5.1 tough-cookie: 6.0.1 - type-fest: 5.7.0 + type-fest: 5.8.0 until-async: 3.0.2 yargs: 17.7.3 optionalDependencies: @@ -41528,6 +41437,32 @@ snapshots: transitivePeerDependencies: - '@types/node' + msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3): + dependencies: + '@inquirer/confirm': 6.1.1(@types/node@26.0.0) + '@mswjs/interceptors': 0.41.9 + '@open-draft/deferred-promise': 3.0.0 + '@types/statuses': 2.0.6 + cookie: 1.1.1 + graphql: 16.14.2 + headers-polyfill: 5.0.1 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + rettime: 0.11.11 + statuses: 2.0.2 + strict-event-emitter: 0.5.1 + tough-cookie: 6.0.1 + type-fest: 5.8.0 + until-async: 3.0.2 + yargs: 17.7.3 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/node' + optional: true + multer@2.2.0: dependencies: append-field: 1.0.0 @@ -41552,9 +41487,9 @@ snapshots: mylas@2.1.14: {} - mysql2@3.22.5(@types/node@22.20.0): + mysql2@3.22.5(@types/node@22.20.1): dependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 aws-ssl-profiles: 1.1.2 denque: 2.1.0 generate-function: 2.3.1 @@ -42364,28 +42299,6 @@ snapshots: '@oxc-parser/binding-win32-ia32-msvc': 0.142.0 '@oxc-parser/binding-win32-x64-msvc': 0.142.0 - oxc-resolver@11.21.3: - optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.21.3 - '@oxc-resolver/binding-android-arm64': 11.21.3 - '@oxc-resolver/binding-darwin-arm64': 11.21.3 - '@oxc-resolver/binding-darwin-x64': 11.21.3 - '@oxc-resolver/binding-freebsd-x64': 11.21.3 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.21.3 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.21.3 - '@oxc-resolver/binding-linux-arm64-gnu': 11.21.3 - '@oxc-resolver/binding-linux-arm64-musl': 11.21.3 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.21.3 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.21.3 - '@oxc-resolver/binding-linux-riscv64-musl': 11.21.3 - '@oxc-resolver/binding-linux-s390x-gnu': 11.21.3 - '@oxc-resolver/binding-linux-x64-gnu': 11.21.3 - '@oxc-resolver/binding-linux-x64-musl': 11.21.3 - '@oxc-resolver/binding-openharmony-arm64': 11.21.3 - '@oxc-resolver/binding-wasm32-wasi': 11.21.3 - '@oxc-resolver/binding-win32-arm64-msvc': 11.21.3 - '@oxc-resolver/binding-win32-x64-msvc': 11.21.3 - oxc-resolver@11.24.2: optionalDependencies: '@oxc-resolver/binding-android-arm-eabi': 11.24.2 @@ -42845,7 +42758,7 @@ snapshots: postcss-colormin@7.0.10(postcss@8.5.26): dependencies: '@colordx/core': 5.4.3 - browserslist: 4.28.4 + browserslist: 4.28.8 caniuse-api: 3.0.0 postcss: 8.5.26 postcss-value-parser: 4.2.0 @@ -42857,7 +42770,7 @@ snapshots: postcss-convert-values@7.0.12(postcss@8.5.26): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.8 postcss: 8.5.26 postcss-value-parser: 4.2.0 @@ -43043,7 +42956,7 @@ snapshots: postcss-merge-rules@7.0.11(postcss@8.5.26): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.8 caniuse-api: 3.0.0 cssnano-utils: 5.0.3(postcss@8.5.26) postcss: 8.5.26 @@ -43084,7 +42997,7 @@ snapshots: postcss-minify-params@7.0.9(postcss@8.5.26): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.8 cssnano-utils: 5.0.3(postcss@8.5.26) postcss: 8.5.26 postcss-value-parser: 4.2.0 @@ -43098,7 +43011,7 @@ snapshots: postcss-minify-selectors@7.1.2(postcss@8.5.26): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.8 caniuse-api: 3.0.0 cssesc: 3.0.0 postcss: 8.5.26 @@ -43214,7 +43127,7 @@ snapshots: postcss-normalize-unicode@7.0.9(postcss@8.5.26): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.8 postcss: 8.5.26 postcss-value-parser: 4.2.0 @@ -43337,7 +43250,7 @@ snapshots: postcss-reduce-initial@7.0.9(postcss@8.5.26): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.8 caniuse-api: 3.0.0 postcss: 8.5.26 @@ -44055,7 +43968,7 @@ snapshots: read-yaml-file@3.0.0: dependencies: - js-yaml: 4.3.0 + js-yaml: 4.3.1 strip-bom: 5.0.0 readable-stream@1.0.34: @@ -44893,7 +44806,7 @@ snapshots: safe-buffer: 5.2.1 to-buffer: 1.2.2 - sharp@0.35.3(@types/node@22.20.0): + sharp@0.35.3(@types/node@22.20.1): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 @@ -44924,7 +44837,7 @@ snapshots: '@img/sharp-win32-arm64': 0.35.3 '@img/sharp-win32-ia32': 0.35.3 '@img/sharp-win32-x64': 0.35.3 - '@types/node': 22.20.0 + '@types/node': 22.20.1 shebang-command@1.2.0: dependencies: @@ -45280,7 +45193,7 @@ snapshots: esbuild: 0.28.1 open: 10.2.0 oxc-parser: 0.127.0 - oxc-resolver: 11.21.3 + oxc-resolver: 11.24.2 recast: 0.23.11 semver: 7.8.5 use-sync-external-store: 1.6.0(react@18.3.1) @@ -45532,7 +45445,7 @@ snapshots: stylehacks@7.0.11(postcss@8.5.26): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.8 postcss: 8.5.26 postcss-selector-parser: 7.1.4 @@ -45888,7 +45801,7 @@ snapshots: terser@5.48.0: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.17.0 + acorn: 8.18.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -46054,8 +45967,6 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.2.4: {} - tinyexec@1.3.0: {} tinyglobby@0.2.17: @@ -46879,12 +46790,12 @@ snapshots: - typescript - webpack - vite-plugin-svgr@4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vite-plugin-svgr@4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2))(supports-color@10.2.2) - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) transitivePeerDependencies: - rollup - supports-color @@ -46923,15 +46834,15 @@ snapshots: - supports-color - typescript - vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0): + vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 - postcss: 8.5.16 + postcss: 8.5.26 rolldown: 1.1.4 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 esbuild: 0.28.1 fsevents: 2.3.3 jiti: 2.7.0 @@ -46943,7 +46854,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 - postcss: 8.5.16 + postcss: 8.5.26 rolldown: 1.1.4 tinyglobby: 0.2.17 optionalDependencies: @@ -46959,7 +46870,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 - postcss: 8.5.16 + postcss: 8.5.26 rolldown: 1.1.4 tinyglobby: 0.2.17 optionalDependencies: @@ -46971,24 +46882,24 @@ snapshots: tsx: 4.23.0 yaml: 2.9.0 - vitest-browser-react@2.2.0(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@4.1.9): + vitest-browser-react@2.2.0(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@4.1.10): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) optionalDependencies: '@types/react': 18.3.31 '@types/react-dom': 18.3.7(@types/react@18.3.31) - vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.1.9 - '@vitest/snapshot': 4.1.9 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -46997,30 +46908,61 @@ snapshots: picomatch: 4.0.5 std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 - '@types/node': 22.20.0 - '@vitest/browser-playwright': 4.1.9(msw@2.14.6(@types/node@22.20.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/coverage-v8': 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) - '@vitest/ui': 4.1.9(vitest@4.1.9) + '@types/node': 22.20.1 + '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) jsdom: 29.1.1(@noble/hashes@1.8.0) transitivePeerDependencies: - msw - vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.1.9 - '@vitest/snapshot': 4.1.9 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.3 + pathe: 2.0.3 + picomatch: 4.0.5 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.1 + '@types/node': 26.0.0 + '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + '@vitest/ui': 4.1.9(vitest@4.1.10) + jsdom: 29.1.1(@noble/hashes@1.8.0) + transitivePeerDependencies: + - msw + + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -47029,7 +46971,7 @@ snapshots: picomatch: 4.0.5 std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) @@ -47037,22 +46979,52 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 26.0.0 - '@vitest/browser-playwright': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/coverage-v8': 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) - '@vitest/ui': 4.1.9(vitest@4.1.9) + '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) jsdom: 29.1.1(@noble/hashes@1.8.0) transitivePeerDependencies: - msw - vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.1.9 - '@vitest/snapshot': 4.1.9 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.3 + pathe: 2.0.3 + picomatch: 4.0.5 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.1 + '@types/node': 26.0.0 + '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + jsdom: 29.1.1(@noble/hashes@1.8.0) + transitivePeerDependencies: + - msw + + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -47061,7 +47033,7 @@ snapshots: picomatch: 4.0.5 std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) @@ -47069,9 +47041,8 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 26.0.0 - '@vitest/browser-playwright': 4.1.9(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.9) - '@vitest/coverage-v8': 4.1.9(@vitest/browser@4.1.9)(vitest@4.1.9) - '@vitest/ui': 4.1.9(vitest@4.1.9) + '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) jsdom: 29.1.1(@noble/hashes@1.8.0) transitivePeerDependencies: - msw @@ -47224,11 +47195,11 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.17.0 - acorn-import-phases: 1.0.4(acorn@8.17.0) + acorn: 8.18.0 + acorn-import-phases: 1.0.4(acorn@8.18.0) browserslist: 4.28.4 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.24.1 + enhanced-resolve: 5.24.5 es-module-lexer: 2.1.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -47265,11 +47236,11 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.17.0 - acorn-import-phases: 1.0.4(acorn@8.17.0) + acorn: 8.18.0 + acorn-import-phases: 1.0.4(acorn@8.18.0) browserslist: 4.28.4 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.24.1 + enhanced-resolve: 5.24.5 es-module-lexer: 2.1.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -47373,6 +47344,8 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 + which-command@0.1.0: {} + which-typed-array@1.1.22: dependencies: available-typed-arrays: 1.0.7 @@ -47488,7 +47461,7 @@ snapshots: write-yaml-file@6.0.0: dependencies: - js-yaml: 4.3.0 + js-yaml: 4.3.1 write-file-atomic: 7.0.1 ws@7.5.11: {} @@ -47602,6 +47575,8 @@ snapshots: yoctocolors@2.1.2: {} + yoctocolors@2.2.0: {} + yup@0.32.9: dependencies: '@babel/runtime': 7.29.7 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e7f04436cad..d93158b77e2 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -93,14 +93,16 @@ catalog: '@tryghost/tpl': 2.3.5 '@types/express': 4.17.25 '@types/html-minifier': ^4.0.6 + '@types/lodash': 4.17.25 + '@types/luxon': 3.7.4 '@types/jest': 29.5.14 '@types/jsdom': 28.0.3 '@types/nconf': 0.10.7 - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@types/react': 18.3.31 '@types/react-dom': 18.3.7 '@types/sanitize-html': 2.16.1 - '@types/semver': 7.7.1 + '@types/semver': 7.8.0 '@types/sinon': 22.0.0 '@types/validator': 13.15.10 '@typescript-eslint/eslint-plugin': 8.49.0 @@ -108,8 +110,8 @@ catalog: '@uiw/codemirror-extensions-basic-setup': 4.25.11 '@uiw/react-codemirror': 4.25.11 '@vitejs/plugin-react': 6.0.3 - '@vitest/browser-playwright': 4.1.9 - '@vitest/coverage-v8': 4.1.9 + '@vitest/browser-playwright': 4.1.10 + '@vitest/coverage-v8': 4.1.10 ajv: 8.20.0 ajv-formats: 3.0.1 better-sqlite3: 12.11.1 @@ -175,7 +177,7 @@ catalog: validator: 13.12.0 vite: 8.1.3 vite-plugin-svgr: 4.5.0 - vitest: 4.1.9 + vitest: 4.1.10 vitest-browser-react: 2.2.0 zod: 4.4.3 form-data: 4.0.6 @@ -193,6 +195,9 @@ catalog: knip: 6.32.1 lint-staged: 17.3.0 secretlint: 13.0.4 + '@pnpm/releasing.versioning': 1100.2.4 + '@pnpm/workspace.workspace-manifest-reader': 1100.1.5 + execa: 10.0.1 catalogs: react17: diff --git a/scripts/package.json b/scripts/package.json index 33357d47d5e..3ef143a0c8e 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -14,10 +14,10 @@ "@octokit/core": "catalog:", "@octokit/plugin-retry": "catalog:", "@octokit/plugin-throttling": "catalog:", - "@pnpm/releasing.versioning": "1100.1.0", - "@pnpm/workspace.workspace-manifest-reader": "1100.1.0", + "@pnpm/releasing.versioning": "catalog:", + "@pnpm/workspace.workspace-manifest-reader": "catalog:", "camelcase-keys": "10.0.2", - "execa": "9.6.1", + "execa": "catalog:", "js-yaml": "catalog:", "picomatch": "4.0.5", "semver": "catalog:" From 4f6a75837c67dcd47f52f3f64893dc44d7182076 Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Thu, 13 Aug 2026 14:53:41 -0400 Subject: [PATCH 11/19] Removed jest dep from apps/activitypub (#29957) no ref - cleanup remaining jest type-only references (import from Vitest directly) - remove jest/jest types dependency --- apps/activitypub/package.json | 2 - apps/activitypub/src/api/activitypub.test.ts | 1 + .../unit/utils/content-formatters.test.ts | 1 + .../test/unit/utils/get-handle.test.tsx | 1 + .../test/unit/utils/pending-activity.ts | 1 + .../activitypub/test/unit/utils/posts.test.ts | 1 + apps/activitypub/tsconfig.json | 2 +- pnpm-lock.yaml | 142 ++++++++---------- 8 files changed, 70 insertions(+), 81 deletions(-) diff --git a/apps/activitypub/package.json b/apps/activitypub/package.json index 0354cf91f36..dec7c3d83db 100644 --- a/apps/activitypub/package.json +++ b/apps/activitypub/package.json @@ -43,11 +43,9 @@ "@internal/cfg-eslint-react": "workspace:*", "@playwright/test": "catalog:", "@testing-library/react": "catalog:", - "@types/jest": "catalog:", "@types/react": "catalog:", "@types/react-dom": "catalog:", "eslint": "catalog:", - "jest": "29.7.0", "jsdom": "catalog:", "tailwindcss": "catalog:", "vite": "catalog:", diff --git a/apps/activitypub/src/api/activitypub.test.ts b/apps/activitypub/src/api/activitypub.test.ts index 4626be09226..0c541e9f32f 100644 --- a/apps/activitypub/src/api/activitypub.test.ts +++ b/apps/activitypub/src/api/activitypub.test.ts @@ -1,4 +1,5 @@ import {ActivityPubAPI} from './activitypub'; +import {describe, expect, test} from 'vitest'; function NotFound() { return new Response(null, { diff --git a/apps/activitypub/test/unit/utils/content-formatters.test.ts b/apps/activitypub/test/unit/utils/content-formatters.test.ts index d2d76f39a96..7cc6c8121b7 100644 --- a/apps/activitypub/test/unit/utils/content-formatters.test.ts +++ b/apps/activitypub/test/unit/utils/content-formatters.test.ts @@ -1,6 +1,7 @@ /** * @vitest-environment jsdom */ +import {describe, expect, it} from 'vitest'; import {enforceVideoCardInlinePlayback, sanitizeArticleContent, sanitizeHtml, stripHtml} from '../../../src/utils/content-formatters'; diff --git a/apps/activitypub/test/unit/utils/get-handle.test.tsx b/apps/activitypub/test/unit/utils/get-handle.test.tsx index 8684037928d..b73006651f4 100644 --- a/apps/activitypub/test/unit/utils/get-handle.test.tsx +++ b/apps/activitypub/test/unit/utils/get-handle.test.tsx @@ -1,3 +1,4 @@ +import {describe, expect, it} from 'vitest'; import getHandle from '../../../src/utils/get-handle'; describe('getHandle', function () { diff --git a/apps/activitypub/test/unit/utils/pending-activity.ts b/apps/activitypub/test/unit/utils/pending-activity.ts index 2e63e7cfe97..f1155b4d32c 100644 --- a/apps/activitypub/test/unit/utils/pending-activity.ts +++ b/apps/activitypub/test/unit/utils/pending-activity.ts @@ -1,3 +1,4 @@ +import {describe, expect, it} from 'vitest'; import {ActorProperties} from '@tryghost/admin-x-framework/api/activitypub'; import { PENDING_ACTIVITY_PREFIX, diff --git a/apps/activitypub/test/unit/utils/posts.test.ts b/apps/activitypub/test/unit/utils/posts.test.ts index 5c84f3fbe6a..90e938273d9 100644 --- a/apps/activitypub/test/unit/utils/posts.test.ts +++ b/apps/activitypub/test/unit/utils/posts.test.ts @@ -1,3 +1,4 @@ +import {beforeEach, describe, expect, test} from 'vitest'; import {Post, PostType} from '../../../src/api/activitypub'; import {mapPostToActivity} from '../../../src/utils/posts'; diff --git a/apps/activitypub/tsconfig.json b/apps/activitypub/tsconfig.json index 46b0e268e11..2c32429f00e 100644 --- a/apps/activitypub/tsconfig.json +++ b/apps/activitypub/tsconfig.json @@ -4,7 +4,7 @@ "lib": ["DOM", "DOM.Iterable", "ESNext"], "module": "ESNext", "skipLibCheck": true, - "types": ["vite/client", "jest"], + "types": ["vite/client"], /* Bundler mode */ "moduleResolution": "bundler", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1706af35d96..5ecb84d6d13 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -195,9 +195,6 @@ catalogs: '@types/express': specifier: 4.17.25 version: 4.17.25 - '@types/jest': - specifier: 29.5.14 - version: 29.5.14 '@types/jsdom': specifier: 28.0.3 version: 28.0.3 @@ -638,9 +635,6 @@ importers: '@testing-library/react': specifier: 'catalog:' version: 14.3.1(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/jest': - specifier: 'catalog:' - version: 29.5.14 '@types/react': specifier: 'catalog:' version: 18.3.31 @@ -653,9 +647,6 @@ importers: eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) - jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@26.0.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) jsdom: specifier: 'catalog:' version: 29.1.1(@noble/hashes@1.8.0) @@ -9519,9 +9510,6 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} - '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -24077,7 +24065,8 @@ snapshots: '@balena/dockerignore@1.0.2': {} - '@bcoe/v8-coverage@0.2.3': {} + '@bcoe/v8-coverage@0.2.3': + optional: true '@bcoe/v8-coverage@1.0.2': {} @@ -25548,6 +25537,7 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 + optional: true '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2)': dependencies: @@ -25585,6 +25575,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true '@jest/diff-sequences@30.0.1': {} @@ -25598,6 +25589,7 @@ snapshots: '@jest/types': 29.6.3 '@types/node': 26.0.0 jest-mock: 29.7.0 + optional: true '@jest/expect-utils@29.7.0': dependencies: @@ -25613,6 +25605,7 @@ snapshots: jest-snapshot: 29.7.0(supports-color@10.2.2) transitivePeerDependencies: - supports-color + optional: true '@jest/expect@30.3.0(supports-color@10.2.2)': dependencies: @@ -25629,6 +25622,7 @@ snapshots: jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 + optional: true '@jest/get-type@30.1.0': {} @@ -25640,6 +25634,7 @@ snapshots: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color + optional: true '@jest/pattern@30.0.1': dependencies: @@ -25676,6 +25671,7 @@ snapshots: node-notifier: 10.0.1 transitivePeerDependencies: - supports-color + optional: true '@jest/schemas@29.6.3': dependencies: @@ -25701,6 +25697,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 + optional: true '@jest/test-result@29.7.0': dependencies: @@ -25708,6 +25705,7 @@ snapshots: '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.3 + optional: true '@jest/test-sequencer@29.7.0': dependencies: @@ -25715,6 +25713,7 @@ snapshots: graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 + optional: true '@jest/transform@29.7.0(supports-color@10.2.2)': dependencies: @@ -25735,6 +25734,7 @@ snapshots: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color + optional: true '@jest/transform@30.3.0(supports-color@10.2.2)': dependencies: @@ -27883,6 +27883,7 @@ snapshots: '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.1 + optional: true '@sinonjs/fake-timers@15.4.0': dependencies: @@ -29439,6 +29440,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: '@types/node': 26.0.0 + optional: true '@types/hast@3.0.4': dependencies: @@ -29458,11 +29460,6 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jest@29.5.14': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - '@types/js-yaml@4.0.9': {} '@types/jsdom@28.0.3': @@ -31265,6 +31262,7 @@ snapshots: slash: 3.0.0 transitivePeerDependencies: - supports-color + optional: true babel-loader@8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@4.47.0): dependencies: @@ -31362,6 +31360,7 @@ snapshots: '@babel/types': 7.29.7 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 + optional: true babel-plugin-macros@3.1.0: dependencies: @@ -31687,6 +31686,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7(supports-color@10.2.2)) + optional: true babel-register@6.26.0(supports-color@10.2.2): dependencies: @@ -32908,7 +32908,8 @@ snapshots: chalk@5.6.2: {} - char-regex@1.0.2: {} + char-regex@1.0.2: + optional: true character-entities-html4@1.1.4: {} @@ -33050,7 +33051,8 @@ snapshots: safe-buffer: 5.2.1 to-buffer: 1.2.2 - cjs-module-lexer@1.4.3: {} + cjs-module-lexer@1.4.3: + optional: true cjs-module-lexer@2.2.0: {} @@ -33156,7 +33158,8 @@ snapshots: - '@types/react' - '@types/react-dom' - co@4.6.0: {} + co@4.6.0: + optional: true coa@2.0.2: dependencies: @@ -33189,7 +33192,8 @@ snapshots: collapse-white-space@2.1.0: {} - collect-v8-coverage@1.0.3: {} + collect-v8-coverage@1.0.3: + optional: true color-convert@1.9.3: dependencies: @@ -33579,21 +33583,6 @@ snapshots: - ts-node optional: true - create-jest@29.7.0(@types/node@26.0.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@26.0.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - crelt@1.0.6: {} cron-validate@1.4.5: @@ -34059,6 +34048,7 @@ snapshots: dedent@1.7.2(babel-plugin-macros@3.1.0): optionalDependencies: babel-plugin-macros: 3.1.0 + optional: true deep-eql@4.1.4: dependencies: @@ -35858,7 +35848,8 @@ snapshots: transitivePeerDependencies: - supports-color - emittery@0.13.1: {} + emittery@0.13.1: + optional: true emoji-mart@5.6.0: {} @@ -36792,6 +36783,7 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + optional: true execa@9.6.1: dependencies: @@ -38339,7 +38331,8 @@ snapshots: human-signals@1.1.1: {} - human-signals@2.1.0: {} + human-signals@2.1.0: + optional: true human-signals@8.0.1: {} @@ -38439,6 +38432,7 @@ snapshots: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + optional: true import-meta-resolve@4.2.0: {} @@ -38735,7 +38729,8 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-generator-fn@2.1.0: {} + is-generator-fn@2.1.0: + optional: true is-generator-function@1.1.2: dependencies: @@ -38998,6 +38993,7 @@ snapshots: source-map: 0.6.1 transitivePeerDependencies: - supports-color + optional: true istanbul-reports@3.2.0: dependencies: @@ -39039,6 +39035,7 @@ snapshots: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 + optional: true jest-circus@29.7.0(babel-plugin-macros@3.1.0)(supports-color@10.2.2): dependencies: @@ -39065,6 +39062,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + optional: true jest-cli@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2): dependencies: @@ -39088,27 +39086,6 @@ snapshots: - ts-node optional: true - jest-cli@29.7.0(@types/node@26.0.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@26.0.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@26.0.0)(babel-plugin-macros@3.1.0)(supports-color@10.2.2) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.3 - optionalDependencies: - node-notifier: 10.0.1 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jest-config@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -39169,6 +39146,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + optional: true jest-diff@29.7.0: dependencies: @@ -39194,6 +39172,7 @@ snapshots: jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 + optional: true jest-each@29.7.0: dependencies: @@ -39202,6 +39181,7 @@ snapshots: jest-get-type: 29.6.3 jest-util: 29.7.0 pretty-format: 29.7.0 + optional: true jest-environment-node@29.7.0: dependencies: @@ -39211,6 +39191,7 @@ snapshots: '@types/node': 26.0.0 jest-mock: 29.7.0 jest-util: 29.7.0 + optional: true jest-extended@7.0.0(@typescript/typescript6@6.0.2)(jest@29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2)): dependencies: @@ -39236,6 +39217,7 @@ snapshots: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 + optional: true jest-haste-map@30.3.0: dependencies: @@ -39256,6 +39238,7 @@ snapshots: dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 + optional: true jest-matcher-utils@29.7.0: dependencies: @@ -39300,6 +39283,7 @@ snapshots: '@jest/types': 29.6.3 '@types/node': 26.0.0 jest-util: 29.7.0 + optional: true jest-mock@30.3.0: dependencies: @@ -39310,8 +39294,10 @@ snapshots: jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: jest-resolve: 29.7.0 + optional: true - jest-regex-util@29.6.3: {} + jest-regex-util@29.6.3: + optional: true jest-regex-util@30.0.1: {} @@ -39321,6 +39307,7 @@ snapshots: jest-snapshot: 29.7.0(supports-color@10.2.2) transitivePeerDependencies: - supports-color + optional: true jest-resolve@29.7.0: dependencies: @@ -39333,6 +39320,7 @@ snapshots: resolve: 1.22.12 resolve.exports: 2.0.3 slash: 3.0.0 + optional: true jest-runner@29.7.0(supports-color@10.2.2): dependencies: @@ -39359,6 +39347,7 @@ snapshots: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color + optional: true jest-runtime@29.7.0(supports-color@10.2.2): dependencies: @@ -39386,6 +39375,7 @@ snapshots: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color + optional: true jest-snapshot@29.7.0(supports-color@10.2.2): dependencies: @@ -39411,6 +39401,7 @@ snapshots: semver: 7.8.5 transitivePeerDependencies: - supports-color + optional: true jest-snapshot@30.3.0(supports-color@10.2.2): dependencies: @@ -39464,6 +39455,7 @@ snapshots: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 + optional: true jest-watcher@29.7.0: dependencies: @@ -39475,6 +39467,7 @@ snapshots: emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 + optional: true jest-worker@27.5.1: dependencies: @@ -39488,6 +39481,7 @@ snapshots: jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 10.2.2 + optional: true jest-worker@30.3.0: dependencies: @@ -39512,20 +39506,6 @@ snapshots: - ts-node optional: true - jest@29.7.0(@types/node@26.0.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@26.0.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) - optionalDependencies: - node-notifier: 10.0.1 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jiti@1.21.7: {} jiti@2.7.0: {} @@ -39946,7 +39926,8 @@ snapshots: transitivePeerDependencies: - supports-color - leven@3.1.0: {} + leven@3.1.0: + optional: true levn@0.4.1: dependencies: @@ -43680,7 +43661,8 @@ snapshots: punycode@2.3.1: {} - pure-rand@6.1.0: {} + pure-rand@6.1.0: + optional: true q@1.5.1: {} @@ -44306,6 +44288,7 @@ snapshots: resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 + optional: true resolve-dir@1.0.1: dependencies: @@ -45061,6 +45044,7 @@ snapshots: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + optional: true source-map-support@0.5.21: dependencies: @@ -45260,6 +45244,7 @@ snapshots: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 + optional: true string-template@0.2.1: {} @@ -47449,6 +47434,7 @@ snapshots: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 + optional: true write-file-atomic@5.0.1: dependencies: From 011dd67639c50e0df5c4c1fcd3ae99780bf9d348 Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Thu, 13 Aug 2026 15:39:22 -0400 Subject: [PATCH 12/19] Updated more dev dependencies (#29960) no ref - pin vitest/ui to catalog - pin prettier to catalog - bump nock/esbuild/prettier/stylelint/typescript-eslint to latest --- .changeset/eight-guests-listen.md | 16 + .github/workflows/ci.yml | 20 +- .github/workflows/label-actions.yml | 2 +- apps/sodo-search/package.json | 2 +- ghost/core/package.json | 4 +- koenig/kg-default-nodes/package.json | 2 +- koenig/koenig-lexical/package.json | 6 +- pnpm-lock.yaml | 1600 +++++++++++++------------- pnpm-workspace.yaml | 21 +- 9 files changed, 864 insertions(+), 809 deletions(-) create mode 100644 .changeset/eight-guests-listen.md diff --git a/.changeset/eight-guests-listen.md b/.changeset/eight-guests-listen.md new file mode 100644 index 00000000000..cd939f36102 --- /dev/null +++ b/.changeset/eight-guests-listen.md @@ -0,0 +1,16 @@ +--- +"@tryghost/kg-default-nodes": none +"@tryghost/koenig-lexical": none +"@tryghost/kg-card-factory": none +"@tryghost/kg-clean-basic-html": none +"@tryghost/kg-converters": none +"@tryghost/kg-default-cards": none +"@tryghost/kg-default-transforms": none +"@tryghost/kg-html-to-lexical": none +"@tryghost/kg-lexical-html-renderer": none +"@tryghost/kg-markdown-html-renderer": none +"@tryghost/kg-unsplash-selector": none +"@tryghost/kg-utils": none +--- + +Update dev deps diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aff8d927f28..677da159217 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -410,7 +410,7 @@ jobs: - name: Lint boundaries run: pnpm nx run ghost-monorepo:lint:boundaries - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -511,7 +511,7 @@ jobs: name: admin-coverage path: apps/*/coverage/cobertura-coverage.xml - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -729,7 +729,7 @@ jobs: exit 1 fi - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -878,7 +878,7 @@ jobs: ghost/*/coverage-e2e/cobertura-coverage.xml ghost/*/coverage-integration/cobertura-coverage.xml - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -968,7 +968,7 @@ jobs: exit 1 fi - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1054,7 +1054,7 @@ jobs: path: ${{ steps.app_name.outputs.root }}/playwright-report retention-days: 30 - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1125,7 +1125,7 @@ jobs: run: | [ -f ~/.ghost/logs/*.log ] && cat ~/.ghost/logs/*.log - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1207,7 +1207,7 @@ jobs: retention-days: 7 if-no-files-found: error - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1290,7 +1290,7 @@ jobs: retention-days: 7 if-no-files-found: error - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} @@ -1927,7 +1927,7 @@ jobs: path: e2e/test-results retention-days: 7 - - uses: tryghost/actions/actions/slack-build@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/slack-build@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' with: status: ${{ job.status }} diff --git a/.github/workflows/label-actions.yml b/.github/workflows/label-actions.yml index 27c71467525..c4893032ca5 100644 --- a/.github/workflows/label-actions.yml +++ b/.github/workflows/label-actions.yml @@ -18,4 +18,4 @@ jobs: runs-on: ubuntu-slim if: github.repository_owner == 'TryGhost' steps: - - uses: tryghost/actions/actions/label-actions@7f48ad5aba12aab17f9f69af27d1e4fb8b8c5e07 # main + - uses: tryghost/actions/actions/label-actions@d5080c41ac3ab68c4115bcd11fad5379778a7c70 # main diff --git a/apps/sodo-search/package.json b/apps/sodo-search/package.json index fb086fbf06e..c8d85e87e62 100644 --- a/apps/sodo-search/package.json +++ b/apps/sodo-search/package.json @@ -59,7 +59,7 @@ "cross-fetch": "catalog:", "eslint": "catalog:", "jsdom": "catalog:", - "nock": "14.0.16", + "nock": "catalog:", "postcss": "catalog:", "postcss-import": "16.1.1", "tailwindcss": "catalog:tailwind3", diff --git a/ghost/core/package.json b/ghost/core/package.json index ddb4d3e04c8..62618f29d1c 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -278,7 +278,7 @@ "chai": "catalog:", "cli-progress": "3.12.0", "cssnano": "7.1.9", - "esbuild": "0.28.1", + "esbuild": "catalog:", "eslint": "catalog:", "eslint-plugin-ghost": "3.5.0", "expect": "29.7.0", @@ -288,7 +288,7 @@ "jwk-to-pem": "2.0.7", "jwks-rsa": "3.2.2", "lodash-es": "4.18.1", - "nock": "14.0.16", + "nock": "catalog:", "nodemon": "3.1.14", "postcss": "catalog:", "postcss-cli": "11.0.1", diff --git a/koenig/kg-default-nodes/package.json b/koenig/kg-default-nodes/package.json index 3257505074e..e2cc249b9ee 100644 --- a/koenig/kg-default-nodes/package.json +++ b/koenig/kg-default-nodes/package.json @@ -59,7 +59,7 @@ "@typescript/native": "catalog:", "@vitest/coverage-v8": "catalog:", "eslint-plugin-ghost": "catalog:", - "prettier": "3.9.4", + "prettier": "catalog:", "typescript": "catalog:", "typescript-eslint": "catalog:", "vitest": "catalog:" diff --git a/koenig/koenig-lexical/package.json b/koenig/koenig-lexical/package.json index cdcce2d77da..0ec0b323787 100644 --- a/koenig/koenig-lexical/package.json +++ b/koenig/koenig-lexical/package.json @@ -100,7 +100,7 @@ "@uiw/react-codemirror": "catalog:", "@vitejs/plugin-react": "catalog:", "@vitest/coverage-v8": "catalog:", - "@vitest/ui": "4.1.9", + "@vitest/ui": "catalog:", "autoprefixer": "10.5.4", "clsx": "catalog:", "concurrently": "catalog:", @@ -123,7 +123,7 @@ "pluralize": "8.0.0", "postcss": "catalog:", "postcss-import": "16.1.1", - "prettier": "3.9.4", + "prettier": "catalog:", "prettier-plugin-organize-attributes": "1.0.0", "prop-types": "15.8.1", "react": "catalog:", @@ -134,7 +134,7 @@ "react-router-dom": "7.18.1", "react-slider": "2.0.6", "storybook": "catalog:", - "stylelint": "17.14.0", + "stylelint": "catalog:", "tailwindcss": "catalog:tailwind3", "typescript": "catalog:", "typescript-eslint": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ecb84d6d13..1cf83f16a74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,8 +61,8 @@ catalogs: specifier: 2.1.0 version: 2.1.0 '@eslint/js': - specifier: 9.39.4 - version: 9.39.4 + specifier: 9.39.5 + version: 9.39.5 '@faker-js/faker': specifier: 10.5.0 version: 10.5.0 @@ -246,6 +246,9 @@ catalogs: '@vitest/coverage-v8': specifier: 4.1.10 version: 4.1.10 + '@vitest/ui': + specifier: 4.1.10 + version: 4.1.10 ajv: specifier: 8.20.0 version: 8.20.0 @@ -294,6 +297,9 @@ catalogs: entities: specifier: 4.5.0 version: 4.5.0 + esbuild: + specifier: 0.28.2 + version: 0.28.2 eslint: specifier: 9.39.4 version: 9.39.4 @@ -360,6 +366,9 @@ catalogs: msw: specifier: 2.14.6 version: 2.14.6 + nock: + specifier: 14.0.17 + version: 14.0.17 node-html-markdown: specifier: 2.0.0 version: 2.0.0 @@ -369,6 +378,9 @@ catalogs: preact: specifier: ^10.29.2 version: 10.29.2 + prettier: + specifier: 3.9.6 + version: 3.9.6 react: specifier: 18.3.1 version: 18.3.1 @@ -396,6 +408,9 @@ catalogs: storybook: specifier: 10.4.6 version: 10.4.6 + stylelint: + specifier: 17.14.1 + version: 17.14.1 supertest: specifier: 7.2.2 version: 7.2.2 @@ -409,8 +424,8 @@ catalogs: specifier: ^7.4.4 version: 7.4.4 tsx: - specifier: 4.23.0 - version: 4.23.0 + specifier: 4.23.12 + version: 4.23.12 tw-animate-css: specifier: 1.4.0 version: 1.4.0 @@ -421,8 +436,8 @@ catalogs: specifier: npm:@typescript/typescript6@6.0.2 version: 6.0.2 typescript-eslint: - specifier: 8.62.1 - version: 8.62.1 + specifier: 8.67.0 + version: 8.67.0 unidecode: specifier: 1.1.0 version: 1.1.0 @@ -480,8 +495,8 @@ overrides: juice: 9.1.0 ember-basic-dropdown: 6.0.2 ember-in-viewport: 4.1.0 - eslint-plugin-ghost>@typescript-eslint/eslint-plugin: 8.49.0 - eslint-plugin-ghost>@typescript-eslint/utils: 8.49.0 + eslint-plugin-ghost>@typescript-eslint/eslint-plugin: 8.67.0 + eslint-plugin-ghost>@typescript-eslint/utils: 8.67.0 ember-svg-jar>cheerio: 1.2.0 juice>cheerio: 0.22.0 '@babel/runtime@<7.26.10': ^7.26.10 @@ -495,6 +510,7 @@ overrides: debug@<2.6.9: ^2.6.9 diff@<3.5.1: ^3.5.1 diff@>=6.0.0 <8.0.3: ^8.0.3 + esbuild@>=0.28.0: 0.28.2 fast-xml-parser@<5.7.0: ^5.7.0 follow-redirects@<1.16.0: ^1.16.0 form-data@<2.5.4: ^2.5.4 @@ -576,7 +592,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) apps/activitypub: dependencies: @@ -658,10 +674,10 @@ importers: version: '@typescript/typescript6@6.0.2' vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) apps/admin: dependencies: @@ -821,7 +837,7 @@ importers: version: link:../../configs/eslint-react '@tailwindcss/vite': specifier: 'catalog:' - version: 4.2.2(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.2.2(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@testing-library/jest-dom': specifier: 'catalog:' version: 6.9.1 @@ -857,10 +873,10 @@ importers: version: typescript@7.0.2 '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + version: 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -890,13 +906,13 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vite: specifier: 'catalog:' - version: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) vitest-browser-react: specifier: 'catalog:' version: 2.2.0(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@4.1.10) @@ -909,7 +925,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@internal/cfg-eslint': specifier: workspace:* version: link:../../configs/eslint @@ -930,10 +946,10 @@ importers: version: 29.1.1(@noble/hashes@1.8.0) vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) apps/admin-x-framework: dependencies: @@ -1000,7 +1016,7 @@ importers: version: typescript@7.0.2 '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) @@ -1024,16 +1040,16 @@ importers: version: '@typescript/typescript6@6.0.2' vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vite-plugin-css-injected-by-js: specifier: 3.5.2 - version: 3.5.2(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 3.5.2(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) vite-plugin-svgr: specifier: 'catalog:' - version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) apps/announcement-bar: dependencies: @@ -1064,10 +1080,10 @@ importers: version: 29.1.1(@noble/hashes@1.8.0) vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) apps/comments-ui: dependencies: @@ -1164,7 +1180,7 @@ importers: version: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) eslint-plugin-tailwindcss: specifier: catalog:tailwind3 - version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)) + version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0)) jsdom: specifier: 'catalog:' version: 29.1.1(@noble/hashes@1.8.0) @@ -1182,16 +1198,16 @@ importers: version: 22.0.0 tailwindcss: specifier: catalog:tailwind3 - version: 3.4.19(tsx@4.23.0)(yaml@2.9.0) + version: 3.4.19(tsx@4.23.12)(yaml@2.9.0) typescript: specifier: 'catalog:' version: '@typescript/typescript6@6.0.2' vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) apps/ember-admin: dependencies: @@ -1206,7 +1222,7 @@ importers: version: 1.0.1 webpack: specifier: 5.105.4 - version: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + version: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) devDependencies: '@babel/core': specifier: 7.29.7 @@ -1240,7 +1256,7 @@ importers: version: 1.16.13(supports-color@10.2.2) '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@faker-js/faker': specifier: 10.4.0 version: 10.4.0 @@ -1255,7 +1271,7 @@ importers: version: link:../../configs/eslint '@sentry/ember': specifier: 7.120.3 - version: 7.120.3(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 7.120.3(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@sentry/integrations': specifier: 7.114.0 version: 7.114.0 @@ -1351,7 +1367,7 @@ importers: version: 0.5.0(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) ember-auto-import: specifier: 2.10.0 - version: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-classic-decorator: specifier: 3.0.1 version: 3.0.1(supports-color@10.2.2) @@ -1435,10 +1451,10 @@ importers: version: 8.1.2(encoding@0.1.13)(supports-color@10.2.2) ember-in-viewport: specifier: 4.1.0 - version: 4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-infinity: specifier: 2.3.0 - version: 2.3.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 2.3.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-keyboard: specifier: 8.2.1 version: 8.2.1(@babel/core@7.29.7(supports-color@10.2.2))(@ember/test-helpers@2.9.6(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) @@ -1658,10 +1674,10 @@ importers: version: '@typescript/typescript6@6.0.2' vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) apps/shade: dependencies: @@ -1815,13 +1831,13 @@ importers: version: link:../../configs/eslint-react '@storybook/addon-docs': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/addon-links': specifier: 'catalog:' version: 10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@tailwindcss/postcss': specifier: 'catalog:' version: 4.2.2 @@ -1836,7 +1852,7 @@ importers: version: typescript@7.0.2 '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) @@ -1866,7 +1882,7 @@ importers: version: 1.8.17 tsx: specifier: 'catalog:' - version: 4.23.0 + version: 4.23.12 tw-animate-css: specifier: 'catalog:' version: 1.4.0 @@ -1875,13 +1891,13 @@ importers: version: '@typescript/typescript6@6.0.2' vite: specifier: 'catalog:' - version: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vite-plugin-svgr: specifier: 'catalog:' - version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) apps/signup-form: dependencies: @@ -1906,13 +1922,13 @@ importers: version: 1.61.1 '@storybook/addon-docs': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/addon-links': specifier: 'catalog:' version: 10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@tryghost/i18n': specifier: workspace:* version: link:../../packages/i18n @@ -1933,7 +1949,7 @@ importers: version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) eslint-plugin-tailwindcss: specifier: catalog:tailwind3 - version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)) + version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0)) postcss: specifier: 'catalog:' version: 8.5.26 @@ -1945,13 +1961,13 @@ importers: version: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tailwindcss: specifier: catalog:tailwind3 - version: 3.4.19(tsx@4.23.0)(yaml@2.9.0) + version: 3.4.19(tsx@4.23.12)(yaml@2.9.0) typescript: specifier: 'catalog:' version: '@typescript/typescript6@6.0.2' vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) apps/sodo-search: dependencies: @@ -1999,8 +2015,8 @@ importers: specifier: 'catalog:' version: 29.1.1(@noble/hashes@1.8.0) nock: - specifier: 14.0.16 - version: 14.0.16 + specifier: 'catalog:' + version: 14.0.17 postcss: specifier: 'catalog:' version: 8.5.26 @@ -2009,19 +2025,19 @@ importers: version: 16.1.1(postcss@8.5.26) tailwindcss: specifier: catalog:tailwind3 - version: 3.4.19(tsx@4.23.0)(yaml@2.9.0) + version: 3.4.19(tsx@4.23.12)(yaml@2.9.0) vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) configs/eslint: dependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 eslint-plugin-ghost: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) @@ -2030,13 +2046,13 @@ importers: version: 17.7.0 typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) configs/eslint-react: dependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@internal/cfg-eslint': specifier: workspace:* version: link:../eslint @@ -2057,7 +2073,7 @@ importers: version: 0.5.3(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-storybook: specifier: 10.4.6 - version: 10.4.6(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) + version: 10.4.6(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) eslint-plugin-tailwindcss: specifier: 'catalog:' version: 4.0.4(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(tailwindcss@4.2.2) @@ -2066,7 +2082,7 @@ importers: version: 17.7.0 typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) configs/typescript: {} @@ -2074,25 +2090,25 @@ importers: dependencies: '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) vite-plugin-svgr: specifier: 'catalog:' - version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) configs/vitest: dependencies: vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) e2e: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@faker-js/faker': specifier: 'catalog:' version: 10.5.0 @@ -2152,7 +2168,7 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) ghost/core: dependencies: @@ -2648,7 +2664,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@internal/cfg-eslint': specifier: workspace:* version: link:../../configs/eslint @@ -2740,8 +2756,8 @@ importers: specifier: 7.1.9 version: 7.1.9(postcss@8.5.26) esbuild: - specifier: 0.28.1 - version: 0.28.1 + specifier: 'catalog:' + version: 0.28.2 eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -2770,8 +2786,8 @@ importers: specifier: 4.18.1 version: 4.18.1 nock: - specifier: 14.0.16 - version: 14.0.16 + specifier: 'catalog:' + version: 14.0.17 nodemon: specifier: 3.1.14 version: 3.1.14 @@ -2780,7 +2796,7 @@ importers: version: 8.5.26 postcss-cli: specifier: 11.0.1 - version: 11.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.0) + version: 11.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.12) qs: specifier: 6.15.3 version: 6.15.3 @@ -2795,19 +2811,19 @@ importers: version: 0.2.7 tsx: specifier: 'catalog:' - version: 4.23.0 + version: 4.23.12 typescript: specifier: 'catalog:' version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) validator: specifier: 'catalog:' version: 13.12.0 vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) optionalDependencies: better-sqlite3: specifier: 'catalog:' @@ -2817,7 +2833,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@types/node': specifier: 'catalog:' version: 22.20.1 @@ -2838,16 +2854,16 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-clean-basic-html: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@types/jsdom': specifier: 'catalog:' version: 28.0.3 @@ -2871,16 +2887,16 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-converters: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@types/node': specifier: 'catalog:' version: 22.20.1 @@ -2898,10 +2914,10 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-default-cards: dependencies: @@ -2929,7 +2945,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@types/jsdom': specifier: 'catalog:' version: 28.0.3 @@ -2956,10 +2972,10 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-default-nodes: dependencies: @@ -3008,7 +3024,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@lexical/headless': specifier: 0.13.1 version: 0.13.1(lexical@0.13.1) @@ -3017,7 +3033,7 @@ importers: version: 0.13.1(lexical@0.13.1) '@prettier/sync': specifier: 0.6.1 - version: 0.6.1(prettier@3.9.4) + version: 0.6.1(prettier@3.9.6) '@types/jsdom': specifier: 'catalog:' version: 28.0.3 @@ -3040,17 +3056,17 @@ importers: specifier: 'catalog:' version: 3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) prettier: - specifier: 3.9.4 - version: 3.9.4 + specifier: 'catalog:' + version: 3.9.6 typescript: specifier: 'catalog:' version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-default-transforms: dependencies: @@ -3072,7 +3088,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@lexical/headless': specifier: 0.13.1 version: 0.13.1(lexical@0.13.1) @@ -3093,10 +3109,10 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-html-to-lexical: dependencies: @@ -3133,7 +3149,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@types/jsdom': specifier: 'catalog:' version: 28.0.3 @@ -3151,10 +3167,10 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-lexical-html-renderer: dependencies: @@ -3191,7 +3207,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@types/jsdom': specifier: 'catalog:' version: 28.0.3 @@ -3212,10 +3228,10 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-markdown-html-renderer: dependencies: @@ -3249,7 +3265,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@types/markdown-it': specifier: 14.1.2 version: 14.1.2 @@ -3273,10 +3289,10 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-simplemde: dependencies: @@ -3298,7 +3314,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@playwright/test': specifier: 'catalog:' version: 1.61.1 @@ -3313,7 +3329,7 @@ importers: version: typescript@7.0.2 '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) @@ -3337,7 +3353,7 @@ importers: version: 0.5.3(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2)) eslint-plugin-tailwindcss: specifier: catalog:tailwind3 - version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)) + version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0)) jsdom: specifier: 'catalog:' version: 29.1.1(@noble/hashes@1.8.0) @@ -3349,25 +3365,25 @@ importers: version: 16.1.1(postcss@8.5.26) tailwindcss: specifier: catalog:tailwind3 - version: 3.4.19(tsx@4.23.0)(yaml@2.9.0) + version: 3.4.19(tsx@4.23.12)(yaml@2.9.0) typescript: specifier: 'catalog:' version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vite-plugin-dts: specifier: 5.0.3 - version: 5.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 5.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) vite-plugin-svgr: specifier: 5.2.0 - version: 5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/kg-utils: dependencies: @@ -3377,7 +3393,7 @@ importers: devDependencies: '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@types/node': specifier: 'catalog:' version: 22.20.1 @@ -3398,10 +3414,10 @@ importers: version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) koenig/koenig-lexical: devDependencies: @@ -3434,10 +3450,10 @@ importers: version: 2.1.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)) '@eslint/js': specifier: 'catalog:' - version: 9.39.4 + version: 9.39.5 '@etchteam/storybook-addon-status': specifier: 8.1.0 - version: 8.1.0(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 8.1.0(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@lexical/clipboard': specifier: 0.13.1 version: 0.13.1(lexical@0.13.1) @@ -3482,22 +3498,22 @@ importers: version: 1.61.1 '@prettier/sync': specifier: 0.6.1 - version: 0.6.1(prettier@3.9.4) + version: 0.6.1(prettier@3.9.6) '@sentry/vite-plugin': specifier: 5.3.0 version: 5.3.0(encoding@0.1.13)(rollup@4.62.2)(supports-color@10.2.2) '@storybook/addon-docs': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/addon-links': specifier: 'catalog:' - version: 10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + version: 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@testing-library/dom': specifier: 10.4.1 version: 10.4.1 @@ -3548,13 +3564,13 @@ importers: version: 4.25.11(@babel/runtime@7.29.7)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/lint@6.9.7)(@codemirror/search@6.7.1)(@codemirror/state@6.7.1)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.43.6)(codemirror@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) '@vitest/ui': - specifier: 4.1.9 - version: 4.1.9(vitest@4.1.10) + specifier: 'catalog:' + version: 4.1.10(vitest@4.1.10) autoprefixer: specifier: 10.5.4 version: 10.5.4(postcss@8.5.26) @@ -3584,10 +3600,10 @@ importers: version: 5.2.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-storybook: specifier: 10.4.6 - version: 10.4.6(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) + version: 10.4.6(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) eslint-plugin-tailwindcss: specifier: catalog:tailwind3 - version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)) + version: 3.18.3(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0)) eventemitter3: specifier: 5.0.4 version: 5.0.4 @@ -3622,11 +3638,11 @@ importers: specifier: 16.1.1 version: 16.1.1(postcss@8.5.26) prettier: - specifier: 3.9.4 - version: 3.9.4 + specifier: 'catalog:' + version: 3.9.6 prettier-plugin-organize-attributes: specifier: 1.0.0 - version: 1.0.0(prettier@3.9.4) + version: 1.0.0(prettier@3.9.6) prop-types: specifier: 15.8.1 version: 15.8.1 @@ -3653,28 +3669,28 @@ importers: version: 2.0.6(react@18.3.1) storybook: specifier: 'catalog:' - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) stylelint: - specifier: 17.14.0 - version: 17.14.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + specifier: 'catalog:' + version: 17.14.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) tailwindcss: specifier: catalog:tailwind3 - version: 3.4.19(tsx@4.23.0)(yaml@2.9.0) + version: 3.4.19(tsx@4.23.12)(yaml@2.9.0) typescript: specifier: 'catalog:' version: '@typescript/typescript6@6.0.2' typescript-eslint: specifier: 'catalog:' - version: 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) vite: specifier: 'catalog:' - version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + version: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) vite-plugin-svgr: specifier: 5.2.0 - version: 5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) y-websocket: specifier: 3.0.0 version: 3.0.0(yjs@13.6.31) @@ -3710,7 +3726,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/adapters/redirects-base: devDependencies: @@ -3740,7 +3756,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/adapters/route-settings-base: devDependencies: @@ -3770,7 +3786,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/adapters/scheduling-base: dependencies: @@ -3810,7 +3826,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/adapters/sso-base: dependencies: @@ -3847,7 +3863,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/adapters/storage-base: dependencies: @@ -3884,7 +3900,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/admin-api-schema: dependencies: @@ -3924,7 +3940,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/custom-field-types: dependencies: @@ -3958,7 +3974,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/i18n: dependencies: @@ -3989,7 +4005,7 @@ importers: version: 9.4.0(supports-color@10.2.2) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/nql-string: devDependencies: @@ -4022,7 +4038,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/parse-email-address: dependencies: @@ -4056,7 +4072,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) packages/testing/test-data: dependencies: @@ -4078,7 +4094,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) scripts: dependencies: @@ -5054,8 +5070,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.5': - resolution: {integrity: sha512-oNjBvzLq2GPZtJphCjLqXow/cHySHSgtxvKZb7OqSZ/xHgw6NWNhfad+6AB9cLeVm6eA9d/qMll3JdEHjy6M+A==} + '@csstools/css-syntax-patches-for-csstree@1.1.7': + resolution: {integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -5436,8 +5452,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -5448,8 +5464,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -5460,8 +5476,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -5472,8 +5488,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -5484,8 +5500,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -5496,8 +5512,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -5508,8 +5524,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -5520,8 +5536,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -5532,8 +5548,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -5544,8 +5560,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -5556,8 +5572,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -5568,8 +5584,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -5580,8 +5596,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -5592,8 +5608,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -5604,8 +5620,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -5616,8 +5632,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -5628,8 +5644,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -5640,8 +5656,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -5652,8 +5668,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -5664,8 +5680,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -5676,8 +5692,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -5688,8 +5704,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -5700,8 +5716,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -5712,8 +5728,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -5724,8 +5740,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -5736,8 +5752,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -5785,6 +5801,10 @@ packages: resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@9.39.5': + resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@2.1.7': resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -8521,7 +8541,7 @@ packages: '@storybook/csf-plugin@10.4.6': resolution: {integrity: sha512-NILLxDqpA/JR/AazGWpsz+4fadJwRU4uhHephGtYpVOWnQA/DkJfKT6zpcJVq8+QA8A2zKMLX3GVKsXIrxjuDA==} peerDependencies: - esbuild: '*' + esbuild: 0.28.2 rollup: '*' storybook: ^10.4.6 vite: '*' @@ -9731,19 +9751,11 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.49.0': - resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} + '@typescript-eslint/eslint-plugin@8.67.0': + resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.49.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/eslint-plugin@8.62.1': - resolution: {integrity: sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.62.1 + '@typescript-eslint/parser': ^8.67.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' @@ -9754,19 +9766,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.62.1': - resolution: {integrity: sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA==} + '@typescript-eslint/parser@8.67.0': + resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.49.0': - resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.56.1': resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9779,9 +9785,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.49.0': - resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} + '@typescript-eslint/project-service@8.67.0': + resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/scope-manager@8.56.1': resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} @@ -9791,11 +9799,9 @@ packages: resolution: {integrity: sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.49.0': - resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} + '@typescript-eslint/scope-manager@8.67.0': + resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/tsconfig-utils@8.56.1': resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} @@ -9809,24 +9815,19 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.49.0': - resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} + '@typescript-eslint/tsconfig-utils@8.67.0': + resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.62.1': - resolution: {integrity: sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg==} + '@typescript-eslint/type-utils@8.67.0': + resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.49.0': - resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.56.1': resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9835,11 +9836,9 @@ packages: resolution: {integrity: sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.49.0': - resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} + '@typescript-eslint/types@8.67.0': + resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/typescript-estree@8.56.1': resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} @@ -9853,12 +9852,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.49.0': - resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} + '@typescript-eslint/typescript-estree@8.67.0': + resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/utils@8.62.1': resolution: {integrity: sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g==} @@ -9867,9 +9865,12 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.49.0': - resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} + '@typescript-eslint/utils@8.67.0': + resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/visitor-keys@8.56.1': resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} @@ -9879,6 +9880,10 @@ packages: resolution: {integrity: sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.67.0': + resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/typescript-aix-ppc64@7.0.2': resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} engines: {node: '>=16.20.0'} @@ -10084,9 +10089,6 @@ packages: '@vitest/pretty-format@4.1.10': resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - '@vitest/pretty-format@4.1.9': - resolution: {integrity: sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==} - '@vitest/runner@4.1.10': resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} @@ -10099,10 +10101,10 @@ packages: '@vitest/spy@4.1.10': resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} - '@vitest/ui@4.1.9': - resolution: {integrity: sha512-U/cRvtqfEPj27FI1n9cyUvi4vXXdcLhjJiI+InYKdk8hP4VrS6RXOjGL7rfFaeBc37iRKANsR6eEzIoC7lmgBQ==} + '@vitest/ui@4.1.10': + resolution: {integrity: sha512-EOUqfXHTXtpSHsyLHH40ts3Ue+hRhSGwzwzMlK0dTEOLSDYyOXLyr5JDGmHQWhN2DYI30gw6dVx3cdgM9FZl+Q==} peerDependencies: - vitest: 4.1.9 + vitest: 4.1.10 '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} @@ -10110,9 +10112,6 @@ packages: '@vitest/utils@4.1.10': resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} - '@vitest/utils@4.1.9': - resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} - '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} @@ -14139,8 +14138,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} engines: {node: '>=18'} hasBin: true @@ -15244,8 +15243,8 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - globby@16.2.0: - resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==} + globby@16.2.3: + resolution: {integrity: sha512-VZX7TV7jmd/pn71vdnLKtgwy1IWqc3KjI9x1/UtPkwoKk5fKrNLY30ltDe3cAM5xruIN7YuuaulFt133jRrKZg==} engines: {node: '>=20'} globjoin@0.1.4: @@ -18073,8 +18072,8 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - nock@14.0.16: - resolution: {integrity: sha512-8r4KEc6nT1D/fdLD/R1BO1CPaVEL8o40u/guFRJlXabN7vr3RmMqyjsY5Krt0nMwhsOAwXQ/mtN5vy5Jh3aErg==} + nock@14.0.17: + resolution: {integrity: sha512-EjRr1weMa4ALQX35AgZTEnP+weJJjlW1KGDiNM2IQC2069YDHas4f4B4UUYR+TTLyKWxJvOz2wObDKQs/LNreA==} engines: {node: '>=18.20.0 <20 || >=20.12.1'} node-abi@3.92.0: @@ -19636,6 +19635,11 @@ packages: engines: {node: '>=14'} hasBin: true + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + engines: {node: '>=14'} + hasBin: true + pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -21291,8 +21295,8 @@ packages: peerDependencies: postcss: ^8.5.13 - stylelint@17.14.0: - resolution: {integrity: sha512-8xkHPpdqYryeIsOgfsYTmr6cIeC4nLYWk5S8BPxpodq8mIuepggkMljsHewWfuAjj/+qpRKou2QerhjMH3iasg==} + stylelint@17.14.1: + resolution: {integrity: sha512-xVQwyiuxALUBNB2fBe0tmNemg9KqLtdj3T64mioFDar79B2cU8LIyz+3KL6LdiHs9NkeNfwxpKSaIVOY8f112g==} engines: {node: '>=20.19.0'} hasBin: true @@ -21776,8 +21780,8 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} - tsx@4.23.0: - resolution: {integrity: sha512-eUdUIaCr963q2h5u3+QwvYp0+eqPvn+egeqZUm0hwERCqqx1E3kK5ehbGCvqSE5MQAULr67ww0cA3jKc3YkM1w==} + tsx@4.23.12: + resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==} engines: {node: '>=18.0.0'} hasBin: true @@ -21863,8 +21867,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.62.1: - resolution: {integrity: sha512-vymnnM5g0AKQDSAyfP12nMIBvgwgA42syg74kkuZ4x1VuTzwQKwc5h9rGxeShCjny5o+zWAb6OEoz7XLgrIkIw==} + typescript-eslint@8.67.0: + resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -22089,7 +22093,7 @@ packages: '@microsoft/api-extractor': '>=7' '@rspack/core': ^1 '@vue/language-core': ^3.1.5 - esbuild: '*' + esbuild: 0.28.2 rolldown: '*' rollup: '>=3' typescript: '>=4' @@ -22374,7 +22378,7 @@ packages: peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 '@vitejs/devtools': ^0.3.0 - esbuild: ^0.27.0 || ^0.28.0 + esbuild: 0.28.2 jiti: '>=1.21.0' less: ^4.0.0 sass: ^1.70.0 @@ -24232,7 +24236,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.5(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.7(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 @@ -24885,157 +24889,157 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.28.1': + '@esbuild/aix-ppc64@0.28.2': optional: true '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.28.1': + '@esbuild/android-arm64@0.28.2': optional: true '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.28.1': + '@esbuild/android-arm@0.28.2': optional: true '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.28.1': + '@esbuild/android-x64@0.28.2': optional: true '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.28.1': + '@esbuild/darwin-arm64@0.28.2': optional: true '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.28.1': + '@esbuild/darwin-x64@0.28.2': optional: true '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.28.1': + '@esbuild/freebsd-arm64@0.28.2': optional: true '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.28.1': + '@esbuild/freebsd-x64@0.28.2': optional: true '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.28.1': + '@esbuild/linux-arm64@0.28.2': optional: true '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.28.1': + '@esbuild/linux-arm@0.28.2': optional: true '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.28.1': + '@esbuild/linux-ia32@0.28.2': optional: true '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.28.1': + '@esbuild/linux-loong64@0.28.2': optional: true '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.28.1': + '@esbuild/linux-mips64el@0.28.2': optional: true '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.28.1': + '@esbuild/linux-ppc64@0.28.2': optional: true '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.28.1': + '@esbuild/linux-riscv64@0.28.2': optional: true '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.28.1': + '@esbuild/linux-s390x@0.28.2': optional: true '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.28.1': + '@esbuild/linux-x64@0.28.2': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.28.1': + '@esbuild/netbsd-arm64@0.28.2': optional: true '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.28.1': + '@esbuild/netbsd-x64@0.28.2': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.28.1': + '@esbuild/openbsd-arm64@0.28.2': optional: true '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.28.1': + '@esbuild/openbsd-x64@0.28.2': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.28.1': + '@esbuild/openharmony-arm64@0.28.2': optional: true '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.28.1': + '@esbuild/sunos-x64@0.28.2': optional: true '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.28.1': + '@esbuild/win32-arm64@0.28.2': optional: true '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.28.1': + '@esbuild/win32-ia32@0.28.2': optional: true '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.28.1': + '@esbuild/win32-x64@0.28.2': optional: true '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))': @@ -25092,6 +25096,8 @@ snapshots: '@eslint/js@9.39.4': {} + '@eslint/js@9.39.5': {} + '@eslint/object-schema@2.1.7': {} '@eslint/plugin-kit@0.4.1': @@ -25099,10 +25105,10 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@etchteam/storybook-addon-status@8.1.0(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@etchteam/storybook-addon-status@8.1.0(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: lodash: 4.18.1 - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@exodus/bytes@1.15.1(@noble/hashes@1.8.0)': optionalDependencies: @@ -25774,19 +25780,19 @@ snapshots: '@types/yargs': 17.0.35 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(@typescript/typescript6@6.0.2) - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) optionalDependencies: typescript: '@typescript/typescript6@6.0.2' - '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(@typescript/typescript6@6.0.2) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) optionalDependencies: typescript: '@typescript/typescript6@6.0.2' @@ -26662,10 +26668,10 @@ snapshots: '@popperjs/core@2.11.8': {} - '@prettier/sync@0.6.1(prettier@3.9.4)': + '@prettier/sync@0.6.1(prettier@3.9.6)': dependencies: make-synchronized: 0.8.0 - prettier: 3.9.4 + prettier: 3.9.6 '@protobufjs/aspromise@1.1.2': {} @@ -27666,14 +27672,14 @@ snapshots: '@sentry/types': 7.120.4 '@sentry/utils': 7.120.4 - '@sentry/ember@7.120.3(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@sentry/ember@7.120.3(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@embroider/macros': 1.16.13(supports-color@10.2.2) '@sentry/browser': 7.120.3 '@sentry/core': 7.120.3 '@sentry/types': 7.120.3 '@sentry/utils': 7.120.3 - ember-auto-import: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + ember-auto-import: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-cli-babel: 7.26.11(supports-color@10.2.2) ember-cli-htmlbars: 6.3.0(supports-color@10.2.2) ember-cli-typescript: 5.3.0(supports-color@10.2.2) @@ -27970,10 +27976,10 @@ snapshots: '@standard-schema/utils@0.3.0': {} - '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.31)(react@18.3.1) - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -27989,10 +27995,10 @@ snapshots: - vite - webpack - '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.31)(react@18.3.1) - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -28008,6 +28014,25 @@ snapshots: - vite - webpack + '@storybook/addon-docs@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + dependencies: + '@mdx-js/react': 3.1.1(@types/react@18.3.31)(react@18.3.1) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/react-dom-shim': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + ts-dedent: 2.3.0 + optionalDependencies: + '@types/react': 18.3.31 + transitivePeerDependencies: + - '@types/react-dom' + - esbuild + - rollup + - vite + - webpack + '@storybook/addon-links@10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@storybook/global': 5.0.0 @@ -28016,47 +28041,76 @@ snapshots: '@types/react': 18.3.31 react: 18.3.1 - '@storybook/builder-vite@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/addon-links@10.4.6(@types/react@18.3.31)(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/global': 5.0.0 + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.31 + react: 18.3.1 + + '@storybook/builder-vite@10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + dependencies: + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.3.0 - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/builder-vite@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/builder-vite@10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.3.0 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) + transitivePeerDependencies: + - esbuild + - rollup + - webpack + + '@storybook/builder-vite@10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + dependencies: + '@storybook/csf-plugin': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + ts-dedent: 2.3.0 + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/csf-plugin@10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.28.1 + esbuild: 0.28.2 rollup: 4.62.2 - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) - '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/csf-plugin@10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.28.1 + esbuild: 0.28.2 rollup: 4.62.2 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + + '@storybook/csf-plugin@10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + dependencies: + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + unplugin: 2.3.11 + optionalDependencies: + esbuild: 0.28.2 + rollup: 4.62.2 + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) '@storybook/global@5.0.0': {} @@ -28074,11 +28128,20 @@ snapshots: '@types/react': 18.3.31 '@types/react-dom': 18.3.7(@types/react@18.3.31) - '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/react-dom-shim@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.31 + '@types/react-dom': 18.3.7(@types/react@18.3.31) + + '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@rollup/pluginutils': 5.4.0(rollup@4.62.2) - '@storybook/builder-vite': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/builder-vite': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/react': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) empathic: 2.0.1 magic-string: 0.30.21 @@ -28088,7 +28151,7 @@ snapshots: resolve: 1.22.12 storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -28098,11 +28161,11 @@ snapshots: - typescript - webpack - '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@rollup/pluginutils': 5.4.0(rollup@4.62.2) - '@storybook/builder-vite': 10.4.6(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/builder-vite': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) '@storybook/react': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) empathic: 2.0.1 magic-string: 0.30.21 @@ -28112,7 +28175,31 @@ snapshots: resolve: 1.22.12 storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - esbuild + - rollup + - supports-color + - typescript + - webpack + + '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@typescript/typescript6@6.0.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@storybook/builder-vite': 10.4.6(esbuild@0.28.2)(rollup@4.62.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + '@storybook/react': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2) + empathic: 2.0.1 + magic-string: 0.30.21 + react: 18.3.1 + react-docgen: 8.0.3(supports-color@10.2.2) + react-dom: 18.3.1(react@18.3.1) + resolve: 1.22.12 + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tsconfig-paths: 4.2.0 + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -28138,6 +28225,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/react@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(@typescript/typescript6@6.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/react-dom-shim': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + react: 18.3.1 + react-docgen: 8.0.3(supports-color@10.2.2) + react-docgen-typescript: 2.4.0(@typescript/typescript6@6.0.2) + react-dom: 18.3.1(react@18.3.1) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.31 + '@types/react-dom': 18.3.7(@types/react@18.3.31) + typescript: '@typescript/typescript6@6.0.2' + transitivePeerDependencies: + - supports-color + '@svg-maps/world@2.0.0': {} '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.7(supports-color@10.2.2))': @@ -28357,12 +28460,12 @@ snapshots: postcss: 8.5.26 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@tailwindcss/vite@4.2.2(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) '@tanstack/query-core@5.101.4': {} @@ -29696,64 +29799,64 @@ snapshots: '@types/node': 26.0.0 optional: true - '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.56.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.67.0 eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) - ignore: 7.0.5 + ignore: 7.0.6 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.56.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.67.0 eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) - ignore: 7.0.5 + ignore: 7.0.6 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/type-utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/visitor-keys': 8.67.0 eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) - ignore: 7.0.5 + ignore: 7.0.6 natural-compare: 1.4.0 ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/type-utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/visitor-keys': 8.67.0 eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) - ignore: 7.0.5 + ignore: 7.0.6 natural-compare: 1.4.0 ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) typescript: '@typescript/typescript6@6.0.2' @@ -29784,31 +29887,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)': + '@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': + '@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.49.0(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/project-service@8.56.1(supports-color@10.2.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3) '@typescript-eslint/types': 8.62.1 @@ -29817,28 +29920,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/project-service@8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.62.1(@typescript/typescript6@6.0.2) '@typescript-eslint/types': 8.62.1 debug: 4.4.3(supports-color@10.2.2) - typescript: 5.9.3 + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2)': + '@typescript-eslint/project-service@8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.1(@typescript/typescript6@6.0.2) - '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/tsconfig-utils': 8.67.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.67.0 debug: 4.4.3(supports-color@10.2.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.49.0': + '@typescript-eslint/project-service@8.67.0(supports-color@10.2.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) + '@typescript-eslint/types': 8.67.0 + debug: 4.4.3(supports-color@10.2.2) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color '@typescript-eslint/scope-manager@8.56.1': dependencies: @@ -29850,9 +29957,10 @@ snapshots: '@typescript-eslint/types': 8.62.1 '@typescript-eslint/visitor-keys': 8.62.1 - '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': + '@typescript-eslint/scope-manager@8.67.0': dependencies: - typescript: 5.9.3 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': dependencies: @@ -29866,35 +29974,19 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.49.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.67.0(@typescript/typescript6@6.0.2)': dependencies: - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + typescript: '@typescript/typescript6@6.0.2' - '@typescript-eslint/type-utils@8.49.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.67.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) - ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)': + '@typescript-eslint/type-utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) - '@typescript-eslint/utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) @@ -29902,11 +29994,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': + '@typescript-eslint/type-utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) - '@typescript-eslint/utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) @@ -29914,27 +30006,36 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.49.0': {} - - '@typescript-eslint/types@8.56.1': {} - - '@typescript-eslint/types@8.62.1': {} + '@typescript-eslint/type-utils@8.67.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + debug: 4.4.3(supports-color@10.2.2) + eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@typescript-eslint/typescript-estree@8.49.0(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.67.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.49.0(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) - minimatch: 9.0.9 - semver: 7.8.5 - tinyglobby: 0.2.17 + eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color + '@typescript-eslint/types@8.56.1': {} + + '@typescript-eslint/types@8.62.1': {} + + '@typescript-eslint/types@8.67.0': {} + '@typescript-eslint/typescript-estree@8.56.1(supports-color@10.2.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.56.1(supports-color@10.2.2)(typescript@5.9.3) @@ -29965,54 +30066,90 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(supports-color@10.2.2)(typescript@5.9.3) - eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) - typescript: 5.9.3 + '@typescript-eslint/project-service': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + '@typescript-eslint/tsconfig-utils': 8.67.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 + debug: 4.4.3(supports-color@10.2.2) + minimatch: 10.2.5 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.67.0(supports-color@10.2.2)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(supports-color@10.2.2)(typescript@5.9.3) - eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) + '@typescript-eslint/project-service': 8.67.0(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 + debug: 4.4.3(supports-color@10.2.2) + minimatch: 10.2.5 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)': + '@typescript-eslint/utils@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)) '@typescript-eslint/scope-manager': 8.62.1 '@typescript-eslint/types': 8.62.1 '@typescript-eslint/typescript-estree': 8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) + typescript: '@typescript/typescript6@6.0.2' + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2)) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': + '@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.49.0': + '@typescript-eslint/utils@8.67.0(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.49.0 - eslint-visitor-keys: 4.2.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2)) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@5.9.3) + eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.67.0(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2)) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color '@typescript-eslint/visitor-keys@8.56.1': dependencies: @@ -30024,6 +30161,11 @@ snapshots: '@typescript-eslint/types': 8.62.1 eslint-visitor-keys: 5.0.1 + '@typescript-eslint/visitor-keys@8.67.0': + dependencies: + '@typescript-eslint/types': 8.67.0 + eslint-visitor-keys: 5.0.1 + '@typescript/typescript-aix-ppc64@7.0.2': optional: true @@ -30117,55 +30259,41 @@ snapshots: '@ungap/structured-clone@1.3.1': {} - '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) - '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) - '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - - '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': - dependencies: - '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - playwright: 1.61.1 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) - '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) playwright: 1.61.1 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - optional: true - '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) playwright: 1.61.1 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -30173,13 +30301,13 @@ snapshots: - vite optional: true - '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) playwright: 1.61.1 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -30187,16 +30315,16 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) ws: 8.21.0 transitivePeerDependencies: - bufferutil @@ -30204,16 +30332,16 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) ws: 8.21.0 transitivePeerDependencies: - bufferutil @@ -30222,34 +30350,16 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - ws: 8.21.0 - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - - '@vitest/browser@4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10)': - dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 - pngjs: 7.0.0 - sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) ws: 8.21.0 transitivePeerDependencies: - bufferutil @@ -30270,9 +30380,9 @@ snapshots: obug: 2.1.3 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10) '@vitest/expect@3.2.4': dependencies: @@ -30291,41 +30401,32 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2) - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) - '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) - '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - - '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))': - dependencies: - '@vitest/spy': 4.1.10 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - msw: 2.14.6(@types/node@26.0.0)(typescript@5.9.3) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -30335,10 +30436,6 @@ snapshots: dependencies: tinyrainbow: 3.1.0 - '@vitest/pretty-format@4.1.9': - dependencies: - tinyrainbow: 3.1.0 - '@vitest/runner@4.1.10': dependencies: '@vitest/utils': 4.1.10 @@ -30357,16 +30454,16 @@ snapshots: '@vitest/spy@4.1.10': {} - '@vitest/ui@4.1.9(vitest@4.1.10)': + '@vitest/ui@4.1.10(vitest@4.1.10)': dependencies: - '@vitest/utils': 4.1.9 + '@vitest/utils': 4.1.10 fflate: 0.8.3 flatted: 3.4.2 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/utils@3.2.4': dependencies: @@ -30380,12 +30477,6 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 - '@vitest/utils@4.1.9': - dependencies: - '@vitest/pretty-format': 4.1.9 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 - '@volar/language-core@2.4.28': dependencies: '@volar/source-map': 2.4.28 @@ -31273,14 +31364,14 @@ snapshots: schema-utils: 2.7.1 webpack: 4.47.0 - babel-loader@8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + babel-loader@8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) babel-messages@6.23.0: dependencies: @@ -32368,7 +32459,7 @@ snapshots: broccoli-persistent-filter: 2.3.1(supports-color@10.2.2) minimist: 1.2.8 object-assign: 4.1.1 - postcss: 8.5.16 + postcss: 8.5.26 transitivePeerDependencies: - supports-color @@ -33521,7 +33612,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.3.0 + js-yaml: 4.3.1 parse-json: 5.2.0 optionalDependencies: typescript: '@typescript/typescript6@6.0.2' @@ -33660,19 +33751,19 @@ snapshots: dependencies: utrie: 1.0.2 - css-loader@5.2.7(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + css-loader@5.2.7(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: - icss-utils: 5.1.0(postcss@8.5.16) + icss-utils: 5.1.0(postcss@8.5.26) loader-utils: 2.0.4 - postcss: 8.5.16 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.16) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.16) - postcss-modules-scope: 3.2.1(postcss@8.5.16) - postcss-modules-values: 4.0.0(postcss@8.5.16) + postcss: 8.5.26 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.26) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.26) + postcss-modules-scope: 3.2.1(postcss@8.5.26) + postcss-modules-values: 4.0.0(postcss@8.5.26) postcss-value-parser: 4.2.0 schema-utils: 3.3.0 semver: 7.8.5 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) css-prefers-color-scheme@6.0.3(postcss@8.5.26): dependencies: @@ -34493,7 +34584,7 @@ snapshots: - webpack-cli - webpack-command - ember-auto-import@2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + ember-auto-import@2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) @@ -34503,7 +34594,7 @@ snapshots: '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@embroider/macros': 1.16.13(supports-color@10.2.2) '@embroider/shared-internals': 2.9.2(supports-color@10.2.2) - babel-loader: 8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + babel-loader: 8.4.1(@babel/core@7.29.7(supports-color@10.2.2))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) babel-plugin-ember-modules-api-polyfill: 3.5.0 babel-plugin-ember-template-compilation: 2.4.1 babel-plugin-htmlbars-inline-precompile: 5.3.1 @@ -34513,7 +34604,7 @@ snapshots: broccoli-merge-trees: 4.2.0(supports-color@10.2.2) broccoli-plugin: 4.0.7(supports-color@10.2.2) broccoli-source: 3.0.1 - css-loader: 5.2.7(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + css-loader: 5.2.7(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) debug: 4.4.3(supports-color@10.2.2) fs-extra: 10.1.0 fs-tree-diff: 2.0.1(supports-color@10.2.2) @@ -34521,14 +34612,14 @@ snapshots: is-subdir: 1.2.0 js-string-escape: 1.0.1 lodash: 4.18.1 - mini-css-extract-plugin: 2.10.2(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + mini-css-extract-plugin: 2.10.2(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) minimatch: 3.1.5 parse5: 6.0.1 pkg-entry-points: 1.1.2 resolve: 1.22.12 resolve-package-path: 4.0.3 semver: 7.8.5 - style-loader: 2.0.0(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + style-loader: 2.0.0(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) typescript-memoize: 1.1.1 walk-sync: 3.0.0 transitivePeerDependencies: @@ -35423,10 +35514,10 @@ snapshots: transitivePeerDependencies: - supports-color - ember-in-viewport@4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + ember-in-viewport@4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@embroider/macros': 1.16.13(supports-color@10.2.2) - ember-auto-import: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + ember-auto-import: 2.10.0(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) ember-cli-babel: 7.26.11(supports-color@10.2.2) ember-destroyable-polyfill: 2.0.3(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) ember-modifier: 4.2.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) @@ -35440,12 +35531,12 @@ snapshots: - supports-color - webpack - ember-infinity@2.3.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + ember-infinity@2.3.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@ember/render-modifiers': 2.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) ember-cli-babel: 7.26.11(supports-color@10.2.2) ember-cli-htmlbars: 5.7.2(supports-color@10.2.2) - ember-in-viewport: 4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + ember-in-viewport: 4.1.0(@babel/core@7.29.7(supports-color@10.2.2))(ember-source@3.24.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) transitivePeerDependencies: - '@babel/core' - '@glint/template' @@ -36130,34 +36221,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.28.1: + esbuild@0.28.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 escalade@3.2.0: {} @@ -36271,7 +36362,7 @@ snapshots: eslint-plugin-ghost@3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@kapouer/eslint-plugin-no-return-in-loop': 1.0.0 - '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) '@typescript-eslint/parser': 8.56.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) eslint-plugin-ember: 12.7.5(@babel/core@7.29.7(supports-color@10.2.2))(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(typescript@5.9.3) @@ -36288,7 +36379,7 @@ snapshots: eslint-plugin-ghost@3.5.0(@babel/core@7.29.7(supports-color@10.2.2))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@kapouer/eslint-plugin-no-return-in-loop': 1.0.0 - '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) '@typescript-eslint/parser': 8.56.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) eslint-plugin-ember: 12.7.5(@babel/core@7.29.7(supports-color@10.2.2))(@typescript-eslint/parser@8.56.1(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) @@ -36423,22 +36514,22 @@ snapshots: dependencies: eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) - eslint-plugin-storybook@10.4.6(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2): + eslint-plugin-storybook@10.4.6(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@10.2.2): dependencies: '@typescript-eslint/utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-tailwindcss@3.18.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)): + eslint-plugin-tailwindcss@3.18.3(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0)): dependencies: fast-glob: 3.3.3 postcss: 8.5.26 synckit: 0.11.13 - tailwind-api-utils: 1.0.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)) - tailwindcss: 3.4.19(tsx@4.23.0)(yaml@2.9.0) + tailwind-api-utils: 1.0.3(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0)) + tailwindcss: 3.4.19(tsx@4.23.12)(yaml@2.9.0) eslint-plugin-tailwindcss@4.0.4(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(tailwindcss@4.2.2): dependencies: @@ -37849,11 +37940,11 @@ snapshots: merge2: 1.4.1 slash: 4.0.0 - globby@16.2.0: + globby@16.2.3: dependencies: '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 - ignore: 7.0.5 + ignore: 7.0.6 is-path-inside: 4.0.0 slash: 5.1.0 unicorn-magic: 0.4.0 @@ -38219,7 +38310,7 @@ snapshots: '@vitest/expect': 4.1.10 jest: 29.7.0(@types/node@22.20.1)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(supports-color@10.2.2) jest-snapshot: 30.3.0(supports-color@10.2.2) - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) html2canvas-pro@2.2.1: dependencies: @@ -38387,9 +38478,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.16): + icss-utils@5.1.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 ieee754@1.2.1: {} @@ -39590,7 +39681,7 @@ snapshots: '@asamuzakjp/css-color': 5.1.11 '@asamuzakjp/dom-selector': 7.1.1 '@bramus/specificity': 2.4.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.5(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.7(css-tree@3.2.1) '@exodus/bytes': 1.15.1(@noble/hashes@1.8.0) css-tree: 3.2.1 data-urls: 7.0.0(@noble/hashes@1.8.0) @@ -41170,11 +41261,11 @@ snapshots: mingo@2.5.3: {} - mini-css-extract-plugin@2.10.2(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + mini-css-extract-plugin@2.10.2(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: schema-utils: 4.3.3 tapable: 2.3.3 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) mini-queue@0.0.14(supports-color@10.2.2): dependencies: @@ -41418,32 +41509,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3): - dependencies: - '@inquirer/confirm': 6.1.1(@types/node@26.0.0) - '@mswjs/interceptors': 0.41.9 - '@open-draft/deferred-promise': 3.0.0 - '@types/statuses': 2.0.6 - cookie: 1.1.1 - graphql: 16.14.2 - headers-polyfill: 5.0.1 - is-node-process: 1.2.0 - outvariant: 1.4.3 - path-to-regexp: 6.3.0 - picocolors: 1.1.1 - rettime: 0.11.11 - statuses: 2.0.2 - strict-event-emitter: 0.5.1 - tough-cookie: 6.0.1 - type-fest: 5.8.0 - until-async: 3.0.2 - yargs: 17.7.3 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@types/node' - optional: true - multer@2.2.0: dependencies: append-field: 1.0.0 @@ -41574,7 +41639,7 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - nock@14.0.16: + nock@14.0.17: dependencies: '@mswjs/interceptors': 0.41.9 json-stringify-safe: 5.0.1 @@ -42689,14 +42754,14 @@ snapshots: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-cli@11.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.0): + postcss-cli@11.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.12): dependencies: chokidar: 3.6.0 dependency-graph: 1.0.0 fs-extra: 11.3.6 picocolors: 1.1.1 postcss: 8.5.26 - postcss-load-config: 5.1.0(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.0) + postcss-load-config: 5.1.0(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.12) postcss-reporter: 7.1.0(postcss@8.5.26) pretty-hrtime: 1.0.3 read-cache: 1.0.0 @@ -42887,22 +42952,22 @@ snapshots: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-load-config@5.1.0(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.0): + postcss-load-config@5.1.0(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.12): dependencies: lilconfig: 3.1.3 yaml: 2.9.0 optionalDependencies: jiti: 2.7.0 postcss: 8.5.26 - tsx: 4.23.0 + tsx: 4.23.12 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.0)(yaml@2.9.0): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.12)(yaml@2.9.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.26 - tsx: 4.23.0 + tsx: 4.23.12 yaml: 2.9.0 postcss-logical@5.0.4(postcss@8.5.26): @@ -42998,26 +43063,26 @@ snapshots: postcss: 8.5.26 postcss-selector-parser: 7.1.4 - postcss-modules-extract-imports@3.1.0(postcss@8.5.16): + postcss-modules-extract-imports@3.1.0(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 - postcss-modules-local-by-default@4.2.0(postcss@8.5.16): + postcss-modules-local-by-default@4.2.0(postcss@8.5.26): dependencies: - icss-utils: 5.1.0(postcss@8.5.16) - postcss: 8.5.16 + icss-utils: 5.1.0(postcss@8.5.26) + postcss: 8.5.26 postcss-selector-parser: 7.1.4 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.16): + postcss-modules-scope@3.2.1(postcss@8.5.26): dependencies: - postcss: 8.5.16 + postcss: 8.5.26 postcss-selector-parser: 7.1.4 - postcss-modules-values@4.0.0(postcss@8.5.16): + postcss-modules-values@4.0.0(postcss@8.5.26): dependencies: - icss-utils: 5.1.0(postcss@8.5.16) - postcss: 8.5.16 + icss-utils: 5.1.0(postcss@8.5.26) + postcss: 8.5.26 postcss-nested@6.2.0(postcss@8.5.26): dependencies: @@ -43363,12 +43428,14 @@ snapshots: fake-xml-http-request: 2.1.2 route-recognizer: 0.3.4 - prettier-plugin-organize-attributes@1.0.0(prettier@3.9.4): + prettier-plugin-organize-attributes@1.0.0(prettier@3.9.6): dependencies: - prettier: 3.9.4 + prettier: 3.9.6 prettier@3.9.4: {} + prettier@3.9.6: {} + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -45174,7 +45241,7 @@ snapshots: '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 '@webcontainer/env': 1.1.1 - esbuild: 0.28.1 + esbuild: 0.28.2 open: 10.2.0 oxc-parser: 0.127.0 oxc-resolver: 11.24.2 @@ -45192,6 +45259,33 @@ snapshots: - react-dom - utf-8-validate + storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.31)(prettier@3.9.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@storybook/global': 5.0.0 + '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/jest-dom': 6.9.1 + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) + '@vitest/expect': 3.2.4 + '@vitest/spy': 3.2.4 + '@webcontainer/env': 1.1.1 + esbuild: 0.28.2 + open: 10.2.0 + oxc-parser: 0.127.0 + oxc-resolver: 11.24.2 + recast: 0.23.11 + semver: 7.8.5 + use-sync-external-store: 1.6.0(react@18.3.1) + ws: 8.21.0 + optionalDependencies: + '@types/react': 18.3.31 + prettier: 3.9.6 + transitivePeerDependencies: + - '@testing-library/dom' + - bufferutil + - react + - react-dom + - utf-8-validate + stream-browserify@2.0.2: dependencies: inherits: 2.0.4 @@ -45404,11 +45498,11 @@ snapshots: dependencies: boundary: 2.0.0 - style-loader@2.0.0(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + style-loader@2.0.0(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) style-mod@4.1.3: {} @@ -45434,11 +45528,11 @@ snapshots: postcss: 8.5.26 postcss-selector-parser: 7.1.4 - stylelint@17.14.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2): + stylelint@17.14.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2): dependencies: '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-syntax-patches-for-csstree': 1.1.5(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.7(css-tree@3.2.1) '@csstools/css-tokenizer': 4.0.0 '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.4) @@ -45452,10 +45546,10 @@ snapshots: fastest-levenshtein: 1.0.16 file-entry-cache: 11.1.5 global-modules: 2.0.0 - globby: 16.2.0 + globby: 16.2.3 globjoin: 0.1.4 html-tags: 5.1.0 - ignore: 7.0.5 + ignore: 7.0.6 import-meta-resolve: 4.2.0 mathml-tag-names: 4.0.0 meow: 14.1.0 @@ -45609,12 +45703,12 @@ snapshots: tagged-tag@1.0.0: {} - tailwind-api-utils@1.0.3(tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0)): + tailwind-api-utils@1.0.3(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0)): dependencies: enhanced-resolve: 5.24.1 jiti: 2.7.0 local-pkg: 1.2.1 - tailwindcss: 3.4.19(tsx@4.23.0)(yaml@2.9.0) + tailwindcss: 3.4.19(tsx@4.23.12)(yaml@2.9.0) tailwind-api-utils@1.0.3(tailwindcss@4.2.2): dependencies: @@ -45625,7 +45719,7 @@ snapshots: tailwind-merge@3.6.0: {} - tailwindcss@3.4.19(tsx@4.23.0)(yaml@2.9.0): + tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -45644,7 +45738,7 @@ snapshots: postcss: 8.5.26 postcss-import: 15.1.0(postcss@8.5.26) postcss-js: 4.1.0(postcss@8.5.26) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.0)(yaml@2.9.0) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.12)(yaml@2.9.0) postcss-nested: 6.2.0(postcss@8.5.26) postcss-selector-parser: 6.1.4 resolve: 1.22.12 @@ -45741,36 +45835,36 @@ snapshots: webpack-sources: 1.4.3 worker-farm: 1.7.0 - terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) optionalDependencies: '@swc/core': 1.15.43(@swc/helpers@0.5.23) clean-css: 4.2.4 cssnano: 4.1.10 csso: 5.0.5 - esbuild: 0.28.1 + esbuild: 0.28.2 lightningcss: 1.32.0 postcss: 8.5.26 uglify-js: 3.19.3 - terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) optionalDependencies: '@swc/core': 1.15.43(@swc/helpers@0.5.23) clean-css: 4.2.4 cssnano: 7.1.9(postcss@8.5.26) csso: 5.0.5 - esbuild: 0.28.1 + esbuild: 0.28.2 lightningcss: 1.32.0 postcss: 8.5.26 uglify-js: 3.19.3 @@ -46136,9 +46230,9 @@ snapshots: tsscmp@1.0.6: {} - tsx@4.23.0: + tsx@4.23.12: dependencies: - esbuild: 0.28.1 + esbuild: 0.28.2 optionalDependencies: fsevents: 2.3.3 @@ -46229,23 +46323,23 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2): + typescript-eslint@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/parser': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/typescript-estree': 8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) - '@typescript-eslint/utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2) eslint: 9.39.4(jiti@1.21.7)(supports-color@10.2.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - typescript-eslint@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2): + typescript-eslint@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/parser': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - '@typescript-eslint/typescript-estree': 8.62.1(@typescript/typescript6@6.0.2)(supports-color@10.2.2) - '@typescript-eslint/utils': 8.62.1(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.4(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) eslint: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: @@ -46461,7 +46555,7 @@ snapshots: unpipe@1.0.0: {} - unplugin-dts@1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + unplugin-dts@1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) '@volar/typescript': 2.4.28(@typescript/typescript6@6.0.2) @@ -46473,11 +46567,11 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' unplugin: 2.3.11 optionalDependencies: - esbuild: 0.28.1 + esbuild: 0.28.2 rolldown: 1.1.4 rollup: 4.62.2 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) + webpack: 5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3) transitivePeerDependencies: - supports-color @@ -46756,16 +46850,16 @@ snapshots: - bare-abort-controller - react-native-b4a - vite-plugin-css-injected-by-js@3.5.2(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vite-plugin-css-injected-by-js@3.5.2(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)): dependencies: - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) - vite-plugin-dts@5.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): + vite-plugin-dts@5.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)): dependencies: - unplugin-dts: 1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + unplugin-dts: 1.0.3(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.1.4)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) optionalDependencies: rollup: 4.62.2 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@rspack/core' - '@vue/language-core' @@ -46775,51 +46869,51 @@ snapshots: - typescript - webpack - vite-plugin-svgr@4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vite-plugin-svgr@4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2))(supports-color@10.2.2) - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-plugin-svgr@4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vite-plugin-svgr@4.5.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2))(supports-color@10.2.2) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-plugin-svgr@5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vite-plugin-svgr@5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2))(supports-color@10.2.2) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-plugin-svgr@5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vite-plugin-svgr@5.2.0(@typescript/typescript6@6.0.2)(rollup@4.62.2)(supports-color@10.2.2)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2)(supports-color@10.2.2))(supports-color@10.2.2) - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0): + vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 @@ -46828,14 +46922,14 @@ snapshots: tinyglobby: 0.2.17 optionalDependencies: '@types/node': 22.20.1 - esbuild: 0.28.1 + esbuild: 0.28.2 fsevents: 2.3.3 jiti: 2.7.0 terser: 5.48.0 - tsx: 4.23.0 + tsx: 4.23.12 yaml: 2.9.0 - vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0): + vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 @@ -46844,14 +46938,14 @@ snapshots: tinyglobby: 0.2.17 optionalDependencies: '@types/node': 26.0.0 - esbuild: 0.28.1 + esbuild: 0.28.2 fsevents: 2.3.3 jiti: 1.21.7 terser: 5.48.0 - tsx: 4.23.0 + tsx: 4.23.12 yaml: 2.9.0 - vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0): + vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 @@ -46860,26 +46954,26 @@ snapshots: tinyglobby: 0.2.17 optionalDependencies: '@types/node': 26.0.0 - esbuild: 0.28.1 + esbuild: 0.28.2 fsevents: 2.3.3 jiti: 2.7.0 terser: 5.48.0 - tsx: 4.23.0 + tsx: 4.23.12 yaml: 2.9.0 vitest-browser-react@2.2.0(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@4.1.10): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) optionalDependencies: '@types/react': 18.3.31 '@types/react-dom': 18.3.7(@types/react@18.3.31) - vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@22.20.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -46896,84 +46990,22 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 22.20.1 - '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) - jsdom: 29.1.1(@noble/hashes@1.8.0) - transitivePeerDependencies: - - msw - - vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.1.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.3 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.1.0 - tinybench: 2.9.0 - tinyexec: 1.3.0 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 26.0.0 - '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) - '@vitest/ui': 4.1.9(vitest@4.1.10) - jsdom: 29.1.1(@noble/hashes@1.8.0) - transitivePeerDependencies: - - msw - - vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.1.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.3 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.1.0 - tinybench: 2.9.0 - tinyexec: 1.3.0 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 26.0.0 - '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@22.20.1)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@22.20.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10) '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + '@vitest/ui': 4.1.10(vitest@4.1.10) jsdom: 29.1.1(@noble/hashes@1.8.0) transitivePeerDependencies: - msw - vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -46990,21 +47022,22 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 26.0.0 - '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10) '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + '@vitest/ui': 4.1.10(vitest@4.1.10) jsdom: 29.1.1(@noble/hashes@1.8.0) transitivePeerDependencies: - msw - vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -47021,13 +47054,14 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 26.0.0 - '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(typescript@5.9.3))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-playwright': 4.1.10(msw@2.14.6(@types/node@26.0.0)(@typescript/typescript6@6.0.2))(playwright@1.61.1)(vite@8.1.3(@types/node@26.0.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.10) '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + '@vitest/ui': 4.1.10(vitest@4.1.10) jsdom: 29.1.1(@noble/hashes@1.8.0) transitivePeerDependencies: - msw @@ -47172,7 +47206,7 @@ snapshots: watchpack: 1.7.5 webpack-sources: 1.4.3 - webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3): + webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.9 @@ -47196,7 +47230,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@4.1.10)(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) watchpack: 2.5.2 webpack-sources: 3.5.0 transitivePeerDependencies: @@ -47213,7 +47247,7 @@ snapshots: - postcss - uglify-js - webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3): + webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.9 @@ -47237,7 +47271,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) + terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@4.2.4)(cssnano@7.1.9(postcss@8.5.26))(csso@5.0.5)(esbuild@0.28.2)(lightningcss@1.32.0)(postcss@8.5.26)(uglify-js@3.19.3)) watchpack: 2.5.2 webpack-sources: 3.5.0 transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d93158b77e2..3a7ed41136e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -26,7 +26,7 @@ allowBuilds: 'core-js@2.6.12': true cpu-features: false 'dtrace-provider@0.8.8': true - 'esbuild@0.25.12 || 0.28.1': true + 'esbuild@0.25.12 || 0.28.2': true 'fsevents@1.2.13 || 2.3.2 || 2.3.3': true 'msw@2.14.6': true 'nx@23.1.1': true @@ -52,7 +52,7 @@ catalog: '@codemirror/view': 6.43.6 '@ebay/nice-modal-react': 1.2.13 '@eslint/compat': 2.1.0 - '@eslint/js': 9.39.4 + '@eslint/js': 9.39.5 '@faker-js/faker': 10.5.0 '@playwright/test': 1.61.1 '@radix-ui/react-avatar': 1.2.1 @@ -105,13 +105,13 @@ catalog: '@types/semver': 7.8.0 '@types/sinon': 22.0.0 '@types/validator': 13.15.10 - '@typescript-eslint/eslint-plugin': 8.49.0 - '@typescript-eslint/parser': 8.49.0 + '@typescript-eslint/parser': 8.67.0 '@uiw/codemirror-extensions-basic-setup': 4.25.11 '@uiw/react-codemirror': 4.25.11 '@vitejs/plugin-react': 6.0.3 '@vitest/browser-playwright': 4.1.10 '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 ajv: 8.20.0 ajv-formats: 3.0.1 better-sqlite3: 12.11.1 @@ -128,6 +128,7 @@ catalog: dompurify: 3.4.11 dotenv: 17.4.2 entities: 4.5.0 + esbuild: 0.28.2 eslint: 9.39.4 eslint-plugin-ghost: 3.5.0 eslint-plugin-react: 7.37.5 @@ -147,9 +148,11 @@ catalog: moment: 2.30.1 moment-timezone: 0.5.45 msw: 2.14.6 + nock: 14.0.17 node-html-markdown: 2.0.0 postcss: 8.5.26 preact: ^10.29.2 + prettier: 3.9.6 react: 18.3.1 react-dom: 18.3.1 react-router: 7.18.1 @@ -157,11 +160,12 @@ catalog: sinon: 22.0.0 sonner: 2.0.7 storybook: 10.4.6 + stylelint: 17.14.1 supertest: 7.2.2 tailwindcss: 4.2.2 temporal-polyfill: 0.3.2 tldts: ^7.4.4 - tsx: 4.23.0 + tsx: 4.23.12 tw-animate-css: 1.4.0 type-fest: 5.7.0 # `typescript` resolves to the @typescript/typescript6 shim (the last JS-based @@ -173,7 +177,7 @@ catalog: # `typescript: <7.x>` entry once typescript-eslint supports the TS7.1 API. typescript: 'npm:@typescript/typescript6@6.0.2' '@typescript/native': 'npm:typescript@7.0.2' - typescript-eslint: 8.62.1 + typescript-eslint: 8.67.0 validator: 13.12.0 vite: 8.1.3 vite-plugin-svgr: 4.5.0 @@ -226,8 +230,8 @@ overrides: juice: 9.1.0 ember-basic-dropdown: 6.0.2 ember-in-viewport: 4.1.0 - 'eslint-plugin-ghost>@typescript-eslint/eslint-plugin': 8.49.0 - 'eslint-plugin-ghost>@typescript-eslint/utils': 8.49.0 + 'eslint-plugin-ghost>@typescript-eslint/eslint-plugin': 8.67.0 + 'eslint-plugin-ghost>@typescript-eslint/utils': 8.67.0 'ember-svg-jar>cheerio': 1.2.0 'juice>cheerio': 0.22.0 '@babel/runtime@<7.26.10': ^7.26.10 @@ -241,6 +245,7 @@ overrides: 'debug@<2.6.9': ^2.6.9 'diff@<3.5.1': ^3.5.1 'diff@>=6.0.0 <8.0.3': ^8.0.3 + 'esbuild@>=0.28.0': 'catalog:' 'fast-xml-parser@<5.7.0': ^5.7.0 'follow-redirects@<1.16.0': ^1.16.0 'form-data@<2.5.4': ^2.5.4 From 05447b2d36e2495d724fe2d198641ebf1b1ea787 Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Thu, 13 Aug 2026 15:50:18 -0400 Subject: [PATCH 13/19] Cleaned up remaining node-fetch/cross-fetch references (#29961) no ref - remove unnecessary node-fetch/cross-fetch deps from repo, as fetch is available natively in the last few majors of Node --- apps/announcement-bar/package.json | 1 - apps/announcement-bar/test/setup-tests.js | 4 --- apps/portal/package.json | 1 - apps/portal/test/setup-tests.js | 3 --- apps/sodo-search/package.json | 1 - apps/sodo-search/test/setup-tests.js | 3 --- .../activitypub/activity-pub-service.ts | 1 - ghost/core/package.json | 2 -- .../click-tracking.isolated.test.js | 3 +-- knip.json | 7 ----- pnpm-lock.yaml | 26 ------------------- 11 files changed, 1 insertion(+), 51 deletions(-) diff --git a/apps/announcement-bar/package.json b/apps/announcement-bar/package.json index 01a413f8434..3633c400780 100644 --- a/apps/announcement-bar/package.json +++ b/apps/announcement-bar/package.json @@ -52,7 +52,6 @@ "@internal/cfg-eslint-react": "workspace:*", "@internal/cfg-vite-public-app": "workspace:*", "@vitest/coverage-v8": "catalog:", - "cross-fetch": "catalog:", "eslint": "catalog:", "jsdom": "catalog:", "vite": "catalog:", diff --git a/apps/announcement-bar/test/setup-tests.js b/apps/announcement-bar/test/setup-tests.js index aa694bd2872..db409cbcd9e 100644 --- a/apps/announcement-bar/test/setup-tests.js +++ b/apps/announcement-bar/test/setup-tests.js @@ -1,6 +1,2 @@ -import {fetch} from 'cross-fetch'; - // TODO: remove this once we're switched `jest` to `vi` in code globalThis.jest = vi; - -globalThis.fetch = fetch; diff --git a/apps/portal/package.json b/apps/portal/package.json index 52c95f782aa..85af1adebf2 100644 --- a/apps/portal/package.json +++ b/apps/portal/package.json @@ -53,7 +53,6 @@ "@testing-library/user-event": "14.6.1", "@tryghost/i18n": "workspace:*", "@vitest/coverage-v8": "catalog:", - "cross-fetch": "catalog:", "dompurify": "catalog:", "eslint": "catalog:", "jsdom": "catalog:", diff --git a/apps/portal/test/setup-tests.js b/apps/portal/test/setup-tests.js index cf351f374c8..1648ed05bfc 100644 --- a/apps/portal/test/setup-tests.js +++ b/apps/portal/test/setup-tests.js @@ -1,9 +1,6 @@ import * as matchers from '@testing-library/jest-dom/matchers'; import {afterEach, expect} from 'vitest'; import {cleanup} from '@testing-library/react'; -import {fetch} from 'cross-fetch'; - -globalThis.fetch = fetch; // Add the cleanup function for React testing library afterEach(cleanup); diff --git a/apps/sodo-search/package.json b/apps/sodo-search/package.json index c8d85e87e62..1c81395d7a6 100644 --- a/apps/sodo-search/package.json +++ b/apps/sodo-search/package.json @@ -56,7 +56,6 @@ "@testing-library/react": "catalog:react17", "@vitest/coverage-v8": "catalog:", "autoprefixer": "10.5.4", - "cross-fetch": "catalog:", "eslint": "catalog:", "jsdom": "catalog:", "nock": "catalog:", diff --git a/apps/sodo-search/test/setup-tests.js b/apps/sodo-search/test/setup-tests.js index e2c6bfc73ed..3d62176e639 100644 --- a/apps/sodo-search/test/setup-tests.js +++ b/apps/sodo-search/test/setup-tests.js @@ -1,13 +1,10 @@ import '@testing-library/jest-dom/vitest'; import {afterEach} from 'vitest'; import {cleanup} from '@testing-library/react'; -import {fetch} from 'cross-fetch'; // TODO: remove this once we're switched `jest` to `vi` in code globalThis.jest = vi; -globalThis.fetch = fetch; - // Add the cleanup function for React testing library afterEach(cleanup); diff --git a/ghost/core/core/server/services/activitypub/activity-pub-service.ts b/ghost/core/core/server/services/activitypub/activity-pub-service.ts index 3429f6df7c9..b7325c65c59 100644 --- a/ghost/core/core/server/services/activitypub/activity-pub-service.ts +++ b/ghost/core/core/server/services/activitypub/activity-pub-service.ts @@ -1,7 +1,6 @@ import ObjectID from 'bson-objectid'; import {Knex} from 'knex'; import {IdentityTokenService} from '../identity-tokens/identity-token-service'; -import fetch from 'node-fetch'; type ExpectedWebhook = { event: string; diff --git a/ghost/core/package.json b/ghost/core/package.json index 62618f29d1c..5afb7abd4dc 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -217,7 +217,6 @@ "multer": "2.2.0", "mysql2": "3.22.5", "nconf": "0.13.0", - "node-fetch": "2.7.0", "node-html-markdown": "catalog:", "node-jose": "2.2.0", "nodemailer": "8.0.11", @@ -263,7 +262,6 @@ "@types/mime-types": "3.0.1", "@types/nconf": "catalog:", "@types/node": "catalog:", - "@types/node-fetch": "2.6.13", "@types/node-jose": "1.1.13", "@types/nodemailer": "8.0.1", "@types/on-headers": "1.0.4", diff --git a/ghost/core/test/e2e-server/click-tracking.isolated.test.js b/ghost/core/test/e2e-server/click-tracking.isolated.test.js index 2534f872eab..127006b1d08 100644 --- a/ghost/core/test/e2e-server/click-tracking.isolated.test.js +++ b/ghost/core/test/e2e-server/click-tracking.isolated.test.js @@ -1,5 +1,4 @@ const assert = require('node:assert/strict'); -const fetch = require('node-fetch').default; const {agentProvider, mockManager, fixtureManager, matchers} = require('../utils/e2e-framework'); const urlUtils = require('../../core/shared/url-utils').default; const jobService = require('../../core/server/services/jobs/job-service'); @@ -72,7 +71,7 @@ describe('Click Tracking', function () { `/links/?filter=${encodeURIComponent(`post_id:'${post.id}'`)}` ); - /** @type {(url: string) => Promise} */ + /** @type {(url: string) => Promise} */ const fetchWithoutFollowingRedirect = url => fetch(url, {redirect: 'manual'}); let internalRedirectHappened = false; diff --git a/knip.json b/knip.json index 3fdd55a3aed..c4d0cc30d5c 100644 --- a/knip.json +++ b/knip.json @@ -62,11 +62,6 @@ "src/test/*.{ts,tsx}" ] }, - "apps/announcement-bar": { - "ignoreDependencies": [ - "cross-fetch" - ] - }, "apps/comments-ui": { "ignoreDependencies": [ "@tryghost/debug", @@ -77,7 +72,6 @@ "apps/portal": { "ignoreDependencies": [ "@tryghost/debug", - "cross-fetch", "@testing-library/jest-dom" ] }, @@ -108,7 +102,6 @@ "apps/sodo-search": { "ignoreDependencies": [ "@tryghost/debug", - "cross-fetch", "@testing-library/jest-dom" ] }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1cf83f16a74..033b25ec17a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -279,9 +279,6 @@ catalogs: country-flag-icons: specifier: 1.6.20 version: 1.6.20 - cross-fetch: - specifier: 4.1.0 - version: 4.1.0 dependency-cruiser: specifier: ^18.1.1 version: 18.1.1 @@ -1069,9 +1066,6 @@ importers: '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) - cross-fetch: - specifier: 'catalog:' - version: 4.1.0(encoding@0.1.13) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -1651,9 +1645,6 @@ importers: '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) - cross-fetch: - specifier: 'catalog:' - version: 4.1.0(encoding@0.1.13) dompurify: specifier: 'catalog:' version: 3.4.11 @@ -2005,9 +1996,6 @@ importers: autoprefixer: specifier: 10.5.4 version: 10.5.4(postcss@8.5.26) - cross-fetch: - specifier: 'catalog:' - version: 4.1.0(encoding@0.1.13) eslint: specifier: 'catalog:' version: 9.39.4(jiti@2.7.0)(supports-color@10.2.2) @@ -2586,9 +2574,6 @@ importers: nconf: specifier: 0.13.0 version: 0.13.0 - node-fetch: - specifier: 2.7.0 - version: 2.7.0(encoding@0.1.13) node-html-markdown: specifier: 'catalog:' version: 2.0.0 @@ -2710,9 +2695,6 @@ importers: '@types/node': specifier: 'catalog:' version: 22.20.1 - '@types/node-fetch': - specifier: 2.6.13 - version: 2.6.13 '@types/node-jose': specifier: 1.1.13 version: 1.1.13 @@ -9597,9 +9579,6 @@ packages: '@types/nconf@0.10.7': resolution: {integrity: sha512-ltJgbQX0XgjkeDrz0anTCXLBLatppWYFCxp88ILEwybfAuyNWr0Qb+ceFFqZ0VDR8fguEjr0hH37ZF+AF4gsxw==} - '@types/node-fetch@2.6.13': - resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node-jose@1.1.13': resolution: {integrity: sha512-QjMd4yhwy1EvSToQn0YI3cD29YhyfxFwj7NecuymjLys2/P0FwxWnkgBlFxCai6Y3aBCe7rbwmqwJJawxlgcXw==} @@ -29628,11 +29607,6 @@ snapshots: '@types/nconf@0.10.7': {} - '@types/node-fetch@2.6.13': - dependencies: - '@types/node': 26.0.0 - form-data: 4.0.6 - '@types/node-jose@1.1.13': dependencies: '@types/node': 26.0.0 From 120bbd16fb3bf93bf17e32edbad5548f898e0e11 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 15:04:46 -0500 Subject: [PATCH 14/19] Initialize email analytics Prometheus metrics in proper spot (#29893) no ref This change should have no impact on functionality. Before this change, we initialized newsletter-specific metrics in `EmailAnalyticsService`, which should be unaware of newsletters. Now, it's moved higher up. I think this is a useful cleanup. _(Note: this PR's branch name is a misnomer, left over from a previous direction.)_ --- .../email-analytics-service-wrapper.js | 6 +---- .../email-analytics-service.ts | 11 +-------- .../server/services/email-analytics/index.ts | 9 ++++++-- ...sletter-email-analytics-batch-processor.js | 5 +++- .../email-analytics-service.test.js | 23 ------------------- .../services/email-analytics/index.test.ts | 17 ++++++++++++++ 6 files changed, 30 insertions(+), 41 deletions(-) diff --git a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js index c364e769a3c..b62b062538e 100644 --- a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js +++ b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js @@ -4,7 +4,6 @@ const logging = require('@tryghost/logging'); /** @import DomainEvents from '@tryghost/domain-events' */ /** @import {Queries} from './lib/queries' */ /** @import Metrics from '@tryghost/metrics' */ -/** @import {PrometheusClient} from '@tryghost/prometheus-metrics' */ /** @import {BatchEventProcessor} from './batch-event-processor' */ /** @import {JobNames, CursorSeed, EmailAnalyticsFetchResult} from './email-analytics-service' */ @@ -40,7 +39,6 @@ class EmailAnalyticsServiceWrapper { * @param {CursorSeed} options.cursorSeed * @param {() => BatchEventProcessor} options.createEventProcessor * @param {Pick} options.metrics - * @param {PrometheusClient | null} options.prometheusClient * @param {{get: (key: string) => unknown}} options.settingsCache */ init({ @@ -53,7 +51,6 @@ class EmailAnalyticsServiceWrapper { cursorSeed, createEventProcessor, metrics, - prometheusClient, settingsCache }) { if (this.service) { @@ -71,8 +68,7 @@ class EmailAnalyticsServiceWrapper { queries, jobNames, cursorSeed, - createEventProcessor, - ...(prometheusClient ? {prometheusClient} : {}) + createEventProcessor }); // Log the processing mode on initialization diff --git a/ghost/core/core/server/services/email-analytics/email-analytics-service.ts b/ghost/core/core/server/services/email-analytics/email-analytics-service.ts index 52418616eb7..d396810628d 100644 --- a/ghost/core/core/server/services/email-analytics/email-analytics-service.ts +++ b/ghost/core/core/server/services/email-analytics/email-analytics-service.ts @@ -1,7 +1,6 @@ import {EventProcessingResult} from './event-processing-result'; import logging from '@tryghost/logging'; import errors from '@tryghost/errors'; -import type {PrometheusClient} from '@tryghost/prometheus-metrics'; import type {BatchEventProcessor} from './batch-event-processor'; import type {Queries} from './lib/queries'; @@ -74,7 +73,6 @@ type FetchEvents = (options: { const TRUST_THRESHOLD_MS = 30 * 60 * 1000; // 30 minutes const FETCH_LATEST_END_MARGIN_MS = 1 * 60 * 1000; // Do not fetch events newer than 1 minute (yet). Reduces the chance of having missed events in fetchLatest. -const AGGREGATE_MEMBER_STATS_METRIC_NAME = 'email_analytics_aggregate_member_stats_count'; /** * Helper function to create an empty fetch result @@ -95,7 +93,6 @@ function createEmptyResult(): EmailAnalyticsFetchResult { export class EmailAnalyticsService { queries: Queries; #fetchEvents: FetchEvents; - prometheusClient?: PrometheusClient; #createEventProcessor: () => BatchEventProcessor; #jobNames: JobNames; @@ -106,17 +103,15 @@ export class EmailAnalyticsService { #fetchLatestOpenedData: FetchData; #fetchScheduledData: FetchDataScheduled; - constructor({queries, fetchEvents, prometheusClient, createEventProcessor, jobNames, cursorSeed}: { + constructor({queries, fetchEvents, createEventProcessor, jobNames, cursorSeed}: { queries: Queries; fetchEvents: FetchEvents; - prometheusClient?: PrometheusClient; createEventProcessor: () => BatchEventProcessor; jobNames: JobNames; cursorSeed: CursorSeed; }) { this.queries = queries; this.#fetchEvents = fetchEvents; - this.prometheusClient = prometheusClient; this.#createEventProcessor = createEventProcessor; this.#jobNames = jobNames; this.#cursorSeed = cursorSeed; @@ -137,10 +132,6 @@ export class EmailAnalyticsService { running: false, jobName: jobNames.scheduled }; - - if (prometheusClient) { - prometheusClient.registerCounter({name: AGGREGATE_MEMBER_STATS_METRIC_NAME, help: 'Count of member stats aggregations'}); - } } #clearScheduledData() { diff --git a/ghost/core/core/server/services/email-analytics/index.ts b/ghost/core/core/server/services/email-analytics/index.ts index 845aa300e0f..6550cbffea2 100644 --- a/ghost/core/core/server/services/email-analytics/index.ts +++ b/ghost/core/core/server/services/email-analytics/index.ts @@ -8,7 +8,7 @@ import type SettingsCache from '../../../shared/settings-cache'; // @ts-expect-error This module lacks type definitions. import EmailAnalyticsServiceWrapper from './email-analytics-service-wrapper'; // @ts-expect-error This module lacks type definitions. -import {NewsletterEmailAnalyticsBatchProcessor} from './newsletter-email-analytics-batch-processor'; +import {AGGREGATE_MEMBER_STATS_METRIC_NAME, NewsletterEmailAnalyticsBatchProcessor} from './newsletter-email-analytics-batch-processor'; // @ts-expect-error This module lacks type definitions. import NewsletterEmailEventStorage from '../email-service/newsletter-email-event-storage'; // @ts-expect-error This module lacks type definitions. @@ -63,7 +63,7 @@ export const init = ({ EmailSpamComplaintEvent: EmailSpamComplaintEvent; }; metrics: Pick; - prometheusClient: PrometheusClient | null; + prometheusClient: Pick | null; settingsCache: Pick; }) => { const queries = new Queries(db.knex); @@ -91,6 +91,11 @@ export const init = ({ newsletterMailgunTags.push(config.get('bulkEmail:mailgun:tag')); } + prometheusClient?.registerCounter({ + name: AGGREGATE_MEMBER_STATS_METRIC_NAME, + help: 'Count of member stats aggregations' + }); + newsletters.init({ config, domainEvents, diff --git a/ghost/core/core/server/services/email-analytics/newsletter-email-analytics-batch-processor.js b/ghost/core/core/server/services/email-analytics/newsletter-email-analytics-batch-processor.js index bacdd73f84a..3905a1aa937 100644 --- a/ghost/core/core/server/services/email-analytics/newsletter-email-analytics-batch-processor.js +++ b/ghost/core/core/server/services/email-analytics/newsletter-email-analytics-batch-processor.js @@ -3,6 +3,9 @@ const logging = require('@tryghost/logging'); /** @import {BatchEventProcessor} from './batch-event-processor' */ /** @import {FetchData} from './email-analytics-service' */ +const AGGREGATE_MEMBER_STATS_METRIC_NAME = 'email_analytics_aggregate_member_stats_count'; +exports.AGGREGATE_MEMBER_STATS_METRIC_NAME = AGGREGATE_MEMBER_STATS_METRIC_NAME; + /** * @implements {BatchEventProcessor} */ @@ -222,7 +225,7 @@ class NewsletterEmailAnalyticsBatchProcessor { } const emailAggregationTimeMs = Date.now() - emailAggregationStart; - const memberMetric = this.#prometheusClient?.getMetric('email_analytics_aggregate_member_stats_count'); + const memberMetric = this.#prometheusClient?.getMetric(AGGREGATE_MEMBER_STATS_METRIC_NAME); const memberAggregationStart = Date.now(); if (useBatchProcessing) { diff --git a/ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.js b/ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.js index 3625ffd8fba..1383f8e67d2 100644 --- a/ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.js +++ b/ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.js @@ -49,29 +49,6 @@ describe('EmailAnalyticsService', function () { clock.restore(); }); - describe('constructor', function () { - it('registers Prometheus metrics only for services given a client', function () { - const prometheusClient = { - registerCounter: sinon.stub() - }; - - createService({prometheusClient}); - createService({ - jobNames: { - latestNonOpened: 'email-analytics-automation-latest-others', - missing: 'email-analytics-automation-missing', - latestOpened: 'email-analytics-automation-latest-opened', - scheduled: 'email-analytics-automation-scheduled' - } - }); - - sinon.assert.calledOnceWithExactly(prometheusClient.registerCounter, { - name: 'email_analytics_aggregate_member_stats_count', - help: 'Count of member stats aggregations' - }); - }); - }); - describe('getStatus', function () { it('returns status object', function () { // these are null because we're not running them before calling this diff --git a/ghost/core/test/unit/server/services/email-analytics/index.test.ts b/ghost/core/test/unit/server/services/email-analytics/index.test.ts index 0e77556cb9f..e25f82dabcf 100644 --- a/ghost/core/test/unit/server/services/email-analytics/index.test.ts +++ b/ghost/core/test/unit/server/services/email-analytics/index.test.ts @@ -114,4 +114,21 @@ describe('email analytics service', function () { createEventProcessor: sinon.match.func })); }); + + it('registers Prometheus metrics for member stat aggregation', function () { + const registerCounter = sinon.stub(); + + init({ + ...dependencies, + prometheusClient: { + registerCounter, + getMetric: sinon.stub() + } + }); + + sinon.assert.calledWith(registerCounter, sinon.match({ + name: 'email_analytics_aggregate_member_stats_count', + help: 'Count of member stats aggregations' + })); + }); }); From 58af71da9bf7fa388ad20fb9d8365a45b0a51a83 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 15:04:47 -0500 Subject: [PATCH 15/19] =?UTF-8?q?=F0=9F=90=9B=20Improved=20reliability=20o?= =?UTF-8?q?f=20email=20analytics=20events=20(#29895)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref https://github.com/TryGhost/Ghost/pull/29890#pullrequestreview-4910616569 Big picture ----------- We sometimes failed to create the job row for the "missing" job. This could cause: - unnecessary extra fetches from Mailgun - events to be dropped entirely, if the site was off for awhile Details ------- There are four jobs for email analytics: 1. opened 2. non-opened 3. scheduled 4. missing Before this change, `setJobTimestamp` failed to upsert the job row. For the first three job types, it turned out that was fine, because they were already created by previous code paths. But not for the "missing" job! Before this change, we'd only create the "missing" job row when: - no missing events were found - there was an error processing the batch Now, we create it at the right time as intended. --- .../server/services/email-analytics/lib/queries.ts | 1 + .../server/services/email-analytics/queries.test.ts | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/ghost/core/core/server/services/email-analytics/lib/queries.ts b/ghost/core/core/server/services/email-analytics/lib/queries.ts index 92a52233594..e155fcf144e 100644 --- a/ghost/core/core/server/services/email-analytics/lib/queries.ts +++ b/ghost/core/core/server/services/email-analytics/lib/queries.ts @@ -175,6 +175,7 @@ export class Queries { id: new ObjectID().toHexString(), name: jobName, [updateField]: date.toISOString(), // force to iso string for sqlite + created_at: date.toISOString(), // force to iso string for sqlite updated_at: date.toISOString(), // force to iso string for sqlite status: status }); diff --git a/ghost/core/test/unit/server/services/email-analytics/queries.test.ts b/ghost/core/test/unit/server/services/email-analytics/queries.test.ts index 6c50e360a27..c7e894f755e 100644 --- a/ghost/core/test/unit/server/services/email-analytics/queries.test.ts +++ b/ghost/core/test/unit/server/services/email-analytics/queries.test.ts @@ -269,6 +269,17 @@ describe('Email analytics queries', function () { assert.equal(job.status, 'finished'); }); + it('creates missing job with created timestamp', async function () { + const date = new Date('2026-08-11T10:00:00.000Z'); + + await queries.setJobTimestamp('email-analytics-missing', 'started', date); + + const job = await knex('jobs').where('name', 'email-analytics-missing').first(); + assert.equal(new Date(job.created_at).toISOString(), date.toISOString()); + assert.equal(new Date(job.started_at).toISOString(), date.toISOString()); + assert.equal(new Date(job.updated_at).toISOString(), date.toISOString()); + }); + it('swallows database errors', async function () { await knex.schema.dropTable('jobs'); From 1ad33ce7b41d1779df4a4237963adcf1f8c59b10 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 15:10:55 -0500 Subject: [PATCH 16/19] TypeScriptify email analytics service tests (#29923) no ref --- ...est.js => email-analytics-service.test.ts} | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) rename ghost/core/test/unit/server/services/email-analytics/{email-analytics-service.test.js => email-analytics-service.test.ts} (93%) diff --git a/ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.js b/ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.ts similarity index 93% rename from ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.js rename to ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.ts index 1383f8e67d2..5014e4a525c 100644 --- a/ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.js +++ b/ghost/core/test/unit/server/services/email-analytics/email-analytics-service.test.ts @@ -1,8 +1,14 @@ -const assert = require('node:assert/strict'); +import assert from 'node:assert/strict'; +import sinon from 'sinon'; -const sinon = require('sinon'); +import {EmailAnalyticsService} from '../../../../../core/server/services/email-analytics/email-analytics-service'; +import {Queries} from '../../../../../core/server/services/email-analytics/lib/queries'; -const {EmailAnalyticsService} = require('../../../../../core/server/services/email-analytics/email-analytics-service'); +type ServiceOptions = ConstructorParameters[0]; +type ServiceDependencies = Omit & { + queries?: Partial; +}; +type BatchHandler = (events: any[]) => Promise; const JOB_NAMES = { latestNonOpened: 'email-analytics-latest-others', @@ -20,11 +26,17 @@ const NEWSLETTER_CURSOR_SEED = { } }; -function createService(dependencies = {}) { +function createService({queries: queryOverrides, ...serviceOverrides}: Partial = {}) { + const queries = sinon.createStubInstance(Queries); + Object.assign(queries, queryOverrides); + return new EmailAnalyticsService({ + queries, + fetchEvents: sinon.stub().resolves(), + createEventProcessor: createStubEventProcessor, jobNames: JOB_NAMES, cursorSeed: NEWSLETTER_CURSOR_SEED, - ...dependencies + ...serviceOverrides }); } @@ -39,7 +51,7 @@ function createStubEventProcessor() { } describe('EmailAnalyticsService', function () { - let clock; + let clock: sinon.SinonFakeTimers; beforeEach(function () { clock = sinon.useFakeTimers(new Date(2024, 0, 1)); @@ -214,8 +226,8 @@ describe('EmailAnalyticsService', function () { }); it('persists the "started" cursor before fetching events', async function () { - let resolveStartedTimestamp; - const startedTimestamp = new Promise((resolve) => { + let resolveStartedTimestamp!: (value: void | PromiseLike) => void; + const startedTimestamp = new Promise((resolve) => { resolveStartedTimestamp = resolve; }); const fetchLatestSpy = sinon.spy(); @@ -326,11 +338,11 @@ describe('EmailAnalyticsService', function () { }); describe('fetchScheduled', function () { - let service; - let eventProcessor; - let setJobTimestampStub; - let setJobStatusStub; - let setJobMetadataStub; + let service: EmailAnalyticsService; + let eventProcessor: ReturnType; + let setJobTimestampStub: sinon.SinonStub; + let setJobStatusStub: sinon.SinonStub; + let setJobMetadataStub: sinon.SinonStub; beforeEach(function () { setJobTimestampStub = sinon.stub().resolves(); @@ -343,7 +355,7 @@ describe('EmailAnalyticsService', function () { setJobStatus: setJobStatusStub, setJobMetadata: setJobMetadataStub }, - fetchEvents: ({batchHandler}) => { + fetchEvents: ({batchHandler}: {batchHandler: BatchHandler}) => { const events = [1,2,3,4,5,6,7,8,9,10]; return batchHandler(events); }, @@ -404,7 +416,7 @@ describe('EmailAnalyticsService', function () { setJobStatus: sinon.stub().resolves(), setJobMetadata: sinon.stub().resolves() }, - fetchEvents: ({batchHandler}) => { + fetchEvents: ({batchHandler}: {batchHandler: BatchHandler}) => { return batchHandler([]); }, createEventProcessor: createStubEventProcessor @@ -420,8 +432,8 @@ describe('EmailAnalyticsService', function () { }); describe('schedule persistence', function () { - let setJobMetadataStub; - let service; + let setJobMetadataStub: sinon.SinonStub; + let service: EmailAnalyticsService; beforeEach(function () { setJobMetadataStub = sinon.stub().resolves(); @@ -431,7 +443,7 @@ describe('EmailAnalyticsService', function () { setJobTimestamp: sinon.stub().resolves(), setJobStatus: sinon.stub().resolves() }, - fetchEvents: ({batchHandler}) => { + fetchEvents: ({batchHandler}: {batchHandler: BatchHandler}) => { return batchHandler([]); }, createEventProcessor: createStubEventProcessor @@ -513,14 +525,14 @@ describe('EmailAnalyticsService', function () { }); describe('aggregation error handling', function () { - function createServiceWithEventProcessor(eventProcessor) { + function createServiceWithEventProcessor(eventProcessor: ReturnType) { return createService({ queries: { getLastEventTimestamp: sinon.stub().resolves(), setJobTimestamp: sinon.stub().resolves(), setJobStatus: sinon.stub().resolves() }, - fetchEvents: async ({batchHandler}) => { + fetchEvents: async ({batchHandler}: {batchHandler: BatchHandler}) => { await batchHandler([{type: 'delivered', timestamp: new Date(1)}]); }, createEventProcessor: () => eventProcessor From a415856d745b101253d0b755f39a3012674c8d48 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 15:27:07 -0500 Subject: [PATCH 17/19] Updated email analytics service wrapper to always define sub-service (#29963) no ref This fixes several type errors and makes it possible to convert this module to TypeScript. This should have no user impact. --- .../email-analytics-service-wrapper.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js index b62b062538e..846eca7e017 100644 --- a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js +++ b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js @@ -1,5 +1,6 @@ const errors = require('@tryghost/errors'); const logging = require('@tryghost/logging'); +const {EmailAnalyticsService} = require('./email-analytics-service'); /** @import {ConfigInstance} from '../../../shared/config/loader' */ /** @import DomainEvents from '@tryghost/domain-events' */ /** @import {Queries} from './lib/queries' */ @@ -11,6 +12,7 @@ class EmailAnalyticsServiceWrapper { /** @type {string} */ #logName; /** @type {Pick | undefined} */ #config; /** @type {Pick | undefined} */ #metrics; + /** @type {EmailAnalyticsService | undefined} */ #service; #fetching = false; #restoredSchedule = false; @@ -53,17 +55,16 @@ class EmailAnalyticsServiceWrapper { metrics, settingsCache }) { - if (this.service) { + if (this.#service) { return; } this.#config = config; this.#metrics = metrics; - const {EmailAnalyticsService} = require('./email-analytics-service'); const {fetchMailgunEvents} = require('./fetch-mailgun-events'); - this.service = new EmailAnalyticsService({ + this.#service = new EmailAnalyticsService({ fetchEvents: (options) => fetchMailgunEvents({...options, config, settings: settingsCache, tags: mailgunTags}), queries, jobNames, @@ -82,6 +83,17 @@ class EmailAnalyticsServiceWrapper { }); } + /** + * @returns {EmailAnalyticsService} + */ + get service() { + const result = this.#service; + if (!result) { + throw new errors.InternalServerError({message: "EmailAnalyticsServiceWrapper is not initialized with service"}); + } + return result; + } + #getConfig() { const result = this.#config; if (!result) { From f6d69ced224c5a917d2fe46ac7404af515f5abad Mon Sep 17 00:00:00 2001 From: Hannah Wolfe Date: Thu, 13 Aug 2026 21:39:50 +0100 Subject: [PATCH 18/19] Migrated Codex documentation into the repo (#29958) Migrates the remaining Codex documentation into the codebase. This is part of work to bring all codebase docs into the codebase, and make sure the information is consistent, correct and coherent. --- .../skills/create-database-migration/SKILL.md | 17 +- docs/README.md | 24 +- docs/codebase/database.md | 51 +++++ docs/codebase/internal-caching.md | 38 ++++ docs/codebase/jobs.md | 43 ++++ docs/codebase/monorepo-structure.md | 16 ++ docs/codebase/post-analytics.md | 51 +++++ docs/codebase/site-uuid.md | 31 +++ docs/codebase/stripe-flows.md | 38 ++++ docs/contributing/performance-testing.md | 63 ++++++ docs/contributing/testing-email.md | 25 +++ docs/contributing/testing.md | 3 +- docs/practices/api-design.md | 163 ++++++++++++++ docs/practices/database-migrations.md | 206 ++++++++++++++++++ ghost/core/test/README.md | 88 ++++++++ 15 files changed, 848 insertions(+), 9 deletions(-) create mode 100644 docs/codebase/database.md create mode 100644 docs/codebase/internal-caching.md create mode 100644 docs/codebase/jobs.md create mode 100644 docs/codebase/post-analytics.md create mode 100644 docs/codebase/site-uuid.md create mode 100644 docs/codebase/stripe-flows.md create mode 100644 docs/contributing/performance-testing.md create mode 100644 docs/contributing/testing-email.md create mode 100644 docs/practices/api-design.md create mode 100644 docs/practices/database-migrations.md create mode 100644 ghost/core/test/README.md diff --git a/.agents/skills/create-database-migration/SKILL.md b/.agents/skills/create-database-migration/SKILL.md index 30aa8c204e9..daf809e653c 100644 --- a/.agents/skills/create-database-migration/SKILL.md +++ b/.agents/skills/create-database-migration/SKILL.md @@ -5,6 +5,11 @@ description: Create a database migration to add a table, add columns to an exist # Create Database Migration +Read the canonical human guidance in +[`docs/practices/database-migrations.md`](../../../docs/practices/database-migrations.md) +before making a migration. This skill is the executable checklist that +accompanies it. + ## Instructions 1. Create a new, empty migration file: `cd ghost/core && pnpm migrate:create `. IMPORTANT: do not create the migration file manually; always use this script to create the initial empty migration file. The slug must be kebab-case (e.g. `add-column-to-posts`). @@ -12,13 +17,15 @@ description: Create a database migration to add a table, add columns to an exist 3. Update the migration file with the changes you want to make in the database, following the existing patterns in the codebase. Where appropriate, prefer to use the utility functions in `ghost/core/core/server/data/migrations/utils/*`. 4. Update the schema definition file in `ghost/core/core/server/data/schema/schema.js`, and make sure it aligns with the latest changes from the migration. 5. Test the migration manually: `cd ghost/core && pnpm knex-migrator migrate --v {version directory} --force` -6. If adding or dropping a table, update `ghost/core/core/server/data/exporter/table-lists.js` as appropriate. -7. If adding or dropping a table, also add or remove the table name from the expected tables list in `ghost/core/test/integration/exporter/exporter.test.js`. This test has a hardcoded alphabetically-sorted array of all database tables — it runs in CI integration tests (not unit tests) and will fail if the new table is missing. -8. Run the schema integrity test, and update the hash: `cd ghost/core && pnpm test:single test/unit/server/data/schema/integrity.test.js` -9. Run unit tests in Ghost core, and iterate until they pass: `cd ghost/core && pnpm test:unit` +6. Roll the migration back to test `down()`: `cd ghost/core && pnpm knex-migrator rollback --v {previous version} --force`, then migrate forward again. +7. Run the migration integration test, which covers initialization, rollback, forward migration, and idempotency: `cd ghost/core && pnpm test:single test/integration/migrations/migration.test.js`. Migrations must pass the database-backed suites against both MySQL and SQLite. +8. If adding or dropping a table, update `ghost/core/core/server/data/exporter/table-lists.js` as appropriate. The consistency assertion in `ghost/core/test/unit/server/data/exporter/index.test.js` checks that every schema table is classified in the exporter lists. +9. Run the focused exporter unit test when the table lists change: `cd ghost/core && pnpm test:single test/unit/server/data/exporter/index.test.js`. +10. Run the schema integrity test, and update the hash: `cd ghost/core && pnpm test:single test/unit/server/data/schema/integrity.test.js` +11. Run unit tests in Ghost core, and iterate until they pass: `cd ghost/core && pnpm test:unit` ## Examples See [examples.md](examples.md) for example migrations. ## Rules -See [rules.md](rules.md) for rules that should always be followed when creating database migrations. \ No newline at end of file +See [rules.md](rules.md) for rules that should always be followed when creating database migrations. diff --git a/docs/README.md b/docs/README.md index a3ffec85bef..bab620993a5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -72,9 +72,27 @@ To contribute or add translations, see adding translatable product copy, see the [internationalization guide](practices/internationalization.md). -The [error handling guide](practices/error-handling.md) explains how to design -failure states for logs, APIs, and user interfaces without exposing raw -technical errors. +## Guides + +Codebase guides explain how the main systems fit together: + +- [Authentication](codebase/authentication.md) +- [Configuration](codebase/configuration.md) +- [Database structure](codebase/database.md) +- [Internal caching](codebase/internal-caching.md) +- [Jobs system](codebase/jobs.md) +- [Post analytics](codebase/post-analytics.md) +- [Site UUID](codebase/site-uuid.md) +- [Stripe flows](codebase/stripe-flows.md) + +Practice and contributor guides explain how to make and verify changes: + +- [API design](practices/api-design.md) +- [Database migrations](practices/database-migrations.md) +- [Email testing](contributing/testing-email.md) +- [Error handling](practices/error-handling.md) +- [Internationalization](practices/internationalization.md) +- [Performance testing](contributing/performance-testing.md) ### Finding Issues to Work On diff --git a/docs/codebase/database.md b/docs/codebase/database.md new file mode 100644 index 00000000000..88b47248324 --- /dev/null +++ b/docs/codebase/database.md @@ -0,0 +1,51 @@ +# Database Structure + +Ghost's database schema is defined in +[`schema.js`](../../ghost/core/core/server/data/schema/schema.js). It is the +current shape expected after every migration has run. Bookshelf models in +[`models/`](../../ghost/core/core/server/models/) define relationships and +application behavior; do not infer those rules from the table shape alone. + +## Posts + +Post statuses are `draft`, `scheduled`, `published`, and `sent`. Sent posts are +sent without being published on the site. Only published posts are available +through the Content API. + +## Tags + +Tag visibility is `internal` or `public`. + +## Integrations + +Integration types are: + +- `internal`: private from the API. +- `builtin`: created as one of Ghost's built-in integrations. +- `core`: created and managed by Ghost core. +- `custom`: created by a user. + +## Member attribution events + +Member-created and subscription-created events are deleted with their member. +Their attribution type can be `url`, `post`, `page`, `author`, or `tag`, and +their referrer fields record the source, medium, and URL where available. + +The `source` on a member-created event records what created the member. Its +values are `member`, `import`, `system`, `api`, and `admin`. + +## Link redirects and clicks + +`redirects` stores the source path, destination, and associated post or +automation action for a tracked link. `members_click_events` stores every +member click, including repeat clicks by the same member. + +## Subscriptions + +Subscription types are `free`, `comped`, and `paid`. Statuses are `active`, +`expired`, and `canceled`. Paid subscriptions also record cadence, currency, +amount, and payment-provider links. + +For changing this structure, follow the +[database migrations guide](../practices/database-migrations.md). Keep the +schema definition, migration, exporter table lists, and integrity tests in sync. diff --git a/docs/codebase/internal-caching.md b/docs/codebase/internal-caching.md new file mode 100644 index 00000000000..7a95b16f1b1 --- /dev/null +++ b/docs/codebase/internal-caching.md @@ -0,0 +1,38 @@ +# Internal Caching + +Ghost supports internal cache adapters. They are configured in the `adapters` +section of the environment configuration: + +```json +{ + "adapters": { + "cache": { + "active": "MemoryCache", + "Redis": { + "host": "localhost", + "port": 6379, + "password": "" + }, + "imageSizes": { + "adapter": "Redis", + "keyPrefix": "2368:image-sizes:", + "ttl": 30 + }, + "gscan": {} + } + } +} +``` + +The active adapter provides the default cache. A named feature uses the active +adapter unless its object includes an `adapter` override. Settings under the +adapter's class name are shared, and the feature object can override them. + +Ghost includes `MemoryCache` and `Redis`. Current named caches include settings, +image sizes, theme validation, stats, and public post and tag data; use the name +requested by the owning service rather than inventing a second name in config. + +Cache adapters must extend `@tryghost/adapter-base-cache` and implement `get`, +`set`, `reset`, and `keys`. See the +[`cache-base` README](../../packages/adapters/cache-base/README.md) for the +adapter contract and installation layout. diff --git a/docs/codebase/jobs.md b/docs/codebase/jobs.md new file mode 100644 index 00000000000..205417e5808 --- /dev/null +++ b/docs/codebase/jobs.md @@ -0,0 +1,43 @@ +# Jobs System + +Ghost's jobs system runs work inline or in a worker thread. Jobs can run once or +on a schedule. + +Use inline jobs for short work which does not block the event loop. Inline jobs +cannot be scheduled. Scheduled and offloaded jobs run in worker threads, so +they must initialize their own dependencies and cannot rely on the main Ghost +process's memory. + +## Adding a job + +Jobs are registered through the service in +`ghost/core/core/server/services/jobs/`. The service is a wrapper around +`@tryghost/job-manager` and provides Ghost's logging, configuration, models, and +events. + +Existing examples include: + +- Update checks, which run in a worker on a schedule. +- Imports, which run as inline jobs. +- Email analytics, which uses scheduled worker jobs. + +Prefer an existing job with similar lifecycle and failure requirements as the +starting point for a new one. + +When adding a service which registers jobs, give it an explicit `init()` call +from `ghost/core/core/boot.js`. Keep the wrapper's `init()` idempotent, but let +boot own service construction and worker setup rather than initializing on the +first request. + +## Testing + +Tests for the jobs wrapper live in +`ghost/core/test/unit/server/services/jobs/`, with update-check integration +coverage in `ghost/core/test/integration/jobs/`. Tests should cover the job's +result and failure behavior. + +## Scheduling + +The jobs system uses Bree for scheduled work. Schedules use the server's system +timezone. Offloaded jobs should have unique names, be safe to run more than +once, and receive identifiers rather than large objects where possible. diff --git a/docs/codebase/monorepo-structure.md b/docs/codebase/monorepo-structure.md index 25c9d4bc27c..55ffc4331ee 100644 --- a/docs/codebase/monorepo-structure.md +++ b/docs/codebase/monorepo-structure.md @@ -127,3 +127,19 @@ documented in [`packages/README.md`](../../packages/README.md). This means a source edit may work immediately in development while a production build still needs `pnpm build`. Run the build when changing package exports, build configuration, or code included in a release artifact. + +## Related repositories + +Some parts of Ghost live in separate repositories: + +- [`TryGhost/gscan`](https://github.com/TryGhost/gscan) validates Ghost themes. +- [`TryGhost/Ghost-CLI`](https://github.com/TryGhost/Ghost-CLI) installs and + manages production Ghost sites. +- [`TryGhost/Source`](https://github.com/TryGhost/Source), + [`TryGhost/Casper`](https://github.com/TryGhost/Casper), and + [`TryGhost/Themes`](https://github.com/TryGhost/Themes) contain official + themes. +- [`TryGhost/framework`](https://github.com/TryGhost/framework) contains shared + Node.js packages used by Ghost. +- [`TryGhost/SDK`](https://github.com/TryGhost/SDK) contains tools for working + with Ghost's APIs. diff --git a/docs/codebase/post-analytics.md b/docs/codebase/post-analytics.md new file mode 100644 index 00000000000..a6f08cc9704 --- /dev/null +++ b/docs/codebase/post-analytics.md @@ -0,0 +1,51 @@ +# Post Analytics + +Ghost provides post analytics for web traffic, member growth, newsletter opens, +and link clicks. Summary information appears in the posts list, with more detail +on each post's analytics page. + +Web traffic comes from Ghost's Tinybird integration. Member and revenue +attribution comes from Ghost's event data. Newsletter analytics uses the local +email, recipient, redirect, and click-event tables. + +## Click tracking + +Click tracking counts the unique members who clicked a link in an email. It does +not combine a link across different posts and does not track clicks on the web +version of a post. + +Clicks are stored in `members_click_events`. Each event refers to a row in +`redirects`, which contains the destination. Multiple events can be recorded +when one member clicks the same link more than once, but analytics count that +member once. + +When an email is prepared, `LinkClickTrackingService` replaces a link with a +Ghost redirect. A request to `/r/{redirectId}?m={memberUuid}` records the event +and redirects the member to the destination. + +The implementation lives in +[`services/link-tracking/`](../../ghost/core/core/server/services/link-tracking/). + +Click tracking can be disabled in Admin or with the `email_track_clicks` +setting. + +## Email analytics + +Ghost uses Mailgun's Events API to collect newsletter delivery, open, and +failure data. Aggregates are stored on `emails`, with recipient-level data in +`email_recipients`. + +“Sent” and “delivered” are different. Sent means Ghost processed the email +batch. Delivered means Ghost received a delivery event from Mailgun. + +The email analytics job polls Mailgun regularly. It fetches recent events first, +then uses a delayed missing-events pass because Mailgun events do not always +arrive in order. Progress is stored so the job can continue from its previous +position. + +Email analytics can be disabled with `emailAnalytics.enabled`. The service and +its scheduled jobs live in +[`services/email-analytics/`](../../ghost/core/core/server/services/email-analytics/). + +The endpoints that combine web, member, and newsletter figures use +[`posts-stats-service.js`](../../ghost/core/core/server/services/stats/posts-stats-service.js). diff --git a/docs/codebase/site-uuid.md b/docs/codebase/site-uuid.md new file mode 100644 index 00000000000..6ec2865ec94 --- /dev/null +++ b/docs/codebase/site-uuid.md @@ -0,0 +1,31 @@ +# Site UUID + +Each Ghost site has a `site_uuid` in its settings table. It is a unique site +identifier exposed by Ghost's public site configuration. Ghost uses it to keep +site data separate when talking to services such as Tinybird. + +## Generation + +When the setting is first created, Ghost uses the configured `site_uuid` when it +is a valid UUID. Otherwise it generates a random UUID. The value is normalized +to lowercase before it is stored. + +The value is immutable. It cannot be changed through the Admin API or a JSON +import. To choose it, configure `site_uuid` before the site's first boot. + +On later boots, Ghost compares a configured `site_uuid` with the stored setting. +If they differ, Ghost stops with a `SITE_UUID_MISMATCH` error to prevent the site +from running under the wrong identity. + +## Usage + +Read the stored value inside Ghost with: + +```js +settingsCache.get('site_uuid') +``` + +Generation is implemented in +[`settings-utils.js`](../../ghost/core/core/server/services/settings/settings-utils.js), +and the boot-time check is in +[`settings-service.js`](../../ghost/core/core/server/services/settings/settings-service.js). diff --git a/docs/codebase/stripe-flows.md b/docs/codebase/stripe-flows.md new file mode 100644 index 00000000000..bec059974ca --- /dev/null +++ b/docs/codebase/stripe-flows.md @@ -0,0 +1,38 @@ +# Stripe Flows + +## Stripe Connect + +Ghost has a Stripe Connect integration. The client ID is part of the Ghost +codebase, allowing any Ghost instance served over HTTPS to start the OAuth flow. + +1. The user selects **Connect with Stripe** in Ghost Admin and is redirected to + Stripe. +2. Stripe redirects the user to `stripe.ghost.org` after authorization. +3. `stripe.ghost.org` exchanges the authorization code and returns a + base64-encoded payload containing `s`, `p`, `a`, `l`, `n`, and `i`. The `a` + value is Stripe's OAuth `access_token`, not the account's secret key. +4. Ghost validates the state in `s`, then maps and stores the connection + settings. + +This flow is implemented in +[`services/members/stripe-connect.js`](../../ghost/core/core/server/services/members/stripe-connect.js). + +## Stripe subscription checkout + +1. Ghost receives a request to create a checkout session for a tier and billing + cadence. +2. Ghost checks that the tier is not archived. +3. Ghost looks for the Stripe Price associated with the tier and cadence. +4. Ghost checks the price against Stripe. +5. If needed, Ghost creates the Stripe Product and Price and stores them + locally. +6. Ghost creates a Stripe Checkout Session with that price. + +## Creating a tier + +1. Ghost receives a request to create a tier with monthly and yearly prices. +2. Ghost creates the corresponding Stripe Product and Prices. +3. Ghost stores their details in the database. + +The checkout and tier price flows are implemented by +[`payments-service.js`](../../ghost/core/core/server/services/members/members-api/services/payments-service.js). diff --git a/docs/contributing/performance-testing.md b/docs/contributing/performance-testing.md new file mode 100644 index 00000000000..1c6c283422f --- /dev/null +++ b/docs/contributing/performance-testing.md @@ -0,0 +1,63 @@ +# Load Testing and Benchmarking + +Performance testing is important for high-volume or intensive workflows. Two +tools commonly used with Ghost are `loadtest` for a simple endpoint and +`artillery` for multi-step or variable traffic. + +## loadtest + +Run `loadtest` with pnpm and specify the total requests and concurrency: + +```bash +pnpm dlx loadtest -n 500 -c 5 http://localhost:2368/ +``` + +It can also run at a fixed request rate for a duration: + +```bash +pnpm dlx loadtest -t 30 --rps 50 http://localhost:2368/ +``` + +## Artillery + +Artillery uses a YAML test definition and supports phased rates, several +requests in one flow, and processor functions for variable input: + +```yaml +config: + target: "http://localhost:2368" + phases: + - duration: 15 + arrivalRate: 50 + +scenarios: + - name: "Home page" + flow: + - get: + url: "/" +``` + +Run it with: + +```bash +pnpm dlx artillery run load-test.yml +``` + +## Getting useful results + +Request pooling, keep-alive, timeouts, concurrency, cookies, and headers can all +change the result. Match them to the behavior being investigated. Ghost caches +public content, so decide whether the test is intended to measure cached or +uncached requests. + +Local testing starts at [http://localhost:2368](http://localhost:2368). Local +hardware and production hosting differ, but local results can still show whether +a change improves or degrades a focused workflow. + +Only send load to a system you own or have explicit permission to test. The +public repository does not document production or hosted-service load-testing +procedures. + +See the [`loadtest` README](https://github.com/alexfernandez/loadtest) and +[Artillery documentation](https://www.artillery.io/docs/get-started/core-concepts) +for the current command and scenario options. diff --git a/docs/contributing/testing-email.md b/docs/contributing/testing-email.md new file mode 100644 index 00000000000..ad6ee3204d0 --- /dev/null +++ b/docs/contributing/testing-email.md @@ -0,0 +1,25 @@ +# Receiving and Testing Emails + +## Local email + +The normal development environment starts Mailpit with Ghost. Run: + +```bash +pnpm dev +``` + +Emails sent by the development site are captured at +[http://localhost:8025](http://localhost:8025) rather than delivered. The Docker +development configuration connects Ghost to Mailpit automatically. + +## Testing with Mailgun + +For testing transactional email delivery, configure Ghost's `mail` setting with +an SMTP provider. For testing newsletter delivery, configure the separate +Mailgun settings used by Ghost's bulk email service. Mailgun sandbox domains +only send to recipients that have been added and verified in Mailgun. + +Keep credentials in your local configuration and do not commit them. + +Most development does not need real delivery. Use Mailpit unless the behavior +being tested depends on the external provider. diff --git a/docs/contributing/testing.md b/docs/contributing/testing.md index 555a366a19a..cd721a352ef 100644 --- a/docs/contributing/testing.md +++ b/docs/contributing/testing.md @@ -29,7 +29,8 @@ Put tests as close as possible to the code and behavior under test: - **Ghost Core server E2E tests** exercise the server, frontend rendering, webhooks, and APIs against a running Ghost instance and test database. They live under `ghost/core/test/e2e-*/`. These are Vitest suites, not browser - tests. + tests. See the [Ghost Core E2E guide](../../ghost/core/test/README.md) for the + request agents, fixtures, mocks, and snapshot helpers. - **App acceptance tests** exercise an individual app through its UI. The framework and command vary by app, so use that workspace's `test:acceptance` target. diff --git a/docs/practices/api-design.md b/docs/practices/api-design.md new file mode 100644 index 00000000000..f54120f69ae --- /dev/null +++ b/docs/practices/api-design.md @@ -0,0 +1,163 @@ +# API Design + +Ghost's APIs are mature and widely used. There is no need for a wholesale +redesign; follow the established principles and patterns carefully, and add new +patterns only when existing ones do not serve API consumers. + +## Principles + +### Postel's Law + +> Be conservative in what you send, and liberal in what you accept. + +Ghost APIs are used by many different apps and integrations. Be flexible about +useful input while keeping responses specific and predictable. + +Being liberal in what we accept does not mean accepting arbitrary properties. +For example, a caller should be able to pass a resource returned by `read` back +to `edit`; known non-writable fields can be ignored. A misspelled field such as +`member: {naem: "John"}` is not useful input and should produce an error rather +than being silently ignored. + +### Hyrum's Law + +> With a sufficient number of users of an API, every observable behaviour will +> be depended on by somebody. + +Every detail can become part of the API contract. Ask “should we add this?” and +weigh the value of new behavior against its long-term compatibility and +maintenance cost. + +Good API design balances these principles: preserve useful flexibility for +callers without making outputs or behavior accidental and unpredictable. + +## Patterns + +Ghost's HTTP APIs follow RESTful principles. REST and JSON:API provide useful +CRUD patterns for top-level resources such as posts and members, although less +standard operations such as file uploads and bulk changes need additional +patterns. + +The following conventions should hold: + +- Use HTTP methods according to the action being taken. +- Define endpoints as resources or nouns. +- Request and response bodies represent the resource under a top-level key: + + ```json + { + "members": [], + "meta": {} + } + ``` + +- Resource bodies use a top-level key containing an array, including singular + requests. Settings use the same shape, with each key-value pair represented + as a resource in the array. +- Responses can include a top-level `meta` key for additional information. +- Pagination metadata is nested under `meta.pagination`: + + ```json + { + "members": [], + "meta": { + "pagination": { + "page": 3, + "prev": 2, + "next": null, + "limit": 15, + "total": 38, + "pages": 3 + } + } + } + ``` + +- Use `snake_case` for API resource names and keys. + +### Working with files + +File endpoints such as `/images/upload` break the normal noun-only pattern. A +file-interaction convention using an action such as `upload` has become +established and should remain limited to file operations rather than being +copied for ordinary data interactions. + +### Bulk endpoints + +Ghost uses `/bulk` as a nested resource for bulk operations such as +`/members/bulk`. Define the request body and app behavior carefully before +adding another bulk endpoint. + +## Conventions + +### Function signatures and API calls + +The HTTP API should map closely to the SDK and internal package APIs, including +function signatures and parameters. For example, a call such as +`api.posts.browse({filter, fields})` maps those options to a `GET` request for +the posts resource with `filter` and `fields` query parameters. + +### Graceful passing of objects + +Internal and HTTP APIs should return and accept a common resource format. A +caller should be able to pass the result of `read` or `GET` directly to the +corresponding `edit` or `PUT` operation without first removing read-only fields. + +### Caching and cache invalidation + +API endpoints use middleware to set `Cache-Control`. Design every response on +the assumption that a greedy cache can exist in front of Ghost. + +Mutation responses can include an `X-Cache-Invalidate` header telling callers +which paths need to be purged. Cache behavior must be deliberate for every API +response. + +### Allowlist resource properties + +Prefer allowlists for API resource properties. Use the allowlist to ignore known +but non-writable input properties while stripping properties that should not be +sent in responses. Do not rely on a blocklist that must be updated every time a +new internal property is added. + +## Settings + +Settings values can be strings, numbers, booleans, arrays, or objects. Object +settings are used for a small number of structured values and should not be the +default for new settings. + +Settings keys: + +- Use `snake_case`. +- Be descriptive and unique. +- Match the name exposed by the API where the key is public. + +The `type` field declares the type stored in `value`. The `group` field collects +settings that are fetched and updated together. Groups and flags control which +settings are exposed through the Admin and Content APIs, so follow an existing +setting with the same intended exposure. + +## Permissions + +Permission checks run after input serialization and before the controller query. +Permissions are associated with a resource name (`docName`) and method, with +their role assignments stored in the permissions and roles tables. + +An endpoint's permission configuration can be: + +- An object using the database permission, with optional overrides for `method`, + `docName`, and writable `unsafeAttrs`. +- `true` to use the database permission. +- `false` to skip the permission stage. +- A function for exceptional custom logic. It should throw a + `NoPermissionError` to deny access and should not replace normal permission + configuration without a specific reason. + +Adding or changing a database-backed permission requires updates to fixtures, a +database migration, fixture tests, and the database integrity hash. + +## Future design + +Ghost's API design can continue to evolve. REST can produce awkward affordances +for actions: publishing a post is a `PUT` to `/posts/:id/` and looks the same as +changing its title. New patterns should solve a demonstrated consumer problem +without discarding the compatibility and consistency of the existing APIs. diff --git a/docs/practices/database-migrations.md b/docs/practices/database-migrations.md new file mode 100644 index 00000000000..c27356a16f8 --- /dev/null +++ b/docs/practices/database-migrations.md @@ -0,0 +1,206 @@ +# Database Migrations + +## Why might I need a migration? + +Database migrations transform the state of Ghost's database when Ghost boots. +For example, a migration may: + +- Add a table. +- Add a column to a table. +- Add user permissions. +- Manipulate existing data. + +> Migrations are dangerous and need to be treated with a great deal of care. +> This is one of the places where a mistake can cause widespread damage. + +## How to write a migration + +### Planning + +Migrations should be carefully planned and written as one of the first steps in +feature development. This allows more time for feedback during review. They +should not be rushed. + +Before writing the migration, be clear about the expected schema, including the +tables and columns that are needed and the naming they will use. For data +migrations, understand the size and shape of the existing data first. + +### Creating the migration file + +Create a migration file from `ghost/core`: + +```bash +cd ghost/core +pnpm migrate:create +``` + +The slug must be kebab-case, for example `add-column-to-posts`. The script: + +- Places the file in the next minor-version folder under + `core/server/data/migrations/versions/`. +- Bumps the Ghost Core and Admin packages to the target minor release candidate when + needed so `knex-migrator` will run the new version folder. + +Always use this command rather than creating or naming the file manually. It +compares the current package version with the latest published Ghost tag to +avoid placing a migration in a version that has already shipped. CI repeats +these version and placement checks with +[`scripts/check-migration-integrity.cjs`](../../scripts/check-migration-integrity.cjs). + +### Writing the migration + +1. Open the generated migration file in + `core/server/data/migrations/versions/`. +2. Add the database changes, using similar existing migrations as examples. +3. Run the migration with `pnpm knex-migrator migrate` while following the + iteration guidance below. +4. For schema changes, update `core/server/data/schema/schema.js` to match. +5. Update the schema integrity tests and any other affected tests. + +#### Types of migration + +Migration pull requests generally contain one of two types of change: + +- **DDL (data definition language)** migrations change the database schema. + They require a migration for existing databases and a matching update to + `schema.js`. New tables must also be added to the export list, and the schema + integrity hash must be updated. +- **DML (data manipulation language)** migrations change data already stored in + the tables. They generally require only the migration itself and focused + tests. + +### Iterating + +During development, run migrations with Ghost's custom +[`knex-migrator`](https://github.com/TryGhost/knex-migrator): + +```bash +cd ghost/core +pnpm knex-migrator migrate --v --force +pnpm knex-migrator rollback --v --force +``` + +`migrate` calls the migration's `up()` method and `rollback` calls its `down()` +method. You can use this workflow to iterate while `down()` restores the same +state that existed before `up()`. + +### Testing + +Test migrations against both MySQL and SQLite because Knex can behave +differently between database clients. + +Run the schema integrity test after changing `schema.js`, fixtures, default +settings, or default routes. Update only the expected hash for the change you +made: + +```bash +cd ghost/core +pnpm test:single test/unit/server/data/schema/integrity.test.js +``` + +Run the migration integration test to exercise initialization, rollback, +forward migration, and idempotency: + +```bash +cd ghost/core +pnpm test:single test/integration/migrations/migration.test.js +``` + +Add focused tests for any non-trivial transformation, then run the affected Core +tests. CI runs the database-backed Core suites with both MySQL and SQLite +because Knex and the database engines do not always behave identically. + +### Reviewing + +Review migrations for three primary concerns: + +- **Correctness:** does the migration make the intended change? +- **Performance:** does it complete in a safe amount of time? +- **Safety:** does it protect against missing or invalid data? + +Migration pull requests should contain as few changes as possible: only the +migration and the updates required for Ghost and its tests to continue working. +A workflow adds a [migration review checklist](../../.github/workflows/migration-review.yml) +to pull requests containing migrations. + +All migrations require review. Compare the implementation with the intended +schema or feature design, and give changes to large or frequently updated tables +additional performance scrutiny. + +The best place to start is an existing migration that performs a similar change. +Examples include: + +- [Adding a table](https://github.com/TryGhost/Ghost/pull/16150/files) +- [Adding and populating columns](https://github.com/TryGhost/Ghost/pull/15855/files) +- [Adding a setting](https://github.com/TryGhost/Ghost/pull/15705/files) +- [Manipulating data](https://github.com/TryGhost/Ghost/pull/15952/files) + +## Rules + +### Performance + +Schema changes, index changes, and data updates can be expensive on large +tables. Consider how the migration behaves with a large dataset and remember +that migrations block Ghost from booting until they finish. + +Avoid unbounded loops and mass updates. Batch large data changes, and do not mix +DDL and DML operations in the same migration. Performance measured against a +small local database is not evidence that a migration is safe for large sites; +flag uncertain changes explicitly for reviewer attention. + +### Idempotency + +It must be safe to run a migration twice. A migration may stop partway through +because of an external failure, and rerunning it must not leave the database in +an invalid state. + +### Be minimal + +Keep migration pull requests small. Mistakes are easier to miss when the +migration is buried in a large change. + +### Be defensive + +Protect against missing or unexpected data. If a migration crashes, Ghost +cannot boot. + +### Log every code path + +Log what every code path and early return did so a migration can be diagnosed +after it runs. + +### Do not use the model layer + +Migrations run against the database state from an older Ghost version, but the +model layer comes from the version being installed. A later model change can +therefore break an older migration. Use the migration's database transaction +and migration utilities directly instead. + +### Use migration utilities + +Use the helpers in +[`core/server/data/migrations/utils/`](../../ghost/core/core/server/data/migrations/utils/) +wherever possible. They contain tested implementations of common operations, +including idempotency and logging protections. + +Choose the wrapper that matches the operation. DML normally uses +`createTransactionalMigration`; many DDL operations require +`createNonTransactionalMigration` or a focused schema helper such as +`addTable` or `createAddColumnMigration`. Copy a recent comparable migration +rather than assuming every operation has the same transaction behavior. + +### Migrations are immutable + +Once a migration is in `main`, it is final except for very limited bug or +performance fixes. Create another migration when a later change is needed. +Changing or removing a migration after it has run leaves different environments +in different database states and can break migration tracking. + +For example, if a column needs to be renamed after its migration reaches `main`, +make the original migration a no-op only when necessary for a fix, then add new +migrations that create the correct column and remove the old one if it exists. + +### Versioning + +Migrations must preserve Ghost's version update policy: users must be able to +update from the last patch release in any supported major version. diff --git a/ghost/core/test/README.md b/ghost/core/test/README.md new file mode 100644 index 00000000000..8854ea2b21b --- /dev/null +++ b/ghost/core/test/README.md @@ -0,0 +1,88 @@ +# Ghost Core End-to-End Tests + +Ghost Core's server end-to-end framework provides one place to access request +agents, fixtures, mocks, and snapshot matchers. These are Vitest suites which +exercise Ghost directly; they are separate from the Playwright browser suite in +the repository's `e2e/` directory. + +```js +const {agentProvider, fixtureManager, mockManager, matchers} = + require('../utils/e2e-framework'); + +let agent; + +beforeAll(async function () { + agent = await agentProvider.getAdminAPIAgent(); + await fixtureManager.init('members'); + await agent.loginAsOwner(); +}); +``` + +## Request agents + +The framework provides agents for the Admin, Content, and Members APIs. Agents +boot Ghost with suitable defaults, reset the database, configure the API base +path, and provide authentication helpers. + +Requests use async/await. Assert the response status, body, and relevant headers. +Use the snapshot matchers for generated IDs, dates, ETags, and locations, and +add focused assertions for important behavior such as ordering and side effects. + +## Fixtures + +Use `fixtureManager.init()` to insert fixture tasks in a known state. The +framework includes the owner fixture by default. Named tasks add the data +required by a test; for example, `users` creates staff users for each role and +`user:inactive` adds an inactive user. + +Older tests may use `localUtils.doAuth()` or `testUtils.setup()`, but new +end-to-end tests should use the fixture manager and request agents. + +## Mocks + +`mockManager` handles external effects. Use `mockManager.mockMail()` to inspect +outgoing email and match HTML, plain text, and metadata snapshots. Restore mocks +after each test. + +The webhook mock receiver follows the same pattern for outgoing webhooks. + +Real network access is disabled when the framework boots. Use a focused mock or +an existing `mockManager` helper for external services. + +## Snapshots + +Request agents provide `matchBodySnapshot()` and `matchHeaderSnapshot()`. Use +the most specific matcher available for values that change between runs, such +as object IDs, UUIDs, dates, ETags, and resource locations. + +To update a snapshot for one test, run: + +```bash +SNAPSHOT_UPDATE=1 pnpm test:single test/e2e-api/path/to/test.test.js +``` + +Review every changed `.snap` file before committing it. A generated snapshot is +not proof that the response is correct. + +## Test style + +- Keep tests fast and make only the requests needed for the behavior. +- Use `expectEmptyBody` for responses such as `204`. +- Test side effects as well as the response. +- Give tests names that remain clear in snapshot files. +- Do not use the old test utilities in new tests. + +## Running the tests + +From `ghost/core`: + +```bash +pnpm test:e2e +pnpm test:single test/e2e-api/path/to/test.test.js +``` + +The main groups are `test/e2e-api/`, `test/e2e-frontend/`, +`test/e2e-webhooks/`, and `test/e2e-server/`. Isolated tests use an +`.isolated.test.js` or `.isolated.test.ts` suffix inside `test/e2e-server/`. +Start from a nearby test in the same group because boot options, agent choice, +and cleanup requirements vary by boundary. From 089f7e8a8c67d896e38abe572800c04d60c486f3 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 13 Aug 2026 16:04:33 -0500 Subject: [PATCH 19/19] TypeScriptify email analytics service wrapper (#29964) no ref --- ....js => email-analytics-service-wrapper.ts} | 108 +++++++----------- .../server/services/email-analytics/index.ts | 4 +- ...> email-analytics-service-wrapper.test.ts} | 25 ++-- 3 files changed, 49 insertions(+), 88 deletions(-) rename ghost/core/core/server/services/email-analytics/{email-analytics-service-wrapper.js => email-analytics-service-wrapper.ts} (76%) rename ghost/core/test/unit/server/services/email-analytics/{email-analytics-service-wrapper.test.js => email-analytics-service-wrapper.test.ts} (80%) diff --git a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.ts similarity index 76% rename from ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js rename to ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.ts index 846eca7e017..864e682df1e 100644 --- a/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.js +++ b/ghost/core/core/server/services/email-analytics/email-analytics-service-wrapper.ts @@ -1,48 +1,31 @@ -const errors = require('@tryghost/errors'); -const logging = require('@tryghost/logging'); -const {EmailAnalyticsService} = require('./email-analytics-service'); -/** @import {ConfigInstance} from '../../../shared/config/loader' */ -/** @import DomainEvents from '@tryghost/domain-events' */ -/** @import {Queries} from './lib/queries' */ -/** @import Metrics from '@tryghost/metrics' */ -/** @import {BatchEventProcessor} from './batch-event-processor' */ -/** @import {JobNames, CursorSeed, EmailAnalyticsFetchResult} from './email-analytics-service' */ - -class EmailAnalyticsServiceWrapper { - /** @type {string} */ #logName; - /** @type {Pick | undefined} */ #config; - /** @type {Pick | undefined} */ #metrics; - /** @type {EmailAnalyticsService | undefined} */ #service; +import errors from '@tryghost/errors'; +import logging from '@tryghost/logging'; +import type {ConfigInstance} from '../../../shared/config/loader'; +// @ts-expect-error This module lacks type definitions. +import type DomainEvents from '@tryghost/domain-events'; +// @ts-expect-error This module lacks type definitions. +import type Metrics from '@tryghost/metrics'; +import {EmailAnalyticsService, type CursorSeed, type EmailAnalyticsFetchResult, type JobNames} from './email-analytics-service'; +import type {BatchEventProcessor} from './batch-event-processor'; +import type {Queries} from './lib/queries'; +import {fetchMailgunEvents} from './fetch-mailgun-events'; + +export class EmailAnalyticsServiceWrapper { + #logName: string; + #config?: Pick; + #metrics?: Pick; + #service?: EmailAnalyticsService; #fetching = false; #restoredSchedule = false; - get #logPrefix() { + get #logPrefix(): string { return `[EmailAnalytics:${this.#logName}]`; } - /** - * @param {object} options - * @param {string} options.logName - */ - constructor({ - logName, - }) { + constructor({logName}: {logName: string}) { this.#logName = logName; } - /** - * @param {object} options - * @param {Pick} options.config - * @param {Pick} options.domainEvents - * @param {Parameters[0]} options.event - * @param {Queries} options.queries - * @param {string[]} options.mailgunTags - * @param {JobNames} options.jobNames - * @param {CursorSeed} options.cursorSeed - * @param {() => BatchEventProcessor} options.createEventProcessor - * @param {Pick} options.metrics - * @param {{get: (key: string) => unknown}} options.settingsCache - */ init({ config, domainEvents, @@ -54,7 +37,18 @@ class EmailAnalyticsServiceWrapper { createEventProcessor, metrics, settingsCache - }) { + }: Readonly<{ + config: Pick; + domainEvents: Pick; + event: Parameters[0]; + queries: Queries; + mailgunTags: string[]; + jobNames: JobNames; + cursorSeed: CursorSeed; + createEventProcessor: () => BatchEventProcessor; + metrics: Pick; + settingsCache: {get: (key: string) => unknown}; + }>): void { if (this.#service) { return; } @@ -62,8 +56,6 @@ class EmailAnalyticsServiceWrapper { this.#config = config; this.#metrics = metrics; - const {fetchMailgunEvents} = require('./fetch-mailgun-events'); - this.#service = new EmailAnalyticsService({ fetchEvents: (options) => fetchMailgunEvents({...options, config, settings: settingsCache, tags: mailgunTags}), queries, @@ -83,10 +75,7 @@ class EmailAnalyticsServiceWrapper { }); } - /** - * @returns {EmailAnalyticsService} - */ - get service() { + get service(): EmailAnalyticsService { const result = this.#service; if (!result) { throw new errors.InternalServerError({message: "EmailAnalyticsServiceWrapper is not initialized with service"}); @@ -94,7 +83,7 @@ class EmailAnalyticsServiceWrapper { return result; } - #getConfig() { + #getConfig(): Pick { const result = this.#config; if (!result) { throw new errors.InternalServerError({message: "EmailAnalyticsServiceWrapper is not initialized with config"}); @@ -102,13 +91,7 @@ class EmailAnalyticsServiceWrapper { return result; } - /** - * Log comprehensive job completion with timing metrics - * @param {string} jobType - Type of job (e.g., 'latest-opened', 'latest', 'missing', 'scheduled') - * @param {EmailAnalyticsFetchResult} fetchResult - The fetch result from EmailAnalyticsService - * @param {number} totalDurationMs - Total duration in milliseconds - */ - _logJobCompletion(jobType, fetchResult, totalDurationMs) { + _logJobCompletion(jobType: string, fetchResult: EmailAnalyticsFetchResult, totalDurationMs: number): void { const config = this.#getConfig(); const {eventCount, apiPollingTimeMs, processingTimeMs, aggregationTimeMs, emailAggregationTimeMs, memberAggregationTimeMs, result} = fetchResult; @@ -157,7 +140,7 @@ class EmailAnalyticsServiceWrapper { } } - async fetchLatestOpenedEvents({maxEvents} = {maxEvents: Infinity}) { + async fetchLatestOpenedEvents({maxEvents = Infinity}: {maxEvents?: number} = {}): Promise { const config = this.#getConfig(); const beginTimestamp = await this.service.getLastOpenedEventTimestamp(); @@ -180,7 +163,7 @@ class EmailAnalyticsServiceWrapper { return fetchResult.eventCount; } - async fetchLatestNonOpenedEvents({maxEvents} = {maxEvents: Infinity}) { + async fetchLatestNonOpenedEvents({maxEvents = Infinity}: {maxEvents?: number} = {}): Promise { const fetchStartedAt = Date.now(); const fetchResult = await this.service.fetchLatestNonOpenedEvents({maxEvents}); const totalDuration = Date.now() - fetchStartedAt; @@ -190,7 +173,7 @@ class EmailAnalyticsServiceWrapper { return fetchResult.eventCount; } - async fetchMissing({maxEvents} = {maxEvents: Infinity}) { + async fetchMissing({maxEvents = Infinity}: {maxEvents?: number} = {}): Promise { const fetchStartedAt = Date.now(); const fetchResult = await this.service.fetchMissing({maxEvents}); const totalDuration = Date.now() - fetchStartedAt; @@ -200,12 +183,7 @@ class EmailAnalyticsServiceWrapper { return fetchResult.eventCount; } - /** - * @param {object} options - * @param {number} options.maxEvents - * @returns {Promise} The number of scheduled events fetched - */ - async fetchScheduled({maxEvents}) { + async fetchScheduled({maxEvents}: {maxEvents: number}): Promise { if (maxEvents < 300) { return 0; } @@ -219,7 +197,7 @@ class EmailAnalyticsServiceWrapper { return fetchResult.eventCount; } - async startFetch() { + async startFetch(): Promise { if (!this.#restoredSchedule) { this.#restoredSchedule = true; await this.service.restoreScheduled(); @@ -274,15 +252,9 @@ class EmailAnalyticsServiceWrapper { this.#fetching = false; } - /** - * @param {string} reason - * @returns {void} - */ - _restartFetch(reason) { + _restartFetch(reason: string): void { this.#fetching = false; logging.info(`${this.#logPrefix} Restarting fetch due to ${reason}`); this.startFetch(); } } - -module.exports = EmailAnalyticsServiceWrapper; diff --git a/ghost/core/core/server/services/email-analytics/index.ts b/ghost/core/core/server/services/email-analytics/index.ts index 6550cbffea2..746d96da076 100644 --- a/ghost/core/core/server/services/email-analytics/index.ts +++ b/ghost/core/core/server/services/email-analytics/index.ts @@ -5,8 +5,7 @@ import type {ConfigInstance} from '../../../shared/config/loader'; import type Metrics from '@tryghost/metrics'; // @ts-expect-error This module lacks type definitions. import type SettingsCache from '../../../shared/settings-cache'; -// @ts-expect-error This module lacks type definitions. -import EmailAnalyticsServiceWrapper from './email-analytics-service-wrapper'; +import {EmailAnalyticsServiceWrapper} from './email-analytics-service-wrapper'; // @ts-expect-error This module lacks type definitions. import {AGGREGATE_MEMBER_STATS_METRIC_NAME, NewsletterEmailAnalyticsBatchProcessor} from './newsletter-email-analytics-batch-processor'; // @ts-expect-error This module lacks type definitions. @@ -117,7 +116,6 @@ export const init = ({ } }, metrics, - prometheusClient, settingsCache, createEventProcessor: () => ( new NewsletterEmailAnalyticsBatchProcessor({ diff --git a/ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.js b/ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.ts similarity index 80% rename from ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.js rename to ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.ts index 4c87f539c2d..ec37a5a7739 100644 --- a/ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.js +++ b/ghost/core/test/unit/server/services/email-analytics/email-analytics-service-wrapper.test.ts @@ -1,6 +1,7 @@ -const sinon = require('sinon'); -const EmailAnalyticsServiceWrapper = require('../../../../../core/server/services/email-analytics/email-analytics-service-wrapper'); -const {Queries} = require('../../../../../core/server/services/email-analytics/lib/queries'); +import sinon from 'sinon'; +import {EmailAnalyticsServiceWrapper} from '../../../../../core/server/services/email-analytics/email-analytics-service-wrapper'; +import {EventProcessingResult} from '../../../../../core/server/services/email-analytics/event-processing-result'; +import {Queries} from '../../../../../core/server/services/email-analytics/lib/queries'; class FakeEvent { timestamp = new Date(); @@ -8,8 +9,7 @@ class FakeEvent { } describe('EmailAnalyticsServiceWrapper', function () { - /** @type {sinon.SinonStub} */ - let metricStub; + let metricStub: sinon.SinonStub; beforeEach(function () { metricStub = sinon.stub(); @@ -19,7 +19,7 @@ describe('EmailAnalyticsServiceWrapper', function () { sinon.restore(); }); - function logLatestOpenedJob(logName) { + function logLatestOpenedJob(logName: string) { const wrapper = new EmailAnalyticsServiceWrapper({logName}); wrapper.init({ config: { @@ -62,10 +62,7 @@ describe('EmailAnalyticsServiceWrapper', function () { }), metrics: { metric: metricStub - }, - prometheusClient: { - registerCounter: sinon.stub() - }, + } }); wrapper._logJobCompletion('latest-opened', { eventCount: 10, @@ -74,13 +71,7 @@ describe('EmailAnalyticsServiceWrapper', function () { aggregationTimeMs: 500, emailAggregationTimeMs: 300, memberAggregationTimeMs: 200, - result: { - opened: 10, - delivered: 0, - permanentFailed: 0, - temporaryFailed: 0, - unprocessable: 0 - } + result: new EventProcessingResult() }, 2000); }