From d20ee139c3c71ada2c3708940db9cfa4a019920e Mon Sep 17 00:00:00 2001 From: TupiC <90184179+TupiC@users.noreply.github.com> Date: Mon, 17 Aug 2026 18:40:39 +0200 Subject: [PATCH 1/8] perf(memory): remove unused timeout for in-memory since reads are synchronous (#135) --- README.md | 4 ++-- server/src/services/memory/provider.ts | 18 ++++-------------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 68dc05f..6b311ca 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Full configuration example: cacheHeadersDenyList: ['access-control-allow-origin', 'content-encoding'], // Headers to exclude from the cache (must be lowercase, if empty array, no headers are excluded, cacheHeaders must be true) cacheHeadersAllowList: ['content-type', 'content-security-policy'], // Headers to include in the cache (must be lowercase, if empty array, all headers are cached, cacheHeaders must be true) cacheAuthorizedRequests: false, // Cache requests with authorization headers (set to true if you want to cache authorized requests) - cacheGetTimeoutInMs: 1000, // Timeout for getting cached data in milliseconds (default is 1 second) + cacheGetTimeoutInMs: 1000, // Timeout for getting cached data in milliseconds (default is 1 second, redis only) autoPurgeCache: true, // Automatically purge cache on content CRUD operations autoPurgeGraphQL: true, // Automatically purge GraphQL cache on content CRUD operations autoPurgeCacheOnStart: true, // Automatically purge cache on Strapi startup @@ -118,7 +118,7 @@ Possible configuration keys are listed below; omitted keys keep the plugin defau | `cacheHeadersDenyList` | Header names (lowercase) to strip when `cacheHeaders` is `true` | Array of strings (default: `[]`) | | `cacheHeadersAllowList` | If non-empty, only these header names (lowercase) are stored; if empty, all headers are stored (subject to deny list) | Array of strings (default: `[]`) | | `cacheAuthorizedRequests` | Whether to cache requests that include an `Authorization` header | `true` or `false` (default: `false`) | -| `cacheGetTimeoutInMs` | Max time to wait for a cache read before treating it as a miss | Milliseconds (default: `1000`) | +| `cacheGetTimeoutInMs` | Max time to wait for a cache read before treating it as a miss (redis only) | Milliseconds (default: `1000`) | | `autoPurgeCache` | Invalidate relevant REST cache entries after content create/update/delete | `true` or `false` (default: `true`) | | `autoPurgeGraphQL` | Invalidate GraphQL cache after content create/update/delete | `true` or `false` (default: `false` if omitted; set `true` to enable) | | `autoPurgeCacheOnStart` | Clear the cache when Strapi starts | `true` or `false` (default: `true`) | diff --git a/server/src/services/memory/provider.ts b/server/src/services/memory/provider.ts index 5ee73ee..28a5cac 100644 --- a/server/src/services/memory/provider.ts +++ b/server/src/services/memory/provider.ts @@ -1,13 +1,11 @@ import type { Core } from '@strapi/strapi'; import { LRUCache } from 'lru-cache'; -import { withTimeout } from '../../utils/withTimeout'; import { CacheProvider, CacheService } from '../../types/cache.types'; import { loggy } from '../../utils/log'; export class InMemoryCacheProvider implements CacheProvider { private initialized = false; private provider!: LRUCache; - private cacheGetTimeoutInMs: number; constructor(private strapi: Core.Strapi) {} @@ -31,10 +29,6 @@ export class InMemoryCacheProvider implements CacheProvider { allowStale, }); - this.cacheGetTimeoutInMs = Number( - this.strapi.plugin('strapi-cache').config('cacheGetTimeoutInMs') - ); - loggy.info('Provider initialized'); } @@ -50,16 +44,12 @@ export class InMemoryCacheProvider implements CacheProvider { async get(key: string): Promise { if (!this.ready) return null; - return withTimeout( - () => - new Promise((resolve) => { - resolve(this.provider.get(key)); - }), - this.cacheGetTimeoutInMs - ).catch((error) => { + try { + return this.provider.get(key); + } catch (error) { loggy.error(`Error during get: ${error?.message || error}`); return null; - }); + } } async set(key: string, val: any): Promise { From b03850d036e44fbb335c09dec167f7179bd37427 Mon Sep 17 00:00:00 2001 From: TupiC <90184179+TupiC@users.noreply.github.com> Date: Mon, 17 Aug 2026 18:48:12 +0200 Subject: [PATCH 2/8] perf(cache): gate ineligible requests before cache lookup (#136) --- README.md | 2 +- server/src/middlewares/cache.ts | 51 ++++++----- server/src/middlewares/graphql.ts | 41 +++++---- test/middlewares/cache.test.ts | 137 ++++++++++++++++++++++++++---- test/middlewares/graphql.test.ts | 105 ++++++++++++++++++++++- 5 files changed, 278 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 6b311ca..c243c50 100644 --- a/README.md +++ b/README.md @@ -161,4 +161,4 @@ If you encounter any issues, please feel free to open an issue on the [GitHub re ## 🛠️ Contributing -Contributions are welcome! If you have suggestions or improvements, please open an issue or submit a pull request. +Contributions are welcome! If you have suggestions or improvements, please open an issue or submit a pull request to the `dev` branch. diff --git a/server/src/middlewares/cache.ts b/server/src/middlewares/cache.ts index 524fa06..e6c850f 100644 --- a/server/src/middlewares/cache.ts +++ b/server/src/middlewares/cache.ts @@ -7,34 +7,25 @@ import { decodeBufferToText, decompressBuffer, streamToBuffer } from '../utils/b import { getCacheHeaderConfig, getHeadersToStore } from '../utils/header'; const middleware = async (ctx: Context, next: any) => { - const cacheService = strapi.plugin('strapi-cache').services.service as CacheService; + const { url, method } = ctx.request; + + if (method !== 'GET') { + return next(); + } + const cacheableEntities = strapi.plugin('strapi-cache').config('cacheableEntities') as - | string[] - | undefined; + string[] | undefined; const cacheableRoutes = strapi.plugin('strapi-cache').config('cacheableRoutes') as string[]; const excludeRoutes = strapi.plugin('strapi-cache').config('excludeRoutes') as string[]; - const keyGenerator = strapi.plugin('strapi-cache').config('keyGenerator') as - | CacheKeyGenerator - | undefined; - const { cacheHeaders, cacheHeadersDenyList, cacheHeadersAllowList, cacheAuthorizedRequests } = - getCacheHeaderConfig(); - const cacheStore = cacheService.getCacheInstance(); - const { url } = ctx.request; - const key = generateCacheKey(ctx, keyGenerator); - const cacheEntry = await cacheStore.get(key); - const cacheControlHeader = ctx.request.headers['cache-control']; - const noCache = cacheControlHeader && cacheControlHeader.includes('no-cache'); const restApiPrefix = strapi.config.get('api.rest.prefix', '/api'); - const entityKey = generateEntityKey(url, restApiPrefix); - const routeIsExcluded = excludeRoutes.some((route) => url.startsWith(route)); if (routeIsExcluded) { loggy.info(`Route excluded from cache: ${url}`); - await next(); - return; + return next(); } + const entityKey = generateEntityKey(url, restApiPrefix); const entityIsCacheable = cacheableEntities?.length ? cacheableEntities.includes(entityKey) : undefined; @@ -43,14 +34,32 @@ const middleware = async (ctx: Context, next: any) => { (cacheableRoutes.length === 0 && url.startsWith(restApiPrefix)); const isCacheable = entityIsCacheable ?? routeIsCacheable; + if (!isCacheable) { + return next(); + } + + const { cacheHeaders, cacheHeadersDenyList, cacheHeadersAllowList, cacheAuthorizedRequests } = + getCacheHeaderConfig(); + const cacheControlHeader = ctx.request.headers['cache-control']; + const noCache = cacheControlHeader && cacheControlHeader.includes('no-cache'); const authorizationHeader = ctx.request.headers['authorization']; if (authorizationHeader && !cacheAuthorizedRequests) { - loggy.info(`Authorized request bypassing cache: ${key}`); - await next(); - return; + loggy.info(`Authorized request bypassing cache: ${url}`); + return next(); } + if (noCache) { + return next(); + } + + const cacheService = strapi.plugin('strapi-cache').services.service as CacheService; + const keyGenerator = strapi.plugin('strapi-cache').config('keyGenerator') as + CacheKeyGenerator | undefined; + const cacheStore = cacheService.getCacheInstance(); + const key = generateCacheKey(ctx, keyGenerator); + const cacheEntry = await cacheStore.get(key); + const middlewaresConfig = strapi.config.get('middlewares') as any[]; const corsMiddleware = middlewaresConfig.find((mw: any) => mw.name === 'strapi::cors'); diff --git a/server/src/middlewares/graphql.ts b/server/src/middlewares/graphql.ts index a9db3ce..bf3827f 100644 --- a/server/src/middlewares/graphql.ts +++ b/server/src/middlewares/graphql.ts @@ -14,15 +14,32 @@ const middleware = async (ctx: any, next: any) => { return; } - const cacheService = strapi.plugin('strapi-cache').services.service as CacheService; - const keyGenerator = strapi.plugin('strapi-cache').config('keyGenerator') as - | CacheKeyGenerator - | undefined; + const isGet = method === 'GET'; + if (!isGet && method !== 'POST') { + await next(); + return; + } + const { cacheHeaders, cacheHeadersDenyList, cacheHeadersAllowList, cacheAuthorizedRequests } = getCacheHeaderConfig(); - const cacheStore = cacheService.getCacheInstance(); + const authorizationHeader = ctx.request.headers['authorization']; - const isGet = method === 'GET'; + if (authorizationHeader && !cacheAuthorizedRequests) { + loggy.info('Authorized request bypassing GraphQL cache'); + await next(); + return; + } + + const cacheControlHeader = ctx.request.headers['cache-control']; + const noCache = cacheControlHeader && cacheControlHeader.includes('no-cache'); + + if (noCache) { + await next(); + return; + } + + const keyGenerator = strapi.plugin('strapi-cache').config('keyGenerator') as + CacheKeyGenerator | undefined; let body: string; if (isGet) { @@ -72,18 +89,10 @@ const middleware = async (ctx: any, next: any) => { await next(); return; } + const cacheService = strapi.plugin('strapi-cache').services.service as CacheService; + const cacheStore = cacheService.getCacheInstance(); const cacheEntry = await cacheStore.get(key); - const cacheControlHeader = ctx.request.headers['cache-control']; - const noCache = cacheControlHeader && cacheControlHeader.includes('no-cache'); - const authorizationHeader = ctx.request.headers['authorization']; - - if (authorizationHeader && !cacheAuthorizedRequests) { - loggy.info(`Authorized request bypassing cache: ${key}`); - await next(); - return; - } - const middlewaresConfig = strapi.config.get('middlewares') as any[]; const corsMiddleware = middlewaresConfig.find((mw: any) => mw.name === 'strapi::cors'); diff --git a/test/middlewares/cache.test.ts b/test/middlewares/cache.test.ts index 4801910..d995c07 100644 --- a/test/middlewares/cache.test.ts +++ b/test/middlewares/cache.test.ts @@ -7,17 +7,21 @@ describe('cache middleware', () => { get: vi.fn(), set: vi.fn(), }; + const getCacheInstance = vi.fn(() => mockCacheStore); const keyGenerator = vi.fn((ctx: Context) => `custom:${ctx.request.method}:${ctx.request.url}`); + let cacheableRoutes: string[] = []; + let excludeRoutes: string[] = []; + let cacheAuthorizedRequests = false; const pluginConfig = vi.fn((key: string) => { switch (key) { case 'cacheableEntities': return undefined; case 'cacheableRoutes': - return []; + return cacheableRoutes; case 'excludeRoutes': - return []; + return excludeRoutes; case 'keyGenerator': return keyGenerator; case 'cacheHeaders': @@ -27,7 +31,7 @@ describe('cache middleware', () => { case 'cacheHeadersAllowList': return []; case 'cacheAuthorizedRequests': - return false; + return cacheAuthorizedRequests; default: return undefined; } @@ -37,7 +41,7 @@ describe('cache middleware', () => { plugin: vi.fn().mockReturnValue({ services: { service: { - getCacheInstance: () => mockCacheStore, + getCacheInstance, }, }, config: pluginConfig, @@ -59,6 +63,9 @@ describe('cache middleware', () => { beforeEach(() => { vi.clearAllMocks(); + cacheableRoutes = []; + excludeRoutes = []; + cacheAuthorizedRequests = false; mockCacheStore.get.mockResolvedValue({ body: { cached: true }, headers: {}, @@ -69,21 +76,30 @@ describe('cache middleware', () => { vi.clearAllMocks(); }); - it('uses configured keyGenerator for cache lookup', async () => { - const ctx = { - request: { - url: '/api/articles?populate=*', - method: 'GET', - headers: {}, - }, - method: 'GET', - response: { - headers: {}, - }, + const createContext = ({ + url = '/api/articles', + method = 'GET', + headers = {}, + status = 200, + body, + }: { + url?: string; + method?: string; + headers?: Record; + status?: number; + body?: unknown; + } = {}) => + ({ + request: { url, method, headers }, + method, + response: { headers: {} }, set: vi.fn(), - status: 200, - body: undefined, - } as unknown as Context; + status, + body, + }) as unknown as Context; + + it('uses configured keyGenerator for cache lookup', async () => { + const ctx = createContext({ url: '/api/articles?populate=*' }); const next = vi.fn(); @@ -93,4 +109,89 @@ describe('cache middleware', () => { expect(mockCacheStore.get).toHaveBeenCalledWith('custom:GET:/api/articles?populate=*'); expect(next).not.toHaveBeenCalled(); }); + + it('bypasses the cache before lookup for non-GET requests', async () => { + const ctx = createContext({ method: 'POST' }); + const next = vi.fn(); + + await cacheMiddleware(ctx, next); + + expect(getCacheInstance).not.toHaveBeenCalled(); + expect(mockCacheStore.get).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledOnce(); + }); + + it('bypasses excluded routes before lookup', async () => { + excludeRoutes = ['/api/private']; + const ctx = createContext({ url: '/api/private/profile' }); + const next = vi.fn(); + + await cacheMiddleware(ctx, next); + + expect(getCacheInstance).not.toHaveBeenCalled(); + expect(mockCacheStore.get).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledOnce(); + }); + + it('bypasses non-cacheable routes before lookup', async () => { + cacheableRoutes = ['/api/products']; + const ctx = createContext({ url: '/api/articles' }); + const next = vi.fn(); + + await cacheMiddleware(ctx, next); + + expect(getCacheInstance).not.toHaveBeenCalled(); + expect(mockCacheStore.get).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledOnce(); + }); + + it('bypasses authorized requests before lookup', async () => { + const ctx = createContext({ headers: { authorization: 'Bearer token' } }); + const next = vi.fn(); + + await cacheMiddleware(ctx, next); + + expect(getCacheInstance).not.toHaveBeenCalled(); + expect(mockCacheStore.get).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledOnce(); + }); + + it('still reads authorized requests when configured to cache them', async () => { + cacheAuthorizedRequests = true; + const ctx = createContext({ headers: { authorization: 'Bearer token' } }); + const next = vi.fn(); + + await cacheMiddleware(ctx, next); + + expect(mockCacheStore.get).toHaveBeenCalledWith('custom:GET:/api/articles'); + expect(next).not.toHaveBeenCalled(); + }); + + it('bypasses no-cache requests before lookup', async () => { + const ctx = createContext({ headers: { 'cache-control': 'no-cache' } }); + const next = vi.fn(); + + await cacheMiddleware(ctx, next); + + expect(getCacheInstance).not.toHaveBeenCalled(); + expect(mockCacheStore.get).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledOnce(); + }); + + it('stores a successful cacheable response after a miss', async () => { + mockCacheStore.get.mockResolvedValueOnce(null); + const ctx = createContext(); + const next = vi.fn(async () => { + ctx.status = 200; + ctx.body = { data: { articles: [] } }; + }); + + await cacheMiddleware(ctx, next); + + expect(next).toHaveBeenCalledOnce(); + expect(mockCacheStore.set).toHaveBeenCalledWith('custom:GET:/api/articles', { + body: { data: { articles: [] } }, + headers: null, + }); + }); }); diff --git a/test/middlewares/graphql.test.ts b/test/middlewares/graphql.test.ts index e53e207..557ec9d 100644 --- a/test/middlewares/graphql.test.ts +++ b/test/middlewares/graphql.test.ts @@ -1,5 +1,10 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { Context } from 'koa'; + +const { rawBodyMock } = vi.hoisted(() => ({ rawBodyMock: vi.fn() })); + +vi.mock('raw-body', () => ({ default: rawBodyMock })); + import graphqlMiddleware from '../../server/src/middlewares/graphql'; describe('graphql middleware', () => { @@ -7,8 +12,10 @@ describe('graphql middleware', () => { get: vi.fn(), set: vi.fn(), }; + const getCacheInstance = vi.fn(() => mockCacheStore); const keyGenerator = vi.fn((ctx: Context) => `custom:${ctx.request.method}:${ctx.request.url}`); + let cacheAuthorizedRequests = false; const pluginConfig = vi.fn((key: string) => { switch (key) { case 'keyGenerator': @@ -20,7 +27,7 @@ describe('graphql middleware', () => { case 'cacheHeadersAllowList': return []; case 'cacheAuthorizedRequests': - return false; + return cacheAuthorizedRequests; default: return undefined; } @@ -32,7 +39,7 @@ describe('graphql middleware', () => { return { services: { service: { - getCacheInstance: () => mockCacheStore, + getCacheInstance, }, }, config: pluginConfig, @@ -59,6 +66,7 @@ describe('graphql middleware', () => { beforeEach(() => { vi.clearAllMocks(); + cacheAuthorizedRequests = false; mockCacheStore.get.mockResolvedValue({ body: { cached: true }, headers: {}, @@ -69,6 +77,99 @@ describe('graphql middleware', () => { vi.clearAllMocks(); }); + it('bypasses unsupported methods before reading the body or cache', async () => { + const ctx = { + request: { + url: '/graphql', + method: 'PUT', + headers: {}, + }, + method: 'PUT', + req: {}, + } as unknown as Context; + const next = vi.fn(); + + await graphqlMiddleware(ctx, next); + + expect(rawBodyMock).not.toHaveBeenCalled(); + expect(getCacheInstance).not.toHaveBeenCalled(); + expect(mockCacheStore.get).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledOnce(); + }); + + it('bypasses authorized requests before reading the body or cache', async () => { + const ctx = { + request: { + url: '/graphql', + method: 'POST', + headers: { authorization: 'Bearer token' }, + }, + method: 'POST', + req: {}, + } as unknown as Context; + const next = vi.fn(); + + await graphqlMiddleware(ctx, next); + + expect(rawBodyMock).not.toHaveBeenCalled(); + expect(getCacheInstance).not.toHaveBeenCalled(); + expect(mockCacheStore.get).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledOnce(); + }); + + it('still reads authorized POST requests when configured to cache them', async () => { + cacheAuthorizedRequests = true; + const originalReq = { + headers: {}, + method: 'POST', + url: '/graphql', + httpVersion: '1.1', + socket: {}, + connection: {}, + }; + rawBodyMock.mockResolvedValue(Buffer.from('{ articles { id } }')); + const ctx = { + request: { + url: '/graphql', + method: 'POST', + headers: { authorization: 'Bearer token' }, + }, + method: 'POST', + req: originalReq, + response: { headers: {} }, + set: vi.fn(), + status: 200, + body: undefined, + } as unknown as Context; + const next = vi.fn(); + + await graphqlMiddleware(ctx, next); + + expect(rawBodyMock).toHaveBeenCalledWith(originalReq); + expect(mockCacheStore.get).toHaveBeenCalledOnce(); + expect(next).not.toHaveBeenCalled(); + }); + + it('bypasses no-cache requests before reading the body or cache', async () => { + const ctx = { + request: { + url: '/graphql', + method: 'POST', + headers: { 'cache-control': 'no-cache' }, + }, + method: 'POST', + req: {}, + } as unknown as Context; + const next = vi.fn(); + + await graphqlMiddleware(ctx, next); + + expect(rawBodyMock).not.toHaveBeenCalled(); + expect(getCacheInstance).not.toHaveBeenCalled(); + expect(mockCacheStore.get).not.toHaveBeenCalled(); + expect(next).toHaveBeenCalledOnce(); + }); + it('uses configured keyGenerator for GraphQL cache lookup', async () => { const ctx = { request: { From 119b00830d522cd8dcfd600e5b69ddc2cfb24e2d Mon Sep 17 00:00:00 2001 From: TupiC <90184179+TupiC@users.noreply.github.com> Date: Mon, 17 Aug 2026 23:18:26 +0200 Subject: [PATCH 3/8] perf(redis): preserve binary cache responses (#137) --- benchmark/cache.bench.ts | 3 +- playground/package-lock.json | 2 +- server/src/middlewares/cache.ts | 102 ++++++++++++++------------ server/src/middlewares/graphql.ts | 100 +++++++++++++------------ server/src/services/redis/provider.ts | 29 +++++--- server/src/utils/body.ts | 65 ++++++++++++++++ server/src/utils/cors.ts | 56 ++++++++++++++ server/src/utils/header.ts | 20 +++++ test/middlewares/cache.test.ts | 95 +++++++++++++++++++++++- test/middlewares/graphql.test.ts | 42 ++++++++++- test/services/redis-provider.test.ts | 92 +++++++++++++++++++++++ test/utils/body.test.ts | 74 ++++++++++++++++++- test/utils/cors.test.ts | 82 +++++++++++++++++++++ test/utils/header.test.ts | 28 ++++++- 14 files changed, 679 insertions(+), 111 deletions(-) create mode 100644 server/src/utils/cors.ts create mode 100644 test/utils/cors.test.ts diff --git a/benchmark/cache.bench.ts b/benchmark/cache.bench.ts index f663b33..deeb5a4 100644 --- a/benchmark/cache.bench.ts +++ b/benchmark/cache.bench.ts @@ -18,7 +18,8 @@ const largeBody = { })), }; const largeCacheEntry = { - body: largeBody, + body: JSON.stringify(largeBody), + bodyType: 'json' as const, headers: { 'content-type': 'application/json; charset=utf-8', 'cache-control': 'public, max-age=60', diff --git a/playground/package-lock.json b/playground/package-lock.json index 770fa93..ee51191 100644 --- a/playground/package-lock.json +++ b/playground/package-lock.json @@ -33,7 +33,7 @@ } }, ".yalc/strapi-cache": { - "version": "1.11.1", + "version": "1.12.1", "license": "MIT", "dependencies": { "@strapi/design-system": "2.2.1", diff --git a/server/src/middlewares/cache.ts b/server/src/middlewares/cache.ts index e6c850f..dfb492b 100644 --- a/server/src/middlewares/cache.ts +++ b/server/src/middlewares/cache.ts @@ -3,8 +3,18 @@ import { CacheKeyGenerator, generateCacheKey, generateEntityKey } from '../utils import { CacheService } from '../../src/types/cache.types'; import { loggy } from '../utils/log'; import Stream from 'stream'; -import { decodeBufferToText, decompressBuffer, streamToBuffer } from '../utils/body'; -import { getCacheHeaderConfig, getHeadersToStore } from '../utils/header'; +import { + normalizeStreamForCache, + restoreCachedBody, + streamToBuffer, + toWireReadyBody, +} from '../utils/body'; +import { + getCacheHeaderConfig, + getHeadersForUncompressedBody, + getHeadersToStore, +} from '../utils/header'; +import { applyCorsHeaders, getCorsConfig, resolveCorsOrigin } from '../utils/cors'; const middleware = async (ctx: Context, next: any) => { const { url, method } = ctx.request; @@ -61,49 +71,31 @@ const middleware = async (ctx: Context, next: any) => { const cacheEntry = await cacheStore.get(key); const middlewaresConfig = strapi.config.get('middlewares') as any[]; - const corsMiddleware = middlewaresConfig.find((mw: any) => mw.name === 'strapi::cors'); - - const corsConfig = corsMiddleware?.config; - const origin = ctx?.request?.headers?.origin; - let allowedOrigins = corsConfig?.origin ?? '*'; - - if (typeof allowedOrigins === 'string') { - allowedOrigins = [allowedOrigins]; - } + const corsConfig = getCorsConfig(middlewaresConfig); + const corsOrigin = corsConfig ? await resolveCorsOrigin(ctx, corsConfig) : ''; if (cacheEntry && !noCache) { loggy.info(`HIT with key: ${key}`); ctx.status = 200; - if (cacheEntry?.body?.type === 'Buffer' && Array.isArray(cacheEntry.body.data)) { - cacheEntry.body = Buffer.from(cacheEntry.body.data); - } - ctx.body = cacheEntry.body; - - if (cacheHeaders) { + if (cacheHeaders && cacheEntry.headers) { ctx.set(cacheEntry.headers); } - - if (corsMiddleware) { - loggy.info('CORS middleware is set, checking allowed origins'); - if (allowedOrigins.includes(origin)) { - loggy.info(`Setting Access-Control-Allow-Origin to ${origin}`); - ctx.set('Access-Control-Allow-Origin', origin); - } else if (typeof origin === 'undefined' || allowedOrigins.includes('*')) { - loggy.info('No origin header or * in allowed origins, setting to *'); - ctx.set('Access-Control-Allow-Origin', '*'); - } - } else { - loggy.info('No CORS middleware set, setting to request origin or *'); - ctx.set('Access-Control-Allow-Origin', ctx.request.headers.origin || '*'); + const cachedBody = restoreCachedBody(cacheEntry.body); + if (cacheEntry.bodyType === 'json' && !ctx.response.headers['content-type']) { + ctx.type = 'json'; } + ctx.body = cachedBody; + + if (corsConfig) applyCorsHeaders(ctx, corsConfig, corsOrigin); return; } await next(); - if (ctx.method === 'GET' && ctx.status >= 200 && ctx.status < 300 && isCacheable) { + if (ctx.method === 'GET' && ctx.status === 200 && isCacheable) { loggy.info(`MISS with key: ${key}`); + if (corsConfig) applyCorsHeaders(ctx, corsConfig, corsOrigin); const headersToStore = getHeadersToStore( ctx, cacheHeaders, @@ -111,30 +103,44 @@ const middleware = async (ctx: Context, next: any) => { cacheHeadersDenyList ); - let setCache = true; - - if (corsMiddleware) { - if (allowedOrigins.includes(origin)) { - //do nothing as the origin is allowed - } else if (typeof origin === 'undefined' || allowedOrigins.includes('*')) { - //do nothing as the origin is undefined (POSTMAN) or allowedOrigins includes '*' - } else { - setCache = false; - } - } + const setCache = !corsConfig || Boolean(corsOrigin); if (ctx.body instanceof Stream) { const buf = await streamToBuffer(ctx.body); - const contentEncoding = ctx.response.headers['content-encoding']; - const decompressed = await decompressBuffer(buf, contentEncoding); - const responseText = decodeBufferToText(decompressed); + ctx.body = buf; if (setCache) { - await cacheStore.set(key, { body: responseText, headers: headersToStore }); + const contentEncoding = ctx.response.headers['content-encoding']; + const contentType = ctx.response.headers['content-type']; + try { + const wireReadyBody = await normalizeStreamForCache(buf, contentEncoding, contentType); + if (wireReadyBody) { + await cacheStore.set(key, { + body: wireReadyBody.body, + bodyType: wireReadyBody.bodyType, + headers: getHeadersForUncompressedBody(headersToStore), + }); + } else { + loggy.warn(`Skipping cache for unsupported content encoding: ${contentEncoding}`); + } + } catch (error) { + loggy.warn(`Skipping cache because the response could not be decoded: ${error}`); + } } - ctx.body = buf; } else { if (setCache) { - await cacheStore.set(key, { body: ctx.body, headers: headersToStore }); + const wireReadyBody = await toWireReadyBody( + ctx.body, + ctx.response.headers['content-type'] as string | undefined + ); + if (wireReadyBody.bodyType === 'json' && !ctx.response.headers['content-type']) { + ctx.type = 'json'; + } + await cacheStore.set(key, { + body: wireReadyBody.body, + bodyType: wireReadyBody.bodyType, + headers: headersToStore, + }); + ctx.body = wireReadyBody.body; } } } diff --git a/server/src/middlewares/graphql.ts b/server/src/middlewares/graphql.ts index bf3827f..05532a8 100644 --- a/server/src/middlewares/graphql.ts +++ b/server/src/middlewares/graphql.ts @@ -3,9 +3,19 @@ import { CacheKeyGenerator, generateGraphqlCacheKey, resolveGraphqlCacheKey } fr import Stream, { Readable } from 'stream'; import { loggy } from '../utils/log'; import { CacheService } from '../types/cache.types'; -import { decodeBufferToText, decompressBuffer, streamToBuffer } from '../utils/body'; -import { getCacheHeaderConfig, getHeadersToStore } from '../utils/header'; +import { + normalizeStreamForCache, + restoreCachedBody, + streamToBuffer, + toWireReadyBody, +} from '../utils/body'; +import { + getCacheHeaderConfig, + getHeadersForUncompressedBody, + getHeadersToStore, +} from '../utils/header'; import { parseGraphqlPayload, getRootFieldsFromQuery } from '../utils/graphql'; +import { applyCorsHeaders, getCorsConfig, resolveCorsOrigin } from '../utils/cors'; const middleware = async (ctx: any, next: any) => { const { url, method } = ctx.request; @@ -94,38 +104,22 @@ const middleware = async (ctx: any, next: any) => { const cacheEntry = await cacheStore.get(key); const middlewaresConfig = strapi.config.get('middlewares') as any[]; - const corsMiddleware = middlewaresConfig.find((mw: any) => mw.name === 'strapi::cors'); - - const corsConfig = corsMiddleware?.config; - const origin = ctx?.request?.headers?.origin; - let allowedOrigins = corsConfig?.origin ?? '*'; - - if (typeof allowedOrigins === 'string') { - allowedOrigins = [allowedOrigins]; - } + const corsConfig = getCorsConfig(middlewaresConfig); + const corsOrigin = corsConfig ? await resolveCorsOrigin(ctx, corsConfig) : ''; if (cacheEntry && !noCache) { loggy.info(`HIT with key: ${key}`); ctx.status = 200; - ctx.body = cacheEntry.body; - if (cacheHeaders) { + if (cacheHeaders && cacheEntry.headers) { ctx.set(cacheEntry.headers); } - - if (corsMiddleware) { - loggy.info('CORS middleware is set, checking allowed origins'); - - if (allowedOrigins.includes(origin)) { - loggy.info(`Setting Access-Control-Allow-Origin to ${origin}`); - ctx.set('Access-Control-Allow-Origin', origin); - } else if (typeof origin === 'undefined' || allowedOrigins.includes('*')) { - loggy.info('No origin header or * in allowed origins, setting to *'); - ctx.set('Access-Control-Allow-Origin', '*'); - } - } else { - loggy.info('No CORS middleware set, setting to request origin or *'); - ctx.set('Access-Control-Allow-Origin', ctx.request.headers.origin || '*'); + const cachedBody = restoreCachedBody(cacheEntry.body); + if (cacheEntry.bodyType === 'json' && !ctx.response.headers['content-type']) { + ctx.type = 'json'; } + ctx.body = cachedBody; + + if (corsConfig) applyCorsHeaders(ctx, corsConfig, corsOrigin); return; } @@ -133,12 +127,12 @@ const middleware = async (ctx: any, next: any) => { const shouldCache = (ctx.method === 'POST' || ctx.method === 'GET') && - ctx.status >= 200 && - ctx.status < 300 && + ctx.status === 200 && url.startsWith(strapi.plugin('graphql')?.config('endpoint', '/graphql')); if (shouldCache) { loggy.info(`MISS with key: ${key}`); + if (corsConfig) applyCorsHeaders(ctx, corsConfig, corsOrigin); const headers = ctx.request.headers; const authorizationHeader = headers['authorization']; @@ -154,30 +148,44 @@ const middleware = async (ctx: any, next: any) => { cacheHeadersDenyList ); - let setCache = true; - - if (corsMiddleware) { - if (allowedOrigins.includes(origin)) { - //do nothing as the origin is allowed - } else if (typeof origin === 'undefined' || allowedOrigins.includes('*')) { - //do nothing as the origin is undefined (POSTMAN) or allowedOrigins includes '*' - } else { - setCache = false; - } - } + const setCache = !corsConfig || Boolean(corsOrigin); if (ctx.body instanceof Stream) { const buf = await streamToBuffer(ctx.body); - const contentEncoding = ctx.response.headers['content-encoding']; - const decompressed = await decompressBuffer(buf, contentEncoding); - const responseText = decodeBufferToText(decompressed); + ctx.body = buf; if (setCache) { - await cacheStore.set(key, { body: responseText, headers: headersToStore }); + const contentEncoding = ctx.response.headers['content-encoding']; + const contentType = ctx.response.headers['content-type']; + try { + const wireReadyBody = await normalizeStreamForCache(buf, contentEncoding, contentType); + if (wireReadyBody) { + await cacheStore.set(key, { + body: wireReadyBody.body, + bodyType: wireReadyBody.bodyType, + headers: getHeadersForUncompressedBody(headersToStore), + }); + } else { + loggy.warn(`Skipping cache for unsupported content encoding: ${contentEncoding}`); + } + } catch (error) { + loggy.warn(`Skipping cache because the response could not be decoded: ${error}`); + } } - ctx.body = buf; } else { if (setCache) { - await cacheStore.set(key, { body: ctx.body, headers: headersToStore }); + const wireReadyBody = await toWireReadyBody( + ctx.body, + ctx.response.headers['content-type'] as string | undefined + ); + if (wireReadyBody.bodyType === 'json' && !ctx.response.headers['content-type']) { + ctx.type = 'json'; + } + await cacheStore.set(key, { + body: wireReadyBody.body, + bodyType: wireReadyBody.bodyType, + headers: headersToStore, + }); + ctx.body = wireReadyBody.body; } } } diff --git a/server/src/services/redis/provider.ts b/server/src/services/redis/provider.ts index 36a0b50..3802f0a 100644 --- a/server/src/services/redis/provider.ts +++ b/server/src/services/redis/provider.ts @@ -1,9 +1,20 @@ import type { Core } from '@strapi/strapi'; import { Redis, Cluster, ClusterNode, ClusterOptions } from 'ioredis'; +import { deserialize, serialize } from 'node:v8'; import { withTimeout } from '../../utils/withTimeout'; import { CacheProvider } from '../../types/cache.types'; import { loggy } from '../../utils/log'; +const deserializeCacheEntry = (data: Buffer): any => { + try { + return deserialize(data); + } catch { + // Entries written by released versions are JSON strings. Keep reading them in + // place so upgrading does not require new keys or an eager cache migration. + return JSON.parse(data.toString('utf8')); + } +}; + export class RedisCacheProvider implements CacheProvider { private initialized = false; private client!: Redis | Cluster; @@ -30,8 +41,7 @@ export class RedisCacheProvider implements CacheProvider { ); this.keyPrefix = (this.strapi.plugin('strapi-cache').config('redisConfig')?.['keyPrefix'] as - | string - | undefined) ?? ''; + string | undefined) ?? ''; this.redisScanDeleteCount = Number( this.strapi.plugin('strapi-cache').config('redisScanDeleteCount') ); @@ -66,8 +76,11 @@ export class RedisCacheProvider implements CacheProvider { async get(key: string): Promise { if (!this.ready) return null; - return withTimeout(() => this.client.get(key), this.cacheGetTimeoutInMs) - .then((data) => (data ? JSON.parse(data) : null)) + return withTimeout(() => this.client.getBuffer(key), this.cacheGetTimeoutInMs) + .then((data) => { + if (!data || data.length === 0) return null; + return deserializeCacheEntry(data); + }) .catch((error) => { loggy.error(`Redis get error: ${error?.message || error}`); return null; @@ -78,12 +91,10 @@ export class RedisCacheProvider implements CacheProvider { if (!this.ready) return null; try { - // plugin ttl is ms, ioredis ttl is s, so we convert here const ttlInMs = Number(this.strapi.plugin('strapi-cache').config('ttl')); - const ttlInS = Number((ttlInMs / 1000).toFixed()); - const serialized = JSON.stringify(val); - if (ttlInS > 0) { - await this.client.set(key, serialized, 'EX', ttlInS); + const serialized = serialize(val); + if (ttlInMs > 0) { + await this.client.set(key, serialized, 'PX', ttlInMs); } else { await this.client.set(key, serialized); } diff --git a/server/src/utils/body.ts b/server/src/utils/body.ts index a3ac2ca..1caf727 100644 --- a/server/src/utils/body.ts +++ b/server/src/utils/body.ts @@ -1,6 +1,18 @@ import { Stream } from 'stream'; import { createGunzip, createBrotliDecompress, createInflate } from 'zlib'; +export type WireReadyBodyType = 'json' | 'string' | 'buffer' | 'empty'; +export type WireReadyBodyValue = string | Buffer | null | undefined; + +export interface WireReadyBody { + body: WireReadyBodyValue; + bodyType: WireReadyBodyType; +} + +const supportedContentEncodings = new Set(['br', 'deflate', 'gzip', 'identity']); +const isJsonContentType = (contentType?: string): boolean => + Boolean(contentType?.toLowerCase().includes('json')); + export const streamToBuffer = (stream: Stream): Promise => { return new Promise((resolve, reject) => { const chunks: Buffer[] = []; @@ -10,6 +22,59 @@ export const streamToBuffer = (stream: Stream): Promise => { }); }; +export const toWireReadyBody = async ( + body: unknown, + contentType?: string +): Promise => { + if (body instanceof Stream) { + return { body: await streamToBuffer(body), bodyType: 'buffer' }; + } + + if (Buffer.isBuffer(body)) { + return { body, bodyType: isJsonContentType(contentType) ? 'json' : 'buffer' }; + } + + if (typeof body === 'string') { + return { body, bodyType: isJsonContentType(contentType) ? 'json' : 'string' }; + } + + if (body == null) { + return { body: body === null ? null : undefined, bodyType: 'empty' }; + } + + return { body: JSON.stringify(body), bodyType: 'json' }; +}; + +export const normalizeStreamForCache = async ( + body: Buffer, + contentEncoding?: string, + contentType?: string +): Promise => { + const encoding = contentEncoding?.trim().toLowerCase(); + if (encoding && !supportedContentEncodings.has(encoding)) { + return null; + } + + const normalizedBody = + encoding && encoding !== 'identity' ? await decompressBuffer(body, encoding) : body; + const bodyType = isJsonContentType(contentType) ? 'json' : 'buffer'; + + return { body: normalizedBody, bodyType }; +}; + +export const restoreCachedBody = (body: unknown): unknown => { + if ( + body && + typeof body === 'object' && + (body as { type?: unknown }).type === 'Buffer' && + Array.isArray((body as { data?: unknown }).data) + ) { + return Buffer.from((body as { data: number[] }).data); + } + + return body; +}; + export const decompressBuffer = async (buffer: Buffer, encoding?: string): Promise => { return new Promise((resolve, reject) => { let decompressStream; diff --git a/server/src/utils/cors.ts b/server/src/utils/cors.ts new file mode 100644 index 0000000..4d17749 --- /dev/null +++ b/server/src/utils/cors.ts @@ -0,0 +1,56 @@ +type CorsConfig = { + origin?: string | string[] | ((ctx: any) => string | string[] | Promise); + credentials?: boolean; + expose?: string | string[]; +}; + +export const getCorsConfig = (middlewares: any[]): CorsConfig | null => { + const middleware = middlewares.find( + (entry) => entry === 'strapi::cors' || entry?.name === 'strapi::cors' + ); + + if (!middleware) return null; + return typeof middleware === 'string' ? {} : (middleware.config ?? {}); +}; + +export const resolveCorsOrigin = async (ctx: any, config: CorsConfig): Promise => { + const requestOrigin = ctx?.request?.headers?.origin as string | undefined; + if (!requestOrigin) return '*'; + + const configuredOrigin = config.origin ?? '*'; + const resolvedOrigin = + typeof configuredOrigin === 'function' ? await configuredOrigin(ctx) : configuredOrigin; + const origins = Array.isArray(resolvedOrigin) + ? resolvedOrigin + : String(resolvedOrigin ?? '*') + .split(',') + .map((origin) => origin.trim()); + + return origins.includes('*') || origins.includes(requestOrigin) ? requestOrigin : ''; +}; + +export const applyCorsHeaders = (ctx: any, config: CorsConfig, origin: string): void => { + for (const header of [ + 'Access-Control-Allow-Origin', + 'Access-Control-Allow-Credentials', + 'Access-Control-Expose-Headers', + ]) { + if (typeof ctx.remove === 'function') ctx.remove(header); + } + + if (!origin) return; + + ctx.set('Access-Control-Allow-Origin', origin); + if (config.credentials ?? true) { + ctx.set('Access-Control-Allow-Credentials', 'true'); + } + + if (config.expose) { + ctx.set( + 'Access-Control-Expose-Headers', + Array.isArray(config.expose) ? config.expose.join(',') : config.expose + ); + } + + if (typeof ctx.vary === 'function') ctx.vary('Origin'); +}; diff --git a/server/src/utils/header.ts b/server/src/utils/header.ts index 386816e..9ce516b 100644 --- a/server/src/utils/header.ts +++ b/server/src/utils/header.ts @@ -1,6 +1,16 @@ import { Context } from 'koa'; import { OutgoingHttpHeaders } from 'http'; +const encodedBodyHeaders = new Set([ + 'content-encoding', + 'content-length', + 'content-md5', + 'content-range', + 'digest', + 'etag', + 'transfer-encoding', +]); + export function getHeadersToStore( ctx: Context, cacheHeaders: boolean, @@ -30,6 +40,16 @@ export function getHeadersToStore( return headersToStore; } +export function getHeadersForUncompressedBody( + headers: OutgoingHttpHeaders | null +): OutgoingHttpHeaders | null { + if (!headers) return null; + + return Object.fromEntries( + Object.entries(headers).filter(([key]) => !encodedBodyHeaders.has(key.toLowerCase())) + ); +} + export function getCacheHeaderConfig() { const cacheHeaders = strapi.plugin('strapi-cache').config('cacheHeaders') as boolean; const cacheHeadersDenyList = strapi diff --git a/test/middlewares/cache.test.ts b/test/middlewares/cache.test.ts index d995c07..b6fb613 100644 --- a/test/middlewares/cache.test.ts +++ b/test/middlewares/cache.test.ts @@ -1,5 +1,7 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { Context } from 'koa'; +import { Readable } from 'stream'; +import { gzipSync } from 'zlib'; import cacheMiddleware from '../../server/src/middlewares/cache'; describe('cache middleware', () => { @@ -178,20 +180,107 @@ describe('cache middleware', () => { expect(next).toHaveBeenCalledOnce(); }); - it('stores a successful cacheable response after a miss', async () => { + it('stores a successful cacheable response as a wire-ready JSON string', async () => { mockCacheStore.get.mockResolvedValueOnce(null); const ctx = createContext(); + const responseBody = { data: { articles: [] } }; const next = vi.fn(async () => { ctx.status = 200; - ctx.body = { data: { articles: [] } }; + ctx.body = responseBody; }); await cacheMiddleware(ctx, next); expect(next).toHaveBeenCalledOnce(); expect(mockCacheStore.set).toHaveBeenCalledWith('custom:GET:/api/articles', { - body: { data: { articles: [] } }, + body: JSON.stringify(responseBody), + bodyType: 'json', headers: null, }); + expect(ctx.body).toBe(JSON.stringify(responseBody)); + }); + + it('caches identity bytes while preserving compressed bytes for the miss response', async () => { + mockCacheStore.get.mockResolvedValueOnce(null); + const originalBody = Buffer.from('{"data":{"articles":[]}}'); + const compressedBody = gzipSync(originalBody); + const ctx = createContext(); + ctx.response.headers['content-encoding'] = 'gzip'; + ctx.response.headers['content-type'] = 'application/json; charset=utf-8'; + const next = vi.fn(async () => { + ctx.status = 200; + ctx.body = Readable.from(compressedBody); + }); + + await cacheMiddleware(ctx, next); + + expect(mockCacheStore.set).toHaveBeenCalledWith('custom:GET:/api/articles', { + body: originalBody, + bodyType: 'json', + headers: null, + }); + expect(ctx.body).toEqual(compressedBody); + }); + + it('does not cache streams with an unsupported content encoding', async () => { + mockCacheStore.get.mockResolvedValueOnce(null); + const encodedBody = Buffer.from('encoded response'); + const ctx = createContext(); + ctx.response.headers['content-encoding'] = 'zstd'; + const next = vi.fn(async () => { + ctx.status = 200; + ctx.body = Readable.from(encodedBody); + }); + + await cacheMiddleware(ctx, next); + + expect(mockCacheStore.set).not.toHaveBeenCalled(); + expect(ctx.body).toEqual(encodedBody); + }); + + it('preserves the response and skips caching when declared compression is malformed', async () => { + mockCacheStore.get.mockResolvedValueOnce(null); + const malformedBody = Buffer.from('not actually gzip'); + const ctx = createContext(); + ctx.response.headers['content-encoding'] = 'gzip'; + const next = vi.fn(async () => { + ctx.status = 200; + ctx.body = Readable.from(malformedBody); + }); + + await cacheMiddleware(ctx, next); + + expect(mockCacheStore.set).not.toHaveBeenCalled(); + expect(ctx.body).toEqual(malformedBody); + }); + + it('does not cache partial responses that would be replayed with the wrong status', async () => { + mockCacheStore.get.mockResolvedValueOnce(null); + const ctx = createContext(); + const next = vi.fn(async () => { + ctx.status = 206; + ctx.body = Buffer.from('partial'); + }); + + await cacheMiddleware(ctx, next); + + expect(mockCacheStore.set).not.toHaveBeenCalled(); + expect(ctx.status).toBe(206); + }); + + it('sends a wire-ready cached body without parsing it', async () => { + const cachedBody = Buffer.from('{"data":{"articles":[]}}'); + mockCacheStore.get.mockResolvedValueOnce({ + body: cachedBody, + bodyType: 'buffer', + headers: {}, + }); + const ctx = createContext(); + const next = vi.fn(); + + await cacheMiddleware(ctx, next); + + expect(ctx.body).toBe(cachedBody); + expect(next).not.toHaveBeenCalled(); }); }); diff --git a/test/middlewares/graphql.test.ts b/test/middlewares/graphql.test.ts index 557ec9d..6d0ec39 100644 --- a/test/middlewares/graphql.test.ts +++ b/test/middlewares/graphql.test.ts @@ -1,5 +1,7 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { Context } from 'koa'; +import { Readable } from 'stream'; +import { gzipSync } from 'zlib'; const { rawBodyMock } = vi.hoisted(() => ({ rawBodyMock: vi.fn() })); @@ -264,8 +266,46 @@ describe('graphql middleware', () => { 'custom:GET:/graphql?query=%7Barticles%7Bdata%7Bid%7D%7D%7D' ); expect(mockCacheStore.set.mock.calls[0][1]).toEqual({ - body: { data: { articles: { data: [] } } }, + body: JSON.stringify({ data: { articles: { data: [] } } }), + bodyType: 'json', headers: null, }); + expect(ctx.body).toBe(JSON.stringify({ data: { articles: { data: [] } } })); + }); + + it('caches an encoded GraphQL stream as identity JSON bytes', async () => { + mockCacheStore.get.mockResolvedValueOnce(null); + const originalBody = Buffer.from('{"data":{"articles":[]}}'); + const compressedBody = gzipSync(originalBody); + const ctx = { + request: { + url: '/graphql?query=%7Barticles%7BdocumentId%7D%7D', + method: 'GET', + query: { query: '{ articles { documentId } }' }, + headers: {}, + }, + method: 'GET', + response: { + headers: { + 'content-encoding': 'gzip', + 'content-type': 'application/json; charset=utf-8', + }, + }, + set: vi.fn(), + status: 200, + body: undefined, + } as unknown as Context; + const next = vi.fn(async () => { + ctx.status = 200; + ctx.body = Readable.from(compressedBody); + }); + + await graphqlMiddleware(ctx, next); + + expect(mockCacheStore.set).toHaveBeenCalledWith( + 'custom:GET:/graphql?query=%7Barticles%7BdocumentId%7D%7D', + { body: originalBody, bodyType: 'json', headers: null } + ); + expect(ctx.body).toEqual(compressedBody); }); }); diff --git a/test/services/redis-provider.test.ts b/test/services/redis-provider.test.ts index aa86232..dfbc11a 100644 --- a/test/services/redis-provider.test.ts +++ b/test/services/redis-provider.test.ts @@ -18,6 +18,7 @@ vi.mock('../../server/src/utils/log', () => ({ vi.mock('ioredis', () => { const Redis = vi.fn().mockImplementation(() => ({ get: vi.fn(), + getBuffer: vi.fn(), set: vi.fn(), del: vi.fn(), keys: vi.fn(), @@ -50,8 +51,10 @@ describe('RedisCacheProvider', () => { let mockStrapi: Pick; let mockClient: InstanceType; let mockPipeline: Pick; + let ttl: number | undefined; beforeEach(() => { + ttl = undefined; mockPipeline = { del: vi.fn().mockReturnThis(), exec: vi.fn().mockResolvedValue([]), @@ -61,6 +64,7 @@ describe('RedisCacheProvider', () => { mockClient = Object.create((Redis as any).prototype); Object.assign(mockClient, { get: vi.fn(), + getBuffer: vi.fn(), set: vi.fn(), del: vi.fn(), keys: vi.fn(), @@ -78,6 +82,7 @@ describe('RedisCacheProvider', () => { if (key === 'cacheGetTimeoutInMs') return 1000; if (key === 'redisClusterNodes') return []; if (key === 'redisScanDeleteCount') return 100; + if (key === 'ttl') return ttl; return undefined; }), }), @@ -95,6 +100,93 @@ describe('RedisCacheProvider', () => { vi.clearAllMocks(); }); + describe('wire-ready entries', () => { + it('stores and retrieves response bytes without JSON encoding or a custom prefix', async () => { + const body = Buffer.from([0x00, 0xff, 0x7b, 0x22, 0x7d]); + const entry = { + body, + bodyType: 'buffer' as const, + headers: { 'content-type': 'application/octet-stream' }, + }; + + await provider.set('cache-key', entry); + + const storedValue = (mockClient.set as ReturnType).mock.calls[0][1]; + expect(Buffer.isBuffer(storedValue)).toBe(true); + expect(storedValue.includes(Buffer.from('strapi-cache:wire:'))).toBe(false); + expect(mockClient.get).not.toHaveBeenCalled(); + + (mockClient.getBuffer as ReturnType).mockResolvedValue(storedValue); + + await expect(provider.get('cache-key')).resolves.toEqual(entry); + expect(mockClient.getBuffer).toHaveBeenCalledWith('cache-key'); + }); + + it('preserves the complete serialized JSON response body', async () => { + const entry = { + body: JSON.stringify({ data: [{ id: 1, name: 'Ada' }] }), + bodyType: 'json' as const, + headers: { 'content-type': 'application/json; charset=utf-8' }, + }; + + await provider.set('cache-key', entry); + const storedValue = (mockClient.set as ReturnType).mock.calls[0][1]; + (mockClient.getBuffer as ReturnType).mockResolvedValue(storedValue); + + const cached = await provider.get('cache-key'); + + expect(cached).toEqual(entry); + expect(cached.body).not.toBe(''); + }); + + it('continues reading legacy JSON entries after an upgrade', async () => { + const legacyEntry = { + body: { type: 'Buffer', data: [0, 255, 123, 34, 125] }, + headers: { 'content-type': 'application/octet-stream' }, + }; + (mockClient.getBuffer as ReturnType).mockResolvedValue( + Buffer.from(JSON.stringify(legacyEntry)) + ); + + await expect(provider.get('cache-key')).resolves.toEqual(legacyEntry); + }); + + it('preserves empty and Unicode response bodies', async () => { + const entries = [ + { body: '', bodyType: 'string' as const, headers: null }, + { body: 'Grüße 🌍 你好', bodyType: 'string' as const, headers: null }, + { body: Buffer.alloc(0), bodyType: 'buffer' as const, headers: null }, + ]; + + for (const entry of entries) { + vi.mocked(mockClient.set).mockClear(); + await provider.set('cache-key', entry); + const storedValue = vi.mocked(mockClient.set).mock.calls[0][1] as Buffer; + vi.mocked(mockClient.getBuffer).mockResolvedValueOnce(storedValue); + await expect(provider.get('cache-key')).resolves.toEqual(entry); + } + }); + + it('treats missing, empty, and malformed Redis values as cache misses', async () => { + vi.mocked(mockClient.getBuffer) + .mockResolvedValueOnce(null) + .mockResolvedValueOnce(Buffer.alloc(0)) + .mockResolvedValueOnce(Buffer.from([0x00, 0xff, 0x01])); + + await expect(provider.get('missing')).resolves.toBeNull(); + await expect(provider.get('empty')).resolves.toBeNull(); + await expect(provider.get('malformed')).resolves.toBeNull(); + }); + + it('uses millisecond Redis expiry without rounding short TTLs to no expiry', async () => { + ttl = 250; + + await provider.set('cache-key', { body: 'short lived', headers: null }); + + expect(mockClient.set).toHaveBeenCalledWith('cache-key', expect.any(Buffer), 'PX', 250); + }); + }); + describe('clearByRegexp', () => { it('should call scanStream with correct match and count params', async () => { const stream = createMockStream(); diff --git a/test/utils/body.test.ts b/test/utils/body.test.ts index 9bdef6f..ef7a169 100644 --- a/test/utils/body.test.ts +++ b/test/utils/body.test.ts @@ -1,7 +1,79 @@ import { describe, it, expect } from 'vitest'; import { Readable } from 'stream'; import { gzipSync, brotliCompressSync, deflateSync } from 'zlib'; -import { streamToBuffer, decompressBuffer, decodeBufferToText } from '../../server/src/utils/body'; +import { + streamToBuffer, + decompressBuffer, + decodeBufferToText, + normalizeStreamForCache, + restoreCachedBody, + toWireReadyBody, +} from '../../server/src/utils/body'; + +describe('toWireReadyBody', () => { + it('serializes JSON bodies once', async () => { + const body = { data: { articles: [] } }; + + await expect(toWireReadyBody(body)).resolves.toEqual({ + body: JSON.stringify(body), + bodyType: 'json', + }); + }); + + it('preserves stream bytes', async () => { + const body = Buffer.from([0x00, 0xff, 0x01]); + + await expect(toWireReadyBody(Readable.from(body))).resolves.toEqual({ + body, + bodyType: 'buffer', + }); + }); + + it('uses the response content type for pre-serialized JSON strings and buffers', async () => { + const body = '{"data":[]}'; + + await expect(toWireReadyBody(body, 'application/json; charset=utf-8')).resolves.toEqual({ + body, + bodyType: 'json', + }); + await expect(toWireReadyBody(Buffer.from(body), 'application/problem+json')).resolves.toEqual({ + body: Buffer.from(body), + bodyType: 'json', + }); + }); +}); + +describe('restoreCachedBody', () => { + it('restores Buffer values from legacy serialized cache entries', () => { + const body = [0, 255, 1]; + + expect(restoreCachedBody({ type: 'Buffer', data: body })).toEqual(Buffer.from(body)); + }); +}); + +describe('normalizeStreamForCache', () => { + it('decompresses a gzip JSON stream and marks its identity bytes as JSON', async () => { + const body = Buffer.from('{"data":[]}'); + + await expect( + normalizeStreamForCache(gzipSync(body), 'GZIP', 'application/problem+json; charset=utf-8') + ).resolves.toEqual({ body, bodyType: 'json' }); + }); + + it('preserves an identity binary stream', async () => { + const body = Buffer.from([0x00, 0xff, 0x01]); + + await expect( + normalizeStreamForCache(body, 'identity', 'application/octet-stream') + ).resolves.toEqual({ body, bodyType: 'buffer' }); + }); + + it('refuses an unsupported content encoding', async () => { + await expect( + normalizeStreamForCache(Buffer.from('encoded'), 'zstd', 'application/json') + ).resolves.toBeNull(); + }); +}); describe('streamToBuffer', () => { it('should convert a readable stream to buffer', async () => { diff --git a/test/utils/cors.test.ts b/test/utils/cors.test.ts new file mode 100644 index 0000000..806c4ab --- /dev/null +++ b/test/utils/cors.test.ts @@ -0,0 +1,82 @@ +import { describe, expect, it, vi } from 'vitest'; +import { applyCorsHeaders, getCorsConfig, resolveCorsOrigin } from '../../server/src/utils/cors'; + +describe('getCorsConfig', () => { + it('recognizes the standard string middleware entry', () => { + expect(getCorsConfig(['strapi::security', 'strapi::cors'])).toEqual({}); + }); + + it('returns object-form middleware configuration', () => { + const config = { origin: ['https://example.test'], credentials: false }; + expect(getCorsConfig([{ name: 'strapi::cors', config }])).toBe(config); + }); + + it('returns null when CORS is not configured', () => { + expect(getCorsConfig(['strapi::security'])).toBeNull(); + }); +}); + +describe('resolveCorsOrigin', () => { + const context = (origin?: string) => ({ request: { headers: { origin } } }); + + it('reflects the request origin for the default wildcard', async () => { + await expect(resolveCorsOrigin(context('https://example.test'), {})).resolves.toBe( + 'https://example.test' + ); + }); + + it('supports comma-separated and array origin configuration', async () => { + await expect( + resolveCorsOrigin(context('https://b.test'), { origin: 'https://a.test, https://b.test' }) + ).resolves.toBe('https://b.test'); + await expect( + resolveCorsOrigin(context('https://b.test'), { origin: ['https://a.test'] }) + ).resolves.toBe(''); + }); + + it('supports asynchronous origin functions', async () => { + const origin = vi.fn().mockResolvedValue(['https://example.test']); + const ctx = context('https://example.test'); + + await expect(resolveCorsOrigin(ctx, { origin })).resolves.toBe('https://example.test'); + expect(origin).toHaveBeenCalledWith(ctx); + }); + + it('uses a wildcard when the request has no origin', async () => { + await expect(resolveCorsOrigin(context(), { origin: [] })).resolves.toBe('*'); + }); +}); + +describe('applyCorsHeaders', () => { + it('replaces cached CORS headers with per-request values and defaults credentials to true', () => { + const headers = new Map([ + ['Access-Control-Allow-Origin', 'https://stale.test'], + ['Access-Control-Allow-Credentials', 'false'], + ]); + const ctx = { + set: vi.fn((key: string, value: string) => headers.set(key, value)), + remove: vi.fn((key: string) => headers.delete(key)), + vary: vi.fn(), + }; + + applyCorsHeaders(ctx, { expose: ['X-Request-Id', 'X-Total'] }, 'https://example.test'); + + expect(headers.get('Access-Control-Allow-Origin')).toBe('https://example.test'); + expect(headers.get('Access-Control-Allow-Credentials')).toBe('true'); + expect(headers.get('Access-Control-Expose-Headers')).toBe('X-Request-Id,X-Total'); + expect(ctx.vary).toHaveBeenCalledWith('Origin'); + }); + + it('removes stale CORS headers for a disallowed origin', () => { + const headers = new Map([['Access-Control-Allow-Origin', '*']]); + const ctx = { + set: vi.fn(), + remove: vi.fn((key: string) => headers.delete(key)), + }; + + applyCorsHeaders(ctx, {}, ''); + + expect(headers.has('Access-Control-Allow-Origin')).toBe(false); + expect(ctx.set).not.toHaveBeenCalled(); + }); +}); diff --git a/test/utils/header.test.ts b/test/utils/header.test.ts index cccbfd7..4a9841b 100644 --- a/test/utils/header.test.ts +++ b/test/utils/header.test.ts @@ -1,6 +1,10 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { Context } from 'koa'; -import { getHeadersToStore, getCacheHeaderConfig } from '../../server/src/utils/header'; +import { + getHeadersForUncompressedBody, + getHeadersToStore, + getCacheHeaderConfig, +} from '../../server/src/utils/header'; // Mock strapi global const mockStrapi = { @@ -152,6 +156,28 @@ describe('getHeadersToStore', () => { }); }); +describe('getHeadersForUncompressedBody', () => { + it('removes headers tied to the encoded representation', () => { + expect( + getHeadersForUncompressedBody({ + 'content-type': 'application/json', + 'content-encoding': 'gzip', + 'content-length': '123', + etag: '"compressed"', + digest: 'sha-256=:encoded:', + vary: 'Accept-Encoding', + }) + ).toEqual({ + 'content-type': 'application/json', + vary: 'Accept-Encoding', + }); + }); + + it('preserves a disabled header cache', () => { + expect(getHeadersForUncompressedBody(null)).toBeNull(); + }); +}); + describe('getCacheHeaderConfig', () => { beforeEach(() => { vi.clearAllMocks(); From 3e367a029dc8321bc45eb10524837171224df1bc Mon Sep 17 00:00:00 2001 From: Christoph Tupi Date: Tue, 18 Aug 2026 19:48:06 +0200 Subject: [PATCH 4/8] chore(deps): audit fix --- package-lock.json | 7588 ++++++++++++++++++++++++--------------------- 1 file changed, 4046 insertions(+), 3542 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73dd17e..c8c2244 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1100,9 +1100,9 @@ } }, "node_modules/@codemirror/state": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.0.tgz", - "integrity": "sha512-Zbl9NyscLMZkfXPQnNAIIAFftidrA1UbcJEIMp24C0Bukc2I5T8wJS0wsXYsnDOqCFJUeJ1BITGNs5CqPDSmSg==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.1.tgz", + "integrity": "sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A==", "license": "MIT", "dependencies": { "@marijn/find-cluster-break": "^1.0.0" @@ -2084,22 +2084,32 @@ "license": "BSD-3-Clause" }, "node_modules/@hono/node-server": { - "version": "1.19.14", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", - "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.1.tgz", + "integrity": "sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18.14.1" + "node": ">=20" }, "peerDependencies": { "hono": "^4" } }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.3.tgz", + "integrity": "sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==", "cpu": [ "arm64" ], @@ -2110,19 +2120,19 @@ "darwin" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" + "@img/sharp-libvips-darwin-arm64": "1.3.2" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.3.tgz", + "integrity": "sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==", "cpu": [ "x64" ], @@ -2133,19 +2143,39 @@ "darwin" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" + "@img/sharp-libvips-darwin-x64": "1.3.2" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.3.tgz", + "integrity": "sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.2.tgz", + "integrity": "sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==", "cpu": [ "arm64" ], @@ -2160,9 +2190,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.2.tgz", + "integrity": "sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==", "cpu": [ "x64" ], @@ -2177,9 +2207,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.2.tgz", + "integrity": "sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==", "cpu": [ "arm" ], @@ -2194,9 +2224,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.2.tgz", + "integrity": "sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==", "cpu": [ "arm64" ], @@ -2210,10 +2240,44 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.2.tgz", + "integrity": "sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.2.tgz", + "integrity": "sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.2.tgz", + "integrity": "sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==", "cpu": [ "s390x" ], @@ -2244,9 +2308,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.2.tgz", + "integrity": "sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==", "cpu": [ "arm64" ], @@ -2261,9 +2325,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.2.tgz", + "integrity": "sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==", "cpu": [ "x64" ], @@ -2278,9 +2342,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.3.tgz", + "integrity": "sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==", "cpu": [ "arm" ], @@ -2291,19 +2355,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" + "@img/sharp-libvips-linux-arm": "1.3.2" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.3.tgz", + "integrity": "sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==", "cpu": [ "arm64" ], @@ -2314,19 +2378,65 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.2" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.3.tgz", + "integrity": "sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.2" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.3.tgz", + "integrity": "sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" + "@img/sharp-libvips-linux-riscv64": "1.3.2" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.3.tgz", + "integrity": "sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==", "cpu": [ "s390x" ], @@ -2337,13 +2447,13 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" + "@img/sharp-libvips-linux-s390x": "1.3.2" } }, "node_modules/@img/sharp-linux-x64": { @@ -2369,9 +2479,9 @@ } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.3.tgz", + "integrity": "sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==", "cpu": [ "arm64" ], @@ -2382,19 +2492,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64": "1.3.2" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.3.tgz", + "integrity": "sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==", "cpu": [ "x64" ], @@ -2405,39 +2515,76 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + "@img/sharp-libvips-linuxmusl-x64": "1.3.2" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.3.tgz", + "integrity": "sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==", + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.1" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.3.tgz", + "integrity": "sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==", "cpu": [ "wasm32" ], "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "license": "Apache-2.0", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.2.0" + "@img/sharp-wasm32": "0.35.3" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.3.tgz", + "integrity": "sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.3.tgz", + "integrity": "sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==", "cpu": [ "ia32" ], @@ -2448,16 +2595,16 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": "^20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.3.tgz", + "integrity": "sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==", "cpu": [ "x64" ], @@ -2468,7 +2615,7 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" @@ -2956,9 +3103,9 @@ "license": "MIT" }, "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -3261,6 +3408,18 @@ "node": ">= 12" } }, + "node_modules/@lazy-node/types-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@lazy-node/types-path/-/types-path-1.0.3.tgz", + "integrity": "sha512-5Bnl5s5jh7o14i0oa7gj+Y0fDLIlri3+KVZmv4gk0OFGuOrOEmWBBCI9ky3Syip5g/yPHZdfa+WO5BVJMUpMdw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/node": "*", + "ts-type": "^3.0.1", + "tslib": ">=2" + } + }, "node_modules/@lezer/common": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.2.tgz", @@ -3303,13 +3462,13 @@ "license": "MIT" }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", - "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz", + "integrity": "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==", "dev": true, "license": "MIT", "dependencies": { - "@hono/node-server": "^1.19.9", + "@hono/node-server": "^1.19.9 || ^2.0.5", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", @@ -4447,20 +4606,59 @@ } }, "node_modules/@radix-ui/react-separator": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", - "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4471,6 +4669,25 @@ } } }, + "node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-slot": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", @@ -4552,22 +4769,21 @@ } }, "node_modules/@radix-ui/react-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz", - "integrity": "sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4579,26 +4795,25 @@ } }, "node_modules/@radix-ui/react-toggle-group": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz", - "integrity": "sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-toggle": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4609,27 +4824,30 @@ } } }, - "node_modules/@radix-ui/react-toolbar": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz", - "integrity": "sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-separator": "1.0.3", - "@radix-ui/react-toggle-group": "1.0.4" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4640,52 +4858,31 @@ } } }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz", - "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3" - }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", - "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4693,18 +4890,15 @@ } } }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", - "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4712,18 +4906,18 @@ } } }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", - "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4731,54 +4925,74 @@ } } }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", - "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true + }, + "@types/react-dom": { + "optional": true } } }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", - "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true + }, + "@types/react-dom": { + "optional": true } } }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", - "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/rect": "1.0.1" + "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4786,18 +5000,15 @@ } } }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", - "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -4805,1576 +5016,1301 @@ } } }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", - "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/rect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", - "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@react-dnd/asap": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", - "integrity": "sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@react-dnd/invariant": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-4.0.2.tgz", - "integrity": "sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@react-dnd/shallowequal": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", - "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==", + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", "dev": true, "license": "MIT" }, - "node_modules/@reduxjs/toolkit": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", - "integrity": "sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==", + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", "dev": true, "license": "MIT", - "dependencies": { - "immer": "^9.0.21", - "redux": "^4.2.1", - "redux-thunk": "^2.4.2", - "reselect": "^4.1.8" - }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.0.2" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { + "@types/react": { "optional": true } } }, - "node_modules/@remix-run/router": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.3.tgz", - "integrity": "sha512-4An71tdz9X8+3sI4Qqqd2LWd9vS39J7sqd9EU4Scw7TJE/qB10Flv/UuqbPVgfQV9XoK8Np6jNquZitnZq5i+Q==", + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.0.0" + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.27", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", - "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", - "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", - "cpu": [ - "arm" - ], + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", - "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", - "cpu": [ - "arm64" - ], + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", - "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", - "cpu": [ - "arm64" - ], + "node_modules/@radix-ui/react-toolbar": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz", + "integrity": "sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-separator": "1.1.7", + "@radix-ui/react-toggle-group": "1.1.11" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", - "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", - "cpu": [ - "x64" - ], + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "license": "MIT" }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", - "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", - "cpu": [ - "arm64" - ], + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", - "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", - "cpu": [ - "x64" - ], + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", - "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", - "cpu": [ - "arm" - ], + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", - "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", - "cpu": [ - "arm" - ], + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", - "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", - "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", - "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", - "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", - "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", - "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", - "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", - "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", - "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", - "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", - "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", - "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", - "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", - "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", - "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", - "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", - "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rushstack/node-core-library": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.13.0.tgz", - "integrity": "sha512-IGVhy+JgUacAdCGXKUrRhwHMTzqhWwZUI+qEPcdzsb80heOw0QPbhhoVsoiMF7Klp8eYsp7hzpScMXmOa3Uhfg==", + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "~8.13.0", - "ajv-draft-04": "~1.0.0", - "ajv-formats": "~3.0.1", - "fs-extra": "~11.3.0", - "import-lazy": "~4.0.0", - "jju": "~1.4.0", - "resolve": "~1.22.1", - "semver": "~7.5.4" + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { - "@types/node": "*" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "@types/node": { + "@types/react": { "optional": true } } }, - "node_modules/@rushstack/node-core-library/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rushstack/node-core-library/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rushstack/node-core-library/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/@rushstack/terminal": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.2.tgz", - "integrity": "sha512-7Hmc0ysK5077R/IkLS9hYu0QuNafm+TbZbtYVzCMbeOdMjaRboLKrhryjwZSRJGJzu+TV1ON7qZHeqf58XfLpA==", + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.13.0", - "supports-color": "~8.1.1" + "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { - "@types/node": "*" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "@types/node": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { "optional": true } } }, - "node_modules/@rushstack/terminal/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@rushstack/ts-command-line": { - "version": "4.23.7", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.7.tgz", - "integrity": "sha512-Gr9cB7DGe6uz5vq2wdr89WbVDKz0UeuFEn5H2CfWDe7JvjFFaiV15gi6mqDBTbHhHCWS7w8mF1h3BnIfUndqdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rushstack/terminal": "0.15.2", - "@types/argparse": "1.0.38", - "argparse": "~1.0.9", - "string-argv": "~0.3.1" - } - }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", - "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.23.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/@shikijs/langs": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", - "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.23.0" - } - }, - "node_modules/@shikijs/themes": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", - "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.23.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@shikijs/types": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", - "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.49", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", - "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "@radix-ui/react-compose-refs": "1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sindresorhus/slugify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.0.tgz", - "integrity": "sha512-ujZRbmmizX26yS/HnB3P9QNlNa4+UvHh+rIse3RbOXLp8yl6n1TxB4t7NHggtVgS8QmmOtzXo48kCxZGACpkPw==", + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", "dev": true, "license": "MIT", - "dependencies": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sindresorhus/transliterate": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", - "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^2.0.0", - "lodash.deburr": "^4.1.0" + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/@radix-ui/react-toolbar/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@sinonjs/fake-timers": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz", - "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@radix-ui/react-tooltip": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz", + "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==", + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^3.0.1" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@so-ric/colorspace": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", - "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", - "dev": true, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", "license": "MIT", "dependencies": { - "color": "^5.0.2", - "text-hex": "1.0.x" + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@so-ric/colorspace/node_modules/color": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", - "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", - "dev": true, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", "license": "MIT", "dependencies": { - "color-convert": "^3.1.3", - "color-string": "^2.1.3" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@so-ric/colorspace/node_modules/color-convert": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", - "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "^2.0.0" + "@radix-ui/react-use-layout-effect": "1.1.1" }, - "engines": { - "node": ">=14.6" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@so-ric/colorspace/node_modules/color-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", - "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", + "node_modules/@radix-ui/react-use-effect-event/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12.20" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@so-ric/colorspace/node_modules/color-string": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", - "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", - "dev": true, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", "license": "MIT", "dependencies": { - "color-name": "^2.0.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@strapi/admin": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/admin/-/admin-5.49.0.tgz", - "integrity": "sha512-d7foJiZBZpVPJNRRMYS8hW4rbmV2N+RjJeHfsHrAmmkKtlwnFJvEq4AdulYWFXwVC4f4RFeJKxnpMAc/T3Pq/g==", - "dev": true, - "license": "SEE LICENSE IN LICENSE", + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "license": "MIT", "dependencies": { - "@casl/ability": "6.7.5", - "@internationalized/date": "3.5.4", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-toolbar": "1.0.4", - "@reduxjs/toolkit": "1.9.7", - "@strapi/design-system": "2.2.0", - "@strapi/icons": "2.2.0", - "@strapi/permissions": "5.49.0", - "@strapi/types": "5.49.0", - "@strapi/typescript-utils": "5.49.0", - "@strapi/utils": "5.49.0", - "@testing-library/dom": "10.4.1", - "@testing-library/react": "16.3.2", - "@testing-library/user-event": "14.6.1", - "axios": "1.18.0", - "bcryptjs": "2.4.3", - "boxen": "5.1.2", - "chalk": "^4.1.2", - "codemirror5": "npm:codemirror@^5.65.11", - "cross-env": "^7.0.3", - "date-fns": "2.30.0", - "execa": "5.1.1", - "fast-deep-equal": "3.1.3", - "formik": "2.4.5", - "fractional-indexing": "3.2.0", - "fs-extra": "11.3.4", - "highlight.js": "^10.4.1", - "immer": "9.0.21", - "inquirer": "9.3.8", - "invariant": "^2.2.4", - "is-localhost-ip": "2.0.0", - "json-logic-js": "2.0.5", - "jsonwebtoken": "9.0.0", - "koa": "2.16.4", - "koa-compose": "4.1.0", - "koa-passport": "6.0.0", - "koa-static": "5.0.0", - "koa2-ratelimit": "^1.1.3", - "lodash": "4.18.1", - "motion": "12.23.24", - "ora": "5.4.1", - "p-map": "4.0.0", - "passport-local": "1.0.0", - "pluralize": "8.0.0", - "qs": "6.15.2", - "react-dnd": "16.0.1", - "react-dnd-html5-backend": "16.0.1", - "react-intl": "6.6.2", - "react-is": "^18.2.0", - "react-query": "3.39.3", - "react-redux": "8.1.3", - "react-select": "5.8.0", - "react-window": "1.8.10", - "rimraf": "6.1.3", - "scheduler": "0.23.0", - "semver": "7.7.4", - "sift": "16.0.1", - "sonner": "2.0.7", - "typescript": "5.4.5", - "use-context-selector": "1.4.1", - "yup": "0.32.9", - "zod": "3.25.67" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "@strapi/data-transfer": "^5.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.30.3", - "styled-components": "^6.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@strapi/admin/node_modules/@formatjs/ecma402-abstract": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", - "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", - "dev": true, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", "license": "MIT", "dependencies": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@strapi/admin/node_modules/@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", - "dev": true, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@strapi/admin/node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", - "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", - "dev": true, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-skeleton-parser": "1.8.0", - "tslib": "^2.4.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@strapi/admin/node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", - "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", - "dev": true, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "tslib": "^2.4.0" + "@babel/runtime": "^7.13.10" } }, - "node_modules/@strapi/admin/node_modules/@formatjs/intl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", - "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", + "node_modules/@react-dnd/asap": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", + "integrity": "sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@react-dnd/invariant": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-4.0.2.tgz", + "integrity": "sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@react-dnd/shallowequal": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", + "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@reduxjs/toolkit": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", + "integrity": "sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==", "dev": true, "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "@formatjs/intl-displaynames": "6.6.6", - "@formatjs/intl-listformat": "7.5.5", - "intl-messageformat": "10.5.11", - "tslib": "^2.4.0" + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" }, "peerDependencies": { - "typescript": "^4.7 || 5" + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.0.2" }, "peerDependenciesMeta": { - "typescript": { + "react": { + "optional": true + }, + "react-redux": { "optional": true } } }, - "node_modules/@strapi/admin/node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "node_modules/@remix-run/router": { + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.4.tgz", + "integrity": "sha512-q7j5geK7xs3UJSdm9/iytUNclBnLmYx1EnSeCFXHPeutdqgIMeFeHtUZgS3EhlKxdBEAu8OwtJCwmLrEzpSs7Q==", "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@strapi/admin/node_modules/@strapi/design-system": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.0.tgz", - "integrity": "sha512-NO8DhQfApMXlEUeuUG39pKmPGcYCJZjApjPqtPbDFUr434WTeon/vJtJv/fqRs5GFPaJqqDH7YPlpZlJX3z3bA==", + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", + "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", + "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", + "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", + "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", + "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", + "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", + "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", + "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@codemirror/lang-json": "6.0.1", - "@floating-ui/react-dom": "2.1.0", - "@internationalized/date": "3.5.4", - "@internationalized/number": "3.5.3", - "@radix-ui/react-accordion": "1.1.2", - "@radix-ui/react-alert-dialog": "1.0.5", - "@radix-ui/react-avatar": "1.0.4", - "@radix-ui/react-checkbox": "1.0.4", - "@radix-ui/react-dialog": "1.0.5", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-dropdown-menu": "2.0.6", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-popover": "1.0.7", - "@radix-ui/react-progress": "1.0.3", - "@radix-ui/react-radio-group": "1.1.3", - "@radix-ui/react-scroll-area": "1.0.5", - "@radix-ui/react-switch": "1.0.3", - "@radix-ui/react-tabs": "1.0.4", - "@radix-ui/react-tooltip": "1.0.7", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.0", - "@uiw/react-codemirror": "4.22.2", - "lodash": "4.17.23", - "react-remove-scroll": "2.5.10" - }, - "peerDependencies": { - "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "styled-components": "^6.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/@strapi/icons": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.0.tgz", - "integrity": "sha512-wVItrWIDYtvGpv1S5Lg580b5PXH2iw6dgcFnri5vVz4qZDP6ZOTpLmkwZybkfZcpIzq1KkjKyA1JZ6NLBE59cQ==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", + "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "styled-components": "^6.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/@strapi/ui-primitives": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.0.tgz", - "integrity": "sha512-CGvyIr+D7ZEuP9x4bmUFUiilHZwCkftiwV8Kh+o/jBETVlm5/8SrE5wihuyqSQTya1NxTHu0O8RTNkX0U6p8bQ==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", + "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.0.1", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3", - "@tanstack/react-virtual": "^3.10.8", - "aria-hidden": "1.2.4", - "react-remove-scroll": "2.5.10" - }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", + "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", + "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", + "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", + "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/intl-messageformat": { - "version": "10.5.11", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", - "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", + "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "tslib": "^2.4.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", + "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", + "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/react-intl": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", - "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-messageformat-parser": "2.7.6", - "@formatjs/intl": "2.10.0", - "@formatjs/intl-displaynames": "6.6.6", - "@formatjs/intl-listformat": "7.5.5", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", - "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "10.5.11", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "react": "^16.6.0 || 17 || 18", - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", + "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", + "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@strapi/admin/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", + "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } + "optional": true, + "os": [ + "openbsd" + ] }, - "node_modules/@strapi/admin/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", + "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] }, - "node_modules/@strapi/admin/node_modules/use-context-selector": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/use-context-selector/-/use-context-selector-1.4.1.tgz", - "integrity": "sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", + "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": "*", - "react-native": "*", - "scheduler": ">=0.19.0" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@strapi/admin/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", + "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@strapi/cloud-cli": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/cloud-cli/-/cloud-cli-5.49.0.tgz", - "integrity": "sha512-yiAXZYoKXXOi0ccD7IKKmT24QYw6PiNZEnfk8wkX8oRdnudD2fMAXXgKu5w9C1nSfsKSHqU6cw2i2Rz8jH6H9A==", + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", + "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@strapi/utils": "5.49.0", - "axios": "1.18.0", - "boxen": "5.1.2", - "chalk": "4.1.2", - "cli-progress": "3.12.0", - "commander": "8.3.0", - "eventsource": "2.0.2", - "fast-safe-stringify": "2.1.1", - "fs-extra": "11.3.4", - "inquirer": "9.3.8", - "jsonwebtoken": "9.0.0", - "jwks-rsa": "3.1.0", - "lodash": "4.18.1", - "minimatch": "10.2.5", - "open": "8.4.2", - "ora": "5.4.1", - "pkg-up": "3.1.0", - "tar": "7.5.16", - "xdg-app-paths": "8.3.0", - "yup": "0.32.9" - }, - "bin": { - "cloud-cli": "bin/index.js" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@strapi/cloud-cli/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", + "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 12" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@strapi/content-manager": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/content-manager/-/content-manager-5.49.0.tgz", - "integrity": "sha512-rWRgDzqZntdKxAM3Dk7iS29Apr/zdEH4ale44WFBXNlbyCHm92S0gmcl0eEIH0Z0WBCQdxr5Z2Q8vB8fUWJRmw==", + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@casl/ability": "6.7.5", - "@dnd-kit/core": "6.3.1", - "@dnd-kit/sortable": "10.0.0", - "@dnd-kit/utilities": "3.2.2", - "@radix-ui/react-toolbar": "1.0.4", - "@reduxjs/toolkit": "1.9.7", - "@sindresorhus/slugify": "1.1.0", - "@strapi/design-system": "2.2.0", - "@strapi/icons": "2.2.0", - "@strapi/types": "5.49.0", - "@strapi/utils": "5.49.0", - "codemirror5": "npm:codemirror@^5.65.11", - "date-fns": "2.30.0", - "dompurify": "3.4.11", - "fractional-indexing": "3.2.0", - "highlight.js": "^10.4.1", - "immer": "9.0.21", - "koa": "2.16.4", - "lodash": "4.18.1", - "markdown-it": "14.2.0", - "markdown-it-abbr": "^1.0.4", - "markdown-it-container": "^3.0.0", - "markdown-it-deflist": "^2.1.0", - "markdown-it-emoji": "^2.0.0", - "markdown-it-footnote": "^3.0.3", - "markdown-it-ins": "^3.0.1", - "markdown-it-mark": "^3.0.1", - "markdown-it-sub": "^1.0.0", - "markdown-it-sup": "1.0.0", - "prismjs": "1.30.0", - "qs": "6.15.2", - "react-dnd": "16.0.1", - "react-dnd-html5-backend": "16.0.1", - "react-helmet": "^6.1.0", - "react-intl": "6.6.2", - "react-query": "3.39.3", - "react-redux": "8.1.3", - "react-window": "1.8.10", - "slate": "0.94.1", - "slate-history": "0.93.0", - "slate-react": "0.98.3", - "yup": "0.32.9", - "zod": "3.25.67" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" - }, - "peerDependencies": { - "@strapi/admin": "^5.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.30.3", - "styled-components": "^6.0.0" - } + "license": "MIT" }, - "node_modules/@strapi/content-manager/node_modules/@formatjs/ecma402-abstract": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", - "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", "dev": true, "license": "MIT", "dependencies": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" } }, - "node_modules/@strapi/content-manager/node_modules/@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "node_modules/@shikijs/langs": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "@shikijs/types": "3.23.0" } }, - "node_modules/@strapi/content-manager/node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", - "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", + "node_modules/@shikijs/themes": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", "dev": true, "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-skeleton-parser": "1.8.0", - "tslib": "^2.4.0" + "@shikijs/types": "3.23.0" } }, - "node_modules/@strapi/content-manager/node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", - "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", + "node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", "dev": true, "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "tslib": "^2.4.0" + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" } }, - "node_modules/@strapi/content-manager/node_modules/@formatjs/intl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", - "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "dev": true, - "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "@formatjs/intl-displaynames": "6.6.6", - "@formatjs/intl-listformat": "7.5.5", - "intl-messageformat": "10.5.11", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "license": "MIT" }, - "node_modules/@strapi/content-manager/node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } + "license": "MIT" }, - "node_modules/@strapi/content-manager/node_modules/@strapi/design-system": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.0.tgz", - "integrity": "sha512-NO8DhQfApMXlEUeuUG39pKmPGcYCJZjApjPqtPbDFUr434WTeon/vJtJv/fqRs5GFPaJqqDH7YPlpZlJX3z3bA==", + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, "license": "MIT", - "dependencies": { - "@codemirror/lang-json": "6.0.1", - "@floating-ui/react-dom": "2.1.0", - "@internationalized/date": "3.5.4", - "@internationalized/number": "3.5.3", - "@radix-ui/react-accordion": "1.1.2", - "@radix-ui/react-alert-dialog": "1.0.5", - "@radix-ui/react-avatar": "1.0.4", - "@radix-ui/react-checkbox": "1.0.4", - "@radix-ui/react-dialog": "1.0.5", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-dropdown-menu": "2.0.6", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-popover": "1.0.7", - "@radix-ui/react-progress": "1.0.3", - "@radix-ui/react-radio-group": "1.1.3", - "@radix-ui/react-scroll-area": "1.0.5", - "@radix-ui/react-switch": "1.0.3", - "@radix-ui/react-tabs": "1.0.4", - "@radix-ui/react-tooltip": "1.0.7", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.0", - "@uiw/react-codemirror": "4.22.2", - "lodash": "4.17.23", - "react-remove-scroll": "2.5.10" + "engines": { + "node": ">=18" }, - "peerDependencies": { - "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "styled-components": "^6.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@strapi/content-manager/node_modules/@strapi/icons": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.0.tgz", - "integrity": "sha512-wVItrWIDYtvGpv1S5Lg580b5PXH2iw6dgcFnri5vVz4qZDP6ZOTpLmkwZybkfZcpIzq1KkjKyA1JZ6NLBE59cQ==", + "node_modules/@sindresorhus/slugify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.0.tgz", + "integrity": "sha512-ujZRbmmizX26yS/HnB3P9QNlNa4+UvHh+rIse3RbOXLp8yl6n1TxB4t7NHggtVgS8QmmOtzXo48kCxZGACpkPw==", "dev": true, "license": "MIT", - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "styled-components": "^6.0.0" + "dependencies": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@strapi/content-manager/node_modules/@strapi/ui-primitives": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.0.tgz", - "integrity": "sha512-CGvyIr+D7ZEuP9x4bmUFUiilHZwCkftiwV8Kh+o/jBETVlm5/8SrE5wihuyqSQTya1NxTHu0O8RTNkX0U6p8bQ==", + "node_modules/@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/number": "1.0.1", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3", - "@tanstack/react-virtual": "^3.10.8", - "aria-hidden": "1.2.4", - "react-remove-scroll": "2.5.10" + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@strapi/content-manager/node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@strapi/content-manager/node_modules/intl-messageformat": { - "version": "10.5.11", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", - "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "tslib": "^2.4.0" + "type-detect": "4.0.8" } }, - "node_modules/@strapi/content-manager/node_modules/react-intl": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", - "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", + "node_modules/@sinonjs/fake-timers": { + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz", + "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-messageformat-parser": "2.7.6", - "@formatjs/intl": "2.10.0", - "@formatjs/intl-displaynames": "6.6.6", - "@formatjs/intl-listformat": "7.5.5", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", - "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "10.5.11", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "react": "^16.6.0 || 17 || 18", - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/@strapi/content-manager/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "node_modules/@so-ric/colorspace": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", + "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "dependencies": { + "color": "^5.0.2", + "text-hex": "1.0.x" } }, - "node_modules/@strapi/content-releases": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/content-releases/-/content-releases-5.49.0.tgz", - "integrity": "sha512-1aRpB5bh8u1YbIoKpeHf+vo8fe5ojjPP5As+cagf9hQBA/s+nE8Wkk3nbvhTs7vy2+RfoREyNyWXD15c4T2YQw==", + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@strapi/admin": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/admin/-/admin-5.52.0.tgz", + "integrity": "sha512-RY+qnSo8pkPiIIRw1podl3gz5M3GvshdJsW7J2OL7W73EF1rnv4GYsrkZAGKibwmVlvW1Wm7v6dxx25MY1EzcA==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { + "@casl/ability": "6.7.5", + "@internationalized/date": "3.12.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-toolbar": "1.1.11", "@reduxjs/toolkit": "1.9.7", - "@strapi/database": "5.49.0", - "@strapi/design-system": "2.2.0", - "@strapi/icons": "2.2.0", - "@strapi/types": "5.49.0", - "@strapi/utils": "5.49.0", + "@strapi/design-system": "2.2.4", + "@strapi/icons": "2.2.4", + "@strapi/permissions": "5.52.0", + "@strapi/types": "5.52.0", + "@strapi/typescript-utils": "5.52.0", + "@strapi/utils": "5.52.0", + "@testing-library/dom": "10.4.1", + "@testing-library/react": "16.3.2", + "@testing-library/user-event": "14.6.1", + "axios": "1.19.0", + "bcryptjs": "2.4.3", + "boxen": "5.1.2", + "chalk": "^4.1.2", + "codemirror5": "npm:codemirror@^5.65.11", + "cross-env": "^7.0.3", "date-fns": "2.30.0", - "date-fns-tz": "2.0.1", - "formik": "2.4.5", + "execa": "5.1.1", + "fast-deep-equal": "3.1.3", + "formik": "2.4.9", + "fractional-indexing": "3.2.0", + "fs-extra": "11.3.4", + "highlight.js": "^10.4.1", + "immer": "9.0.21", + "inquirer": "9.3.8", + "invariant": "2.2.4", + "is-localhost-ip": "2.0.0", + "json-logic-js": "2.0.5", + "jsonwebtoken": "9.0.3", + "koa": "2.16.4", + "koa-compose": "4.1.0", + "koa-passport": "6.0.0", + "koa-static": "5.0.0", + "koa2-ratelimit": "^1.1.3", "lodash": "4.18.1", - "qs": "6.15.2", + "motion": "12.40.0", + "ora": "5.4.1", + "p-map": "4.0.0", + "passport-local": "1.0.0", + "pluralize": "8.0.0", + "qs": "6.15.3", + "react-dnd": "16.0.1", + "react-dnd-html5-backend": "16.0.1", "react-intl": "6.6.2", + "react-is": "^18.2.0", + "react-query": "3.39.3", "react-redux": "8.1.3", - "yup": "0.32.9" + "react-select": "5.8.0", + "react-window": "1.8.10", + "rimraf": "6.1.3", + "scheduler": "0.23.0", + "semver": "7.7.4", + "sift": "16.0.1", + "sonner": "2.0.7", + "typescript": "5.9.3", + "use-context-selector": "1.4.4", + "yup": "0.32.9", + "zod": "3.25.76" }, "engines": { "node": ">=20.0.0 <=26.x.x", "npm": ">=6.0.0" }, "peerDependencies": { - "@strapi/admin": "^5.0.0", - "@strapi/content-manager": "^5.0.0", + "@strapi/data-transfer": "^5.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", "react-router-dom": "^6.30.3", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/content-releases/node_modules/@formatjs/ecma402-abstract": { + "node_modules/@strapi/admin/node_modules/@codemirror/view": { + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.0.tgz", + "integrity": "sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@strapi/admin/node_modules/@formatjs/ecma402-abstract": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", @@ -6385,7 +6321,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-releases/node_modules/@formatjs/fast-memoize": { + "node_modules/@strapi/admin/node_modules/@formatjs/fast-memoize": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", @@ -6395,7 +6331,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-releases/node_modules/@formatjs/icu-messageformat-parser": { + "node_modules/@strapi/admin/node_modules/@formatjs/icu-messageformat-parser": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", @@ -6407,7 +6343,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-releases/node_modules/@formatjs/icu-skeleton-parser": { + "node_modules/@strapi/admin/node_modules/@formatjs/icu-skeleton-parser": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", @@ -6418,7 +6354,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-releases/node_modules/@formatjs/intl": { + "node_modules/@strapi/admin/node_modules/@formatjs/intl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", @@ -6442,7 +6378,7 @@ } } }, - "node_modules/@strapi/content-releases/node_modules/@formatjs/intl-localematcher": { + "node_modules/@strapi/admin/node_modules/@formatjs/intl-localematcher": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", @@ -6452,14 +6388,26 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-releases/node_modules/@strapi/design-system": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.0.tgz", - "integrity": "sha512-NO8DhQfApMXlEUeuUG39pKmPGcYCJZjApjPqtPbDFUr434WTeon/vJtJv/fqRs5GFPaJqqDH7YPlpZlJX3z3bA==", + "node_modules/@strapi/admin/node_modules/@internationalized/date": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.1.tgz", + "integrity": "sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@strapi/admin/node_modules/@strapi/design-system": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.4.tgz", + "integrity": "sha512-ypr5tKyv8pzJJ7IX7DKEG44chT0+mDywpEsbX1FxU9I/PxVGtayU+wVsfl5NiBfLDrKutDUKxWLZ1NvMfk+JtA==", "dev": true, "license": "MIT", "dependencies": { "@codemirror/lang-json": "6.0.1", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.0", "@floating-ui/react-dom": "2.1.0", "@internationalized/date": "3.5.4", "@internationalized/number": "3.5.3", @@ -6480,34 +6428,45 @@ "@radix-ui/react-tabs": "1.0.4", "@radix-ui/react-tooltip": "1.0.7", "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.0", + "@strapi/ui-primitives": "2.2.4", + "@tanstack/react-virtual": "^3.10.8", "@uiw/react-codemirror": "4.22.2", - "lodash": "4.17.23", + "lodash": "4.18.1", "react-remove-scroll": "2.5.10" }, "peerDependencies": { "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/content-releases/node_modules/@strapi/icons": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.0.tgz", - "integrity": "sha512-wVItrWIDYtvGpv1S5Lg580b5PXH2iw6dgcFnri5vVz4qZDP6ZOTpLmkwZybkfZcpIzq1KkjKyA1JZ6NLBE59cQ==", + "node_modules/@strapi/admin/node_modules/@strapi/design-system/node_modules/@internationalized/date": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.4.tgz", + "integrity": "sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@strapi/admin/node_modules/@strapi/icons": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-ul/NwHl1JiHb5OGXUoSNOIh/jfunAGVpehNvlQcp4P3B2Qb655uuldIe/Eg+8MLcd7VRUwRAckReuL7z1mT6RQ==", "dev": true, "license": "MIT", "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/content-releases/node_modules/@strapi/ui-primitives": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.0.tgz", - "integrity": "sha512-CGvyIr+D7ZEuP9x4bmUFUiilHZwCkftiwV8Kh+o/jBETVlm5/8SrE5wihuyqSQTya1NxTHu0O8RTNkX0U6p8bQ==", + "node_modules/@strapi/admin/node_modules/@strapi/ui-primitives": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.4.tgz", + "integrity": "sha512-v0VmJ3BkE7Kht9o/DXrTI6Qz+IJzZ/Fc/1D6JRLp7nbCaFkBFjuBMHUvjpS+nLh9C1YfaYtGF6Snr0/ONjPDUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6520,7 +6479,6 @@ "@radix-ui/react-dismissable-layer": "1.0.5", "@radix-ui/react-focus-guards": "1.0.1", "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", "@radix-ui/react-popper": "1.1.3", "@radix-ui/react-portal": "1.0.4", "@radix-ui/react-primitive": "1.0.3", @@ -6534,11 +6492,11 @@ "react-remove-scroll": "2.5.10" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@strapi/content-releases/node_modules/aria-hidden": { + "node_modules/@strapi/admin/node_modules/aria-hidden": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", @@ -6551,7 +6509,54 @@ "node": ">=10" } }, - "node_modules/@strapi/content-releases/node_modules/intl-messageformat": { + "node_modules/@strapi/admin/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@strapi/admin/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@strapi/admin/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@strapi/admin/node_modules/intl-messageformat": { "version": "10.5.11", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", @@ -6564,67 +6569,194 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-releases/node_modules/react-intl": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", - "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", + "node_modules/@strapi/admin/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@strapi/admin/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@strapi/admin/node_modules/react-intl": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", + "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/icu-messageformat-parser": "2.7.6", + "@formatjs/intl": "2.10.0", + "@formatjs/intl-displaynames": "6.6.6", + "@formatjs/intl-listformat": "7.5.5", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "10.5.11", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "react": "^16.6.0 || 17 || 18", + "typescript": "^4.7 || 5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@strapi/admin/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@strapi/admin/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@strapi/admin/node_modules/use-context-selector": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/use-context-selector/-/use-context-selector-1.4.4.tgz", + "integrity": "sha512-pS790zwGxxe59GoBha3QYOwk8AFGp4DN6DOtH+eoqVmgBBRXVx4IlPDhJmmMiNQAgUaLlP+58aqRC3A4rdaSjg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": "*", + "react-native": "*", + "scheduler": ">=0.19.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@strapi/cloud-cli": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/cloud-cli/-/cloud-cli-5.52.0.tgz", + "integrity": "sha512-sJCUoNyi4ZHbooJLc4o0OABKZTA5Beh+AY/wTxh/t5Ybi6oQ4i7PKXKtJRr4XPyfUu9NhyRUI8yFtZnHoy7vqw==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@strapi/utils": "5.52.0", + "axios": "1.19.0", + "boxen": "5.1.2", + "chalk": "4.1.2", + "cli-progress": "3.12.0", + "commander": "8.3.0", + "eventsource": "2.0.2", + "fast-safe-stringify": "2.1.1", + "fs-extra": "11.3.4", + "inquirer": "9.3.8", + "jsonwebtoken": "9.0.3", + "jwks-rsa": "3.1.0", + "lodash": "4.18.1", + "minimatch": "10.2.5", + "open": "8.4.2", + "ora": "5.4.1", + "pkg-up": "3.1.0", + "tar": "7.5.22", + "xdg-app-paths": "8.3.0", + "yup": "0.32.9" + }, + "bin": { + "cloud-cli": "bin/index.js" + }, + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@strapi/cloud-cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-messageformat-parser": "2.7.6", - "@formatjs/intl": "2.10.0", - "@formatjs/intl-displaynames": "6.6.6", - "@formatjs/intl-listformat": "7.5.5", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", - "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "10.5.11", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "react": "^16.6.0 || 17 || 18", - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "license": "MIT", + "engines": { + "node": ">= 12" } }, - "node_modules/@strapi/content-type-builder": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/content-type-builder/-/content-type-builder-5.49.0.tgz", - "integrity": "sha512-N4d2XbSebd5eZ8ufdrozu4JoqojWffjCzz1KLOB/dKUyFCzCT+gTwq0DzXjV+PJXf/DvWXN+RpWfUim/oH447w==", + "node_modules/@strapi/content-manager": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/content-manager/-/content-manager-5.52.0.tgz", + "integrity": "sha512-lH4z6YDdioRXELTnd/u8b5BYNHNcUO36CUYW87FbtcRZUNOu8z0SoyrfN8E24kjm1vx7r+UYdJpjyPU5xSudGg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@ai-sdk/react": "2.0.120", + "@casl/ability": "6.7.5", "@dnd-kit/core": "6.3.1", - "@dnd-kit/modifiers": "9.0.0", "@dnd-kit/sortable": "10.0.0", "@dnd-kit/utilities": "3.2.2", + "@radix-ui/react-toolbar": "1.1.11", "@reduxjs/toolkit": "1.9.7", "@sindresorhus/slugify": "1.1.0", - "@strapi/design-system": "2.2.0", - "@strapi/generators": "5.49.0", - "@strapi/icons": "2.2.0", - "@strapi/utils": "5.49.0", - "ai": "5.0.52", + "@strapi/design-system": "2.2.4", + "@strapi/icons": "2.2.4", + "@strapi/types": "5.52.0", + "@strapi/utils": "5.52.0", + "codemirror5": "npm:codemirror@^5.65.11", "date-fns": "2.30.0", - "fs-extra": "11.3.4", + "dompurify": "3.4.13", + "fractional-indexing": "3.2.0", + "highlight.js": "^10.4.1", "immer": "9.0.21", - "jszip": "^3.10.1", + "koa": "2.16.4", "lodash": "4.18.1", - "micromatch": "^4.0.8", - "pluralize": "8.0.0", - "qs": "6.15.2", - "react-dropzone": "14.3.8", + "markdown-it": "14.3.0", + "markdown-it-abbr": "^1.0.4", + "markdown-it-container": "^3.0.0", + "markdown-it-deflist": "^2.1.0", + "markdown-it-emoji": "^2.0.0", + "markdown-it-footnote": "^3.0.3", + "markdown-it-ins": "^3.0.1", + "markdown-it-mark": "^3.0.1", + "markdown-it-sub": "^1.0.0", + "markdown-it-sup": "1.0.0", + "prismjs": "1.30.0", + "qs": "6.15.3", + "react-dnd": "16.0.1", + "react-dnd-html5-backend": "16.0.1", + "react-helmet": "^6.1.0", "react-intl": "6.6.2", - "react-markdown": "9.1.0", + "react-query": "3.39.3", "react-redux": "8.1.3", + "react-window": "1.8.10", + "slate": "0.94.1", + "slate-history": "0.93.0", + "slate-react": "0.98.4", "yup": "0.32.9", - "zod": "3.25.67" + "zod": "3.25.76" }, "engines": { "node": ">=20.0.0 <=26.x.x", @@ -6638,7 +6770,20 @@ "styled-components": "^6.0.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/@formatjs/ecma402-abstract": { + "node_modules/@strapi/content-manager/node_modules/@codemirror/view": { + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.0.tgz", + "integrity": "sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@strapi/content-manager/node_modules/@formatjs/ecma402-abstract": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", @@ -6649,7 +6794,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/@formatjs/fast-memoize": { + "node_modules/@strapi/content-manager/node_modules/@formatjs/fast-memoize": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", @@ -6659,7 +6804,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/@formatjs/icu-messageformat-parser": { + "node_modules/@strapi/content-manager/node_modules/@formatjs/icu-messageformat-parser": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", @@ -6671,7 +6816,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/@formatjs/icu-skeleton-parser": { + "node_modules/@strapi/content-manager/node_modules/@formatjs/icu-skeleton-parser": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", @@ -6682,7 +6827,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/@formatjs/intl": { + "node_modules/@strapi/content-manager/node_modules/@formatjs/intl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", @@ -6706,7 +6851,7 @@ } } }, - "node_modules/@strapi/content-type-builder/node_modules/@formatjs/intl-localematcher": { + "node_modules/@strapi/content-manager/node_modules/@formatjs/intl-localematcher": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", @@ -6716,14 +6861,16 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/@strapi/design-system": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.0.tgz", - "integrity": "sha512-NO8DhQfApMXlEUeuUG39pKmPGcYCJZjApjPqtPbDFUr434WTeon/vJtJv/fqRs5GFPaJqqDH7YPlpZlJX3z3bA==", + "node_modules/@strapi/content-manager/node_modules/@strapi/design-system": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.4.tgz", + "integrity": "sha512-ypr5tKyv8pzJJ7IX7DKEG44chT0+mDywpEsbX1FxU9I/PxVGtayU+wVsfl5NiBfLDrKutDUKxWLZ1NvMfk+JtA==", "dev": true, "license": "MIT", "dependencies": { "@codemirror/lang-json": "6.0.1", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.0", "@floating-ui/react-dom": "2.1.0", "@internationalized/date": "3.5.4", "@internationalized/number": "3.5.3", @@ -6744,34 +6891,35 @@ "@radix-ui/react-tabs": "1.0.4", "@radix-ui/react-tooltip": "1.0.7", "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.0", + "@strapi/ui-primitives": "2.2.4", + "@tanstack/react-virtual": "^3.10.8", "@uiw/react-codemirror": "4.22.2", - "lodash": "4.17.23", + "lodash": "4.18.1", "react-remove-scroll": "2.5.10" }, "peerDependencies": { "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/@strapi/icons": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.0.tgz", - "integrity": "sha512-wVItrWIDYtvGpv1S5Lg580b5PXH2iw6dgcFnri5vVz4qZDP6ZOTpLmkwZybkfZcpIzq1KkjKyA1JZ6NLBE59cQ==", + "node_modules/@strapi/content-manager/node_modules/@strapi/icons": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-ul/NwHl1JiHb5OGXUoSNOIh/jfunAGVpehNvlQcp4P3B2Qb655uuldIe/Eg+8MLcd7VRUwRAckReuL7z1mT6RQ==", "dev": true, "license": "MIT", "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/@strapi/ui-primitives": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.0.tgz", - "integrity": "sha512-CGvyIr+D7ZEuP9x4bmUFUiilHZwCkftiwV8Kh+o/jBETVlm5/8SrE5wihuyqSQTya1NxTHu0O8RTNkX0U6p8bQ==", + "node_modules/@strapi/content-manager/node_modules/@strapi/ui-primitives": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.4.tgz", + "integrity": "sha512-v0VmJ3BkE7Kht9o/DXrTI6Qz+IJzZ/Fc/1D6JRLp7nbCaFkBFjuBMHUvjpS+nLh9C1YfaYtGF6Snr0/ONjPDUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6784,7 +6932,6 @@ "@radix-ui/react-dismissable-layer": "1.0.5", "@radix-ui/react-focus-guards": "1.0.1", "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", "@radix-ui/react-popper": "1.1.3", "@radix-ui/react-portal": "1.0.4", "@radix-ui/react-primitive": "1.0.3", @@ -6798,11 +6945,11 @@ "react-remove-scroll": "2.5.10" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/aria-hidden": { + "node_modules/@strapi/content-manager/node_modules/aria-hidden": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", @@ -6815,7 +6962,7 @@ "node": ">=10" } }, - "node_modules/@strapi/content-type-builder/node_modules/intl-messageformat": { + "node_modules/@strapi/content-manager/node_modules/intl-messageformat": { "version": "10.5.11", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", @@ -6828,7 +6975,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/content-type-builder/node_modules/react-intl": { + "node_modules/@strapi/content-manager/node_modules/react-intl": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", @@ -6849,290 +6996,149 @@ "peerDependencies": { "react": "^16.6.0 || 17 || 18", "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@strapi/content-type-builder/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/@strapi/core": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/core/-/core-5.49.0.tgz", - "integrity": "sha512-qMF8U3p7RzDiqA7J3UIYBdc4R4dBLZRsvH0mtn6ufaL8W00EVP9DIOjXw3i4Yx3ei8HJx3L92Jy2IBPi4I61gQ==", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@casl/ability": "6.7.5", - "@koa/cors": "5.0.0", - "@koa/router": "12.0.2", - "@modelcontextprotocol/sdk": "1.29.0", - "@paralleldrive/cuid2": "2.2.2", - "@strapi/admin": "5.49.0", - "@strapi/database": "5.49.0", - "@strapi/generators": "5.49.0", - "@strapi/logger": "5.49.0", - "@strapi/openapi": "5.49.0", - "@strapi/permissions": "5.49.0", - "@strapi/types": "5.49.0", - "@strapi/typescript-utils": "5.49.0", - "@strapi/utils": "5.49.0", - "@vercel/stega": "0.1.2", - "bcryptjs": "2.4.3", - "boxen": "5.1.2", - "chalk": "4.1.2", - "ci-info": "4.0.0", - "cli-table3": "0.6.5", - "commander": "8.3.0", - "configstore": "5.0.1", - "debug": "4.3.4", - "delegates": "1.0.0", - "dotenv": "16.6.1", - "execa": "5.1.1", - "fs-extra": "11.3.4", - "glob": "13.0.6", - "global-agent": "4.1.3", - "helmet": "6.2.0", - "http-errors": "2.0.0", - "inquirer": "9.3.8", - "is-docker": "2.2.1", - "json-logic-js": "2.0.5", - "jsonwebtoken": "9.0.0", - "koa": "2.16.4", - "koa-body": "6.0.1", - "koa-compose": "4.1.0", - "koa-compress": "5.1.1", - "koa-favicon": "2.1.0", - "koa-helmet": "7.1.0", - "koa-ip": "^2.1.3", - "koa-session": "7.0.2", - "koa-static": "5.0.0", - "lodash": "4.18.1", - "mime-types": "2.1.35", - "node-schedule": "2.1.1", - "open": "8.4.2", - "ora": "5.4.1", - "package-json": "10.0.1", - "pkg-up": "3.1.0", - "qs": "6.15.2", - "resolve.exports": "2.0.2", - "semver": "7.7.4", - "statuses": "2.0.1", - "typescript": "5.4.5", - "undici": "6.27.0", - "yup": "0.32.9", - "zod": "3.25.67" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" - } - }, - "node_modules/@strapi/core/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/@strapi/core/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@strapi/core/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@strapi/core/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/@strapi/core/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@strapi/core/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/@strapi/content-releases": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/content-releases/-/content-releases-5.52.0.tgz", + "integrity": "sha512-6n3fHAIm+lNEdzaGNIS7TdZX3oHEhROfrmWfGZFfWt7cfs6l37zQeHYIXDrJIk9psbbw8rIHGidZ5YLn9ZO8Ig==", "dev": true, - "license": "MIT", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "path-key": "^3.0.0" + "@reduxjs/toolkit": "1.9.7", + "@strapi/database": "5.52.0", + "@strapi/design-system": "2.2.4", + "@strapi/icons": "2.2.4", + "@strapi/types": "5.52.0", + "@strapi/utils": "5.52.0", + "date-fns": "2.30.0", + "date-fns-tz": "2.0.1", + "formik": "2.4.9", + "lodash": "4.18.1", + "qs": "6.15.3", + "react-intl": "6.6.2", + "react-redux": "8.1.3", + "yup": "0.32.9" }, "engines": { - "node": ">=8" + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + }, + "peerDependencies": { + "@strapi/admin": "^5.0.0", + "@strapi/content-manager": "^5.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0", + "react-router-dom": "^6.30.3", + "styled-components": "^6.0.0" } }, - "node_modules/@strapi/core/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/@strapi/content-releases/node_modules/@codemirror/view": { + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.0.tgz", + "integrity": "sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } }, - "node_modules/@strapi/core/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/@strapi/content-releases/node_modules/@formatjs/ecma402-abstract": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", + "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/core/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "node_modules/@strapi/content-releases/node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@strapi/core/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "node_modules/@strapi/content-releases/node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", + "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/icu-skeleton-parser": "1.8.0", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/data-transfer": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/data-transfer/-/data-transfer-5.49.0.tgz", - "integrity": "sha512-G6OZuAkxd4X7IWVxjF16VBnNX/KaGz8pDSpLy8/3GuN6DW8SF1eyg4s3yaHZYUVNEq1ViB82/fvfoxYrz+VcNw==", + "node_modules/@strapi/content-releases/node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", + "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", "dev": true, - "license": "SEE LICENSE IN LICENSE", + "license": "MIT", "dependencies": { - "@strapi/logger": "5.49.0", - "@strapi/types": "5.49.0", - "@strapi/utils": "5.49.0", - "chalk": "4.1.2", - "cli-table3": "0.6.5", - "commander": "8.3.0", - "fs-extra": "11.3.4", - "inquirer": "9.3.8", - "lodash": "4.18.1", - "mime-types": "2.1.35", - "ora": "5.4.1", - "resolve-cwd": "3.0.0", - "semver": "7.7.4", - "stream-chain": "2.2.5", - "stream-json": "1.9.1", - "tar": "7.5.16", - "tar-stream": "2.2.0", - "ws": "8.20.1" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" + "@formatjs/ecma402-abstract": "1.18.2", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/data-transfer/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/@strapi/content-releases/node_modules/@formatjs/intl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", + "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 12" + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.6", + "@formatjs/intl-displaynames": "6.6.6", + "@formatjs/intl-listformat": "7.5.5", + "intl-messageformat": "10.5.11", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "typescript": "^4.7 || 5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@strapi/database": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/database/-/database-5.49.0.tgz", - "integrity": "sha512-ybDSUCikXynw4dVKQDSTSdKIs7sW3bsCEm4Iudx0HQlithPlXejAdw3V6yXHbde2Xg2EOMLCdghAT442ZhpnDA==", + "node_modules/@strapi/content-releases/node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", "dev": true, - "license": "SEE LICENSE IN LICENSE", + "license": "MIT", "dependencies": { - "@paralleldrive/cuid2": "2.2.2", - "@strapi/utils": "5.49.0", - "ajv": "8.20.0", - "date-fns": "2.30.0", - "debug": "4.3.4", - "fs-extra": "11.3.4", - "knex": "3.0.1", - "lodash": "4.18.1", - "semver": "7.7.4", - "umzug": "3.8.1" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@strapi/design-system": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.1.tgz", - "integrity": "sha512-g0xzs/cjY8DxI/QhGu9N6fjqrTrCnSao6+6TFXsbhFq0Av5h0hUV/3wsHWb8ArhWzXEjO594nW7cwc7Tv0osZw==", + "node_modules/@strapi/content-releases/node_modules/@strapi/design-system": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.4.tgz", + "integrity": "sha512-ypr5tKyv8pzJJ7IX7DKEG44chT0+mDywpEsbX1FxU9I/PxVGtayU+wVsfl5NiBfLDrKutDUKxWLZ1NvMfk+JtA==", + "dev": true, "license": "MIT", "dependencies": { "@codemirror/lang-json": "6.0.1", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.0", "@floating-ui/react-dom": "2.1.0", "@internationalized/date": "3.5.4", "@internationalized/number": "3.5.3", @@ -7153,35 +7159,151 @@ "@radix-ui/react-tabs": "1.0.4", "@radix-ui/react-tooltip": "1.0.7", "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.1", + "@strapi/ui-primitives": "2.2.4", + "@tanstack/react-virtual": "^3.10.8", "@uiw/react-codemirror": "4.22.2", "lodash": "4.18.1", "react-remove-scroll": "2.5.10" }, "peerDependencies": { "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/email": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/email/-/email-5.49.0.tgz", - "integrity": "sha512-JQmkksSY9h9GNjh2uDyu6gtbVHaPsTKowuH+F7qnqzhrzpVoAs5g9z6jF03Rg3xjCycwEzbi6GdgDS5gJysocg==", + "node_modules/@strapi/content-releases/node_modules/@strapi/icons": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-ul/NwHl1JiHb5OGXUoSNOIh/jfunAGVpehNvlQcp4P3B2Qb655uuldIe/Eg+8MLcd7VRUwRAckReuL7z1mT6RQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0", + "styled-components": "^6.0.0" + } + }, + "node_modules/@strapi/content-releases/node_modules/@strapi/ui-primitives": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.4.tgz", + "integrity": "sha512-v0VmJ3BkE7Kht9o/DXrTI6Qz+IJzZ/Fc/1D6JRLp7nbCaFkBFjuBMHUvjpS+nLh9C1YfaYtGF6Snr0/ONjPDUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "@tanstack/react-virtual": "^3.10.8", + "aria-hidden": "1.2.4", + "react-remove-scroll": "2.5.10" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@strapi/content-releases/node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@strapi/content-releases/node_modules/intl-messageformat": { + "version": "10.5.11", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", + "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.6", + "tslib": "^2.4.0" + } + }, + "node_modules/@strapi/content-releases/node_modules/react-intl": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", + "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/icu-messageformat-parser": "2.7.6", + "@formatjs/intl": "2.10.0", + "@formatjs/intl-displaynames": "6.6.6", + "@formatjs/intl-listformat": "7.5.5", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "10.5.11", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "react": "^16.6.0 || 17 || 18", + "typescript": "^4.7 || 5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@strapi/content-type-builder": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/content-type-builder/-/content-type-builder-5.52.0.tgz", + "integrity": "sha512-hKfAP865X45k+EjvaIoc9fFEogu5aLcgThRsfXjwt4c8OXUsWiUNyt/F8nr6WEpDPfmGGigBJ557ScoZdIvqtw==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@strapi/design-system": "2.2.0", - "@strapi/icons": "2.2.0", - "@strapi/provider-email-sendmail": "5.49.0", - "@strapi/utils": "5.49.0", - "koa2-ratelimit": "^1.1.3", + "@ai-sdk/react": "2.0.212", + "@dnd-kit/core": "6.3.1", + "@dnd-kit/modifiers": "9.0.0", + "@dnd-kit/sortable": "10.0.0", + "@dnd-kit/utilities": "3.2.2", + "@reduxjs/toolkit": "1.9.7", + "@sindresorhus/slugify": "1.1.0", + "@strapi/design-system": "2.2.4", + "@strapi/generators": "5.52.0", + "@strapi/icons": "2.2.4", + "@strapi/utils": "5.52.0", + "ai": "5.0.210", + "date-fns": "2.30.0", + "fs-extra": "11.3.4", + "immer": "9.0.21", + "jszip": "^3.10.1", "lodash": "4.18.1", + "micromatch": "^4.0.8", + "pluralize": "8.0.0", + "qs": "6.15.3", + "react-dropzone": "14.3.8", "react-intl": "6.6.2", - "react-query": "3.39.3", + "react-markdown": "9.1.0", + "react-redux": "8.1.3", "yup": "0.32.9", - "zod": "3.25.67" + "zod": "3.25.76" }, "engines": { "node": ">=20.0.0 <=26.x.x", @@ -7189,14 +7311,26 @@ }, "peerDependencies": { "@strapi/admin": "^5.0.0", - "koa": "^2.15.2", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", "react-router-dom": "^6.30.3", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/email/node_modules/@formatjs/ecma402-abstract": { + "node_modules/@strapi/content-type-builder/node_modules/@codemirror/view": { + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.0.tgz", + "integrity": "sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@strapi/content-type-builder/node_modules/@formatjs/ecma402-abstract": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", @@ -7207,7 +7341,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/email/node_modules/@formatjs/fast-memoize": { + "node_modules/@strapi/content-type-builder/node_modules/@formatjs/fast-memoize": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", @@ -7217,7 +7351,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/email/node_modules/@formatjs/icu-messageformat-parser": { + "node_modules/@strapi/content-type-builder/node_modules/@formatjs/icu-messageformat-parser": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", @@ -7229,7 +7363,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/email/node_modules/@formatjs/icu-skeleton-parser": { + "node_modules/@strapi/content-type-builder/node_modules/@formatjs/icu-skeleton-parser": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", @@ -7240,7 +7374,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/email/node_modules/@formatjs/intl": { + "node_modules/@strapi/content-type-builder/node_modules/@formatjs/intl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", @@ -7264,7 +7398,7 @@ } } }, - "node_modules/@strapi/email/node_modules/@formatjs/intl-localematcher": { + "node_modules/@strapi/content-type-builder/node_modules/@formatjs/intl-localematcher": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", @@ -7274,14 +7408,16 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/email/node_modules/@strapi/design-system": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.0.tgz", - "integrity": "sha512-NO8DhQfApMXlEUeuUG39pKmPGcYCJZjApjPqtPbDFUr434WTeon/vJtJv/fqRs5GFPaJqqDH7YPlpZlJX3z3bA==", + "node_modules/@strapi/content-type-builder/node_modules/@strapi/design-system": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.4.tgz", + "integrity": "sha512-ypr5tKyv8pzJJ7IX7DKEG44chT0+mDywpEsbX1FxU9I/PxVGtayU+wVsfl5NiBfLDrKutDUKxWLZ1NvMfk+JtA==", "dev": true, "license": "MIT", "dependencies": { "@codemirror/lang-json": "6.0.1", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.0", "@floating-ui/react-dom": "2.1.0", "@internationalized/date": "3.5.4", "@internationalized/number": "3.5.3", @@ -7302,34 +7438,35 @@ "@radix-ui/react-tabs": "1.0.4", "@radix-ui/react-tooltip": "1.0.7", "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.0", + "@strapi/ui-primitives": "2.2.4", + "@tanstack/react-virtual": "^3.10.8", "@uiw/react-codemirror": "4.22.2", - "lodash": "4.17.23", + "lodash": "4.18.1", "react-remove-scroll": "2.5.10" }, "peerDependencies": { "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/email/node_modules/@strapi/icons": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.0.tgz", - "integrity": "sha512-wVItrWIDYtvGpv1S5Lg580b5PXH2iw6dgcFnri5vVz4qZDP6ZOTpLmkwZybkfZcpIzq1KkjKyA1JZ6NLBE59cQ==", + "node_modules/@strapi/content-type-builder/node_modules/@strapi/icons": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-ul/NwHl1JiHb5OGXUoSNOIh/jfunAGVpehNvlQcp4P3B2Qb655uuldIe/Eg+8MLcd7VRUwRAckReuL7z1mT6RQ==", "dev": true, "license": "MIT", "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/email/node_modules/@strapi/ui-primitives": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.0.tgz", - "integrity": "sha512-CGvyIr+D7ZEuP9x4bmUFUiilHZwCkftiwV8Kh+o/jBETVlm5/8SrE5wihuyqSQTya1NxTHu0O8RTNkX0U6p8bQ==", + "node_modules/@strapi/content-type-builder/node_modules/@strapi/ui-primitives": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.4.tgz", + "integrity": "sha512-v0VmJ3BkE7Kht9o/DXrTI6Qz+IJzZ/Fc/1D6JRLp7nbCaFkBFjuBMHUvjpS+nLh9C1YfaYtGF6Snr0/ONjPDUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7342,7 +7479,6 @@ "@radix-ui/react-dismissable-layer": "1.0.5", "@radix-ui/react-focus-guards": "1.0.1", "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", "@radix-ui/react-popper": "1.1.3", "@radix-ui/react-portal": "1.0.4", "@radix-ui/react-primitive": "1.0.3", @@ -7356,11 +7492,11 @@ "react-remove-scroll": "2.5.10" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@strapi/email/node_modules/aria-hidden": { + "node_modules/@strapi/content-type-builder/node_modules/aria-hidden": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", @@ -7373,7 +7509,7 @@ "node": ">=10" } }, - "node_modules/@strapi/email/node_modules/intl-messageformat": { + "node_modules/@strapi/content-type-builder/node_modules/intl-messageformat": { "version": "10.5.11", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", @@ -7386,7 +7522,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/email/node_modules/react-intl": { + "node_modules/@strapi/content-type-builder/node_modules/react-intl": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", @@ -7414,56 +7550,296 @@ } } }, - "node_modules/@strapi/email/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "node_modules/@strapi/core": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/core/-/core-5.52.0.tgz", + "integrity": "sha512-fzk7yqKhwBUkzqQ3UxJjJQXb2XBnpB/lSJfyqwmXjMSQJAg1gC3mrD2sByRWbq7/NjZHAYmiL9lcdUUW7orEFw==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@casl/ability": "6.7.5", + "@koa/cors": "5.0.0", + "@koa/router": "12.0.2", + "@modelcontextprotocol/sdk": "1.30.0", + "@paralleldrive/cuid2": "2.2.2", + "@strapi/admin": "5.52.0", + "@strapi/database": "5.52.0", + "@strapi/generators": "5.52.0", + "@strapi/logger": "5.52.0", + "@strapi/openapi": "5.52.0", + "@strapi/permissions": "5.52.0", + "@strapi/types": "5.52.0", + "@strapi/typescript-utils": "5.52.0", + "@strapi/utils": "5.52.0", + "@vercel/stega": "0.1.2", + "bcryptjs": "2.4.3", + "boxen": "5.1.2", + "chalk": "4.1.2", + "ci-info": "4.0.0", + "cli-table3": "0.6.5", + "commander": "8.3.0", + "configstore": "5.0.1", + "debug": "4.3.4", + "delegates": "1.0.0", + "dotenv": "16.6.1", + "execa": "5.1.1", + "fs-extra": "11.3.4", + "glob": "13.0.6", + "global-agent": "4.1.3", + "helmet": "6.2.0", + "http-errors": "2.0.0", + "inquirer": "9.3.8", + "is-docker": "2.2.1", + "json-logic-js": "2.0.5", + "jsonwebtoken": "9.0.3", + "koa": "2.16.4", + "koa-body": "6.0.1", + "koa-compose": "4.1.0", + "koa-compress": "5.1.1", + "koa-favicon": "2.1.0", + "koa-helmet": "7.1.0", + "koa-ip": "^2.1.3", + "koa-session": "7.0.2", + "koa-static": "5.0.0", + "lodash": "4.18.1", + "mime-types": "2.1.35", + "node-schedule": "2.1.1", + "open": "8.4.2", + "ora": "5.4.1", + "package-json": "10.0.1", + "pkg-up": "3.1.0", + "qs": "6.15.3", + "resolve.exports": "2.0.2", + "semver": "7.7.4", + "typescript": "5.9.3", + "undici": "6.28.0", + "yup": "0.32.9", + "zod": "3.25.76" + }, + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@strapi/core/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@strapi/core/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@strapi/core/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=10" + }, "funding": { - "url": "https://github.com/sponsors/colinhacks" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@strapi/generators": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/generators/-/generators-5.49.0.tgz", - "integrity": "sha512-i06qFbI5bIUZLont9eHMePICUAwAKsCWZXZRIgvt5nZIDpFGa/x7xh68QG6RABzuZKE7xsPhv2bgzuUNAHxAxw==", + "node_modules/@strapi/core/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@strapi/core/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@strapi/core/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@strapi/core/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@strapi/core/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@strapi/data-transfer": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/data-transfer/-/data-transfer-5.52.0.tgz", + "integrity": "sha512-IsSw0e3T/E/pSe0stMkM1ttmkMaMcANIGDcGOv88UPy5pq1l4haYG2c6bKZY29gE954MsrhGA3l9a4NaNy3M0A==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@sindresorhus/slugify": "1.1.0", - "@strapi/typescript-utils": "5.49.0", - "@strapi/utils": "5.49.0", + "@strapi/logger": "5.52.0", + "@strapi/types": "5.52.0", + "@strapi/utils": "5.52.0", "chalk": "4.1.2", + "cli-table3": "0.6.5", + "commander": "8.3.0", "fs-extra": "11.3.4", - "handlebars": "4.7.9", - "jscodeshift": "17.3.0", + "inquirer": "9.3.8", "lodash": "4.18.1", - "plop": "4.0.5", - "pluralize": "8.0.0" + "mime-types": "2.1.35", + "ora": "5.4.1", + "resolve-cwd": "3.0.0", + "semver": "7.7.4", + "stream-chain": "2.2.5", + "stream-json": "1.9.1", + "tar": "7.5.22", + "tar-stream": "2.2.0", + "ws": "8.21.2" + }, + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@strapi/data-transfer/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@strapi/database": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/database/-/database-5.52.0.tgz", + "integrity": "sha512-7QaqZe4pbpELdekBNic0B1xexkfvOiXohDUnGnTNX7DaJZx7N8bQ6RCxN7znlUlDyiaE9bcaeNFYspBcOoHRiA==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@paralleldrive/cuid2": "2.2.2", + "@strapi/utils": "5.52.0", + "ajv": "8.20.0", + "date-fns": "2.30.0", + "debug": "4.3.4", + "fs-extra": "11.3.4", + "knex": "3.0.1", + "lodash": "4.18.1", + "semver": "7.7.4" }, "engines": { "node": ">=20.0.0 <=26.x.x", "npm": ">=6.0.0" } }, - "node_modules/@strapi/i18n": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/i18n/-/i18n-5.49.0.tgz", - "integrity": "sha512-3mOrHGFcodMjY2n+TqKVpYjS0NYEr9xEQqsRjNaxdI47o1MMO7N77d2omEDQGu7vrSbKQkv6hCNHzJ2m5jfQnA==", + "node_modules/@strapi/design-system": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.1.tgz", + "integrity": "sha512-g0xzs/cjY8DxI/QhGu9N6fjqrTrCnSao6+6TFXsbhFq0Av5h0hUV/3wsHWb8ArhWzXEjO594nW7cwc7Tv0osZw==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-json": "6.0.1", + "@floating-ui/react-dom": "2.1.0", + "@internationalized/date": "3.5.4", + "@internationalized/number": "3.5.3", + "@radix-ui/react-accordion": "1.1.2", + "@radix-ui/react-alert-dialog": "1.0.5", + "@radix-ui/react-avatar": "1.0.4", + "@radix-ui/react-checkbox": "1.0.4", + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-dropdown-menu": "2.0.6", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-popover": "1.0.7", + "@radix-ui/react-progress": "1.0.3", + "@radix-ui/react-radio-group": "1.1.3", + "@radix-ui/react-scroll-area": "1.0.5", + "@radix-ui/react-switch": "1.0.3", + "@radix-ui/react-tabs": "1.0.4", + "@radix-ui/react-tooltip": "1.0.7", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@strapi/ui-primitives": "2.2.1", + "@uiw/react-codemirror": "4.22.2", + "lodash": "4.18.1", + "react-remove-scroll": "2.5.10" + }, + "peerDependencies": { + "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0", + "styled-components": "^6.0.0" + } + }, + "node_modules/@strapi/email": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/email/-/email-5.52.0.tgz", + "integrity": "sha512-/MWdD6Qljoz5nNs0/xr0oVKwqqt5/n4zNBGwmNIf4Bx0JlSxNWmCZdaUZzLS0m/8WidedQ1HYbEzC1w/5+IDew==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@reduxjs/toolkit": "1.9.7", - "@strapi/design-system": "2.2.0", - "@strapi/icons": "2.2.0", - "@strapi/utils": "5.49.0", + "@strapi/design-system": "2.2.4", + "@strapi/icons": "2.2.4", + "@strapi/provider-email-sendmail": "5.52.0", + "@strapi/utils": "5.52.0", + "koa2-ratelimit": "^1.1.3", "lodash": "4.18.1", - "qs": "6.15.2", "react-intl": "6.6.2", - "react-redux": "8.1.3", + "react-query": "3.39.3", "yup": "0.32.9", - "zod": "3.25.67" + "zod": "3.25.76" }, "engines": { "node": ">=20.0.0 <=26.x.x", @@ -7471,14 +7847,27 @@ }, "peerDependencies": { "@strapi/admin": "^5.0.0", - "@strapi/content-manager": "^5.0.0", + "koa": "^2.15.2", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", "react-router-dom": "^6.30.3", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/i18n/node_modules/@formatjs/ecma402-abstract": { + "node_modules/@strapi/email/node_modules/@codemirror/view": { + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.0.tgz", + "integrity": "sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@strapi/email/node_modules/@formatjs/ecma402-abstract": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", @@ -7489,7 +7878,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/i18n/node_modules/@formatjs/fast-memoize": { + "node_modules/@strapi/email/node_modules/@formatjs/fast-memoize": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", @@ -7499,7 +7888,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/i18n/node_modules/@formatjs/icu-messageformat-parser": { + "node_modules/@strapi/email/node_modules/@formatjs/icu-messageformat-parser": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", @@ -7511,7 +7900,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/i18n/node_modules/@formatjs/icu-skeleton-parser": { + "node_modules/@strapi/email/node_modules/@formatjs/icu-skeleton-parser": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", @@ -7522,7 +7911,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/i18n/node_modules/@formatjs/intl": { + "node_modules/@strapi/email/node_modules/@formatjs/intl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", @@ -7546,7 +7935,7 @@ } } }, - "node_modules/@strapi/i18n/node_modules/@formatjs/intl-localematcher": { + "node_modules/@strapi/email/node_modules/@formatjs/intl-localematcher": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", @@ -7556,14 +7945,16 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/i18n/node_modules/@strapi/design-system": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.0.tgz", - "integrity": "sha512-NO8DhQfApMXlEUeuUG39pKmPGcYCJZjApjPqtPbDFUr434WTeon/vJtJv/fqRs5GFPaJqqDH7YPlpZlJX3z3bA==", + "node_modules/@strapi/email/node_modules/@strapi/design-system": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.4.tgz", + "integrity": "sha512-ypr5tKyv8pzJJ7IX7DKEG44chT0+mDywpEsbX1FxU9I/PxVGtayU+wVsfl5NiBfLDrKutDUKxWLZ1NvMfk+JtA==", "dev": true, "license": "MIT", "dependencies": { "@codemirror/lang-json": "6.0.1", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.0", "@floating-ui/react-dom": "2.1.0", "@internationalized/date": "3.5.4", "@internationalized/number": "3.5.3", @@ -7581,321 +7972,161 @@ "@radix-ui/react-radio-group": "1.1.3", "@radix-ui/react-scroll-area": "1.0.5", "@radix-ui/react-switch": "1.0.3", - "@radix-ui/react-tabs": "1.0.4", - "@radix-ui/react-tooltip": "1.0.7", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.0", - "@uiw/react-codemirror": "4.22.2", - "lodash": "4.17.23", - "react-remove-scroll": "2.5.10" - }, - "peerDependencies": { - "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "styled-components": "^6.0.0" - } - }, - "node_modules/@strapi/i18n/node_modules/@strapi/icons": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.0.tgz", - "integrity": "sha512-wVItrWIDYtvGpv1S5Lg580b5PXH2iw6dgcFnri5vVz4qZDP6ZOTpLmkwZybkfZcpIzq1KkjKyA1JZ6NLBE59cQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "styled-components": "^6.0.0" - } - }, - "node_modules/@strapi/i18n/node_modules/@strapi/ui-primitives": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.0.tgz", - "integrity": "sha512-CGvyIr+D7ZEuP9x4bmUFUiilHZwCkftiwV8Kh+o/jBETVlm5/8SrE5wihuyqSQTya1NxTHu0O8RTNkX0U6p8bQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.0.1", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3", - "@tanstack/react-virtual": "^3.10.8", - "aria-hidden": "1.2.4", - "react-remove-scroll": "2.5.10" - }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@strapi/i18n/node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@strapi/i18n/node_modules/intl-messageformat": { - "version": "10.5.11", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", - "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "tslib": "^2.4.0" - } - }, - "node_modules/@strapi/i18n/node_modules/react-intl": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", - "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-messageformat-parser": "2.7.6", - "@formatjs/intl": "2.10.0", - "@formatjs/intl-displaynames": "6.6.6", - "@formatjs/intl-listformat": "7.5.5", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", - "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "10.5.11", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "react": "^16.6.0 || 17 || 18", - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@strapi/i18n/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/@strapi/icons": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.1.tgz", - "integrity": "sha512-u/MRGJuy9+jAzBHyAUA1Q+A3Ckax4TRFh69fAxIpR30TcZtvRoi2LYWbYkl5nPDaJWljuesNuVT4pNJV8yfbeg==", - "license": "MIT", - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "styled-components": "^6.0.0" - } - }, - "node_modules/@strapi/logger": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/logger/-/logger-5.49.0.tgz", - "integrity": "sha512-+QesglR/rYGRymwzUVNCZmaJ3MUAdQO4R/uli0pPAaBMJrwbjD2zv6d4OY3hNvxcuTOdSR863g8lYTUm3x3eRg==", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "lodash": "4.18.1", - "winston": "3.10.0" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" - } - }, - "node_modules/@strapi/openapi": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/openapi/-/openapi-5.49.0.tgz", - "integrity": "sha512-pJS4dBlmot7PWdumdJxEg4nilkjZ2e/fd2f+qK4RLEpktoYemfwTRbSX3VrDls8/lWpjLFEEzz9il0IzUzz5nQ==", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "debug": "4.3.4", - "openapi-types": "12.1.3", - "zod": "3.25.67" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" - } - }, - "node_modules/@strapi/openapi/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/@strapi/pack-up": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@strapi/pack-up/-/pack-up-5.1.1.tgz", - "integrity": "sha512-n3aUFPJiH8gOoJFvwVO6BmkUxaS9IHOY33zFTqI3RSmdI5hzhBRruFXKg4g12ibzQ3YtrRBEvJzjaerRxfpJ3Q==", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@vitejs/plugin-react-swc": "3.7.0", - "boxen": "5.1.2", - "browserslist-to-esbuild": "1.2.0", - "chalk": "4.1.2", - "chokidar": "4.0.1", - "commander": "8.3.0", - "esbuild": "0.20.2", - "esbuild-register": "3.5.0", - "get-latest-version": "5.1.0", - "git-url-parse": "13.1.1", - "ini": "4.1.2", - "ora": "5.4.1", - "outdent": "0.8.0", - "pkg-up": "3.1.0", - "prettier": "3.3.3", - "prettier-plugin-packagejson": "2.5.2", - "prompts": "2.4.2", - "rxjs": "7.8.1", - "typescript": "5.4.4", - "vite": "5.4.21", - "yup": "0.32.9" + "@radix-ui/react-tabs": "1.0.4", + "@radix-ui/react-tooltip": "1.0.7", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@strapi/ui-primitives": "2.2.4", + "@tanstack/react-virtual": "^3.10.8", + "@uiw/react-codemirror": "4.22.2", + "lodash": "4.18.1", + "react-remove-scroll": "2.5.10" }, - "bin": { - "pack-up": "bin/pack-up.js" + "peerDependencies": { + "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "styled-components": "^6.0.0" } }, - "node_modules/@strapi/pack-up/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/@strapi/email/node_modules/@strapi/icons": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-ul/NwHl1JiHb5OGXUoSNOIh/jfunAGVpehNvlQcp4P3B2Qb655uuldIe/Eg+8MLcd7VRUwRAckReuL7z1mT6RQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 12" + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0", + "styled-components": "^6.0.0" } }, - "node_modules/@strapi/pack-up/node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "node_modules/@strapi/email/node_modules/@strapi/ui-primitives": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.4.tgz", + "integrity": "sha512-v0VmJ3BkE7Kht9o/DXrTI6Qz+IJzZ/Fc/1D6JRLp7nbCaFkBFjuBMHUvjpS+nLh9C1YfaYtGF6Snr0/ONjPDUQ==", "dev": true, "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" + "dependencies": { + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "@tanstack/react-virtual": "^3.10.8", + "aria-hidden": "1.2.4", + "react-remove-scroll": "2.5.10" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@strapi/pack-up/node_modules/typescript": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", - "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", + "node_modules/@strapi/email/node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" }, "engines": { - "node": ">=14.17" + "node": ">=10" } }, - "node_modules/@strapi/permissions": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/permissions/-/permissions-5.49.0.tgz", - "integrity": "sha512-WzfcA3veqsbVg3QguMQmBDb4mdoso4pHMGz4NV71rlnX9YBZzgpYQaaMQv/rLxVjUA8vnzLGS9RMjYRKuMf0mg==", + "node_modules/@strapi/email/node_modules/intl-messageformat": { + "version": "10.5.11", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", + "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", "dev": true, - "license": "SEE LICENSE IN LICENSE", + "license": "BSD-3-Clause", "dependencies": { - "@casl/ability": "6.7.5", - "@strapi/utils": "5.49.0", - "lodash": "4.18.1", - "qs": "6.15.2", - "sift": "16.0.1" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.6", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/provider-email-sendmail": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/provider-email-sendmail/-/provider-email-sendmail-5.49.0.tgz", - "integrity": "sha512-Rr+tGc2YfWcL3WRvetaSnnwphVDzbDn/cPU7+DgcFe9CjUkXE+EFpwUsWLRl8MvvQwSnyDysKz4kzIYfeX6X/A==", + "node_modules/@strapi/email/node_modules/react-intl": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", + "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", "dev": true, - "license": "SEE LICENSE IN LICENSE", + "license": "BSD-3-Clause", "dependencies": { - "nodemailer": "8.0.9" + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/icu-messageformat-parser": "2.7.6", + "@formatjs/intl": "2.10.0", + "@formatjs/intl-displaynames": "6.6.6", + "@formatjs/intl-listformat": "7.5.5", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "10.5.11", + "tslib": "^2.4.0" }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" + "peerDependencies": { + "react": "^16.6.0 || 17 || 18", + "typescript": "^4.7 || 5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@strapi/provider-upload-local": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/provider-upload-local/-/provider-upload-local-5.49.0.tgz", - "integrity": "sha512-DXDHyNWV0tVDMRgZrxJ1N3Cmgn1NBvEpAgymvtXSkA/Y4MBuNtbXQz5s9yyxs/SHl7RfWo6HRm/hv2QD2H8ulQ==", + "node_modules/@strapi/generators": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/generators/-/generators-5.52.0.tgz", + "integrity": "sha512-hjm+bcv8x73EXns/Ex9GOw97Nt21doBYNookSoSAemcTKHLyyO2aF19CrNOJMbB2Q2CS3T62xO0cDUvrIh2Vwg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@strapi/utils": "5.49.0", - "fs-extra": "11.3.4" + "@sindresorhus/slugify": "1.1.0", + "@strapi/typescript-utils": "5.52.0", + "@strapi/utils": "5.52.0", + "chalk": "4.1.2", + "fs-extra": "11.3.4", + "handlebars": "4.7.9", + "jscodeshift": "17.3.0", + "lodash": "4.18.1", + "plop": "4.0.5", + "pluralize": "8.0.0" }, "engines": { "node": ">=20.0.0 <=26.x.x", "npm": ">=6.0.0" } }, - "node_modules/@strapi/review-workflows": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/review-workflows/-/review-workflows-5.49.0.tgz", - "integrity": "sha512-Ykx+jifV9kI6zSV45Ss2i93+dHU8Cf4er9KLdtpl/lAHhj+qjXw4gSSiUF64Ya2y9Qs3N9cHKr+Nirw9ZBOSyw==", + "node_modules/@strapi/i18n": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/i18n/-/i18n-5.52.0.tgz", + "integrity": "sha512-N8TcX+XaURBKkbhJL4WwB6ILb41nU8nCrBE9It1GgGdTZTI3kk2agolqyyZN2V4RxRXOvfqg75v1Uult2i4bkA==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@reduxjs/toolkit": "1.9.7", - "@strapi/design-system": "2.2.0", - "@strapi/icons": "2.2.0", - "@strapi/utils": "5.49.0", - "fractional-indexing": "3.2.0", - "react-dnd": "16.0.1", - "react-dnd-html5-backend": "16.0.1", - "react-helmet": "^6.1.0", + "@strapi/design-system": "2.2.4", + "@strapi/icons": "2.2.4", + "@strapi/utils": "5.52.0", + "lodash": "4.18.1", + "qs": "6.15.3", "react-intl": "6.6.2", "react-redux": "8.1.3", - "yup": "0.32.9" + "yup": "0.32.9", + "zod": "3.25.76" }, "engines": { "node": ">=20.0.0 <=26.x.x", @@ -7910,7 +8141,20 @@ "styled-components": "^6.0.0" } }, - "node_modules/@strapi/review-workflows/node_modules/@formatjs/ecma402-abstract": { + "node_modules/@strapi/i18n/node_modules/@codemirror/view": { + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.0.tgz", + "integrity": "sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@strapi/i18n/node_modules/@formatjs/ecma402-abstract": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", @@ -7921,7 +8165,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/review-workflows/node_modules/@formatjs/fast-memoize": { + "node_modules/@strapi/i18n/node_modules/@formatjs/fast-memoize": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", @@ -7931,7 +8175,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/review-workflows/node_modules/@formatjs/icu-messageformat-parser": { + "node_modules/@strapi/i18n/node_modules/@formatjs/icu-messageformat-parser": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", @@ -7943,7 +8187,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/review-workflows/node_modules/@formatjs/icu-skeleton-parser": { + "node_modules/@strapi/i18n/node_modules/@formatjs/icu-skeleton-parser": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", @@ -7954,7 +8198,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/review-workflows/node_modules/@formatjs/intl": { + "node_modules/@strapi/i18n/node_modules/@formatjs/intl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", @@ -7978,7 +8222,7 @@ } } }, - "node_modules/@strapi/review-workflows/node_modules/@formatjs/intl-localematcher": { + "node_modules/@strapi/i18n/node_modules/@formatjs/intl-localematcher": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", @@ -7988,14 +8232,16 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/review-workflows/node_modules/@strapi/design-system": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.0.tgz", - "integrity": "sha512-NO8DhQfApMXlEUeuUG39pKmPGcYCJZjApjPqtPbDFUr434WTeon/vJtJv/fqRs5GFPaJqqDH7YPlpZlJX3z3bA==", + "node_modules/@strapi/i18n/node_modules/@strapi/design-system": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.4.tgz", + "integrity": "sha512-ypr5tKyv8pzJJ7IX7DKEG44chT0+mDywpEsbX1FxU9I/PxVGtayU+wVsfl5NiBfLDrKutDUKxWLZ1NvMfk+JtA==", "dev": true, "license": "MIT", "dependencies": { "@codemirror/lang-json": "6.0.1", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.0", "@floating-ui/react-dom": "2.1.0", "@internationalized/date": "3.5.4", "@internationalized/number": "3.5.3", @@ -8016,34 +8262,35 @@ "@radix-ui/react-tabs": "1.0.4", "@radix-ui/react-tooltip": "1.0.7", "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.0", + "@strapi/ui-primitives": "2.2.4", + "@tanstack/react-virtual": "^3.10.8", "@uiw/react-codemirror": "4.22.2", - "lodash": "4.17.23", + "lodash": "4.18.1", "react-remove-scroll": "2.5.10" }, "peerDependencies": { "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/review-workflows/node_modules/@strapi/icons": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.0.tgz", - "integrity": "sha512-wVItrWIDYtvGpv1S5Lg580b5PXH2iw6dgcFnri5vVz4qZDP6ZOTpLmkwZybkfZcpIzq1KkjKyA1JZ6NLBE59cQ==", + "node_modules/@strapi/i18n/node_modules/@strapi/icons": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-ul/NwHl1JiHb5OGXUoSNOIh/jfunAGVpehNvlQcp4P3B2Qb655uuldIe/Eg+8MLcd7VRUwRAckReuL7z1mT6RQ==", "dev": true, "license": "MIT", "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/review-workflows/node_modules/@strapi/ui-primitives": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.0.tgz", - "integrity": "sha512-CGvyIr+D7ZEuP9x4bmUFUiilHZwCkftiwV8Kh+o/jBETVlm5/8SrE5wihuyqSQTya1NxTHu0O8RTNkX0U6p8bQ==", + "node_modules/@strapi/i18n/node_modules/@strapi/ui-primitives": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.4.tgz", + "integrity": "sha512-v0VmJ3BkE7Kht9o/DXrTI6Qz+IJzZ/Fc/1D6JRLp7nbCaFkBFjuBMHUvjpS+nLh9C1YfaYtGF6Snr0/ONjPDUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8056,7 +8303,6 @@ "@radix-ui/react-dismissable-layer": "1.0.5", "@radix-ui/react-focus-guards": "1.0.1", "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", "@radix-ui/react-popper": "1.1.3", "@radix-ui/react-portal": "1.0.4", "@radix-ui/react-primitive": "1.0.3", @@ -8070,11 +8316,11 @@ "react-remove-scroll": "2.5.10" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@strapi/review-workflows/node_modules/aria-hidden": { + "node_modules/@strapi/i18n/node_modules/aria-hidden": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", @@ -8087,7 +8333,7 @@ "node": ">=10" } }, - "node_modules/@strapi/review-workflows/node_modules/intl-messageformat": { + "node_modules/@strapi/i18n/node_modules/intl-messageformat": { "version": "10.5.11", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", @@ -8100,7 +8346,7 @@ "tslib": "^2.4.0" } }, - "node_modules/@strapi/review-workflows/node_modules/react-intl": { + "node_modules/@strapi/i18n/node_modules/react-intl": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", @@ -8128,55 +8374,108 @@ } } }, - "node_modules/@strapi/sdk-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@strapi/sdk-plugin/-/sdk-plugin-5.4.0.tgz", - "integrity": "sha512-X+rmhjZD/QWlrZk0V3of1sGMc9d8ieiEKIx/j73CC5l9877hQTY6vsuJ7crm1L2HEH/gSrlcbW32tmvow7apJQ==", + "node_modules/@strapi/icons": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.1.tgz", + "integrity": "sha512-u/MRGJuy9+jAzBHyAUA1Q+A3Ckax4TRFh69fAxIpR30TcZtvRoi2LYWbYkl5nPDaJWljuesNuVT4pNJV8yfbeg==", + "license": "MIT", + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0", + "styled-components": "^6.0.0" + } + }, + "node_modules/@strapi/logger": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/logger/-/logger-5.52.0.tgz", + "integrity": "sha512-aGIeEjNKJEIcsHrqteIuZQjNXqh37lOGzxnz7Yvw2xt7xHsKYbhHWo1LFikPxOvL8dJd7PiRSexxJ2d98r/CEg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@strapi/pack-up": "^5.1.1", - "@types/prompts": "2.4.9", + "lodash": "4.18.1", + "winston": "3.10.0" + }, + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@strapi/openapi": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/openapi/-/openapi-5.52.0.tgz", + "integrity": "sha512-EAK+glXfQzhA61FkkGiq5Xnwk2OdnUBqG/gRdBRE44YTuwcD/Ffo8jKPhZTND43IRMHmgGVldBFVfsHL+LSlxA==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "debug": "4.3.4", + "openapi-types": "12.1.3", + "zod": "3.25.76" + }, + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@strapi/pack-up": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@strapi/pack-up/-/pack-up-5.1.1.tgz", + "integrity": "sha512-n3aUFPJiH8gOoJFvwVO6BmkUxaS9IHOY33zFTqI3RSmdI5hzhBRruFXKg4g12ibzQ3YtrRBEvJzjaerRxfpJ3Q==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@vitejs/plugin-react-swc": "3.7.0", "boxen": "5.1.2", + "browserslist-to-esbuild": "1.2.0", "chalk": "4.1.2", - "commander": "12.1.0", - "concurrently": "^8.2.2", - "execa": "^9.3.1", + "chokidar": "4.0.1", + "commander": "8.3.0", + "esbuild": "0.20.2", + "esbuild-register": "3.5.0", "get-latest-version": "5.1.0", "git-url-parse": "13.1.1", - "nodemon": "^3.1.0", + "ini": "4.1.2", "ora": "5.4.1", "outdent": "0.8.0", "pkg-up": "3.1.0", - "prettier": "2.8.8", + "prettier": "3.3.3", + "prettier-plugin-packagejson": "2.5.2", + "prompts": "2.4.2", + "rxjs": "7.8.1", "typescript": "5.4.4", + "vite": "5.4.21", "yup": "0.32.9" }, "bin": { - "strapi-plugin": "bin/strapi-plugin.js" - }, + "pack-up": "bin/pack-up.js" + } + }, + "node_modules/@strapi/pack-up/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0 <=22.x.x", - "npm": ">=6.0.0" + "node": ">= 12" } }, - "node_modules/@strapi/sdk-plugin/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/@strapi/pack-up/node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@strapi/sdk-plugin/node_modules/typescript": { + "node_modules/@strapi/pack-up/node_modules/typescript": { "version": "5.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", @@ -8190,427 +8489,532 @@ "node": ">=14.17" } }, - "node_modules/@strapi/strapi": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/strapi/-/strapi-5.49.0.tgz", - "integrity": "sha512-ARJhBB3JedKQexAbwM0kQXLK/f0SgXGY8Ritkz0/qHcHdL6KgQigG0aGYgx1EfTW5hg9TkG33KxvTA/M70f4+A==", + "node_modules/@strapi/permissions": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/permissions/-/permissions-5.52.0.tgz", + "integrity": "sha512-Co5O4gGXbcLMw4Rs6NK9+l8vUdo45eYEgJRRIX8bM/MZMep0hhMNEO3vjyl06gbQP+urE8Nbh3InCY1d9UfGQQ==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@pmmmwh/react-refresh-webpack-plugin": "0.5.17", - "@strapi/admin": "5.49.0", - "@strapi/cloud-cli": "5.49.0", - "@strapi/content-manager": "5.49.0", - "@strapi/content-releases": "5.49.0", - "@strapi/content-type-builder": "5.49.0", - "@strapi/core": "5.49.0", - "@strapi/data-transfer": "5.49.0", - "@strapi/database": "5.49.0", - "@strapi/email": "5.49.0", - "@strapi/generators": "5.49.0", - "@strapi/i18n": "5.49.0", - "@strapi/logger": "5.49.0", - "@strapi/openapi": "5.49.0", - "@strapi/permissions": "5.49.0", - "@strapi/review-workflows": "5.49.0", - "@strapi/types": "5.49.0", - "@strapi/typescript-utils": "5.49.0", - "@strapi/upload": "5.49.0", - "@strapi/utils": "5.49.0", - "@types/nodemon": "1.19.6", - "@vitejs/plugin-react-swc": "3.11.0", - "boxen": "5.1.2", - "browserslist": "^4.23.0", - "browserslist-to-esbuild": "2.1.1", - "chalk": "4.1.2", - "chokidar": "3.6.0", - "ci-info": "4.0.0", - "cli-progress": "3.12.0", - "cli-table3": "0.6.5", - "commander": "8.3.0", - "concurrently": "8.2.2", - "css-loader": "6.11.0", - "dotenv": "16.6.1", - "esbuild-loader": "4.4.3", - "esbuild-register": "3.6.0", - "execa": "5.1.1", - "fork-ts-checker-webpack-plugin": "8.0.0", - "fs-extra": "11.3.4", - "get-latest-version": "5.1.0", - "git-url-parse": "14.0.0", - "html-webpack-plugin": "5.6.7", - "inquirer": "9.3.8", + "@casl/ability": "6.7.5", + "@strapi/utils": "5.52.0", "lodash": "4.18.1", - "mini-css-extract-plugin": "2.10.2", - "nodemon": "3.0.2", - "ora": "5.4.1", - "outdent": "0.8.0", - "pkg-up": "3.1.0", - "prettier": "3.3.3", - "react-refresh": "0.14.0", - "read-pkg-up": "7.0.1", - "resolve-from": "5.0.0", + "qs": "6.15.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@strapi/provider-email-sendmail": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/provider-email-sendmail/-/provider-email-sendmail-5.52.0.tgz", + "integrity": "sha512-V/E5rIy15iktPPo/DwEGct4jrscEr8YYTv/MAqXsWWS5wNzHA3t/ukfcxmHMONwHTJ691GjcNhXEESwyyXCYPA==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "nodemailer": "9.0.1" + }, + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@strapi/provider-upload-local": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/provider-upload-local/-/provider-upload-local-5.52.0.tgz", + "integrity": "sha512-icFPsxzN7/YIygJV0l5i5AgzcIK3aEQ6xbcoxXlGg2xuku457zID+6I40s0sNmPFlq0JnlhUKR+sFt8Tr7vJ7A==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@strapi/utils": "5.52.0", + "fs-extra": "11.3.4" + }, + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@strapi/review-workflows": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/review-workflows/-/review-workflows-5.52.0.tgz", + "integrity": "sha512-AbKctXBbjaaf/8rbfbNeHxai37TLJIjcQDRqhUgU0JlnFPNzq02x9WJS5YaW4k+gI1EMMQQFjuS3Q1bW5LQkDQ==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@reduxjs/toolkit": "1.9.7", + "@strapi/design-system": "2.2.4", + "@strapi/icons": "2.2.4", + "@strapi/utils": "5.52.0", + "date-fns": "2.30.0", + "fractional-indexing": "3.2.0", + "koa": "2.16.4", + "lodash": "4.18.1", + "react-dnd": "16.0.1", + "react-dnd-html5-backend": "16.0.1", + "react-helmet": "^6.1.0", + "react-intl": "6.6.2", + "react-redux": "8.1.3", "semver": "7.7.4", - "style-loader": "3.3.4", - "typescript": "5.4.5", - "vite": "5.4.21", - "webpack": "5.106.2", - "webpack-bundle-analyzer": "5.3.0", - "webpack-dev-middleware": "6.1.3", - "webpack-hot-middleware": "2.26.1", "yup": "0.32.9" }, - "bin": { - "strapi": "bin/strapi.js" - }, "engines": { "node": ">=20.0.0 <=26.x.x", "npm": ">=6.0.0" }, "peerDependencies": { + "@strapi/admin": "^5.0.0", + "@strapi/content-manager": "^5.0.0", + "@strapi/types": "^5.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", "react-router-dom": "^6.30.3", "styled-components": "^6.0.0" } }, - "node_modules/@strapi/strapi/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/@strapi/review-workflows/node_modules/@codemirror/view": { + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.0.tgz", + "integrity": "sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } }, - "node_modules/@strapi/strapi/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "node_modules/@strapi/review-workflows/node_modules/@formatjs/ecma402-abstract": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", + "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/strapi/node_modules/browserslist-to-esbuild": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz", - "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==", + "node_modules/@strapi/review-workflows/node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", "dev": true, "license": "MIT", "dependencies": { - "meow": "^13.0.0" - }, - "bin": { - "browserslist-to-esbuild": "cli/index.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "browserslist": "*" + "tslib": "^2.4.0" } }, - "node_modules/@strapi/strapi/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@strapi/review-workflows/node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", + "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/icu-skeleton-parser": "1.8.0", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/strapi/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/@strapi/review-workflows/node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", + "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 12" + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/strapi/node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "node_modules/@strapi/review-workflows/node_modules/@formatjs/intl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", + "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.6", + "@formatjs/intl-displaynames": "6.6.6", + "@formatjs/intl-listformat": "7.5.5", + "intl-messageformat": "10.5.11", + "tslib": "^2.4.0" }, "peerDependencies": { - "esbuild": ">=0.12 <1" + "typescript": "^4.7 || 5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@strapi/strapi/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/@strapi/review-workflows/node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "tslib": "^2.4.0" + } + }, + "node_modules/@strapi/review-workflows/node_modules/@strapi/design-system": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.4.tgz", + "integrity": "sha512-ypr5tKyv8pzJJ7IX7DKEG44chT0+mDywpEsbX1FxU9I/PxVGtayU+wVsfl5NiBfLDrKutDUKxWLZ1NvMfk+JtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/lang-json": "6.0.1", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.0", + "@floating-ui/react-dom": "2.1.0", + "@internationalized/date": "3.5.4", + "@internationalized/number": "3.5.3", + "@radix-ui/react-accordion": "1.1.2", + "@radix-ui/react-alert-dialog": "1.0.5", + "@radix-ui/react-avatar": "1.0.4", + "@radix-ui/react-checkbox": "1.0.4", + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-dropdown-menu": "2.0.6", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-popover": "1.0.7", + "@radix-ui/react-progress": "1.0.3", + "@radix-ui/react-radio-group": "1.1.3", + "@radix-ui/react-scroll-area": "1.0.5", + "@radix-ui/react-switch": "1.0.3", + "@radix-ui/react-tabs": "1.0.4", + "@radix-ui/react-tooltip": "1.0.7", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@strapi/ui-primitives": "2.2.4", + "@tanstack/react-virtual": "^3.10.8", + "@uiw/react-codemirror": "4.22.2", + "lodash": "4.18.1", + "react-remove-scroll": "2.5.10" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "peerDependencies": { + "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "styled-components": "^6.0.0" } }, - "node_modules/@strapi/strapi/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/@strapi/review-workflows/node_modules/@strapi/icons": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-ul/NwHl1JiHb5OGXUoSNOIh/jfunAGVpehNvlQcp4P3B2Qb655uuldIe/Eg+8MLcd7VRUwRAckReuL7z1mT6RQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0", + "styled-components": "^6.0.0" } }, - "node_modules/@strapi/strapi/node_modules/git-url-parse": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", - "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", + "node_modules/@strapi/review-workflows/node_modules/@strapi/ui-primitives": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.4.tgz", + "integrity": "sha512-v0VmJ3BkE7Kht9o/DXrTI6Qz+IJzZ/Fc/1D6JRLp7nbCaFkBFjuBMHUvjpS+nLh9C1YfaYtGF6Snr0/ONjPDUQ==", "dev": true, "license": "MIT", "dependencies": { - "git-up": "^7.0.0" + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "@tanstack/react-virtual": "^3.10.8", + "aria-hidden": "1.2.4", + "react-remove-scroll": "2.5.10" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@strapi/strapi/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@strapi/review-workflows/node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "dev": true, "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, "engines": { - "node": ">=4" - } - }, - "node_modules/@strapi/strapi/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" + "node": ">=10" } }, - "node_modules/@strapi/strapi/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/@strapi/review-workflows/node_modules/intl-messageformat": { + "version": "10.5.11", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", + "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.6", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/strapi/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "node_modules/@strapi/review-workflows/node_modules/react-intl": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.2.tgz", + "integrity": "sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "brace-expansion": "^1.1.7" + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/icu-messageformat-parser": "2.7.6", + "@formatjs/intl": "2.10.0", + "@formatjs/intl-displaynames": "6.6.6", + "@formatjs/intl-listformat": "7.5.5", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "10.5.11", + "tslib": "^2.4.0" }, - "engines": { - "node": "*" + "peerDependencies": { + "react": "^16.6.0 || 17 || 18", + "typescript": "^4.7 || 5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@strapi/strapi/node_modules/nodemon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", - "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", + "node_modules/@strapi/sdk-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@strapi/sdk-plugin/-/sdk-plugin-5.4.0.tgz", + "integrity": "sha512-X+rmhjZD/QWlrZk0V3of1sGMc9d8ieiEKIx/j73CC5l9877hQTY6vsuJ7crm1L2HEH/gSrlcbW32tmvow7apJQ==", "dev": true, - "license": "MIT", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" + "@strapi/pack-up": "^5.1.1", + "@types/prompts": "2.4.9", + "boxen": "5.1.2", + "chalk": "4.1.2", + "commander": "12.1.0", + "concurrently": "^8.2.2", + "execa": "^9.3.1", + "get-latest-version": "5.1.0", + "git-url-parse": "13.1.1", + "nodemon": "^3.1.0", + "ora": "5.4.1", + "outdent": "0.8.0", + "pkg-up": "3.1.0", + "prettier": "2.8.8", + "typescript": "5.4.4", + "yup": "0.32.9" }, "bin": { - "nodemon": "bin/nodemon.js" + "strapi-plugin": "bin/strapi-plugin.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" + "node": ">=18.0.0 <=22.x.x", + "npm": ">=6.0.0" } }, - "node_modules/@strapi/strapi/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/@strapi/sdk-plugin/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" + "bin": { + "prettier": "bin-prettier.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@strapi/strapi/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@strapi/strapi/node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "node_modules/@strapi/sdk-plugin/node_modules/typescript": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", + "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "bin": { - "prettier": "bin/prettier.cjs" + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": ">=14.17" } }, - "node_modules/@strapi/strapi/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/@strapi/strapi": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/strapi/-/strapi-5.52.0.tgz", + "integrity": "sha512-6nYMKuIVGgzsWRbHeImxbclsA+dX1GkDS2IFH+i9JD60SQZCw7ZNZvIJkOOW0xXuoBU+sI4sUYAp+NKx+YnkDQ==", "dev": true, - "license": "MIT", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "picomatch": "^2.2.1" + "@pmmmwh/react-refresh-webpack-plugin": "0.5.17", + "@strapi/admin": "5.52.0", + "@strapi/cloud-cli": "5.52.0", + "@strapi/content-manager": "5.52.0", + "@strapi/content-releases": "5.52.0", + "@strapi/content-type-builder": "5.52.0", + "@strapi/core": "5.52.0", + "@strapi/data-transfer": "5.52.0", + "@strapi/database": "5.52.0", + "@strapi/email": "5.52.0", + "@strapi/generators": "5.52.0", + "@strapi/i18n": "5.52.0", + "@strapi/logger": "5.52.0", + "@strapi/openapi": "5.52.0", + "@strapi/permissions": "5.52.0", + "@strapi/review-workflows": "5.52.0", + "@strapi/types": "5.52.0", + "@strapi/typescript-utils": "5.52.0", + "@strapi/upload": "5.52.0", + "@strapi/utils": "5.52.0", + "@types/nodemon": "1.19.6", + "@vitejs/plugin-react-swc": "3.11.0", + "boxen": "5.1.2", + "browserslist": "^4.23.0", + "browserslist-to-esbuild": "2.1.1", + "chalk": "4.1.2", + "chokidar": "3.6.0", + "ci-info": "4.0.0", + "cli-progress": "3.12.0", + "cli-table3": "0.6.5", + "commander": "8.3.0", + "concurrently": "8.2.2", + "css-loader": "6.11.0", + "dotenv": "16.6.1", + "esbuild-loader": "4.5.0", + "esbuild-register": "3.6.0", + "execa": "5.1.1", + "fork-ts-checker-webpack-plugin": "8.0.0", + "fs-extra": "11.3.4", + "get-latest-version": "5.1.0", + "git-url-parse": "14.0.0", + "html-webpack-plugin": "5.6.7", + "inquirer": "9.3.8", + "lodash": "4.18.1", + "mini-css-extract-plugin": "2.10.2", + "nodemon": "3.0.2", + "ora": "5.4.1", + "outdent": "0.8.0", + "pkg-up": "3.1.0", + "prettier": "3.6.2", + "react-refresh": "0.14.0", + "read-pkg-up": "7.0.1", + "resolve-from": "5.0.0", + "semver": "7.7.4", + "style-loader": "3.3.4", + "typescript": "5.9.3", + "vite": "5.4.21", + "webpack": "5.109.2", + "webpack-bundle-analyzer": "5.3.0", + "webpack-dev-middleware": "6.1.3", + "webpack-hot-middleware": "2.26.1", + "yup": "0.32.9" + }, + "bin": { + "strapi": "bin/strapi.js" }, "engines": { - "node": ">=8.10.0" + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0", + "react-router-dom": "^6.30.3", + "styled-components": "^6.0.0" } }, - "node_modules/@strapi/strapi/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/@strapi/strapi/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/@strapi/strapi/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/@strapi/strapi/node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@strapi/strapi/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@strapi/strapi/node_modules/browserslist-to-esbuild": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz", + "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "meow": "^13.0.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@strapi/strapi/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, - "license": "Apache-2.0", "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "browserslist-to-esbuild": "cli/index.js" }, "engines": { - "node": ">=14.17" + "node": ">=18" + }, + "peerDependencies": { + "browserslist": "*" } }, - "node_modules/@strapi/types": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/types/-/types-5.49.0.tgz", - "integrity": "sha512-l21a/3Ti75/F4Yzx4Oyf1KSZqdH6m9CbhS+KEF8CpB1zMBc1GOjaHrq9mxzQZL6bIgPngLy0PCana7gkt/CJvg==", + "node_modules/@strapi/strapi/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "license": "SEE LICENSE IN LICENSE", + "license": "MIT", "dependencies": { - "@casl/ability": "6.7.5", - "@koa/cors": "5.0.0", - "@koa/router": "12.0.2", - "@modelcontextprotocol/sdk": "1.29.0", - "@strapi/database": "5.49.0", - "@strapi/logger": "5.49.0", - "@strapi/permissions": "5.49.0", - "@strapi/utils": "5.49.0", - "commander": "8.3.0", - "json-logic-js": "2.0.5", - "koa": "2.16.4", - "koa-body": "6.0.1", - "node-schedule": "2.1.1", - "typedoc": "0.28.19", - "typedoc-github-wiki-theme": "2.1.0", - "typedoc-plugin-markdown": "4.11.0", - "zod": "3.25.67" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@strapi/types/node_modules/commander": { + "node_modules/@strapi/strapi/node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", @@ -8620,600 +9024,563 @@ "node": ">= 12" } }, - "node_modules/@strapi/types/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "node_modules/@strapi/strapi/node_modules/enhanced-resolve": { + "version": "5.24.5", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz", + "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@strapi/typescript-utils": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/typescript-utils/-/typescript-utils-5.49.0.tgz", - "integrity": "sha512-au75kMJeoklt2MnOhcryNXQwe/nIOCI9KcnSAnctMtIg2qmYzlE7QkJehysUoVExsBRLVOVeVxUFoPefA41P8Q==", + "node_modules/@strapi/strapi/node_modules/es-module-lexer": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", "dev": true, - "license": "SEE LICENSE IN LICENSE", + "license": "MIT" + }, + "node_modules/@strapi/strapi/node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, + "license": "MIT", "dependencies": { - "chalk": "4.1.2", - "cli-table3": "0.6.5", - "fs-extra": "11.3.4", - "lodash": "4.18.1", - "prettier": "3.3.3", - "typescript": "5.4.5" + "debug": "^4.3.4" }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" + "peerDependencies": { + "esbuild": ">=0.12 <1" } }, - "node_modules/@strapi/typescript-utils/node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "node_modules/@strapi/strapi/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@strapi/typescript-utils/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "node_modules/@strapi/strapi/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, + "license": "MIT", "engines": { - "node": ">=14.17" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@strapi/ui-primitives": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.1.tgz", - "integrity": "sha512-g31KAqLv7e32u1B+zhUSIQom7GPG5fJVMAhPMf+GvW277o7/WX91qCy47BuRM5rRNK66Lm/uABTVdF+tPe57qg==", + "node_modules/@strapi/strapi/node_modules/git-url-parse": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", + "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", + "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/number": "1.0.1", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3", - "@tanstack/react-virtual": "^3.10.8", - "aria-hidden": "1.2.4", - "react-remove-scroll": "2.5.10" - }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "git-up": "^7.0.0" } }, - "node_modules/@strapi/ui-primitives/node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "node_modules/@strapi/strapi/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/@strapi/upload": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/upload/-/upload-5.49.0.tgz", - "integrity": "sha512-l5DksHYhVQrvLwNco5+Vp6VIbSv4lhMemeh24YjYfGlM+kprPVjsHt5NG+46zKQeZrHkQGqnBKtHq+YOkW5hQA==", + "node_modules/@strapi/strapi/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@mux/mux-player-react": "3.1.0", - "@radix-ui/react-dialog": "1.0.5", - "@radix-ui/react-toggle-group": "1.1.11", - "@reduxjs/toolkit": "1.9.7", - "@strapi/database": "5.49.0", - "@strapi/design-system": "2.2.0", - "@strapi/icons": "2.2.0", - "@strapi/provider-upload-local": "5.49.0", - "@strapi/utils": "5.49.0", - "byte-size": "8.1.1", - "cropperjs": "1.6.1", - "date-fns": "2.30.0", - "file-type": "21.3.4", - "formik": "2.4.5", - "fs-extra": "11.3.4", - "immer": "9.0.21", - "koa-range": "0.3.0", - "koa-static": "5.0.0", - "lodash": "4.18.1", - "mime-types": "2.1.35", - "prop-types": "^15.8.1", - "qs": "6.15.2", - "react-dnd": "16.0.1", - "react-intl": "6.6.2", - "react-query": "3.39.3", - "react-redux": "8.1.3", - "react-select": "5.8.0", - "sharp": "0.33.5", - "yup": "0.32.9", - "zod": "3.25.67" - }, - "engines": { - "node": ">=20.0.0 <=26.x.x", - "npm": ">=6.0.0" - }, - "peerDependencies": { - "@strapi/admin": "^5.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.30.3", - "styled-components": "^6.0.0" + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" } }, - "node_modules/@strapi/upload/node_modules/@formatjs/ecma402-abstract": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", - "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", + "node_modules/@strapi/strapi/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", - "dependencies": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@strapi/upload/node_modules/@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "node_modules/@strapi/strapi/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "tslib": "^2.4.0" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/@strapi/upload/node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", - "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", + "node_modules/@strapi/strapi/node_modules/nodemon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", + "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", "dev": true, "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-skeleton-parser": "1.8.0", - "tslib": "^2.4.0" + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" } }, - "node_modules/@strapi/upload/node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", - "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", + "node_modules/@strapi/strapi/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "tslib": "^2.4.0" + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@strapi/upload/node_modules/@formatjs/intl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", - "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", + "node_modules/@strapi/strapi/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "@formatjs/intl-displaynames": "6.6.6", - "@formatjs/intl-listformat": "7.5.5", - "intl-messageformat": "10.5.11", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "typescript": "^4.7 || 5" + "engines": { + "node": ">=8.6" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@strapi/upload/node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "node_modules/@strapi/strapi/node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/primitive": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", - "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", - "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "node_modules/@strapi/strapi/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.11", - "@radix-ui/react-toggle": "1.1.10", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "picomatch": "^2.2.1" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=8.10.0" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "node_modules/@strapi/strapi/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@strapi/strapi/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=6" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-direction": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", - "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "node_modules/@strapi/strapi/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "dependencies": { + "has-flag": "^3.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=4" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-primitive": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", - "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "node_modules/@strapi/strapi/node_modules/webpack": { + "version": "5.109.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz", + "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.2.3" + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.24.4", + "es-module-lexer": "^2.1.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "graceful-fs": "^4.2.11", + "mime-db": "^1.54.0", + "minimizer-webpack-plugin": "^5.6.1", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "watchpack": "^2.5.2", + "webpack-sources": "^3.5.1" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "webpack-cli": { "optional": true } } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "node_modules/@strapi/types": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/types/-/types-5.52.0.tgz", + "integrity": "sha512-G0Ep2KS7s1lHXSq/sKHqGtUboiQ9QdecYrHAyUBW7Be1tJusT7SOZA1GHchOoDi94vOoX5JHz5oEacMCUII20w==", "dev": true, - "license": "MIT", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@casl/ability": "6.7.5", + "@koa/cors": "5.0.0", + "@koa/router": "12.0.2", + "@modelcontextprotocol/sdk": "1.30.0", + "@strapi/database": "5.52.0", + "@strapi/logger": "5.52.0", + "@strapi/permissions": "5.52.0", + "@strapi/utils": "5.52.0", + "commander": "8.3.0", + "json-logic-js": "2.0.5", + "koa": "2.16.4", + "koa-body": "6.0.1", + "node-schedule": "2.1.1", + "typedoc": "0.28.19", + "typedoc-github-wiki-theme": "2.1.0", + "typedoc-plugin-markdown": "4.11.0", + "zod": "3.25.76" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "node_modules/@strapi/types/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">= 12" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", - "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "node_modules/@strapi/typescript-utils": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/typescript-utils/-/typescript-utils-5.52.0.tgz", + "integrity": "sha512-M35tknHNa1Ox7fgAuLEiQ6jdj0UONEAvzms1z/q71IIqQS7gL+R1SbGB9SHH6bW5emO0TbTkWsyGh8gRdXCYvA==", "dev": true, - "license": "MIT", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "chalk": "4.1.2", + "cli-table3": "0.6.5", + "fs-extra": "11.3.4", + "lodash": "4.18.1", + "prettier": "3.6.2", + "typescript": "5.9.3" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-collection": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", - "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "node_modules/@strapi/typescript-utils/node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3" + "bin": { + "prettier": "bin/prettier.cjs" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">=14" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", - "dev": true, + "node_modules/@strapi/ui-primitives": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.1.tgz", + "integrity": "sha512-g31KAqLv7e32u1B+zhUSIQom7GPG5fJVMAhPMf+GvW277o7/WX91qCy47BuRM5rRNK66Lm/uABTVdF+tPe57qg==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "@tanstack/react-virtual": "^3.10.8", + "aria-hidden": "1.2.4", + "react-remove-scroll": "2.5.10" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "dev": true, + "node_modules/@strapi/ui-primitives/node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "dependencies": { + "tslib": "^2.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "node_modules/@strapi/upload": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/upload/-/upload-5.52.0.tgz", + "integrity": "sha512-T8sd8fW3Ogu/N2xeEn9KqKRYxsIISm40ZVwyqc2vgZ0dyrr5wWAwmUY/TzeFYVEq2ZrrFmQl8GZj4X3cy7VeNw==", "dev": true, - "license": "MIT", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" + "@dnd-kit/core": "6.3.1", + "@mux/mux-player-react": "3.1.0", + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-toggle-group": "1.1.11", + "@reduxjs/toolkit": "1.9.7", + "@strapi/database": "5.52.0", + "@strapi/design-system": "2.2.4", + "@strapi/icons": "2.2.4", + "@strapi/provider-upload-local": "5.52.0", + "@strapi/utils": "5.52.0", + "byte-size": "8.1.1", + "cropperjs": "1.6.2", + "date-fns": "2.30.0", + "file-type": "21.3.4", + "formik": "2.4.9", + "fs-extra": "11.3.4", + "immer": "9.0.21", + "koa-range": "0.3.0", + "koa-static": "5.0.0", + "lodash": "4.18.1", + "mime-types": "2.1.35", + "prop-types": "^15.8.1", + "qs": "6.15.3", + "react-dnd": "16.0.1", + "react-intl": "6.6.2", + "react-query": "3.39.3", + "react-redux": "8.1.3", + "react-select": "5.8.0", + "sharp": "0.35.3", + "yup": "0.32.9", + "zod": "3.25.76" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">=20.0.0 <=26.x.x", + "npm": ">=6.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "@strapi/admin": "^5.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0", + "react-router-dom": "^6.30.3", + "styled-components": "^6.0.0" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-id/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "node_modules/@strapi/upload/node_modules/@codemirror/view": { + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.0.tgz", + "integrity": "sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==", "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "node_modules/@strapi/upload/node_modules/@formatjs/ecma402-abstract": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", + "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "dependencies": { + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-toggle": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", - "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "node_modules/@strapi/upload/node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "tslib": "^2.4.0" + } + }, + "node_modules/@strapi/upload/node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", + "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/icu-skeleton-parser": "1.8.0", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", - "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "node_modules/@strapi/upload/node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", + "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@formatjs/ecma402-abstract": "1.18.2", + "tslib": "^2.4.0" } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-controllable-state/node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", - "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "node_modules/@strapi/upload/node_modules/@formatjs/intl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.0.tgz", + "integrity": "sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" + "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.6", + "@formatjs/intl-displaynames": "6.6.6", + "@formatjs/intl-listformat": "7.5.5", + "intl-messageformat": "10.5.11", + "tslib": "^2.4.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "typescript": "^4.7 || 5" }, "peerDependenciesMeta": { - "@types/react": { + "typescript": { "optional": true } } }, - "node_modules/@strapi/upload/node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-controllable-state/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "node_modules/@strapi/upload/node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@strapi/upload/node_modules/@strapi/design-system": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.0.tgz", - "integrity": "sha512-NO8DhQfApMXlEUeuUG39pKmPGcYCJZjApjPqtPbDFUr434WTeon/vJtJv/fqRs5GFPaJqqDH7YPlpZlJX3z3bA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-2.2.4.tgz", + "integrity": "sha512-ypr5tKyv8pzJJ7IX7DKEG44chT0+mDywpEsbX1FxU9I/PxVGtayU+wVsfl5NiBfLDrKutDUKxWLZ1NvMfk+JtA==", "dev": true, "license": "MIT", "dependencies": { "@codemirror/lang-json": "6.0.1", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.0", "@floating-ui/react-dom": "2.1.0", "@internationalized/date": "3.5.4", "@internationalized/number": "3.5.3", @@ -9234,34 +9601,35 @@ "@radix-ui/react-tabs": "1.0.4", "@radix-ui/react-tooltip": "1.0.7", "@radix-ui/react-use-callback-ref": "1.0.1", - "@strapi/ui-primitives": "2.2.0", + "@strapi/ui-primitives": "2.2.4", + "@tanstack/react-virtual": "^3.10.8", "@uiw/react-codemirror": "4.22.2", - "lodash": "4.17.23", + "lodash": "4.18.1", "react-remove-scroll": "2.5.10" }, "peerDependencies": { "@strapi/icons": "^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, "node_modules/@strapi/upload/node_modules/@strapi/icons": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.0.tgz", - "integrity": "sha512-wVItrWIDYtvGpv1S5Lg580b5PXH2iw6dgcFnri5vVz4qZDP6ZOTpLmkwZybkfZcpIzq1KkjKyA1JZ6NLBE59cQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-ul/NwHl1JiHb5OGXUoSNOIh/jfunAGVpehNvlQcp4P3B2Qb655uuldIe/Eg+8MLcd7VRUwRAckReuL7z1mT6RQ==", "dev": true, "license": "MIT", "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "styled-components": "^6.0.0" } }, "node_modules/@strapi/upload/node_modules/@strapi/ui-primitives": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.0.tgz", - "integrity": "sha512-CGvyIr+D7ZEuP9x4bmUFUiilHZwCkftiwV8Kh+o/jBETVlm5/8SrE5wihuyqSQTya1NxTHu0O8RTNkX0U6p8bQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-2.2.4.tgz", + "integrity": "sha512-v0VmJ3BkE7Kht9o/DXrTI6Qz+IJzZ/Fc/1D6JRLp7nbCaFkBFjuBMHUvjpS+nLh9C1YfaYtGF6Snr0/ONjPDUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9274,7 +9642,6 @@ "@radix-ui/react-dismissable-layer": "1.0.5", "@radix-ui/react-focus-guards": "1.0.1", "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", "@radix-ui/react-popper": "1.1.3", "@radix-ui/react-portal": "1.0.4", "@radix-ui/react-primitive": "1.0.3", @@ -9288,18 +9655,8 @@ "react-remove-scroll": "2.5.10" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@strapi/upload/node_modules/@strapi/ui-primitives/node_modules/@radix-ui/primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", - "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@strapi/upload/node_modules/aria-hidden": { @@ -9356,20 +9713,10 @@ } } }, - "node_modules/@strapi/upload/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@strapi/utils": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@strapi/utils/-/utils-5.49.0.tgz", - "integrity": "sha512-/OgXMOj9K7WpVptZL3MrW7XtDEmluKBERjdoXRN6T2vbx8bXyXvPZbO67emigbAR7RzPJbkevXi4bt84fIrruw==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@strapi/utils/-/utils-5.52.0.tgz", + "integrity": "sha512-jDnsoZUPMcFs9PRgVdCsK5RPGwYn56bX2h0d/1wqbusUHUr9CqseqoxXbGcLFD4WZ9zsEYdyRiWlpAAxAyt/HQ==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -9380,9 +9727,9 @@ "lodash": "4.18.1", "node-machine-id": "1.1.12", "p-map": "4.0.0", - "preferred-pm": "3.1.3", + "preferred-pm": "5.0.0", "yup": "0.32.9", - "zod": "3.25.67" + "zod": "3.25.76" }, "engines": { "node": ">=20.0.0 <=26.x.x", @@ -9479,16 +9826,6 @@ "node": ">=6" } }, - "node_modules/@strapi/utils/node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@swc/core": { "version": "1.15.43", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.43.tgz", @@ -9947,13 +10284,6 @@ "@types/node": "*" } }, - "node_modules/@types/argparse": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -10099,6 +10429,7 @@ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -10110,6 +10441,7 @@ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -10175,9 +10507,9 @@ } }, "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", "dev": true, "license": "MIT", "dependencies": { @@ -11407,6 +11739,7 @@ "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10.13.0" }, @@ -11490,21 +11823,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/ajv-formats": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", @@ -11775,14 +12093,14 @@ } }, "node_modules/axios": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.0.tgz", - "integrity": "sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", "dev": true, "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", - "form-data": "^4.0.5", + "form-data": "^4.0.6", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } @@ -12075,9 +12393,9 @@ } }, "node_modules/body-parser/node_modules/content-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "dev": true, "license": "MIT", "engines": { @@ -12134,16 +12452,6 @@ "dev": true, "license": "MIT" }, - "node_modules/body-parser/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -12175,16 +12483,16 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", - "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/braces": { @@ -12225,9 +12533,9 @@ "license": "MIT" }, "node_modules/broadcast-channel/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -12981,16 +13289,6 @@ "node": ">= 0.8" } }, - "node_modules/co-body/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/co-body/node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -13036,17 +13334,17 @@ "license": "MIT" }, "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" + "color-convert": "^3.1.3", + "color-string": "^2.1.3" }, "engines": { - "node": ">=12.5.0" + "node": ">=18" } }, "node_modules/color-convert": { @@ -13070,14 +13368,49 @@ "license": "MIT" }, "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-string/node_modules/color-name": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz", + "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz", + "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" } }, "node_modules/colorette": { @@ -13408,6 +13741,7 @@ "version": "4.9.0", "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "deprecated": "v4 is no longer maintained, upgrade to v5", "dev": true, "license": "MIT", "dependencies": { @@ -13418,9 +13752,9 @@ } }, "node_modules/cropperjs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.1.tgz", - "integrity": "sha512-F4wsi+XkDHCOMrHMYjrTEE4QBOrsHHN5/2VsVAaRq8P7E5z7xQpT75S+f/9WikmBEailas3+yo+6zPIomW+NOA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.2.tgz", + "integrity": "sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==", "dev": true, "license": "MIT" }, @@ -14048,9 +14382,9 @@ } }, "node_modules/dompurify": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.11.tgz", - "integrity": "sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw==", + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.13.tgz", + "integrity": "sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==", "dev": true, "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { @@ -14218,6 +14552,7 @@ "integrity": "sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" @@ -14542,9 +14877,9 @@ } }, "node_modules/eventsource-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.0.tgz", - "integrity": "sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz", + "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==", "dev": true, "license": "MIT", "engines": { @@ -14684,12 +15019,13 @@ } }, "node_modules/express-rate-limit": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz", - "integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==", + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.2.tgz", + "integrity": "sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==", "dev": true, "license": "MIT", "dependencies": { + "debug": "^4.4.3", "ip-address": "^10.2.0" }, "engines": { @@ -14702,6 +15038,31 @@ "express": ">= 4.11" } }, + "node_modules/express-rate-limit/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/express-rate-limit/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/express/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -14790,9 +15151,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz", - "integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", "dev": true, "funding": [ { @@ -15089,31 +15450,108 @@ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "dev": true, - "license": "MIT" + "license": "MIT" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.53", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.53.tgz", + "integrity": "sha512-0P66/qSVapUMgxLt0BwnKQ2VEg7uR/PIX82y/YuKOf8oHK437uq3OcMUdB4NGDJrCZ2is6jME0yZcV9nAM0RoQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.8", + "pkg-dir": "<6 >=5", + "tslib": ">=2", + "upath2": "^3.1.23" + } + }, + "node_modules/find-yarn-workspace-root2/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root2/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/find-yarn-workspace-root2/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-yarn-workspace-root2": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", - "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "micromatch": "^4.0.2", - "pkg-dir": "^4.2.0" + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/findup-sync": { @@ -15170,9 +15608,9 @@ } }, "node_modules/flow-estree": { - "version": "0.321.0", - "resolved": "https://registry.npmjs.org/flow-estree/-/flow-estree-0.321.0.tgz", - "integrity": "sha512-rQY7YKoo+PKpAHQjEP2cxyIefk04OCEKUlbtV4y6LAUG3Ly7guQX9YH8th6drSmYcNkMgpqWMaHRhhYaAF69CA==", + "version": "0.328.0", + "resolved": "https://registry.npmjs.org/flow-estree/-/flow-estree-0.328.0.tgz", + "integrity": "sha512-uMB3dC4nfZYn+dd7/PYkyAK1mqBR4TJ4TWRdOjubpb/ObrLvPFdFSmMTq55fqttCCTygQ4NtD1Zdd+wcjC5t0g==", "dev": true, "license": "MIT", "engines": { @@ -15180,13 +15618,13 @@ } }, "node_modules/flow-parser": { - "version": "0.321.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.321.0.tgz", - "integrity": "sha512-9LNK2rp/NWWbwdEK6mxC54XfQRyD2lVV0iPVBYf+5o5vvqJl7ietkR1hX3/dZ39j0GAbL4PIFoeekDViOW0x/Q==", + "version": "0.328.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.328.0.tgz", + "integrity": "sha512-F+Ik2Of7ndl2FyPmZ77NrhbZp9lYjIsreDXeq4fo0sjxa3SIFv48QAszBqvPeMMzmw7JzqySJUxGR8CSD7EdXw==", "dev": true, "license": "MIT", "dependencies": { - "flow-estree": "0.321.0" + "flow-estree": "0.328.0" }, "engines": { "node": ">=0.4.0" @@ -15307,9 +15745,9 @@ "license": "MIT" }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -15449,9 +15887,9 @@ } }, "node_modules/formik": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz", - "integrity": "sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==", + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.9.tgz", + "integrity": "sha512-5nI94BMnlFDdQRBY4Sz39WkhxajZJ57Fzs8wVbtsQlm5ScKIR1QLYqv/ultBnobObtlUyxpxoLodpixrsf36Og==", "dev": true, "funding": [ { @@ -15505,13 +15943,13 @@ } }, "node_modules/framer-motion": { - "version": "12.42.2", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.42.2.tgz", - "integrity": "sha512-5XY9luDiu0oHfHBjpDthFMh0ES+122w6p/papSJBweMkO8Sn+PW2QaEgRblQBpWFnuvZS5qvarpt/hO2pjGmnw==", + "version": "12.43.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.43.0.tgz", + "integrity": "sha512-1eaL3RvR/kAlbG7UYcpMptEyzPoENO0c6w7ZnB3/hh2vSAz/6uGAFn6fdoqTBguNstf3MsFhJHsD/0DHiclG+g==", "dev": true, "license": "MIT", "dependencies": { - "motion-dom": "^12.42.2", + "motion-dom": "^12.43.0", "motion-utils": "^12.39.0", "tslib": "^2.4.0" }, @@ -15847,7 +16285,8 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "peer": true }, "node_modules/global-agent": { "version": "4.1.3", @@ -16192,9 +16631,9 @@ } }, "node_modules/hono": { - "version": "4.12.27", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.27.tgz", - "integrity": "sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==", + "version": "4.13.3", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.3.tgz", + "integrity": "sha512-r8AO2mYHoLxSHkgafNeC/BXyb2vWRxD3jem4Ts+ptav8oTG5FIRifAjuJEmZI4bSvvc2ns0GxmIYiZnHqN3mMw==", "dev": true, "license": "MIT", "engines": { @@ -16406,6 +16845,16 @@ "node": ">= 0.8" } }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -16542,16 +16991,6 @@ "node": ">=4" } }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -16754,9 +17193,9 @@ "license": "MIT" }, "node_modules/ip-address": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", - "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.5.0.tgz", + "integrity": "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==", "dev": true, "license": "MIT", "engines": { @@ -17599,9 +18038,9 @@ "license": "MIT" }, "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -18142,9 +18581,9 @@ "license": "MIT" }, "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -18409,17 +18848,10 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true, - "license": "MIT" - }, "node_modules/jose": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", - "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.9.tgz", + "integrity": "sha512-XrchZOFZUl/T3vTwRe8XK+cJrGtMF4th1ARnDfwbBXFKThGhlsxEE4Zu03AD/bjJSt/9jT/mxrOCkJWOg77aPA==", "dev": true, "license": "MIT", "funding": { @@ -18440,9 +18872,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz", - "integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.1.tgz", + "integrity": "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==", "dev": true, "license": "MIT", "dependencies": { @@ -18583,16 +19015,22 @@ } }, "node_modules/jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", "dev": true, "license": "MIT", "dependencies": { - "jws": "^3.2.2", - "lodash": "^4.17.21", + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">=12", @@ -18613,9 +19051,9 @@ } }, "node_modules/jwa": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", - "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "dev": true, "license": "MIT", "dependencies": { @@ -18656,9 +19094,9 @@ } }, "node_modules/jwks-rsa/node_modules/@types/express-serve-static-core": { - "version": "4.19.8", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", - "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "version": "4.19.9", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz", + "integrity": "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==", "dev": true, "license": "MIT", "dependencies": { @@ -18702,13 +19140,13 @@ } }, "node_modules/jws": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.3.tgz", - "integrity": "sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "dev": true, "license": "MIT", "dependencies": { - "jwa": "^1.4.2", + "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, @@ -18857,16 +19295,6 @@ "zod": "^3.19.1" } }, - "node_modules/koa-body/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/koa-compose": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", @@ -19101,16 +19529,6 @@ "node": ">= 18.19.0" } }, - "node_modules/koa-session/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/koa-static": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", @@ -19382,29 +19800,61 @@ } }, "node_modules/load-yaml-file": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", - "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-1.0.0.tgz", + "integrity": "sha512-Xw+A/X4c5R6GWu7ZUQgw1rnbfUr1P/hAZbDTrreo+/fP/YSGgxAKoWe2IcT+bt4RHuyIca6S7SMGcWx+QI3WIw==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.13.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" + "graceful-fs": "^4.2.8", + "js-yaml": "^4.1.0", + "strip-bom": "^5.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/load-yaml-file/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/load-yaml-file/node_modules/js-yaml": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/load-yaml-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-5.0.0.tgz", + "integrity": "sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/loader-runner": { @@ -19413,6 +19863,7 @@ "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.11.5" }, @@ -19476,6 +19927,34 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -19483,6 +19962,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -19490,6 +19976,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -19726,9 +20219,9 @@ } }, "node_modules/markdown-it": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", - "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", "dev": true, "funding": [ { @@ -19743,8 +20236,8 @@ "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -20022,9 +20515,9 @@ } }, "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", + "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", "dev": true, "license": "MIT" }, @@ -20043,13 +20536,17 @@ "license": "MIT" }, "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/memfs": { @@ -20691,51 +21188,143 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mini-css-extract-plugin": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", - "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", + "node_modules/mini-css-extract-plugin": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", + "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimizer-webpack-plugin": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz", + "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/minimizer-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", "dependencies": { - "schema-utils": "^4.0.0", - "tapable": "^2.2.1" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "node": ">= 10.13.0" } }, - "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "node_modules/minimizer-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.5" + "has-flag": "^4.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/minipass": { @@ -20769,13 +21358,13 @@ "license": "MIT" }, "node_modules/motion": { - "version": "12.23.24", - "resolved": "https://registry.npmjs.org/motion/-/motion-12.23.24.tgz", - "integrity": "sha512-Rc5E7oe2YZ72N//S3QXGzbnXgqNrTESv8KKxABR20q2FLch9gHLo0JLyYo2hZ238bZ9Gx6cWhj9VO0IgwbMjCw==", + "version": "12.40.0", + "resolved": "https://registry.npmjs.org/motion/-/motion-12.40.0.tgz", + "integrity": "sha512-yjrHUrBFW6kQvjJwRsoiPSAhC5tRwRqNGJWmiJ4CrGnbKp0V88AdzkhBmDoqIsIPfarOe0Uddd37Xq43/gIocA==", "dev": true, "license": "MIT", "dependencies": { - "framer-motion": "^12.23.24", + "framer-motion": "^12.40.0", "tslib": "^2.4.0" }, "peerDependencies": { @@ -20796,9 +21385,9 @@ } }, "node_modules/motion-dom": { - "version": "12.42.2", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.42.2.tgz", - "integrity": "sha512-5gIMWLp/PycBtJRJWRgjxke5n8dlvkSn2DrYW+tr3XcqAZY1xZh6BJyooJXCM8wdfM7wfMjkBJNLge1CKPUIRA==", + "version": "12.43.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.43.0.tgz", + "integrity": "sha512-azKON4d9S65PEoFUiQTMTgPheEmzf2QngdRc50AKfJp9Q9mmcBVw22c8eMq9k8kxOFHdL7+WZY7N/5F/lwiDag==", "dev": true, "license": "MIT", "dependencies": { @@ -20876,9 +21465,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.15", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", - "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "dev": true, "funding": [ { @@ -21044,9 +21633,9 @@ } }, "node_modules/nodemailer": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-8.0.9.tgz", - "integrity": "sha512-5ofa7BUN8+C+Hckh5V2GjeeOGRQBx0CJQA6KxrvuZfC8iU4/q7sLn8XrtEEhJkjV6HdyIiQs7Bba6bTao8JhkA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-9.0.1.tgz", + "integrity": "sha512-Gwv8SQewT616ZM/URn0H54b8PWo/Wum7md3EW2aWy1lO27+WZCX+Xyak3J+NlmHUjDh5ME+uesJUDRbR3Ye8Bw==", "dev": true, "license": "MIT-0", "engines": { @@ -21777,6 +22366,16 @@ "node": ">=0.10.0" } }, + "node_modules/path-is-network-drive": { + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/path-is-network-drive/-/path-is-network-drive-1.0.24.tgz", + "integrity": "sha512-sux7NWiMq/ul8EEQTQbdM1m/zr+Rrq11/P9tEBgxMgTnVHS8f54tQm0kfrTxkvPNg/OVkRjHNgSia5VxnawOZg==", + "dev": true, + "license": "ISC", + "dependencies": { + "tslib": "^2" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -21834,6 +22433,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-strip-sep": { + "version": "1.0.21", + "resolved": "https://registry.npmjs.org/path-strip-sep/-/path-strip-sep-1.0.21.tgz", + "integrity": "sha512-V5Lvyhx0fE6/wEk/YseTtoRQIaD32cepnzrQ1b3kOzOxxDoSglry8IZ1b6LPObIeIbpC0+i9ygUsBNhkOttQKw==", + "dev": true, + "license": "ISC", + "dependencies": { + "tslib": "^2" + } + }, "node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", @@ -22082,20 +22691,10 @@ "node": ">=4" } }, - "node_modules/pony-cause": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", - "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", - "dev": true, - "license": "0BSD", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/postcss": { - "version": "8.5.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", - "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "dev": true, "funding": [ { @@ -22113,7 +22712,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -22233,68 +22832,18 @@ } }, "node_modules/preferred-pm": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.3.tgz", - "integrity": "sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0", - "find-yarn-workspace-root2": "1.2.16", - "path-exists": "^4.0.0", - "which-pm": "2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/preferred-pm/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/preferred-pm/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/preferred-pm/node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-5.0.0.tgz", + "integrity": "sha512-qs9WZBOIW4tXjxoYxUathIb53hcV3cjVpLJl8Y0h3QOiyqnbDzWmw0jvTI5YOw/RAkhDsB/sFVt9pYV+r6NP2A==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "find-up-simple": "^1.0.1", + "find-yarn-workspace-root2": "1.2.53", + "which-pm": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=22.13" } }, "node_modules/prettier": { @@ -22576,13 +23125,14 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" }, "engines": { "node": ">=0.6" @@ -22661,15 +23211,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/raw-body/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -23027,13 +23568,13 @@ } }, "node_modules/react-router": { - "version": "6.30.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.4.tgz", - "integrity": "sha512-SVUsDe+DybHM/WmYKIVYhZh1o5Dcuf16yM6WjG02Q9XVFMZIJyHYhwrr6bFBXZkVP6z69kNkMyBCujt8FaFLJA==", + "version": "6.30.6", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.6.tgz", + "integrity": "sha512-5HfK7k5im7LTOB0EqCQmfvy4C13G92Ssj1VTmouTK3AJvyjKTnFuCV0vcMAD/JS+JC4DvDIBRrlAeJIFjh5VWg==", "dev": true, "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.3" + "@remix-run/router": "1.23.4" }, "engines": { "node": ">=14.0.0" @@ -23043,14 +23584,14 @@ } }, "node_modules/react-router-dom": { - "version": "6.30.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.4.tgz", - "integrity": "sha512-q4HvNl+mmDdkS0g+MqiBZNteQJCuimWoOyHMy4T/RQLAn9Z29+E91QXRaxOujeMl2HTzRSS0KFPd7lxX3PjV0Q==", + "version": "6.30.6", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.6.tgz", + "integrity": "sha512-0RHKZz7wwffvkU+2MFVT2NnjK44ssLEV+m0CAJaS2Ksmorrwj7WxH00jO0SOCW26/tINUnJHToXblDs33I38YQ==", "dev": true, "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.3", - "react-router": "6.30.4" + "@remix-run/router": "1.23.4", + "react-router": "6.30.6" }, "engines": { "node": ">=14.0.0" @@ -23248,9 +23789,9 @@ } }, "node_modules/recast": { - "version": "0.23.12", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.12.tgz", - "integrity": "sha512-dEWRjcINDu/F4l2dYx57ugBtD7HV9KXESyxhzw/MqWLeglJrsjJKqACPyUPg+6AF8mIgm+Zi0dZ3ACoIg+QtpA==", + "version": "0.23.21", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.21.tgz", + "integrity": "sha512-mFAyJq9vUbSTARLZUvAEf1z3YxlvAwswbmxMx2mPA/MSm4KmpwvwvhsH/NIrZhyOuwD60Lzyw2qh83uCbgTPYw==", "dev": true, "license": "MIT", "dependencies": { @@ -24007,16 +24548,6 @@ "dev": true, "license": "MIT" }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/serialize-error": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", @@ -24080,83 +24611,66 @@ } }, "node_modules/sharp": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", - "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.3.tgz", + "integrity": "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==", "dev": true, - "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.3" + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.5", - "@img/sharp-darwin-x64": "0.33.5", - "@img/sharp-libvips-darwin-arm64": "1.0.4", - "@img/sharp-libvips-darwin-x64": "1.0.4", - "@img/sharp-libvips-linux-arm": "1.0.5", - "@img/sharp-libvips-linux-arm64": "1.0.4", - "@img/sharp-libvips-linux-s390x": "1.0.4", - "@img/sharp-libvips-linux-x64": "1.0.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", - "@img/sharp-libvips-linuxmusl-x64": "1.0.4", - "@img/sharp-linux-arm": "0.33.5", - "@img/sharp-linux-arm64": "0.33.5", - "@img/sharp-linux-s390x": "0.33.5", - "@img/sharp-linux-x64": "0.33.5", - "@img/sharp-linuxmusl-arm64": "0.33.5", - "@img/sharp-linuxmusl-x64": "0.33.5", - "@img/sharp-wasm32": "0.33.5", - "@img/sharp-win32-ia32": "0.33.5", - "@img/sharp-win32-x64": "0.33.5" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "@img/sharp-darwin-arm64": "0.35.3", + "@img/sharp-darwin-x64": "0.35.3", + "@img/sharp-freebsd-wasm32": "0.35.3", + "@img/sharp-libvips-darwin-arm64": "1.3.2", + "@img/sharp-libvips-darwin-x64": "1.3.2", + "@img/sharp-libvips-linux-arm": "1.3.2", + "@img/sharp-libvips-linux-arm64": "1.3.2", + "@img/sharp-libvips-linux-ppc64": "1.3.2", + "@img/sharp-libvips-linux-riscv64": "1.3.2", + "@img/sharp-libvips-linux-s390x": "1.3.2", + "@img/sharp-libvips-linux-x64": "1.3.2", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.2", + "@img/sharp-libvips-linuxmusl-x64": "1.3.2", + "@img/sharp-linux-arm": "0.35.3", + "@img/sharp-linux-arm64": "0.35.3", + "@img/sharp-linux-ppc64": "0.35.3", + "@img/sharp-linux-riscv64": "0.35.3", + "@img/sharp-linux-s390x": "0.35.3", + "@img/sharp-linux-x64": "0.35.3", + "@img/sharp-linuxmusl-arm64": "0.35.3", + "@img/sharp-linuxmusl-x64": "0.35.3", + "@img/sharp-webcontainers-wasm32": "0.35.3", + "@img/sharp-win32-arm64": "0.35.3", + "@img/sharp-win32-ia32": "0.35.3", + "@img/sharp-win32-x64": "0.35.3" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/sharp/node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "cpu": [ - "x64" - ], + "node_modules/sharp/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" + "engines": { + "node": ">=10" } }, "node_modules/shebang-command": { @@ -24361,23 +24875,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/simple-swizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "dev": true, - "license": "MIT" - }, "node_modules/simple-update-notifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", @@ -24459,9 +24956,9 @@ } }, "node_modules/slate-react": { - "version": "0.98.3", - "resolved": "https://registry.npmjs.org/slate-react/-/slate-react-0.98.3.tgz", - "integrity": "sha512-p1BnF9eRyRM0i5hkgOb11KgmpWLQm9Zyp6jVkOAj5fPdIGheKhg48Z7aWKrayeJ4nmRyi/NjRZz/io5hQcphmw==", + "version": "0.98.4", + "resolved": "https://registry.npmjs.org/slate-react/-/slate-react-0.98.4.tgz", + "integrity": "sha512-8Of3v9hFuX8rIRc86LuuBhU9t8ps+9ARKL4yyhCrKQYZ93Ep/LFA3GvPGvtf3zYuVadZ8tkhRH8tbHOGNAndLw==", "dev": true, "license": "MIT", "dependencies": { @@ -24721,10 +25218,9 @@ "license": "MIT" }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -24778,16 +25274,6 @@ "dev": true, "license": "MIT" }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.19" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -25146,9 +25632,9 @@ } }, "node_modules/swr": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.4.2.tgz", - "integrity": "sha512-ej644Y2bvkIajfR32KGeSSdBXQW+ScjGjkybZgSE7kFpk9eGnV44XY9FJylXi+W75pavSX1PVNB57W5EbhGIYw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.5.1.tgz", + "integrity": "sha512-BRw55e8r0B7SpDN20CAzoQAHl7y1yP7/Zt7oqUjMv0vSt2u2Xnkm88Ws+VypbV9BXHQVuSuyVq7zMjO16wSExw==", "dev": true, "license": "MIT", "dependencies": { @@ -25190,9 +25676,9 @@ } }, "node_modules/tar": { - "version": "7.5.16", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.16.tgz", - "integrity": "sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==", + "version": "7.5.22", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz", + "integrity": "sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -25259,9 +25745,9 @@ } }, "node_modules/tarn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.1.0.tgz", - "integrity": "sha512-QDihlHbXxQ4SnuQcRd1TPNBHUYo/hafDRDP82COYSVfRcx/3qnfGDkn1WFjozVl+AYr8ZyDKSQ/kIgHH1ri1yg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.1.2.tgz", + "integrity": "sha512-3RTvqKZcK/17jnJ8rMKFXbyNogywTs1z0gVPPwFsJGX46rkmUHOdIaSQ/aVO1rS7nH+soiXiWk7rvUXxndm8Dg==", "dev": true, "license": "MIT", "engines": { @@ -25293,6 +25779,7 @@ "integrity": "sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -25354,6 +25841,7 @@ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -25369,6 +25857,7 @@ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -25430,9 +25919,9 @@ "license": "MIT" }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -25885,6 +26374,29 @@ } } }, + "node_modules/ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/ts-type": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/ts-type/-/ts-type-3.0.13.tgz", + "integrity": "sha512-8SVH7wqDH06PA44UyzwyR3S6NGlweQ/U87glgxpwgn5Kr/xHOm1iljfrlBWQrpyIDYdCbHUFmK3a5lTINTq7xg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/node": "*", + "tslib": ">=2.8.1", + "typedarray-dts": "^1.0.0" + }, + "peerDependencies": { + "ts-toolbelt": "^9.6.0" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -25957,9 +26469,9 @@ } }, "node_modules/type-is/node_modules/content-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "dev": true, "license": "MIT", "engines": { @@ -25987,6 +26499,13 @@ "url": "https://opencollective.com/express" } }, + "node_modules/typedarray-dts": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typedarray-dts/-/typedarray-dts-1.0.0.tgz", + "integrity": "sha512-Ka0DBegjuV9IPYFT1h0Qqk5U4pccebNIJCGl8C5uU7xtOs+jpJvKGAY4fHGK25hTmXZOEUl9Cnsg5cS6K/b5DA==", + "dev": true, + "license": "MIT" + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -26092,36 +26611,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/umzug": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.8.1.tgz", - "integrity": "sha512-k0HjOc3b/s8vH24BUTvnaFiKhfWI9UQAGpqHDG+3866CGlBTB83Xs5wZ1io1mwYLj/GHvQ34AxKhbpYnWtkRJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rushstack/ts-command-line": "^4.12.2", - "emittery": "^0.13.0", - "fast-glob": "^3.3.2", - "pony-cause": "^2.1.4", - "type-fest": "^4.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/umzug/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -26140,9 +26629,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.27.0.tgz", - "integrity": "sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==", + "version": "6.28.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.28.0.tgz", + "integrity": "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==", "dev": true, "license": "MIT", "engines": { @@ -26343,6 +26832,20 @@ "@unrs/resolver-binding-win32-x64-msvc": "1.12.2" } }, + "node_modules/upath2": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/upath2/-/upath2-3.1.25.tgz", + "integrity": "sha512-fPfgMpV+E3tcLMOdeJzQihp8D06q6Ro97gSdyMMNBoQg/w7LcLqf0+TiFvYdJzcxu02OMDM3nnTdl8EIFHfnBw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@lazy-node/types-path": "^1.0.3", + "@types/node": "*", + "path-is-network-drive": "^1.0.24", + "path-strip-sep": "^1.0.21", + "tslib": "^2.8.1" + } + }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -26815,6 +27318,7 @@ "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -26954,9 +27458,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.0.tgz", - "integrity": "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz", + "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==", "dev": true, "license": "MIT", "engines": { @@ -26968,7 +27472,8 @@ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.0.tgz", "integrity": "sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/which": { "version": "2.0.2", @@ -26987,17 +27492,16 @@ } }, "node_modules/which-pm": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz", - "integrity": "sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-4.0.0.tgz", + "integrity": "sha512-kLoLJ/y2o0GnU8ZNgI5/nlCbyjpUlqtaJQjMrzR2sKyQQ3BcJJ61oSOdZWIrfoScunyZS5w9U0wyFb0Bij9cyg==", "dev": true, "license": "MIT", "dependencies": { - "load-yaml-file": "^0.2.0", - "path-exists": "^4.0.0" + "load-yaml-file": "^1.0.0" }, "engines": { - "node": ">=8.15" + "node": ">=22.13" } }, "node_modules/why-is-node-running": { @@ -27183,9 +27687,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", - "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", + "version": "8.21.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.2.tgz", + "integrity": "sha512-54dMVAo4WIe6SKy3vBgN+9bJZqqQ8IMRevAkOLQALhi49qkkQDQfWdAZ8KQlXiEabw88ARXXdUrlvtbKQX+aKw==", "dev": true, "license": "MIT", "engines": { @@ -27390,9 +27894,9 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, "license": "MIT", "funding": { From a14e1a43a2d30ec7ceeac0c934edd3def407eabc Mon Sep 17 00:00:00 2001 From: Christoph Tupi Date: Tue, 18 Aug 2026 20:08:14 +0200 Subject: [PATCH 5/8] chore: correct type assignment --- admin/src/hooks/useCacheConfig.ts | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/admin/src/hooks/useCacheConfig.ts b/admin/src/hooks/useCacheConfig.ts index 39e8d03..51bd34d 100644 --- a/admin/src/hooks/useCacheConfig.ts +++ b/admin/src/hooks/useCacheConfig.ts @@ -24,7 +24,7 @@ export const useCacheConfig = (enabled: boolean = true) => { setError(null); try { - const { data } = await get('/strapi-cache/config'); + const { data } = await get('/strapi-cache/config'); setConfig(data); } catch (error: any) { setError(error); @@ -46,7 +46,7 @@ export const useCacheConfig = (enabled: boolean = true) => { setError(null); try { - const { data } = await get('/strapi-cache/config'); + const { data } = await get('/strapi-cache/config'); setConfig(data); } catch (error: any) { setError(error); diff --git a/package.json b/package.json index 254a2c9..b500f69 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "test:ts:back": "run -T tsc -p server/tsconfig.json", "test": "vitest run --exclude 'test/integration/**'", "benchmark": "vitest bench benchmark --run", - "test:integration": "npm run build && rm -rf playground/.cache playground/node_modules playground/.yalc && mkdir -p playground/.yalc/strapi-cache && cp -r dist package.json LICENSE README.md playground/.yalc/strapi-cache/ && node -e \"const fs=require('fs');const p='playground/.yalc/strapi-cache/package.json';const pkg=JSON.parse(fs.readFileSync(p,'utf8'));delete pkg.devDependencies;delete pkg.optionalDependencies;delete pkg.scripts;fs.writeFileSync(p,JSON.stringify(pkg,null,2));\" && cd playground && npm ci --ignore-scripts && npm rebuild better-sqlite3 @swc/core sharp --foreground-scripts && npm run build && cd .. && NODE_ENV=test jest --config jest.integration.config.js --runInBand --forceExit --detectOpenHandles", + "test:integration": "npm run build && rm -rf playground/.cache playground/node_modules playground/.yalc && mkdir -p playground/.yalc/strapi-cache && cp -r dist package.json LICENSE README.md playground/.yalc/strapi-cache/ && node -e \"const fs=require('fs');const p='playground/.yalc/strapi-cache/package.json';const pkg=JSON.parse(fs.readFileSync(p,'utf8'));delete pkg.devDependencies;delete pkg.optionalDependencies;delete pkg.scripts;fs.writeFileSync(p,JSON.stringify(pkg,null,2));\" && cd playground && npm ci --ignore-scripts && npm rebuild better-sqlite3 @swc/core sharp --foreground-scripts --ignore-scripts=false && npm run build && cd .. && npm rebuild better-sqlite3 --foreground-scripts --ignore-scripts=false && NODE_ENV=test jest --watchman=false --config jest.integration.config.js --runInBand --forceExit --detectOpenHandles", "test:all": "npm test -- --run && npm run test:integration" }, "dependencies": { From d5b1c6f400bc2021b68509dc3d9a0c52ae389304 Mon Sep 17 00:00:00 2001 From: Christoph Tupi Date: Tue, 18 Aug 2026 20:11:41 +0200 Subject: [PATCH 6/8] chore(release): 1.12.2-rc.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c8c2244..e04ebf9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "strapi-cache", - "version": "1.12.1", + "version": "1.12.2-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "strapi-cache", - "version": "1.12.1", + "version": "1.12.2-rc.1", "license": "MIT", "dependencies": { "@strapi/design-system": "2.2.1", diff --git a/package.json b/package.json index b500f69..2898376 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.12.1", + "version": "1.12.2-rc.1", "keywords": [ "strapi cache", "strapi rest cache", From 82457d56bed95f51dd986c371af0e7c76053bbc3 Mon Sep 17 00:00:00 2001 From: Christoph Tupi Date: Thu, 20 Aug 2026 19:34:55 +0200 Subject: [PATCH 7/8] chore: correct version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e04ebf9..c8c2244 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "strapi-cache", - "version": "1.12.2-rc.1", + "version": "1.12.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "strapi-cache", - "version": "1.12.2-rc.1", + "version": "1.12.1", "license": "MIT", "dependencies": { "@strapi/design-system": "2.2.1", diff --git a/package.json b/package.json index 2898376..b500f69 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.12.2-rc.1", + "version": "1.12.1", "keywords": [ "strapi cache", "strapi rest cache", From 2c5f622247b30093691b3e5bed2d094adb4202b2 Mon Sep 17 00:00:00 2001 From: Christoph Tupi Date: Thu, 20 Aug 2026 19:37:30 +0200 Subject: [PATCH 8/8] chore: npm audit fix --- package-lock.json | 279 +++++++++++++++++++++++++--------------------- 1 file changed, 150 insertions(+), 129 deletions(-) diff --git a/package-lock.json b/package-lock.json index c8c2244..1c3f4b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6216,9 +6216,9 @@ "license": "MIT" }, "node_modules/@strapi/admin": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/admin/-/admin-5.52.0.tgz", - "integrity": "sha512-RY+qnSo8pkPiIIRw1podl3gz5M3GvshdJsW7J2OL7W73EF1rnv4GYsrkZAGKibwmVlvW1Wm7v6dxx25MY1EzcA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/admin/-/admin-5.52.1.tgz", + "integrity": "sha512-biV3Zca0L3mYfqgmu+2LkwdSFahDXPVnzmEmWnfq6v6GnIoD4DfI4mLZt/BFL0pTIefL6swwSagcxoQGyJMl9g==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -6229,10 +6229,10 @@ "@reduxjs/toolkit": "1.9.7", "@strapi/design-system": "2.2.4", "@strapi/icons": "2.2.4", - "@strapi/permissions": "5.52.0", - "@strapi/types": "5.52.0", - "@strapi/typescript-utils": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/permissions": "5.52.1", + "@strapi/types": "5.52.1", + "@strapi/typescript-utils": "5.52.1", + "@strapi/utils": "5.52.1", "@testing-library/dom": "10.4.1", "@testing-library/react": "16.3.2", "@testing-library/user-event": "14.6.1", @@ -6662,13 +6662,13 @@ } }, "node_modules/@strapi/cloud-cli": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/cloud-cli/-/cloud-cli-5.52.0.tgz", - "integrity": "sha512-sJCUoNyi4ZHbooJLc4o0OABKZTA5Beh+AY/wTxh/t5Ybi6oQ4i7PKXKtJRr4XPyfUu9NhyRUI8yFtZnHoy7vqw==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/cloud-cli/-/cloud-cli-5.52.1.tgz", + "integrity": "sha512-hv/j20tooeeRGyWc0XFksG4DvcV5/7pf0Z23Yc7ZkHFm2OZrq76O49tmq1ovQCcOA1ZIaqglzQPpYPULu0Z+3w==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@strapi/utils": "5.52.0", + "@strapi/utils": "5.52.1", "axios": "1.19.0", "boxen": "5.1.2", "chalk": "4.1.2", @@ -6708,9 +6708,9 @@ } }, "node_modules/@strapi/content-manager": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/content-manager/-/content-manager-5.52.0.tgz", - "integrity": "sha512-lH4z6YDdioRXELTnd/u8b5BYNHNcUO36CUYW87FbtcRZUNOu8z0SoyrfN8E24kjm1vx7r+UYdJpjyPU5xSudGg==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/content-manager/-/content-manager-5.52.1.tgz", + "integrity": "sha512-7kFkUbPUJ7ia6KvpWA0KCJU1xnZBU2JcnsugnxCsXm2PTSHv933151AiwCX6BbVuLYF4hejoaYiYKJ3pJIB4KA==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -6723,8 +6723,8 @@ "@sindresorhus/slugify": "1.1.0", "@strapi/design-system": "2.2.4", "@strapi/icons": "2.2.4", - "@strapi/types": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/types": "5.52.1", + "@strapi/utils": "5.52.1", "codemirror5": "npm:codemirror@^5.65.11", "date-fns": "2.30.0", "dompurify": "3.4.13", @@ -7004,18 +7004,18 @@ } }, "node_modules/@strapi/content-releases": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/content-releases/-/content-releases-5.52.0.tgz", - "integrity": "sha512-6n3fHAIm+lNEdzaGNIS7TdZX3oHEhROfrmWfGZFfWt7cfs6l37zQeHYIXDrJIk9psbbw8rIHGidZ5YLn9ZO8Ig==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/content-releases/-/content-releases-5.52.1.tgz", + "integrity": "sha512-3AmoEbgPec+K198dbbDKtcQpNBskl6citoMiJB1EGv3r8GTC4C0NxSqGmZhbFd90bpD49zH7TYhzeJVn8/PDDQ==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@reduxjs/toolkit": "1.9.7", - "@strapi/database": "5.52.0", + "@strapi/database": "5.52.1", "@strapi/design-system": "2.2.4", "@strapi/icons": "2.2.4", - "@strapi/types": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/types": "5.52.1", + "@strapi/utils": "5.52.1", "date-fns": "2.30.0", "date-fns-tz": "2.0.1", "formik": "2.4.9", @@ -7272,9 +7272,9 @@ } }, "node_modules/@strapi/content-type-builder": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/content-type-builder/-/content-type-builder-5.52.0.tgz", - "integrity": "sha512-hKfAP865X45k+EjvaIoc9fFEogu5aLcgThRsfXjwt4c8OXUsWiUNyt/F8nr6WEpDPfmGGigBJ557ScoZdIvqtw==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/content-type-builder/-/content-type-builder-5.52.1.tgz", + "integrity": "sha512-zwC9laBmlaUKntEdl6Pg4sdZ46cUfpndJfhbQEiZUY0jFxsGqpS+C2xAfSXC5NQ6IUSDW9fHGnRBe+Q8ux/rNg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -7286,9 +7286,9 @@ "@reduxjs/toolkit": "1.9.7", "@sindresorhus/slugify": "1.1.0", "@strapi/design-system": "2.2.4", - "@strapi/generators": "5.52.0", + "@strapi/generators": "5.52.1", "@strapi/icons": "2.2.4", - "@strapi/utils": "5.52.0", + "@strapi/utils": "5.52.1", "ai": "5.0.210", "date-fns": "2.30.0", "fs-extra": "11.3.4", @@ -7551,9 +7551,9 @@ } }, "node_modules/@strapi/core": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/core/-/core-5.52.0.tgz", - "integrity": "sha512-fzk7yqKhwBUkzqQ3UxJjJQXb2XBnpB/lSJfyqwmXjMSQJAg1gC3mrD2sByRWbq7/NjZHAYmiL9lcdUUW7orEFw==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/core/-/core-5.52.1.tgz", + "integrity": "sha512-QGiSTamFYzaR9jY3vYLmrRU6U3TztumXoJMYW7GorsH5WU3pRXYHqcbcafH9ZfX0QBDmZFcmNavcdUGOvbKoJw==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -7562,15 +7562,15 @@ "@koa/router": "12.0.2", "@modelcontextprotocol/sdk": "1.30.0", "@paralleldrive/cuid2": "2.2.2", - "@strapi/admin": "5.52.0", - "@strapi/database": "5.52.0", - "@strapi/generators": "5.52.0", - "@strapi/logger": "5.52.0", - "@strapi/openapi": "5.52.0", - "@strapi/permissions": "5.52.0", - "@strapi/types": "5.52.0", - "@strapi/typescript-utils": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/admin": "5.52.1", + "@strapi/database": "5.52.1", + "@strapi/generators": "5.52.1", + "@strapi/logger": "5.52.1", + "@strapi/openapi": "5.52.1", + "@strapi/permissions": "5.52.1", + "@strapi/types": "5.52.1", + "@strapi/typescript-utils": "5.52.1", + "@strapi/utils": "5.52.1", "@vercel/stega": "0.1.2", "bcryptjs": "2.4.3", "boxen": "5.1.2", @@ -7722,15 +7722,15 @@ } }, "node_modules/@strapi/data-transfer": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/data-transfer/-/data-transfer-5.52.0.tgz", - "integrity": "sha512-IsSw0e3T/E/pSe0stMkM1ttmkMaMcANIGDcGOv88UPy5pq1l4haYG2c6bKZY29gE954MsrhGA3l9a4NaNy3M0A==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/data-transfer/-/data-transfer-5.52.1.tgz", + "integrity": "sha512-XmwJxylmiizhtb0Jk5YQa2kCV6klpWg8wgLms/lhccsniR2IA7iGATsarFAQGbxfcl39aNkyVPpH2IZIisFatg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@strapi/logger": "5.52.0", - "@strapi/types": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/logger": "5.52.1", + "@strapi/types": "5.52.1", + "@strapi/utils": "5.52.1", "chalk": "4.1.2", "cli-table3": "0.6.5", "commander": "8.3.0", @@ -7763,14 +7763,14 @@ } }, "node_modules/@strapi/database": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/database/-/database-5.52.0.tgz", - "integrity": "sha512-7QaqZe4pbpELdekBNic0B1xexkfvOiXohDUnGnTNX7DaJZx7N8bQ6RCxN7znlUlDyiaE9bcaeNFYspBcOoHRiA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/database/-/database-5.52.1.tgz", + "integrity": "sha512-mknnMwQV47DWTIP9+WGK4R3g0t4vOJ/fEwB4FpUrayAapTGdnZP9H0/nsssz+AM2EhzSVrY0bF8LUKNlnA4fCw==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@paralleldrive/cuid2": "2.2.2", - "@strapi/utils": "5.52.0", + "@strapi/utils": "5.52.1", "ajv": "8.20.0", "date-fns": "2.30.0", "debug": "4.3.4", @@ -7824,16 +7824,16 @@ } }, "node_modules/@strapi/email": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/email/-/email-5.52.0.tgz", - "integrity": "sha512-/MWdD6Qljoz5nNs0/xr0oVKwqqt5/n4zNBGwmNIf4Bx0JlSxNWmCZdaUZzLS0m/8WidedQ1HYbEzC1w/5+IDew==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/email/-/email-5.52.1.tgz", + "integrity": "sha512-VxXp0APA/qLCU3YCTo0oQRrpkv0L//ZToAkBUrHg/+QZii1ICo9qj5r8m7x/cUVUL+5KoBWSrwjG57oCFnDTUg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@strapi/design-system": "2.2.4", "@strapi/icons": "2.2.4", - "@strapi/provider-email-sendmail": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/provider-email-sendmail": "5.52.1", + "@strapi/utils": "5.52.1", "koa2-ratelimit": "^1.1.3", "lodash": "4.18.1", "react-intl": "6.6.2", @@ -8088,15 +8088,15 @@ } }, "node_modules/@strapi/generators": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/generators/-/generators-5.52.0.tgz", - "integrity": "sha512-hjm+bcv8x73EXns/Ex9GOw97Nt21doBYNookSoSAemcTKHLyyO2aF19CrNOJMbB2Q2CS3T62xO0cDUvrIh2Vwg==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/generators/-/generators-5.52.1.tgz", + "integrity": "sha512-0r3MwArmWlGPARwnJKA9MdGrEKXealjb8zLN7UIfyW38gzeKAsEIYIAv9kjNtiNleS2CnsQk3OUlhV+vqkb+6A==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sindresorhus/slugify": "1.1.0", - "@strapi/typescript-utils": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/typescript-utils": "5.52.1", + "@strapi/utils": "5.52.1", "chalk": "4.1.2", "fs-extra": "11.3.4", "handlebars": "4.7.9", @@ -8111,16 +8111,16 @@ } }, "node_modules/@strapi/i18n": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/i18n/-/i18n-5.52.0.tgz", - "integrity": "sha512-N8TcX+XaURBKkbhJL4WwB6ILb41nU8nCrBE9It1GgGdTZTI3kk2agolqyyZN2V4RxRXOvfqg75v1Uult2i4bkA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/i18n/-/i18n-5.52.1.tgz", + "integrity": "sha512-rm50RKXwtPv/9Yb6wQAQ1LK5Rj0EuH3UqPZsyS1RyVrYA8sFnL8kKn7LY37ISJVcq/heJrW8Q7BNBfoQabbu8g==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@reduxjs/toolkit": "1.9.7", "@strapi/design-system": "2.2.4", "@strapi/icons": "2.2.4", - "@strapi/utils": "5.52.0", + "@strapi/utils": "5.52.1", "lodash": "4.18.1", "qs": "6.15.3", "react-intl": "6.6.2", @@ -8386,9 +8386,9 @@ } }, "node_modules/@strapi/logger": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/logger/-/logger-5.52.0.tgz", - "integrity": "sha512-aGIeEjNKJEIcsHrqteIuZQjNXqh37lOGzxnz7Yvw2xt7xHsKYbhHWo1LFikPxOvL8dJd7PiRSexxJ2d98r/CEg==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/logger/-/logger-5.52.1.tgz", + "integrity": "sha512-E4e6ftWbHje8SUIAz7ylBj7sowDCcGOGJWmPXB0nS7coGg35mBCuElsbtFGyTY15BJOgtXyln8vXExvHCsJHlA==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -8401,9 +8401,9 @@ } }, "node_modules/@strapi/openapi": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/openapi/-/openapi-5.52.0.tgz", - "integrity": "sha512-EAK+glXfQzhA61FkkGiq5Xnwk2OdnUBqG/gRdBRE44YTuwcD/Ffo8jKPhZTND43IRMHmgGVldBFVfsHL+LSlxA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/openapi/-/openapi-5.52.1.tgz", + "integrity": "sha512-OI8Mcbq/hLZ9thkcQVuLeQ6ToEZt0tgxR6R9UeWG+G2B+dkfNjZDc9cIbsfqKOk02xtvaJye7ShyQQWWcancJw==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -8490,14 +8490,14 @@ } }, "node_modules/@strapi/permissions": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/permissions/-/permissions-5.52.0.tgz", - "integrity": "sha512-Co5O4gGXbcLMw4Rs6NK9+l8vUdo45eYEgJRRIX8bM/MZMep0hhMNEO3vjyl06gbQP+urE8Nbh3InCY1d9UfGQQ==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/permissions/-/permissions-5.52.1.tgz", + "integrity": "sha512-60w8IoTNs1A4fBezM8ONmf1b+TJLIxD9a62Hb3l04ARmjda7MuK6w6ynlWnLPKKpC/eQG0ek3HpCoG/2HyFgTw==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@casl/ability": "6.7.5", - "@strapi/utils": "5.52.0", + "@strapi/utils": "5.52.1", "lodash": "4.18.1", "qs": "6.15.3", "sift": "16.0.1" @@ -8508,9 +8508,9 @@ } }, "node_modules/@strapi/provider-email-sendmail": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/provider-email-sendmail/-/provider-email-sendmail-5.52.0.tgz", - "integrity": "sha512-V/E5rIy15iktPPo/DwEGct4jrscEr8YYTv/MAqXsWWS5wNzHA3t/ukfcxmHMONwHTJ691GjcNhXEESwyyXCYPA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/provider-email-sendmail/-/provider-email-sendmail-5.52.1.tgz", + "integrity": "sha512-KcxGvGahbZYlOhhmnWLEoXlwbIe7PrFr8bERmPULOWTc46SXue9NrKpnto1N6dQn3duV1nbBxNc5lTWB9jRjzg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -8522,13 +8522,13 @@ } }, "node_modules/@strapi/provider-upload-local": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/provider-upload-local/-/provider-upload-local-5.52.0.tgz", - "integrity": "sha512-icFPsxzN7/YIygJV0l5i5AgzcIK3aEQ6xbcoxXlGg2xuku457zID+6I40s0sNmPFlq0JnlhUKR+sFt8Tr7vJ7A==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/provider-upload-local/-/provider-upload-local-5.52.1.tgz", + "integrity": "sha512-p1bxq5opmSCChz6zi/MbV99kSSc9k/k4kfrrIO9ig6rBLcLWHAIGpDh5nohQVrRiPQuK89fSwE8HHI8DoZ+qlw==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@strapi/utils": "5.52.0", + "@strapi/utils": "5.52.1", "fs-extra": "11.3.4" }, "engines": { @@ -8537,16 +8537,16 @@ } }, "node_modules/@strapi/review-workflows": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/review-workflows/-/review-workflows-5.52.0.tgz", - "integrity": "sha512-AbKctXBbjaaf/8rbfbNeHxai37TLJIjcQDRqhUgU0JlnFPNzq02x9WJS5YaW4k+gI1EMMQQFjuS3Q1bW5LQkDQ==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/review-workflows/-/review-workflows-5.52.1.tgz", + "integrity": "sha512-d2YOGRcbNkynq6FISGyNu4m7VbNuikwt3AKxt0CwtlEKg9rsleUFhLV67J9kYvstd698V2Wd6StLfKeV8S0bHw==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@reduxjs/toolkit": "1.9.7", "@strapi/design-system": "2.2.4", "@strapi/icons": "2.2.4", - "@strapi/utils": "5.52.0", + "@strapi/utils": "5.52.1", "date-fns": "2.30.0", "fractional-indexing": "3.2.0", "koa": "2.16.4", @@ -8869,32 +8869,32 @@ } }, "node_modules/@strapi/strapi": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/strapi/-/strapi-5.52.0.tgz", - "integrity": "sha512-6nYMKuIVGgzsWRbHeImxbclsA+dX1GkDS2IFH+i9JD60SQZCw7ZNZvIJkOOW0xXuoBU+sI4sUYAp+NKx+YnkDQ==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/strapi/-/strapi-5.52.1.tgz", + "integrity": "sha512-GKOFGodBwD+7IiUrQTYmBU1Xaw0BM/vu/Tc6HUwviPNX+FGE8JBd7uoeND08Cqln60nwdxmQPVeeJQOl3bLHlw==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@pmmmwh/react-refresh-webpack-plugin": "0.5.17", - "@strapi/admin": "5.52.0", - "@strapi/cloud-cli": "5.52.0", - "@strapi/content-manager": "5.52.0", - "@strapi/content-releases": "5.52.0", - "@strapi/content-type-builder": "5.52.0", - "@strapi/core": "5.52.0", - "@strapi/data-transfer": "5.52.0", - "@strapi/database": "5.52.0", - "@strapi/email": "5.52.0", - "@strapi/generators": "5.52.0", - "@strapi/i18n": "5.52.0", - "@strapi/logger": "5.52.0", - "@strapi/openapi": "5.52.0", - "@strapi/permissions": "5.52.0", - "@strapi/review-workflows": "5.52.0", - "@strapi/types": "5.52.0", - "@strapi/typescript-utils": "5.52.0", - "@strapi/upload": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/admin": "5.52.1", + "@strapi/cloud-cli": "5.52.1", + "@strapi/content-manager": "5.52.1", + "@strapi/content-releases": "5.52.1", + "@strapi/content-type-builder": "5.52.1", + "@strapi/core": "5.52.1", + "@strapi/data-transfer": "5.52.1", + "@strapi/database": "5.52.1", + "@strapi/email": "5.52.1", + "@strapi/generators": "5.52.1", + "@strapi/i18n": "5.52.1", + "@strapi/logger": "5.52.1", + "@strapi/openapi": "5.52.1", + "@strapi/permissions": "5.52.1", + "@strapi/review-workflows": "5.52.1", + "@strapi/types": "5.52.1", + "@strapi/typescript-utils": "5.52.1", + "@strapi/upload": "5.52.1", + "@strapi/utils": "5.52.1", "@types/nodemon": "1.19.6", "@vitejs/plugin-react-swc": "3.11.0", "boxen": "5.1.2", @@ -9310,9 +9310,9 @@ } }, "node_modules/@strapi/types": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/types/-/types-5.52.0.tgz", - "integrity": "sha512-G0Ep2KS7s1lHXSq/sKHqGtUboiQ9QdecYrHAyUBW7Be1tJusT7SOZA1GHchOoDi94vOoX5JHz5oEacMCUII20w==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/types/-/types-5.52.1.tgz", + "integrity": "sha512-bAfzovdj/uiWrYba/x3IMj3BS6H5T/l/+TLxNaQnd4oFb0i5o0zjb8IRglQF6t2n41mv2j4EhbBhx25pJaj/ww==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -9320,10 +9320,10 @@ "@koa/cors": "5.0.0", "@koa/router": "12.0.2", "@modelcontextprotocol/sdk": "1.30.0", - "@strapi/database": "5.52.0", - "@strapi/logger": "5.52.0", - "@strapi/permissions": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/database": "5.52.1", + "@strapi/logger": "5.52.1", + "@strapi/permissions": "5.52.1", + "@strapi/utils": "5.52.1", "commander": "8.3.0", "json-logic-js": "2.0.5", "koa": "2.16.4", @@ -9350,9 +9350,9 @@ } }, "node_modules/@strapi/typescript-utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/typescript-utils/-/typescript-utils-5.52.0.tgz", - "integrity": "sha512-M35tknHNa1Ox7fgAuLEiQ6jdj0UONEAvzms1z/q71IIqQS7gL+R1SbGB9SHH6bW5emO0TbTkWsyGh8gRdXCYvA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/typescript-utils/-/typescript-utils-5.52.1.tgz", + "integrity": "sha512-IbhU0jIXfhFO4kKbKsCWugb3rp/2uIFEBEX7Y//reWk9r4aFWPW4XC3jNbI4n4ebMtrBusyh3D+EAUKbkuavWg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -9430,9 +9430,9 @@ } }, "node_modules/@strapi/upload": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/upload/-/upload-5.52.0.tgz", - "integrity": "sha512-T8sd8fW3Ogu/N2xeEn9KqKRYxsIISm40ZVwyqc2vgZ0dyrr5wWAwmUY/TzeFYVEq2ZrrFmQl8GZj4X3cy7VeNw==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/upload/-/upload-5.52.1.tgz", + "integrity": "sha512-3ygEN9DmxDVNfVpnAGGhu6Apgsvv15Vhbw+ZFkYC7TEQJlh9qi12oZkttZO8KEKfASmtjCTWOOMVfJhDyGKL0g==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -9441,11 +9441,11 @@ "@radix-ui/react-dialog": "1.0.5", "@radix-ui/react-toggle-group": "1.1.11", "@reduxjs/toolkit": "1.9.7", - "@strapi/database": "5.52.0", + "@strapi/database": "5.52.1", "@strapi/design-system": "2.2.4", "@strapi/icons": "2.2.4", - "@strapi/provider-upload-local": "5.52.0", - "@strapi/utils": "5.52.0", + "@strapi/provider-upload-local": "5.52.1", + "@strapi/utils": "5.52.1", "byte-size": "8.1.1", "cropperjs": "1.6.2", "date-fns": "2.30.0", @@ -9714,9 +9714,9 @@ } }, "node_modules/@strapi/utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@strapi/utils/-/utils-5.52.0.tgz", - "integrity": "sha512-jDnsoZUPMcFs9PRgVdCsK5RPGwYn56bX2h0d/1wqbusUHUr9CqseqoxXbGcLFD4WZ9zsEYdyRiWlpAAxAyt/HQ==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@strapi/utils/-/utils-5.52.1.tgz", + "integrity": "sha512-bx4c0PHJgSEfOKOj5Wgl+/5cSs0DEwdm3JsDLyZnDAzTjrINlWR6lrrZyYn1HFiv55BYccD7+EoWX8eIpkSe/g==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -21524,13 +21524,34 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz", + "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==", "dev": true, "license": "MIT", + "dependencies": { + "content-type": "^2.1.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/negotiator/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/neo-async": {