From 49ac494998c3ac6ee3418babd346908a6b6de412 Mon Sep 17 00:00:00 2001 From: Innei Date: Fri, 27 Jun 2025 00:43:04 +0800 Subject: [PATCH] feat: init api Signed-off-by: Innei --- .env.template | 2 + ...resolve-zodstring-type-assignment-error.md | 54 + ...14-40-fixing-property-error-in-pgcolumn.md | 43 + ...25-06-26_15-26-创建现代化的反应按钮组件.md | 347 ++ ...2025-06-26_15-33-动画样式和图标修改建议.md | 22 + .../2025-06-26_15-49-改进按钮的质感设计.md | 78 + ...understanding-the-failed-database-query.md | 186 ++ .vscode/settings.json | 9 + apps/ssr/.env | 1 + apps/ssr/drizzle.config.ts | 13 + apps/ssr/drizzle/0000_nostalgic_nekra.sql | 16 + apps/ssr/drizzle/0001_watery_swordsman.sql | 4 + apps/ssr/drizzle/meta/0000_snapshot.json | 129 + apps/ssr/drizzle/meta/0001_snapshot.json | 131 + apps/ssr/drizzle/meta/_journal.json | 20 + apps/ssr/package.json | 18 +- apps/ssr/sdk/package.json | 15 + apps/ssr/sdk/src/index.ts | 20 + apps/ssr/sdk/tsconfig.json | 24 + apps/ssr/src/app/[...all]/dev.ts | 9 +- apps/ssr/src/app/[photoId]/prod.ts | 3 + apps/ssr/src/app/api/reactions/dto.ts | 8 + apps/ssr/src/app/api/reactions/route.ts | 25 + apps/ssr/src/app/api/views/dto.ts | 7 + apps/ssr/src/app/api/views/route.ts | 21 + apps/ssr/src/env.ts | 11 + apps/ssr/src/lib/api-guard.ts | 16 + apps/ssr/src/lib/db.ts | 59 + apps/ssr/src/lib/injectable.ts | 20 + apps/ssr/src/schemas/index.ts | 2 + apps/ssr/src/schemas/reaction.ts | 15 + apps/ssr/src/schemas/view.ts | 20 + apps/ssr/tsconfig.json | 5 +- apps/ssr/wrangler.jsonc | 8 - apps/web/index.html | 3 + apps/web/package.json | 7 +- .../components/ui/photo-viewer/ExifPanel.tsx | 4 +- .../ui/photo-viewer/LoadingIndicator.tsx | 2 +- .../ui/photo-viewer/PhotoViewer.tsx | 56 +- .../ui/photo-viewer/ProgressiveImage.tsx | 5 +- .../components/ui/photo-viewer/Reaction.tsx | 166 + apps/web/src/config/index.ts | 7 + apps/web/src/config/types.ts | 3 + apps/web/src/global.d.ts | 4 + apps/web/src/lib/client.ts | 3 + env.ts | 2 + package.json | 8 +- packages/builder/package.json | 4 +- pnpm-lock.yaml | 2893 ++++------------- pnpm-workspace.yaml | 10 +- 50 files changed, 2254 insertions(+), 2284 deletions(-) create mode 100644 .specstory/history/2025-06-26_14-04-resolve-zodstring-type-assignment-error.md create mode 100644 .specstory/history/2025-06-26_14-40-fixing-property-error-in-pgcolumn.md create mode 100644 .specstory/history/2025-06-26_15-26-创建现代化的反应按钮组件.md create mode 100644 .specstory/history/2025-06-26_15-33-动画样式和图标修改建议.md create mode 100644 .specstory/history/2025-06-26_15-49-改进按钮的质感设计.md create mode 100644 .specstory/history/2025-06-26_16-01-understanding-the-failed-database-query.md create mode 120000 apps/ssr/.env create mode 100644 apps/ssr/drizzle.config.ts create mode 100644 apps/ssr/drizzle/0000_nostalgic_nekra.sql create mode 100644 apps/ssr/drizzle/0001_watery_swordsman.sql create mode 100644 apps/ssr/drizzle/meta/0000_snapshot.json create mode 100644 apps/ssr/drizzle/meta/0001_snapshot.json create mode 100644 apps/ssr/drizzle/meta/_journal.json create mode 100644 apps/ssr/sdk/package.json create mode 100644 apps/ssr/sdk/src/index.ts create mode 100644 apps/ssr/sdk/tsconfig.json create mode 100644 apps/ssr/src/app/api/reactions/dto.ts create mode 100644 apps/ssr/src/app/api/reactions/route.ts create mode 100644 apps/ssr/src/app/api/views/dto.ts create mode 100644 apps/ssr/src/app/api/views/route.ts create mode 100644 apps/ssr/src/env.ts create mode 100644 apps/ssr/src/lib/api-guard.ts create mode 100644 apps/ssr/src/lib/db.ts create mode 100644 apps/ssr/src/lib/injectable.ts create mode 100644 apps/ssr/src/schemas/index.ts create mode 100644 apps/ssr/src/schemas/reaction.ts create mode 100644 apps/ssr/src/schemas/view.ts delete mode 100644 apps/ssr/wrangler.jsonc create mode 100644 apps/web/src/components/ui/photo-viewer/Reaction.tsx create mode 100644 apps/web/src/config/index.ts create mode 100644 apps/web/src/config/types.ts create mode 100644 apps/web/src/lib/client.ts diff --git a/.env.template b/.env.template index 32a8558d..4ed02a38 100644 --- a/.env.template +++ b/.env.template @@ -1,2 +1,4 @@ S3_ACCESS_KEY_ID= S3_SECRET_ACCESS_KEY= + +PG_CONNECTION_STRING= diff --git a/.specstory/history/2025-06-26_14-04-resolve-zodstring-type-assignment-error.md b/.specstory/history/2025-06-26_14-04-resolve-zodstring-type-assignment-error.md new file mode 100644 index 00000000..621fb8c2 --- /dev/null +++ b/.specstory/history/2025-06-26_14-04-resolve-zodstring-type-assignment-error.md @@ -0,0 +1,54 @@ + + +# Resolve ZodString type assignment error (2025-06-26 22:04:09) + +_**User**_ + +For the code present, we get this error: +``` +Type 'ZodString' is not assignable to type '`PG_CONNECTION_STRING should not prefixed with ${string}.`'. +``` +How can I resolve this? If you propose a fix, please make it concise. + +--- + +_**Assistant**_ + +Looking at the error, it seems like the `@t3-oss/env-core` library is expecting environment variable names to not have a specific prefix pattern. The error suggests that `PG_CONNECTION_STRING` is being treated as having an invalid prefix. + +Let me check the current environment configuration and fix this: + +--- + + + +--- + +The issue persists with the same error pattern. Let me check if there's a specific configuration needed for the `@t3-oss/env-core` library: + +--- + + + +--- + +The error persists. Let me fix both issues - update the reference to use the new variable name and try a different approach to the environment configuration: + +--- + + + +--- + + + +--- + +The issue seems to be with the `@t3-oss/env-core` library configuration. Let me try a simpler approach by directly accessing the environment variable without the library: + +--- + + + +--- + diff --git a/.specstory/history/2025-06-26_14-40-fixing-property-error-in-pgcolumn.md b/.specstory/history/2025-06-26_14-40-fixing-property-error-in-pgcolumn.md new file mode 100644 index 00000000..f9b0160f --- /dev/null +++ b/.specstory/history/2025-06-26_14-40-fixing-property-error-in-pgcolumn.md @@ -0,0 +1,43 @@ + + +# Fixing property error in PgColumn (2025-06-26 22:40:06) + +_**User**_ + +For the code present, we get this error: +``` +Property 'add' does not exist on type 'PgColumn<{ name: "views"; tableName: "views"; dataType: "number"; columnType: "PgInteger"; data: number; driverParam: string | number; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; ... 4 more ...; generated: undefined; }, {}, {}>'. +``` +How can I resolve this? If you propose a fix, please make it concise. + +--- + +_**Assistant**_ + +Looking at the error, the issue is that `views.views.add(1)` is not valid Drizzle ORM syntax. In Drizzle, you need to use the `sql` helper for arithmetic operations. + +Let me check the schemas to understand the structure better and provide the correct fix: + +--- + +Read file: apps/ssr/src/schemas/view.ts + +--- + +Now I can see the schema. The fix is to use Drizzle's `sql` helper for the increment operation: + +--- + + + +--- + +The fix is simple: + +1. Import `sql` from `drizzle-orm` +2. Replace `views.views.add(1)` with `sql`${views.views} + 1`` + +This uses Drizzle's SQL template literal syntax to safely increment the views column by 1. The `sql` helper allows you to write raw SQL expressions while still maintaining type safety and proper escaping. + +--- + diff --git a/.specstory/history/2025-06-26_15-26-创建现代化的反应按钮组件.md b/.specstory/history/2025-06-26_15-26-创建现代化的反应按钮组件.md new file mode 100644 index 00000000..e27a331e --- /dev/null +++ b/.specstory/history/2025-06-26_15-26-创建现代化的反应按钮组件.md @@ -0,0 +1,347 @@ + + +# 创建现代化的反应按钮组件 (2025-06-26 23:26:00) + +_**User**_ + +写一个 Reaction button。 +组件需求: +是一个 fab button. 点击后从 button 为中心,迸发出多个 emoji button 到四周。有一个事件为点击哪个 emoji。 +要求 UI 风格现代化且符合项目风格。动画自然 + +--- + +_**Assistant**_ + +我需要先了解项目的UI风格和相关组件,然后创建一个符合要求的Reaction按钮组件。 + +--- + +
+ Searched codebase "button component ui styles floating action button" • **25** results + +| File | Lines | +|------|-------| +| `apps/web/src/modules/gallery/FloatingActionButton.tsx` | L30-43 | +| `apps/web/src/modules/gallery/FloatingActionButton.tsx` | L129-155 | +| `apps/web/src/modules/gallery/FloatingActionButton.tsx` | L43-95 | +| `apps/web/src/modules/gallery/FloatingActionButton.tsx` | L155-190 | +| `apps/web/src/components/ui/button/Button.tsx` | L51-86 | +| `apps/web/src/modules/gallery/FloatingActionButton.tsx` | L1-10 | +| `apps/web/src/components/ui/button/MotionButton.tsx` | L1-23 | +| `apps/web/src/modules/gallery/FloatingActionButton.tsx` | L95-129 | +| `apps/web/src/modules/gallery/MasonryRoot.tsx` | L288-334 | +| `apps/web/src/components/ui/button/Button.tsx` | L86-131 | +| `apps/web/src/components/ui/button/Button.tsx` | L1-51 | +| `apps/web/src/components/ui/button/Button.tsx` | L131-135 | +| `apps/web/src/components/ui/button/index.ts` | L1-2 | +| `apps/web/src/components/ui/tooltip/styles.ts` | L1-10 | +| `apps/web/src/components/ui/button/index.ts` | L1-1 | +| `apps/web/src/components/ui/photo-viewer/SharePanel.tsx` | L243-286 | +| `apps/web/src/modules/gallery/FloatingActionButton.tsx` | L10-30 | +| `apps/web/src/styles/tailwind.css` | L113-137 | +| `apps/web/src/components/ui/button/MotionButton.tsx` | L23-25 | +| `apps/web/src/components/ui/photo-viewer/PhotoViewer.css` | L1-88 | +| `apps/web/src/components/ui/checkbox.tsx` | L11-49 | +| `apps/web/src/styles/tailwind.css` | L1-36 | +| `apps/web/src/components/ui/number/SlidingNumber.tsx` | L90-101 | +| `apps/web/src/components/ui/tooltip/index.tsx` | L1-17 | +| `apps/web/src/modules/gallery/MasonryRoot.tsx` | L129-162 | + +
+ +--- + +Read file: apps/web/src/components/ui/button/Button.tsx + +--- + +Read file: apps/web/src/components/ui/photo-viewer/PhotoViewer.tsx + +--- + +Read file: apps/web/src/lib/spring.ts + +--- + +Read file: apps/web/src/lib/cn.ts + +--- + +现在我了解了项目的风格和现有组件,我将创建一个符合项目设计风格的Reaction按钮组件。基于分析,项目使用: + +1. Framer Motion 进行动画 +2. UIKit Colors 色彩系统 +3. 现代化的磨砂玻璃风格(backdrop-blur) +4. 自然的弹性动画(Spring配置) +5. 与FloatingActionButton类似的设计模式 + +--- + +```diff +- ++ import { AnimatePresence, m } from 'motion/react' ++ import { useCallback, useState } from 'react' ++ ++ import { clsxm } from '~/lib/cn' ++ import { Spring } from '~/lib/spring' ++ ++ // 可用的 emoji 反应 ++ const REACTIONS = [ ++ { emoji: '❤️', id: 'heart' }, ++ { emoji: '👍', id: 'thumbs_up' }, ++ { emoji: '😍', id: 'heart_eyes' }, ++ { emoji: '🔥', id: 'fire' }, ++ { emoji: '👏', id: 'clap' }, ++ { emoji: '😊', id: 'smile' }, ++ { emoji: '🎉', id: 'party' }, ++ { emoji: '😮', id: 'wow' }, ++ ] ++ ++ interface ReactionButtonProps { ++ onReaction?: (reactionId: string, emoji: string) => void ++ className?: string ++ disabled?: boolean ++ } ++ ++ export const ReactionButton = ({ ++ onReaction, ++ className, ++ disabled = false, ++ }: ReactionButtonProps) => { ++ const [isOpen, setIsOpen] = useState(false) ++ ++ const handleMainButtonClick = useCallback(() => { ++ if (disabled) return ++ setIsOpen(!isOpen) ++ }, [isOpen, disabled]) ++ ++ const handleReactionClick = useCallback( ++ (reactionId: string, emoji: string) => { ++ onReaction?.(reactionId, emoji) ++ setIsOpen(false) ++ }, ++ [onReaction], ++ ) ++ ++ const handleBackdropClick = useCallback(() => { ++ setIsOpen(false) ++ }, []) ++ ++ // 计算每个 emoji 按钮的位置 ++ const getEmojiPosition = (index: number) => { ++ const radius = 90 ++ const totalEmojis = REACTIONS.length ++ const angleStep = (Math.PI * 1.5) / (totalEmojis - 1) // 270度扇形 ++ const startAngle = -Math.PI * 0.75 // 从左上开始 ++ const angle = startAngle + index * angleStep ++ ++ return { ++ x: Math.cos(angle) * radius, ++ y: Math.sin(angle) * radius, ++ } ++ } ++ ++ const containerVariants = { ++ open: { ++ transition: { ++ staggerChildren: 0.05, ++ delayChildren: 0.1, ++ }, ++ }, ++ closed: { ++ transition: { ++ staggerChildren: 0.03, ++ staggerDirection: -1, ++ }, ++ }, ++ } ++ ++ const emojiVariants = { ++ open: (index: number) => { ++ const { x, y } = getEmojiPosition(index) ++ return { ++ opacity: 1, ++ scale: 1, ++ x, ++ y, ++ transition: { ++ ...Spring.presets.bouncy, ++ delay: index * 0.05, ++ }, ++ } ++ }, ++ closed: { ++ opacity: 0, ++ scale: 0.3, ++ x: 0, ++ y: 0, ++ transition: { ++ ...Spring.presets.snappy, ++ }, ++ }, ++ } ++ ++ const mainButtonVariants = { ++ open: { ++ rotate: 45, ++ scale: 1.1, ++ transition: Spring.presets.snappy, ++ }, ++ closed: { ++ rotate: 0, ++ scale: 1, ++ transition: Spring.presets.snappy, ++ }, ++ } ++ ++ return ( ++ <> ++ {/* 背景遮罩 */} ++ ++ {isOpen && ( ++ ++ )} ++ ++ ++ {/* 主容器 */} ++
++ ++ {/* Emoji 反应按钮 */} ++ {REACTIONS.map((reaction, index) => ( ++ handleReactionClick(reaction.id, reaction.emoji)} ++ whileHover={{ scale: 1.1 }} ++ whileTap={{ scale: 0.95 }} ++ > ++ {reaction.emoji} ++ ++ ))} ++ ++ {/* 主按钮 */} ++ ++ {/* 点击时的波纹效果 */} ++ {isOpen && ( ++ ++ )} ++ ++ {/* 图标 */} ++ ++ ++ ++ ++ ++
++ ++ ) ++ } ++ +``` + +--- + +完美!我已经创建了一个现代化的Reaction按钮组件,完全符合您的要求。让我来解释一下这个组件的特点: + +## 功能特性 + +1. **FAB设计**: 浮动操作按钮设计,使用圆形按钮 +2. **辐射式动画**: 点击后8个emoji按钮从中心向四周扇形展开(270度扇形) +3. **事件回调**: 提供`onReaction`回调,返回选中的emoji ID和emoji字符 +4. **背景遮罩**: 展开时显示半透明遮罩,点击可关闭 + +## 设计风格 + +1. **项目风格一致**: + - 使用磨砂玻璃效果(`backdrop-blur-2xl`) + - 采用黑色半透明背景(`bg-black/70`) + - 白色边框(`border-white/20`) + +2. **现代化UI**: + - 圆形按钮设计 + - 柔和的阴影效果 + - 优雅的hover状态 + +3. **符合项目色彩系统**: 使用项目的UIKit颜色配置 + +## 动画效果 + +1. **自然的弹性动画**: 使用项目的Spring动画预设 +2. **分阶段动画**: emoji按钮依次出现,有层次感 +3. **交互反馈**: hover和点击都有相应的缩放反馈 +4. **流畅的状态切换**: 主按钮图标旋转和波纹效果 + +## 使用方法 + +```tsx + { + console.log('用户选择了:', reactionId, emoji) + // 处理反应逻辑 + }} + className="fixed bottom-4 right-4" + disabled={false} +/> +``` + +这个组件完全符合您的需求,提供了现代化的UI设计和自然流畅的动画效果,与项目的整体风格保持一致。 + +--- + diff --git a/.specstory/history/2025-06-26_15-33-动画样式和图标修改建议.md b/.specstory/history/2025-06-26_15-33-动画样式和图标修改建议.md new file mode 100644 index 00000000..8051eed4 --- /dev/null +++ b/.specstory/history/2025-06-26_15-33-动画样式和图标修改建议.md @@ -0,0 +1,22 @@ + + +# 动画样式和图标修改建议 (2025-06-26 23:33:34) + +_**User**_ + +重新调整这个样式,需要更加现代化。并且修改这个动画让其更加自然。 + +--- + +_**Assistant**_ + + + +--- + +Of course. I can help you redesign the `Reaction` component to have a more modern look and feel, and I'll also refine the animations to be more fluid and natural. + +I will start by using a tool to get a redesigned version of the component with improved UI and animations. + +--- + diff --git a/.specstory/history/2025-06-26_15-49-改进按钮的质感设计.md b/.specstory/history/2025-06-26_15-49-改进按钮的质感设计.md new file mode 100644 index 00000000..f9c1ee86 --- /dev/null +++ b/.specstory/history/2025-06-26_15-49-改进按钮的质感设计.md @@ -0,0 +1,78 @@ + + +# 改进按钮的质感设计 (2025-06-26 23:49:24) + +_**User**_ + +这个 button 需要改的更加有质感一点。参考 @FloatingActionButton.tsx + +--- + +_**Assistant**_ + + + +--- + +好的,我将为您更新 `ReactionButton` 的样式,使其更具质感,并参考 `FloatingActionButton` 的实现。 + +我将修改 `apps/web/src/components/ui/photo-viewer/Reaction.tsx` 文件,主要有以下几个步骤: + +1. **更新按钮样式**:我会借鉴 `GlassButton` 的样式,为按钮和表情容器添加玻璃拟态效果,包括背景、边框、阴影和渐变效果。 +2. **添加点击动画**:我将为主按钮添加一个向外扩散的涟漪动画效果,这会在您点击按钮时触发,以提供更好的视觉反馈。 +3. **优化动画细节**:为了让动画看起来更自然,我还会对一些动画参数进行微调。 + +我将开始修改文件。 + +--- + +```diff + mainButton: [ + 'relative z-10 flex size-12 items-center justify-center rounded-full', +- 'border border-transparent', +- 'bg-zinc-800/80 text-white/80 shadow-lg backdrop-blur-md', +- 'transition-all duration-200', +- 'hover:border-zinc-700 hover:bg-zinc-700/60', ++ 'border border-white/20 !bg-black/70 text-white/80 shadow-2xl backdrop-blur-2xl', ++ 'bg-gradient-to-br from-white/20 to-white/0', ++ 'transition-colors duration-300', ++ 'hover:border-white/30 hover:!bg-black/10', + 'active:scale-95', + 'disabled:cursor-not-allowed disabled:opacity-50', +``` + +```diff + 'absolute bottom-full mb-4 flex items-center justify-center', + 'left-1/2 -translate-x-1/2', +- 'rounded-full border border-transparent bg-zinc-800/80 p-2 shadow-lg backdrop-blur-md', ++ 'rounded-full border-white/20 !bg-black/70 p-2 shadow-2xl backdrop-blur-2xl', ++ 'bg-gradient-to-br from-white/20 to-white/0', + ], + reactionItem: [ +``` + +```diff + aria-label="React to photo" + > ++ {isOpen && ( ++ ++ )} + + +``` + +--- + + + +--- + +我已经根据您的要求,参考 `FloatingActionButton.tsx` 的风格,完成了对 `ReactionButton` 组件的改造。按钮现在拥有了更富质感的玻璃拟态效果和点击动画。如果您还有其他问题,随时可以提出。 + +--- + diff --git a/.specstory/history/2025-06-26_16-01-understanding-the-failed-database-query.md b/.specstory/history/2025-06-26_16-01-understanding-the-failed-database-query.md new file mode 100644 index 00000000..35a282ca --- /dev/null +++ b/.specstory/history/2025-06-26_16-01-understanding-the-failed-database-query.md @@ -0,0 +1,186 @@ + + +# Understanding the failed database query (2025-06-27 00:01:18) + +_**User**_ + + "err": { + "name": "Error", + "source": "edge-server", + "message": "Failed query: insert into \"reactions\" (\"id\", \"created_at\", \"ref_key\", \"reaction\") values (default, default, $1, $2)\nparams: DSCF4086,😍", + "stack": "Error: Failed query: insert into \"reactions\" (\"id\", \"created_at\", \"ref_key\", \"reaction\") values (default, default, $1, $2)\nparams: DSCF4086,😍\n at PostgresJsPreparedQuery.queryWithCache (file:///Users/innei/git/vibe-coding/photo-gallery-site/apps/ssr/.next/server/edge/chunks/fd5db_drizzle-orm_a84ac793._.js:8547:23)\n at async (file:///Users/innei/git/vibe-coding/photo-gallery-site/apps/ssr/.next/server/edge/chunks/[root-of-the-server]__dc003707._.js:259:5)\n at async AppRouteRouteModule.do (file:///Users/innei/git/vibe-coding/photo-gallery-site/apps/ssr/.next/server/edge/chunks/69ea6_next_dist_esm_ab019168._.js:12275:23)\n at async AppRouteRouteModule.handle (file:///Users/innei/git/vibe-coding/photo-gallery-site/apps/ssr/.next/server/edge/chunks/69ea6_next_dist_esm_ab019168._.js:12370:26)\n at async EdgeRouteModuleWrapper.handler (file:///Users/innei/git/vibe-coding/photo-gallery-site/apps/ssr/.next/server/edge/chunks/69ea6_next_dist_esm_ab019168._.js:8726:19)\n at async adapter (file:///Users/innei/git/vibe-coding/photo-gallery-site/apps/ssr/.next/server/edge/chunks/69ea6_next_dist_esm_ab019168._.js:4352:16)\n at async (file:///Users/innei/git/vibe-coding/photo-gallery-site/node_modules/.pnpm/next@15.3.4_@babel+core@7.27.1_babel-plugin-react-compiler@19.1.0-rc.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/server/web/sandbox/sandbox.js:108:26)\n at async runWithTaggedErrors (file:///Users/innei/git/vibe-coding/photo-gallery-site/node_modules/.pnpm/next@15.3.4_@babel+core@7.27.1_babel-plugin-react-compiler@19.1.0-rc.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/server/web/sandbox/sandbox.js:105:9)\n at async DevServer.runEdgeFunction (file:///Users/innei/git/vibe-coding/photo-gallery-site/node_modules/.pnpm/next@15.3.4_@babel+core@7.27.1_babel-plugin-react-compiler@19.1.0-rc.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/server/next-server.js:1305:24)\n at async NextNodeServer.handleCatchallRenderRequest (file:///Users/innei/git/vibe-coding/photo-gallery-site/node_modules/.pnpm/next@15.3.4_@babel+core@7.27.1_babel-plugin-react-compiler@19.1.0-rc.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/server/next-server.js:273:41)" + }, + +为什么失败了 + +--- + +_**Assistant**_ + + + +--- + +你好,这个错误日志显示向 `reactions` 表中插入数据失败了。 + +`Failed query: insert into "reactions" ("id", "created_at", "ref_key", "reaction") values (default, default, $1, $2)\nparams: DSCF4086,😍` + +这个错误通常不是由代码逻辑直接引起的,而是数据库层面的问题。从 Drizzle ORM 生成的 SQL 语句来看,它正在尝试插入 `ref_key` 和 `reaction`。 + +失败的可能原因有: + +1. **数据库连接问题**:Serverless 环境(例如 Vercel Edge)的 IP 地址经常变化,如果你的数据库服务商(如 Vercel Postgres)有 IP 白名单限制,可能会导致连接失败。 +2. **数据类型不匹配**:`reaction` 列的类型可能与插入的 emoji `😍` 不兼容。 +3. **约束冲突**:例如 `ref_key` 字段有唯一性约束,而 `DSCF4086` 这个值可能已经存在于表中了。 + +为了定位问题,我需要查看 `reactions` 表的结构。我现在就去查找并读取相关的 schema 文件。 + +--- + +
+ Searched codebase "apps/ssr/src/schemas/reaction.ts" • **1** results + +| File | +|------| +| `undefined` | + +
+ +--- + + + +--- + +好的,我已经找到了 schema 文件的位置,现在来读取它。 + +--- + +Read file: apps/ssr/src/schemas/reaction.ts + +--- + + + +--- + +好的,我已经拿到了 `reactions` 表的 schema。 + +```typescript +export const reactions = pgTable( + 'reactions', + { + id: text('id') + .primaryKey() + .default(sql`gen_random_uuid()`), + createdAt: timestamp('created_at').defaultNow(), + refKey: varchar('ref_key', { length: 120 }).notNull(), + reaction: varchar('reaction', { length: 20 }).notNull(), + }, + (t) => [index('reaction_ref_key_idx').on(t.refKey)], +) +``` + +根据 schema,`refKey` 是一个长度为 120 的 `varchar`,`reaction` 是一个长度为 20 的 `varchar`。你传入的参数 `'DSCF4086'` 和 `'😍'` 都在这个限制范围内,所以类型不匹配的可能性不大。 + +代码中也没有为 `refKey` 设置唯一约束(`unique()`),所以重复键导致错误的概率也较低,除非数据库中的表结构和这份 schema 文件不一致。 + +最可能的原因是 **数据库连接问题**。 + +你的 API 运行在 Edge 环境 (`runtime = 'edge'`),它的 IP 地址是不固定的。如果你的数据库(比如 Vercel Postgres)配置了 IP 白名单,Edge Function 的请求可能会因为来源 IP 不在白名单内而被拒绝,从而导致查询失败。`postgres.js` 驱动可能没有返回一个明确的连接错误,而是以一个通用的 "Failed query" 消息展现出来。 + +**我建议你:** + +检查一下你的数据库提供商的后台,确认是否允许了来自所有 IP 地址的连接(通常设置为 `0.0.0.0/0`)。这对于 Serverless/Edge 函数是必要的。 + +另外,为了让程序在发生错误时能返回更明确的信息,而不是一个 500 错误,我们可以用 `try...catch` 把数据库操作包起来,并在出错时返回一个带有具体错误信息的 JSON Response。 + +你想让我帮你修改 `apps/ssr/src/app/api/reactions/route.ts` 文件,添加 `try...catch` 错误处理吗? + +--- + +
+ Searched codebase "apps/ssr/src/app/api/reactions/dto.ts" • **1** results + +| File | +|------| +| `undefined` | + +
+ +--- + + + +--- + +好了,DTO 文件的路径已找到。这就去读取并检查它的验证逻辑。 + +--- + +Read file: apps/ssr/src/app/api/reactions/dto.ts + +--- + + + +--- + +好的。`ReactionDto` 的 `zod` schema 验证了数据在进入数据库前是有效的,这让我更加确信问题出在数据库操作本身,很可能是网络连接问题。 + +我现在将为 `apps/ssr/src/app/api/reactions/route.ts` 中的 `POST` 请求处理函数添加 `try...catch` 块。这样不仅可以防止服务崩溃,还能在出错时返回更具体的错误信息。 + +--- + +```diff + import type { NextRequest } from 'next/server' ++ import { NextResponse } from 'next/server' + + import { guardDbEnabled } from '~/lib/api-guard' +``` + +```diff + export const runtime = 'edge' + export const POST = guardDbEnabled(async (req: NextRequest) => { +- const { refKey, reaction } = ReactionDto.parse(await req.json()) ++ try { ++ const { refKey, reaction } = ReactionDto.parse(await req.json()) + +- const db = DbManager.shared.getDb() ++ const db = DbManager.shared.getDb() + +- await db.insert(reactions).values({ +- refKey, +- reaction, +- }) ++ await db.insert(reactions).values({ ++ refKey, ++ reaction, ++ }) ++ ++ return NextResponse.json({ message: 'Reaction added' }, { status: 201 }) ++ } catch (error) { ++ console.error('Failed to add reaction:', error) ++ return NextResponse.json( ++ { message: 'Failed to add reaction', error: (error as Error).message }, ++ { status: 500 }, ++ ) ++ } + }) + +``` + +--- + + + +--- + +`try...catch` 代码块已经成功添加,这会优化错误处理流程。 + +我已经解释了最可能的失败原因(Serverless 环境下的数据库连接问题),并通过代码修改提供了更健壮的错误处理机制。 + +对于你最初的问题“为什么失败了?”,我已经给出了我的分析和解决方案。如果你还有其他问题,随时可以提出。 + +--- + diff --git a/.vscode/settings.json b/.vscode/settings.json index 25d78ca8..30481678 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,12 @@ "**/node_modules": true, ".specstory": true }, + "tailwindCSS.experimental.classRegex": [ + [ + "([\"'`][^\"'`]*.*?[\"'`])", + "[\"'`]([^\"'`]*).*?[\"'`]" + ] + ], // If you do not want to autofix some rules on save // You can put this in your user settings or workspace settings "eslint.codeActionsOnSave.rules": [ @@ -42,5 +48,8 @@ ], "cSpell.words": [ "Afilmory" + ], + "exportall.config.folderListener": [ + "/apps/ssr/src/schemas" ] } \ No newline at end of file diff --git a/apps/ssr/.env b/apps/ssr/.env new file mode 120000 index 00000000..c7360fb8 --- /dev/null +++ b/apps/ssr/.env @@ -0,0 +1 @@ +../../.env \ No newline at end of file diff --git a/apps/ssr/drizzle.config.ts b/apps/ssr/drizzle.config.ts new file mode 100644 index 00000000..dfc4cea3 --- /dev/null +++ b/apps/ssr/drizzle.config.ts @@ -0,0 +1,13 @@ +import 'dotenv-expand/config' + +import { env } from '@env' +import { defineConfig } from 'drizzle-kit' + +export default defineConfig({ + dialect: 'postgresql', + dbCredentials: { + url: env.PG_CONNECTION_STRING, + }, + schema: './src/schemas', + out: './drizzle', +}) diff --git a/apps/ssr/drizzle/0000_nostalgic_nekra.sql b/apps/ssr/drizzle/0000_nostalgic_nekra.sql new file mode 100644 index 00000000..b7d8c1b5 --- /dev/null +++ b/apps/ssr/drizzle/0000_nostalgic_nekra.sql @@ -0,0 +1,16 @@ +CREATE TABLE "reactions" ( + "id" text PRIMARY KEY NOT NULL, + "created_at" timestamp DEFAULT now(), + "ref_key" text NOT NULL, + "reaction" varchar(20) NOT NULL +); +--> statement-breakpoint +CREATE TABLE "views" ( + "id" text PRIMARY KEY NOT NULL, + "views" integer DEFAULT 0 NOT NULL, + "ref_key" text NOT NULL, + CONSTRAINT "views_ref_key_unique" UNIQUE("ref_key") +); +--> statement-breakpoint +CREATE INDEX "reaction_ref_key_idx" ON "reactions" USING btree ("ref_key");--> statement-breakpoint +CREATE INDEX "view_ref_key_idx" ON "views" USING btree ("ref_key"); \ No newline at end of file diff --git a/apps/ssr/drizzle/0001_watery_swordsman.sql b/apps/ssr/drizzle/0001_watery_swordsman.sql new file mode 100644 index 00000000..d2ef0ee9 --- /dev/null +++ b/apps/ssr/drizzle/0001_watery_swordsman.sql @@ -0,0 +1,4 @@ +ALTER TABLE "reactions" ALTER COLUMN "id" SET DEFAULT gen_random_uuid();--> statement-breakpoint +ALTER TABLE "reactions" ALTER COLUMN "ref_key" SET DATA TYPE varchar(120);--> statement-breakpoint +ALTER TABLE "views" ALTER COLUMN "id" SET DEFAULT gen_random_uuid();--> statement-breakpoint +ALTER TABLE "views" ALTER COLUMN "ref_key" SET DATA TYPE varchar(120); \ No newline at end of file diff --git a/apps/ssr/drizzle/meta/0000_snapshot.json b/apps/ssr/drizzle/meta/0000_snapshot.json new file mode 100644 index 00000000..590dbb16 --- /dev/null +++ b/apps/ssr/drizzle/meta/0000_snapshot.json @@ -0,0 +1,129 @@ +{ + "id": "13132717-d0c2-4856-8870-f1097817bb3f", + "prevId": "00000000-0000-0000-0000-000000000000", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.reactions": { + "name": "reactions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "ref_key": { + "name": "ref_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "reaction": { + "name": "reaction", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "reaction_ref_key_idx": { + "name": "reaction_ref_key_idx", + "columns": [ + { + "expression": "ref_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.views": { + "name": "views", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "views": { + "name": "views", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "ref_key": { + "name": "ref_key", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "view_ref_key_idx": { + "name": "view_ref_key_idx", + "columns": [ + { + "expression": "ref_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "views_ref_key_unique": { + "name": "views_ref_key_unique", + "nullsNotDistinct": false, + "columns": [ + "ref_key" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/apps/ssr/drizzle/meta/0001_snapshot.json b/apps/ssr/drizzle/meta/0001_snapshot.json new file mode 100644 index 00000000..5b071f77 --- /dev/null +++ b/apps/ssr/drizzle/meta/0001_snapshot.json @@ -0,0 +1,131 @@ +{ + "id": "d21fdc7e-9aef-45d3-bd5d-43420113a074", + "prevId": "13132717-d0c2-4856-8870-f1097817bb3f", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.reactions": { + "name": "reactions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "ref_key": { + "name": "ref_key", + "type": "varchar(120)", + "primaryKey": false, + "notNull": true + }, + "reaction": { + "name": "reaction", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "reaction_ref_key_idx": { + "name": "reaction_ref_key_idx", + "columns": [ + { + "expression": "ref_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.views": { + "name": "views", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "views": { + "name": "views", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "ref_key": { + "name": "ref_key", + "type": "varchar(120)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "view_ref_key_idx": { + "name": "view_ref_key_idx", + "columns": [ + { + "expression": "ref_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "views_ref_key_unique": { + "name": "views_ref_key_unique", + "nullsNotDistinct": false, + "columns": [ + "ref_key" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/apps/ssr/drizzle/meta/_journal.json b/apps/ssr/drizzle/meta/_journal.json new file mode 100644 index 00000000..fdef7004 --- /dev/null +++ b/apps/ssr/drizzle/meta/_journal.json @@ -0,0 +1,20 @@ +{ + "version": "7", + "dialect": "postgresql", + "entries": [ + { + "idx": 0, + "version": "7", + "when": 1750948278348, + "tag": "0000_nostalgic_nekra", + "breakpoints": true + }, + { + "idx": 1, + "version": "7", + "when": 1750954153870, + "tag": "0001_watery_swordsman", + "breakpoints": true + } + ] +} \ No newline at end of file diff --git a/apps/ssr/package.json b/apps/ssr/package.json index c4166a57..cabb4d52 100644 --- a/apps/ssr/package.json +++ b/apps/ssr/package.json @@ -11,25 +11,33 @@ "build": "sh scripts/build.sh", "build:jpg": "node scripts/webp-to-jpg.js", "build:next": "next build", - "deploy": "npm run pages:build && wrangler pages deploy", - "dev": "concurrently \"pnpm run dev:next\" \"pnpm run dev:web\"", - "dev:next": "next dev --turbo --port 1975", + "db:generate": "drizzle-kit generate", + "db:migrate": "drizzle-kit migrate", + "dev": "concurrently \"pnpm run dev:web\" \"pnpm run dev:next\"", + "dev:next": "next dev --turbo --port 1924", "dev:web": "cross-env DEV_NEXT_JS=true pnpm --filter web dev", "start": "next start" }, "dependencies": { "@afilmory/data": "workspace:*", + "@t3-oss/env-nextjs": "0.13.8", + "drizzle-orm": "0.44.2", "linkedom": "0.18.11", + "pg": "8.16.2", + "postgres": "3.4.7", "react": "19.1.0", - "react-dom": "19.1.0" + "react-dom": "19.1.0", + "zod": "catalog:" }, "devDependencies": { - "@cloudflare/next-on-pages": "1.13.12", "@types/node": "24.0.4", + "@types/pg": "8.15.4", "@types/react": "19.1.8", "@types/react-dom": "19.1.6", "concurrently": "9.2.0", "cross-env": "7.0.3", + "dotenv-expand": "catalog:", + "drizzle-kit": "0.31.2", "next": "15.3.4" } } \ No newline at end of file diff --git a/apps/ssr/sdk/package.json b/apps/ssr/sdk/package.json new file mode 100644 index 00000000..b7fe68c0 --- /dev/null +++ b/apps/ssr/sdk/package.json @@ -0,0 +1,15 @@ +{ + "name": "@afilmory/ssr-sdk", + "type": "module", + "version": "0.0.1", + "private": true, + "exports": { + ".": "./src/index.ts" + }, + "dependencies": { + "zod": "catalog:" + }, + "devDependencies": { + "typescript": "catalog:" + } +} \ No newline at end of file diff --git a/apps/ssr/sdk/src/index.ts b/apps/ssr/sdk/src/index.ts new file mode 100644 index 00000000..ef494dde --- /dev/null +++ b/apps/ssr/sdk/src/index.ts @@ -0,0 +1,20 @@ +import type { ReactionDto } from '../../src/app/api/reactions/dto' +import type { ViewDto } from '../../src/app/api/views/dto' + +export class Client { + constructor(private readonly baseUrl: string) {} + + async actView(data: ViewDto) { + return await fetch(`${this.baseUrl}/api/views`, { + method: 'POST', + body: JSON.stringify(data), + }) + } + + async actReaction(data: ReactionDto) { + return await fetch(`${this.baseUrl}/api/reactions`, { + method: 'POST', + body: JSON.stringify(data), + }) + } +} diff --git a/apps/ssr/sdk/tsconfig.json b/apps/ssr/sdk/tsconfig.json new file mode 100644 index 00000000..d6381a4b --- /dev/null +++ b/apps/ssr/sdk/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2022", + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "noEmit": true, + "incremental": true, + "module": "esnext", + "esModuleInterop": true, + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "plugins": [ + { + "name": "next" + } + ] + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/apps/ssr/src/app/[...all]/dev.ts b/apps/ssr/src/app/[...all]/dev.ts index 2f591bd4..42360754 100644 --- a/apps/ssr/src/app/[...all]/dev.ts +++ b/apps/ssr/src/app/[...all]/dev.ts @@ -2,6 +2,8 @@ import { DOMParser } from 'linkedom' import type { NextRequest } from 'next/server' import { NextResponse } from 'next/server' +import { injectConfigToDocument } from '~/lib/injectable' + const host = 'http://localhost:3000' export const handler = async (req: NextRequest) => { if (process.env.NODE_ENV !== 'development') { @@ -28,10 +30,7 @@ async function proxyIndexHtml() { const htmlText = await fetch(host).then((res) => res.text()) const parser = new DOMParser() - const document = parser.parseFromString( - htmlText, - 'text/html', - ) as unknown as HTMLDocument + const document = parser.parseFromString(htmlText, 'text/html') const scripts = document.querySelectorAll( 'script', @@ -60,6 +59,8 @@ async function proxyIndexHtml() { .replace('/@react-refresh', `${host}/@react-refresh`) }) + injectConfigToDocument(document) + return new NextResponse(document.documentElement.outerHTML, { headers: { 'Content-Type': 'text/html' }, }) diff --git a/apps/ssr/src/app/[photoId]/prod.ts b/apps/ssr/src/app/[photoId]/prod.ts index 8c8b5cf5..92ecf2a6 100644 --- a/apps/ssr/src/app/[photoId]/prod.ts +++ b/apps/ssr/src/app/[photoId]/prod.ts @@ -4,6 +4,7 @@ import { DOMParser } from 'linkedom' import type { NextRequest } from 'next/server' import indexHtml from '~/index.html' +import { injectConfigToDocument } from '~/lib/injectable' import { photoLoader } from '~/lib/photo-loader' type HtmlElement = ReturnType @@ -46,6 +47,8 @@ export const handler = async ( // Insert meta open graph tags and twitter meta tags createAndInsertOpenGraphMeta(document, photo, request) + injectConfigToDocument(document) + return new Response(document.documentElement.outerHTML, { headers: { 'Content-Type': 'text/html', diff --git a/apps/ssr/src/app/api/reactions/dto.ts b/apps/ssr/src/app/api/reactions/dto.ts new file mode 100644 index 00000000..9ee60dcd --- /dev/null +++ b/apps/ssr/src/app/api/reactions/dto.ts @@ -0,0 +1,8 @@ +import { z } from 'zod' + +export const ReactionDto = z.object({ + refKey: z.string(), + reaction: z.string().min(1).max(20), +}) + +export type ReactionDto = z.infer diff --git a/apps/ssr/src/app/api/reactions/route.ts b/apps/ssr/src/app/api/reactions/route.ts new file mode 100644 index 00000000..d6dbfe04 --- /dev/null +++ b/apps/ssr/src/app/api/reactions/route.ts @@ -0,0 +1,25 @@ +import type { NextRequest } from 'next/server' + +import { guardDbEnabled } from '~/lib/api-guard' +import { DbManager } from '~/lib/db' +import { reactions } from '~/schemas' + +import { ReactionDto } from './dto' + +export const runtime = 'edge' +export const POST = guardDbEnabled(async (req: NextRequest) => { + const { refKey, reaction } = ReactionDto.parse(await req.json()) + + const db = DbManager.shared.getDb() + try { + const data = await db.query.reactions.findFirst() + console.info(data) + await db.insert(reactions).values({ + refKey, + reaction, + }) + } catch (error) { + console.error('Failed to add reaction:', error) + return new Response('Failed to add reaction', { status: 500 }) + } +}) diff --git a/apps/ssr/src/app/api/views/dto.ts b/apps/ssr/src/app/api/views/dto.ts new file mode 100644 index 00000000..8a3a7a23 --- /dev/null +++ b/apps/ssr/src/app/api/views/dto.ts @@ -0,0 +1,7 @@ +import { z } from 'zod' + +export const ViewDto = z.object({ + refKey: z.string(), +}) + +export type ViewDto = z.infer diff --git a/apps/ssr/src/app/api/views/route.ts b/apps/ssr/src/app/api/views/route.ts new file mode 100644 index 00000000..ae090996 --- /dev/null +++ b/apps/ssr/src/app/api/views/route.ts @@ -0,0 +1,21 @@ +import { eq, sql } from 'drizzle-orm' +import type { NextRequest } from 'next/server' + +import { guardDbEnabled } from '~/lib/api-guard' +import { views } from '~/schemas' + +import { DbManager } from '../../../lib/db' +import { ViewDto } from './dto' + +export const runtime = 'edge' +export const POST = guardDbEnabled(async (req: NextRequest) => { + const { refKey } = ViewDto.parse(await req.json()) + + const db = DbManager.shared.getDb() + await db + .update(views) + .set({ + views: sql`${views.views} + 1`, + }) + .where(eq(views.refKey, refKey)) +}) diff --git a/apps/ssr/src/env.ts b/apps/ssr/src/env.ts new file mode 100644 index 00000000..a75f288a --- /dev/null +++ b/apps/ssr/src/env.ts @@ -0,0 +1,11 @@ +import { createEnv } from '@t3-oss/env-nextjs' +import { z } from 'zod' + +export const env = createEnv({ + server: { + PG_CONNECTION_STRING: z.string().min(1).optional(), + }, + runtimeEnv: { + PG_CONNECTION_STRING: process.env.PG_CONNECTION_STRING, + }, +}) diff --git a/apps/ssr/src/lib/api-guard.ts b/apps/ssr/src/lib/api-guard.ts new file mode 100644 index 00000000..f5f18287 --- /dev/null +++ b/apps/ssr/src/lib/api-guard.ts @@ -0,0 +1,16 @@ +import { DbManager } from './db' + +export const guardDbEnabled = any>(fn: T) => { + return async (...rest: any[]) => { + if (!DbManager.shared.isEnabled()) { + return new Response( + 'Database is not enabled, the site owner has not configured the database.', + { status: 500 }, + ) + } + + await DbManager.shared.connect() + + return fn(...rest) + } +} diff --git a/apps/ssr/src/lib/db.ts b/apps/ssr/src/lib/db.ts new file mode 100644 index 00000000..acb84528 --- /dev/null +++ b/apps/ssr/src/lib/db.ts @@ -0,0 +1,59 @@ +import { env } from '@env' +import { drizzle } from 'drizzle-orm/postgres-js' +import postgres from 'postgres' + +import * as schema from '../schemas' + +const createDrizzle = (client: postgres.Sql) => + drizzle({ client, schema, logger: true }) + +export class DbManager { + private client: postgres.Sql + private drizzle: ReturnType + private ready = false + + static shared = new DbManager() + + private constructor() {} + + isEnabled() { + return env.PG_CONNECTION_STRING !== undefined + } + + isReady() { + return this.ready + } + + async connect() { + if (!this.isEnabled()) { + return + } + + this.client = postgres(env.PG_CONNECTION_STRING, { + prepare: false, + }) + this.ready = true + + this.drizzle = createDrizzle(this.client) + } + + getDb() { + if (!this.isEnabled()) { + throw new Error('Database is not enabled') + } + + if (!this.isReady()) { + throw new Error('Database is not ready') + } + + return this.drizzle + } + + getPool() { + if (!this.isEnabled()) { + throw new Error('Database is not enabled') + } + + return this.client + } +} diff --git a/apps/ssr/src/lib/injectable.ts b/apps/ssr/src/lib/injectable.ts new file mode 100644 index 00000000..e2010e87 --- /dev/null +++ b/apps/ssr/src/lib/injectable.ts @@ -0,0 +1,20 @@ +import type { DOMParser } from 'linkedom' + +import { DbManager } from './db' + +type HtmlElement = ReturnType +type OnlyHTMLDocument = HtmlElement extends infer T + ? T extends { [key: string]: any; head: any } + ? T + : never + : never +export const injectConfigToDocument = (document: OnlyHTMLDocument) => { + const $config = document.head.querySelector('#config') + const injectConfigBase = { + useApi: DbManager.shared.isEnabled(), + } + if ($config) { + $config.innerHTML = `window.__CONFIG__ = ${JSON.stringify(injectConfigBase)}` + } + return document +} diff --git a/apps/ssr/src/schemas/index.ts b/apps/ssr/src/schemas/index.ts new file mode 100644 index 00000000..6af8999c --- /dev/null +++ b/apps/ssr/src/schemas/index.ts @@ -0,0 +1,2 @@ +export * from './reaction' +export * from './view' diff --git a/apps/ssr/src/schemas/reaction.ts b/apps/ssr/src/schemas/reaction.ts new file mode 100644 index 00000000..9b58f297 --- /dev/null +++ b/apps/ssr/src/schemas/reaction.ts @@ -0,0 +1,15 @@ +import { sql } from 'drizzle-orm' +import { index, pgTable, text, timestamp, varchar } from 'drizzle-orm/pg-core' + +export const reactions = pgTable( + 'reactions', + { + id: text('id') + .primaryKey() + .default(sql`gen_random_uuid()`), + createdAt: timestamp('created_at').defaultNow(), + refKey: varchar('ref_key', { length: 120 }).notNull(), + reaction: varchar('reaction', { length: 20 }).notNull(), + }, + (t) => [index('reaction_ref_key_idx').on(t.refKey)], +) diff --git a/apps/ssr/src/schemas/view.ts b/apps/ssr/src/schemas/view.ts new file mode 100644 index 00000000..2368c9a3 --- /dev/null +++ b/apps/ssr/src/schemas/view.ts @@ -0,0 +1,20 @@ +import { sql } from 'drizzle-orm' +import { + index, + integer, + pgTable, + text, + varchar, +} from 'drizzle-orm/pg-core' + +export const views = pgTable( + 'views', + { + id: text('id') + .primaryKey() + .default(sql`gen_random_uuid()`), + views: integer('views').notNull().default(0), + refKey: varchar('ref_key', { length: 120 }).notNull().unique(), + }, + (t) => [index('view_ref_key_idx').on(t.refKey)], +) diff --git a/apps/ssr/tsconfig.json b/apps/ssr/tsconfig.json index b8af9560..77125afa 100644 --- a/apps/ssr/tsconfig.json +++ b/apps/ssr/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "ES2017", + "target": "ES2022", "lib": [ "dom", "dom.iterable", @@ -28,6 +28,9 @@ ], "~/*": [ "./src/*" + ], + "@env": [ + "./src/env.ts" ] } }, diff --git a/apps/ssr/wrangler.jsonc b/apps/ssr/wrangler.jsonc deleted file mode 100644 index 75f22bcc..00000000 --- a/apps/ssr/wrangler.jsonc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "afilmory-ssr", - "compatibility_date": "2024-09-23", - "compatibility_flags": [ - "nodejs_compat_v2" - ], - "pages_build_output_dir": ".vercel/output/static" -} \ No newline at end of file diff --git a/apps/web/index.html b/apps/web/index.html index 3aca3fa0..cad4c886 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -19,6 +19,9 @@ font-family: 'Geist', ui-sans-serif, system-ui, sans-serif; } + diff --git a/apps/web/package.json b/apps/web/package.json index 48aa2cca..ab6cc818 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "@afilmory/data": "workspace:*", + "@afilmory/ssr-sdk": "workspace:*", "@afilmory/webgl-viewer": "workspace:*", "@essentials/request-timeout": "1.3.0", "@headlessui/react": "2.2.4", @@ -31,7 +32,7 @@ "@radix-ui/react-tooltip": "1.2.7", "@react-hook/window-size": "3.1.1", "@remixicon/react": "4.6.0", - "@t3-oss/env-core": "0.13.8", + "@t3-oss/env-core": "catalog:", "@tanstack/react-query": "5.81.2", "@use-gesture/react": "10.3.1", "@uswriting/exiftool": "1.0.3", @@ -69,7 +70,7 @@ "tiff": "^7.0.0", "usehooks-ts": "3.1.1", "vaul": "1.1.2", - "zod": "3.25.67", + "zod": "catalog:", "zustand": "5.0.5" }, "devDependencies": { @@ -100,4 +101,4 @@ "tailwindcss-uikit-colors": "1.0.0-alpha.1", "vite-plugin-html": "3.2.2" } -} +} \ No newline at end of file diff --git a/apps/web/src/components/ui/photo-viewer/ExifPanel.tsx b/apps/web/src/components/ui/photo-viewer/ExifPanel.tsx index e9155111..b7d198c3 100644 --- a/apps/web/src/components/ui/photo-viewer/ExifPanel.tsx +++ b/apps/web/src/components/ui/photo-viewer/ExifPanel.tsx @@ -45,9 +45,9 @@ export const ExifPanel: FC<{ +
diff --git a/apps/web/src/components/ui/photo-viewer/PhotoViewer.tsx b/apps/web/src/components/ui/photo-viewer/PhotoViewer.tsx index 1e6f7932..ce0440ba 100644 --- a/apps/web/src/components/ui/photo-viewer/PhotoViewer.tsx +++ b/apps/web/src/components/ui/photo-viewer/PhotoViewer.tsx @@ -5,6 +5,7 @@ import 'swiper/css/navigation' import { AnimatePresence, m } from 'motion/react' import { + Fragment, Suspense, useCallback, useEffect, @@ -19,13 +20,16 @@ import { Keyboard, Navigation, Virtual } from 'swiper/modules' import { Swiper, SwiperSlide } from 'swiper/react' import { PassiveFragment } from '~/components/common/PassiveFragmenet' +import { injectConfig } from '~/config' import { useMobile } from '~/hooks/useMobile' +import { client } from '~/lib/client' import { Spring } from '~/lib/spring' import type { PhotoManifest } from '~/types/photo' import { ExifPanel } from './ExifPanel' import { GalleryThumbnail } from './GalleryThumbnail' import { ProgressiveImage } from './ProgressiveImage' +import { ReactionButton } from './Reaction' import { SharePanel } from './SharePanel' interface PhotoViewerProps { @@ -237,6 +241,17 @@ export const PhotoViewer = ({
+ {!isMobile && injectConfig.useApi && ( + { + client.actReaction({ + refKey: currentPhoto.id, + reaction, + }) + }} + /> + )} {/* Swiper 容器 */} {/* 自定义导航按钮 */} - {currentIndex > 0 && ( - - )} - {currentIndex < photos.length - 1 && ( - + {!isMobile && ( + + {currentIndex > 0 && ( + + )} + + {currentIndex < photos.length - 1 && ( + + )} + )}
diff --git a/apps/web/src/components/ui/photo-viewer/ProgressiveImage.tsx b/apps/web/src/components/ui/photo-viewer/ProgressiveImage.tsx index 58d57e26..c3fac385 100644 --- a/apps/web/src/components/ui/photo-viewer/ProgressiveImage.tsx +++ b/apps/web/src/components/ui/photo-viewer/ProgressiveImage.tsx @@ -24,6 +24,7 @@ import { LivePhoto } from './LivePhoto' import type { LoadingIndicatorRef } from './LoadingIndicator' import { LoadingIndicator } from './LoadingIndicator' +const SHOW_SCALE_INDICATOR_DURATION = 1000 interface ProgressiveImageProps { src: string thumbnailSrc?: string @@ -159,7 +160,7 @@ export const ProgressiveImage = ({ // 设置新的定时器,500ms 后隐藏提示 scaleIndicatorTimeoutRef.current = setTimeout(() => { setShowScaleIndicator(false) - }, 500) + }, SHOW_SCALE_INDICATOR_DURATION) onZoomChange?.(isZoomed) }, @@ -379,7 +380,7 @@ export const ProgressiveImage = ({ initial={{ opacity: 0, y: 10 }} animate={{ opacity: 1, y: 0 }} exit={{ opacity: 0, y: 10 }} - className="pointer-events-none absolute bottom-4 left-4 z-20 flex items-center gap-0.5 rounded bg-black/50 px-3 py-1 text-lg text-white" + className="pointer-events-none absolute bottom-4 left-4 z-20 flex items-center gap-0.5 rounded bg-black/50 px-3 py-1 text-lg text-white tabular-nums" > x diff --git a/apps/web/src/components/ui/photo-viewer/Reaction.tsx b/apps/web/src/components/ui/photo-viewer/Reaction.tsx new file mode 100644 index 00000000..e842befa --- /dev/null +++ b/apps/web/src/components/ui/photo-viewer/Reaction.tsx @@ -0,0 +1,166 @@ +import { AnimatePresence, m } from 'motion/react' +import { useCallback, useState } from 'react' +import { tv } from 'tailwind-variants' + +import { clsxm } from '~/lib/cn' +import { Spring } from '~/lib/spring' + +const reactions = ['👍', '😍', '🔥', '👏', '🌟', '🙌'] as const + +interface ReactionButtonProps { + onReaction?: (reaction: (typeof reactions)[number]) => void + className?: string + disabled?: boolean +} + +const reactionButton = tv({ + slots: { + base: 'relative z-[99]', + mainButton: [ + 'relative z-10 flex size-10 items-center justify-center rounded-full', + 'border border-white/20 !bg-black/70 text-white/80 shadow-2xl backdrop-blur-[70px]', + 'bg-gradient-to-br from-white/20 to-white/0', + 'transition-colors duration-300', + 'hover:border-white/30', + 'active:scale-95', + 'disabled:cursor-not-allowed disabled:opacity-50', + ], + mainButtonIcon: 'text-lg', + reactionsContainer: [ + 'absolute bottom-full mb-4 flex items-center justify-center gap-2', + 'left-1/2 -translate-x-1/2', + 'rounded-full border-white/20 !bg-black/70 p-2 shadow-2xl backdrop-blur-[70px]', + 'bg-gradient-to-br from-white/20 to-white/0', + ], + reactionItem: [ + 'flex size-10 items-center justify-center', + 'cursor-pointer text-xl', + ], + }, +}) + +const emojiContainerVariants = { + open: { + opacity: 1, + scale: 1, + y: 0, + transition: Spring.presets.snappy, + }, + closed: { + opacity: 0, + scale: 0.2, + y: 50, + transition: Spring.presets.snappy, + }, +} + +const emojiVariants = { + open: { + opacity: 1, + y: 0, + scale: 1, + transition: Spring.presets.snappy, + }, + closed: { + opacity: 0, + y: 10, + scale: 0.8, + transition: Spring.presets.snappy, + }, +} + +const iconVariants = { + open: { rotate: 180 }, + closed: { rotate: 0 }, +} + +export const ReactionButton = ({ + onReaction, + className, + disabled = false, +}: ReactionButtonProps) => { + const [isOpen, setIsOpen] = useState(false) + const styles = reactionButton() + + const handleReactionClick = useCallback( + (reaction: (typeof reactions)[number]) => { + onReaction?.(reaction) + setIsOpen(false) + }, + [onReaction], + ) + + return ( +
+ + + {isOpen && ( + setIsOpen(false)} + /> + )} + + + + {isOpen && ( + + {reactions.map((reaction, index) => ( + handleReactionClick(reaction)} + whileHover={{ scale: 1.2 }} + whileTap={{ scale: 0.9 }} + > + {reaction} + + ))} + + )} + + + setIsOpen(!isOpen)} + disabled={disabled} + whileHover={{ scale: 1.05 }} + whileTap={{ scale: 0.95 }} + aria-expanded={isOpen} + aria-label="React to photo" + > + + + + + + + +
+ ) +} diff --git a/apps/web/src/config/index.ts b/apps/web/src/config/index.ts new file mode 100644 index 00000000..cd8778c6 --- /dev/null +++ b/apps/web/src/config/index.ts @@ -0,0 +1,7 @@ +import { merge } from 'es-toolkit/compat' + +const defaultInjectConfig = { + useApi: false, +} + +export const injectConfig = merge(defaultInjectConfig, __CONFIG__) diff --git a/apps/web/src/config/types.ts b/apps/web/src/config/types.ts new file mode 100644 index 00000000..b8e34eba --- /dev/null +++ b/apps/web/src/config/types.ts @@ -0,0 +1,3 @@ +export interface InjectConfig { + useApi: boolean +} diff --git a/apps/web/src/global.d.ts b/apps/web/src/global.d.ts index e5fb7827..03137544 100644 --- a/apps/web/src/global.d.ts +++ b/apps/web/src/global.d.ts @@ -1,6 +1,8 @@ import type { AfilmoryManifest } from '@packages/builder/src/types/manifest' import type { FC, PropsWithChildren } from 'react' +import type { InjectConfig } from './config/types' + declare global { export type Nullable = T | null | undefined @@ -29,6 +31,8 @@ declare global { const GIT_COMMIT_HASH: string const __MANIFEST__: AfilmoryManifest + + const __CONFIG__: InjectConfig } export {} diff --git a/apps/web/src/lib/client.ts b/apps/web/src/lib/client.ts new file mode 100644 index 00000000..9cbc6333 --- /dev/null +++ b/apps/web/src/lib/client.ts @@ -0,0 +1,3 @@ +import { Client } from '@afilmory/ssr-sdk' + +export const client = new Client(window.location.origin) diff --git a/env.ts b/env.ts index 5b5b3914..a8a3a80f 100644 --- a/env.ts +++ b/env.ts @@ -16,6 +16,8 @@ export const env = createEnv({ S3_PREFIX: z.string().default('').optional(), S3_CUSTOM_DOMAIN: z.string().default('').optional(), S3_EXCLUDE_REGEX: z.string().optional(), + + PG_CONNECTION_STRING: z.string().min(1).optional(), }, runtimeEnv: process.env, isServer: typeof window === 'undefined', diff --git a/package.json b/package.json index b8d2bcbd..306c1d67 100644 --- a/package.json +++ b/package.json @@ -21,15 +21,15 @@ }, "dependencies": { "@afilmory/builder": "workspace:*", - "@t3-oss/env-core": "0.13.8", + "@t3-oss/env-core": "catalog:", "dotenv": "16.5.0", "es-toolkit": "1.39.5", - "zod": "3.25.67" + "zod": "catalog:" }, "devDependencies": { "@innei/prettier": "0.15.0", "consola": "3.4.2", - "dotenv-expand": "12.0.2", + "dotenv-expand": "catalog:", "eslint": "9.29.0", "eslint-config-hyoban": "4.0.8", "fast-glob": "3.3.3", @@ -40,7 +40,7 @@ "simple-git-hooks": "2.13.0", "tailwindcss": "4.1.11", "tsx": "4.20.3", - "typescript": "5.8.3", + "typescript": "catalog:", "vite": "7.0.0", "vite-bundle-analyzer": "0.23.0", "vite-plugin-babel": "1.3.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index c6ffc187..340ee206 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -15,11 +15,11 @@ "@aws-sdk/s3-request-presigner": "3.837.0", "@vingle/bmp-js": "^0.2.5", "blurhash": "2.0.5", - "dotenv-expand": "12.0.2", + "dotenv-expand": "catalog:", "execa": "9.6.0", "exiftool-vendored": "30.2.0", "heic-convert": "2.1.0", "heic-to": "1.1.14", "sharp": "0.34.2" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afc457e2..e824b90d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,21 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + '@t3-oss/env-core': + specifier: 0.13.8 + version: 0.13.8 + dotenv-expand: + specifier: 12.0.2 + version: 12.0.2 + typescript: + specifier: 5.8.3 + version: 5.8.3 + zod: + specifier: 3.25.67 + version: 3.25.67 + importers: .: @@ -12,7 +27,7 @@ importers: specifier: workspace:* version: link:packages/builder '@t3-oss/env-core': - specifier: 0.13.8 + specifier: 'catalog:' version: 0.13.8(typescript@5.8.3)(zod@3.25.67) dotenv: specifier: 16.5.0 @@ -21,7 +36,7 @@ importers: specifier: 1.39.5 version: 1.39.5 zod: - specifier: 3.25.67 + specifier: 'catalog:' version: 3.25.67 devDependencies: '@innei/prettier': @@ -31,7 +46,7 @@ importers: specifier: 3.4.2 version: 3.4.2 dotenv-expand: - specifier: 12.0.2 + specifier: 'catalog:' version: 12.0.2 eslint: specifier: 9.29.0 @@ -64,7 +79,7 @@ importers: specifier: 4.20.3 version: 4.20.3 typescript: - specifier: 5.8.3 + specifier: 'catalog:' version: 5.8.3 vite: specifier: 7.0.0 @@ -87,22 +102,37 @@ importers: '@afilmory/data': specifier: workspace:* version: link:../../packages/data + '@t3-oss/env-nextjs': + specifier: 0.13.8 + version: 0.13.8(typescript@5.8.3)(zod@3.25.67) + drizzle-orm: + specifier: 0.44.2 + version: 0.44.2(@types/pg@8.15.4)(@vercel/postgres@0.10.0)(pg@8.16.2)(postgres@3.4.7) linkedom: specifier: 0.18.11 version: 0.18.11 + pg: + specifier: 8.16.2 + version: 8.16.2 + postgres: + specifier: 3.4.7 + version: 3.4.7 react: specifier: 19.1.0 version: 19.1.0 react-dom: specifier: 19.1.0 version: 19.1.0(react@19.1.0) + zod: + specifier: 'catalog:' + version: 3.25.67 devDependencies: - '@cloudflare/next-on-pages': - specifier: 1.13.12 - version: 1.13.12(vercel@42.3.0(rollup@4.41.1))(wrangler@4.19.1) '@types/node': specifier: 24.0.4 version: 24.0.4 + '@types/pg': + specifier: 8.15.4 + version: 8.15.4 '@types/react': specifier: 19.1.8 version: 19.1.8 @@ -115,15 +145,34 @@ importers: cross-env: specifier: 7.0.3 version: 7.0.3 + dotenv-expand: + specifier: 'catalog:' + version: 12.0.2 + drizzle-kit: + specifier: 0.31.2 + version: 0.31.2 next: specifier: 15.3.4 version: 15.3.4(@babel/core@7.27.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + apps/ssr/sdk: + dependencies: + zod: + specifier: 'catalog:' + version: 3.25.67 + devDependencies: + typescript: + specifier: 'catalog:' + version: 5.8.3 + apps/web: dependencies: '@afilmory/data': specifier: workspace:* version: link:../../packages/data + '@afilmory/ssr-sdk': + specifier: workspace:* + version: link:../ssr/sdk '@afilmory/webgl-viewer': specifier: workspace:* version: link:../../packages/webgl-viewer @@ -164,7 +213,7 @@ importers: specifier: 4.6.0 version: 4.6.0(react@19.1.0) '@t3-oss/env-core': - specifier: 0.13.8 + specifier: 'catalog:' version: 0.13.8(typescript@5.8.3)(zod@3.25.67) '@tanstack/react-query': specifier: 5.81.2 @@ -278,7 +327,7 @@ importers: specifier: 1.1.2 version: 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) zod: - specifier: 3.25.67 + specifier: 'catalog:' version: 3.25.67 zustand: specifier: 5.0.5 @@ -378,7 +427,7 @@ importers: specifier: 2.0.5 version: 2.0.5 dotenv-expand: - specifier: 12.0.2 + specifier: 'catalog:' version: 12.0.2 execa: specifier: 9.6.0 @@ -763,90 +812,6 @@ packages: '@clack/prompts@0.8.2': resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==} - '@cloudflare/kv-asset-handler@0.4.0': - resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} - engines: {node: '>=18.0.0'} - - '@cloudflare/next-on-pages@1.13.12': - resolution: {integrity: sha512-rPy7x9c2+0RDDdJ5o0TeRUwXJ1b7N1epnqF6qKSp5Wz1r9KHOyvaZh1ACoOC6Vu5k9su5WZOgy+8fPLIyrldMQ==} - hasBin: true - peerDependencies: - '@cloudflare/workers-types': ^4.20240208.0 - vercel: '>=30.0.0' - wrangler: ^3.28.2 || ^4.0.0 - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - - '@cloudflare/unenv-preset@2.3.2': - resolution: {integrity: sha512-MtUgNl+QkQyhQvv5bbWP+BpBC1N0me4CHHuP2H4ktmOMKdB/6kkz/lo+zqiA4mEazb4y+1cwyNjVrQ2DWeE4mg==} - peerDependencies: - unenv: 2.0.0-rc.17 - workerd: ^1.20250508.0 - peerDependenciesMeta: - workerd: - optional: true - - '@cloudflare/workerd-darwin-64@1.20250408.0': - resolution: {integrity: sha512-bxhIwBWxaNItZLXDNOKY2dCv0FHjDiDkfJFpwv4HvtvU5MKcrivZHVmmfDzLW85rqzfcDOmKbZeMPVfiKxdBZw==} - engines: {node: '>=16'} - cpu: [x64] - os: [darwin] - - '@cloudflare/workerd-darwin-64@1.20250525.0': - resolution: {integrity: sha512-L5l+7sSJJT2+riR5rS3Q3PKNNySPjWfRIeaNGMVRi1dPO6QPi4lwuxfRUFNoeUdilZJUVPfSZvTtj9RedsKznQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [darwin] - - '@cloudflare/workerd-darwin-arm64@1.20250408.0': - resolution: {integrity: sha512-5XZ2Oykr8bSo7zBmERtHh18h5BZYC/6H1YFWVxEj3PtalF3+6SHsO4KZsbGvDml9Pu7sHV277jiZE5eny8Hlyw==} - engines: {node: '>=16'} - cpu: [arm64] - os: [darwin] - - '@cloudflare/workerd-darwin-arm64@1.20250525.0': - resolution: {integrity: sha512-Y3IbIdrF/vJWh/WBvshwcSyUh175VAiLRW7963S1dXChrZ1N5wuKGQm9xY69cIGVtitpMJWWW3jLq7J/Xxwm0Q==} - engines: {node: '>=16'} - cpu: [arm64] - os: [darwin] - - '@cloudflare/workerd-linux-64@1.20250408.0': - resolution: {integrity: sha512-WbgItXWln6G5d7GvYLWcuOzAVwafysZaWunH3UEfsm95wPuRofpYnlDD861gdWJX10IHSVgMStGESUcs7FLerQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [linux] - - '@cloudflare/workerd-linux-64@1.20250525.0': - resolution: {integrity: sha512-KSyQPAby+c6cpENoO0ayCQlY6QIh28l/+QID7VC1SLXfiNHy+hPNsH1vVBTST6CilHVAQSsy9tCZ9O9XECB8yg==} - engines: {node: '>=16'} - cpu: [x64] - os: [linux] - - '@cloudflare/workerd-linux-arm64@1.20250408.0': - resolution: {integrity: sha512-pAhEywPPvr92SLylnQfZEPgXz+9pOG9G9haAPLpEatncZwYiYd9yiR6HYWhKp2erzCoNrOqKg9IlQwU3z1IDiw==} - engines: {node: '>=16'} - cpu: [arm64] - os: [linux] - - '@cloudflare/workerd-linux-arm64@1.20250525.0': - resolution: {integrity: sha512-Nt0FUxS2kQhJUea4hMCNPaetkrAFDhPnNX/ntwcqVlGgnGt75iaAhupWJbU0GB+gIWlKeuClUUnDZqKbicoKyg==} - engines: {node: '>=16'} - cpu: [arm64] - os: [linux] - - '@cloudflare/workerd-windows-64@1.20250408.0': - resolution: {integrity: sha512-nJ3RjMKGae2aF2rZ/CNeBvQPM+W5V1SUK0FYWG/uomyr7uQ2l4IayHna1ODg/OHHTEgIjwom0Mbn58iXb0WOcQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [win32] - - '@cloudflare/workerd-windows-64@1.20250525.0': - resolution: {integrity: sha512-mwTj+9f3uIa4NEXR1cOa82PjLa6dbrb3J+KCVJFYIaq7e63VxEzOchCXS4tublT2pmOhmFqkgBMXrxozxNkR2Q==} - engines: {node: '>=16'} - cpu: [x64] - os: [win32] - '@conventional-changelog/git-client@1.0.1': resolution: {integrity: sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==} engines: {node: '>=18'} @@ -859,29 +824,8 @@ packages: conventional-commits-parser: optional: true - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@edge-runtime/format@2.2.1': - resolution: {integrity: sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==} - engines: {node: '>=16'} - - '@edge-runtime/node-utils@2.3.0': - resolution: {integrity: sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==} - engines: {node: '>=16'} - - '@edge-runtime/ponyfill@2.4.2': - resolution: {integrity: sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==} - engines: {node: '>=16'} - - '@edge-runtime/primitives@4.1.0': - resolution: {integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==} - engines: {node: '>=16'} - - '@edge-runtime/vm@3.2.0': - resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==} - engines: {node: '>=16'} + '@drizzle-team/brocli@0.10.2': + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} '@egoist/tailwindcss-icons@1.9.0': resolution: {integrity: sha512-xWA9cUy6hzlK7Y6TaoRIcwmilSXiTJ8rbXcEdf9uht7yzDgw/yIgF4rThIQMrpD2Y2v4od51+r2y6Z7GStanDQ==} @@ -901,20 +845,34 @@ packages: resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==} engines: {node: '>=18'} + '@esbuild-kit/core-utils@3.3.2': + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/esm-loader@2.6.5': + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' + '@esbuild/aix-ppc64@0.25.4': resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.25.4': resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.15.18': - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -925,56 +883,104 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.25.4': resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.25.4': resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.25.4': resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.25.4': resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.4': resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.25.4': resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.25.4': resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.25.4': resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.15.18': - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -985,30 +991,60 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.25.4': resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.25.4': resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.25.4': resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.25.4': resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.25.4': resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} engines: {node: '>=18'} @@ -1021,6 +1057,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.4': resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} engines: {node: '>=18'} @@ -1033,30 +1075,60 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.4': resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.25.4': resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.25.4': resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.25.4': resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.25.4': resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} engines: {node: '>=18'} @@ -1168,10 +1240,6 @@ packages: '@essentials/request-timeout@1.3.0': resolution: {integrity: sha512-lKZPhKScNFnR1MBnk4+sxshk46fpvdN+Uh1LlKWFO5g1ocuz4EcknNIL7tm/rsCAs/+xMWiBTwbDUvm+pDNlXw==} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@floating-ui/core@1.7.1': resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==} @@ -1248,65 +1316,33 @@ packages: '@iconify/utils@2.3.0': resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} - '@img/sharp-darwin-arm64@0.33.5': - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - '@img/sharp-darwin-arm64@0.34.2': resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.5': - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - '@img/sharp-darwin-x64@0.34.2': resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.4': - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} - cpu: [arm64] - os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.1.0': resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.4': - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} - cpu: [x64] - os: [darwin] - '@img/sharp-libvips-darwin-x64@1.1.0': resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.4': - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} - cpu: [arm64] - os: [linux] - '@img/sharp-libvips-linux-arm64@1.1.0': resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.0.5': - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} - cpu: [arm] - os: [linux] - '@img/sharp-libvips-linux-arm@1.1.0': resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} cpu: [arm] @@ -1317,123 +1353,62 @@ packages: cpu: [ppc64] os: [linux] - '@img/sharp-libvips-linux-s390x@1.0.4': - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} - cpu: [s390x] - os: [linux] - '@img/sharp-libvips-linux-s390x@1.1.0': resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.0.4': - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} - cpu: [x64] - os: [linux] - '@img/sharp-libvips-linux-x64@1.1.0': resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} - cpu: [arm64] - os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} - cpu: [x64] - os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.1.0': resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.33.5': - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - '@img/sharp-linux-arm64@0.34.2': resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.33.5': - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - '@img/sharp-linux-arm@0.34.2': resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.33.5': - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - '@img/sharp-linux-s390x@0.34.2': resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.33.5': - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - '@img/sharp-linux-x64@0.34.2': resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.5': - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.2': resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.33.5': - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - '@img/sharp-linuxmusl-x64@0.34.2': resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.33.5': - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - '@img/sharp-wasm32@0.34.2': resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1445,24 +1420,12 @@ packages: cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.33.5': - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - '@img/sharp-win32-ia32@0.34.2': resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.5': - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@img/sharp-win32-x64@0.34.2': resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1472,10 +1435,6 @@ packages: '@innei/prettier@0.15.0': resolution: {integrity: sha512-5U/NrXsISLSXt3ibqHX3cRfSKcJFmteeEcWXE31oxuT4+n2+aiUjIpc6NL7aeZi09paP8L5uc7Zlj2WCP9S4ig==} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -1501,14 +1460,6 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@mapbox/node-pre-gyp@2.0.0': - resolution: {integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==} - engines: {node: '>=18'} - hasBin: true - '@microsoft/api-extractor-model@7.30.6': resolution: {integrity: sha512-znmFn69wf/AIrwHya3fxX6uB5etSIn6vg4Q4RB/tb5VDDs1rqREc+AvMC/p19MUN13CZ7+V/8pkYPTj7q8tftg==} @@ -1525,6 +1476,9 @@ packages: '@napi-rs/wasm-runtime@0.2.10': resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} + '@neondatabase/serverless@0.9.5': + resolution: {integrity: sha512-siFas6gItqv6wD/pZnvdu34wEqgG3nSE6zWZdq5j2DEsa+VvX8i/5HXJOo06qrw5axPXn+lGCxeR+NLaSPIXug==} + '@next/env@15.3.4': resolution: {integrity: sha512-ZkdYzBseS6UjYzz6ylVKPOK+//zLWvD6Ta+vpoye8cW11AjiQjGYVibF0xuvT4L0iJfAPfZLFidaEzAOywyOAQ==} @@ -1604,10 +1558,6 @@ packages: react: '>=18' react-dom: '>=18' - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pkgr/core@0.1.2': resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2278,9 +2228,6 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@sinclair/typebox@0.25.24': - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - '@sindresorhus/merge-streams@4.0.0': resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} @@ -2533,6 +2480,23 @@ packages: zod: optional: true + '@t3-oss/env-nextjs@0.13.8': + resolution: {integrity: sha512-QmTLnsdQJ8BiQad2W2nvV6oUpH4oMZMqnFEjhVpzU0h3sI9hn8zb8crjWJ1Amq453mGZs6A4v4ihIeBFDOrLeQ==} + peerDependencies: + arktype: ^2.1.0 + typescript: '>=5.0.0' + valibot: ^1.0.0-beta.7 || ^1.0.0 + zod: ^3.24.0 || ^4.0.0-beta.0 + peerDependenciesMeta: + arktype: + optional: true + typescript: + optional: true + valibot: + optional: true + zod: + optional: true + '@tailwindcss/container-queries@0.1.1': resolution: {integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==} peerDependencies: @@ -2660,25 +2624,6 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - '@ts-morph/common@0.11.1': - resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} @@ -2706,9 +2651,6 @@ packages: '@types/luxon@3.6.2': resolution: {integrity: sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==} - '@types/node@16.18.11': - resolution: {integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==} - '@types/node@20.17.57': resolution: {integrity: sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ==} @@ -2727,6 +2669,12 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/pg@8.11.6': + resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} + + '@types/pg@8.15.4': + resolution: {integrity: sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==} + '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -2974,56 +2922,9 @@ packages: vue-router: optional: true - '@vercel/build-utils@10.6.0': - resolution: {integrity: sha512-ek8gagVbecvIX+RJyOnT9LSKVdKCT9JQZMI4LaEJeM1nPL2M10iByHw5+/MqXgTVlociwOWGJmXKJDC2pKe18Q==} - - '@vercel/error-utils@2.0.3': - resolution: {integrity: sha512-CqC01WZxbLUxoiVdh9B/poPbNpY9U+tO1N9oWHwTl5YAZxcqXmmWJ8KNMFItJCUUWdY3J3xv8LvAuQv2KZ5YdQ==} - - '@vercel/fun@1.1.6': - resolution: {integrity: sha512-xDiM+bD0fSZyzcjsAua3D+guXclvHOSTzr03UcZEQwYzIjwWjLduT7bl2gAaeNIe7fASAIZd0P00clcj0On4rQ==} - engines: {node: '>= 18'} - - '@vercel/gatsby-plugin-vercel-analytics@1.0.11': - resolution: {integrity: sha512-iTEA0vY6RBPuEzkwUTVzSHDATo1aF6bdLLspI68mQ/BTbi5UQEGjpjyzdKOVcSYApDtFU6M6vypZ1t4vIEnHvw==} - - '@vercel/gatsby-plugin-vercel-builder@2.0.83': - resolution: {integrity: sha512-SSuCIHZmTTMc6HEnipkAkW2+cbEmCHGnOyF3uvOfEzjiQX9zB50ziq0DV3yPltSxp37MFkYKDUeWJe2ESXPJaA==} - - '@vercel/go@3.2.1': - resolution: {integrity: sha512-ezjmuUvLigH9V4egEaX0SZ+phILx8lb+Zkp1iTqKI+yl/ibPAtVo5o+dLSRAXU9U01LBmaLu3O8Oxd/JpWYCOw==} - - '@vercel/hydrogen@1.2.2': - resolution: {integrity: sha512-PRA3r1/ZRcklGgs/hczprQZ27jX9Avyq/iEbtmzAFNbFovkTlkE0Wy93pVKJfJ4ISCBzBgUSMktX9+6wgjs32A==} - - '@vercel/next@4.8.0': - resolution: {integrity: sha512-B5n2xqddDr/qdfNkFlOqNjiLxpGwo62jAOrG5X7CtyF93epDZi3h8x4wQJqycIffmu317tWBUU37HxvTFt8ZUA==} - - '@vercel/nft@0.29.2': - resolution: {integrity: sha512-A/Si4mrTkQqJ6EXJKv5EYCDQ3NL6nJXxG8VGXePsaiQigsomHYQC9xSpX8qGk7AEZk4b1ssbYIqJ0ISQQ7bfcA==} - engines: {node: '>=18'} - hasBin: true - - '@vercel/node@5.2.1': - resolution: {integrity: sha512-0+YV01grkqfHIHhmWeCXWmgeP6GsuzXtgWBri3+qESwfAZ6dOTBG4GJp9z2E7sEi+wP60S0/eNGRj8z77uk3JQ==} - - '@vercel/python@4.7.2': - resolution: {integrity: sha512-i2QBNMvNxUZQ2e5vLIL7mUkLg5Qkl9nqxUNXCYezdyvk2Ql6xYKjg7tMhpK/uiy094KfZSOECpDbDxkIN0jUSw==} - - '@vercel/redwood@2.3.3': - resolution: {integrity: sha512-9Dfith+CYNNt/5Mkrklu7xWroWgSJVR4uh7mwu/2IvuCiJMNa24ReR9xtQNyGFAwAjdeweQ/nHfImz+12ORfpQ==} - - '@vercel/remix-builder@5.4.9': - resolution: {integrity: sha512-+fWdMjVI6bO0GUBJbw2seBDnLvPi2dd9aBQHVG2TCbJobBPfXgyEMgRWDS+4gjhXn4jLatX4B5C5iJykkeMqNQ==} - - '@vercel/ruby@2.2.0': - resolution: {integrity: sha512-FJF9gKVNHAljGOgV6zS5ou2N7ZgjOqMMtcPA5lsJEUI5/AZzVDWCmtcowTP80wEtHuupkd7d7M399FA082kXYQ==} - - '@vercel/static-build@2.7.9': - resolution: {integrity: sha512-0AuRrNAE0wntRjZo0CrmQTwvRVO5/7jtcSShgkAKcx2CsPphDjBh2Ah6Kcwb2w9inqJr5Bpg0pxi/Y915hj2oQ==} - - '@vercel/static-config@3.1.1': - resolution: {integrity: sha512-IRtKnm9N1Uqd2ayIbLPjRtdwcl1GTWvqF1PuEVNm9O43kmoI+m9VpGlW8oga+5LQq1LmJ2Y67zHr7NbjrH1rrw==} + '@vercel/postgres@0.10.0': + resolution: {integrity: sha512-fSD23DxGND40IzSkXjcFcxr53t3Tiym59Is0jSYIFpG4/0f0KO9SGtcp1sXiebvPaGe7N/tU05cH4yt2S6/IPg==} + engines: {node: '>=18.14'} '@vingle/bmp-js@0.2.5': resolution: {integrity: sha512-tiY69wMrXgIVcdpkjQybXTyQw+P2rKzUfA6b+biM6BD1utr5QeeEj9fzs0fFHVf+3siTsYwzI6zltV9+i6ehEA==} @@ -3063,33 +2964,11 @@ packages: '@vue/shared@3.5.16': resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==} - abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} - - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.14.1: resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} @@ -3103,10 +2982,6 @@ packages: add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - ajv-draft-04@1.0.0: resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: @@ -3132,9 +3007,6 @@ packages: ajv@8.13.0: resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - ajv@8.6.3: - resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==} - alien-signals@0.4.14: resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} @@ -3162,22 +3034,9 @@ packages: resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} engines: {node: '>=14'} - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - apple-uikit-colors@0.6.2: resolution: {integrity: sha512-sv0b92krbTZGNt4AJQLAPioUvuEI/wW2cLqGuEBWl3KpU2JK/odOftx8+dGSC5jGWhdB5qnwBqF96X2FA8FUQA==} - arg@4.1.0: - resolution: {integrity: sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -3191,31 +3050,10 @@ packages: array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - as-table@1.0.55: - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} - ast-kit@2.1.0: resolution: {integrity: sha512-ROM2LlXbZBZVk97crfw8PGDOBzzsJvN2uJCmwswvPUNyfH14eg90mSN3xNqsri1JS1G9cz0VzeDUhxJkTrr4Ew==} engines: {node: '>=20.18.0'} - ast-types@0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} - - async-listen@1.2.0: - resolution: {integrity: sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==} - - async-listen@3.0.0: - resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==} - engines: {node: '>= 14'} - - async-listen@3.0.1: - resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==} - engines: {node: '>= 14'} - - async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -3268,13 +3106,6 @@ packages: resolution: {integrity: sha512-tymryLKMSho+WAaYiVQCMQ9SNHOrNDKO+J8l89RyICkSwK05XknrILAPUz6ABWa8MZOoTbLpIxFCFfyBTZGrIA==} engines: {node: '>=20'} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bippy@0.3.16: resolution: {integrity: sha512-7dGS7NMbLbUzJtO9K82Hm1vnAl7mLxckcYfeTz+rI9poGOd/41TeMA+lm5EQByH9eZfCbfu7Axz6Ld+jEKbuEA==} peerDependencies: @@ -3286,9 +3117,6 @@ packages: birpc@2.4.0: resolution: {integrity: sha512-5IdNxTyhXHv2UlgnPHQ0h+5ypVmkrYHzL8QT+DwFZ//2N/oNV8Ch+BCRmTJ3x6/z9Axo/cXYBc9eprsUVK/Jsg==} - blake3-wasm@2.1.5: - resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} - blurhash@2.0.5: resolution: {integrity: sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==} @@ -3313,12 +3141,13 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + bufferutil@4.0.9: + resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} + engines: {node: '>=6.14.2'} + builtin-modules@5.0.0: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} @@ -3327,10 +3156,6 @@ packages: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} - bytes@3.1.0: - resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} - engines: {node: '>= 0.8'} - c12@3.0.4: resolution: {integrity: sha512-t5FaZTYbbCtvxuZq9xxIruYydrAGsJ+8UdP0pZzMiK2xl/gNiSOy0OxhLzHUEEb0m1QXYqfzfvyIFEmz/g9lqg==} peerDependencies: @@ -3369,22 +3194,10 @@ packages: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.0: - resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} - engines: {node: '>= 14.16.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -3396,9 +3209,6 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} @@ -3426,9 +3236,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - code-block-writer@10.1.1: - resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==} - code-inspector-core@0.20.12: resolution: {integrity: sha512-OaEZhQ3c2pYpNB4E0ggXfSv5cUhGEbXcdQMsi3agnQBKYe6gr1nkO1g1E1xXgFD62c4FPw/YjVyoTCDhrpd8kw==} @@ -3452,10 +3259,6 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - commander@14.0.0: resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} engines: {node: '>=20'} @@ -3506,10 +3309,6 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} - content-type@1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} - engines: {node: '>= 0.6'} - conventional-changelog-angular@8.0.0: resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} engines: {node: '>=18'} @@ -3572,21 +3371,9 @@ packages: engines: {node: '>=18'} hasBin: true - convert-hrtime@3.0.0: - resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==} - engines: {node: '>=8'} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - cookie@1.0.2: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} @@ -3598,9 +3385,6 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -3634,9 +3418,6 @@ packages: daisyui@5.0.43: resolution: {integrity: sha512-2pshHJ73vetSpsbAyaOncGnNYL0mwvgseS1EWy1I9Qpw8D11OuBoDNIWrPIME4UFcq2xuff3A9x+eXbuFR9fUQ==} - data-uri-to-buffer@2.0.2: - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} - de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -3648,15 +3429,6 @@ packages: 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.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -3672,10 +3444,6 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} @@ -3702,10 +3470,6 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - diff@8.0.2: resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} engines: {node: '>=0.3.1'} @@ -3752,6 +3516,102 @@ packages: resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} + drizzle-kit@0.31.2: + resolution: {integrity: sha512-Z2Uqxvu4HNFzlDkG3NQ2BYpII8SlOMkpjsC5XFh9TsYP2nYhfVamVjQ8spiMFXH3vGOyUt1cQ5FZ1JSgl6+8QQ==} + hasBin: true + + drizzle-orm@0.44.2: + resolution: {integrity: sha512-zGAqBzWWkVSFjZpwPOrmCrgO++1kZ5H/rZ4qTGeGOe18iXGVJWf3WPfHOVwFIbmi8kHjfJstC6rJomzGx8g/dQ==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=4' + '@electric-sql/pglite': '>=0.2.0' + '@libsql/client': '>=0.10.0' + '@libsql/client-wasm': '>=0.10.0' + '@neondatabase/serverless': '>=0.10.0' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1.13' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@upstash/redis': '>=1.34.7' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=14.0.0' + gel: '>=2' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@libsql/client-wasm': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@upstash/redis': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + gel: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + dts-resolver@2.1.1: resolution: {integrity: sha512-3BiGFhB6mj5Kv+W2vdJseQUYW+SKVzAFJL6YNP6ursbrwy1fXHRotfHi3xLNxe4wZl/K8qbAFeCDjZLjzqxxRw==} engines: {node: '>=20.18.0'} @@ -3761,14 +3621,6 @@ packages: oxc-resolver: optional: true - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - edge-runtime@2.5.9: - resolution: {integrity: sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==} - engines: {node: '>=16'} - hasBin: true - ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} @@ -3783,16 +3635,10 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - empathic@2.0.0: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} - end-of-stream@1.1.0: - resolution: {integrity: sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==} - enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -3815,262 +3661,19 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - es-toolkit@1.39.5: resolution: {integrity: sha512-z9V0qU4lx1TBXDNFWfAASWk6RNU6c6+TJBKE+FLIg8u0XJ6Yw58Hi0yX8ftEouj6p1QARRlXLFfHbIli93BdQQ==} - esbuild-android-64@0.14.47: - resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - esbuild-android-64@0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - esbuild-android-arm64@0.14.47: - resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - esbuild-android-arm64@0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - esbuild-code-inspector-plugin@0.20.12: resolution: {integrity: sha512-vX6t7jLifL7HKsS83kVSbaEPxKBdOUyuIKzGCLvgQ+svXW5ieKwFZskizkFn+Z368bcb530H4lGbEj+i2q3csQ==} - esbuild-darwin-64@0.14.47: - resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' - esbuild-darwin-64@0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - esbuild-darwin-arm64@0.14.47: - resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - esbuild-darwin-arm64@0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - esbuild-freebsd-64@0.14.47: - resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - esbuild-freebsd-64@0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - esbuild-freebsd-arm64@0.14.47: - resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - esbuild-freebsd-arm64@0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - esbuild-linux-32@0.14.47: - resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - esbuild-linux-32@0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - esbuild-linux-64@0.14.47: - resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - esbuild-linux-64@0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - esbuild-linux-arm64@0.14.47: - resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - esbuild-linux-arm64@0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - esbuild-linux-arm@0.14.47: - resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - esbuild-linux-arm@0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - esbuild-linux-mips64le@0.14.47: - resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - esbuild-linux-mips64le@0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - esbuild-linux-ppc64le@0.14.47: - resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - esbuild-linux-ppc64le@0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - esbuild-linux-riscv64@0.14.47: - resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - esbuild-linux-riscv64@0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - esbuild-linux-s390x@0.14.47: - resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - esbuild-linux-s390x@0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - esbuild-netbsd-64@0.14.47: - resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - esbuild-netbsd-64@0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - esbuild-openbsd-64@0.14.47: - resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - esbuild-openbsd-64@0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - esbuild-sunos-64@0.14.47: - resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - esbuild-sunos-64@0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - esbuild-windows-32@0.14.47: - resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - esbuild-windows-32@0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - esbuild-windows-64@0.14.47: - resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - esbuild-windows-64@0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - esbuild-windows-arm64@0.14.47: - resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - esbuild-windows-arm64@0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - esbuild@0.14.47: - resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true @@ -4352,16 +3955,9 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - events-intercept@2.0.0: - resolution: {integrity: sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==} - execa@9.6.0: resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} engines: {node: ^18.19.0 || >=20.5.0} @@ -4378,10 +3974,6 @@ packages: exiftool-vendored@30.2.0: resolution: {integrity: sha512-WXLQn+E7bZapIpjf1q4pjzw8xOZUl3YWACgYQykHFvwLAihF6koDTMQTn6bv07wsFVN1OekmclLLHD5K531s5g==} - exit-hook@2.2.1: - resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} - engines: {node: '>=6'} - exsolve@1.0.5: resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} @@ -4405,9 +3997,6 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.4: resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: @@ -4439,9 +4028,6 @@ packages: resolution: {integrity: sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==} engines: {node: '>=20'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -4464,10 +4050,6 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - foxact@0.2.49: resolution: {integrity: sha512-9Pbu4IbkaNqtS/H4887/QWegclMpBn54mzbPp3t1mg0iJuB83jpQGBY2fshal50NmchlAFIT/GSWBFsa0YI31Q==} peerDependencies: @@ -4494,18 +4076,10 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.1.0: - resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} - engines: {node: '>=14.14'} - fs-extra@11.3.0: resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -4522,10 +4096,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - generic-pool@3.4.2: - resolution: {integrity: sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag==} - engines: {node: '>= 4'} - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -4542,9 +4112,6 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} - get-source@2.0.12: - resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} - get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -4577,13 +4144,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -4668,18 +4228,6 @@ packages: htmlparser2@10.0.0: resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} - http-errors@1.4.0: - resolution: {integrity: sha512-oLjPqve1tuOl5aRhv8GK5eHpqP1C9fb+Ol+XTLjKfLltE44zdDbEdjPSbU7Ch5rSNsVFqZn97SrMmZLdu1/YMw==} - engines: {node: '>= 0.6'} - - http-errors@1.7.3: - resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} - engines: {node: '>= 0.6'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - human-signals@8.0.1: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} @@ -4695,10 +4243,6 @@ packages: typescript: optional: true - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -4737,9 +4281,6 @@ packages: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.1: - resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -4752,10 +4293,6 @@ packages: is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-builtin-module@5.0.0: resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} engines: {node: '>=18.20'} @@ -4810,15 +4347,9 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -4831,9 +4362,6 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - jose@5.9.6: - resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} - jotai@2.12.5: resolution: {integrity: sha512-G8m32HW3lSmcz/4mbqx0hgJIQ0ekndKWiYP7kWVKi0p6saLXdSoye+FZiOFyonnd7Q482LCzm8sMDl7Ar1NWDw==} engines: {node: '>=12.20.0'} @@ -4876,9 +4404,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-to-ts@1.6.4: - resolution: {integrity: sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -5051,9 +4576,6 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - masonic@4.1.0: resolution: {integrity: sha512-3RNbAG5qLve7qNtGp1UM/u7vI39jO73ZFHDBAg3xl8AVh7A6Ikx7I7mBeC0NY0h1r1jJn2Wqeol1QMa09MQbyQ==} peerDependencies: @@ -5067,20 +4589,10 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micro@9.3.5-canary.3: - resolution: {integrity: sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==} - engines: {node: '>= 8.0.0'} - hasBin: true - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} @@ -5089,16 +4601,6 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - miniflare@3.20250408.2: - resolution: {integrity: sha512-uTs7cGWFErgJTKtBdmtctwhuoxniuCQqDT8+xaEiJdEC8d+HsaZVYfZwIX2NuSmdAiHMe7NtbdZYjFMbIXtJsQ==} - engines: {node: '>=16.13'} - hasBin: true - - miniflare@4.20250525.1: - resolution: {integrity: sha512-4PJlT5WA+hfclFU5Q7xnpG1G1VGYTXaf/3iu6iKQ8IsbSi9QvPTA2bSZ5goCFxmJXDjV4cxttVxB0Wl1CLuQ0w==} - engines: {node: '>=18.0.0'} - hasBin: true - minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} @@ -5120,31 +4622,14 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - minizlib@3.0.2: resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - mkdirp@3.0.1: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} @@ -5177,22 +4662,12 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - mvdan-sh@0.10.1: resolution: {integrity: sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==} deprecated: See https://github.com/mvdan/sh/issues/1145 @@ -5248,33 +4723,6 @@ packages: node-fetch-native@1.6.6: resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - 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 - node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true @@ -5285,19 +4733,10 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - normalize-package-data@6.0.2: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - npm-run-path@6.0.0: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} @@ -5310,15 +4749,15 @@ packages: engines: {node: ^14.16.0 || >=16.10.0} hasBin: true + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - once@1.3.3: - resolution: {integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -5335,10 +4774,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - os-paths@4.4.0: - resolution: {integrity: sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==} - engines: {node: '>= 6.0'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -5347,9 +4782,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-json-validator@0.10.2: resolution: {integrity: sha512-i8qx/xfHdkzOzP39bNOtK6VauRrLdJoQf7L1lVRG2/evpLAd3vrj3EGNlzB9QiztBerxWAx5QXZh5z+Jfi0IvQ==} engines: {node: '>=18'} @@ -5358,9 +4790,6 @@ packages: package-manager-detector@1.3.0: resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} - package-manager-manager@0.2.0: - resolution: {integrity: sha512-V02gl0bafXJ2gcY6j+5IHM7UdnYwmF+2OsFZuqVcha6iMSStD4dpIOBOsypnUIwOi4jLcPz6RQuyifmAE3mG8g==} - pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} @@ -5383,10 +4812,6 @@ packages: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} - parse-ms@2.1.0: - resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} - engines: {node: '>=6'} - parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} @@ -5413,26 +4838,9 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - path-match@1.2.4: - resolution: {integrity: sha512-UWlehEdqu36jmh4h5CWJ7tARp1OEVKGHKm6+dg9qMq5RKUTV5WJrGgaZ3dN2m7WFAXDbjlHzvJvL/IUpy84Ktw==} - deprecated: This package is archived and no longer maintained. For support, visit https://github.com/expressjs/express/discussions - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-to-regexp@1.9.0: - resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} - - path-to-regexp@6.1.0: - resolution: {integrity: sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==} - - path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -5443,17 +4851,50 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pcre-to-regexp@1.1.0: - resolution: {integrity: sha512-KF9XxmUQJ2DIlMj3TqNqY1AWvyvTuIuq11CuuekxyaYMiFuMKGgQrePYMX5bXKLhLG3sDI4CsGAYHPaT7VV7+g==} - - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + pg-cloudflare@1.2.6: + resolution: {integrity: sha512-uxmJAnmIgmYgnSFzgOf2cqGQBzwnRYcrEgXuFjJNEkpedEIPBSEzxY7ph4uA9k1mI+l/GR0HjPNS6FKNZe8SBQ==} + + pg-connection-string@2.9.1: + resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} + + pg-pool@3.10.1: + resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.10.2: + resolution: {integrity: sha512-Ci7jy8PbaWxfsck2dwZdERcDG2A0MG8JoQILs+uZNjABFuBuItAZCWUNz8sXRDMoui24rJw7WlXqgpMdBSN/vQ==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg-types@4.0.2: + resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} + engines: {node: '>=10'} + + pg@8.16.2: + resolution: {integrity: sha512-OtLWF0mKLmpxelOt9BqVq83QV6bTfsS0XLegIeAKqKjurRnRKie1Dc1iL89MugmSLhftxw6NNCyZhm1yQFLMEQ==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -5530,6 +4971,45 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-array@3.0.4: + resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} + engines: {node: '>=12'} + + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + + postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-date@2.1.0: + resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} + engines: {node: '>=12'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + + postgres-range@1.1.4: + resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} + + postgres@3.4.7: + resolution: {integrity: sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==} + engines: {node: '>=12'} + preact@10.26.8: resolution: {integrity: sha512-1nMfdFjucm5hKvq0IClqZwK4FJkGXhRrQstOQ3P4vp8HxKrJEMFcY6RdBRVTdfQS/UlnX6gfbPuTvaqx/bDoeQ==} @@ -5613,25 +5093,15 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-ms@7.0.1: - resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} - engines: {node: '>=10'} - pretty-ms@9.2.0: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} - printable-characters@1.0.42: - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} - prism-react-renderer@2.4.1: resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} peerDependencies: react: '>=16.0.0' - promisepipe@3.0.0: - resolution: {integrity: sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -5645,10 +5115,6 @@ packages: raf-schd@4.0.3: resolution: {integrity: sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==} - raw-body@2.4.1: - resolution: {integrity: sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==} - engines: {node: '>= 0.8'} - rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} @@ -5799,10 +5265,6 @@ packages: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -5819,9 +5281,6 @@ packages: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - reghex@1.0.2: - resolution: {integrity: sha512-bYtyDmFGHxn1Y4gxIs12+AUQ1WRDNvaIhn6ZuKc5KUbSVcmm6U6vx/RA66s26xGhTWBErKKDKK7lorkvvIBB5g==} - regjsparser@0.12.0: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true @@ -5846,10 +5305,6 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -5900,9 +5355,6 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} @@ -5930,17 +5382,10 @@ packages: set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - setprototypeof@1.1.1: - resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - sh-syntax@0.4.2: resolution: {integrity: sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==} engines: {node: '>=16.0.0'} - sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.34.2: resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -5957,13 +5402,6 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - shellac@0.8.0: - resolution: {integrity: sha512-M3F2vzYIM7frKOs0+kgs/ITMlXhGpgtqs9HxDPciz3bckzAqqfd4LrBn+CCmSbICyJS+Jz5UDkmkR1jE+m+g+Q==} - - signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -6025,6 +5463,10 @@ packages: spdx-license-ids@3.0.21: resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -6035,26 +5477,6 @@ packages: stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} - stacktracey@2.1.8: - resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} - - stat-mode@0.3.0: - resolution: {integrity: sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - stoppable@1.1.0: - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} - engines: {node: '>=4', npm: '>=6'} - - stream-to-array@2.3.0: - resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} - - stream-to-promise@2.2.0: - resolution: {integrity: sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==} - streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -6070,10 +5492,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} @@ -6192,10 +5610,6 @@ packages: resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} @@ -6208,10 +5622,6 @@ packages: tiff@7.0.0: resolution: {integrity: sha512-NhAYu+1cYzWpJ64bxaAC/b1fy6ZwkllMxYUziVZAISZa2TKu8H7AsC7Kpz4epZoMb0SNS4fOA6Ql1gZCZ27UXQ==} - time-span@4.0.0: - resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==} - engines: {node: '>=10'} - tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} @@ -6236,17 +5646,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toidentifier@1.0.0: - resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} - engines: {node: '>=0.6'} - token-types@6.0.0: resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==} engines: {node: '>=14.16'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -6265,29 +5668,9 @@ packages: peerDependencies: typescript: '>=4.0.0' - ts-morph@12.0.0: - resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==} - - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - ts-pattern@5.7.1: resolution: {integrity: sha512-EGs8PguQqAAUIcQfK4E9xdXxB6s2GK4sJfT/vcc9V1ELIvC4LH/zXu2t/5fajtv6oiRCxdv7BgtVK3vWgROxag==} - ts-toolbelt@6.15.5: - resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==} - tsconfck@3.1.6: resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} @@ -6343,11 +5726,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - typescript@5.8.2: resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} @@ -6369,9 +5747,6 @@ packages: uhyphen@0.2.0: resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} - uid-promise@1.0.0: - resolution: {integrity: sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==} - uint8array-extras@1.4.0: resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==} engines: {node: '>=18'} @@ -6385,17 +5760,6 @@ packages: undici-types@7.8.0: resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} - - undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} - engines: {node: '>=14.0'} - - unenv@2.0.0-rc.17: - resolution: {integrity: sha512-B06u0wXkEd+o5gOCMl/ZHl5cfpYbDZKAT+HWTL+Hws6jWu7dCiqBBXXXzMFcFVJb8D4ytAnYmxJA83uwOQRSsg==} - unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -6408,10 +5772,6 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - unplugin-dts@1.0.0-beta.2: resolution: {integrity: sha512-sgM7qrwWNyiBwoUexkHRrTQBb4xn6EGLkkrcovpG+MvOhYQPY0XdtNGtlxVdExcxTTtWIjpoAAYu5p0iQVQdAA==} peerDependencies: @@ -6497,9 +5857,6 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -6513,11 +5870,6 @@ packages: react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc - vercel@42.3.0: - resolution: {integrity: sha512-hLiqfcvsjI7IRm5gYIAE7d7wIAqnn797oyDdMkaw76pAQh6aFqvrw4EYcByuxuCSe/5bwck5LNcJ3neXeceGbQ==} - engines: {node: '>= 18'} - hasBin: true - vite-bundle-analyzer@0.23.0: resolution: {integrity: sha512-G5chWCtFS546c7c6MCNdzXVWIMDfeUdJHA3LvCwTrhzdfwqbf6ppsIcNW4CnNrpdEAHQ9KgmdkNFV4u3UurXtQ==} hasBin: true @@ -6625,21 +5977,12 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - web-vitals@0.2.4: - resolution: {integrity: sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webpack-code-inspector-plugin@0.20.12: resolution: {integrity: sha512-tec0/XAzEpzOUkEOWlboUDNN7dIOTFeQw5ZHumlm/e0T9EDdq/aG8ZOCX53pnoasrUHONWmprC3RY8YKwmyNkg==} webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -6652,34 +5995,10 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - workerd@1.20250408.0: - resolution: {integrity: sha512-bBUX+UsvpzAqiWFNeZrlZmDGddiGZdBBbftZJz2wE6iUg/cIAJeVQYTtS/3ahaicguoLBz4nJiDo8luqM9fx1A==} - engines: {node: '>=16'} - hasBin: true - - workerd@1.20250525.0: - resolution: {integrity: sha512-SXJgLREy/Aqw2J71Oah0Pbu+SShbqbTExjVQyRBTM1r7MG7fS5NUlknhnt6sikjA/t4cO09Bi8OJqHdTkrcnYQ==} - engines: {node: '>=16'} - hasBin: true - - wrangler@4.19.1: - resolution: {integrity: sha512-b+ed2SJKauHgndl4Im1wHE+FeSSlrdlEZNuvpc8q/94k4EmRxRkXnwBAsVWuicBxG3HStFLQPGGlvL8wGKTtHw==} - engines: {node: '>=18.0.0'} - hasBin: true - peerDependencies: - '@cloudflare/workers-types': ^4.20250525.0 - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrap-ansi@9.0.0: resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} engines: {node: '>=18'} @@ -6687,8 +6006,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -6699,13 +6018,9 @@ packages: utf-8-validate: optional: true - xdg-app-paths@5.1.0: - resolution: {integrity: sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==} - engines: {node: '>=6'} - - xdg-portable@7.3.0: - resolution: {integrity: sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw==} - engines: {node: '>= 6.0'} + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} @@ -6738,21 +6053,6 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yauzl-clone@1.0.4: - resolution: {integrity: sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==} - engines: {node: '>=6'} - - yauzl-promise@2.1.3: - resolution: {integrity: sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==} - engines: {node: '>=6'} - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -6761,18 +6061,12 @@ packages: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} - youch@3.3.4: - resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} - zod-validation-error@3.4.1: resolution: {integrity: sha512-1KP64yqDPQ3rupxNv7oXhf7KdhHHgaqbKuspVoiN93TT0xrBjql+Svjkdjq/Qh/7GSMmgQs3AfvBT0heE35thw==} engines: {node: '>=18.0.0'} peerDependencies: zod: ^3.24.4 - zod@3.22.3: - resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} - zod@3.25.67: resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} @@ -7543,66 +6837,6 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 - '@cloudflare/kv-asset-handler@0.4.0': - dependencies: - mime: 3.0.0 - - '@cloudflare/next-on-pages@1.13.12(vercel@42.3.0(rollup@4.41.1))(wrangler@4.19.1)': - dependencies: - acorn: 8.14.1 - ast-types: 0.14.2 - chalk: 5.4.1 - chokidar: 3.6.0 - commander: 11.1.0 - cookie: 0.5.0 - esbuild: 0.15.18 - js-yaml: 4.1.0 - miniflare: 3.20250408.2 - package-manager-manager: 0.2.0 - pcre-to-regexp: 1.1.0 - semver: 7.7.2 - vercel: 42.3.0(rollup@4.41.1) - wrangler: 4.19.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@cloudflare/unenv-preset@2.3.2(unenv@2.0.0-rc.17)(workerd@1.20250525.0)': - dependencies: - unenv: 2.0.0-rc.17 - optionalDependencies: - workerd: 1.20250525.0 - - '@cloudflare/workerd-darwin-64@1.20250408.0': - optional: true - - '@cloudflare/workerd-darwin-64@1.20250525.0': - optional: true - - '@cloudflare/workerd-darwin-arm64@1.20250408.0': - optional: true - - '@cloudflare/workerd-darwin-arm64@1.20250525.0': - optional: true - - '@cloudflare/workerd-linux-64@1.20250408.0': - optional: true - - '@cloudflare/workerd-linux-64@1.20250525.0': - optional: true - - '@cloudflare/workerd-linux-arm64@1.20250408.0': - optional: true - - '@cloudflare/workerd-linux-arm64@1.20250525.0': - optional: true - - '@cloudflare/workerd-windows-64@1.20250408.0': - optional: true - - '@cloudflare/workerd-windows-64@1.20250525.0': - optional: true - '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0)': dependencies: '@types/semver': 7.7.0 @@ -7611,21 +6845,7 @@ snapshots: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.1.0 - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@edge-runtime/format@2.2.1': {} - - '@edge-runtime/node-utils@2.3.0': {} - - '@edge-runtime/ponyfill@2.4.2': {} - - '@edge-runtime/primitives@4.1.0': {} - - '@edge-runtime/vm@3.2.0': - dependencies: - '@edge-runtime/primitives': 4.1.0 + '@drizzle-team/brocli@0.10.2': {} '@egoist/tailwindcss-icons@1.9.0(tailwindcss@4.1.11)': dependencies: @@ -7658,84 +6878,154 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 + '@esbuild-kit/core-utils@3.3.2': + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + + '@esbuild-kit/esm-loader@2.6.5': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.10.1 + '@esbuild/aix-ppc64@0.25.4': optional: true + '@esbuild/android-arm64@0.18.20': + optional: true + '@esbuild/android-arm64@0.25.4': optional: true - '@esbuild/android-arm@0.15.18': + '@esbuild/android-arm@0.18.20': optional: true '@esbuild/android-arm@0.25.4': optional: true + '@esbuild/android-x64@0.18.20': + optional: true + '@esbuild/android-x64@0.25.4': optional: true + '@esbuild/darwin-arm64@0.18.20': + optional: true + '@esbuild/darwin-arm64@0.25.4': optional: true + '@esbuild/darwin-x64@0.18.20': + optional: true + '@esbuild/darwin-x64@0.25.4': optional: true + '@esbuild/freebsd-arm64@0.18.20': + optional: true + '@esbuild/freebsd-arm64@0.25.4': optional: true + '@esbuild/freebsd-x64@0.18.20': + optional: true + '@esbuild/freebsd-x64@0.25.4': optional: true + '@esbuild/linux-arm64@0.18.20': + optional: true + '@esbuild/linux-arm64@0.25.4': optional: true + '@esbuild/linux-arm@0.18.20': + optional: true + '@esbuild/linux-arm@0.25.4': optional: true + '@esbuild/linux-ia32@0.18.20': + optional: true + '@esbuild/linux-ia32@0.25.4': optional: true - '@esbuild/linux-loong64@0.15.18': + '@esbuild/linux-loong64@0.18.20': optional: true '@esbuild/linux-loong64@0.25.4': optional: true + '@esbuild/linux-mips64el@0.18.20': + optional: true + '@esbuild/linux-mips64el@0.25.4': optional: true + '@esbuild/linux-ppc64@0.18.20': + optional: true + '@esbuild/linux-ppc64@0.25.4': optional: true + '@esbuild/linux-riscv64@0.18.20': + optional: true + '@esbuild/linux-riscv64@0.25.4': optional: true + '@esbuild/linux-s390x@0.18.20': + optional: true + '@esbuild/linux-s390x@0.25.4': optional: true + '@esbuild/linux-x64@0.18.20': + optional: true + '@esbuild/linux-x64@0.25.4': optional: true '@esbuild/netbsd-arm64@0.25.4': optional: true + '@esbuild/netbsd-x64@0.18.20': + optional: true + '@esbuild/netbsd-x64@0.25.4': optional: true '@esbuild/openbsd-arm64@0.25.4': optional: true + '@esbuild/openbsd-x64@0.18.20': + optional: true + '@esbuild/openbsd-x64@0.25.4': optional: true + '@esbuild/sunos-x64@0.18.20': + optional: true + '@esbuild/sunos-x64@0.25.4': optional: true + '@esbuild/win32-arm64@0.18.20': + optional: true + '@esbuild/win32-arm64@0.25.4': optional: true + '@esbuild/win32-ia32@0.18.20': + optional: true + '@esbuild/win32-ia32@0.25.4': optional: true + '@esbuild/win32-x64@0.18.20': + optional: true + '@esbuild/win32-x64@0.25.4': optional: true @@ -7900,8 +7190,6 @@ snapshots: dependencies: '@essentials/raf': 1.2.0 - '@fastify/busboy@2.1.1': {} - '@floating-ui/core@1.7.1': dependencies: '@floating-ui/utils': 0.2.9 @@ -7991,142 +7279,73 @@ snapshots: transitivePeerDependencies: - supports-color - '@img/sharp-darwin-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 - optional: true - '@img/sharp-darwin-arm64@0.34.2': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.1.0 optional: true - '@img/sharp-darwin-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.4 - optional: true - '@img/sharp-darwin-x64@0.34.2': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.1.0 optional: true - '@img/sharp-libvips-darwin-arm64@1.0.4': - optional: true - '@img/sharp-libvips-darwin-arm64@1.1.0': optional: true - '@img/sharp-libvips-darwin-x64@1.0.4': - optional: true - '@img/sharp-libvips-darwin-x64@1.1.0': optional: true - '@img/sharp-libvips-linux-arm64@1.0.4': - optional: true - '@img/sharp-libvips-linux-arm64@1.1.0': optional: true - '@img/sharp-libvips-linux-arm@1.0.5': - optional: true - '@img/sharp-libvips-linux-arm@1.1.0': optional: true '@img/sharp-libvips-linux-ppc64@1.1.0': optional: true - '@img/sharp-libvips-linux-s390x@1.0.4': - optional: true - '@img/sharp-libvips-linux-s390x@1.1.0': optional: true - '@img/sharp-libvips-linux-x64@1.0.4': - optional: true - '@img/sharp-libvips-linux-x64@1.1.0': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - optional: true - '@img/sharp-libvips-linuxmusl-x64@1.1.0': optional: true - '@img/sharp-linux-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.4 - optional: true - '@img/sharp-linux-arm64@0.34.2': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.1.0 optional: true - '@img/sharp-linux-arm@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.5 - optional: true - '@img/sharp-linux-arm@0.34.2': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.1.0 optional: true - '@img/sharp-linux-s390x@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.4 - optional: true - '@img/sharp-linux-s390x@0.34.2': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.1.0 optional: true - '@img/sharp-linux-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.4 - optional: true - '@img/sharp-linux-x64@0.34.2': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.1.0 optional: true - '@img/sharp-linuxmusl-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - optional: true - '@img/sharp-linuxmusl-arm64@0.34.2': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 optional: true - '@img/sharp-linuxmusl-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - optional: true - '@img/sharp-linuxmusl-x64@0.34.2': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.1.0 optional: true - '@img/sharp-wasm32@0.33.5': - dependencies: - '@emnapi/runtime': 1.4.3 - optional: true - '@img/sharp-wasm32@0.34.2': dependencies: '@emnapi/runtime': 1.4.3 @@ -8135,15 +7354,9 @@ snapshots: '@img/sharp-win32-arm64@0.34.2': optional: true - '@img/sharp-win32-ia32@0.33.5': - optional: true - '@img/sharp-win32-ia32@0.34.2': optional: true - '@img/sharp-win32-x64@0.33.5': - optional: true - '@img/sharp-win32-x64@0.34.2': optional: true @@ -8174,15 +7387,6 @@ snapshots: - prettier-plugin-svelte - supports-color - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 @@ -8209,24 +7413,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@mapbox/node-pre-gyp@2.0.0': - dependencies: - consola: 3.4.2 - detect-libc: 2.0.4 - https-proxy-agent: 7.0.6 - node-fetch: 2.7.0 - nopt: 8.1.0 - semver: 7.7.2 - tar: 7.4.3 - transitivePeerDependencies: - - encoding - - supports-color - '@microsoft/api-extractor-model@7.30.6(@types/node@24.0.4)': dependencies: '@microsoft/tsdoc': 0.15.1 @@ -8269,6 +7455,11 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true + '@neondatabase/serverless@0.9.5': + dependencies: + '@types/pg': 8.11.6 + optional: true + '@next/env@15.3.4': {} '@next/swc-darwin-arm64@15.3.4': @@ -8318,9 +7509,6 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@pkgjs/parseargs@0.11.0': - optional: true - '@pkgr/core@0.1.2': {} '@pkgr/core@0.2.4': {} @@ -8942,8 +8130,6 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@sinclair/typebox@0.25.24': {} - '@sindresorhus/merge-streams@4.0.0': {} '@smithy/abort-controller@4.0.4': @@ -9318,6 +8504,13 @@ snapshots: typescript: 5.8.3 zod: 3.25.67 + '@t3-oss/env-nextjs@0.13.8(typescript@5.8.3)(zod@3.25.67)': + dependencies: + '@t3-oss/env-core': 0.13.8(typescript@5.8.3)(zod@3.25.67) + optionalDependencies: + typescript: 5.8.3 + zod: 3.25.67 + '@tailwindcss/container-queries@0.1.1(tailwindcss@4.1.11)': dependencies: tailwindcss: 4.1.11 @@ -9434,23 +8627,6 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@tootallnate/once@2.0.0': {} - - '@ts-morph/common@0.11.1': - dependencies: - fast-glob: 3.3.3 - minimatch: 3.1.2 - mkdirp: 1.0.4 - path-browserify: 1.0.1 - - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 @@ -9485,8 +8661,6 @@ snapshots: '@types/luxon@3.6.2': {} - '@types/node@16.18.11': {} - '@types/node@20.17.57': dependencies: undici-types: 6.19.8 @@ -9503,6 +8677,19 @@ snapshots: '@types/parse-json@4.0.2': {} + '@types/pg@8.11.6': + dependencies: + '@types/node': 24.0.4 + pg-protocol: 1.10.2 + pg-types: 4.0.2 + optional: true + + '@types/pg@8.15.4': + dependencies: + '@types/node': 24.0.4 + pg-protocol: 1.10.2 + pg-types: 2.2.0 + '@types/prismjs@1.26.5': {} '@types/react-dom@19.1.6(@types/react@19.1.8)': @@ -9750,150 +8937,14 @@ snapshots: next: 15.3.4(@babel/core@7.27.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 - '@vercel/build-utils@10.6.0': {} - - '@vercel/error-utils@2.0.3': {} - - '@vercel/fun@1.1.6': + '@vercel/postgres@0.10.0': dependencies: - '@tootallnate/once': 2.0.0 - async-listen: 1.2.0 - debug: 4.3.4 - generic-pool: 3.4.2 - micro: 9.3.5-canary.3 - ms: 2.1.1 - node-fetch: 2.6.7 - path-match: 1.2.4 - promisepipe: 3.0.0 - semver: 7.5.4 - stat-mode: 0.3.0 - stream-to-promise: 2.2.0 - tar: 6.2.1 - tinyexec: 0.3.2 - tree-kill: 1.2.2 - uid-promise: 1.0.0 - xdg-app-paths: 5.1.0 - yauzl-promise: 2.1.3 + '@neondatabase/serverless': 0.9.5 + bufferutil: 4.0.9 + ws: 8.18.2(bufferutil@4.0.9) transitivePeerDependencies: - - encoding - - supports-color - - '@vercel/gatsby-plugin-vercel-analytics@1.0.11': - dependencies: - web-vitals: 0.2.4 - - '@vercel/gatsby-plugin-vercel-builder@2.0.83': - dependencies: - '@sinclair/typebox': 0.25.24 - '@vercel/build-utils': 10.6.0 - esbuild: 0.14.47 - etag: 1.8.1 - fs-extra: 11.1.0 - - '@vercel/go@3.2.1': {} - - '@vercel/hydrogen@1.2.2': - dependencies: - '@vercel/static-config': 3.1.1 - ts-morph: 12.0.0 - - '@vercel/next@4.8.0(rollup@4.41.1)': - dependencies: - '@vercel/nft': 0.29.2(rollup@4.41.1) - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/nft@0.29.2(rollup@4.41.1)': - dependencies: - '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.1.4(rollup@4.41.1) - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 10.4.5 - graceful-fs: 4.2.11 - node-gyp-build: 4.8.4 - picomatch: 4.0.2 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/node@5.2.1(rollup@4.41.1)': - dependencies: - '@edge-runtime/node-utils': 2.3.0 - '@edge-runtime/primitives': 4.1.0 - '@edge-runtime/vm': 3.2.0 - '@types/node': 16.18.11 - '@vercel/build-utils': 10.6.0 - '@vercel/error-utils': 2.0.3 - '@vercel/nft': 0.29.2(rollup@4.41.1) - '@vercel/static-config': 3.1.1 - async-listen: 3.0.0 - cjs-module-lexer: 1.2.3 - edge-runtime: 2.5.9 - es-module-lexer: 1.4.1 - esbuild: 0.14.47 - etag: 1.8.1 - node-fetch: 2.6.9 - path-to-regexp: 6.1.0 - path-to-regexp-updated: path-to-regexp@6.3.0 - ts-morph: 12.0.0 - ts-node: 10.9.1(@types/node@16.18.11)(typescript@4.9.5) - typescript: 4.9.5 - undici: 5.28.4 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - encoding - - rollup - - supports-color - - '@vercel/python@4.7.2': {} - - '@vercel/redwood@2.3.3(rollup@4.41.1)': - dependencies: - '@vercel/nft': 0.29.2(rollup@4.41.1) - '@vercel/static-config': 3.1.1 - semver: 6.3.1 - ts-morph: 12.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/remix-builder@5.4.9(rollup@4.41.1)': - dependencies: - '@vercel/error-utils': 2.0.3 - '@vercel/nft': 0.29.2(rollup@4.41.1) - '@vercel/static-config': 3.1.1 - path-to-regexp: 6.1.0 - path-to-regexp-updated: path-to-regexp@6.3.0 - ts-morph: 12.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/ruby@2.2.0': {} - - '@vercel/static-build@2.7.9': - dependencies: - '@vercel/gatsby-plugin-vercel-analytics': 1.0.11 - '@vercel/gatsby-plugin-vercel-builder': 2.0.83 - '@vercel/static-config': 3.1.1 - ts-morph: 12.0.0 - - '@vercel/static-config@3.1.1': - dependencies: - ajv: 8.6.3 - json-schema-to-ts: 1.6.4 - ts-morph: 12.0.0 + - utf-8-validate + optional: true '@vingle/bmp-js@0.2.5': dependencies: @@ -9956,12 +9007,6 @@ snapshots: '@vue/shared@3.5.16': {} - abbrev@3.0.1: {} - - acorn-import-attributes@1.9.5(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -9970,22 +9015,12 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-walk@8.3.2: {} - - acorn-walk@8.3.4: - dependencies: - acorn: 8.15.0 - - acorn@8.14.0: {} - acorn@8.14.1: {} acorn@8.15.0: {} add-stream@1.0.0: {} - agent-base@7.1.3: {} - ajv-draft-04@1.0.0(ajv@8.13.0): optionalDependencies: ajv: 8.13.0 @@ -10015,13 +9050,6 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 - ajv@8.6.3: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - alien-signals@0.4.14: {} ansi-escapes@7.0.0: @@ -10040,19 +9068,8 @@ snapshots: ansis@4.1.0: {} - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - apple-uikit-colors@0.6.2: {} - arg@4.1.0: {} - - arg@4.1.3: {} - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -10065,27 +9082,11 @@ snapshots: array-ify@1.0.0: {} - as-table@1.0.55: - dependencies: - printable-characters: 1.0.42 - ast-kit@2.1.0: dependencies: '@babel/parser': 7.27.5 pathe: 2.0.3 - ast-types@0.14.2: - dependencies: - tslib: 2.8.1 - - async-listen@1.2.0: {} - - async-listen@3.0.0: {} - - async-listen@3.0.1: {} - - async-sema@3.1.1: {} - async@3.2.6: {} author-regex@1.0.0: {} @@ -10121,12 +9122,6 @@ snapshots: batch-cluster@14.0.0: {} - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - bippy@0.3.16(@types/react@19.1.8)(react@19.1.0): dependencies: '@types/react-reconciler': 0.28.9(@types/react@19.1.8) @@ -10138,8 +9133,6 @@ snapshots: birpc@2.4.0: {} - blake3-wasm@2.1.5: {} - blurhash@2.0.5: {} boolbase@1.0.0: {} @@ -10166,18 +9159,19 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.5) - buffer-crc32@0.2.13: {} - buffer-from@1.1.2: {} + bufferutil@4.0.9: + dependencies: + node-gyp-build: 4.8.4 + optional: true + builtin-modules@5.0.0: {} busboy@1.6.0: dependencies: streamsearch: 1.1.0 - bytes@3.1.0: {} - c12@3.0.4: dependencies: chokidar: 4.0.3 @@ -10218,28 +9212,10 @@ snapshots: chalk@5.4.1: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chokidar@4.0.0: - dependencies: - readdirp: 4.1.2 - chokidar@4.0.3: dependencies: readdirp: 4.1.2 - chownr@2.0.0: {} - chownr@3.0.0: {} ci-info@4.2.0: {} @@ -10248,8 +9224,6 @@ snapshots: dependencies: consola: 3.4.2 - cjs-module-lexer@1.2.3: {} - clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -10277,8 +9251,6 @@ snapshots: clsx@2.1.1: {} - code-block-writer@10.1.1: {} - code-inspector-core@0.20.12: dependencies: '@vue/compiler-dom': 3.5.16 @@ -10318,8 +9290,6 @@ snapshots: colorette@2.0.20: {} - commander@11.1.0: {} - commander@14.0.0: {} commander@2.20.3: {} @@ -10359,8 +9329,6 @@ snapshots: consola@3.4.2: {} - content-type@1.0.4: {} - conventional-changelog-angular@8.0.0: dependencies: compare-func: 2.0.0 @@ -10431,14 +9399,8 @@ snapshots: dependencies: meow: 13.2.0 - convert-hrtime@3.0.0: {} - convert-source-map@2.0.0: {} - cookie@0.5.0: {} - - cookie@0.7.2: {} - cookie@1.0.2: {} core-js-compat@3.42.0: @@ -10453,8 +9415,6 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - create-require@1.1.1: {} - cross-env@7.0.3: dependencies: cross-spawn: 7.0.6 @@ -10491,8 +9451,6 @@ snapshots: daisyui@5.0.43: {} - data-uri-to-buffer@2.0.2: {} - de-indent@1.0.2: {} debug@3.2.7: @@ -10500,10 +9458,6 @@ snapshots: ms: 2.1.3 optional: true - debug@4.3.4: - dependencies: - ms: 2.1.2 - debug@4.4.1: dependencies: ms: 2.1.3 @@ -10512,8 +9466,6 @@ snapshots: defu@6.1.4: {} - depd@1.1.2: {} - destr@2.0.5: {} detect-indent@6.1.0: {} @@ -10528,8 +9480,6 @@ snapshots: detect-node-es@1.1.0: {} - diff@4.0.2: {} - diff@8.0.2: {} dom-serializer@1.4.1: @@ -10583,21 +9533,23 @@ snapshots: dotenv@16.5.0: {} - dts-resolver@2.1.1: {} - - eastasianwidth@0.2.0: {} - - edge-runtime@2.5.9: + drizzle-kit@0.31.2: dependencies: - '@edge-runtime/format': 2.2.1 - '@edge-runtime/ponyfill': 2.4.2 - '@edge-runtime/vm': 3.2.0 - async-listen: 3.0.1 - mri: 1.2.0 - picocolors: 1.0.0 - pretty-ms: 7.0.1 - signal-exit: 4.0.2 - time-span: 4.0.0 + '@drizzle-team/brocli': 0.10.2 + '@esbuild-kit/esm-loader': 2.6.5 + esbuild: 0.25.4 + esbuild-register: 3.6.0(esbuild@0.25.4) + transitivePeerDependencies: + - supports-color + + drizzle-orm@0.44.2(@types/pg@8.15.4)(@vercel/postgres@0.10.0)(pg@8.16.2)(postgres@3.4.7): + optionalDependencies: + '@types/pg': 8.15.4 + '@vercel/postgres': 0.10.0 + pg: 8.16.2 + postgres: 3.4.7 + + dts-resolver@2.1.1: {} ejs@3.1.10: dependencies: @@ -10609,14 +9561,8 @@ snapshots: emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - empathic@2.0.0: {} - end-of-stream@1.1.0: - dependencies: - once: 1.3.3 - enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -10634,183 +9580,45 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-module-lexer@1.4.1: {} - es-toolkit@1.39.5: {} - esbuild-android-64@0.14.47: - optional: true - - esbuild-android-64@0.15.18: - optional: true - - esbuild-android-arm64@0.14.47: - optional: true - - esbuild-android-arm64@0.15.18: - optional: true - esbuild-code-inspector-plugin@0.20.12: dependencies: code-inspector-core: 0.20.12 transitivePeerDependencies: - supports-color - esbuild-darwin-64@0.14.47: - optional: true + esbuild-register@3.6.0(esbuild@0.25.4): + dependencies: + debug: 4.4.1 + esbuild: 0.25.4 + transitivePeerDependencies: + - supports-color - esbuild-darwin-64@0.15.18: - optional: true - - esbuild-darwin-arm64@0.14.47: - optional: true - - esbuild-darwin-arm64@0.15.18: - optional: true - - esbuild-freebsd-64@0.14.47: - optional: true - - esbuild-freebsd-64@0.15.18: - optional: true - - esbuild-freebsd-arm64@0.14.47: - optional: true - - esbuild-freebsd-arm64@0.15.18: - optional: true - - esbuild-linux-32@0.14.47: - optional: true - - esbuild-linux-32@0.15.18: - optional: true - - esbuild-linux-64@0.14.47: - optional: true - - esbuild-linux-64@0.15.18: - optional: true - - esbuild-linux-arm64@0.14.47: - optional: true - - esbuild-linux-arm64@0.15.18: - optional: true - - esbuild-linux-arm@0.14.47: - optional: true - - esbuild-linux-arm@0.15.18: - optional: true - - esbuild-linux-mips64le@0.14.47: - optional: true - - esbuild-linux-mips64le@0.15.18: - optional: true - - esbuild-linux-ppc64le@0.14.47: - optional: true - - esbuild-linux-ppc64le@0.15.18: - optional: true - - esbuild-linux-riscv64@0.14.47: - optional: true - - esbuild-linux-riscv64@0.15.18: - optional: true - - esbuild-linux-s390x@0.14.47: - optional: true - - esbuild-linux-s390x@0.15.18: - optional: true - - esbuild-netbsd-64@0.14.47: - optional: true - - esbuild-netbsd-64@0.15.18: - optional: true - - esbuild-openbsd-64@0.14.47: - optional: true - - esbuild-openbsd-64@0.15.18: - optional: true - - esbuild-sunos-64@0.14.47: - optional: true - - esbuild-sunos-64@0.15.18: - optional: true - - esbuild-windows-32@0.14.47: - optional: true - - esbuild-windows-32@0.15.18: - optional: true - - esbuild-windows-64@0.14.47: - optional: true - - esbuild-windows-64@0.15.18: - optional: true - - esbuild-windows-arm64@0.14.47: - optional: true - - esbuild-windows-arm64@0.15.18: - optional: true - - esbuild@0.14.47: + esbuild@0.18.20: optionalDependencies: - esbuild-android-64: 0.14.47 - esbuild-android-arm64: 0.14.47 - esbuild-darwin-64: 0.14.47 - esbuild-darwin-arm64: 0.14.47 - esbuild-freebsd-64: 0.14.47 - esbuild-freebsd-arm64: 0.14.47 - esbuild-linux-32: 0.14.47 - esbuild-linux-64: 0.14.47 - esbuild-linux-arm: 0.14.47 - esbuild-linux-arm64: 0.14.47 - esbuild-linux-mips64le: 0.14.47 - esbuild-linux-ppc64le: 0.14.47 - esbuild-linux-riscv64: 0.14.47 - esbuild-linux-s390x: 0.14.47 - esbuild-netbsd-64: 0.14.47 - esbuild-openbsd-64: 0.14.47 - esbuild-sunos-64: 0.14.47 - esbuild-windows-32: 0.14.47 - esbuild-windows-64: 0.14.47 - esbuild-windows-arm64: 0.14.47 - - esbuild@0.15.18: - optionalDependencies: - '@esbuild/android-arm': 0.15.18 - '@esbuild/linux-loong64': 0.15.18 - esbuild-android-64: 0.15.18 - esbuild-android-arm64: 0.15.18 - esbuild-darwin-64: 0.15.18 - esbuild-darwin-arm64: 0.15.18 - esbuild-freebsd-64: 0.15.18 - esbuild-freebsd-arm64: 0.15.18 - esbuild-linux-32: 0.15.18 - esbuild-linux-64: 0.15.18 - esbuild-linux-arm: 0.15.18 - esbuild-linux-arm64: 0.15.18 - esbuild-linux-mips64le: 0.15.18 - esbuild-linux-ppc64le: 0.15.18 - esbuild-linux-riscv64: 0.15.18 - esbuild-linux-s390x: 0.15.18 - esbuild-netbsd-64: 0.15.18 - esbuild-openbsd-64: 0.15.18 - esbuild-sunos-64: 0.15.18 - esbuild-windows-32: 0.15.18 - esbuild-windows-64: 0.15.18 - esbuild-windows-arm64: 0.15.18 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 esbuild@0.25.4: optionalDependencies: @@ -11260,12 +10068,8 @@ snapshots: esutils@2.0.3: {} - etag@1.8.1: {} - eventemitter3@5.0.1: {} - events-intercept@2.0.0: {} - execa@9.6.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -11298,8 +10102,6 @@ snapshots: exiftool-vendored.exe: 13.30.0 exiftool-vendored.pl: 13.30.0 - exit-hook@2.2.1: {} - exsolve@1.0.5: {} fast-deep-equal@3.1.3: {} @@ -11324,10 +10126,6 @@ snapshots: dependencies: reusify: 1.1.0 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -11355,8 +10153,6 @@ snapshots: transitivePeerDependencies: - supports-color - file-uri-to-path@1.0.0: {} - filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -11379,11 +10175,6 @@ snapshots: flatted@3.3.3: {} - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - foxact@0.2.49(react@19.1.0): dependencies: client-only: 0.0.1 @@ -11406,22 +10197,12 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@11.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -11432,8 +10213,6 @@ snapshots: function-bind@1.1.2: {} - generic-pool@3.4.2: {} - gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -11442,11 +10221,6 @@ snapshots: get-nonce@1.0.1: {} - get-source@2.0.12: - dependencies: - data-uri-to-buffer: 2.0.2 - source-map: 0.6.1 - get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -11491,17 +10265,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -11589,26 +10352,6 @@ snapshots: domutils: 3.2.2 entities: 6.0.0 - http-errors@1.4.0: - dependencies: - inherits: 2.0.1 - statuses: 1.5.0 - - http-errors@1.7.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 - - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.3 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - human-signals@8.0.1: {} i18next-browser-languagedetector@8.2.0: @@ -11621,10 +10364,6 @@ snapshots: optionalDependencies: typescript: 5.8.3 - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - ieee754@1.2.1: {} ignore@5.3.2: {} @@ -11651,8 +10390,6 @@ snapshots: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.1: {} - inherits@2.0.4: {} iobuffer@6.0.0: {} @@ -11661,10 +10398,6 @@ snapshots: is-arrayish@0.3.2: {} - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-builtin-module@5.0.0: dependencies: builtin-modules: 5.0.0 @@ -11707,16 +10440,8 @@ snapshots: is-unicode-supported@2.1.0: {} - isarray@0.0.1: {} - isexe@2.0.0: {} - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jake@10.9.2: dependencies: async: 3.2.6 @@ -11728,8 +10453,6 @@ snapshots: jju@1.4.0: {} - jose@5.9.6: {} - jotai@2.12.5(@types/react@19.1.8)(react@19.1.0): optionalDependencies: '@types/react': 19.1.8 @@ -11753,11 +10476,6 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-schema-to-ts@1.6.4: - dependencies: - '@types/json-schema': 7.0.15 - ts-toolbelt: 6.15.5 - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -11928,8 +10646,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - make-error@1.3.6: {} - masonic@4.1.0(react@19.1.0): dependencies: '@essentials/memoize-one': 1.1.0 @@ -11949,58 +10665,15 @@ snapshots: merge2@1.4.1: {} - micro@9.3.5-canary.3: - dependencies: - arg: 4.1.0 - content-type: 1.0.4 - raw-body: 2.4.1 - micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 - mime@3.0.0: {} - mimic-function@5.0.1: {} min-indent@1.0.1: {} - miniflare@3.20250408.2: - dependencies: - '@cspotcode/source-map-support': 0.8.1 - acorn: 8.14.0 - acorn-walk: 8.3.2 - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - stoppable: 1.1.0 - undici: 5.29.0 - workerd: 1.20250408.0 - ws: 8.18.0 - youch: 3.3.4 - zod: 3.22.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - miniflare@4.20250525.1: - dependencies: - '@cspotcode/source-map-support': 0.8.1 - acorn: 8.14.0 - acorn-walk: 8.3.2 - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - sharp: 0.33.5 - stoppable: 1.1.0 - undici: 5.29.0 - workerd: 1.20250525.0 - ws: 8.18.0 - youch: 3.3.4 - zod: 3.22.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - minimatch@10.0.1: dependencies: brace-expansion: 2.0.1 @@ -12023,25 +10696,12 @@ snapshots: minimist@1.2.8: {} - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - minizlib@3.0.2: dependencies: minipass: 7.1.2 - mkdirp@1.0.4: {} - mkdirp@3.0.1: {} mlly@1.7.4: @@ -12067,16 +10727,10 @@ snapshots: mri@1.2.0: {} - ms@2.1.1: {} - - ms@2.1.2: {} - ms@2.1.3: {} muggle-string@0.4.1: {} - mustache@4.2.0: {} - mvdan-sh@0.10.1: {} nano-spawn@1.0.2: {} @@ -12131,19 +10785,8 @@ snapshots: node-fetch-native@1.6.6: {} - node-fetch@2.6.7: - dependencies: - whatwg-url: 5.0.0 - - node-fetch@2.6.9: - dependencies: - whatwg-url: 5.0.0 - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.4: {} + node-gyp-build@4.8.4: + optional: true node-html-parser@5.4.2: dependencies: @@ -12152,18 +10795,12 @@ snapshots: node-releases@2.0.19: {} - nopt@8.1.0: - dependencies: - abbrev: 3.0.1 - normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 semver: 7.7.2 validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} - npm-run-path@6.0.0: dependencies: path-key: 4.0.0 @@ -12181,6 +10818,9 @@ snapshots: pkg-types: 2.1.0 tinyexec: 0.3.2 + obuf@1.1.2: + optional: true + ofetch@1.4.1: dependencies: destr: 2.0.5 @@ -12189,10 +10829,6 @@ snapshots: ohash@2.0.11: {} - once@1.3.3: - dependencies: - wrappy: 1.0.2 - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -12215,8 +10851,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - os-paths@4.4.0: {} - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -12225,19 +10859,12 @@ snapshots: dependencies: p-limit: 3.1.0 - package-json-from-dist@1.0.1: {} - package-json-validator@0.10.2: dependencies: yargs: 17.7.2 package-manager-detector@1.3.0: {} - package-manager-manager@0.2.0: - dependencies: - js-yaml: 4.1.0 - shellac: 0.8.0 - pako@2.1.0: {} param-case@3.0.4: @@ -12266,8 +10893,6 @@ snapshots: index-to-position: 1.1.0 type-fest: 4.41.0 - parse-ms@2.1.0: {} - parse-ms@4.0.0: {} pascal-case@3.1.2: @@ -12285,39 +10910,64 @@ snapshots: path-key@4.0.0: {} - path-match@1.2.4: - dependencies: - http-errors: 1.4.0 - path-to-regexp: 1.9.0 - path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-to-regexp@1.9.0: - dependencies: - isarray: 0.0.1 - - path-to-regexp@6.1.0: {} - - path-to-regexp@6.3.0: {} - path-type@4.0.0: {} pathe@0.2.0: {} pathe@2.0.3: {} - pcre-to-regexp@1.1.0: {} - - pend@1.2.0: {} - perfect-debounce@1.0.0: {} - picocolors@1.0.0: {} + pg-cloudflare@1.2.6: + optional: true + + pg-connection-string@2.9.1: {} + + pg-int8@1.0.1: {} + + pg-numeric@1.0.2: + optional: true + + pg-pool@3.10.1(pg@8.16.2): + dependencies: + pg: 8.16.2 + + pg-protocol@1.10.2: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg-types@4.0.2: + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.4 + postgres-bytea: 3.0.0 + postgres-date: 2.1.0 + postgres-interval: 3.0.0 + postgres-range: 1.1.4 + optional: true + + pg@8.16.2: + dependencies: + pg-connection-string: 2.9.1 + pg-pool: 3.10.1(pg@8.16.2) + pg-protocol: 1.10.2 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.2.6 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 picocolors@1.1.1: {} @@ -12391,6 +11041,35 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-array@3.0.4: + optional: true + + postgres-bytea@1.0.0: {} + + postgres-bytea@3.0.0: + dependencies: + obuf: 1.1.2 + optional: true + + postgres-date@1.0.7: {} + + postgres-date@2.1.0: + optional: true + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + postgres-interval@3.0.0: + optional: true + + postgres-range@1.1.4: + optional: true + + postgres@3.4.7: {} + preact@10.26.8: {} prelude-ls@1.2.1: {} @@ -12426,24 +11105,16 @@ snapshots: prettier@3.6.1: {} - pretty-ms@7.0.1: - dependencies: - parse-ms: 2.1.0 - pretty-ms@9.2.0: dependencies: parse-ms: 4.0.0 - printable-characters@1.0.42: {} - prism-react-renderer@2.4.1(react@19.1.0): dependencies: '@types/prismjs': 1.26.5 clsx: 2.1.1 react: 19.1.0 - promisepipe@3.0.0: {} - punycode@2.3.1: {} quansync@0.2.10: {} @@ -12452,13 +11123,6 @@ snapshots: raf-schd@4.0.3: {} - raw-body@2.4.1: - dependencies: - bytes: 3.1.0 - http-errors: 1.7.3 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - rc9@2.1.2: dependencies: defu: 6.1.4 @@ -12600,10 +11264,6 @@ snapshots: type-fest: 4.41.0 unicorn-magic: 0.1.0 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - readdirp@4.1.2: {} refa@0.12.1: @@ -12617,8 +11277,6 @@ snapshots: regexp-tree@0.1.27: {} - reghex@1.0.2: {} - regjsparser@0.12.0: dependencies: jsesc: 3.0.2 @@ -12633,8 +11291,6 @@ snapshots: resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} resolve@1.22.10: @@ -12723,8 +11379,6 @@ snapshots: dependencies: tslib: 2.8.1 - safer-buffer@2.1.2: {} - scheduler@0.26.0: {} scslre@0.3.0: @@ -12745,38 +11399,10 @@ snapshots: set-cookie-parser@2.7.1: {} - setprototypeof@1.1.1: {} - sh-syntax@0.4.2: dependencies: tslib: 2.8.1 - sharp@0.33.5: - dependencies: - color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-libvips-darwin-arm64': 1.0.4 - '@img/sharp-libvips-darwin-x64': 1.0.4 - '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.0.4 - '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.0.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-s390x': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-wasm32': 0.33.5 - '@img/sharp-win32-ia32': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 - sharp@0.34.2: dependencies: color: 4.2.3 @@ -12813,12 +11439,6 @@ snapshots: shell-quote@1.8.3: {} - shellac@0.8.0: - dependencies: - reghex: 1.0.2 - - signal-exit@4.0.2: {} - signal-exit@4.1.0: {} simple-git-hooks@2.13.0: {} @@ -12881,33 +11501,14 @@ snapshots: spdx-license-ids@3.0.21: {} + split2@4.2.0: {} + sprintf-js@1.0.3: {} stable-hash-x@0.1.1: {} stable-hash@0.0.5: {} - stacktracey@2.1.8: - dependencies: - as-table: 1.0.55 - get-source: 2.0.12 - - stat-mode@0.3.0: {} - - statuses@1.5.0: {} - - stoppable@1.1.0: {} - - stream-to-array@2.3.0: - dependencies: - any-promise: 1.3.0 - - stream-to-promise@2.2.0: - dependencies: - any-promise: 1.3.0 - end-of-stream: 1.1.0 - stream-to-array: 2.3.0 - streamsearch@1.1.0: {} string-argv@0.3.2: {} @@ -12920,12 +11521,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - string-width@7.2.0: dependencies: emoji-regex: 10.4.0 @@ -13025,15 +11620,6 @@ snapshots: tapable@2.2.2: {} - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - tar@7.4.3: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -13055,10 +11641,6 @@ snapshots: iobuffer: 6.0.0 pako: 2.1.0 - time-span@4.0.0: - dependencies: - convert-hrtime: 3.0.0 - tiny-inflate@1.0.3: {} tiny-invariant@1.3.3: {} @@ -13081,15 +11663,11 @@ snapshots: dependencies: is-number: 7.0.0 - toidentifier@1.0.0: {} - token-types@6.0.0: dependencies: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 - tr46@0.0.3: {} - tree-kill@1.2.2: {} trie-memoize@1.2.0: {} @@ -13103,33 +11681,8 @@ snapshots: picomatch: 4.0.2 typescript: 5.8.3 - ts-morph@12.0.0: - dependencies: - '@ts-morph/common': 0.11.1 - code-block-writer: 10.1.1 - - ts-node@10.9.1(@types/node@16.18.11)(typescript@4.9.5): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 16.18.11 - acorn: 8.15.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - ts-pattern@5.7.1: {} - ts-toolbelt@6.15.5: {} - tsconfck@3.1.6(typescript@5.8.3): optionalDependencies: typescript: 5.8.3 @@ -13182,8 +11735,6 @@ snapshots: transitivePeerDependencies: - supports-color - typescript@4.9.5: {} - typescript@5.8.2: {} typescript@5.8.3: {} @@ -13195,8 +11746,6 @@ snapshots: uhyphen@0.2.0: {} - uid-promise@1.0.0: {} - uint8array-extras@1.4.0: {} unconfig@7.3.2: @@ -13210,30 +11759,12 @@ snapshots: undici-types@7.8.0: {} - undici@5.28.4: - dependencies: - '@fastify/busboy': 2.1.1 - - undici@5.29.0: - dependencies: - '@fastify/busboy': 2.1.1 - - unenv@2.0.0-rc.17: - dependencies: - defu: 6.1.4 - exsolve: 1.0.5 - ohash: 2.0.11 - pathe: 2.0.3 - ufo: 1.6.1 - unicorn-magic@0.1.0: {} unicorn-magic@0.3.0: {} universalify@2.0.1: {} - unpipe@1.0.0: {} - unplugin-dts@1.0.0-beta.2(@microsoft/api-extractor@7.52.8(@types/node@24.0.4))(esbuild@0.25.4)(rolldown@1.0.0-beta.11-commit.f051675)(rollup@4.41.1)(typescript@5.8.3)(vite@7.0.0(@types/node@24.0.4)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.41.0)(tsx@4.20.3)(yaml@2.8.0)): dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.41.1) @@ -13327,8 +11858,6 @@ snapshots: uuid@9.0.1: {} - v8-compile-cache-lib@3.0.1: {} - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -13345,28 +11874,6 @@ snapshots: - '@types/react' - '@types/react-dom' - vercel@42.3.0(rollup@4.41.1): - dependencies: - '@vercel/build-utils': 10.6.0 - '@vercel/fun': 1.1.6 - '@vercel/go': 3.2.1 - '@vercel/hydrogen': 1.2.2 - '@vercel/next': 4.8.0(rollup@4.41.1) - '@vercel/node': 5.2.1(rollup@4.41.1) - '@vercel/python': 4.7.2 - '@vercel/redwood': 2.3.3(rollup@4.41.1) - '@vercel/remix-builder': 5.4.9(rollup@4.41.1) - '@vercel/ruby': 2.2.0 - '@vercel/static-build': 2.7.9 - chokidar: 4.0.0 - jose: 5.9.6 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - encoding - - rollup - - supports-color - vite-bundle-analyzer@0.23.0: {} vite-code-inspector-plugin@0.20.12: @@ -13446,10 +11953,6 @@ snapshots: vscode-uri@3.1.0: {} - web-vitals@0.2.4: {} - - webidl-conversions@3.0.1: {} - webpack-code-inspector-plugin@0.20.12: dependencies: code-inspector-core: 0.20.12 @@ -13458,11 +11961,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -13471,50 +11969,12 @@ snapshots: wordwrap@1.0.0: {} - workerd@1.20250408.0: - optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250408.0 - '@cloudflare/workerd-darwin-arm64': 1.20250408.0 - '@cloudflare/workerd-linux-64': 1.20250408.0 - '@cloudflare/workerd-linux-arm64': 1.20250408.0 - '@cloudflare/workerd-windows-64': 1.20250408.0 - - workerd@1.20250525.0: - optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250525.0 - '@cloudflare/workerd-darwin-arm64': 1.20250525.0 - '@cloudflare/workerd-linux-64': 1.20250525.0 - '@cloudflare/workerd-linux-arm64': 1.20250525.0 - '@cloudflare/workerd-windows-64': 1.20250525.0 - - wrangler@4.19.1: - dependencies: - '@cloudflare/kv-asset-handler': 0.4.0 - '@cloudflare/unenv-preset': 2.3.2(unenv@2.0.0-rc.17)(workerd@1.20250525.0) - blake3-wasm: 2.1.5 - esbuild: 0.25.4 - miniflare: 4.20250525.1 - path-to-regexp: 6.3.0 - unenv: 2.0.0-rc.17 - workerd: 1.20250525.0 - optionalDependencies: - fsevents: 2.3.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1 @@ -13523,15 +11983,12 @@ snapshots: wrappy@1.0.2: {} - ws@8.18.0: {} + ws@8.18.2(bufferutil@4.0.9): + optionalDependencies: + bufferutil: 4.0.9 + optional: true - xdg-app-paths@5.1.0: - dependencies: - xdg-portable: 7.3.0 - - xdg-portable@7.3.0: - dependencies: - os-paths: 4.4.0 + xtend@4.0.2: {} y18n@5.0.8: {} @@ -13557,38 +12014,14 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl-clone@1.0.4: - dependencies: - events-intercept: 2.0.0 - - yauzl-promise@2.1.3: - dependencies: - yauzl: 2.10.0 - yauzl-clone: 1.0.4 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yn@3.1.1: {} - yocto-queue@0.1.0: {} yoctocolors@2.1.1: {} - youch@3.3.4: - dependencies: - cookie: 0.7.2 - mustache: 4.2.0 - stacktracey: 2.1.8 - zod-validation-error@3.4.1(zod@3.25.67): dependencies: zod: 3.25.67 - zod@3.22.3: {} - zod@3.25.67: {} zustand@5.0.5(@types/react@19.1.8)(immer@10.1.1)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)): diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e9b0dad6..07168f46 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,9 @@ packages: - - 'apps/*' - - 'packages/*' + - apps/**/* + - packages/* + +catalog: + zod: 3.25.67 + '@t3-oss/env-core': 0.13.8 + dotenv-expand: 12.0.2 + typescript: 5.8.3