mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 09:25:06 +03:00
chore: Clean up unused files from a project creation experiment (#42690)
This PR removes the onboarding schema generation and visualization feature from the project creation flow. This was part of an experiment which has been tested and shut down. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Revert** * Removed project creation workflow components and related UI surfaces including the initial setup interface, project visual preview, and schema generation assistant. * Removed database schema visualization and diagram components. * Cleaned up associated package dependencies. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
1 parent
3ba77ce748
commit
a5511386ce
7 files changed
+2
-1167
No files matched your search
@@ -1,82 +0,0 @@
|
||||
import { Database, Import } from 'lucide-react'
|
||||
|
||||
import { cn } from 'ui'
|
||||
import { SchemaGenerator } from './SchemaGenerator'
|
||||
|
||||
interface SupabaseService {
|
||||
name: 'Auth' | 'Storage' | 'Database' | 'Edge Function' | 'Cron' | 'Queues' | 'Vector'
|
||||
reason: string
|
||||
}
|
||||
|
||||
export const InitialStep = ({
|
||||
onSubmit,
|
||||
onStartBlank,
|
||||
onMigrate,
|
||||
onSqlGenerated,
|
||||
onServicesUpdated,
|
||||
onTitleUpdated,
|
||||
}: {
|
||||
onSubmit: (value: string) => void
|
||||
onStartBlank: () => void
|
||||
onMigrate: () => void
|
||||
onSqlGenerated: (sql: string) => void
|
||||
onServicesUpdated: (services: SupabaseService[]) => void
|
||||
onTitleUpdated: (title: string) => void
|
||||
}) => {
|
||||
return (
|
||||
<div className="w-full">
|
||||
<h3>What are you building?</h3>
|
||||
<p className="text-sm text-foreground-lighter mb-4">
|
||||
We can generate a schema for you to kick start your project.
|
||||
</p>
|
||||
<SchemaGenerator
|
||||
isOneOff
|
||||
step="initial"
|
||||
onSqlGenerated={(sql) => {
|
||||
onSqlGenerated(sql)
|
||||
onSubmit(sql)
|
||||
}}
|
||||
onServicesUpdated={onServicesUpdated}
|
||||
onTitleUpdated={onTitleUpdated}
|
||||
/>
|
||||
<div
|
||||
className={cn(
|
||||
'relative text-center text-sm text-foreground-lighter my-4 before:absolute before:inset-y-1/2 before:left-0 before:w-[calc(50%-24px)]',
|
||||
'before:h-px before:bg-border after:absolute after:inset-y-1/2 after:right-0 after:w-[calc(50%-24px)] after:h-px after:bg-border'
|
||||
)}
|
||||
>
|
||||
or
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div
|
||||
className="p-4 h-auto block border rounded-md cursor text-sm border-strong hover:border-foreground-muted cursor-pointer flex items-center gap-4"
|
||||
role="button"
|
||||
onClick={onStartBlank}
|
||||
>
|
||||
<Database strokeWidth={1.5} size={16} className="text-foreground-lighter shrink-0" />
|
||||
<div>
|
||||
<span className="block">Start blank</span>
|
||||
<span className="text-foreground-lighter">Configure a database and dive right in</span>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="p-4 h-auto block border rounded-md cursor text-sm border-strong hover:border-foreground-muted cursor-pointer flex items-center gap-4"
|
||||
role="button"
|
||||
onClick={onMigrate}
|
||||
>
|
||||
<Import
|
||||
strokeWidth={1.5}
|
||||
size={16}
|
||||
className="text-foreground-lighter mx-auto shrink-0"
|
||||
/>
|
||||
<div>
|
||||
<span className="mb-1 block">Migrate</span>
|
||||
<span className="text-foreground-lighter">
|
||||
Import your database from another provider
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1,174 +0,0 @@
|
||||
import { AnimatePresence, motion } from 'framer-motion'
|
||||
import { Box, Clock, Database, File, ListOrdered, User2, Zap } from 'lucide-react'
|
||||
import { memo } from 'react'
|
||||
|
||||
import { SchemaVisualizer } from 'components/interfaces/SchemaVisualizer'
|
||||
import { BASE_PATH } from 'lib/constants'
|
||||
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from 'ui'
|
||||
|
||||
interface SupabaseService {
|
||||
name: 'Auth' | 'Storage' | 'Database' | 'Edge Function' | 'Cron' | 'Queues' | 'Vector'
|
||||
reason: string
|
||||
}
|
||||
|
||||
interface ProjectVisualProps {
|
||||
sqlStatements: string[]
|
||||
showInfo: boolean
|
||||
services: SupabaseService[]
|
||||
selectedRegion: {
|
||||
name: string
|
||||
location: { latitude: number; longitude: number }
|
||||
code: string
|
||||
displayName: string
|
||||
} | null
|
||||
projectDetails: {
|
||||
dbRegion: string
|
||||
cloudProvider: string
|
||||
postgresVersion: string
|
||||
}
|
||||
}
|
||||
|
||||
const arePropsEqual = (prevProps: ProjectVisualProps, nextProps: ProjectVisualProps) => {
|
||||
return (
|
||||
prevProps.sqlStatements.length === nextProps.sqlStatements.length &&
|
||||
prevProps.showInfo === nextProps.showInfo &&
|
||||
prevProps.services.length === nextProps.services.length &&
|
||||
prevProps.selectedRegion?.name === nextProps.selectedRegion?.name &&
|
||||
prevProps.projectDetails.dbRegion === nextProps.projectDetails.dbRegion &&
|
||||
prevProps.projectDetails.cloudProvider === nextProps.projectDetails.cloudProvider &&
|
||||
prevProps.projectDetails.postgresVersion === nextProps.projectDetails.postgresVersion
|
||||
)
|
||||
}
|
||||
|
||||
export const ProjectVisual = memo(
|
||||
({
|
||||
sqlStatements,
|
||||
showInfo = true,
|
||||
services,
|
||||
selectedRegion,
|
||||
projectDetails,
|
||||
}: ProjectVisualProps) => {
|
||||
const variants = {
|
||||
center: {
|
||||
scale: 1,
|
||||
opacity: 1,
|
||||
top: '50%',
|
||||
right: '50%',
|
||||
x: '50%',
|
||||
y: '-70%',
|
||||
},
|
||||
corner: {
|
||||
scale: 1,
|
||||
opacity: 1,
|
||||
top: '3%',
|
||||
right: '3%',
|
||||
x: '0%',
|
||||
y: '0%',
|
||||
},
|
||||
}
|
||||
|
||||
const currentVariant = showInfo ? (sqlStatements.length > 0 ? 'corner' : 'center') : 'hidden'
|
||||
return (
|
||||
<div className="flex h-full flex-1">
|
||||
<div className="flex-1 h-full relative">
|
||||
{showInfo && (
|
||||
<motion.div
|
||||
key="info"
|
||||
variants={variants}
|
||||
transition={{
|
||||
duration: 0.3,
|
||||
ease: 'easeInOut',
|
||||
}}
|
||||
className={`hidden lg:block absolute z-30 p-4 bg-surface-100 min-w-80 rounded-lg border shadow-lg`}
|
||||
initial={{
|
||||
scale: 0.99,
|
||||
opacity: 0,
|
||||
top: '50%',
|
||||
right: '50%',
|
||||
x: '50%',
|
||||
y: '-70%',
|
||||
}}
|
||||
animate={currentVariant}
|
||||
>
|
||||
<div className="flex items-start justify-between w-80">
|
||||
<div className="flex gap-x-3">
|
||||
<div className="flex flex-col gap-y-0.5">
|
||||
<p className="text-sm">Primary Database</p>
|
||||
<p className="flex items-center gap-x-1">
|
||||
<span className="text-sm text-foreground-light">
|
||||
{projectDetails.dbRegion}
|
||||
</span>
|
||||
</p>
|
||||
<p className="flex items-center gap-x-1">
|
||||
<span className="text-sm text-foreground-light">
|
||||
{projectDetails.cloudProvider}
|
||||
</span>
|
||||
<span className="text-sm text-foreground-light">•</span>
|
||||
<span className="text-sm text-foreground-light">
|
||||
{projectDetails.postgresVersion}
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{selectedRegion && (
|
||||
<img
|
||||
alt="region icon"
|
||||
className="w-8 rounded-sm mt-0.5"
|
||||
src={`${BASE_PATH}/img/regions/${selectedRegion.name}.svg`}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<TooltipProvider>
|
||||
<div className="flex gap-2 mt-4">
|
||||
{[
|
||||
{ name: 'Auth', icon: User2 },
|
||||
{ name: 'Storage', icon: File },
|
||||
{ name: 'Database', icon: Database },
|
||||
{ name: 'Edge Function', icon: Zap },
|
||||
{ name: 'Cron', icon: Clock },
|
||||
{ name: 'Queues', icon: ListOrdered },
|
||||
{ name: 'Vector', icon: Box },
|
||||
].map((service) => {
|
||||
const enabledService = services.find((s) => s.name === service.name)
|
||||
const isEnabled = !!enabledService
|
||||
return (
|
||||
<Tooltip key={service.name} delayDuration={100}>
|
||||
<TooltipTrigger asChild>
|
||||
<div
|
||||
className={`
|
||||
flex items-center justify-center w-10 h-10 border rounded cursor-help
|
||||
${isEnabled ? 'border-brand-600 text-brand-600' : 'text-foreground-lighter'}
|
||||
`}
|
||||
>
|
||||
<service.icon size={16} strokeWidth={2} />
|
||||
</div>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
{isEnabled ? `${service.name}: ${enabledService.reason}` : service.name}
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</TooltipProvider>
|
||||
</motion.div>
|
||||
)}
|
||||
<AnimatePresence>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, scale: 1.05 }}
|
||||
animate={{ opacity: 1, scale: 1, transition: { delay: 1 } }}
|
||||
exit={{ opacity: 0 }}
|
||||
className={`h-full z-20 ${sqlStatements.length === 0 ? 'pointer-events-none' : ''}`}
|
||||
>
|
||||
<SchemaVisualizer sqlStatements={sqlStatements} className="h-full z-20" />
|
||||
</motion.div>
|
||||
</AnimatePresence>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
},
|
||||
arePropsEqual
|
||||
)
|
||||
|
||||
ProjectVisual.displayName = 'ProjectVisual'
|
||||
@@ -1,86 +0,0 @@
|
||||
import { useCallback, useEffect, useMemo } from 'react'
|
||||
import {
|
||||
applyNodeChanges,
|
||||
Background,
|
||||
BackgroundVariant,
|
||||
Edge,
|
||||
Node,
|
||||
NodeChange,
|
||||
NodeProps,
|
||||
ReactFlow,
|
||||
useEdgesState,
|
||||
useNodesState,
|
||||
useReactFlow,
|
||||
} from 'reactflow'
|
||||
|
||||
import { TableNode, TableNodeData } from '../Database/Schemas/SchemaTableNode'
|
||||
|
||||
export const TABLE_NODE_WIDTH = 640
|
||||
export const TABLE_NODE_ROW_HEIGHT = 80
|
||||
|
||||
interface SchemaFlowProps {
|
||||
nodes: Node[]
|
||||
edges: Edge[]
|
||||
}
|
||||
|
||||
export const SchemaFlow = ({ nodes: initialNodes, edges: initialEdges }: SchemaFlowProps) => {
|
||||
const [nodes, setNodes] = useNodesState(initialNodes)
|
||||
const [edges, setEdges] = useEdgesState(initialEdges)
|
||||
const nodeTypes = useMemo(
|
||||
() => ({ table: (props: NodeProps<TableNodeData>) => <TableNode {...props} placeholder /> }),
|
||||
[]
|
||||
)
|
||||
const reactFlowInstance = useReactFlow<TableNodeData>()
|
||||
|
||||
useEffect(() => {
|
||||
setNodes(initialNodes)
|
||||
setEdges(initialEdges)
|
||||
}, [initialNodes, initialEdges, setNodes, setEdges])
|
||||
|
||||
useEffect(() => {
|
||||
reactFlowInstance.fitView()
|
||||
}, [reactFlowInstance, nodes, edges])
|
||||
|
||||
const onNodesChange = useCallback(
|
||||
(changes: NodeChange[]) => {
|
||||
setNodes((nds) => applyNodeChanges(changes, nds))
|
||||
},
|
||||
[setNodes]
|
||||
)
|
||||
|
||||
return (
|
||||
<div
|
||||
style={{ maskImage: 'linear-gradient(to right, transparent 2%, black 13%)' }}
|
||||
className="absolute inset-0"
|
||||
>
|
||||
<ReactFlow
|
||||
nodes={nodes}
|
||||
edges={edges}
|
||||
nodeTypes={nodeTypes}
|
||||
onNodesChange={onNodesChange}
|
||||
defaultEdgeOptions={{
|
||||
type: 'smoothstep',
|
||||
animated: true,
|
||||
deletable: false,
|
||||
style: {
|
||||
stroke: 'hsl(var(--border-stronger))',
|
||||
strokeWidth: 0.5,
|
||||
},
|
||||
}}
|
||||
fitView
|
||||
minZoom={0.8}
|
||||
maxZoom={1.8}
|
||||
proOptions={{ hideAttribution: true }}
|
||||
panOnScroll
|
||||
panOnScrollSpeed={1}
|
||||
>
|
||||
<Background
|
||||
gap={16}
|
||||
className="[&>*]:stroke-foreground-muted opacity-[50%]"
|
||||
variant={BackgroundVariant.Dots}
|
||||
color={'inherit'}
|
||||
/>
|
||||
</ReactFlow>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1,230 +0,0 @@
|
||||
import { useChat } from '@ai-sdk/react'
|
||||
import { DefaultChatTransport } from 'ai'
|
||||
import { useEffect, useState } from 'react'
|
||||
|
||||
import { Markdown } from 'components/interfaces/Markdown'
|
||||
import { onErrorChat } from 'components/ui/AIAssistantPanel/AIAssistant.utils'
|
||||
import { BASE_PATH } from 'lib/constants'
|
||||
import { useTrack } from 'lib/telemetry/track'
|
||||
import { AiIconAnimation, Button, Label_Shadcn_, Textarea } from 'ui'
|
||||
|
||||
interface SupabaseService {
|
||||
name: 'Auth' | 'Storage' | 'Database' | 'Edge Function' | 'Cron' | 'Queues' | 'Vector'
|
||||
reason: string
|
||||
}
|
||||
|
||||
interface SchemaGeneratorProps {
|
||||
step: 'initial' | 'second'
|
||||
onSqlGenerated: (sql: string) => void
|
||||
onReset?: () => void
|
||||
onServicesUpdated: (services: SupabaseService[]) => void
|
||||
onTitleUpdated: (title: string) => void
|
||||
isOneOff?: boolean
|
||||
}
|
||||
|
||||
export const SchemaGenerator = ({
|
||||
step,
|
||||
onSqlGenerated,
|
||||
onServicesUpdated,
|
||||
onTitleUpdated,
|
||||
onReset,
|
||||
isOneOff = false,
|
||||
}: SchemaGeneratorProps) => {
|
||||
const [input, setInput] = useState('')
|
||||
const [hasSql, setHasSql] = useState(false)
|
||||
|
||||
const [promptIntendSent, setPromptIntendSent] = useState(false)
|
||||
const track = useTrack()
|
||||
|
||||
const { messages, setMessages, sendMessage, status, addToolResult } = useChat({
|
||||
id: 'schema-generator',
|
||||
onError: onErrorChat,
|
||||
onFinish: () => {
|
||||
setInput('')
|
||||
},
|
||||
async onToolCall({ toolCall }) {
|
||||
if (toolCall.toolName === 'executeSql') {
|
||||
try {
|
||||
const sql = (toolCall.input as { sql: string }).sql
|
||||
setHasSql(true)
|
||||
onSqlGenerated(sql)
|
||||
addToolResult({
|
||||
tool: toolCall.toolName,
|
||||
toolCallId: toolCall.toolCallId,
|
||||
output: 'Database successfully updated. Respond with next steps.',
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('Failed to execute SQL:', error)
|
||||
addToolResult({
|
||||
tool: toolCall.toolName,
|
||||
toolCallId: toolCall.toolCallId,
|
||||
output: `SQL execution failed: ${error instanceof Error ? error.message : String(error)}`,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (toolCall.toolName === 'reset') {
|
||||
try {
|
||||
setHasSql(false)
|
||||
onSqlGenerated('')
|
||||
if (onReset) {
|
||||
onReset()
|
||||
}
|
||||
addToolResult({
|
||||
tool: toolCall.toolName,
|
||||
toolCallId: toolCall.toolCallId,
|
||||
output: 'Database successfully reset',
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('Failed to reset the database', error)
|
||||
addToolResult({
|
||||
tool: toolCall.toolName,
|
||||
toolCallId: toolCall.toolCallId,
|
||||
output: `Resetting the database failed: ${error instanceof Error ? error.message : String(error)}`,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (toolCall.toolName === 'setServices') {
|
||||
const newServices = (toolCall.input as { services: SupabaseService[] }).services
|
||||
onServicesUpdated(newServices)
|
||||
addToolResult({
|
||||
tool: toolCall.toolName,
|
||||
toolCallId: toolCall.toolCallId,
|
||||
output: 'Services updated successfully',
|
||||
})
|
||||
}
|
||||
|
||||
if (toolCall.toolName === 'setTitle') {
|
||||
const newTitle = (toolCall.input as { title: string }).title
|
||||
onTitleUpdated(newTitle)
|
||||
addToolResult({
|
||||
tool: toolCall.toolName,
|
||||
toolCallId: toolCall.toolCallId,
|
||||
output: 'Title updated successfully',
|
||||
})
|
||||
}
|
||||
},
|
||||
transport: new DefaultChatTransport({
|
||||
api: `${BASE_PATH}/api/ai/onboarding/design`,
|
||||
}),
|
||||
})
|
||||
|
||||
const isMessagesLoading = status === 'submitted' || status === 'streaming'
|
||||
|
||||
useEffect(() => {
|
||||
if (isOneOff) {
|
||||
setMessages([])
|
||||
setInput('')
|
||||
}
|
||||
}, [isOneOff, setMessages])
|
||||
|
||||
const sendUserMessage = (content: string) => {
|
||||
const payload = {
|
||||
role: 'user' as const,
|
||||
createdAt: new Date(),
|
||||
parts: [{ type: 'text' as const, text: content }],
|
||||
id: `msg-${Date.now()}`,
|
||||
}
|
||||
sendMessage(payload)
|
||||
}
|
||||
|
||||
const getLastAssistantMessage = () => {
|
||||
const lastAssistantMessage = messages.filter((m) => m.role === 'assistant').slice(-1)[0]
|
||||
if (!lastAssistantMessage?.parts) return ''
|
||||
|
||||
const textPart = lastAssistantMessage.parts.find((part: any) => part.type === 'text') as
|
||||
| { text: string }
|
||||
| undefined
|
||||
return textPart?.text || ''
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
{!isOneOff && (
|
||||
<div className="flex justify-between w-full items-center mb-4">
|
||||
<Label_Shadcn_ className="text-foreground-light flex-1">
|
||||
Generate a starting schema
|
||||
</Label_Shadcn_>
|
||||
{messages?.length > 0 && (
|
||||
<Button
|
||||
type="outline"
|
||||
size="tiny"
|
||||
onClick={() => {
|
||||
setInput('Reset the database, services and start over')
|
||||
sendUserMessage('Reset the database, services and start over')
|
||||
}}
|
||||
>
|
||||
Reset
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
<div className="rounded-md border bg-surface-100">
|
||||
{messages.length > 0 &&
|
||||
messages[messages.length - 1].role === 'assistant' &&
|
||||
getLastAssistantMessage() &&
|
||||
((isOneOff && !hasSql) || !isOneOff) && (
|
||||
<div className="px-4 py-3 border-b space-y-1">
|
||||
<p>
|
||||
<Markdown className="text-foreground-light" content={getLastAssistantMessage()} />
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
<div className="w-full relative text-sm border-none block bg-muted mb-0 text-foreground-light placeholder:text-foreground-lighter">
|
||||
<Textarea
|
||||
id="input"
|
||||
name="prompt"
|
||||
autoComplete="off"
|
||||
className="text-sm w-full bg-transparent border-none resize-none px-4 pt-3 pb-8"
|
||||
value={input}
|
||||
disabled={isMessagesLoading}
|
||||
onChange={(e) => {
|
||||
setInput(e.target.value)
|
||||
}}
|
||||
placeholder={messages.length > 0 ? 'Make an edit...' : 'Describe your application...'}
|
||||
rows={Math.max(3, Math.min(input.split('\n').length, 10))}
|
||||
onKeyDown={(e) => {
|
||||
if (!(e.target instanceof HTMLTextAreaElement)) {
|
||||
return
|
||||
}
|
||||
if (!promptIntendSent && e.target.value.length > 5) {
|
||||
// distinguish between a new prompt or an edit
|
||||
const isNewPrompt = messages.length == 0
|
||||
// distinguish between initial step or second step
|
||||
if (step === 'initial') {
|
||||
track('project_creation_initial_step_prompt_intended', {
|
||||
isNewPrompt,
|
||||
})
|
||||
} else {
|
||||
track('project_creation_second_step_prompt_intended', {
|
||||
isNewPrompt,
|
||||
})
|
||||
}
|
||||
setPromptIntendSent(true)
|
||||
}
|
||||
if (e.key === 'Enter' && !e.shiftKey && !e.nativeEvent.isComposing) {
|
||||
e.preventDefault()
|
||||
setHasSql(false)
|
||||
sendUserMessage(input)
|
||||
}
|
||||
}}
|
||||
/>
|
||||
<Button
|
||||
onClick={(e) => {
|
||||
e.preventDefault()
|
||||
setHasSql(false)
|
||||
sendUserMessage(input)
|
||||
}}
|
||||
disabled={isMessagesLoading}
|
||||
loading={isMessagesLoading}
|
||||
icon={<AiIconAnimation size={16} />}
|
||||
className="absolute bottom-2 right-2"
|
||||
>
|
||||
Generate
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
import { PGlite } from '@electric-sql/pglite'
|
||||
import { PostgresMetaBase, wrapError, wrapResult } from '@gregnr/postgres-meta/base'
|
||||
import { useEffect, useRef, useState } from 'react'
|
||||
import { Edge, Node, ReactFlowProvider } from 'reactflow'
|
||||
|
||||
import { SchemaFlow } from 'components/interfaces/ProjectCreation/SchemaFlow'
|
||||
import { getGraphDataFromTables } from '../Database/Schemas/Schemas.utils'
|
||||
import { TableNodeData } from '../Database/Schemas/SchemaTableNode'
|
||||
|
||||
export const TABLE_NODE_WIDTH = 640
|
||||
export const TABLE_NODE_ROW_HEIGHT = 80
|
||||
|
||||
interface SchemaVisualizerProps {
|
||||
sqlStatements: string[]
|
||||
className?: string
|
||||
}
|
||||
|
||||
const AUTH_SCHEMA_SQL = `
|
||||
CREATE SCHEMA auth;
|
||||
CREATE TABLE auth.users (
|
||||
instance_id uuid,
|
||||
id uuid NOT NULL,
|
||||
aud character varying(255),
|
||||
role character varying(255),
|
||||
email character varying(255),
|
||||
encrypted_password character varying(255),
|
||||
confirmed_at timestamp with time zone,
|
||||
invited_at timestamp with time zone,
|
||||
confirmation_token character varying(255),
|
||||
confirmation_sent_at timestamp with time zone,
|
||||
recovery_token character varying(255),
|
||||
recovery_sent_at timestamp with time zone,
|
||||
email_change_token character varying(255),
|
||||
email_change character varying(255),
|
||||
email_change_sent_at timestamp with time zone,
|
||||
last_sign_in_at timestamp with time zone,
|
||||
raw_app_meta_data jsonb,
|
||||
raw_user_meta_data jsonb,
|
||||
is_super_admin boolean,
|
||||
created_at timestamp with time zone,
|
||||
updated_at timestamp with time zone
|
||||
);
|
||||
ALTER TABLE ONLY auth.users
|
||||
ADD CONSTRAINT users_email_key UNIQUE (email);
|
||||
ALTER TABLE ONLY auth.users
|
||||
ADD CONSTRAINT users_pkey PRIMARY KEY (id);
|
||||
`.trim()
|
||||
|
||||
export const SchemaVisualizer = ({ sqlStatements, className }: SchemaVisualizerProps) => {
|
||||
const [nodes, setNodes] = useState<Node<TableNodeData>[]>([])
|
||||
const [edges, setEdges] = useState<Edge[]>([])
|
||||
const db = useRef<PGlite>()
|
||||
const executedStatements = useRef<Set<string>>(new Set())
|
||||
|
||||
// Initialize database once
|
||||
useEffect(() => {
|
||||
db.current = new PGlite()
|
||||
|
||||
// Execute initial auth schema setup
|
||||
db.current.exec(AUTH_SCHEMA_SQL)
|
||||
}, [])
|
||||
|
||||
// Execute new SQL statements and update schema
|
||||
useEffect(() => {
|
||||
const updateSchema = async () => {
|
||||
if (!db.current) return
|
||||
|
||||
// Reset if statements is empty
|
||||
if (sqlStatements.length === 0) {
|
||||
setNodes([])
|
||||
setEdges([])
|
||||
if (executedStatements.current.size) {
|
||||
executedStatements.current.clear()
|
||||
// Reset database
|
||||
db.current = new PGlite()
|
||||
// Re-run initial auth schema setup
|
||||
db.current.exec(AUTH_SCHEMA_SQL)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Execute only new statements
|
||||
const newStatements = sqlStatements.filter((sql) => !executedStatements.current.has(sql))
|
||||
|
||||
if (newStatements.length === 0) return
|
||||
|
||||
try {
|
||||
for (const sql of newStatements) {
|
||||
await db.current.exec(sql)
|
||||
executedStatements.current.add(sql)
|
||||
}
|
||||
|
||||
const pgMeta = new PostgresMetaBase({
|
||||
query: async (sql: string) => {
|
||||
try {
|
||||
const res = await db.current?.query(sql)
|
||||
if (!res) throw new Error('No response from database')
|
||||
return wrapResult<any[]>(res.rows)
|
||||
} catch (error) {
|
||||
console.error('Query failed:', error)
|
||||
return wrapError(error, sql)
|
||||
}
|
||||
},
|
||||
end: async () => {},
|
||||
})
|
||||
|
||||
const { data: tables, error } = await pgMeta.tables.list({
|
||||
includedSchemas: ['public'],
|
||||
includeColumns: true,
|
||||
})
|
||||
|
||||
if (error) {
|
||||
console.error('Failed to get tables:', error)
|
||||
return
|
||||
}
|
||||
|
||||
if (tables) {
|
||||
const { nodes, edges } = await getGraphDataFromTables(
|
||||
'onboarding',
|
||||
{ id: 1, name: 'public', owner: 'admin' },
|
||||
tables
|
||||
)
|
||||
setNodes(nodes)
|
||||
setEdges(edges)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to execute SQL:', error)
|
||||
}
|
||||
}
|
||||
|
||||
updateSchema()
|
||||
}, [sqlStatements])
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
<ReactFlowProvider>
|
||||
<SchemaFlow nodes={nodes} edges={edges} />
|
||||
</ReactFlowProvider>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -38,10 +38,8 @@
|
||||
"@dnd-kit/modifiers": "^9.0.0",
|
||||
"@dnd-kit/sortable": "^8.0.0",
|
||||
"@dnd-kit/utilities": "^3.2.2",
|
||||
"@electric-sql/pglite": "^0.2.15",
|
||||
"@graphiql/react": "^0.19.4",
|
||||
"@graphiql/toolkit": "^0.9.1",
|
||||
"@gregnr/postgres-meta": "^0.82.0-dev.2",
|
||||
"@hcaptcha/react-hcaptcha": "^1.12.0",
|
||||
"@headlessui/react": "^1.7.17",
|
||||
"@heroicons/react": "^2.1.3",
|
||||
|
||||
Generated
+2
-452
@@ -773,18 +773,12 @@ importers:
|
||||
'@dnd-kit/utilities':
|
||||
specifier: ^3.2.2
|
||||
version: 3.2.2(react@18.3.1)
|
||||
'@electric-sql/pglite':
|
||||
specifier: ^0.2.15
|
||||
version: 0.2.15
|
||||
'@graphiql/react':
|
||||
specifier: ^0.19.4
|
||||
version: 0.19.4(@codemirror/language@6.11.0)(@types/node@22.13.14)(@types/react-dom@18.3.0)(@types/react@18.3.3)(graphql-ws@5.14.1(graphql@16.11.0))(graphql@16.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@graphiql/toolkit':
|
||||
specifier: ^0.9.1
|
||||
version: 0.9.1(@types/node@22.13.14)(graphql-ws@5.14.1(graphql@16.11.0))(graphql@16.11.0)
|
||||
'@gregnr/postgres-meta':
|
||||
specifier: ^0.82.0-dev.2
|
||||
version: 0.82.0-dev.2(encoding@0.1.13)(supports-color@8.1.1)
|
||||
'@hcaptcha/react-hcaptcha':
|
||||
specifier: ^1.12.0
|
||||
version: 1.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
@@ -3667,32 +3661,9 @@ packages:
|
||||
'@fal-works/esbuild-plugin-global-externals@2.1.2':
|
||||
resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==}
|
||||
|
||||
'@fastify/ajv-compiler@3.6.0':
|
||||
resolution: {integrity: sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==}
|
||||
|
||||
'@fastify/busboy@3.1.1':
|
||||
resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==}
|
||||
|
||||
'@fastify/cors@9.0.1':
|
||||
resolution: {integrity: sha512-YY9Ho3ovI+QHIL2hW+9X4XqQjXLjJqsU+sMV/xFsxZkE8p3GNnYVFpoOxF7SsP5ZL76gwvbo3V9L+FIekBGU4Q==}
|
||||
|
||||
'@fastify/error@3.4.1':
|
||||
resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==}
|
||||
|
||||
'@fastify/fast-json-stringify-compiler@4.3.0':
|
||||
resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==}
|
||||
|
||||
'@fastify/merge-json-schemas@0.1.1':
|
||||
resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==}
|
||||
|
||||
'@fastify/swagger@8.15.0':
|
||||
resolution: {integrity: sha512-zy+HEEKFqPMS2sFUsQU5X0MHplhKJvWeohBwTCkBAJA/GDYGLGUWQaETEhptiqxK7Hs0fQB9B4MDb3pbwIiCwA==}
|
||||
|
||||
'@fastify/type-provider-typebox@3.6.0':
|
||||
resolution: {integrity: sha512-HTeOLvirfGg0u1KGao3iXn5rZpYNqlrOmyDnXSXAbWVPa+mDQTTBNs/x5uZzOB6vFAqr0Xcf7x1lxOamNSYKjw==}
|
||||
peerDependencies:
|
||||
'@sinclair/typebox': '>=0.26 <=0.32'
|
||||
|
||||
'@floating-ui/core@1.5.0':
|
||||
resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==}
|
||||
|
||||
@@ -4008,10 +3979,6 @@ packages:
|
||||
peerDependencies:
|
||||
graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||
|
||||
'@gregnr/postgres-meta@0.82.0-dev.2':
|
||||
resolution: {integrity: sha512-RLCMcshNBZi1FBA60PfQTLCvfuYmNXVzRe147j5mlOIXvq+o9K/pJgm49GOEBBYfvH+bwcs3w/mBRCh7BNveng==}
|
||||
engines: {node: '>=20', npm: '>=9'}
|
||||
|
||||
'@grpc/grpc-js@1.10.9':
|
||||
resolution: {integrity: sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==}
|
||||
engines: {node: '>=12.10.0'}
|
||||
@@ -8099,9 +8066,6 @@ packages:
|
||||
'@sinclair/typebox@0.27.8':
|
||||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||
|
||||
'@sinclair/typebox@0.31.28':
|
||||
resolution: {integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==}
|
||||
|
||||
'@sindresorhus/is@7.1.0':
|
||||
resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -9474,9 +9438,6 @@ packages:
|
||||
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
|
||||
engines: {node: '>=6.5'}
|
||||
|
||||
abstract-logging@2.0.1:
|
||||
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
|
||||
|
||||
accepts@1.3.8:
|
||||
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
|
||||
engines: {node: '>= 0.6'}
|
||||
@@ -9782,10 +9743,6 @@ packages:
|
||||
asynckit@0.4.0:
|
||||
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
|
||||
|
||||
atomic-sleep@1.0.0:
|
||||
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
|
||||
attr-accept@2.2.5:
|
||||
resolution: {integrity: sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==}
|
||||
engines: {node: '>=4'}
|
||||
@@ -9811,9 +9768,6 @@ packages:
|
||||
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
avvio@8.4.0:
|
||||
resolution: {integrity: sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==}
|
||||
|
||||
awesome-debounce-promise@2.1.0:
|
||||
resolution: {integrity: sha512-0Dv4j2wKk5BrNZh4jgV2HUdznaeVgEK/WTvcHhZWUElhmQ1RR+iURRoLEwICFyR0S/5VtxfcvY6gR+qSe95jNg==}
|
||||
engines: {node: '>=8', npm: '>=5'}
|
||||
@@ -9906,9 +9860,6 @@ packages:
|
||||
bindings@1.5.0:
|
||||
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
|
||||
|
||||
bintrees@1.0.2:
|
||||
resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==}
|
||||
|
||||
birpc@2.5.0:
|
||||
resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==}
|
||||
|
||||
@@ -10236,9 +10187,6 @@ packages:
|
||||
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
|
||||
engines: {node: '>=0.8'}
|
||||
|
||||
close-with-grace@1.3.0:
|
||||
resolution: {integrity: sha512-lvm0rmLIR5bNz4CRKW6YvCfn9Wg5Wb9A8PJ3Bb+hjyikgC1RO1W3J4z9rBXQYw97mAte7dNSQI8BmUsxdlXQyw==}
|
||||
|
||||
clsx@1.2.1:
|
||||
resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -11861,15 +11809,9 @@ packages:
|
||||
resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==}
|
||||
engines: {'0': node >=0.6.0}
|
||||
|
||||
fast-content-type-parse@1.1.0:
|
||||
resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==}
|
||||
|
||||
fast-content-type-parse@2.0.1:
|
||||
resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==}
|
||||
|
||||
fast-decode-uri-component@1.0.1:
|
||||
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
|
||||
|
||||
fast-deep-equal@3.1.3:
|
||||
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
|
||||
|
||||
@@ -11898,9 +11840,6 @@ packages:
|
||||
fast-json-stable-stringify@2.1.0:
|
||||
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
|
||||
|
||||
fast-json-stringify@5.16.1:
|
||||
resolution: {integrity: sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==}
|
||||
|
||||
fast-levenshtein@2.0.6:
|
||||
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
|
||||
|
||||
@@ -11910,22 +11849,12 @@ packages:
|
||||
fast-npm-meta@0.4.6:
|
||||
resolution: {integrity: sha512-zbBBOAOlzxfrU4WSnbCHk/nR6Vf32lSEPxDEvNOR08Z5DSZ/A6qJu0rqrHVcexBTd1hc2gim998xnqF/R1PuEw==}
|
||||
|
||||
fast-querystring@1.1.2:
|
||||
resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
|
||||
|
||||
fast-redact@3.5.0:
|
||||
resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
fast-safe-stringify@2.1.1:
|
||||
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
|
||||
|
||||
fast-shallow-equal@1.0.0:
|
||||
resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==}
|
||||
|
||||
fast-uri@2.4.0:
|
||||
resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==}
|
||||
|
||||
fast-uri@3.0.6:
|
||||
resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
|
||||
|
||||
@@ -11940,17 +11869,6 @@ packages:
|
||||
fastest-stable-stringify@2.0.2:
|
||||
resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==}
|
||||
|
||||
fastify-metrics@10.6.0:
|
||||
resolution: {integrity: sha512-QIPncCnwBOEObMn+VaRhsBC1ox8qEsaiYF2sV/A1UbXj7ic70W8/HNn/hlEC2W8JQbBeZMx++o1um2fPfhsFDQ==}
|
||||
peerDependencies:
|
||||
fastify: '>=4'
|
||||
|
||||
fastify-plugin@4.5.1:
|
||||
resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==}
|
||||
|
||||
fastify@4.29.1:
|
||||
resolution: {integrity: sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ==}
|
||||
|
||||
fastq@1.18.0:
|
||||
resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==}
|
||||
|
||||
@@ -12035,10 +11953,6 @@ packages:
|
||||
resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
|
||||
engines: {node: '>= 0.8'}
|
||||
|
||||
find-my-way@8.2.2:
|
||||
resolution: {integrity: sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
find-up@5.0.0:
|
||||
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -13440,13 +13354,6 @@ packages:
|
||||
json-pointer@0.6.2:
|
||||
resolution: {integrity: sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==}
|
||||
|
||||
json-schema-ref-resolver@1.0.1:
|
||||
resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==}
|
||||
|
||||
json-schema-resolver@2.0.0:
|
||||
resolution: {integrity: sha512-pJ4XLQP4Q9HTxl6RVDLJ8Cyh1uitSs0CzDBAz1uoJ4sRD/Bk7cFSXL1FUXDW3zJ7YnfliJx6eu8Jn283bpZ4Yg==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
json-schema-traverse@0.4.1:
|
||||
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
|
||||
|
||||
@@ -13497,10 +13404,6 @@ packages:
|
||||
resolution: {integrity: sha512-SavvDsUP9Xnqo2MoC6Wl6zNyX3f+I5199hRbXBtAITyP2NTPyAgyx5xM0bgcIljRjzsIvOBANbgfWe8XXlyeLA==}
|
||||
hasBin: true
|
||||
|
||||
jsox@1.2.121:
|
||||
resolution: {integrity: sha512-9Ag50tKhpTwS6r5wh3MJSAvpSof0UBr39Pto8OnzFT32Z/pAbxAsKHzyvsyMEHVslELvHyO/4/jaQELHk8wDcw==}
|
||||
hasBin: true
|
||||
|
||||
jsrsasign@11.0.0:
|
||||
resolution: {integrity: sha512-BtRwVKS+5dsgPpAtzJcpo5OoWjSs1/zllSBG0+8o8/aV0Ki76m6iZwHnwnsqoTdhfFZDN1XIdcaZr5ZkP+H2gg==}
|
||||
|
||||
@@ -13593,9 +13496,6 @@ packages:
|
||||
libpg-query@17.6.0:
|
||||
resolution: {integrity: sha512-r4zOTcLTGYS5PlLQAicJ6Yi/tvZFag42YUuNEO8pi8bwt/ZZ4kj514J4QV5bOx0mZzPLF6agbfNXQVxGgmHR8g==}
|
||||
|
||||
light-my-request@5.14.0:
|
||||
resolution: {integrity: sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==}
|
||||
|
||||
lilconfig@2.1.0:
|
||||
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -14475,9 +14375,6 @@ packages:
|
||||
mlly@1.8.0:
|
||||
resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
|
||||
|
||||
mnemonist@0.39.6:
|
||||
resolution: {integrity: sha512-A/0v5Z59y63US00cRSLiloEIw3t5G+MiKz4BhX21FI+YBJXBOGW0ohFxTxO08dsOYlzxo87T7vGfZKYp2bcAWA==}
|
||||
|
||||
mobx-react-lite@4.1.0:
|
||||
resolution: {integrity: sha512-QEP10dpHHBeQNv1pks3WnHRCem2Zp636lq54M2nKO2Sarr13pL4u6diQXf65yzXUn0mkk18SyIDCm9UOJYTi1w==}
|
||||
peerDependencies:
|
||||
@@ -15014,9 +14911,6 @@ packages:
|
||||
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
obliterator@2.0.4:
|
||||
resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==}
|
||||
|
||||
obuf@1.1.2:
|
||||
resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
|
||||
|
||||
@@ -15030,10 +14924,6 @@ packages:
|
||||
resolution: {integrity: sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
on-exit-leak-free@2.1.2:
|
||||
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
|
||||
on-finished@2.4.1:
|
||||
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
|
||||
engines: {node: '>= 0.8'}
|
||||
@@ -15378,9 +15268,6 @@ packages:
|
||||
pg-cloudflare@1.2.7:
|
||||
resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==}
|
||||
|
||||
pg-connection-string@2.6.2:
|
||||
resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==}
|
||||
|
||||
pg-connection-string@2.7.0:
|
||||
resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==}
|
||||
|
||||
@@ -15421,9 +15308,6 @@ packages:
|
||||
pg-protocol@1.10.3:
|
||||
resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==}
|
||||
|
||||
pg-protocol@1.6.0:
|
||||
resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==}
|
||||
|
||||
pg-protocol@1.7.1:
|
||||
resolution: {integrity: sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==}
|
||||
|
||||
@@ -15493,26 +15377,6 @@ packages:
|
||||
resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
pino-abstract-transport@1.2.0:
|
||||
resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
|
||||
|
||||
pino-abstract-transport@2.0.0:
|
||||
resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==}
|
||||
|
||||
pino-std-serializers@6.2.2:
|
||||
resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
|
||||
|
||||
pino-std-serializers@7.0.0:
|
||||
resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==}
|
||||
|
||||
pino@8.21.0:
|
||||
resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==}
|
||||
hasBin: true
|
||||
|
||||
pino@9.6.0:
|
||||
resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==}
|
||||
hasBin: true
|
||||
|
||||
pirates@4.0.6:
|
||||
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
|
||||
engines: {node: '>= 6'}
|
||||
@@ -15839,12 +15703,6 @@ packages:
|
||||
peerDependencies:
|
||||
prettier: ^2.0.0
|
||||
|
||||
prettier-plugin-sql@0.17.1:
|
||||
resolution: {integrity: sha512-CR9UpTkUSC/f69AV597hnYcBo77iUhsBPkUER7BUa4YHRRtRUJGfL5LDoHAlUHWGTZNiJdHHELlzK6I3R9XuAw==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
prettier: ^3.0.3
|
||||
|
||||
prettier@2.8.8:
|
||||
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
@@ -15905,12 +15763,6 @@ packages:
|
||||
process-nextick-args@2.0.1:
|
||||
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
|
||||
|
||||
process-warning@3.0.0:
|
||||
resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
|
||||
|
||||
process-warning@4.0.0:
|
||||
resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==}
|
||||
|
||||
process@0.11.10:
|
||||
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
|
||||
engines: {node: '>= 0.6.0'}
|
||||
@@ -15919,10 +15771,6 @@ packages:
|
||||
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
|
||||
prom-client@14.2.0:
|
||||
resolution: {integrity: sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
promise-inflight@1.0.1:
|
||||
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
|
||||
peerDependencies:
|
||||
@@ -16004,9 +15852,6 @@ packages:
|
||||
queue-microtask@1.2.3:
|
||||
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
|
||||
|
||||
quick-format-unescaped@4.0.4:
|
||||
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
|
||||
|
||||
radix3@1.1.2:
|
||||
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
|
||||
|
||||
@@ -16405,10 +16250,6 @@ packages:
|
||||
resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==}
|
||||
engines: {node: '>= 14.18.0'}
|
||||
|
||||
real-require@0.2.0:
|
||||
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
|
||||
engines: {node: '>= 12.13.0'}
|
||||
|
||||
recast@0.23.11:
|
||||
resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==}
|
||||
engines: {node: '>= 4'}
|
||||
@@ -16659,10 +16500,6 @@ packages:
|
||||
resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
ret@0.4.3:
|
||||
resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
retry@0.12.0:
|
||||
resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
|
||||
engines: {node: '>= 4'}
|
||||
@@ -16772,13 +16609,6 @@ packages:
|
||||
resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
safe-regex2@3.1.0:
|
||||
resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==}
|
||||
|
||||
safe-stable-stringify@2.5.0:
|
||||
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
safer-buffer@2.1.2:
|
||||
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||
|
||||
@@ -16831,9 +16661,6 @@ packages:
|
||||
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
secure-json-parse@2.7.0:
|
||||
resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
|
||||
|
||||
semver@5.7.2:
|
||||
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
|
||||
hasBin: true
|
||||
@@ -17105,12 +16932,6 @@ packages:
|
||||
resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==}
|
||||
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
|
||||
|
||||
sonic-boom@3.8.1:
|
||||
resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
|
||||
|
||||
sonic-boom@4.2.0:
|
||||
resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==}
|
||||
|
||||
sonner@1.5.0:
|
||||
resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==}
|
||||
peerDependencies:
|
||||
@@ -17186,10 +17007,6 @@ packages:
|
||||
resolution: {integrity: sha512-6QumAdGHEnI5dXEq1d0aBRP876AyA9Wp/UE7wopKNA2Mp9sKGRKVqGgoWHk4dr0J0nceesC85Y0p36qmGoNqhw==}
|
||||
hasBin: true
|
||||
|
||||
sql-formatter@14.0.0:
|
||||
resolution: {integrity: sha512-VcHYMRvZqg3RNjjxNB/puT9O1hR5QLXTvgTaBtxXcvmRQwSnH9M+oW2Ti+uFuVVU8HoNlOjU2uKHv8c0FQNsdQ==}
|
||||
hasBin: true
|
||||
|
||||
sql-formatter@15.4.9:
|
||||
resolution: {integrity: sha512-5vmt2HlCAVozxsBZuXWkAki/KGawaK+b5GG5x+BtXOFVpN/8cqppblFUxHl4jxdA0cvo14lABhM+KBnrUapOlw==}
|
||||
hasBin: true
|
||||
@@ -17578,9 +17395,6 @@ packages:
|
||||
resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
tdigest@0.1.2:
|
||||
resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==}
|
||||
|
||||
termi-link@1.1.0:
|
||||
resolution: {integrity: sha512-2qSN6TnomHgVLtk+htSWbaYs4Rd2MH/RU7VpHTy6MBstyNyWbM4yKd1DCYpE3fDg8dmGWojXCngNi/MHCzGuAA==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -17626,12 +17440,6 @@ packages:
|
||||
peerDependencies:
|
||||
tslib: ^2
|
||||
|
||||
thread-stream@2.7.0:
|
||||
resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==}
|
||||
|
||||
thread-stream@3.1.0:
|
||||
resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
|
||||
|
||||
throttle-debounce@3.0.1:
|
||||
resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -20356,7 +20164,8 @@ snapshots:
|
||||
|
||||
'@effect-ts/system@0.57.5': {}
|
||||
|
||||
'@electric-sql/pglite@0.2.15': {}
|
||||
'@electric-sql/pglite@0.2.15':
|
||||
optional: true
|
||||
|
||||
'@emnapi/core@1.5.0':
|
||||
dependencies:
|
||||
@@ -20550,43 +20359,8 @@ snapshots:
|
||||
|
||||
'@fal-works/esbuild-plugin-global-externals@2.1.2': {}
|
||||
|
||||
'@fastify/ajv-compiler@3.6.0':
|
||||
dependencies:
|
||||
ajv: 8.17.1
|
||||
ajv-formats: 2.1.1(ajv@8.17.1)
|
||||
fast-uri: 2.4.0
|
||||
|
||||
'@fastify/busboy@3.1.1': {}
|
||||
|
||||
'@fastify/cors@9.0.1':
|
||||
dependencies:
|
||||
fastify-plugin: 4.5.1
|
||||
mnemonist: 0.39.6
|
||||
|
||||
'@fastify/error@3.4.1': {}
|
||||
|
||||
'@fastify/fast-json-stringify-compiler@4.3.0':
|
||||
dependencies:
|
||||
fast-json-stringify: 5.16.1
|
||||
|
||||
'@fastify/merge-json-schemas@0.1.1':
|
||||
dependencies:
|
||||
fast-deep-equal: 3.1.3
|
||||
|
||||
'@fastify/swagger@8.15.0(supports-color@8.1.1)':
|
||||
dependencies:
|
||||
fastify-plugin: 4.5.1
|
||||
json-schema-resolver: 2.0.0(supports-color@8.1.1)
|
||||
openapi-types: 12.1.3
|
||||
rfdc: 1.4.1
|
||||
yaml: 2.8.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@fastify/type-provider-typebox@3.6.0(@sinclair/typebox@0.31.28)':
|
||||
dependencies:
|
||||
'@sinclair/typebox': 0.31.28
|
||||
|
||||
'@floating-ui/core@1.5.0':
|
||||
dependencies:
|
||||
'@floating-ui/utils': 0.1.6
|
||||
@@ -21195,31 +20969,6 @@ snapshots:
|
||||
dependencies:
|
||||
graphql: 16.11.0
|
||||
|
||||
'@gregnr/postgres-meta@0.82.0-dev.2(encoding@0.1.13)(supports-color@8.1.1)':
|
||||
dependencies:
|
||||
'@fastify/cors': 9.0.1
|
||||
'@fastify/swagger': 8.15.0(supports-color@8.1.1)
|
||||
'@fastify/type-provider-typebox': 3.6.0(@sinclair/typebox@0.31.28)
|
||||
'@sinclair/typebox': 0.31.28
|
||||
close-with-grace: 1.3.0
|
||||
crypto-js: 4.2.0
|
||||
fastify: 4.29.1
|
||||
fastify-metrics: 10.6.0(fastify@4.29.1)
|
||||
pg: 8.16.3
|
||||
pg-connection-string: 2.6.2
|
||||
pg-format: 1.0.4
|
||||
pg-protocol: 1.6.0
|
||||
pgsql-parser: 13.5.0(encoding@0.1.13)(supports-color@8.1.1)
|
||||
pino: 8.21.0
|
||||
postgres-array: 3.0.2
|
||||
prettier: 3.2.5
|
||||
prettier-plugin-sql: 0.17.1(prettier@3.2.5)
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
- encoding
|
||||
- pg-native
|
||||
- supports-color
|
||||
|
||||
'@grpc/grpc-js@1.10.9':
|
||||
dependencies:
|
||||
'@grpc/proto-loader': 0.7.13
|
||||
@@ -25656,8 +25405,6 @@ snapshots:
|
||||
|
||||
'@sinclair/typebox@0.27.8': {}
|
||||
|
||||
'@sinclair/typebox@0.31.28': {}
|
||||
|
||||
'@sindresorhus/is@7.1.0': {}
|
||||
|
||||
'@sindresorhus/merge-streams@2.3.0': {}
|
||||
@@ -27479,8 +27226,6 @@ snapshots:
|
||||
dependencies:
|
||||
event-target-shim: 5.0.1
|
||||
|
||||
abstract-logging@2.0.1: {}
|
||||
|
||||
accepts@1.3.8:
|
||||
dependencies:
|
||||
mime-types: 2.1.35
|
||||
@@ -27804,8 +27549,6 @@ snapshots:
|
||||
|
||||
asynckit@0.4.0: {}
|
||||
|
||||
atomic-sleep@1.0.0: {}
|
||||
|
||||
attr-accept@2.2.5: {}
|
||||
|
||||
auto-bind@4.0.0: {}
|
||||
@@ -27843,11 +27586,6 @@ snapshots:
|
||||
dependencies:
|
||||
possible-typed-array-names: 1.0.0
|
||||
|
||||
avvio@8.4.0:
|
||||
dependencies:
|
||||
'@fastify/error': 3.4.1
|
||||
fastq: 1.18.0
|
||||
|
||||
awesome-debounce-promise@2.1.0:
|
||||
dependencies:
|
||||
'@types/debounce-promise': 3.1.7
|
||||
@@ -27948,8 +27686,6 @@ snapshots:
|
||||
dependencies:
|
||||
file-uri-to-path: 1.0.0
|
||||
|
||||
bintrees@1.0.2: {}
|
||||
|
||||
birpc@2.5.0: {}
|
||||
|
||||
bl@4.1.0:
|
||||
@@ -28416,8 +28152,6 @@ snapshots:
|
||||
|
||||
clone@1.0.4: {}
|
||||
|
||||
close-with-grace@1.3.0: {}
|
||||
|
||||
clsx@1.2.1: {}
|
||||
|
||||
clsx@2.1.1: {}
|
||||
@@ -30174,12 +29908,8 @@ snapshots:
|
||||
|
||||
extsprintf@1.4.1: {}
|
||||
|
||||
fast-content-type-parse@1.1.0: {}
|
||||
|
||||
fast-content-type-parse@2.0.1: {}
|
||||
|
||||
fast-decode-uri-component@1.0.1: {}
|
||||
|
||||
fast-deep-equal@3.1.3: {}
|
||||
|
||||
fast-equals@4.0.3: {}
|
||||
@@ -30214,34 +29944,16 @@ snapshots:
|
||||
|
||||
fast-json-stable-stringify@2.1.0: {}
|
||||
|
||||
fast-json-stringify@5.16.1:
|
||||
dependencies:
|
||||
'@fastify/merge-json-schemas': 0.1.1
|
||||
ajv: 8.17.1
|
||||
ajv-formats: 3.0.1(ajv@8.17.1)
|
||||
fast-deep-equal: 3.1.3
|
||||
fast-uri: 2.4.0
|
||||
json-schema-ref-resolver: 1.0.1
|
||||
rfdc: 1.4.1
|
||||
|
||||
fast-levenshtein@2.0.6: {}
|
||||
|
||||
fast-loops@1.1.4: {}
|
||||
|
||||
fast-npm-meta@0.4.6: {}
|
||||
|
||||
fast-querystring@1.1.2:
|
||||
dependencies:
|
||||
fast-decode-uri-component: 1.0.1
|
||||
|
||||
fast-redact@3.5.0: {}
|
||||
|
||||
fast-safe-stringify@2.1.1: {}
|
||||
|
||||
fast-shallow-equal@1.0.0: {}
|
||||
|
||||
fast-uri@2.4.0: {}
|
||||
|
||||
fast-uri@3.0.6: {}
|
||||
|
||||
fast-xml-parser@4.4.1:
|
||||
@@ -30254,33 +29966,6 @@ snapshots:
|
||||
|
||||
fastest-stable-stringify@2.0.2: {}
|
||||
|
||||
fastify-metrics@10.6.0(fastify@4.29.1):
|
||||
dependencies:
|
||||
fastify: 4.29.1
|
||||
fastify-plugin: 4.5.1
|
||||
prom-client: 14.2.0
|
||||
|
||||
fastify-plugin@4.5.1: {}
|
||||
|
||||
fastify@4.29.1:
|
||||
dependencies:
|
||||
'@fastify/ajv-compiler': 3.6.0
|
||||
'@fastify/error': 3.4.1
|
||||
'@fastify/fast-json-stringify-compiler': 4.3.0
|
||||
abstract-logging: 2.0.1
|
||||
avvio: 8.4.0
|
||||
fast-content-type-parse: 1.1.0
|
||||
fast-json-stringify: 5.16.1
|
||||
find-my-way: 8.2.2
|
||||
light-my-request: 5.14.0
|
||||
pino: 9.6.0
|
||||
process-warning: 3.0.0
|
||||
proxy-addr: 2.0.7
|
||||
rfdc: 1.4.1
|
||||
secure-json-parse: 2.7.0
|
||||
semver: 7.7.3
|
||||
toad-cache: 3.7.0
|
||||
|
||||
fastq@1.18.0:
|
||||
dependencies:
|
||||
reusify: 1.0.4
|
||||
@@ -30387,12 +30072,6 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
find-my-way@8.2.2:
|
||||
dependencies:
|
||||
fast-deep-equal: 3.1.3
|
||||
fast-querystring: 1.1.2
|
||||
safe-regex2: 3.1.0
|
||||
|
||||
find-up@5.0.0:
|
||||
dependencies:
|
||||
locate-path: 6.0.0
|
||||
@@ -31940,18 +31619,6 @@ snapshots:
|
||||
dependencies:
|
||||
foreach: 2.0.6
|
||||
|
||||
json-schema-ref-resolver@1.0.1:
|
||||
dependencies:
|
||||
fast-deep-equal: 3.1.3
|
||||
|
||||
json-schema-resolver@2.0.0(supports-color@8.1.1):
|
||||
dependencies:
|
||||
debug: 4.4.3(supports-color@8.1.1)
|
||||
rfdc: 1.4.1
|
||||
uri-js: 4.4.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
json-schema-traverse@0.4.1: {}
|
||||
|
||||
json-schema-traverse@1.0.0: {}
|
||||
@@ -31993,8 +31660,6 @@ snapshots:
|
||||
|
||||
jsonrepair@3.5.0: {}
|
||||
|
||||
jsox@1.2.121: {}
|
||||
|
||||
jsrsasign@11.0.0: {}
|
||||
|
||||
jsx-ast-utils@3.3.5:
|
||||
@@ -32097,12 +31762,6 @@ snapshots:
|
||||
dependencies:
|
||||
'@pgsql/types': 17.6.2
|
||||
|
||||
light-my-request@5.14.0:
|
||||
dependencies:
|
||||
cookie: 0.7.2
|
||||
process-warning: 3.0.0
|
||||
set-cookie-parser: 2.7.1
|
||||
|
||||
lilconfig@2.1.0: {}
|
||||
|
||||
lilconfig@3.1.3: {}
|
||||
@@ -33620,10 +33279,6 @@ snapshots:
|
||||
pkg-types: 1.3.1
|
||||
ufo: 1.6.3
|
||||
|
||||
mnemonist@0.39.6:
|
||||
dependencies:
|
||||
obliterator: 2.0.4
|
||||
|
||||
mobx-react-lite@4.1.0(mobx@6.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
mobx: 6.11.0
|
||||
@@ -34396,8 +34051,6 @@ snapshots:
|
||||
define-properties: 1.2.1
|
||||
es-object-atoms: 1.1.1
|
||||
|
||||
obliterator@2.0.4: {}
|
||||
|
||||
obuf@1.1.2: {}
|
||||
|
||||
ofetch@1.4.1:
|
||||
@@ -34410,8 +34063,6 @@ snapshots:
|
||||
|
||||
on-change@5.0.1: {}
|
||||
|
||||
on-exit-leak-free@2.1.2: {}
|
||||
|
||||
on-finished@2.4.1:
|
||||
dependencies:
|
||||
ee-first: 1.1.1
|
||||
@@ -34833,8 +34484,6 @@ snapshots:
|
||||
pg-cloudflare@1.2.7:
|
||||
optional: true
|
||||
|
||||
pg-connection-string@2.6.2: {}
|
||||
|
||||
pg-connection-string@2.7.0: {}
|
||||
|
||||
pg-connection-string@2.9.1: {}
|
||||
@@ -34864,8 +34513,6 @@ snapshots:
|
||||
|
||||
pg-protocol@1.10.3: {}
|
||||
|
||||
pg-protocol@1.6.0: {}
|
||||
|
||||
pg-protocol@1.7.1: {}
|
||||
|
||||
pg-types@2.2.0:
|
||||
@@ -34946,47 +34593,6 @@ snapshots:
|
||||
|
||||
pify@3.0.0: {}
|
||||
|
||||
pino-abstract-transport@1.2.0:
|
||||
dependencies:
|
||||
readable-stream: 4.6.0
|
||||
split2: 4.2.0
|
||||
|
||||
pino-abstract-transport@2.0.0:
|
||||
dependencies:
|
||||
split2: 4.2.0
|
||||
|
||||
pino-std-serializers@6.2.2: {}
|
||||
|
||||
pino-std-serializers@7.0.0: {}
|
||||
|
||||
pino@8.21.0:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
fast-redact: 3.5.0
|
||||
on-exit-leak-free: 2.1.2
|
||||
pino-abstract-transport: 1.2.0
|
||||
pino-std-serializers: 6.2.2
|
||||
process-warning: 3.0.0
|
||||
quick-format-unescaped: 4.0.4
|
||||
real-require: 0.2.0
|
||||
safe-stable-stringify: 2.5.0
|
||||
sonic-boom: 3.8.1
|
||||
thread-stream: 2.7.0
|
||||
|
||||
pino@9.6.0:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
fast-redact: 3.5.0
|
||||
on-exit-leak-free: 2.1.2
|
||||
pino-abstract-transport: 2.0.0
|
||||
pino-std-serializers: 7.0.0
|
||||
process-warning: 4.0.0
|
||||
quick-format-unescaped: 4.0.4
|
||||
real-require: 0.2.0
|
||||
safe-stable-stringify: 2.5.0
|
||||
sonic-boom: 4.2.0
|
||||
thread-stream: 3.1.0
|
||||
|
||||
pirates@4.0.6: {}
|
||||
|
||||
pkce-challenge@5.0.0: {}
|
||||
@@ -35287,14 +34893,6 @@ snapshots:
|
||||
sql-formatter: 11.0.2
|
||||
tslib: 2.8.1
|
||||
|
||||
prettier-plugin-sql@0.17.1(prettier@3.2.5):
|
||||
dependencies:
|
||||
jsox: 1.2.121
|
||||
node-sql-parser: 4.18.0
|
||||
prettier: 3.2.5
|
||||
sql-formatter: 14.0.0
|
||||
tslib: 2.8.1
|
||||
|
||||
prettier@2.8.8: {}
|
||||
|
||||
prettier@3.2.4: {}
|
||||
@@ -35337,18 +34935,10 @@ snapshots:
|
||||
|
||||
process-nextick-args@2.0.1: {}
|
||||
|
||||
process-warning@3.0.0: {}
|
||||
|
||||
process-warning@4.0.0: {}
|
||||
|
||||
process@0.11.10: {}
|
||||
|
||||
progress@2.0.3: {}
|
||||
|
||||
prom-client@14.2.0:
|
||||
dependencies:
|
||||
tdigest: 0.1.2
|
||||
|
||||
promise-inflight@1.0.1: {}
|
||||
|
||||
promise-retry@2.0.1:
|
||||
@@ -35435,8 +35025,6 @@ snapshots:
|
||||
|
||||
queue-microtask@1.2.3: {}
|
||||
|
||||
quick-format-unescaped@4.0.4: {}
|
||||
|
||||
radix3@1.1.2: {}
|
||||
|
||||
raf-schd@4.0.3: {}
|
||||
@@ -35928,8 +35516,6 @@ snapshots:
|
||||
|
||||
readdirp@4.1.1: {}
|
||||
|
||||
real-require@0.2.0: {}
|
||||
|
||||
recast@0.23.11:
|
||||
dependencies:
|
||||
ast-types: 0.16.1
|
||||
@@ -36343,8 +35929,6 @@ snapshots:
|
||||
|
||||
ret@0.2.2: {}
|
||||
|
||||
ret@0.4.3: {}
|
||||
|
||||
retry@0.12.0: {}
|
||||
|
||||
rettime@0.7.0: {}
|
||||
@@ -36474,12 +36058,6 @@ snapshots:
|
||||
es-errors: 1.3.0
|
||||
is-regex: 1.2.1
|
||||
|
||||
safe-regex2@3.1.0:
|
||||
dependencies:
|
||||
ret: 0.4.3
|
||||
|
||||
safe-stable-stringify@2.5.0: {}
|
||||
|
||||
safer-buffer@2.1.2: {}
|
||||
|
||||
sass@1.72.0:
|
||||
@@ -36547,8 +36125,6 @@ snapshots:
|
||||
extend-shallow: 2.0.1
|
||||
kind-of: 6.0.3
|
||||
|
||||
secure-json-parse@2.7.0: {}
|
||||
|
||||
semver@5.7.2: {}
|
||||
|
||||
semver@6.3.1: {}
|
||||
@@ -36953,14 +36529,6 @@ snapshots:
|
||||
ip-address: 9.0.5
|
||||
smart-buffer: 4.2.0
|
||||
|
||||
sonic-boom@3.8.1:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
|
||||
sonic-boom@4.2.0:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
|
||||
sonner@1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
react: 18.3.1
|
||||
@@ -37022,12 +36590,6 @@ snapshots:
|
||||
argparse: 2.0.1
|
||||
nearley: 2.20.1
|
||||
|
||||
sql-formatter@14.0.0:
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
get-stdin: 8.0.0
|
||||
nearley: 2.20.1
|
||||
|
||||
sql-formatter@15.4.9:
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
@@ -37520,10 +37082,6 @@ snapshots:
|
||||
minizlib: 3.1.0
|
||||
yallist: 5.0.0
|
||||
|
||||
tdigest@0.1.2:
|
||||
dependencies:
|
||||
bintrees: 1.0.2
|
||||
|
||||
termi-link@1.1.0: {}
|
||||
|
||||
terser-webpack-plugin@5.3.14(esbuild@0.25.2)(webpack@5.94.0(esbuild@0.25.2)):
|
||||
@@ -37576,14 +37134,6 @@ snapshots:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
thread-stream@2.7.0:
|
||||
dependencies:
|
||||
real-require: 0.2.0
|
||||
|
||||
thread-stream@3.1.0:
|
||||
dependencies:
|
||||
real-require: 0.2.0
|
||||
|
||||
throttle-debounce@3.0.1: {}
|
||||
|
||||
throttleit@2.1.0: {}
|
||||
|
||||
Reference in new issue
Block a user