diff --git a/.changeset/twenty-baboons-double.md b/.changeset/twenty-baboons-double.md new file mode 100644 index 00000000..44e96555 --- /dev/null +++ b/.changeset/twenty-baboons-double.md @@ -0,0 +1,5 @@ +--- +'@spotlightjs/spotlight': minor +--- + +Add Sentry SDK for monitoring diff --git a/packages/overlay/package.json b/packages/overlay/package.json index 2a78edec..f639cb8b 100644 --- a/packages/overlay/package.json +++ b/packages/overlay/package.json @@ -29,6 +29,7 @@ "devDependencies": { "@fontsource/raleway": "^5.1.0", "@microlink/react-json-view": "^1.23.4", + "@sentry/react": "^8.43.0", "@sentry/types": "^8.33.1", "@sentry/utils": "^8.33.1", "@spotlightjs/sidecar": "workspace:*", diff --git a/packages/overlay/src/index.tsx b/packages/overlay/src/index.tsx index a666a4f3..53e63b7d 100644 --- a/packages/overlay/src/index.tsx +++ b/packages/overlay/src/index.tsx @@ -15,9 +15,10 @@ import { default as sentry } from './integrations/sentry/index'; import { off, on, trigger } from './lib/eventTarget'; import { activateLogger, log } from './lib/logger'; import { SpotlightContextProvider } from './lib/useSpotlightContext'; -import { React, ReactDOM } from './react-instance'; // Import specific exports +import { React, ReactDOM } from './react-instance'; import type { SpotlightOverlayOptions, WindowWithSpotlight } from './types'; import { removeURLSuffix } from './utils/removeURLSuffix'; +import initSentry from './utils/instrumentation'; export { default as console } from './integrations/console/index'; export { default as hydrationError } from './integrations/hydration-error/index'; @@ -137,7 +138,7 @@ export async function init(options: SpotlightOverlayOptions = {}) { const finalExperiments = { ...DEFAULT_EXPERIMENTS, ...experiments }; // Sentry is enabled by default - const defaultIntegrations = () => [sentry()]; + const defaultIntegrations = () => [sentry({ injectIntoSDK: !isLoadedFromSidecar })]; const context: SpotlightContext = { open: openSpotlight, @@ -185,6 +186,11 @@ export async function init(options: SpotlightOverlayOptions = {}) { const initialTab = startFrom || (tabs.length ? `/${tabs[0].id}` : '/no-tabs'); log('Starting from', initialTab); + // TODO: Shall we enable this for other cases too such as when we use it through Django SDK? + if (isLoadedFromSidecar) { + initSentry(initialTab, { debug }); + } + ReactDOM.createRoot(appRoot).render( // diff --git a/packages/overlay/src/react-instance.tsx b/packages/overlay/src/react-instance.tsx index 32e7cb96..8610ef15 100644 --- a/packages/overlay/src/react-instance.tsx +++ b/packages/overlay/src/react-instance.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; -export { React, ReactDOM }; +export { React, ReactDOM, useEffect }; diff --git a/packages/overlay/src/utils/instrumentation.ts b/packages/overlay/src/utils/instrumentation.ts new file mode 100644 index 00000000..2ec6d4c0 --- /dev/null +++ b/packages/overlay/src/utils/instrumentation.ts @@ -0,0 +1,62 @@ +import * as Sentry from '@sentry/react'; +import { createRoutesFromChildren, matchRoutes, useLocation, useNavigationType } from 'react-router-dom'; +import { useEffect } from '../react-instance'; + +export default function initSentry(initialTab: string, options: Sentry.BrowserOptions = {}) { + const sentryTraceParent: Record = {}; + const navTiming = performance.getEntriesByType('navigation'); + if (navTiming.length > 0) { + const serverTiming = (navTiming[0] as PerformanceNavigationTiming).serverTiming; + if (serverTiming && serverTiming.length > 0) { + for (const { name, description } of serverTiming) { + if (name === 'sentryTrace' || name === 'baggage') { + sentryTraceParent[name] = description; + } + } + } + } + const hasTraceParent = Object.keys(sentryTraceParent).length === 2; + const integrations = [ + // See docs for support of different versions of variation of react router + // https://docs.sentry.io/platforms/javascript/guides/react/configuration/integrations/react-router/ + Sentry.reactRouterV6BrowserTracingIntegration({ + instrumentPageLoad: !hasTraceParent, + useEffect, + useLocation, + useNavigationType, + createRoutesFromChildren, + matchRoutes, + }), + Sentry.replayIntegration(), + ]; + const hash = document.location.hash.slice(1); + if (hash.startsWith('spotlight')) { + const splitterPos = hash.indexOf('='); + const sidecarUrl = splitterPos > -1 ? decodeURIComponent(hash.slice(splitterPos + 1)) : undefined; + integrations.push(Sentry.spotlightBrowserIntegration({ sidecarUrl })); + } + + const sentryClient = Sentry.init({ + transport: Sentry.makeBrowserOfflineTransport(Sentry.makeFetchTransport), + dsn: 'https://51bcd92dba1128934afd1c5726c84442@o1.ingest.us.sentry.io/4508404727283713', + environment: process.env.NODE_ENV || 'development', + release: process.env.npm_package_version, + + integrations, + + tracesSampleRate: 1, + tracePropagationTargets: [/^\//, document.location.origin], + + // Capture Replay for 1% of all sessions, + // plus for 100% of sessions with an error + // Learn more at + // https://docs.sentry.io/platforms/javascript/session-replay/configuration/#general-integration-configuration + replaysSessionSampleRate: 0.01, + replaysOnErrorSampleRate: 1.0, + ...options, + }); + + if (hasTraceParent && sentryClient) { + Sentry.startBrowserTracingPageLoadSpan(sentryClient, { name: initialTab }, sentryTraceParent); + } +} diff --git a/packages/overlay/vite.config.ts b/packages/overlay/vite.config.ts index c687582c..00e538e0 100644 --- a/packages/overlay/vite.config.ts +++ b/packages/overlay/vite.config.ts @@ -35,7 +35,8 @@ export default defineConfig({ removeReactDevToolsMessagePlugin(), ], define: { - 'process.env.NODE_ENV': "'production'", + 'process.env.NODE_ENV': '"production"', + 'process.env.npm_package_version': JSON.stringify(process.env.npm_package_version), }, resolve: { alias: { diff --git a/packages/sidecar/package.json b/packages/sidecar/package.json index de2de1a6..681731dd 100644 --- a/packages/sidecar/package.json +++ b/packages/sidecar/package.json @@ -35,6 +35,7 @@ } }, "dependencies": { + "@sentry/node": "^8.42.0", "kleur": "^4.1.5", "launch-editor": "^2.9.1", "source-map": "^0.7.4" diff --git a/packages/sidecar/src/main.ts b/packages/sidecar/src/main.ts index 9e31a496..b94e84a7 100644 --- a/packages/sidecar/src/main.ts +++ b/packages/sidecar/src/main.ts @@ -1,3 +1,4 @@ +import { captureException, getTraceData, startSpan } from '@sentry/node'; import launchEditor from 'launch-editor'; import { createWriteStream, readFileSync } from 'node:fs'; import { createServer, get, type IncomingMessage, type Server, type ServerResponse } from 'node:http'; @@ -53,47 +54,44 @@ type RequestHandler = ( searchParams?: URLSearchParams, ) => void; -function getCorsHeader(): { [name: string]: string } { - return { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Credentials': 'true', - 'Access-Control-Allow-Headers': '*', - 'Access-Control-Allow-Methods': 'GET,POST,PUT,OPTIONS,DELETE,PATCH', - }; -} - -function enableCORS(handler: RequestHandler): RequestHandler { - return function corsMiddleware( - req: IncomingMessage, - res: ServerResponse, - pathname?: string, - searchParams?: URLSearchParams, - ) { - const headers = { - ...getCorsHeader(), - ...getSpotlightHeader(), - }; - for (const [header, value] of Object.entries(headers)) { - res.setHeader(header, value); - } - if (req.method === 'OPTIONS') { - res.writeHead(204, { - 'Cache-Control': 'no-cache', - }); - res.end(); - return; - } - return handler(req, res, pathname, searchParams); - }; -} - -function getSpotlightHeader() { - return { - 'X-Powered-by': SERVER_IDENTIFIER, - }; -} - -function streamRequestHandler(buffer: MessageBuffer, incomingPayload?: IncomingPayloadCallback) { +const withTracing = + (fn: CallableFunction, spanArgs = {}) => + (...args: unknown[]) => + startSpan({ name: fn.name, ...spanArgs }, () => fn(...args)); + +const CORS_HEADERS = { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Credentials': 'true', + 'Access-Control-Allow-Headers': '*', + 'Access-Control-Allow-Methods': 'GET,POST,PUT,OPTIONS,DELETE,PATCH', +} as const; + +const SPOTLIGHT_HEADERS = { + 'X-Powered-by': SERVER_IDENTIFIER, +} as const; + +const enableCORS = (handler: RequestHandler): RequestHandler => + withTracing( + (req: IncomingMessage, res: ServerResponse, pathname?: string, searchParams?: URLSearchParams) => { + const headers = { + ...CORS_HEADERS, + ...SPOTLIGHT_HEADERS, + }; + for (const [header, value] of Object.entries(headers)) { + res.setHeader(header, value); + } + if (req.method === 'OPTIONS') { + res.writeHead(204, { + 'Cache-Control': 'no-cache', + }); + res.end(); + return; + } + return handler(req, res, pathname, searchParams); + }, + { name: 'enableCORS', op: 'sidecar.http.middleware.cors' }, + ); +const streamRequestHandler = (buffer: MessageBuffer, incomingPayload?: IncomingPayloadCallback) => { return function handleStreamRequest( req: IncomingMessage, res: ServerResponse, @@ -132,7 +130,7 @@ function streamRequestHandler(buffer: MessageBuffer, incomingPayload?: }); } else if (req.method === 'POST') { logger.debug(`📩 Received event`); - let body: string = ''; + let body = ''; let stream = req; // Check for gzip or deflate encoding and create appropriate stream @@ -189,9 +187,9 @@ function streamRequestHandler(buffer: MessageBuffer, incomingPayload?: return; } }; -} +}; -function fileServer(filesToServe: Record) { +const fileServer = (filesToServe: Record) => { return function serveFile(req: IncomingMessage, res: ServerResponse, pathname?: string): void { let filePath = `${pathname || req.url}`; if (filePath === '/') { @@ -213,20 +211,20 @@ function fileServer(filesToServe: Record) { break; } - if (!Object.prototype.hasOwnProperty.call(filesToServe, filePath)) { + if (!Object.hasOwn(filesToServe, filePath)) { error404(req, res); } else { res.writeHead(200, { 'Content-Type': contentType }); res.end(filesToServe[filePath]); } }; -} +}; function handleHealthRequest(_req: IncomingMessage, res: ServerResponse): void { res.writeHead(200, { 'Content-Type': 'text/plain', - ...getCorsHeader(), - ...getSpotlightHeader(), + ...CORS_HEADERS, + ...SPOTLIGHT_HEADERS, }); res.end('OK'); } @@ -276,10 +274,13 @@ function openRequestHandler(basePath: string = process.cwd()) { } function errorResponse(code: number) { - return (_req: IncomingMessage, res: ServerResponse) => { - res.writeHead(code); - res.end(); - }; + return withTracing( + (_req: IncomingMessage, res: ServerResponse) => { + res.writeHead(code); + res.end(); + }, + { name: `HTTP ${code}`, op: `sidecar.http.error.${code}`, attributes: { 'http.response.status_code': code } }, + ); } const error404 = errorResponse(404); @@ -313,12 +314,36 @@ function startServer( return error404(req, res); } - const { pathname, searchParams } = new URL(url, `http://${req.headers.host || 'localhost'}`); + const host = req.headers.host || 'localhost'; + const { pathname, searchParams } = new URL(url, `http://${host}`); const route = ROUTES.find(route => route[0].test(pathname)); if (!route) { return error404(req, res); } - return route[1](req, res, pathname, searchParams); + return startSpan( + { + name: `HTTP ${req.method} ${pathname}`, + op: `sidecar.http.${req.method?.toLowerCase()}`, + forceTransaction: true, + attributes: { + 'http.request.method': req.method, + 'http.request.url': url, + 'http.request.query': searchParams.toString(), + 'server.address': host, + 'server.port': req.socket.localPort, + }, + }, + span => { + const traceData = getTraceData(); + res.appendHeader( + 'server-timing', + `sentryTrace;desc="${traceData['sentry-trace']}", baggage;desc="${traceData.baggage}"`, + ); + const result = route[1](req, res, pathname, searchParams); + span.setAttribute('http.response.status_code', res.statusCode); + return result; + }, + ); }); server.on('error', handleServerError); @@ -337,6 +362,8 @@ function startServer( server.listen(port); logger.info(`Port ${port} in use, retrying...`); }, 5000); + } else { + captureException(e); } } @@ -351,39 +378,45 @@ function startServer( let serverInstance: Server; const buffer: MessageBuffer = new MessageBuffer(); -const isValidPort = (value: string | number) => { - if (typeof value === 'string') { - const portNumber = Number(value); - return /^\d+$/.test(value) && portNumber > 0 && portNumber <= 65535; - } - return value > 0 && value <= 65535; -}; - -function isSidecarRunning(port: string | number | undefined) { - return new Promise(resolve => { - const options = { - hostname: 'localhost', - port: port, - path: '/health', - method: 'GET', - timeout: 2000, - headers: { Connection: 'close' }, - }; - - const healthReq = get(options, res => { - const serverIdentifier = res.headers['x-powered-by']; - if (serverIdentifier === 'spotlight-by-sentry') { - resolve(true); - } else { +const isValidPort = withTracing( + (value: string | number) => { + if (typeof value === 'string') { + const portNumber = Number(value); + return /^\d+$/.test(value) && portNumber > 0 && portNumber <= 65535; + } + return value > 0 && value <= 65535; + }, + { name: 'isValidPort', op: 'sidecar.server.portCheck' }, +); + +const isSidecarRunning = withTracing( + (port: string | number | undefined) => { + return new Promise(resolve => { + const options = { + hostname: 'localhost', + port: port, + path: '/health', + method: 'GET', + timeout: 2000, + headers: { Connection: 'close' }, + }; + + const healthReq = get(options, res => { + const serverIdentifier = res.headers['x-powered-by']; + if (serverIdentifier === 'spotlight-by-sentry') { + resolve(true); + } else { + resolve(false); + } + }); + healthReq.on('error', () => { resolve(false); - } - }); - healthReq.on('error', () => { - resolve(false); + }); + healthReq.end(); }); - healthReq.end(); - }); -} + }, + { name: 'isSidecarRunning', op: 'sidecar.server.collideCheck' }, +); export function setupSidecar({ port, @@ -409,13 +442,12 @@ export function setupSidecar({ } else if (port) { sidecarPort = typeof port === 'string' ? Number(port) : port; } - isSidecarRunning(sidecarPort).then(isRunning => { + + isSidecarRunning(sidecarPort).then((isRunning: boolean) => { if (isRunning) { logger.info(`Sidecar is already running on port ${sidecarPort}`); - } else { - if (!serverInstance) { - serverInstance = startServer(buffer, sidecarPort, basePath, filesToServe, incomingPayload); - } + } else if (!serverInstance) { + serverInstance = startServer(buffer, sidecarPort, basePath, filesToServe, incomingPayload); } }); } @@ -425,7 +457,7 @@ export function clearBuffer(): void { } let forceShutdown = false; -export function shutdown() { +export const shutdown = () => { if (forceShutdown || !serverInstance) { logger.info('Bye.'); process.exit(0); @@ -436,7 +468,7 @@ export function shutdown() { serverInstance.close(); serverInstance.closeAllConnections(); } -} +}; process.on('SIGINT', shutdown); process.on('SIGTERM', shutdown); diff --git a/packages/sidecar/tsconfig.json b/packages/sidecar/tsconfig.json index 3f598a80..60b1d60c 100644 --- a/packages/sidecar/tsconfig.json +++ b/packages/sidecar/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "@spotlightjs/tsconfig/tsconfig.json", "compilerOptions": { + "lib": ["ES2023"], "baseUrl": ".", "paths": { "~/*": ["src/*"] diff --git a/packages/spotlight/bin/instrument.js b/packages/spotlight/bin/instrument.js new file mode 100644 index 00000000..38f0d2ab --- /dev/null +++ b/packages/spotlight/bin/instrument.js @@ -0,0 +1,38 @@ +import { init } from '@sentry/node'; + +init({ + dsn: 'https://51bcd92dba1128934afd1c5726c84442@o1.ingest.us.sentry.io/4508404727283713', + environment: process.env.NODE_ENV || 'development', + release: process.env.npm_package_version, + debug: Boolean(process.env.SENTRY_DEBUG), + + tracesSampleRate: 1, + + beforeSendTransaction: event => { + event.server_name = undefined; // Server name might contain PII + return event; + }, + + beforeSend: event => { + const exceptions = event.exception?.values; + if (!exceptions) { + return event; + } + for (const exception of exceptions) { + if (!exception.stacktrace) { + continue; + } + + for (const frame of exception.stacktrace.frames) { + if (!frame.filename) { + continue; + } + + frame.filename = frame.filename?.replace(process.env.HOME, '~'); + } + } + + event.server_name = undefined; // Server name might contain PII + return event; + }, +}); diff --git a/packages/spotlight/bin/run.js b/packages/spotlight/bin/run.js index 5f8ff2f9..3e0da20f 100755 --- a/packages/spotlight/bin/run.js +++ b/packages/spotlight/bin/run.js @@ -1,10 +1,12 @@ #!/usr/bin/env node +import { setContext, startSpan } from '@sentry/node'; import { setupSidecar } from '@spotlightjs/sidecar'; -import { inflateRawSync } from 'node:zlib'; import { readFileSync } from 'node:fs'; +import Module from 'node:module'; import { join } from 'node:path'; import { fileURLToPath } from 'node:url'; -import Module from 'node:module'; +import { inflateRawSync } from 'node:zlib'; +import './instrument.js'; const require = Module.createRequire(import.meta.url); let sea = null; try { @@ -15,75 +17,102 @@ try { sea = { isSea: () => false }; } -const readAsset = sea.isSea() - ? name => Buffer.from(sea.getRawAsset(name)) - : (() => { - const ASSET_DIR = join(fileURLToPath(import.meta.url), '../../dist/overlay/'); +setContext('CLI', { + sea: sea.isSea(), + // TODO: Be less naive with path obscuring + argv: process.argv.map(arg => arg.replace(process.env.HOME, '~')), +}); + +const withTracing = + (fn, spanArgs = {}) => + (...args) => + startSpan({ name: fn.name, attributes: { args }, ...spanArgs }, () => fn(...args)); + +const readAsset = withTracing( + sea.isSea() + ? name => Buffer.from(sea.getRawAsset(name)) + : (() => { + const ASSET_DIR = join(fileURLToPath(import.meta.url), '../../dist/overlay/'); + + return name => readFileSync(join(ASSET_DIR, name)); + })(), + { name: 'readAsset', op: 'cli.asset.read' }, +); - return name => readFileSync(join(ASSET_DIR, name)); - })(); +startSpan({ name: 'Spotlight CLI', op: 'cli' }, () => { + startSpan({ name: 'ASCII Art', op: 'cli.art.ascii' }, () => { + const MAX_COLS = process.stdout.columns; + if (!process.stdout.isTTY || MAX_COLS < 35) return; + let stdoutBuffer = ''; -const MAX_COLS = process.stdout.columns; -if (process.stdout.isTTY && MAX_COLS > 34) { - const data = Uint8Array.from( - inflateRawSync( - Buffer.from( - 'bY7LCgMxFEK9L5MwDDSL9P//1DJMKGXowoUcUaFZOk8dU2Op9+qZVkYQoFsaEqA6PZxxma1AoMG+TiONTgcfAd741YxxVf8gCzCgWcYB7OSj9sjW7t2/eKxKAxkIYv8NqL3FpVY25CmjrBSuDw==', - 'base64', + const data = startSpan({ name: 'Inflate ASCII Art Data', op: 'cli.art.ascii.inflate' }, () => + Uint8Array.from( + inflateRawSync( + Buffer.from( + 'bY7LCgMxFEK9L5MwDDSL9P//1DJMKGXowoUcUaFZOk8dU2Op9+qZVkYQoFsaEqA6PZxxma1AoMG+TiONTgcfAd741YxxVf8gCzCgWcYB7OSj9sjW7t2/eKxKAxkIYv8NqL3FpVY25CmjrBSuDw==', + 'base64', + ), + ), ), - ), - ); - const E = '\x1b['; - const C = `${E}38;5;`; - const M_COL = `${C}96m`; - const F_COL = `${C}61m`; - const BOLD = `${E}1m`; - const RESET = `${E}0m`; - const NL = `${RESET}\n`; - let factor = 0.22; - let c = 0; - let col = 0; - let line = 0; - let lim = 26; - let r = 0; - for (let p of data) { - if (p === 255) { - process.stdout.write(NL); - c = col = 0; - if (line++ === 5) { - factor = factor / -3; - } - lim = Math.round(lim * (1 + factor)); - r = Math.round(Math.random() * 18); - } else { - while (p-- >= 0 && col < MAX_COLS) { - if (col < lim - 1) { - process.stdout.write(M_COL); - } else if (col === lim - 1) { - process.stdout.write(F_COL); - } else if (col === lim + r) { - process.stdout.write(`${RESET}${BOLD}`); + ); + const E = '\x1b['; + const C = `${E}38;5;`; + const M_COL = `${C}96m`; + const F_COL = `${C}61m`; + const BOLD = `${E}1m`; + const RESET = `${E}0m`; + const NL = `${RESET}\n`; + let factor = 0.22; + let c = 0; + let col = 0; + let line = 0; + let lim = 26; + let r = 0; + for (let p of data) { + if (p === 255) { + stdoutBuffer += NL; + c = col = 0; + if (line++ === 5) { + factor = factor / -3; + } + lim = Math.round(lim * (1 + factor)); + r = Math.round(Math.random() * 18); + } else { + while (p-- >= 0 && col < MAX_COLS) { + if (col < lim - 1) { + stdoutBuffer += M_COL; + } else if (col === lim - 1) { + stdoutBuffer += F_COL; + } else if (col === lim + r) { + stdoutBuffer += `${RESET}${BOLD}`; + } + stdoutBuffer += c ? (col >= 35 ? '#' : 's') : ' '; + col++; } - process.stdout.write(c ? (col >= 35 ? '#' : 's') : ' '); - col++; + c = !c; } - c = !c; } - } - process.stdout.write(NL); -} + stdoutBuffer += NL; + process.stdout.write(stdoutBuffer); + }); -const port = process.argv.length >= 3 ? Number(process.argv[2]) : undefined; -const MANIFEST_NAME = 'manifest.json'; -const ENTRY_POINT_NAME = 'src/index.html'; -const basePath = process.cwd(); -const filesToServe = Object.create(null); + startSpan({ name: 'Setup Sidecar', op: 'cli.setup.sidecar' }, () => { + const port = process.argv.length >= 3 ? Number(process.argv[2]) : undefined; + const MANIFEST_NAME = 'manifest.json'; + const ENTRY_POINT_NAME = 'src/index.html'; + const basePath = process.cwd(); + const filesToServe = Object.create(null); -// Following the guide here: https://vite.dev/guide/backend-integration.html -const manifest = JSON.parse(readAsset(MANIFEST_NAME)); -filesToServe[ENTRY_POINT_NAME] = readAsset(ENTRY_POINT_NAME); -const entries = Object.values(manifest); -for (const entry of entries) { - filesToServe[entry.file] = readAsset(entry.file); -} -setupSidecar({ port, basePath, filesToServe }); + startSpan({ name: 'Setup Server Assets', op: 'cli.setup.sidecar.assets' }, () => { + // Following the guide here: https://vite.dev/guide/backend-integration.html + const manifest = JSON.parse(readAsset(MANIFEST_NAME)); + filesToServe[ENTRY_POINT_NAME] = readAsset(ENTRY_POINT_NAME); + const entries = Object.values(manifest); + for (const entry of entries) { + filesToServe[entry.file] = readAsset(entry.file); + } + }); + + setupSidecar({ port, basePath, filesToServe }); + }); +}); diff --git a/packages/spotlight/build.js b/packages/spotlight/build.js index cf62b1a6..6e4e3316 100755 --- a/packages/spotlight/build.js +++ b/packages/spotlight/build.js @@ -1,4 +1,6 @@ #!/usr/bin/env node +import * as esbuild from 'esbuild'; + import { execFile as execFileCb } from 'node:child_process'; import { createWriteStream } from 'node:fs'; import { copyFile, mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'; @@ -16,6 +18,7 @@ const execFile = promisify(execFileCb); const OUT_DIR = './dist-bin'; const DIST_DIR = './dist'; +const SPOTLIGHT_BUNDLE_PATH = join(DIST_DIR, 'spotlight.cjs'); const ASSETS_DIR = join(DIST_DIR, 'overlay'); const MANIFEST_NAME = 'manifest.json'; const MANIFEST_PATH = join(ASSETS_DIR, MANIFEST_NAME); @@ -26,7 +29,7 @@ const NODE_VERSION = '22.11.0'; const PLATFORMS = (process.env.BUILD_PLATFORMS || `${process.platform}-${process.arch}`).split(',').map(p => p.trim()); const manifest = JSON.parse(await readFile(MANIFEST_PATH)); const seaConfig = { - main: join(DIST_DIR, 'spotlight.cjs'), + main: SPOTLIGHT_BUNDLE_PATH, output: SPOTLIGHT_BLOB_PATH, disableExperimentalSEAWarning: true, useSnapshot: false, @@ -94,6 +97,28 @@ async function getNodeBinary(platform, targetPath = OUT_DIR) { return targetFile; } +console.log('Building Spotlight CLI bundle...'); +const result = await esbuild.build({ + logLevel: 'info', + entryPoints: ['bin/run.js'], + bundle: true, + minify: true, + platform: 'node', + target: 'node22', + format: 'cjs', + treeShaking: true, + inject: ['./import-meta-url.js'], + define: { + 'import.meta.url': 'import_meta_url', + 'process.env.npm_package_version': JSON.stringify(JSON.parse(await readFile('./package.json')).version), + 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'), + }, + outfile: SPOTLIGHT_BUNDLE_PATH, + allowOverwrite: true, +}); +if (result.errors.length) { + throw new Error(result.errors.map(e => e.text).join('\n')); +} await rm(OUT_DIR, { recursive: true }) .catch(() => {}) .finally(() => mkdir(OUT_DIR, { recursive: true })); diff --git a/packages/spotlight/import-meta-url.js b/packages/spotlight/import-meta-url.js new file mode 100644 index 00000000..7d389f90 --- /dev/null +++ b/packages/spotlight/import-meta-url.js @@ -0,0 +1 @@ +export var import_meta_url = require('url').pathToFileURL(__filename); diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 3c181511..0d060b93 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -7,7 +7,7 @@ "scripts": { "start": "./bin/run.js", "dev": "vite build --watch", - "build": "vite build && vite build --config vite.overlay.config.ts && vite build --config vite.binary.config.ts && ./build.js && tsc", + "build": "vite build && vite build --config vite.overlay.config.ts && ./build.js && tsc", "build:watch": "vite build --watch", "yalc:publish": "yalc publish --push --sig --private", "clean": "rimraf dist" @@ -40,6 +40,7 @@ } }, "dependencies": { + "@sentry/node": "^8.42.0", "@spotlightjs/overlay": "workspace:*", "@spotlightjs/sidecar": "workspace:*", "import-meta-resolve": "^4.1.0", @@ -50,6 +51,7 @@ "devDependencies": { "@spotlightjs/tsconfig": "workspace:*", "@types/node": "^18.19.55", + "esbuild": "^0.24.0", "typescript": "^5.6.2", "vite": "^5.4.11" }, diff --git a/packages/spotlight/vite.binary.config.ts b/packages/spotlight/vite.binary.config.ts deleted file mode 100644 index 9094b4b2..00000000 --- a/packages/spotlight/vite.binary.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { builtinModules } from 'node:module'; -import { resolve } from 'node:path'; -import { defineConfig } from 'vite'; - -export default defineConfig({ - build: { - ssr: true, - emptyOutDir: false, - reportCompressedSize: false, - lib: { - entry: { - spotlight: resolve(__dirname, 'bin/run.js'), - }, - formats: ['cjs'], - }, - rollupOptions: { - external: ['node:sea', ...builtinModules, ...builtinModules.map(x => `node:${x}`)], - }, - }, -}); diff --git a/packages/spotlight/vite.overlay.config.ts b/packages/spotlight/vite.overlay.config.ts index 3ae6be5d..e6d92a01 100644 --- a/packages/spotlight/vite.overlay.config.ts +++ b/packages/spotlight/vite.overlay.config.ts @@ -2,6 +2,10 @@ import { resolve } from 'node:path'; import { defineConfig } from 'vite'; export default defineConfig({ + define: { + 'process.env.NODE_ENV': "'production'", + 'process.env.npm_package_version': JSON.stringify(process.env.npm_package_version), + }, build: { outDir: resolve(__dirname, 'dist', 'overlay'), manifest: 'manifest.json', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 52a86fd1..2e98e312 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: version: 6.21.0(eslint@8.57.1)(typescript@5.6.2) '@vitejs/plugin-react': specifier: ^4.3.2 - version: 4.3.2(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)) + version: 4.3.2(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -284,7 +284,7 @@ importers: version: 4.2.19 svelte-check: specifier: ^3.8.6 - version: 3.8.6(@babel/core@7.18.5)(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19) + version: 3.8.6(@babel/core@7.18.5)(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@4.2.19) tslib: specifier: ^2.7.0 version: 2.7.0 @@ -352,7 +352,7 @@ importers: version: 24.13.3(electron-builder-squirrel-windows@24.13.3) electron-vite: specifier: ^2.3.0 - version: 2.3.0(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)) + version: 2.3.0(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) rollup-plugin-sourcemaps2: specifier: ^0.4.1 version: 0.4.1(@types/node@22.7.5)(rollup@4.24.0) @@ -365,6 +365,9 @@ importers: '@microlink/react-json-view': specifier: ^1.23.4 version: 1.23.4(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@sentry/react': + specifier: ^8.43.0 + version: 8.43.0(react@18.3.1) '@sentry/types': specifier: ^8.33.1 version: 8.33.1 @@ -467,6 +470,9 @@ importers: packages/sidecar: dependencies: + '@sentry/node': + specifier: ^8.42.0 + version: 8.42.0 kleur: specifier: ^4.1.5 version: 4.1.5 @@ -492,6 +498,9 @@ importers: packages/spotlight: dependencies: + '@sentry/node': + specifier: ^8.42.0 + version: 8.42.0 '@spotlightjs/overlay': specifier: workspace:* version: link:../overlay @@ -517,6 +526,9 @@ importers: '@types/node': specifier: ^18.19.55 version: 18.19.55 + esbuild: + specifier: ^0.24.0 + version: 0.24.0 typescript: specifier: ^5.6.2 version: 5.6.2 @@ -530,25 +542,25 @@ importers: dependencies: '@astrojs/react': specifier: ^3.6.2 - version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)) + version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) '@astrojs/starlight': specifier: ^0.28.3 - version: 0.28.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)) + version: 0.28.6(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)) '@astrojs/starlight-tailwind': specifier: ^2.0.3 - version: 2.0.3(@astrojs/starlight@0.28.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)))(@astrojs/tailwind@5.1.1(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13))(tailwindcss@3.4.13) + version: 2.0.3(@astrojs/starlight@0.28.6(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)))(@astrojs/tailwind@5.1.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13))(tailwindcss@3.4.13) '@astrojs/tailwind': specifier: ^5.1.1 - version: 5.1.1(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13) + version: 5.1.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13) '@astrojs/vercel': specifier: ^7.8.1 - version: 7.8.1(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(next@15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 7.8.2(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(next@15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(rollup@4.24.0)(svelte@4.2.19) '@fontsource/raleway': specifier: ^5.1.0 version: 5.1.0 '@sentry/astro': specifier: ^8.33.1 - version: 8.33.1(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)) + version: 8.42.0(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)) '@spotlightjs/astro': specifier: workspace:* version: link:../astro @@ -582,7 +594,7 @@ importers: version: 5.6.2 vite-plugin-inspect: specifier: ^0.7.42 - version: 0.7.42(rollup@4.24.0)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)) + version: 0.7.42(rollup@4.24.0)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) packages: @@ -612,6 +624,9 @@ packages: '@astrojs/internal-helpers@0.4.1': resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} + '@astrojs/internal-helpers@0.4.2': + resolution: {integrity: sha512-EdDWkC3JJVcpGpqJAU/5hSk2LKXyG3mNGkzGoAuyK+xoPHbaVdSuIWoN1QTnmK3N/gGfaaAfM8gO2KDCAW7S3w==} + '@astrojs/language-server@2.15.0': resolution: {integrity: sha512-wJHSjGApm5X8Rg1GvkevoatZBfvaFizY4kCPvuSYgs3jGCobuY3KstJGKC1yNLsRJlDweHruP+J54iKn9vEKoA==} hasBin: true @@ -664,8 +679,8 @@ packages: '@astrojs/tailwind': ^5.0.0 tailwindcss: ^3.3.3 - '@astrojs/starlight@0.28.3': - resolution: {integrity: sha512-GXXIPKSu5d50mLVtgI4jf6pb3FPQm8n4MI6ZXuQQqqnA0xg7PJQ76WFSVyrICeqM5fKABSqcBksp/glyEJes/A==} + '@astrojs/starlight@0.28.6': + resolution: {integrity: sha512-lY+rbRMIVxDGiXhS4lBuVrU2jTUezEt4QeTxUTHxfj2tuKBwquG7Jg+alON6l+uaV+anbOkFb001MMXZF8X85w==} peerDependencies: astro: ^4.14.0 @@ -676,18 +691,18 @@ packages: astro: ^3.0.0 svelte: ^3.55.0 || ^4.0.0 || ^5.0.0-next.1 - '@astrojs/tailwind@5.1.1': - resolution: {integrity: sha512-LwurA10uIKcGRxQP2R81RvAnBT0WPKzBntXZBF4hrAefDgM5Uumn0nsGr6tdIjSARgYz4X+Cq/Vh78t3bql3yw==} + '@astrojs/tailwind@5.1.3': + resolution: {integrity: sha512-XF7WhXRhqEHGvADqc0kDtF7Yv/g4wAWTaj91jBBTBaYnc4+MQLH94duFfFa4NlTkRG40VQd012eF3MhO3Kk+bg==} peerDependencies: - astro: ^3.0.0 || ^4.0.0 || ^5.0.0-beta.0 + astro: ^3.0.0 || ^4.0.0 || ^5.0.0 tailwindcss: ^3.0.24 '@astrojs/telemetry@3.1.0': resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} - '@astrojs/vercel@7.8.1': - resolution: {integrity: sha512-2PIVmv2/nI527DQsaZnf2jeUr+ddJjaQLXwqnVPXQn0LfIE8mi8BgYC5SUU9hJWIaFwEWTwJh90POaA2L3RpWQ==} + '@astrojs/vercel@7.8.2': + resolution: {integrity: sha512-U2JsfN0LzFMX5CPrcb+5bAAyqyYURP6Dk/mUIXX87r5x4baQy+juU+ntvf926YA0tR7u6jPRXHymE2axQ/l3NQ==} peerDependencies: astro: ^4.2.0 @@ -1033,138 +1048,282 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1505,6 +1664,12 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-amqplib@0.43.0': + resolution: {integrity: sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-connect@0.36.1': resolution: {integrity: sha512-xI5Q/CMmzBmHshPnzzjD19ptFaYO/rQWzokpNio4QixZYWhJsa35QgRvN9FhPkwgtuJIbt/CWWAufJ3egJNHEA==} engines: {node: '>=14'} @@ -1649,6 +1814,12 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-knex@0.41.0': + resolution: {integrity: sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-koa@0.40.0': resolution: {integrity: sha512-dJc3H/bKMcgUYcQpLF+1IbmUKus0e5Fnn/+ru/3voIRHwMADT3rFSUcGLWSczkg68BCgz0vFWGDTvPtcWIFr7A==} engines: {node: '>=14'} @@ -1751,6 +1922,12 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-tedious@0.15.0': + resolution: {integrity: sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-undici@0.6.0': resolution: {integrity: sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==} engines: {node: '>=14'} @@ -1885,10 +2062,6 @@ packages: rollup: optional: true - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -2026,6 +2199,14 @@ packages: resolution: {integrity: sha512-OSR/V5GCsSCG7iapWtXCT/y22uo3HlawdEgfM1NIKk1mkP15UyGQtGEzZDdih2H+SNuX1mp9jQLTjr5FFp1A5w==} engines: {node: '>=14.18'} + '@sentry-internal/browser-utils@8.42.0': + resolution: {integrity: sha512-xzgRI0wglKYsPrna574w1t38aftuvo44gjOKFvPNGPnYfiW9y4m+64kUz3JFbtanvOrKPcaITpdYiB4DeJXEbA==} + engines: {node: '>=14.18'} + + '@sentry-internal/browser-utils@8.43.0': + resolution: {integrity: sha512-5WhJZ3SA5sZVDBwOsChDd5JCzYcwBX7sEqBqEcm3pFru6TUihEnFIJmDIbreIyrQMwUhs3dTxnfnidgjr5z1Ag==} + engines: {node: '>=14.18'} + '@sentry-internal/browser-utils@8.7.0': resolution: {integrity: sha512-RFBK1sYBwV5qGMEwWF0rjOTqQpp4/SvE+qHkOJNRUTVYmfjM+Y9lcxwn4B6lu3aboxePpBw/i1PlP6XwX4UnGA==} engines: {node: '>=14.18'} @@ -2038,6 +2219,14 @@ packages: resolution: {integrity: sha512-Se25NXbSapgS2S+JssR5YZ48b3OY4UGmAuBOafgnMW91LXMxRNWRbehZuNUmjjHwuywABMxjgu+Yp5uJDATX+g==} engines: {node: '>=14.18'} + '@sentry-internal/feedback@8.42.0': + resolution: {integrity: sha512-dkIw5Wdukwzngg5gNJ0QcK48LyJaMAnBspqTqZ3ItR01STi6Z+6+/Bt5XgmrvDgRD+FNBinflc5zMmfdFXXhvw==} + engines: {node: '>=14.18'} + + '@sentry-internal/feedback@8.43.0': + resolution: {integrity: sha512-rcGR2kzFu4vLXBQbI9eGJwjyToyjl36O2q/UKbiZBNJ5IFtDvKRLke6jIHq/YqiHPfFGpVtq5M/lYduDfA/eaQ==} + engines: {node: '>=14.18'} + '@sentry-internal/feedback@8.7.0': resolution: {integrity: sha512-qcGtWCtRB4eP7NVQoxW936oPkU4qu9otMLYELPGmOJPnuAG0lujlJXW7BucaM7ADyJgJTE75hG849bHecfnbmQ==} engines: {node: '>=14.18'} @@ -2050,6 +2239,14 @@ packages: resolution: {integrity: sha512-1JLAaPtn1VL5vblB0BMELFV0D+KUm/iMGsrl4/JpRm0Ws5ESzQl33DhXVv1IX/ZAbx9i14EjR7MG9+Hj70tieQ==} engines: {node: '>=14.18'} + '@sentry-internal/replay-canvas@8.42.0': + resolution: {integrity: sha512-XrPErqVhPsPh/oFLVKvz7Wb+Fi2J1zCPLeZCxWqFuPWI2agRyLVu0KvqJyzSpSrRAEJC/XFzuSVILlYlXXSfgA==} + engines: {node: '>=14.18'} + + '@sentry-internal/replay-canvas@8.43.0': + resolution: {integrity: sha512-rL8G7E1GtozH8VNalRrBQNjYDJ5ChWS/vpQI5hUG11PZfvQFXEVatLvT3uO2l0xIlHm4idTsHOSLTe/usxnogQ==} + engines: {node: '>=14.18'} + '@sentry-internal/replay-canvas@8.7.0': resolution: {integrity: sha512-FOnvBPbq6MJVHPduc0hcsdE3PeeovQ2z5WJnZDGhvp/Obehxqe+XgX7K/595vRIknv4EokRn/3Kw0mFwG8E+ZQ==} engines: {node: '>=14.18'} @@ -2062,6 +2259,14 @@ packages: resolution: {integrity: sha512-E/Plhisk/pXJjOdOU12sg8m/APTXTA21iEniidP6jW3/+O0tD/H/UovEqa4odNTqxPMa798xHQSQNt5loYiaLA==} engines: {node: '>=14.18'} + '@sentry-internal/replay@8.42.0': + resolution: {integrity: sha512-oNcJEBlDfXnRFYC5Mxj5fairyZHNqlnU4g8kPuztB9G5zlsyLgWfPxzcn1ixVQunth2/WZRklDi4o1ZfyHww7w==} + engines: {node: '>=14.18'} + + '@sentry-internal/replay@8.43.0': + resolution: {integrity: sha512-geV5/zejLfGGwWHjylzrb1w8NI3U37GMG9/53nmv13FmTXUDF5XF2lh41KXFVYwvp7Ha4bd1FRQ9IU9YtBWskw==} + engines: {node: '>=14.18'} + '@sentry-internal/replay@8.7.0': resolution: {integrity: sha512-bQzOkWplaWTe3u+aDBhxWY3Qy0aT7ss2A3VR8iC6N8ZIEP9PxqyJwTNoouhinfgmlnCguI7RDOO4f3r3e2M80Q==} engines: {node: '>=14.18'} @@ -2072,6 +2277,12 @@ packages: peerDependencies: astro: '>=3.x || >=4.0.0-beta' + '@sentry/astro@8.42.0': + resolution: {integrity: sha512-M9vuBVje1EcmzWvhOv8ZptYwQXzAmm2I2SMCb90ZFNVLGZxxIaEoN1vWWKrKD7NfwNe+4PDF6g2WMoRX2c3vGg==} + engines: {node: '>=18.14.1'} + peerDependencies: + astro: '>=3.x || >=4.0.0-beta' + '@sentry/babel-plugin-component-annotate@2.14.2': resolution: {integrity: sha512-mFBVnIZmdMrpxo61rG5yf0WFt5VrRpy8cpIpJtT3mYkX9vDmcUZaZaD1ctv73iZF3QwaieVdn05Na5mWzZ8h/A==} engines: {node: '>= 14'} @@ -2096,6 +2307,14 @@ packages: resolution: {integrity: sha512-5ym+iGiIpjIKKpMWi9S3/tXh9xneS+jqxwRTJqed3cb8i4ydfMAAP8sM3U8xMCWWABpWyIUW+fpewC0tkhE1aQ==} engines: {node: '>=14.18'} + '@sentry/browser@8.42.0': + resolution: {integrity: sha512-lStrEk609KJHwXfDrOgoYVVoFFExixHywxSExk7ZDtwj2YPv6r6Y1gogvgr7dAZj7jWzadHkxZ33l9EOSJBfug==} + engines: {node: '>=14.18'} + + '@sentry/browser@8.43.0': + resolution: {integrity: sha512-LGvLLnfmR8+AEgFmd7Q7KHiOTiV0P1Lvio2ENDELhEqJOIiICauttibVmig+AW02qg4kMeywvleMsUYaZv2RVA==} + engines: {node: '>=14.18'} + '@sentry/browser@8.7.0': resolution: {integrity: sha512-4EEp+PlcktsMN0p+MdCPl/lghTkq7eOtZjQG9NGhWzfyWrJ3tuL1nsDr2SSivJ1V277F01KtKYo6BFwP2NtBZA==} engines: {node: '>=14.18'} @@ -2170,6 +2389,14 @@ packages: resolution: {integrity: sha512-82csXby589iDupM3VgCHJeWZagUyEEaDnbFcoZ/Z91QX2Sjq8FcF5OsforoXjw09i0XTFqlkFAnQVpDBmMXcpQ==} engines: {node: '>=14.18'} + '@sentry/core@8.42.0': + resolution: {integrity: sha512-ac6O3pgoIbU6rpwz6LlwW0wp3/GAHuSI0C5IsTgIY6baN8rOBnlAtG6KrHDDkGmUQ2srxkDJu9n1O6Td3cBCqw==} + engines: {node: '>=14.18'} + + '@sentry/core@8.43.0': + resolution: {integrity: sha512-ktyovtjkTMNud+kC/XfqHVCoQKreIKgx/hgeRvzPwuPyd1t1KzYmRL3DBkbcWVnyOPpVTHn+RsEI1eRcVYHtvw==} + engines: {node: '>=14.18'} + '@sentry/core@8.7.0': resolution: {integrity: sha512-Sq/46B+5nWmgnCD6dEMZ6HTkKbV/KAdgaSvT8oXDb9OWoPy1jJ/gbLrhLs62KbjuDQk4/vWnOgHiKQbcslSzMw==} engines: {node: '>=14.18'} @@ -2191,6 +2418,10 @@ packages: resolution: {integrity: sha512-ACRZmqOBHRPKsyVhnDR4+RH1QQr7WMdH7RNl62VlKNZGLvraxW1CUqTSeNUFUuOwks3P6nozROSQs8VMSC/nVg==} engines: {node: '>=14.18'} + '@sentry/node@8.42.0': + resolution: {integrity: sha512-MsNrmAIwDaxf1jTX1FsgZ+3mUq6G6IuU6FAqyp7TDnvUTsbWUtr0OM6EvVUz0zCImybIh9dcTQ+6KTmUyA7URw==} + engines: {node: '>=14.18'} + '@sentry/node@8.7.0': resolution: {integrity: sha512-El1LmXGVe8Ahi5oUdlrE5s3Or23/iGnnntNvaYymXk4BmL4dJtv7ttlQ94ZrI9QWs8VnfM7eHqCd+OPjTh0XJQ==} engines: {node: '>=14.18'} @@ -2215,6 +2446,16 @@ packages: '@opentelemetry/sdk-trace-base': ^1.26.0 '@opentelemetry/semantic-conventions': ^1.27.0 + '@sentry/opentelemetry@8.42.0': + resolution: {integrity: sha512-QPb9kMFgl35TIwIz0u+BFTbPG461CofMiloidJ44GFZ9cB33T5cB0oIN7ut/5tsH/AvqUmucydsV/Nj3HNQx9g==} + engines: {node: '>=14.18'} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/core': ^1.25.1 + '@opentelemetry/instrumentation': ^0.54.0 + '@opentelemetry/sdk-trace-base': ^1.26.0 + '@opentelemetry/semantic-conventions': ^1.27.0 + '@sentry/opentelemetry@8.7.0': resolution: {integrity: sha512-I9JEXnqXDBPr5MtgEYRvmcolmpugSgH1QV+SFnfOPc40Mu/npNsJq7oqbGzhlCe4H45XD6LJzFlc7BfoCzwAsQ==} engines: {node: '>=14.18'} @@ -2231,6 +2472,12 @@ packages: peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x + '@sentry/react@8.43.0': + resolution: {integrity: sha512-PsTzLrYio/FOJU537Y5Gj9jJi7OMHEjdttsC9INUxy5062LOd8ObtHsjE0mopLaSYEwUfSROQOBZCwmISh8ByQ==} + engines: {node: '>=14.18'} + peerDependencies: + react: ^16.14.0 || 17.x || 18.x || 19.x + '@sentry/svelte@8.33.1': resolution: {integrity: sha512-dEIueOOXasV4XxrYXQ9dOqHh7nOENrvnVvVeFdjJs9xFCjouZXwOYTSjFcRErS19oTcWMCpGyYXq9Qx1UC0pBQ==} engines: {node: '>=14.18'} @@ -2299,33 +2546,25 @@ packages: resolution: {integrity: sha512-dFARM360varU+hdU1MCpl0VTL03FkVIC+A9egCE+ureuOryjVNe3cm2mUjv/gnDHHNTOxWC2H2c8BlOkqTGP/w==} engines: {node: '>= 14'} + '@sentry/vite-plugin@2.22.6': + resolution: {integrity: sha512-zIieP1VLWQb3wUjFJlwOAoaaJygJhXeUoGd0e/Ha2RLb2eW2S+4gjf6y6NqyY71tZ74LYVZKg/4prB6FAZSMXQ==} + engines: {node: '>= 14'} + '@sentry/webpack-plugin@2.22.6': resolution: {integrity: sha512-BiLhAzQYAz/9kCXKj2LeUKWf/9GBVn2dD0DeYK89s+sjDEaxjbcLBBiLlLrzT7eC9QVj2tUZRKOi6puCfc8ysw==} engines: {node: '>= 14'} peerDependencies: webpack: '>=4.40.0' - '@shikijs/core@1.22.0': - resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} - '@shikijs/core@1.23.1': resolution: {integrity: sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA==} - '@shikijs/engine-javascript@1.22.0': - resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} - '@shikijs/engine-javascript@1.23.1': resolution: {integrity: sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg==} - '@shikijs/engine-oniguruma@1.22.0': - resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} - '@shikijs/engine-oniguruma@1.23.1': resolution: {integrity: sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ==} - '@shikijs/types@1.22.0': - resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} - '@shikijs/types@1.23.1': resolution: {integrity: sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g==} @@ -2698,6 +2937,9 @@ packages: '@types/shimmer@1.2.0': resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} + '@types/tedious@4.0.14': + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -2771,22 +3013,37 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vercel/analytics@1.3.1': - resolution: {integrity: sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==} + '@vercel/analytics@1.4.1': + resolution: {integrity: sha512-ekpL4ReX2TH3LnrRZTUKjHHNpNy9S1I7QmS+g/RQXoSUQ8ienzosuX7T9djZ/s8zPhBx1mpHP/Rw5875N+zQIQ==} peerDependencies: + '@remix-run/react': ^2 + '@sveltejs/kit': ^1 || ^2 next: '>= 13' - react: ^18 || ^19 + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 peerDependenciesMeta: + '@remix-run/react': + optional: true + '@sveltejs/kit': + optional: true next: optional: true react: optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true '@vercel/edge@1.1.2': resolution: {integrity: sha512-wt5SnhsMahWX8U9ZZhFUQoiXhMn/CUxA5xeMdZX1cwyOL1ZbDR3rNI8HRT9RSU73nDxeF6jlnqJyp/0Jy0VM2A==} - '@vercel/nft@0.27.4': - resolution: {integrity: sha512-Rioz3LJkEKicKCi9BSyc1RXZ5R6GmXosFMeBSThh6msWSOiArKhb7c75MiWwZEgPL7x0/l3TAfH/l0cxKNuUFA==} + '@vercel/nft@0.27.7': + resolution: {integrity: sha512-FG6H5YkP4bdw9Ll1qhmbxuE8KwW2E/g8fJpM183fWQLeVDGqzeywMIeJ9h2txdWZ03psgWMn6QymTxaDLmdwUg==} engines: {node: '>=16'} hasBin: true @@ -3885,6 +4142,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -5421,9 +5683,6 @@ packages: oniguruma-to-es@0.4.1: resolution: {integrity: sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ==} - oniguruma-to-js@0.4.3: - resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} - open@9.1.0: resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} @@ -5581,6 +5840,9 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -5709,6 +5971,10 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -5982,9 +6248,6 @@ packages: regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@4.3.3: - resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} - regex@5.0.2: resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} @@ -6207,9 +6470,6 @@ packages: server-destroy@1.0.1: resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} - server-only@0.0.1: - resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} - set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -6245,9 +6505,6 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - shiki@1.22.0: - resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} - shiki@1.23.1: resolution: {integrity: sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig==} @@ -6974,6 +7231,46 @@ packages: terser: optional: true + vite@6.0.2: + resolution: {integrity: sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitefu@0.2.5: resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: @@ -7352,6 +7649,8 @@ snapshots: '@astrojs/internal-helpers@0.4.1': {} + '@astrojs/internal-helpers@0.4.2': {} + '@astrojs/language-server@2.15.0(prettier@3.3.3)(typescript@5.6.2)': dependencies: '@astrojs/compiler': 2.10.3 @@ -7391,7 +7690,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.22.0 + shiki: 1.23.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -7427,7 +7726,7 @@ snapshots: dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 - acorn: 8.12.1 + acorn: 8.14.0 astro: 4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 @@ -7475,19 +7774,31 @@ snapshots: - supports-color - vite + '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1))': + dependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.0 + '@vitejs/plugin-react': 4.3.2(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + ultrahtml: 1.5.3 + transitivePeerDependencies: + - supports-color + - vite + '@astrojs/sitemap@3.2.0': dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight-tailwind@2.0.3(@astrojs/starlight@0.28.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)))(@astrojs/tailwind@5.1.1(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13))(tailwindcss@3.4.13)': + '@astrojs/starlight-tailwind@2.0.3(@astrojs/starlight@0.28.6(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)))(@astrojs/tailwind@5.1.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13))(tailwindcss@3.4.13)': dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)) - '@astrojs/tailwind': 5.1.1(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13) + '@astrojs/starlight': 0.28.6(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)) + '@astrojs/tailwind': 5.1.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13) tailwindcss: 3.4.13 - '@astrojs/starlight@0.28.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))': + '@astrojs/starlight@0.28.6(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))': dependencies: '@astrojs/mdx': 3.1.7(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2)) '@astrojs/sitemap': 3.2.0 @@ -7502,6 +7813,7 @@ snapshots: hast-util-to-string: 3.0.1 hastscript: 9.0.0 i18next: 23.15.2 + js-yaml: 4.1.0 mdast-util-directive: 3.0.0 mdast-util-to-markdown: 2.1.0 mdast-util-to-string: 4.0.0 @@ -7526,12 +7838,12 @@ snapshots: - typescript - vite - '@astrojs/tailwind@5.1.1(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13)': + '@astrojs/tailwind@5.1.3(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(tailwindcss@3.4.13)': dependencies: astro: 4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2) - autoprefixer: 10.4.20(postcss@8.4.47) - postcss: 8.4.47 - postcss-load-config: 4.0.2(postcss@8.4.47) + autoprefixer: 10.4.20(postcss@8.4.49) + postcss: 8.4.49 + postcss-load-config: 4.0.2(postcss@8.4.49) tailwindcss: 3.4.13 transitivePeerDependencies: - ts-node @@ -7548,21 +7860,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/vercel@7.8.1(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(next@15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@astrojs/vercel@7.8.2(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))(next@15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(rollup@4.24.0)(svelte@4.2.19)': dependencies: - '@astrojs/internal-helpers': 0.4.1 - '@vercel/analytics': 1.3.1(next@15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@astrojs/internal-helpers': 0.4.2 + '@vercel/analytics': 1.4.1(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(next@15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.19) '@vercel/edge': 1.1.2 - '@vercel/nft': 0.27.4 + '@vercel/nft': 0.27.7(rollup@4.24.0) astro: 4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2) esbuild: 0.21.5 fast-glob: 3.3.2 web-vitals: 3.5.2 transitivePeerDependencies: + - '@remix-run/react' + - '@sveltejs/kit' - encoding - next - react + - rollup - supports-color + - svelte + - vue + - vue-router '@astrojs/yaml2ts@0.2.1': dependencies: @@ -7571,13 +7889,13 @@ snapshots: '@babel/code-frame@7.25.7': dependencies: '@babel/highlight': 7.25.7 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/compat-data@7.25.7': {} @@ -7759,7 +8077,7 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/parser@7.25.7': dependencies: @@ -8154,72 +8472,144 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.24.0': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.24.0': + optional: true + '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.24.0': + optional: true + '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.24.0': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.24.0': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.24.0': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.24.0': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.24.0': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.24.0': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.24.0': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.24.0': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-loong64@0.24.0': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.24.0': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.24.0': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.24.0': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.24.0': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.24.0': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.24.0': + optional: true + + '@esbuild/openbsd-arm64@0.24.0': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.24.0': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.24.0': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.24.0': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.24.0': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.24.0': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': dependencies: eslint: 8.57.1 @@ -8250,8 +8640,8 @@ snapshots: hast-util-to-html: 9.0.3 hast-util-to-text: 4.0.2 hastscript: 9.0.0 - postcss: 8.4.47 - postcss-nested: 6.2.0(postcss@8.4.47) + postcss: 8.4.49 + postcss-nested: 6.2.0(postcss@8.4.49) unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 @@ -8262,7 +8652,7 @@ snapshots: '@expressive-code/plugin-shiki@0.35.6': dependencies: '@expressive-code/core': 0.35.6 - shiki: 1.22.0 + shiki: 1.23.1 '@expressive-code/plugin-text-markers@0.35.6': dependencies: @@ -8598,6 +8988,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-amqplib@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-connect@0.36.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -8805,6 +9204,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-knex@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-koa@0.40.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -8959,6 +9366,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-tedious@0.15.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9114,11 +9530,6 @@ snapshots: optionalDependencies: rollup: 3.29.5 - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - '@rollup/pluginutils@5.1.0(rollup@4.24.0)': dependencies: '@types/estree': 1.0.6 @@ -9243,6 +9654,14 @@ snapshots: '@sentry/types': 8.37.1 '@sentry/utils': 8.37.1 + '@sentry-internal/browser-utils@8.42.0': + dependencies: + '@sentry/core': 8.42.0 + + '@sentry-internal/browser-utils@8.43.0': + dependencies: + '@sentry/core': 8.43.0 + '@sentry-internal/browser-utils@8.7.0': dependencies: '@sentry/core': 8.7.0 @@ -9261,6 +9680,14 @@ snapshots: '@sentry/types': 8.37.1 '@sentry/utils': 8.37.1 + '@sentry-internal/feedback@8.42.0': + dependencies: + '@sentry/core': 8.42.0 + + '@sentry-internal/feedback@8.43.0': + dependencies: + '@sentry/core': 8.43.0 + '@sentry-internal/feedback@8.7.0': dependencies: '@sentry/core': 8.7.0 @@ -9281,6 +9708,16 @@ snapshots: '@sentry/types': 8.37.1 '@sentry/utils': 8.37.1 + '@sentry-internal/replay-canvas@8.42.0': + dependencies: + '@sentry-internal/replay': 8.42.0 + '@sentry/core': 8.42.0 + + '@sentry-internal/replay-canvas@8.43.0': + dependencies: + '@sentry-internal/replay': 8.43.0 + '@sentry/core': 8.43.0 + '@sentry-internal/replay-canvas@8.7.0': dependencies: '@sentry-internal/replay': 8.7.0 @@ -9302,6 +9739,16 @@ snapshots: '@sentry/types': 8.37.1 '@sentry/utils': 8.37.1 + '@sentry-internal/replay@8.42.0': + dependencies: + '@sentry-internal/browser-utils': 8.42.0 + '@sentry/core': 8.42.0 + + '@sentry-internal/replay@8.43.0': + dependencies: + '@sentry-internal/browser-utils': 8.43.0 + '@sentry/core': 8.43.0 + '@sentry-internal/replay@8.7.0': dependencies: '@sentry-internal/browser-utils': 8.7.0 @@ -9335,6 +9782,17 @@ snapshots: - encoding - supports-color + '@sentry/astro@8.42.0(astro@4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2))': + dependencies: + '@sentry/browser': 8.42.0 + '@sentry/core': 8.42.0 + '@sentry/node': 8.42.0 + '@sentry/vite-plugin': 2.22.6 + astro: 4.16.15(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.2) + transitivePeerDependencies: + - encoding + - supports-color + '@sentry/babel-plugin-component-annotate@2.14.2': {} '@sentry/babel-plugin-component-annotate@2.22.3': {} @@ -9363,6 +9821,22 @@ snapshots: '@sentry/types': 8.37.1 '@sentry/utils': 8.37.1 + '@sentry/browser@8.42.0': + dependencies: + '@sentry-internal/browser-utils': 8.42.0 + '@sentry-internal/feedback': 8.42.0 + '@sentry-internal/replay': 8.42.0 + '@sentry-internal/replay-canvas': 8.42.0 + '@sentry/core': 8.42.0 + + '@sentry/browser@8.43.0': + dependencies: + '@sentry-internal/browser-utils': 8.43.0 + '@sentry-internal/feedback': 8.43.0 + '@sentry-internal/replay': 8.43.0 + '@sentry-internal/replay-canvas': 8.43.0 + '@sentry/core': 8.43.0 + '@sentry/browser@8.7.0': dependencies: '@sentry-internal/browser-utils': 8.7.0 @@ -9479,6 +9953,10 @@ snapshots: '@sentry/types': 8.37.1 '@sentry/utils': 8.37.1 + '@sentry/core@8.42.0': {} + + '@sentry/core@8.43.0': {} + '@sentry/core@8.7.0': dependencies: '@sentry/types': 8.7.0 @@ -9604,6 +10082,46 @@ snapshots: transitivePeerDependencies: - supports-color + '@sentry/node@8.42.0': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.12.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.16.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.48.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.15.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.6.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@prisma/instrumentation': 5.19.1 + '@sentry/core': 8.42.0 + '@sentry/opentelemetry': 8.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0) + import-in-the-middle: 1.11.2 + transitivePeerDependencies: + - supports-color + '@sentry/node@8.7.0': dependencies: '@opentelemetry/api': 1.9.0 @@ -9670,6 +10188,15 @@ snapshots: '@sentry/types': 8.37.1 '@sentry/utils': 8.37.1 + '@sentry/opentelemetry@8.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@sentry/core': 8.42.0 + '@sentry/opentelemetry@8.7.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9690,6 +10217,13 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 + '@sentry/react@8.43.0(react@18.3.1)': + dependencies: + '@sentry/browser': 8.43.0 + '@sentry/core': 8.43.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + '@sentry/svelte@8.33.1(svelte@4.2.19)': dependencies: '@sentry/browser': 8.33.1 @@ -9805,6 +10339,14 @@ snapshots: - encoding - supports-color + '@sentry/vite-plugin@2.22.6': + dependencies: + '@sentry/bundler-plugin-core': 2.22.6 + unplugin: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + '@sentry/webpack-plugin@2.22.6(webpack@5.91.0)': dependencies: '@sentry/bundler-plugin-core': 2.22.6 @@ -9815,15 +10357,6 @@ snapshots: - encoding - supports-color - '@shikijs/core@1.22.0': - dependencies: - '@shikijs/engine-javascript': 1.22.0 - '@shikijs/engine-oniguruma': 1.22.0 - '@shikijs/types': 1.22.0 - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 - '@shikijs/core@1.23.1': dependencies: '@shikijs/engine-javascript': 1.23.1 @@ -9833,33 +10366,17 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 - '@shikijs/engine-javascript@1.22.0': - dependencies: - '@shikijs/types': 1.22.0 - '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-js: 0.4.3 - '@shikijs/engine-javascript@1.23.1': dependencies: '@shikijs/types': 1.23.1 '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-es: 0.4.1 - '@shikijs/engine-oniguruma@1.22.0': - dependencies: - '@shikijs/types': 1.22.0 - '@shikijs/vscode-textmate': 9.3.0 - '@shikijs/engine-oniguruma@1.23.1': dependencies: '@shikijs/types': 1.23.1 '@shikijs/vscode-textmate': 9.3.0 - '@shikijs/types@1.22.0': - dependencies: - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - '@shikijs/types@1.23.1': dependencies: '@shikijs/vscode-textmate': 9.3.0 @@ -9917,6 +10434,25 @@ snapshots: tiny-glob: 0.2.9 vite: 5.4.11(@types/node@22.7.5)(terser@5.34.1) + '@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.0.0 + import-meta-resolve: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.11 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.7.0 + sirv: 3.0.0 + svelte: 4.2.19 + tiny-glob: 0.2.9 + vite: 6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) + optional: true + '@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@5.0.0-next.263)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)))(svelte@5.0.0-next.263)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1))': dependencies: '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@5.0.0-next.263)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)) @@ -9944,6 +10480,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) + debug: 4.3.7 + svelte: 4.2.19 + vite: 6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) + transitivePeerDependencies: + - supports-color + optional: true + '@sveltejs/vite-plugin-svelte@2.5.3(svelte@5.0.0-next.263)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@5.0.0-next.263)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)))(svelte@5.0.0-next.263)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)) @@ -9986,6 +10532,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) + debug: 4.3.7 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.14 + svelte: 4.2.19 + svelte-hmr: 0.16.0(svelte@4.2.19) + vite: 6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) + vitefu: 0.2.5(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) + transitivePeerDependencies: + - supports-color + optional: true + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 @@ -10259,7 +10820,7 @@ snapshots: '@types/mysql@2.15.26': dependencies: - '@types/node': 22.7.5 + '@types/node': 18.19.55 '@types/nlcst@2.0.3': dependencies: @@ -10297,7 +10858,7 @@ snapshots: '@types/pg@8.6.1': dependencies: - '@types/node': 22.7.5 + '@types/node': 18.19.55 pg-protocol: 1.7.0 pg-types: 2.2.0 @@ -10355,6 +10916,10 @@ snapshots: '@types/shimmer@1.2.0': {} + '@types/tedious@4.0.14': + dependencies: + '@types/node': 18.19.55 + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -10455,21 +11020,21 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vercel/analytics@1.3.1(next@15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': - dependencies: - server-only: 0.0.1 + '@vercel/analytics@1.4.1(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(next@15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.19)': optionalDependencies: + '@sveltejs/kit': 2.8.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)))(svelte@4.2.19)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) next: 15.0.2(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + svelte: 4.2.19 '@vercel/edge@1.1.2': {} - '@vercel/nft@0.27.4': + '@vercel/nft@0.27.7(rollup@4.24.0)': dependencies: '@mapbox/node-pre-gyp': 1.0.11 - '@rollup/pluginutils': 4.2.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) + '@rollup/pluginutils': 5.1.3(rollup@4.24.0) + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -10480,6 +11045,7 @@ snapshots: resolve-from: 5.0.0 transitivePeerDependencies: - encoding + - rollup - supports-color '@vitejs/plugin-react@4.3.2(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1))': @@ -10493,6 +11059,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitejs/plugin-react@4.3.2(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1))': + dependencies: + '@babel/core': 7.25.7 + '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.7) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) + transitivePeerDependencies: + - supports-color + '@vitest/coverage-v8@0.34.6(vitest@0.34.6(happy-dom@15.10.2)(playwright@1.48.0)(terser@5.34.1))': dependencies: '@ampproject/remapping': 2.3.0 @@ -10716,23 +11293,22 @@ snapshots: abbrev@2.0.0: {} - acorn-import-assertions@1.9.0(acorn@8.12.1): - dependencies: - acorn: 8.12.1 - optional: true - acorn-import-assertions@1.9.0(acorn@8.14.0): dependencies: acorn: 8.14.0 - acorn-import-attributes@1.9.5(acorn@8.12.1): + acorn-import-attributes@1.9.5(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + acorn-typescript@1.4.13(acorn@8.12.1): dependencies: acorn: 8.12.1 @@ -11103,6 +11679,16 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 + autoprefixer@10.4.20(postcss@8.4.49): + dependencies: + browserslist: 4.24.0 + caniuse-lite: 1.0.30001667 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.0 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + axobject-query@4.1.0: {} babel-plugin-macros@3.1.0: @@ -11799,7 +12385,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron-vite@2.3.0(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)): + electron-vite@2.3.0(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)): dependencies: '@babel/core': 7.25.7 '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.7) @@ -11807,7 +12393,7 @@ snapshots: esbuild: 0.21.5 magic-string: 0.30.11 picocolors: 1.1.0 - vite: 5.4.11(@types/node@22.7.5)(terser@5.34.1) + vite: 6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) transitivePeerDependencies: - supports-color @@ -11905,6 +12491,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.24.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -12760,23 +13373,23 @@ snapshots: import-in-the-middle@1.11.2: dependencies: - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) cjs-module-lexer: 1.4.1 module-details-from-path: 1.0.3 import-in-the-middle@1.4.2: dependencies: - acorn: 8.12.1 - acorn-import-assertions: 1.9.0(acorn@8.12.1) + acorn: 8.14.0 + acorn-import-assertions: 1.9.0(acorn@8.14.0) cjs-module-lexer: 1.4.1 module-details-from-path: 1.0.3 optional: true import-in-the-middle@1.7.4: dependencies: - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) cjs-module-lexer: 1.4.1 module-details-from-path: 1.0.3 @@ -13517,8 +14130,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 @@ -13747,7 +14360,7 @@ snapshots: mlly@1.7.2: dependencies: - acorn: 8.12.1 + acorn: 8.14.0 pathe: 1.1.2 pkg-types: 1.2.1 ufo: 1.5.4 @@ -13904,10 +14517,6 @@ snapshots: regex: 5.0.2 regex-recursion: 4.2.1 - oniguruma-to-js@0.4.3: - dependencies: - regex: 4.3.3 - open@9.1.0: dependencies: default-browser: 4.0.0 @@ -14087,6 +14696,8 @@ snapshots: picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} picomatch@4.0.2: {} @@ -14157,18 +14768,30 @@ snapshots: optionalDependencies: postcss: 8.4.47 + postcss-load-config@4.0.2(postcss@8.4.49): + dependencies: + lilconfig: 3.1.2 + yaml: 2.5.1 + optionalDependencies: + postcss: 8.4.49 + postcss-nested@6.2.0(postcss@8.4.47): dependencies: postcss: 8.4.47 postcss-selector-parser: 6.1.2 + postcss-nested@6.2.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + postcss-safe-parser@6.0.0(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-scss@4.0.9(postcss@8.4.47): + postcss-scss@4.0.9(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser@6.0.10: dependencies: @@ -14194,6 +14817,12 @@ snapshots: picocolors: 1.1.0 source-map-js: 1.2.1 + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postgres-array@2.0.0: {} postgres-bytea@1.0.0: {} @@ -14431,8 +15060,6 @@ snapshots: regex-utilities@2.3.0: {} - regex@4.3.3: {} - regex@5.0.2: dependencies: regex-utilities: 2.3.0 @@ -14744,8 +15371,6 @@ snapshots: server-destroy@1.0.1: {} - server-only@0.0.1: {} - set-blocking@2.0.0: {} set-cookie-parser@2.7.0: {} @@ -14794,15 +15419,6 @@ snapshots: shell-quote@1.8.1: {} - shiki@1.22.0: - dependencies: - '@shikijs/core': 1.22.0 - '@shikijs/engine-javascript': 1.22.0 - '@shikijs/engine-oniguruma': 1.22.0 - '@shikijs/types': 1.22.0 - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - shiki@1.23.1: dependencies: '@shikijs/core': 1.23.1 @@ -15055,14 +15671,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.6(@babel/core@7.18.5)(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19): + svelte-check@3.8.6(@babel/core@7.18.5)(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@4.2.19): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 picocolors: 1.1.0 sade: 1.8.1 svelte: 4.2.19 - svelte-preprocess: 5.1.4(@babel/core@7.18.5)(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.6.2) + svelte-preprocess: 5.1.4(@babel/core@7.18.5)(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@4.2.19)(typescript@5.6.2) typescript: 5.6.2 transitivePeerDependencies: - '@babel/core' @@ -15100,8 +15716,8 @@ snapshots: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.47 - postcss-scss: 4.0.9(postcss@8.4.47) + postcss: 8.4.49 + postcss-scss: 4.0.9(postcss@8.4.49) optionalDependencies: svelte: 4.2.19 @@ -15113,7 +15729,7 @@ snapshots: dependencies: svelte: 4.2.19 - svelte-preprocess@5.1.4(@babel/core@7.18.5)(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.6.2): + svelte-preprocess@5.1.4(@babel/core@7.18.5)(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@4.2.19)(typescript@5.6.2): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 @@ -15123,8 +15739,8 @@ snapshots: svelte: 4.2.19 optionalDependencies: '@babel/core': 7.18.5 - postcss: 8.4.47 - postcss-load-config: 4.0.2(postcss@8.4.47) + postcss: 8.4.49 + postcss-load-config: 4.0.2(postcss@8.4.49) typescript: 5.6.2 svelte-preprocess@5.1.4(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.6.2): @@ -15443,7 +16059,7 @@ snapshots: dependencies: browserslist: 4.24.0 escalade: 3.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 uri-js@4.4.1: dependencies: @@ -15543,7 +16159,7 @@ snapshots: - rollup - supports-color - vite-plugin-inspect@0.7.42(rollup@4.24.0)(vite@5.4.11(@types/node@22.7.5)(terser@5.34.1)): + vite-plugin-inspect@0.7.42(rollup@4.24.0)(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.2(rollup@4.24.0) @@ -15553,7 +16169,7 @@ snapshots: open: 9.1.0 picocolors: 1.1.0 sirv: 2.0.4 - vite: 5.4.11(@types/node@22.7.5)(terser@5.34.1) + vite: 6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) transitivePeerDependencies: - rollup - supports-color @@ -15599,6 +16215,18 @@ snapshots: fsevents: 2.3.3 terser: 5.34.1 + vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1): + dependencies: + esbuild: 0.24.0 + postcss: 8.4.49 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 22.7.5 + fsevents: 2.3.3 + jiti: 1.21.6 + terser: 5.34.1 + yaml: 2.5.1 + vitefu@0.2.5(vite@5.4.11(@types/node@20.10.4)(terser@5.34.1)): optionalDependencies: vite: 5.4.11(@types/node@20.10.4)(terser@5.34.1) @@ -15607,6 +16235,11 @@ snapshots: optionalDependencies: vite: 5.4.11(@types/node@22.7.5)(terser@5.34.1) + vitefu@0.2.5(vite@6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)): + optionalDependencies: + vite: 6.0.2(@types/node@22.7.5)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) + optional: true + vitefu@1.0.4(vite@5.4.11(@types/node@18.19.55)(terser@5.34.1)): optionalDependencies: vite: 5.4.11(@types/node@18.19.55)(terser@5.34.1)