diff --git a/docker-compose.yml b/docker-compose.yml index ba56ee24e..47486ff40 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,7 @@ services: volumes: - postgres_data:/var/lib/postgresql/data - ./scripts/docker/postgresql.conf:/etc/postgresql/postgresql.conf:ro + - ./scripts/docker/init-electric-user.sql:/docker-entrypoint-initdb.d/init-electric-user.sql:ro environment: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres} @@ -115,17 +116,16 @@ services: electric: image: electricsql/electric:latest ports: - - "${ELECTRIC_PORT:-5133}:5133" + - "${ELECTRIC_PORT:-5133}:3000" environment: - DATABASE_URL=postgresql://electric:electric_password@db:5432/${POSTGRES_DB:-surfsense}?sslmode=disable - - AUTH_MODE=insecure + - ELECTRIC_INSECURE=true - ELECTRIC_WRITE_TO_PG_MODE=direct - - ELECTRIC_READ_FROM_PG_MODE=direct depends_on: - db restart: unless-stopped healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:5133/api/health"] + test: ["CMD", "curl", "-f", "http://localhost:3000/v1/health"] interval: 10s timeout: 5s retries: 5 diff --git a/scripts/docker/init-electric-user.sql b/scripts/docker/init-electric-user.sql index a0b9a6325..4317164ad 100644 --- a/scripts/docker/init-electric-user.sql +++ b/scripts/docker/init-electric-user.sql @@ -19,5 +19,12 @@ GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO electric; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO electric; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON SEQUENCES TO electric; --- Note: Electric SQL will create its own publications automatically --- We don't need to create publications here +-- Create the publication that Electric SQL expects +-- Electric will add tables to this publication when shapes are subscribed +DO $$ +BEGIN + IF NOT EXISTS (SELECT FROM pg_publication WHERE pubname = 'electric_publication_default') THEN + CREATE PUBLICATION electric_publication_default; + END IF; +END +$$; diff --git a/surfsense_backend/alembic/versions/60_add_notifications_table.py b/surfsense_backend/alembic/versions/60_add_notifications_table.py index 2de5acc46..d741e637c 100644 --- a/surfsense_backend/alembic/versions/60_add_notifications_table.py +++ b/surfsense_backend/alembic/versions/60_add_notifications_table.py @@ -40,6 +40,13 @@ def upgrade() -> None: op.create_index("ix_notifications_created_at", "notifications", ["created_at"]) op.create_index("ix_notifications_user_read", "notifications", ["user_id", "read"]) + # Set REPLICA IDENTITY FULL (required by Electric SQL for replication) + # This allows Electric SQL to track all column values for updates/deletes + op.execute("ALTER TABLE notifications REPLICA IDENTITY FULL;") + + # Note: ElectricSQL 1.x dynamically adds tables to the publication when + # clients subscribe to shapes. No need to manually create publications. + def downgrade() -> None: """Downgrade schema - remove notifications table.""" @@ -48,4 +55,3 @@ def downgrade() -> None: op.drop_index("ix_notifications_read", table_name="notifications") op.drop_index("ix_notifications_user_id", table_name="notifications") op.drop_table("notifications") - diff --git a/surfsense_web/components/providers/ElectricProvider.tsx b/surfsense_web/components/providers/ElectricProvider.tsx index 41926358a..bb04a91c3 100644 --- a/surfsense_web/components/providers/ElectricProvider.tsx +++ b/surfsense_web/components/providers/ElectricProvider.tsx @@ -1,31 +1,53 @@ "use client" import { useEffect, useState } from 'react' -import { initElectric } from '@/lib/electric/client' +import { initElectric, isElectricInitialized } from '@/lib/electric/client' interface ElectricProviderProps { children: React.ReactNode } +/** + * ElectricProvider initializes the Electric SQL client with PGlite + * + * This provider ensures Electric is initialized before rendering children, + * but doesn't block if initialization fails (app can still work without real-time sync) + */ export function ElectricProvider({ children }: ElectricProviderProps) { const [initialized, setInitialized] = useState(false) const [error, setError] = useState(null) useEffect(() => { + // Skip if already initialized + if (isElectricInitialized()) { + setInitialized(true) + return + } + + let mounted = true + async function init() { try { await initElectric() - setInitialized(true) - setError(null) + if (mounted) { + setInitialized(true) + setError(null) + } } catch (err) { console.error('Failed to initialize Electric SQL:', err) - setError(err instanceof Error ? err : new Error('Failed to initialize Electric SQL')) - // Don't block rendering if Electric SQL fails - app can still work - setInitialized(true) + if (mounted) { + setError(err instanceof Error ? err : new Error('Failed to initialize Electric SQL')) + // Don't block rendering if Electric SQL fails - app can still work + setInitialized(true) + } } } init() + + return () => { + mounted = false + } }, []) // Show loading state only briefly, then render children @@ -38,6 +60,10 @@ export function ElectricProvider({ children }: ElectricProviderProps) { ) } + // If there's an error, still render children but log the error + if (error) { + console.warn('Electric SQL initialization failed, notifications may not sync:', error.message) + } + return <>{children} } - diff --git a/surfsense_web/electric.config.ts b/surfsense_web/electric.config.ts deleted file mode 100644 index 08b786da8..000000000 --- a/surfsense_web/electric.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineConfig } from '@electric-sql/cli' - -export default defineConfig({ - connection: { - host: process.env.ELECTRIC_HOST || 'localhost', - port: parseInt(process.env.ELECTRIC_PORT || '5133', 10), - database: process.env.POSTGRES_DB || 'surfsense', - user: process.env.ELECTRIC_USER || 'electric', - password: process.env.ELECTRIC_PASSWORD || 'electric_password', - }, - outDir: './lib/electric/generated', - service: { - host: process.env.ELECTRIC_HOST || 'localhost', - port: parseInt(process.env.ELECTRIC_PORT || '5133', 10), - }, -}) - diff --git a/surfsense_web/hooks/use-notifications.ts b/surfsense_web/hooks/use-notifications.ts index c52ea37b9..01280c8ff 100644 --- a/surfsense_web/hooks/use-notifications.ts +++ b/surfsense_web/hooks/use-notifications.ts @@ -1,8 +1,7 @@ "use client" -import { useEffect, useState, useCallback } from 'react' -import { useLiveQuery } from 'electric-sql/react' -import { initElectric, getElectric, isElectricInitialized } from '@/lib/electric/client' +import { useEffect, useState, useCallback, useRef } from 'react' +import { initElectric, getElectric, isElectricInitialized, type ElectricClient, type SyncHandle } from '@/lib/electric/client' export interface Notification { id: number @@ -12,49 +11,116 @@ export interface Notification { title: string message: string read: boolean - metadata: Record + metadata: Record created_at: string updated_at: string | null } export function useNotifications(userId: string | null) { - const [electric, setElectric] = useState(null) + const [electric, setElectric] = useState(null) + const [notifications, setNotifications] = useState([]) const [initialized, setInitialized] = useState(false) const [error, setError] = useState(null) + const syncHandleRef = useRef(null) + const pollIntervalRef = useRef | null>(null) - // Initialize Electric SQL + // Initialize Electric SQL and start syncing useEffect(() => { if (!userId || initialized) return + let mounted = true + async function init() { try { const electricClient = await initElectric() + if (!mounted) return + setElectric(electricClient) + + // Start syncing notifications for this user + const handle = await electricClient.syncShape({ + table: 'notifications', + where: `user_id = '${userId}'`, + primaryKey: ['id'], + }) + + if (!mounted) { + handle.unsubscribe() + return + } + + syncHandleRef.current = handle setInitialized(true) setError(null) + + // Initial fetch + await fetchNotifications(electricClient.db) } catch (err) { + if (!mounted) return console.error('Failed to initialize Electric SQL:', err) setError(err instanceof Error ? err : new Error('Failed to initialize Electric SQL')) + // Still mark as initialized so the UI doesn't block + setInitialized(true) + } + } + + async function fetchNotifications(db: InstanceType) { + try { + const result = await db.query( + `SELECT * FROM notifications + WHERE user_id = $1 + ORDER BY created_at DESC`, + [userId] + ) + if (mounted) { + setNotifications(result.rows) + } + } catch (err) { + console.error('Failed to fetch notifications:', err) } } init() + + return () => { + mounted = false + if (syncHandleRef.current) { + syncHandleRef.current.unsubscribe() + syncHandleRef.current = null + } + } }, [userId, initialized]) - // Use live query to get notifications - const { results: notifications } = useLiveQuery( - electric?.db.notifications?.liveMany({ - where: { - user_id: userId || '', - read: false, - }, - orderBy: { - created_at: 'desc', - }, - }) - ) ?? { results: [] } + // Poll for updates (PGlite doesn't have live queries like the old electric-sql) + useEffect(() => { + if (!electric || !userId || !initialized) return - // Mark notification as read + const fetchNotifications = async () => { + try { + const result = await electric.db.query( + `SELECT * FROM notifications + WHERE user_id = $1 + ORDER BY created_at DESC`, + [userId] + ) + setNotifications(result.rows) + } catch (err) { + console.error('Failed to fetch notifications:', err) + } + } + + // Poll every 2 seconds for updates + pollIntervalRef.current = setInterval(fetchNotifications, 2000) + + return () => { + if (pollIntervalRef.current) { + clearInterval(pollIntervalRef.current) + pollIntervalRef.current = null + } + } + }, [electric, userId, initialized]) + + // Mark notification as read (local only - needs backend sync) const markAsRead = useCallback( async (notificationId: number) => { if (!electric || !isElectricInitialized()) { @@ -63,10 +129,20 @@ export function useNotifications(userId: string | null) { } try { - await electric.db.notifications.update({ - data: { read: true }, - where: { id: notificationId }, - }) + // Update locally in PGlite + await electric.db.exec( + `UPDATE notifications SET read = true, updated_at = NOW() WHERE id = $1`, + [notificationId] + ) + + // Update local state + setNotifications(prev => + prev.map(n => n.id === notificationId ? { ...n, read: true } : n) + ) + + // TODO: Also send to backend to persist the change + // This could be done via a REST API call + return true } catch (err) { console.error('Failed to mark notification as read:', err) @@ -84,7 +160,7 @@ export function useNotifications(userId: string | null) { } try { - const unread = (notifications || []).filter((n: Notification) => !n.read) + const unread = notifications.filter(n => !n.read) for (const notification of unread) { await markAsRead(notification.id) } @@ -96,10 +172,10 @@ export function useNotifications(userId: string | null) { }, [electric, notifications, markAsRead]) // Get unread count - const unreadCount = (notifications || []).filter((n: Notification) => !n.read).length + const unreadCount = notifications.filter(n => !n.read).length return { - notifications: (notifications || []) as Notification[], + notifications, unreadCount, markAsRead, markAllAsRead, @@ -107,4 +183,3 @@ export function useNotifications(userId: string | null) { error, } } - diff --git a/surfsense_web/lib/electric/client.ts b/surfsense_web/lib/electric/client.ts index fb90bed54..19feb87a0 100644 --- a/surfsense_web/lib/electric/client.ts +++ b/surfsense_web/lib/electric/client.ts @@ -1,24 +1,56 @@ /** - * Electric SQL client setup - * This initializes the Electric SQL client with local PGlite database (PostgreSQL in browser) + * Electric SQL client setup for ElectricSQL 1.x with PGlite + * + * This uses the new ElectricSQL 1.x architecture: + * - PGlite: In-browser PostgreSQL database (local storage) + * - @electric-sql/pglite-sync: Sync plugin to sync Electric shapes into PGlite + * - @electric-sql/client: HTTP client for subscribing to shapes */ import { PGlite } from '@electric-sql/pglite' -import { electrify } from 'electric-sql/pglite' -import { getElectricAuthToken } from './auth' +import { electricSync } from '@electric-sql/pglite-sync' -// We'll generate the schema after running electric:generate -// For now, we'll use a placeholder type -type Electric = any -type Schema = any +// Types +export interface ElectricClient { + db: PGlite + syncShape: >(options: SyncShapeOptions) => Promise> +} -let electric: Electric | null = null +export interface SyncShapeOptions { + table: string + where?: string + columns?: string[] + primaryKey?: string[] +} + +export interface SyncHandle> { + unsubscribe: () => void + isUpToDate: boolean + shape: { + handle?: string + offset?: string + } +} + +// Singleton instance +let electricClient: ElectricClient | null = null let isInitializing = false -let initPromise: Promise | null = null +let initPromise: Promise | null = null -export async function initElectric(): Promise { - if (electric) { - return electric +// Get Electric URL from environment +function getElectricUrl(): string { + if (typeof window !== 'undefined') { + return process.env.NEXT_PUBLIC_ELECTRIC_URL || 'http://localhost:5133' + } + return 'http://localhost:5133' +} + +/** + * Initialize the Electric SQL client with PGlite and sync plugin + */ +export async function initElectric(): Promise { + if (electricClient) { + return electricClient } if (isInitializing && initPromise) { @@ -28,40 +60,75 @@ export async function initElectric(): Promise { isInitializing = true initPromise = (async () => { try { - const config = { - auth: { - token: await getElectricAuthToken(), - }, - url: process.env.NEXT_PUBLIC_ELECTRIC_URL || 'http://localhost:5133', - } - - // Initialize PGlite database (PostgreSQL in browser) - // Use idb:// prefix for IndexedDB storage in browser - // relaxedDurability improves responsiveness by scheduling flush after query returns - const conn = new PGlite('idb://surfsense.db', { + // Create PGlite instance with Electric sync plugin + const db = await PGlite.create('idb://surfsense-notifications', { relaxedDurability: true, + extensions: { + electric: electricSync(), + }, }) - // Import schema (will be generated by electric:generate) - // For now, we'll use a dynamic import that will work after schema generation - let schema: Schema - try { - const schemaModule = await import('./generated/schema') - schema = schemaModule.schema - } catch (error) { - console.warn( - 'Electric SQL schema not found. Run "pnpm electric:generate" to generate it.', - error - ) - // Return a mock electric client for now - return null as any + // Create the notifications table schema in PGlite + // This matches the backend schema + await db.exec(` + CREATE TABLE IF NOT EXISTS notifications ( + id INTEGER PRIMARY KEY, + user_id TEXT NOT NULL, + search_space_id INTEGER, + type TEXT NOT NULL, + title TEXT NOT NULL, + message TEXT NOT NULL, + read BOOLEAN NOT NULL DEFAULT FALSE, + metadata JSONB DEFAULT '{}', + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ + ); + + CREATE INDEX IF NOT EXISTS idx_notifications_user_id ON notifications(user_id); + CREATE INDEX IF NOT EXISTS idx_notifications_read ON notifications(read); + `) + + const electricUrl = getElectricUrl() + + // Create the client wrapper + electricClient = { + db, + syncShape: async >(options: SyncShapeOptions): Promise> => { + const { table, where, columns, primaryKey = ['id'] } = options + + // Build params for the shape request + const params: Record = { table } + if (where) params.where = where + if (columns) params.columns = columns.join(',') + + // Use PGlite's electric sync plugin to sync the shape + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const shape = await (db as any).electric.syncShapeToTable({ + shape: { + url: `${electricUrl}/v1/shape`, + params, + }, + table, + primaryKey, + }) + + return { + unsubscribe: () => { + if (shape && typeof shape.unsubscribe === 'function') { + shape.unsubscribe() + } + }, + isUpToDate: shape?.isUpToDate ?? false, + shape: { + handle: shape?.handle, + offset: shape?.offset, + }, + } + }, } - // Electrify the PGlite database connection - electric = await electrify(conn, schema, config) - console.log('Electric SQL initialized successfully with PGlite') - return electric + return electricClient } catch (error) { console.error('Failed to initialize Electric SQL:', error) throw error @@ -73,14 +140,26 @@ export async function initElectric(): Promise { return initPromise } -export function getElectric(): Electric { - if (!electric) { +/** + * Get the Electric client (throws if not initialized) + */ +export function getElectric(): ElectricClient { + if (!electricClient) { throw new Error('Electric not initialized. Call initElectric() first.') } - return electric + return electricClient } +/** + * Check if Electric is initialized + */ export function isElectricInitialized(): boolean { - return electric !== null + return electricClient !== null } +/** + * Get the PGlite database instance + */ +export function getDb(): PGlite | null { + return electricClient?.db ?? null +} diff --git a/surfsense_web/lib/electric/config.ts b/surfsense_web/lib/electric/config.ts deleted file mode 100644 index 5342888c1..000000000 --- a/surfsense_web/lib/electric/config.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Electric SQL configuration - * This file will be used by @electric-sql/cli to generate the schema - */ - -export const electricConfig = { - connection: { - host: process.env.ELECTRIC_HOST || 'localhost', - port: parseInt(process.env.ELECTRIC_PORT || '5133', 10), - database: process.env.POSTGRES_DB || 'surfsense', - user: process.env.ELECTRIC_USER || 'electric', - password: process.env.ELECTRIC_PASSWORD || 'electric_password', - }, - service: { - host: process.env.ELECTRIC_HOST || 'localhost', - port: parseInt(process.env.ELECTRIC_PORT || '5133', 10), - }, -} - diff --git a/surfsense_web/package.json b/surfsense_web/package.json index a5539be8e..e097fee33 100644 --- a/surfsense_web/package.json +++ b/surfsense_web/package.json @@ -18,9 +18,7 @@ "db:migrate": "drizzle-kit migrate", "db:push": "drizzle-kit push", "db:studio": "drizzle-kit studio", - "format:fix": "npx @biomejs/biome check --fix", - "electric:generate": "electric generate", - "electric:watch": "electric watch" + "format:fix": "npx @biomejs/biome check --fix" }, "dependencies": { "@ai-sdk/react": "^1.2.12", @@ -33,6 +31,8 @@ "@blocknote/server-util": "^0.45.0", "@electric-sql/client": "^1.4.0", "@electric-sql/pglite": "^0.2.17", + "@electric-sql/pglite-sync": "^0.4.0", + "@electric-sql/react": "^1.0.26", "@hookform/resolvers": "^5.2.2", "@number-flow/react": "^0.5.10", "@posthog/react": "^1.5.2", @@ -71,7 +71,6 @@ "date-fns": "^4.1.0", "dotenv": "^17.2.3", "drizzle-orm": "^0.44.5", - "electric-sql": "^0.12.1", "emblor": "^1.4.8", "fumadocs-core": "^16.3.1", "fumadocs-mdx": "^14.2.1", @@ -110,7 +109,6 @@ }, "devDependencies": { "@biomejs/biome": "2.1.2", - "@electric-sql/cli": "0.11.4-canary.cb19c58", "@eslint/eslintrc": "^3.3.1", "@tailwindcss/postcss": "^4.1.11", "@tailwindcss/typography": "^0.5.16", diff --git a/surfsense_web/pnpm-lock.yaml b/surfsense_web/pnpm-lock.yaml index b13ec87b0..ad26fa624 100644 --- a/surfsense_web/pnpm-lock.yaml +++ b/surfsense_web/pnpm-lock.yaml @@ -38,6 +38,12 @@ importers: '@electric-sql/pglite': specifier: ^0.2.17 version: 0.2.17 + '@electric-sql/pglite-sync': + specifier: ^0.4.0 + version: 0.4.0(@electric-sql/pglite@0.2.17) + '@electric-sql/react': + specifier: ^1.0.26 + version: 1.0.26(react@19.2.3) '@hookform/resolvers': specifier: ^5.2.2 version: 5.2.2(react-hook-form@7.69.0(react@19.2.3)) @@ -152,9 +158,6 @@ importers: drizzle-orm: specifier: ^0.44.5 version: 0.44.7(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@prisma/client@4.8.1)(@types/pg@8.16.0)(better-sqlite3@11.10.0)(pg@8.16.3)(postgres@3.4.7) - electric-sql: - specifier: ^0.12.1 - version: 0.12.1(@electric-sql/pglite@0.2.17)(pg@8.16.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@4.2.1) emblor: specifier: ^1.4.8 version: 1.4.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -264,9 +267,6 @@ importers: '@biomejs/biome': specifier: 2.1.2 version: 2.1.2 - '@electric-sql/cli': - specifier: 0.11.4-canary.cb19c58 - version: 0.11.4-canary.cb19c58(@electric-sql/pglite@0.2.17)(pg@8.16.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@eslint/eslintrc': specifier: ^3.3.1 version: 3.3.3 @@ -562,24 +562,29 @@ packages: '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} - '@electric-sql/cli@0.11.4-canary.cb19c58': - resolution: {integrity: sha512-5B8V3CwUOVp+p6WARTFIc9EkLLSiXH14FG66Y7Ct7s5+05IErQZIGQ41OQY29iHMIY24JMjo2UxZu/aBDUd6Kg==} - hasBin: true - peerDependencies: - prisma: 4.8.1 - peerDependenciesMeta: - prisma: - optional: true - '@electric-sql/client@1.4.0': resolution: {integrity: sha512-JTJxm3r5KXhpSEJ+C89gWbGzIH+UnPlzD92iNdtkXYx2gkoJcgd2h0YfaBF2Tu1k3yVG/pje/6CeFlHI9JrsCQ==} + '@electric-sql/experimental@1.0.14': + resolution: {integrity: sha512-Wpv9UC7r4JYnQO4GbtQve7SVIX/VcBwAP12Xx11ObK2TBI+NJHtDRimUEKKQorq9Kr6yTAJ3BYOKCINxFsbDIg==} + peerDependencies: + '@electric-sql/client': 1.0.14 + + '@electric-sql/pglite-sync@0.4.0': + resolution: {integrity: sha512-0JUBXs7jK2monIrtvfSO7LmiKCyYfi+hQ+7EvVVNei0R7yeyRiSaywkk6yYtJZpTTRFKoByjpHwIc3fbXfgZSA==} + peerDependencies: + '@electric-sql/pglite': 0.3.14 + '@electric-sql/pglite@0.2.17': resolution: {integrity: sha512-qEpKRT2oUaWDH6tjRxLHjdzMqRUGYDnGZlKrnL4dJ77JVMcP2Hpo3NYnOSPKdZdeec57B6QPprCUFg0picx5Pw==} - '@electric-sql/prisma-generator@1.1.5': - resolution: {integrity: sha512-O7+DCq1QDmFY7Y5BfeD9e7ftUWpKLAQ+lz2qRuExtMtkfsvZPwAOmu6HhTBaLdo+/rZz1wnAEdnzksFv4LlgAw==} - hasBin: true + '@electric-sql/react@1.0.26': + resolution: {integrity: sha512-cCKLQrtGNaAPBzdLZk97bK/Hue3fKkfL0/aA5HAPzoo7U07/TRzzs4EVRy7q+BV6AONEK+YXxxrzH9gEH8YVQA==} + peerDependencies: + react: '>=18.3.1 <20.0.0' + peerDependenciesMeta: + react: + optional: true '@emnapi/core@1.7.1': resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} @@ -1545,45 +1550,9 @@ packages: prisma: optional: true - '@prisma/debug@4.16.2': - resolution: {integrity: sha512-7L7WbG0qNNZYgLpsVB8rCHCXEyHFyIycRlRDNwkVfjQmACC2OW6AWCYCbfdjQhkF/t7+S3njj8wAWAocSs+Brw==} - '@prisma/engines-version@4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe': resolution: {integrity: sha512-MHSOSexomRMom8QN4t7bu87wPPD+pa+hW9+71JnVcF3DqyyO/ycCLhRL1we3EojRpZxKvuyGho2REQsMCvxcJw==} - '@prisma/generator-helper@4.16.2': - resolution: {integrity: sha512-bMOH7y73Ui7gpQrioFeavMQA+Tf8ksaVf8Nhs9rQNzuSg8SSV6E9baczob0L5KGZTSgYoqnrRxuo03kVJYrnIg==} - - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -2769,9 +2738,6 @@ packages: '@types/canvas-confetti@1.9.0': resolution: {integrity: sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==} - '@types/cross-spawn@6.0.2': - resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} - '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -2868,9 +2834,6 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/debug@4.1.8': - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} - '@types/diff-match-patch@1.0.36': resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} @@ -3142,10 +3105,6 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -3210,9 +3169,6 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - async-mutex@0.4.1: - resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -3238,9 +3194,6 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base-64@1.0.0: - resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -3254,9 +3207,6 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@1.2.3: - resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -3270,18 +3220,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - - buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -3382,9 +3320,6 @@ packages: react: ^18 || ^19 || ^19.0.0-rc react-dom: ^18 || ^19 || ^19.0.0-rc - code-block-writer@11.0.3: - resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} - collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} @@ -3405,13 +3340,6 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -3432,9 +3360,6 @@ packages: core-js@3.47.0: resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} @@ -3449,13 +3374,6 @@ packages: engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true - cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -3664,24 +3582,6 @@ packages: supports-color: optional: true - debug@4.3.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -3701,26 +3601,6 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - decompress-tar@4.1.1: - resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} - engines: {node: '>=4'} - - decompress-tarbz2@4.1.1: - resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} - engines: {node: '>=4'} - - decompress-targz@4.1.1: - resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} - engines: {node: '>=4'} - - decompress-unzip@4.0.1: - resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} - engines: {node: '>=4'} - - decompress@4.2.1: - resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} - engines: {node: '>=4'} - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -3772,14 +3652,6 @@ packages: dompurify@3.3.1: resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} - dotenv-flow@4.1.0: - resolution: {integrity: sha512-0cwP9jpQBQfyHwvE0cRhraZMkdV45TQedA8AAUZMsFzvmLcQyc1HPv+oX0OOYwLFjIlvgVepQ+WuQHbqDaHJZg==} - engines: {node: '>= 12.0.0'} - - dotenv@16.6.1: - resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} - engines: {node: '>=12'} - dotenv@17.2.3: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} @@ -3884,56 +3756,6 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - electric-sql@0.12.1: - resolution: {integrity: sha512-d9THXiZSIX+B255uJwR1HFsD3RjZcQrZHAFdmIQvFSGzIrEXVhreMrrCOB+CcbETFZg1ARdZEhGSe4MBXGC6/g==} - deprecated: We've rebuilt the sync engine. See https://next.electric-sql.com/about for more info and the quickstart there for getting started with the new system - hasBin: true - peerDependencies: - '@capacitor-community/sqlite': '>= 5.6.2' - '@electric-sql/pglite': '>= 0.1.5' - '@op-engineering/op-sqlite': '>= 2.0.16' - '@tauri-apps/plugin-sql': 2.0.0-alpha.5 - embedded-postgres: 16.1.1-beta.9 - expo-sqlite: '>= 13.0.0' - pg: ^8.11.3 - prisma: 4.8.1 - react: '>= 16.8.0' - react-dom: '>= 16.8.0' - react-native: '>= 0.68.0' - typeorm: '>=0.3.0' - vue: '>=3.0.0' - wa-sqlite: rhashimoto/wa-sqlite#semver:^0.9.8 - zod: 3.21.1 - peerDependenciesMeta: - '@capacitor-community/sqlite': - optional: true - '@electric-sql/pglite': - optional: true - '@op-engineering/op-sqlite': - optional: true - '@tauri-apps/plugin-sql': - optional: true - embedded-postgres: - optional: true - expo-sqlite: - optional: true - pg: - optional: true - prisma: - optional: true - react: - optional: true - react-dom: - optional: true - react-native: - optional: true - typeorm: - optional: true - vue: - optional: true - wa-sqlite: - optional: true - emblor@1.4.8: resolution: {integrity: sha512-Vqtz4Gepa7CIkmplQ+kvJnsSZJ4sAyHvQqqX2iCmgoRo5iRQFxr+5FJkk6QuLVNH5vrbBZEYxg7sMZuDCnQ/PQ==} peerDependencies: @@ -4170,10 +3992,6 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - eventsource-parser@3.0.6: resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} engines: {node: '>=18.0.0'} @@ -4182,9 +4000,6 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - exponential-backoff@3.1.3: - resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -4211,9 +4026,6 @@ packages: fault@1.0.4: resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -4234,18 +4046,6 @@ packages: resolution: {integrity: sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==} engines: {node: '>= 12'} - file-type@3.9.0: - resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} - engines: {node: '>=0.10.0'} - - file-type@5.2.0: - resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} - engines: {node: '>=4'} - - file-type@6.2.0: - resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} - engines: {node: '>=4'} - file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -4276,10 +4076,6 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - frame-stream@3.0.1: - resolution: {integrity: sha512-Fu8Cdbt2hHfb7wp2HBG5AOfMO5qaglHoJuoiEoQKHS+mZtO/IsMiac3wEQtBVDmOLVmCmDeoutXbrfPlpwMiqg==} - engines: {node: '>=14'} - framer-motion@12.23.26: resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==} peerDependencies: @@ -4406,18 +4202,10 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} - get-port@7.1.0: - resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} - engines: {node: '>=16'} - get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stream@2.3.1: - resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} - engines: {node: '>=0.10.0'} - get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -4645,10 +4433,6 @@ packages: intl-messageformat@10.7.18: resolution: {integrity: sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==} - ip-regex@4.3.0: - resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} - engines: {node: '>=8'} - is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} @@ -4728,9 +4512,6 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} - is-natural-number@4.0.1: - resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} - is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -4762,10 +4543,6 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -4778,9 +4555,6 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -4793,13 +4567,6 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} - is2@2.0.9: - resolution: {integrity: sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==} - engines: {node: '>=v0.10.0'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -4817,9 +4584,6 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - jose@4.15.9: - resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} - jotai-tanstack-query@0.11.0: resolution: {integrity: sha512-Ys0u0IuuS6/okUJOulFTdCVfVaeKbm1+lKVSN9zHhIxtrAXl9FM4yu7fNvxM6fSz/NCE9tZOKR0MQ3hvplaH8A==} peerDependencies: @@ -4902,14 +4666,6 @@ packages: khroma@2.1.0: resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - langium@3.3.1: resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} engines: {node: '>=16.0.0'} @@ -5022,48 +4778,9 @@ packages: lodash-es@4.17.22: resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} - lodash.flow@3.5.0: - resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - - lodash.groupby@4.6.0: - resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - - lodash.mapvalues@4.6.0: - resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.omitby@4.6.0: - resolution: {integrity: sha512-5OrRcIVR75M288p4nbI2WLAf3ndw2GD9fyNv3Bc15+WCxJDdZ4lYndSxGd7hnG6PVjiJTeJE2dHEGhIuKGicIQ==} - - lodash.partition@4.6.0: - resolution: {integrity: sha512-35L3dSF3Q6V1w5j6V3NhNlQjzsRDC/pYKCTdYTmwqSib+Q8ponkAmt/PwEOq3EmI38DSCl+SkIVwLd+uSlVdrg==} - - lodash.pick@4.4.0: - resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} - deprecated: This package is deprecated. Use destructuring assignment syntax instead. - - lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - - lodash.uniqwith@4.5.0: - resolution: {integrity: sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} - engines: {node: '>= 0.6.0'} - - long@5.3.2: - resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -5090,10 +4807,6 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - make-dir@1.3.0: - resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} - engines: {node: '>=4'} - markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -5364,9 +5077,6 @@ packages: react-dom: optional: true - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -5442,15 +5152,6 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - npm-to-yarn@3.0.1: resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5489,17 +5190,10 @@ packages: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} - object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - object.values@1.2.1: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - ohash@1.1.6: - resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -5564,9 +5258,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - pg-cloudflare@1.2.7: resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} @@ -5612,22 +5303,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - - pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -5707,13 +5382,6 @@ packages: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -5816,10 +5484,6 @@ packages: prosemirror-view@1.41.4: resolution: {integrity: sha512-WkKgnyjNncri03Gjaz3IFWvCAE94XoiEgvtr0/r2Xw7R8/IjK3sKLSiDoCHWcsXSAinVaKlGRZDvMCsF1kbzjA==} - protobufjs@7.5.4: - resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} - engines: {node: '>=12.0.0'} - pump@3.0.3: resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} @@ -5970,9 +5634,6 @@ packages: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -6134,9 +5795,6 @@ packages: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -6167,10 +5825,6 @@ packages: secure-json-parse@4.1.0: resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} - seek-bzip@1.0.6: - resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} - hasBin: true - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -6232,9 +5886,6 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sonner@2.0.7: resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} peerDependencies: @@ -6266,11 +5917,6 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} - squel@5.13.0: - resolution: {integrity: sha512-Fzd8zqbuqNwzodO3yO6MkX8qiDoVBuwqAaa3eKNz4idhBf24IQHbatBhLUiHAGGl962eGvPVRxzRuFWZlSf49w==} - engines: {node: '>= 0.12.0'} - deprecated: No longer maintained - stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} @@ -6306,26 +5952,16 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-dirs@2.1.0: - resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -6393,27 +6029,14 @@ packages: tar-fs@2.1.4: resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - tar-stream@1.6.2: - resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} - engines: {node: '>= 0.8.0'} - tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tcp-port-used@1.0.2: - resolution: {integrity: sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==} - - text-encoder-lite@2.0.0: - resolution: {integrity: sha512-bo08ND8LlBwPeU23EluRUcO3p2Rsb/eN5EIfOVqfRmblNDEVKK5IzM9Qfidvo+odT0hhV8mpXQcP/M5MMzABXw==} - throttleit@2.1.0: resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} engines: {node: '>=18'} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -6429,10 +6052,6 @@ packages: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - to-buffer@1.2.2: - resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} - engines: {node: '>= 0.4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -6441,9 +6060,6 @@ packages: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -6520,9 +6136,6 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -6669,9 +6282,6 @@ packages: web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -6688,9 +6298,6 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -6758,9 +6365,6 @@ packages: peerDependencies: yjs: ^13.0.0 - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yjs@13.6.28: resolution: {integrity: sha512-EgnDOXs8+hBVm6mq3/S89Kiwzh5JRbn7w2wXwbrMRyKy/8dOFsLvuIfC+x19ZdtaDc0tA9rQmdZzbqqNHG44wA==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} @@ -6774,9 +6378,6 @@ packages: peerDependencies: zod: ^3.25 || ^4 - zod@3.21.1: - resolution: {integrity: sha512-+dTu2m6gmCbO9Ahm4ZBDapx2O6ZY9QSPXst2WXjcznPMwf2YNpn3RevLx4KkZp1OPW/ouFcoBtBzFz/LeY69oA==} - zod@4.2.1: resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==} @@ -7147,53 +6748,32 @@ snapshots: '@drizzle-team/brocli@0.10.2': {} - '@electric-sql/cli@0.11.4-canary.cb19c58(@electric-sql/pglite@0.2.17)(pg@8.16.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': - dependencies: - '@electric-sql/prisma-generator': 1.1.5 - '@prisma/client': 4.8.1 - commander: 11.1.0 - decompress: 4.2.1 - dotenv-flow: 4.1.0 - electric-sql: 0.12.1(@electric-sql/pglite@0.2.17)(pg@8.16.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@3.21.1) - get-port: 7.1.0 - ts-dedent: 2.2.0 - ws: 8.18.3 - zod: 3.21.1 - transitivePeerDependencies: - - '@capacitor-community/sqlite' - - '@electric-sql/pglite' - - '@op-engineering/op-sqlite' - - '@tauri-apps/plugin-sql' - - bufferutil - - embedded-postgres - - encoding - - expo-sqlite - - pg - - react - - react-dom - - react-native - - supports-color - - typeorm - - utf-8-validate - - vue - - wa-sqlite - '@electric-sql/client@1.4.0': dependencies: '@microsoft/fetch-event-source': 2.0.1 optionalDependencies: '@rollup/rollup-darwin-arm64': 4.55.1 + '@electric-sql/experimental@1.0.14(@electric-sql/client@1.4.0)': + dependencies: + '@electric-sql/client': 1.4.0 + optionalDependencies: + '@rollup/rollup-darwin-arm64': 4.55.1 + + '@electric-sql/pglite-sync@0.4.0(@electric-sql/pglite@0.2.17)': + dependencies: + '@electric-sql/client': 1.4.0 + '@electric-sql/experimental': 1.0.14(@electric-sql/client@1.4.0) + '@electric-sql/pglite': 0.2.17 + '@electric-sql/pglite@0.2.17': {} - '@electric-sql/prisma-generator@1.1.5': + '@electric-sql/react@1.0.26(react@19.2.3)': dependencies: - '@prisma/generator-helper': 4.16.2 - code-block-writer: 11.0.3 - lodash: 4.17.21 - zod: 3.21.1 - transitivePeerDependencies: - - supports-color + '@electric-sql/client': 1.4.0 + use-sync-external-store: 1.6.0(react@19.2.3) + optionalDependencies: + react: 19.2.3 '@emnapi/core@1.7.1': dependencies: @@ -7916,48 +7496,10 @@ snapshots: '@prisma/client@4.8.1': dependencies: '@prisma/engines-version': 4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe + optional: true - '@prisma/debug@4.16.2': - dependencies: - '@types/debug': 4.1.8 - debug: 4.3.4 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - '@prisma/engines-version@4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe': {} - - '@prisma/generator-helper@4.16.2': - dependencies: - '@prisma/debug': 4.16.2 - '@types/cross-spawn': 6.0.2 - cross-spawn: 7.0.3 - kleur: 4.1.5 - transitivePeerDependencies: - - supports-color - - '@protobufjs/aspromise@1.1.2': {} - - '@protobufjs/base64@1.1.2': {} - - '@protobufjs/codegen@2.0.4': {} - - '@protobufjs/eventemitter@1.1.0': {} - - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - '@protobufjs/float@1.0.2': {} - - '@protobufjs/inquire@1.1.0': {} - - '@protobufjs/path@1.1.2': {} - - '@protobufjs/pool@1.1.0': {} - - '@protobufjs/utf8@1.1.0': {} + '@prisma/engines-version@4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe': + optional: true '@radix-ui/number@1.1.1': {} @@ -9176,10 +8718,6 @@ snapshots: '@types/canvas-confetti@1.9.0': {} - '@types/cross-spawn@6.0.2': - dependencies: - '@types/node': 20.19.27 - '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -9301,10 +8839,6 @@ snapshots: dependencies: '@types/ms': 2.1.0 - '@types/debug@4.1.8': - dependencies: - '@types/ms': 2.1.0 - '@types/diff-match-patch@1.0.36': {} '@types/estree-jsx@1.0.5': @@ -9568,8 +9102,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansi-regex@5.0.1: {} - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -9665,10 +9197,6 @@ snapshots: async-function@1.0.0: {} - async-mutex@0.4.1: - dependencies: - tslib: 2.8.1 - asynckit@0.4.0: {} attr-accept@2.2.5: {} @@ -9685,9 +9213,8 @@ snapshots: balanced-match@1.0.2: {} - base-64@1.0.0: {} - - base64-js@1.5.1: {} + base64-js@1.5.1: + optional: true baseline-browser-mapping@2.9.11: {} @@ -9695,21 +9222,19 @@ snapshots: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 + optional: true bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 - - bl@1.2.3: - dependencies: - readable-stream: 2.3.8 - safe-buffer: 5.2.1 + optional: true bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true brace-expansion@1.1.12: dependencies: @@ -9724,23 +9249,13 @@ snapshots: dependencies: fill-range: 7.1.1 - buffer-alloc-unsafe@1.1.0: {} - - buffer-alloc@1.2.0: - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - - buffer-crc32@0.2.13: {} - - buffer-fill@1.0.0: {} - buffer-from@1.1.2: {} buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true call-bind-apply-helpers@1.0.2: dependencies: @@ -9806,7 +9321,8 @@ snapshots: dependencies: readdirp: 5.0.0 - chownr@1.1.4: {} + chownr@1.1.4: + optional: true class-variance-authority@0.7.1: dependencies: @@ -9838,8 +9354,6 @@ snapshots: - '@types/react' - '@types/react-dom' - code-block-writer@11.0.3: {} - collapse-white-space@2.1.0: {} color-convert@2.0.1: @@ -9856,10 +9370,6 @@ snapshots: comma-separated-tokens@2.0.3: {} - commander@11.1.0: {} - - commander@2.20.3: {} - commander@7.2.0: {} commander@8.3.0: {} @@ -9872,8 +9382,6 @@ snapshots: core-js@3.47.0: {} - core-util-is@1.0.3: {} - cose-base@1.0.3: dependencies: layout-base: 1.0.2 @@ -9888,18 +9396,6 @@ snapshots: dependencies: cross-spawn: 7.0.6 - cross-fetch@3.2.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -10134,14 +9630,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.1: - dependencies: - ms: 2.1.2 - - debug@4.3.4: - dependencies: - ms: 2.1.2 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -10155,46 +9643,10 @@ snapshots: decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 + optional: true - decompress-tar@4.1.1: - dependencies: - file-type: 5.2.0 - is-stream: 1.1.0 - tar-stream: 1.6.2 - - decompress-tarbz2@4.1.1: - dependencies: - decompress-tar: 4.1.1 - file-type: 6.2.0 - is-stream: 1.1.0 - seek-bzip: 1.0.6 - unbzip2-stream: 1.4.3 - - decompress-targz@4.1.1: - dependencies: - decompress-tar: 4.1.1 - file-type: 5.2.0 - is-stream: 1.1.0 - - decompress-unzip@4.0.1: - dependencies: - file-type: 3.9.0 - get-stream: 2.3.1 - pify: 2.3.0 - yauzl: 2.10.0 - - decompress@4.2.1: - dependencies: - decompress-tar: 4.1.1 - decompress-tarbz2: 4.1.1 - decompress-targz: 4.1.1 - decompress-unzip: 4.0.1 - graceful-fs: 4.2.11 - make-dir: 1.3.0 - pify: 2.3.0 - strip-dirs: 2.1.0 - - deep-extend@0.6.0: {} + deep-extend@0.6.0: + optional: true deep-is@0.1.4: {} @@ -10238,12 +9690,6 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 - dotenv-flow@4.1.0: - dependencies: - dotenv: 16.6.1 - - dotenv@16.6.1: {} - dotenv@17.2.3: {} drizzle-kit@0.31.8: @@ -10271,102 +9717,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - electric-sql@0.12.1(@electric-sql/pglite@0.2.17)(pg@8.16.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@3.21.1): - dependencies: - '@electric-sql/prisma-generator': 1.1.5 - '@prisma/client': 4.8.1 - async-mutex: 0.4.1 - base-64: 1.0.0 - better-sqlite3: 11.10.0 - commander: 11.1.0 - cross-fetch: 3.2.0 - decompress: 4.2.1 - dotenv-flow: 4.1.0 - events: 3.3.0 - exponential-backoff: 3.1.3 - frame-stream: 3.0.1 - get-port: 7.1.0 - jose: 4.15.9 - lodash.flow: 3.5.0 - lodash.groupby: 4.6.0 - lodash.isequal: 4.5.0 - lodash.mapvalues: 4.6.0 - lodash.omitby: 4.6.0 - lodash.partition: 4.6.0 - lodash.pick: 4.4.0 - lodash.throttle: 4.1.1 - lodash.uniqwith: 4.5.0 - loglevel: 1.9.2 - long: 5.3.2 - object.hasown: 1.1.4 - ohash: 1.1.6 - prompts: 2.4.2 - protobufjs: 7.5.4 - squel: 5.13.0 - tcp-port-used: 1.0.2 - text-encoder-lite: 2.0.0 - ts-dedent: 2.2.0 - ws: 8.18.3 - zod: 3.21.1 - optionalDependencies: - '@electric-sql/pglite': 0.2.17 - pg: 8.16.3 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - electric-sql@0.12.1(@electric-sql/pglite@0.2.17)(pg@8.16.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@4.2.1): - dependencies: - '@electric-sql/prisma-generator': 1.1.5 - '@prisma/client': 4.8.1 - async-mutex: 0.4.1 - base-64: 1.0.0 - better-sqlite3: 11.10.0 - commander: 11.1.0 - cross-fetch: 3.2.0 - decompress: 4.2.1 - dotenv-flow: 4.1.0 - events: 3.3.0 - exponential-backoff: 3.1.3 - frame-stream: 3.0.1 - get-port: 7.1.0 - jose: 4.15.9 - lodash.flow: 3.5.0 - lodash.groupby: 4.6.0 - lodash.isequal: 4.5.0 - lodash.mapvalues: 4.6.0 - lodash.omitby: 4.6.0 - lodash.partition: 4.6.0 - lodash.pick: 4.4.0 - lodash.throttle: 4.1.1 - lodash.uniqwith: 4.5.0 - loglevel: 1.9.2 - long: 5.3.2 - object.hasown: 1.1.4 - ohash: 1.1.6 - prompts: 2.4.2 - protobufjs: 7.5.4 - squel: 5.13.0 - tcp-port-used: 1.0.2 - text-encoder-lite: 2.0.0 - ts-dedent: 2.2.0 - ws: 8.18.3 - zod: 4.2.1 - optionalDependencies: - '@electric-sql/pglite': 0.2.17 - pg: 8.16.3 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - emblor@1.4.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@radix-ui/react-dialog': 1.0.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -10390,6 +9740,7 @@ snapshots: end-of-stream@1.4.5: dependencies: once: 1.4.0 + optional: true enhanced-resolve@5.18.4: dependencies: @@ -10844,13 +10195,10 @@ snapshots: esutils@2.0.3: {} - events@3.3.0: {} - eventsource-parser@3.0.6: {} - expand-template@2.0.3: {} - - exponential-backoff@3.1.3: {} + expand-template@2.0.3: + optional: true extend@3.0.2: {} @@ -10878,10 +10226,6 @@ snapshots: dependencies: format: 0.2.2 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -10896,13 +10240,8 @@ snapshots: dependencies: tslib: 2.8.1 - file-type@3.9.0: {} - - file-type@5.2.0: {} - - file-type@6.2.0: {} - - file-uri-to-path@1.0.0: {} + file-uri-to-path@1.0.0: + optional: true fill-range@7.1.1: dependencies: @@ -10934,8 +10273,6 @@ snapshots: format@0.2.2: {} - frame-stream@3.0.1: {} - framer-motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: motion-dom: 12.23.23 @@ -10945,7 +10282,8 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - fs-constants@1.0.0: {} + fs-constants@1.0.0: + optional: true fsevents@2.3.3: optional: true @@ -11078,18 +10416,11 @@ snapshots: get-nonce@1.0.1: {} - get-port@7.1.0: {} - get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stream@2.3.1: - dependencies: - object-assign: 4.1.1 - pinkie-promise: 2.0.1 - get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -11100,7 +10431,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - github-from-package@0.0.0: {} + github-from-package@0.0.0: + optional: true github-slugger@2.0.0: {} @@ -11401,7 +10733,8 @@ snapshots: dependencies: safer-buffer: 2.1.2 - ieee754@1.2.1: {} + ieee754@1.2.1: + optional: true ignore@5.3.2: {} @@ -11416,9 +10749,11 @@ snapshots: imurmurhash@0.1.4: {} - inherits@2.0.4: {} + inherits@2.0.4: + optional: true - ini@1.3.8: {} + ini@1.3.8: + optional: true inline-style-parser@0.2.7: {} @@ -11439,8 +10774,6 @@ snapshots: '@formatjs/icu-messageformat-parser': 2.11.4 tslib: 2.8.1 - ip-regex@4.3.0: {} - is-alphabetical@1.0.4: {} is-alphabetical@2.0.1: {} @@ -11527,8 +10860,6 @@ snapshots: is-map@2.0.3: {} - is-natural-number@4.0.1: {} - is-negative-zero@2.0.3: {} is-number-object@1.1.1: @@ -11555,8 +10886,6 @@ snapshots: dependencies: call-bound: 1.0.4 - is-stream@1.1.0: {} - is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -11572,8 +10901,6 @@ snapshots: dependencies: which-typed-array: 1.1.19 - is-url@1.2.4: {} - is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -11585,14 +10912,6 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 - is2@2.0.9: - dependencies: - deep-is: 0.1.4 - ip-regex: 4.3.0 - is-url: 1.2.4 - - isarray@1.0.0: {} - isarray@2.0.5: {} isexe@2.0.0: {} @@ -11610,8 +10929,6 @@ snapshots: jiti@2.6.1: {} - jose@4.15.9: {} - jotai-tanstack-query@0.11.0(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.3))(jotai@2.16.0(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: '@tanstack/query-core': 5.90.12 @@ -11694,10 +11011,6 @@ snapshots: khroma@2.1.0: {} - kleur@3.0.3: {} - - kleur@4.1.5: {} - langium@3.3.1: dependencies: chevrotain: 11.0.3 @@ -11788,32 +11101,8 @@ snapshots: lodash-es@4.17.22: {} - lodash.flow@3.5.0: {} - - lodash.groupby@4.6.0: {} - - lodash.isequal@4.5.0: {} - - lodash.mapvalues@4.6.0: {} - lodash.merge@4.6.2: {} - lodash.omitby@4.6.0: {} - - lodash.partition@4.6.0: {} - - lodash.pick@4.4.0: {} - - lodash.throttle@4.1.1: {} - - lodash.uniqwith@4.5.0: {} - - lodash@4.17.21: {} - - loglevel@1.9.2: {} - - long@5.3.2: {} - longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -11839,10 +11128,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - make-dir@1.3.0: - dependencies: - pify: 3.0.0 - markdown-extensions@2.0.0: {} markdown-it@14.1.0: @@ -12379,7 +11664,8 @@ snapshots: dependencies: mime-db: 1.52.0 - mimic-response@3.1.0: {} + mimic-response@3.1.0: + optional: true minimatch@3.1.2: dependencies: @@ -12391,7 +11677,8 @@ snapshots: minimist@1.2.8: {} - mkdirp-classic@0.5.3: {} + mkdirp-classic@0.5.3: + optional: true mlly@1.8.0: dependencies: @@ -12414,15 +11701,14 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - ms@2.1.2: {} - ms@2.1.3: {} nanoid@3.3.11: {} nanoid@5.1.6: {} - napi-build-utils@2.0.0: {} + napi-build-utils@2.0.0: + optional: true napi-postinstall@0.3.4: {} @@ -12481,13 +11767,10 @@ snapshots: node-abi@3.85.0: dependencies: semver: 7.7.3 + optional: true node-addon-api@7.1.1: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - npm-to-yarn@3.0.1: {} number-flow@0.5.8: @@ -12531,12 +11814,6 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.24.1 - object.hasown@1.1.4: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-object-atoms: 1.1.1 - object.values@1.2.1: dependencies: call-bind: 1.0.8 @@ -12544,11 +11821,10 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - ohash@1.1.6: {} - once@1.4.0: dependencies: wrappy: 1.0.2 + optional: true oniguruma-parser@0.12.1: {} @@ -12624,8 +11900,6 @@ snapshots: pathe@2.0.3: {} - pend@1.2.0: {} - pg-cloudflare@1.2.7: optional: true @@ -12667,16 +11941,6 @@ snapshots: picomatch@4.0.3: {} - pify@2.3.0: {} - - pify@3.0.0: {} - - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 - - pinkie@2.0.4: {} - pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -12756,6 +12020,7 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.4 tunnel-agent: 0.6.0 + optional: true prelude-ls@1.2.1: {} @@ -12763,13 +12028,6 @@ snapshots: prismjs@1.30.0: {} - process-nextick-args@2.0.1: {} - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -12895,25 +12153,11 @@ snapshots: prosemirror-state: 1.4.4 prosemirror-transform: 1.10.5 - protobufjs@7.5.4: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 20.19.27 - long: 5.3.2 - pump@3.0.3: dependencies: end-of-stream: 1.4.5 once: 1.4.0 + optional: true punycode.js@2.3.1: {} @@ -12927,6 +12171,7 @@ snapshots: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + optional: true react-day-picker@9.13.0(react@19.2.3): dependencies: @@ -13069,21 +12314,12 @@ snapshots: react@19.2.3: {} - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + optional: true readdirp@5.0.0: {} @@ -13343,9 +12579,8 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} + safe-buffer@5.2.1: + optional: true safe-push-apply@1.0.0: dependencies: @@ -13374,10 +12609,6 @@ snapshots: secure-json-parse@4.1.0: {} - seek-bzip@1.0.6: - dependencies: - commander: 2.20.3 - semver@6.3.1: {} semver@7.7.3: {} @@ -13483,15 +12714,15 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 - simple-concat@1.0.1: {} + simple-concat@1.0.1: + optional: true simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - - sisteransi@1.0.5: {} + optional: true sonner@2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: @@ -13515,8 +12746,6 @@ snapshots: split2@4.2.0: {} - squel@5.13.0: {} - stable-hash@0.0.5: {} stop-iteration-iterator@1.1.0: @@ -13605,30 +12834,20 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 + optional: true stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - strip-bom@3.0.0: {} - strip-dirs@2.1.0: - dependencies: - is-natural-number: 4.0.1 - - strip-json-comments@2.0.1: {} + strip-json-comments@2.0.1: + optional: true strip-json-comments@3.1.1: {} @@ -13679,16 +12898,7 @@ snapshots: mkdirp-classic: 0.5.3 pump: 3.0.3 tar-stream: 2.2.0 - - tar-stream@1.6.2: - dependencies: - bl: 1.2.3 - buffer-alloc: 1.2.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - readable-stream: 2.3.8 - to-buffer: 1.2.2 - xtend: 4.0.2 + optional: true tar-stream@2.2.0: dependencies: @@ -13697,20 +12907,10 @@ snapshots: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 - - tcp-port-used@1.0.2: - dependencies: - debug: 4.3.1 - is2: 2.0.9 - transitivePeerDependencies: - - supports-color - - text-encoder-lite@2.0.0: {} + optional: true throttleit@2.1.0: {} - through@2.3.8: {} - tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -13724,12 +12924,6 @@ snapshots: dependencies: tldts-core: 6.1.86 - to-buffer@1.2.2: - dependencies: - isarray: 2.0.5 - safe-buffer: 5.2.1 - typed-array-buffer: 1.0.3 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -13738,8 +12932,6 @@ snapshots: dependencies: tldts: 6.1.86 - tr46@0.0.3: {} - tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -13775,6 +12967,7 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + optional: true type-check@0.4.0: dependencies: @@ -13828,11 +13021,6 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 - undici-types@6.21.0: {} unified@11.0.5: @@ -14003,8 +13191,6 @@ snapshots: web-vitals@4.2.4: {} - webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} whatwg-encoding@3.1.1: @@ -14018,11 +13204,6 @@ snapshots: tr46: 5.1.1 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -14070,7 +13251,8 @@ snapshots: word-wrap@1.2.5: {} - wrappy@1.0.2: {} + wrappy@1.0.2: + optional: true ws@8.18.3: {} @@ -14094,11 +13276,6 @@ snapshots: lib0: 0.2.115 yjs: 13.6.28 - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - yjs@13.6.28: dependencies: lib0: 0.2.115 @@ -14109,8 +13286,6 @@ snapshots: dependencies: zod: 4.2.1 - zod@3.21.1: {} - zod@4.2.1: {} zustand@5.0.9(@types/react@19.2.7)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)):