From 933ef2512ecc609a678525e1e9ae972e5a7b7777 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Mon, 21 Jul 2025 16:54:29 -1000 Subject: [PATCH 01/30] feat(#354 | create-hypergraph-app): move hypergraph-app-template into hypergraph monorepo --- apps/create-hypergraph-app/LICENSE | 21 + apps/create-hypergraph-app/README.md | 42 + apps/create-hypergraph-app/package.json | 36 + .../template-vite-react/.gitignore | 24 + .../template-vite-react/.prettierignore | 3 + .../template-vite-react/.prettierrc | 4 + .../template-vite-react/README.md | 3 + .../template-vite-react/components.json | 21 + .../template-vite-react/eslint.config.mjs | 28 + .../template-vite-react/index.html | 13 + .../template-vite-react/package.json | 50 + .../template-vite-react/public/hypergraph.svg | 1 + .../src/components/logout.tsx | 21 + .../src/components/navbar.tsx | 96 + .../src/components/spaces-menu.tsx | 73 + .../src/components/ui/button.tsx | 50 + .../src/components/ui/navigation-menu.tsx | 143 ++ .../src/components/ui/tooltip.tsx | 28 + .../template-vite-react/src/index.css | 120 ++ .../template-vite-react/src/lib/utils.ts | 6 + .../template-vite-react/src/routeTree.gen.ts | 168 ++ .../template-vite-react/src/routes/__root.tsx | 39 + .../src/routes/authenticate-success.tsx | 27 + .../src/routes/explore-public-knowledge.tsx | 74 + .../template-vite-react/src/routes/index.tsx | 131 ++ .../template-vite-react/src/routes/login.tsx | 36 + .../src/routes/private-space/$space-id.tsx | 196 ++ .../src/routes/public-space/$space-id.tsx | 122 ++ .../template-vite-react/src/schema.ts | 10 + .../template-vite-react/src/vite-env.d.ts | 1 + .../template-vite-react/tsconfig.app.json | 52 + .../template-vite-react/tsconfig.json | 17 + .../template-vite-react/tsconfig.node.json | 24 + .../template-vite-react/vite.config.ts | 22 + biome.jsonc | 1 + pnpm-lock.yaml | 1801 +++++++++++++---- 36 files changed, 3129 insertions(+), 375 deletions(-) create mode 100644 apps/create-hypergraph-app/LICENSE create mode 100644 apps/create-hypergraph-app/README.md create mode 100644 apps/create-hypergraph-app/package.json create mode 100644 apps/create-hypergraph-app/template-vite-react/.gitignore create mode 100644 apps/create-hypergraph-app/template-vite-react/.prettierignore create mode 100644 apps/create-hypergraph-app/template-vite-react/.prettierrc create mode 100644 apps/create-hypergraph-app/template-vite-react/README.md create mode 100644 apps/create-hypergraph-app/template-vite-react/components.json create mode 100644 apps/create-hypergraph-app/template-vite-react/eslint.config.mjs create mode 100644 apps/create-hypergraph-app/template-vite-react/index.html create mode 100644 apps/create-hypergraph-app/template-vite-react/package.json create mode 100644 apps/create-hypergraph-app/template-vite-react/public/hypergraph.svg create mode 100644 apps/create-hypergraph-app/template-vite-react/src/components/logout.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/components/navbar.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/components/spaces-menu.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/components/ui/button.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/components/ui/navigation-menu.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/components/ui/tooltip.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/index.css create mode 100644 apps/create-hypergraph-app/template-vite-react/src/lib/utils.ts create mode 100644 apps/create-hypergraph-app/template-vite-react/src/routeTree.gen.ts create mode 100644 apps/create-hypergraph-app/template-vite-react/src/routes/__root.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/routes/authenticate-success.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/routes/explore-public-knowledge.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/routes/index.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/routes/login.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/routes/private-space/$space-id.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/routes/public-space/$space-id.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/schema.ts create mode 100644 apps/create-hypergraph-app/template-vite-react/src/vite-env.d.ts create mode 100644 apps/create-hypergraph-app/template-vite-react/tsconfig.app.json create mode 100644 apps/create-hypergraph-app/template-vite-react/tsconfig.json create mode 100644 apps/create-hypergraph-app/template-vite-react/tsconfig.node.json create mode 100644 apps/create-hypergraph-app/template-vite-react/vite.config.ts diff --git a/apps/create-hypergraph-app/LICENSE b/apps/create-hypergraph-app/LICENSE new file mode 100644 index 00000000..3ddb85bf --- /dev/null +++ b/apps/create-hypergraph-app/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024-present Geo Browser, PB LLC and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/apps/create-hypergraph-app/README.md b/apps/create-hypergraph-app/README.md new file mode 100644 index 00000000..49bb1df3 --- /dev/null +++ b/apps/create-hypergraph-app/README.md @@ -0,0 +1,42 @@ +# @graphprotocol/create-hypergraph-app + +CLI toolchain to scaffold a [Hypergraph-enabled](https://github.com/graphprotocol/hypergraph) application with a given template. + +Inspiration takes from the `vite`, `nextjs`, and `effect` create app command tools. + +## Scaffolding a hypergraph app + +With NPM: + +```bash +npm create hypergraph-app@latest +``` + +With Yarn: + +```bash +yarn create hypergraph-app +``` + +With PNPM: + +```bash +pnpm create hypergraph-app@latest +``` + +With Bun: + +```bash +bun create hypergraph-app +``` + +Then follow the given prompts. + +### Currently Supported Templates + +- vite + react + +## References + +- [create vite app](https://github.com/vitejs/vite/tree/main/packages/create-vite) +- [create effect app](https://effect.website/docs/getting-started/create-effect-app/) \ No newline at end of file diff --git a/apps/create-hypergraph-app/package.json b/apps/create-hypergraph-app/package.json new file mode 100644 index 00000000..14204272 --- /dev/null +++ b/apps/create-hypergraph-app/package.json @@ -0,0 +1,36 @@ +{ + "name": "@graphprotocol/create-hypergraph-app", + "version": "0.0.1", + "description": "CLI toolchain to scaffold a hypergraph-enabled application with a given template.", + "type": "module", + "bin": { + "create-hypergraph-app": "dist/bin.js", + "cha": "dist/bin.js" + }, + "files": ["dist", "template-*"], + "repository": { + "type": "git", + "url": "git+https://github.com/graphprotocol/hypergraph.git", + "directory": "apps/create-hypergraph-app" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": false + }, + "scripts": { + "test": "vitest run", + "dev": "pnpx tsx ./src/bin.ts", + "build": "tsup", + "check": "tsc --noEmit" + }, + "keywords": ["The Graph", "Web3", "Knowledge Graph", "Hypergraph", "TypeSyncs"], + "license": "MIT", + "engines": { + "node": ">=20" + }, + "bugs": { + "url": "https://github.com/graphprotocol/hypergraph/issues" + }, + "homepage": "https://github.com/graphprotocol/hypergraph/tree/main/apps/create-hypergraph-app#readme" +} diff --git a/apps/create-hypergraph-app/template-vite-react/.gitignore b/apps/create-hypergraph-app/template-vite-react/.gitignore new file mode 100644 index 00000000..54f07af5 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/.prettierignore b/apps/create-hypergraph-app/template-vite-react/.prettierignore new file mode 100644 index 00000000..3e98b250 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/.prettierignore @@ -0,0 +1,3 @@ +# Ignore artifacts: +build +dist \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/.prettierrc b/apps/create-hypergraph-app/template-vite-react/.prettierrc new file mode 100644 index 00000000..f65aabcb --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "printWidth": 120 +} \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/README.md b/apps/create-hypergraph-app/template-vite-react/README.md new file mode 100644 index 00000000..de323c10 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/README.md @@ -0,0 +1,3 @@ +# Hypergraph + Vite + React + +This template is a minimal setup for a [Hypergraph](https://github.com/graphprotocol/hypergraph) app using Vite and React. \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/components.json b/apps/create-hypergraph-app/template-vite-react/components.json new file mode 100644 index 00000000..62267910 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/index.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/apps/create-hypergraph-app/template-vite-react/eslint.config.mjs b/apps/create-hypergraph-app/template-vite-react/eslint.config.mjs new file mode 100644 index 00000000..fc7617f8 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/eslint.config.mjs @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/index.html b/apps/create-hypergraph-app/template-vite-react/index.html new file mode 100644 index 00000000..c1ffa8ea --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/index.html @@ -0,0 +1,13 @@ + + + + + + Hypergraph App Template | Vite + React + + + +
+ + + diff --git a/apps/create-hypergraph-app/template-vite-react/package.json b/apps/create-hypergraph-app/template-vite-react/package.json new file mode 100644 index 00000000..61cb39ea --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/package.json @@ -0,0 +1,50 @@ +{ + "private": true, + "name": "hypergraph-vite-react-template", + "description": "A template for a Hypergraph app using vite+react", + "version": "v1.0.0", + "type": "module", + "scripts": { + "build": "tsc -b && vite build", + "dev": "vite --force", + "preview": "vite preview", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@graphprotocol/grc-20": "^0.21.6", + "@graphprotocol/hypergraph": "0.0.14", + "@graphprotocol/hypergraph-react": "0.0.14", + "@graphprotocol/typesync": "^0.0.3", + "@radix-ui/react-navigation-menu": "^1.2.13", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tooltip": "^1.2.7", + "@tailwindcss/vite": "^4.1.11", + "@tanstack/react-query": "^5.83.0", + "@tanstack/react-router": "^1.129.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "effect": "^3.17.0", + "lucide-react": "^0.525.0", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "tailwind-merge": "^3.3.1", + "tailwindcss": "^4.1.11", + "vite": "^7.0.5" + }, + "devDependencies": { + "@eslint/js": "^9.31.0", + "@tanstack/router-plugin": "^1.129.2", + "@types/node": "^24.0.15", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@vitejs/plugin-react": "^4.7.0", + "eslint": "^9.31.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^16.3.0", + "prettier": "^3.6.2", + "tw-animate-css": "^1.3.5", + "typescript": "~5.8.3", + "typescript-eslint": "^8.38.0" + } +} diff --git a/apps/create-hypergraph-app/template-vite-react/public/hypergraph.svg b/apps/create-hypergraph-app/template-vite-react/public/hypergraph.svg new file mode 100644 index 00000000..f7378aad --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/public/hypergraph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/logout.tsx b/apps/create-hypergraph-app/template-vite-react/src/components/logout.tsx new file mode 100644 index 00000000..43f453bb --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/components/logout.tsx @@ -0,0 +1,21 @@ +import { useHypergraphApp, useHypergraphAuth } from '@graphprotocol/hypergraph-react'; +import { useRouter } from '@tanstack/react-router'; + +export function Logout() { + const { logout } = useHypergraphApp(); + const { authenticated } = useHypergraphAuth(); + const router = useRouter(); + + const handleLogout = () => { + logout(); + router.navigate({ + to: '/login', + }); + }; + + return ( + + ); +} diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/navbar.tsx b/apps/create-hypergraph-app/template-vite-react/src/components/navbar.tsx new file mode 100644 index 00000000..8dad7ccc --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/components/navbar.tsx @@ -0,0 +1,96 @@ +import { Button } from '@/components/ui/button'; +import { + NavigationMenu, + NavigationMenuContent, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, +} from '@/components/ui/navigation-menu'; +import { TooltipProvider } from '@/components/ui/tooltip'; +import { useHypergraphApp, useHypergraphAuth } from '@graphprotocol/hypergraph-react'; +import { Link, useRouter } from '@tanstack/react-router'; +import { SpacesMenu } from './spaces-menu'; + +export function Navbar() { + const { authenticated } = useHypergraphAuth(); + const { redirectToConnect, logout } = useHypergraphApp(); + const router = useRouter(); + + const handleSignIn = () => { + redirectToConnect({ + storage: localStorage, + connectUrl: 'https://hypergraph-connect.vercel.app/', + successUrl: `${window.location.origin}/authenticate-success`, + appId: '93bb8907-085a-4a0e-83dd-62b0dc98e793', + redirectFn: (url: URL) => { + window.location.href = url.toString(); + }, + }); + }; + + const handleLogout = () => { + logout(); + router.navigate({ + to: '/login', + }); + }; + + return ( + + + + ); +} diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/spaces-menu.tsx b/apps/create-hypergraph-app/template-vite-react/src/components/spaces-menu.tsx new file mode 100644 index 00000000..3ea280f7 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/components/spaces-menu.tsx @@ -0,0 +1,73 @@ +import { NavigationMenuContent, NavigationMenuLink } from '@/components/ui/navigation-menu'; +import { useSpaces } from '@graphprotocol/hypergraph-react'; +import { Link } from '@tanstack/react-router'; + +export function SpacesMenu() { + const { data: publicSpaces, isPending: publicSpacesPending } = useSpaces({ mode: 'public' }); + const { data: privateSpaces, isPending: privateSpacesPending } = useSpaces({ mode: 'private' }); + + const isLoading = publicSpacesPending || privateSpacesPending; + + if (isLoading) { + return ( + + + + ); + } + + return ( + + + + ); +} diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/ui/button.tsx b/apps/create-hypergraph-app/template-vite-react/src/components/ui/button.tsx new file mode 100644 index 00000000..d05e4380 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/components/ui/button.tsx @@ -0,0 +1,50 @@ +import { Slot } from '@radix-ui/react-slot'; +import { type VariantProps, cva } from 'class-variance-authority'; +import type * as React from 'react'; + +import { cn } from '@/lib/utils'; + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + { + variants: { + variant: { + default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90', + destructive: + 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60', + outline: + 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50', + secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50', + link: 'text-primary underline-offset-4 hover:underline', + }, + size: { + default: 'h-9 px-4 py-2 has-[>svg]:px-3', + sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5', + lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', + icon: 'size-9', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +); + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<'button'> & + VariantProps & { + asChild?: boolean; + }) { + const Comp = asChild ? Slot : 'button'; + + return ; +} + +export { Button, buttonVariants }; diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/ui/navigation-menu.tsx b/apps/create-hypergraph-app/template-vite-react/src/components/ui/navigation-menu.tsx new file mode 100644 index 00000000..bfab9ea8 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/components/ui/navigation-menu.tsx @@ -0,0 +1,143 @@ +import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'; +import { cva } from 'class-variance-authority'; +import { ChevronDownIcon } from 'lucide-react'; +import type * as React from 'react'; + +import { cn } from '@/lib/utils'; + +function NavigationMenu({ + className, + children, + viewport = true, + ...props +}: React.ComponentProps & { + viewport?: boolean; +}) { + return ( + + {children} + {viewport && } + + ); +} + +function NavigationMenuList({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function NavigationMenuItem({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +const navigationMenuTriggerStyle = cva( + 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1', +); + +function NavigationMenuTrigger({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + {children}{' '} + + ); +} + +function NavigationMenuContent({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function NavigationMenuViewport({ + className, + ...props +}: React.ComponentProps) { + return ( +
+ +
+ ); +} + +function NavigationMenuLink({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function NavigationMenuIndicator({ + className, + ...props +}: React.ComponentProps) { + return ( + +
+ + ); +} + +export { + NavigationMenu, + NavigationMenuContent, + NavigationMenuIndicator, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, + navigationMenuTriggerStyle, + NavigationMenuViewport, +}; diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/ui/tooltip.tsx b/apps/create-hypergraph-app/template-vite-react/src/components/ui/tooltip.tsx new file mode 100644 index 00000000..6a304fb3 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/components/ui/tooltip.tsx @@ -0,0 +1,28 @@ +import * as TooltipPrimitive from '@radix-ui/react-tooltip'; +import * as React from 'react'; + +import { cn } from '@/lib/utils'; + +const TooltipProvider = TooltipPrimitive.Provider; + +const Tooltip = TooltipPrimitive.Root; + +const TooltipTrigger = TooltipPrimitive.Trigger; + +const TooltipContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)); +TooltipContent.displayName = TooltipPrimitive.Content.displayName; + +export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }; diff --git a/apps/create-hypergraph-app/template-vite-react/src/index.css b/apps/create-hypergraph-app/template-vite-react/src/index.css new file mode 100644 index 00000000..cab93eb5 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/index.css @@ -0,0 +1,120 @@ +@import 'tailwindcss'; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.129 0.042 264.695); + --card: oklch(1 0 0); + --card-foreground: oklch(0.129 0.042 264.695); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.129 0.042 264.695); + --primary: oklch(0.208 0.042 265.755); + --primary-foreground: oklch(0.984 0.003 247.858); + --secondary: oklch(0.968 0.007 247.896); + --secondary-foreground: oklch(0.208 0.042 265.755); + --muted: oklch(0.968 0.007 247.896); + --muted-foreground: oklch(0.554 0.046 257.417); + --accent: oklch(0.968 0.007 247.896); + --accent-foreground: oklch(0.208 0.042 265.755); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.929 0.013 255.508); + --input: oklch(0.929 0.013 255.508); + --ring: oklch(0.704 0.04 256.788); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.984 0.003 247.858); + --sidebar-foreground: oklch(0.129 0.042 264.695); + --sidebar-primary: oklch(0.208 0.042 265.755); + --sidebar-primary-foreground: oklch(0.984 0.003 247.858); + --sidebar-accent: oklch(0.968 0.007 247.896); + --sidebar-accent-foreground: oklch(0.208 0.042 265.755); + --sidebar-border: oklch(0.929 0.013 255.508); + --sidebar-ring: oklch(0.704 0.04 256.788); +} + +.dark { + --background: oklch(0.129 0.042 264.695); + --foreground: oklch(0.984 0.003 247.858); + --card: oklch(0.208 0.042 265.755); + --card-foreground: oklch(0.984 0.003 247.858); + --popover: oklch(0.208 0.042 265.755); + --popover-foreground: oklch(0.984 0.003 247.858); + --primary: oklch(0.929 0.013 255.508); + --primary-foreground: oklch(0.208 0.042 265.755); + --secondary: oklch(0.279 0.041 260.031); + --secondary-foreground: oklch(0.984 0.003 247.858); + --muted: oklch(0.279 0.041 260.031); + --muted-foreground: oklch(0.704 0.04 256.788); + --accent: oklch(0.279 0.041 260.031); + --accent-foreground: oklch(0.984 0.003 247.858); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.551 0.027 264.364); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.208 0.042 265.755); + --sidebar-foreground: oklch(0.984 0.003 247.858); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.984 0.003 247.858); + --sidebar-accent: oklch(0.279 0.041 260.031); + --sidebar-accent-foreground: oklch(0.984 0.003 247.858); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.551 0.027 264.364); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/src/lib/utils.ts b/apps/create-hypergraph-app/template-vite-react/src/lib/utils.ts new file mode 100644 index 00000000..9ad0df42 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from 'clsx'; +import { twMerge } from 'tailwind-merge'; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/apps/create-hypergraph-app/template-vite-react/src/routeTree.gen.ts b/apps/create-hypergraph-app/template-vite-react/src/routeTree.gen.ts new file mode 100644 index 00000000..6ea8f4ff --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/routeTree.gen.ts @@ -0,0 +1,168 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +import { Route as rootRouteImport } from './routes/__root' +import { Route as LoginRouteImport } from './routes/login' +import { Route as ExplorePublicKnowledgeRouteImport } from './routes/explore-public-knowledge' +import { Route as AuthenticateSuccessRouteImport } from './routes/authenticate-success' +import { Route as IndexRouteImport } from './routes/index' +import { Route as PublicSpaceSpaceIdRouteImport } from './routes/public-space/$space-id' +import { Route as PrivateSpaceSpaceIdRouteImport } from './routes/private-space/$space-id' + +const LoginRoute = LoginRouteImport.update({ + id: '/login', + path: '/login', + getParentRoute: () => rootRouteImport, +} as any) +const ExplorePublicKnowledgeRoute = ExplorePublicKnowledgeRouteImport.update({ + id: '/explore-public-knowledge', + path: '/explore-public-knowledge', + getParentRoute: () => rootRouteImport, +} as any) +const AuthenticateSuccessRoute = AuthenticateSuccessRouteImport.update({ + id: '/authenticate-success', + path: '/authenticate-success', + getParentRoute: () => rootRouteImport, +} as any) +const IndexRoute = IndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRouteImport, +} as any) +const PublicSpaceSpaceIdRoute = PublicSpaceSpaceIdRouteImport.update({ + id: '/public-space/$space-id', + path: '/public-space/$space-id', + getParentRoute: () => rootRouteImport, +} as any) +const PrivateSpaceSpaceIdRoute = PrivateSpaceSpaceIdRouteImport.update({ + id: '/private-space/$space-id', + path: '/private-space/$space-id', + getParentRoute: () => rootRouteImport, +} as any) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/authenticate-success': typeof AuthenticateSuccessRoute + '/explore-public-knowledge': typeof ExplorePublicKnowledgeRoute + '/login': typeof LoginRoute + '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute + '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute +} +export interface FileRoutesByTo { + '/': typeof IndexRoute + '/authenticate-success': typeof AuthenticateSuccessRoute + '/explore-public-knowledge': typeof ExplorePublicKnowledgeRoute + '/login': typeof LoginRoute + '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute + '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute +} +export interface FileRoutesById { + __root__: typeof rootRouteImport + '/': typeof IndexRoute + '/authenticate-success': typeof AuthenticateSuccessRoute + '/explore-public-knowledge': typeof ExplorePublicKnowledgeRoute + '/login': typeof LoginRoute + '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute + '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute +} +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/authenticate-success' + | '/explore-public-knowledge' + | '/login' + | '/private-space/$space-id' + | '/public-space/$space-id' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/authenticate-success' + | '/explore-public-knowledge' + | '/login' + | '/private-space/$space-id' + | '/public-space/$space-id' + id: + | '__root__' + | '/' + | '/authenticate-success' + | '/explore-public-knowledge' + | '/login' + | '/private-space/$space-id' + | '/public-space/$space-id' + fileRoutesById: FileRoutesById +} +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthenticateSuccessRoute: typeof AuthenticateSuccessRoute + ExplorePublicKnowledgeRoute: typeof ExplorePublicKnowledgeRoute + LoginRoute: typeof LoginRoute + PrivateSpaceSpaceIdRoute: typeof PrivateSpaceSpaceIdRoute + PublicSpaceSpaceIdRoute: typeof PublicSpaceSpaceIdRoute +} + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/login': { + id: '/login' + path: '/login' + fullPath: '/login' + preLoaderRoute: typeof LoginRouteImport + parentRoute: typeof rootRouteImport + } + '/explore-public-knowledge': { + id: '/explore-public-knowledge' + path: '/explore-public-knowledge' + fullPath: '/explore-public-knowledge' + preLoaderRoute: typeof ExplorePublicKnowledgeRouteImport + parentRoute: typeof rootRouteImport + } + '/authenticate-success': { + id: '/authenticate-success' + path: '/authenticate-success' + fullPath: '/authenticate-success' + preLoaderRoute: typeof AuthenticateSuccessRouteImport + parentRoute: typeof rootRouteImport + } + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + '/public-space/$space-id': { + id: '/public-space/$space-id' + path: '/public-space/$space-id' + fullPath: '/public-space/$space-id' + preLoaderRoute: typeof PublicSpaceSpaceIdRouteImport + parentRoute: typeof rootRouteImport + } + '/private-space/$space-id': { + id: '/private-space/$space-id' + path: '/private-space/$space-id' + fullPath: '/private-space/$space-id' + preLoaderRoute: typeof PrivateSpaceSpaceIdRouteImport + parentRoute: typeof rootRouteImport + } + } +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthenticateSuccessRoute: AuthenticateSuccessRoute, + ExplorePublicKnowledgeRoute: ExplorePublicKnowledgeRoute, + LoginRoute: LoginRoute, + PrivateSpaceSpaceIdRoute: PrivateSpaceSpaceIdRoute, + PublicSpaceSpaceIdRoute: PublicSpaceSpaceIdRoute, +} +export const routeTree = rootRouteImport + ._addFileChildren(rootRouteChildren) + ._addFileTypes() diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/__root.tsx b/apps/create-hypergraph-app/template-vite-react/src/routes/__root.tsx new file mode 100644 index 00000000..5b51fe2e --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/routes/__root.tsx @@ -0,0 +1,39 @@ +import { useHypergraphAuth } from '@graphprotocol/hypergraph-react'; +import { Outlet, createRootRoute, useLayoutEffect, useRouter } from '@tanstack/react-router'; +import { Navbar } from '../components/navbar'; + +const Root = () => { + const { authenticated } = useHypergraphAuth(); + const router = useRouter(); + + useLayoutEffect(() => { + // Don't redirect on login or authenticate-success pages + if ( + router.state.location.href.startsWith('/login') || + router.state.location.href.startsWith('/authenticate-success') || + router.state.location.href.startsWith('/') + ) { + return; + } + + // Only redirect to login if not authenticated and not already on login page + if (!authenticated) { + router.navigate({ + to: '/login', + }); + } + }, [authenticated, router]); + + return ( + <> + +
+ +
+ + ); +}; + +export const Route = createRootRoute({ + component: Root, +}); diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/authenticate-success.tsx b/apps/create-hypergraph-app/template-vite-react/src/routes/authenticate-success.tsx new file mode 100644 index 00000000..b546efec --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/routes/authenticate-success.tsx @@ -0,0 +1,27 @@ +import { useHypergraphApp } from '@graphprotocol/hypergraph-react'; +import { createFileRoute, useNavigate } from '@tanstack/react-router'; +import { useEffect } from 'react'; + +export const Route = createFileRoute('/authenticate-success')({ + component: RouteComponent, + validateSearch: (search: Record): { ciphertext: string; nonce: string } => { + return { + ciphertext: search.ciphertext as string, + nonce: search.nonce as string, + }; + }, +}); + +function RouteComponent() { + const { ciphertext, nonce } = Route.useSearch(); + const { processConnectAuthSuccess } = useHypergraphApp(); + const navigate = useNavigate(); + + useEffect(() => { + processConnectAuthSuccess({ storage: localStorage, ciphertext, nonce }); + console.log('redirecting to /'); + navigate({ to: '/', replace: true }); + }, [ciphertext, nonce, processConnectAuthSuccess, navigate]); + + return
Authenticating …
; +} diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/explore-public-knowledge.tsx b/apps/create-hypergraph-app/template-vite-react/src/routes/explore-public-knowledge.tsx new file mode 100644 index 00000000..86476fb7 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/routes/explore-public-knowledge.tsx @@ -0,0 +1,74 @@ +import { Project } from '@/schema'; +import { useQuery } from '@graphprotocol/hypergraph-react'; +import { createFileRoute } from '@tanstack/react-router'; + +export const Route = createFileRoute('/explore-public-knowledge')({ + component: ExplorePublicKnowledge, +}); + +function ExplorePublicKnowledge() { + const { data: projects, isPending } = useQuery(Project, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 40, + }); + + return ( +
+
+

+ Explore Public Knowledge +

+

+ This page demonstrates how to query public data from a space. No authentication is required. +

+
+ +
+ {projects.map((project) => ( +
+ {/* Gradient overlay */} +
+ + {/* Content */} +
+ {/* Project icon/avatar */} +
+ {project.name.charAt(0).toUpperCase()} +
+ + {/* Project name */} +

+ {project.name} +

+
+ + {/* Decorative corner accent */} +
+
+ ))} +
+ + {/* Empty state */} + {isPending === false && projects.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} +
+ ); +} diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/index.tsx b/apps/create-hypergraph-app/template-vite-react/src/routes/index.tsx new file mode 100644 index 00000000..aeb2f0de --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/routes/index.tsx @@ -0,0 +1,131 @@ +import { Button } from '@/components/ui/button'; +import { useHypergraphApp } from '@graphprotocol/hypergraph-react'; +import { Link, createFileRoute } from '@tanstack/react-router'; + +export const Route = createFileRoute('/')({ + component: Index, +}); + +function Index() { + const { redirectToConnect } = useHypergraphApp(); + + const handleSignIn = () => { + redirectToConnect({ + storage: localStorage, + connectUrl: 'https://hypergraph-connect.vercel.app/', + successUrl: `${window.location.origin}/authenticate-success`, + appId: '93bb8907-085a-4a0e-83dd-62b0dc98e793', + redirectFn: (url: URL) => { + window.location.href = url.toString(); + }, + }); + }; + + return ( +
+
+ Hypergraph Logo +

+ Welcome to Hypergraph +

+

Your web3 app template powered by Hypergraph

+
+ +
+ {/* Section 1: Explore existing public knowledge */} +
+
+
+ + + +
+

Explore Public Knowledge

+

+ Discover and explore the vast network of knowledge already available in the public Knowledge Graph. +

+ + + +
+
+ + {/* Section 2: Sign in with Geo Connect */} +
+
+
+ + + +
+

Manage Your Data

+

+ Sign in with Geo Connect to manage your private data and publish it to the public Knowledge Graph. +

+ +
+
+ + {/* Section 3: Explore the docs */} +
+
+
+ + + +
+

Explore the Docs

+

+ Learn how to build with Hypergraph and discover all the features available in our comprehensive + documentation. +

+ + + +
+
+
+
+ ); +} diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/login.tsx b/apps/create-hypergraph-app/template-vite-react/src/routes/login.tsx new file mode 100644 index 00000000..fad0d7cd --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/routes/login.tsx @@ -0,0 +1,36 @@ +import { useHypergraphApp } from '@graphprotocol/hypergraph-react'; +import { createFileRoute } from '@tanstack/react-router'; + +function Login() { + const { redirectToConnect } = useHypergraphApp(); + return ( +
+
+

Sign in to access your spaces and start building.

+ +
+
+ ); +} + +export const Route = createFileRoute('/login')({ + component: Login, +}); diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/private-space/$space-id.tsx b/apps/create-hypergraph-app/template-vite-react/src/routes/private-space/$space-id.tsx new file mode 100644 index 00000000..764c62e3 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/routes/private-space/$space-id.tsx @@ -0,0 +1,196 @@ +import { Button } from '@/components/ui/button'; +import { Address } from '@/schema'; +import { + HypergraphSpaceProvider, + preparePublish, + publishOps, + useCreateEntity, + useHypergraphApp, + useQuery, + useSpace, + useSpaces, +} from '@graphprotocol/hypergraph-react'; +import { createFileRoute } from '@tanstack/react-router'; +import { useState } from 'react'; + +export const Route = createFileRoute('/private-space/$space-id')({ + component: RouteComponent, +}); + +function RouteComponent() { + const { 'space-id': spaceId } = Route.useParams(); + + return ( + + + + ); +} + +function PrivateSpace() { + const { name, ready } = useSpace({ mode: 'private' }); + const { data: addresses } = useQuery(Address, { mode: 'private' }); + const { data: publicSpaces } = useSpaces({ mode: 'public' }); + const [selectedSpace, setSelectedSpace] = useState(''); + const createAddress = useCreateEntity(Address); + const [addressName, setAddressName] = useState(''); + const { getSmartSessionClient } = useHypergraphApp(); + + if (!ready) { + return ( +
+
+
+

Loading space...

+
+
+ ); + } + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + createAddress({ name: addressName, description: 'Beautiful address' }); + setAddressName(''); + }; + + const publishToPublicSpace = async (address: Address) => { + if (!selectedSpace) { + alert('No space selected'); + return; + } + try { + const { ops } = await preparePublish({ entity: address, publicSpace: selectedSpace }); + const smartSessionClient = await getSmartSessionClient(); + if (!smartSessionClient) { + throw new Error('Missing smartSessionClient'); + } + const publishResult = await publishOps({ + ops, + space: selectedSpace, + name: 'Publish Address', + walletClient: smartSessionClient, + }); + console.log(publishResult, ops); + alert('Address published to public space'); + } catch (error) { + console.error(error); + alert('Error publishing address to public space'); + } + }; + + return ( +
+
+ {/* Header */} +
+

{name}

+

Manage your private addresses and publish them to public spaces

+
+ +
+ {/* Create Address Form */} +
+
+

Create New Address

+
+
+ + setAddressName(e.target.value)} + placeholder="Enter address name..." + className="w-full px-3 py-2 border border-input bg-background rounded-md text-sm transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent" + required + /> +
+ +
+
+
+ + {/* Addresses List */} +
+
+

+ Your Addresses ({addresses?.length || 0}) +

+ + {addresses && addresses.length > 0 ? ( +
+ {addresses.map((address) => ( +
+
+

{address.name}

+ + ID: {address.id.slice(0, 8)}... + +
+ +
+
+ + +
+ + +
+
+ ))} +
+ ) : ( +
+
+ + + +
+

No addresses created yet

+

Create your first address using the form

+
+ )} +
+
+
+
+
+ ); +} +s; diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/public-space/$space-id.tsx b/apps/create-hypergraph-app/template-vite-react/src/routes/public-space/$space-id.tsx new file mode 100644 index 00000000..2a83a651 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/routes/public-space/$space-id.tsx @@ -0,0 +1,122 @@ +import { Address } from '@/schema'; +import { HypergraphSpaceProvider, useQuery, useSpace } from '@graphprotocol/hypergraph-react'; +import { createFileRoute } from '@tanstack/react-router'; + +export const Route = createFileRoute('/public-space/$space-id')({ + component: RouteComponent, +}); + +function RouteComponent() { + const { 'space-id': spaceId } = Route.useParams(); + + return ( + + + + ); +} + +function PublicSpace() { + const { ready, name } = useSpace({ mode: 'public' }); + const { data: addresses } = useQuery(Address, { mode: 'public' }); + + if (!ready) { + return ( +
+
+
+

Loading space...

+
+
+ ); + } + + return ( +
+ {/* Header */} +
+
+
+

{name}

+

Public Space

+
+
+
+ + {/* Main Content */} +
+
+
+

Addresses

+

+ {addresses ? `${addresses.length} addresses found` : 'Loading addresses...'} +

+
+ +
+ {!addresses ? ( +
+ {[...Array(3)].map((_, i) => ( +
+
+
+ ))} +
+ ) : addresses.length > 0 ? ( +
+ {addresses.map((address) => ( +
+
+
+
+ + {address.name.charAt(0).toUpperCase()} + +
+
+

+ {address.name} +

+

Address ID: {address.id}

+
+
+
+ + + +
+
+
+ ))} +
+ ) : ( +
+
+ + + + +
+

No addresses found

+

This space doesn't have any addresses yet.

+
+ )} +
+
+
+
+ ); +} diff --git a/apps/create-hypergraph-app/template-vite-react/src/schema.ts b/apps/create-hypergraph-app/template-vite-react/src/schema.ts new file mode 100644 index 00000000..ed50614a --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/schema.ts @@ -0,0 +1,10 @@ +import { Entity, Type } from '@graphprotocol/hypergraph'; + +export class Address extends Entity.Class
('Address')({ + name: Type.Text, + description: Type.Text, +}) {} + +export class Project extends Entity.Class('Project')({ + name: Type.Text, +}) {} diff --git a/apps/create-hypergraph-app/template-vite-react/src/vite-env.d.ts b/apps/create-hypergraph-app/template-vite-react/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/create-hypergraph-app/template-vite-react/tsconfig.app.json b/apps/create-hypergraph-app/template-vite-react/tsconfig.app.json new file mode 100644 index 00000000..ce6a27b7 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/tsconfig.app.json @@ -0,0 +1,52 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ESNext", + "useDefineForClassFields": true, + "lib": [ + "ESNext", + "DOM", + "DOM.Iterable" + ], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "strictNullChecks": true, + "exactOptionalPropertyTypes": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + "composite": true, + "downlevelIteration": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "declaration": true, + "sourceMap": true, + "declarationMap": true, + "noImplicitReturns": false, + "noEmitOnError": false, + "noErrorTruncation": false, + "allowJs": false, + "checkJs": false, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "noImplicitThis": true, + "noUncheckedIndexedAccess": false, + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ] + } + }, + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/tsconfig.json b/apps/create-hypergraph-app/template-vite-react/tsconfig.json new file mode 100644 index 00000000..a2313e81 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "files": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.node.json" + } + ] +} \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/tsconfig.node.json b/apps/create-hypergraph-app/template-vite-react/tsconfig.node.json new file mode 100644 index 00000000..3d47fb03 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ESNext", + "lib": [ + "ESNext" + ], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": [ + "vite.config.ts" + ] +} \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/vite.config.ts b/apps/create-hypergraph-app/template-vite-react/vite.config.ts new file mode 100644 index 00000000..8cc5545b --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/vite.config.ts @@ -0,0 +1,22 @@ +import path from 'node:path'; +import tailwindcss from '@tailwindcss/vite'; +import { tanstackRouter } from '@tanstack/router-plugin/vite'; +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + tanstackRouter({ + target: 'react', + autoCodeSplitting: true, + }), + react(), + tailwindcss(), + ], + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, +}); diff --git a/biome.jsonc b/biome.jsonc index f1b0e06c..74d8c711 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -16,6 +16,7 @@ "tsconfig.*.json", "**/variant-schema.ts", "apps/typesync/client/src/generated", + "apps/create-hypergraph-app/template-*/**", "*.css" ] }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbf7cfd7..9dd4342a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,7 +37,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) apps/connect: dependencies: @@ -64,7 +64,7 @@ importers: version: 1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/react-router-devtools': specifier: ^1.122.0 - version: 1.122.0(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.127.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) + version: 1.122.0(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.2)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) '@xstate/store': specifier: ^3.5.1 version: 3.5.1(react@19.1.0)(solid-js@1.9.5) @@ -136,6 +136,112 @@ importers: specifier: ^4.3.0 version: 4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + apps/create-hypergraph-app: + publishDirectory: dist + + apps/create-hypergraph-app/template-vite-react: + dependencies: + '@graphprotocol/grc-20': + specifier: ^0.21.6 + version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/hypergraph': + specifier: 0.0.14 + version: 0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/hypergraph-react': + specifier: 0.0.14 + version: 0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/typesync': + specifier: ^0.0.3 + version: 0.0.3(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@radix-ui/react-navigation-menu': + specifier: ^1.2.13 + version: 1.2.13(@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) + '@radix-ui/react-slot': + specifier: ^1.2.3 + version: 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-tooltip': + specifier: ^1.2.7 + version: 1.2.7(@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) + '@tailwindcss/vite': + specifier: ^4.1.11 + version: 4.1.11(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + '@tanstack/react-query': + specifier: ^5.83.0 + version: 5.83.0(react@19.1.0) + '@tanstack/react-router': + specifier: ^1.129.2 + version: 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + effect: + specifier: ^3.17.0 + version: 3.17.0 + lucide-react: + specifier: ^0.525.0 + version: 0.525.0(react@19.1.0) + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 + tailwindcss: + specifier: ^4.1.11 + version: 4.1.11 + vite: + specifier: ^7.0.5 + version: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + devDependencies: + '@eslint/js': + specifier: ^9.31.0 + version: 9.31.0 + '@tanstack/router-plugin': + specifier: ^1.129.2 + version: 1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + '@types/node': + specifier: ^24.0.15 + version: 24.0.15 + '@types/react': + specifier: ^19.1.8 + version: 19.1.8 + '@types/react-dom': + specifier: ^19.1.6 + version: 19.1.6(@types/react@19.1.8) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + eslint: + specifier: ^9.31.0 + version: 9.31.0(jiti@2.4.2) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.31.0(jiti@2.4.2)) + eslint-plugin-react-refresh: + specifier: ^0.4.20 + version: 0.4.20(eslint@9.31.0(jiti@2.4.2)) + globals: + specifier: ^16.3.0 + version: 16.3.0 + prettier: + specifier: ^3.6.2 + version: 3.6.2 + tw-animate-css: + specifier: ^1.3.5 + version: 1.3.5 + typescript: + specifier: ~5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.38.0 + version: 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + apps/events: dependencies: '@graphprotocol/grc-20': @@ -167,7 +273,7 @@ importers: version: 1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/react-router-devtools': specifier: ^1.122.0 - version: 1.122.0(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.127.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) + version: 1.122.0(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.2)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) '@xstate/store': specifier: ^3.5.1 version: 3.5.1(react@19.1.0)(solid-js@1.9.5) @@ -392,7 +498,7 @@ importers: version: 1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/react-router-devtools': specifier: ^1.127.3 - version: 1.127.3(@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.127.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) + version: 1.127.3(@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.2)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) better-sqlite3: specifier: ^12.2.0 version: 12.2.0 @@ -500,6 +606,9 @@ importers: '@graphprotocol/grc-20': specifier: ^0.21.6 version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/typesync': + specifier: workspace:* + version: link:../../../packages/typesync/publish '@graphql-typed-document-node/core': specifier: ^3.2.0 version: 3.2.0(graphql@16.11.0) @@ -517,7 +626,7 @@ importers: version: 1.1.12(@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) '@tailwindcss/vite': specifier: ^4.1.11 - version: 4.1.11(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.11(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/react-form': specifier: ^1.14.1 version: 1.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -528,11 +637,11 @@ importers: specifier: ^5.83.0 version: 5.83.0(@tanstack/react-query@5.83.0(react@19.1.0))(react@19.1.0) '@tanstack/react-router': - specifier: ^1.127.1 - version: 1.127.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.128.0 + version: 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/react-router-devtools': - specifier: ^1.127.1 - version: 1.127.1(@tanstack/react-router@1.127.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.127.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) + specifier: ^1.128.0 + version: 1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.2)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) better-sqlite3: specifier: ^12.2.0 version: 12.2.0 @@ -540,8 +649,8 @@ importers: specifier: ^4.1.0 version: 4.1.0 effect: - specifier: ^3.16.12 - version: 3.16.12 + specifier: ^3.16.16 + version: 3.17.0 graphql: specifier: ^16.11.0 version: 16.11.0 @@ -552,8 +661,8 @@ importers: specifier: ^2.12.5 version: 2.12.5(@types/react@19.1.8)(react@19.1.0) open: - specifier: ^10.1.2 - version: 10.1.2 + specifier: ^10.2.0 + version: 10.2.0 react: specifier: ^19.1.0 version: 19.1.0 @@ -561,8 +670,8 @@ importers: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) shiki: - specifier: ^3.7.0 - version: 3.7.0 + specifier: ^3.8.0 + version: 3.8.0 tailwindcss: specifier: ^4.1.11 version: 4.1.11 @@ -571,10 +680,10 @@ importers: dependencies: '@docusaurus/core': specifier: 3.7.0 - version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/preset-classic': specifier: 3.7.0 - version: 3.7.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.8.3)(utf-8-validate@5.0.10) + version: 3.7.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.8.3)(utf-8-validate@5.0.10) '@mdx-js/react': specifier: ^3.0.0 version: 3.1.0(@types/react@19.1.8)(react@19.1.0) @@ -707,7 +816,7 @@ importers: version: 19.1.3 '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.4.1(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@xstate/store': specifier: ^3.5.1 version: 3.5.1(react@19.1.0)(solid-js@1.9.5) @@ -2634,16 +2743,12 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.20.1': - resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.2.3': - resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==} + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.14.0': - resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + '@eslint/config-helpers@0.3.0': + resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.15.1': @@ -2654,8 +2759,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.29.0': - resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==} + '@eslint/js@9.31.0': + resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -2808,6 +2913,18 @@ packages: '@graphprotocol/grc-20@0.21.6': resolution: {integrity: sha512-xN8kejQfRdeC5LsantOD9aajwR+/JHnsK5IUEE7rMJbbHGeRTzAhWGike8k1+nIPRKooOyrocgly24KXxChcgw==} + '@graphprotocol/hypergraph-react@0.0.14': + resolution: {integrity: sha512-Hr7x45xFO+MFAeuaWs+1+EgX0JNxftclpP9ClfisuQs01bgHwJpy9jYZ+oeJ02ODSaDd82st12XQ/1kfEsn9aw==} + peerDependencies: + '@graphprotocol/hypergraph': '*' + react: ^18.0.0 || ^19.0.0 + + '@graphprotocol/hypergraph@0.0.14': + resolution: {integrity: sha512-kr1Vhl7G/uYSamnZJzTtOuHaPklUtcWyTl6oMNbd2NWaAjBNNqD3A2hvelQJ8XAQHpbjbh2xgRjLzZ6M422vyg==} + + '@graphprotocol/typesync@0.0.3': + resolution: {integrity: sha512-8+agAOyyftY7itiQgXHkcKZy+n98xvzpcf6AfygUb4FY7GSpmRl8BX/gTn2Wu8gIigr7AZyL6NFnSpBrSr7OPQ==} + '@graphql-codegen/add@5.0.3': resolution: {integrity: sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==} peerDependencies: @@ -3765,6 +3882,19 @@ packages: '@radix-ui/primitive@1.1.2': resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-avatar@1.1.9': resolution: {integrity: sha512-10tQokfvZdFvnvDkcOJPjm2pWiP8A0R4T83MoD7tb15bC/k2GU7B1YBuzJi8lNQ8V1QqhP8ocNqp27ByZaNagQ==} peerDependencies: @@ -3818,6 +3948,19 @@ packages: '@types/react': optional: true + '@radix-ui/react-dismissable-layer@1.1.10': + resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-icons@1.3.2': resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} peerDependencies: @@ -3832,6 +3975,45 @@ packages: '@types/react': optional: true + '@radix-ui/react-navigation-menu@1.2.13': + resolution: {integrity: sha512-WG8wWfDiJlSF5hELjwfjSGOXcBR/ZMhBFCGYe8vERpC39CQYZeq1PQ2kaYHdye3V95d06H89KGMsVCIE4LWo3g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.7': + resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-presence@1.1.4': resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} peerDependencies: @@ -3915,6 +4097,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-tooltip@1.2.7': + resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: @@ -3942,6 +4137,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-is-hydrated@0.1.0': resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} peerDependencies: @@ -3960,6 +4164,49 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + '@react-aria/focus@3.19.1': resolution: {integrity: sha512-bix9Bu1Ue7RPcYmjwcjhB14BMu2qzfJ3tMQLqDc9pweJA66nOw8DThy3IfVr8Z7j2PHktOLf9kcbiZpydKHqzg==} peerDependencies: @@ -4071,6 +4318,9 @@ packages: '@rolldown/pluginutils@1.0.0-beta.19': resolution: {integrity: sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==} + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@rollup/plugin-inject@5.0.5': resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} @@ -4316,39 +4566,21 @@ packages: '@serenity-kit/noble-sodium@0.2.1': resolution: {integrity: sha512-023EjSl/ZMl8yNmnzeeWJh/V44QyBC82I8xuHltITeWdcyrQHbGnmMZRZOm/uTRinhgqoMzRBNQqbrfyuI5idg==} - '@shikijs/core@3.7.0': - resolution: {integrity: sha512-yilc0S9HvTPyahHpcum8eonYrQtmGTU0lbtwxhA6jHv4Bm1cAdlPFRCJX4AHebkCm75aKTjjRAW+DezqD1b/cg==} - '@shikijs/core@3.8.0': resolution: {integrity: sha512-gWt8NNZFurL6FMESO4lEsmspDh0H1fyUibhx1NnEH/S3kOXgYiWa6ZFqy+dcjBLhZqCXsepuUaL1QFXk6PrpsQ==} - '@shikijs/engine-javascript@3.7.0': - resolution: {integrity: sha512-0t17s03Cbv+ZcUvv+y33GtX75WBLQELgNdVghnsdhTgU3hVcWcMsoP6Lb0nDTl95ZJfbP1mVMO0p3byVh3uuzA==} - '@shikijs/engine-javascript@3.8.0': resolution: {integrity: sha512-IBULFFpQ1N5Cg/C7jPCGnjIKz72CcRtD0BIbNhSuXPUOxLG0bF1URsP/uLfxQFQ9ORfunCQwL7UuSX1RSRBwUQ==} - '@shikijs/engine-oniguruma@3.7.0': - resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==} - '@shikijs/engine-oniguruma@3.8.0': resolution: {integrity: sha512-Tx7kR0oFzqa+rY7t80LjN8ZVtHO3a4+33EUnBVx2qYP3fGxoI9H0bvnln5ySelz9SIUTsS0/Qn+9dg5zcUMsUw==} - '@shikijs/langs@3.7.0': - resolution: {integrity: sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==} - '@shikijs/langs@3.8.0': resolution: {integrity: sha512-mfGYuUgjQ5GgXinB5spjGlBVhG2crKRpKkfADlp8r9k/XvZhtNXxyOToSnCEnF0QNiZnJjlt5MmU9PmhRdwAbg==} - '@shikijs/themes@3.7.0': - resolution: {integrity: sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==} - '@shikijs/themes@3.8.0': resolution: {integrity: sha512-yaZiLuyO23sXe16JFU76KyUMTZCJi4EMQKIrdQt7okoTzI4yAaJhVXT2Uy4k8yBIEFRiia5dtD7gC1t8m6y3oQ==} - '@shikijs/types@3.7.0': - resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==} - '@shikijs/types@3.8.0': resolution: {integrity: sha512-I/b/aNg0rP+kznVDo7s3UK8jMcqEGTtoPDdQ+JlQ2bcJIyu/e2iRvl42GLIDMK03/W1YOHOuhlhQ7aM+XbKUeg==} @@ -4958,19 +5190,19 @@ packages: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router-devtools@1.127.1': - resolution: {integrity: sha512-vKIO9ccqPNXqIU1mfZ4FRGNSeJAjvCqi9ZDxQkOb88euMkejzmN+4VTGFRQ51LwCOZaIgdy1l4JPaxH2tgq+vQ==} + '@tanstack/react-router-devtools@1.127.3': + resolution: {integrity: sha512-MS8+ArGAoRpFaVWpXnQxNpq2bU5e2WGwV/3Gskh9YB09gqX3t6knp9im4kJ0kam16+A8Vohq1yOpCliyHzQawA==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.127.1 + '@tanstack/react-router': ^1.127.3 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router-devtools@1.127.3': - resolution: {integrity: sha512-MS8+ArGAoRpFaVWpXnQxNpq2bU5e2WGwV/3Gskh9YB09gqX3t6knp9im4kJ0kam16+A8Vohq1yOpCliyHzQawA==} + '@tanstack/react-router-devtools@1.129.2': + resolution: {integrity: sha512-8ipEnUv5lWcZYQ5ia0L2wOGqt1CJpfU8iSN9xaX7z93U9cRQg0G1IOf0iYkHpjfUe8WxRY6+5siST+qlKbdtJA==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.127.3 + '@tanstack/react-router': ^1.129.2 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' @@ -4981,15 +5213,15 @@ packages: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.127.1': - resolution: {integrity: sha512-6Ofe9VxvmuGmaJ1qUBSOsCimsPHlq4nx75EC8JhIwnkc95AQaFCZce7mTp++qECVf6HlkE5El12YwpeTz8wnpQ==} + '@tanstack/react-router@1.127.3': + resolution: {integrity: sha512-QprmWHJrGbEKXJiP7WZ+dilTJRc7nMbsFCUnfAUw8PsOYanhgvBkBwAU05YEo8WTIZ9atCc1R90hyzqbiBFkdA==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.127.3': - resolution: {integrity: sha512-QprmWHJrGbEKXJiP7WZ+dilTJRc7nMbsFCUnfAUw8PsOYanhgvBkBwAU05YEo8WTIZ9atCc1R90hyzqbiBFkdA==} + '@tanstack/react-router@1.129.2': + resolution: {integrity: sha512-ERGkvtb4qlo1ihrKUMJn2RfiC3T7rE/PpRtsATCmC0Gy0NmaO8S1+XvgriYl2bzdqTnBliwwIzqkKB9A2xPqDQ==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -5001,12 +5233,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/react-store@0.7.1': - resolution: {integrity: sha512-qUTEKdId6QPWGiWyKAPf/gkN29scEsz6EUSJ0C3HgLMgaqTAyBsQ2sMCfGVcqb+kkhEXAdjleCgH6LAPD6f2sA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/react-store@0.7.3': resolution: {integrity: sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==} peerDependencies: @@ -5029,14 +5255,14 @@ packages: resolution: {integrity: sha512-3dZYP5cCq3jJYgnRDzKR3w4sYzrXP5sw1st303ye87VV26r31I8UaIuUEs7kiJaxgWBvqHglWCiygBWQODZXVw==} engines: {node: '>=12'} - '@tanstack/router-core@1.127.0': - resolution: {integrity: sha512-hHgbtLOAnN61LFqBrE2bq3mctRLfXvJefBlTFakZJavSoMEniX6bMQ5ZMDwMtpo57Hbyzx2rTD4yZfYu74Eydg==} - engines: {node: '>=12'} - '@tanstack/router-core@1.127.3': resolution: {integrity: sha512-08JlfwsMIDkMyCQsRviMVBn0cVUzlNzkll4pZgf6QRSO1RASBsci5hMojcsdH0d/yXLH0FBJ6fINbj0ctBm63Q==} engines: {node: '>=12'} + '@tanstack/router-core@1.129.2': + resolution: {integrity: sha512-M7OuzxbSkEFa1WWQoLOg7RtJUHzfaURMiRCLbKLEJWJkw1Cuylj7oBbzbawDAJFTHry9UUDZNPP0MSCfcXypPA==} + engines: {node: '>=12'} + '@tanstack/router-devtools-core@1.122.0': resolution: {integrity: sha512-3AWnGAlC6GBrS9ral+CeThwHt690T0RtxMoRpTYdK5aJ5qyegWeQXqIjd6WPWNRjxYSKsDjPY2h77HPoAm7F5Q==} engines: {node: '>=12'} @@ -5049,11 +5275,11 @@ packages: csstype: optional: true - '@tanstack/router-devtools-core@1.127.0': - resolution: {integrity: sha512-K/UFaru0sVonaRoqQFUoNiqDt4AvXLxcRd2+9HjbGSC1xckAUNEEAcVl7jwQfERg89e9IVfHiPOIuDdQFjFBtA==} + '@tanstack/router-devtools-core@1.127.3': + resolution: {integrity: sha512-TaLa0h7efSTmIMckTJ1s4PuvJSRGGv4PBSDQE9QnrtCn3SJAlzjK6VIcGq3C72QKJiVDyDtCcDas4q0YeT8I+A==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.127.0 + '@tanstack/router-core': ^1.127.3 csstype: ^3.0.10 solid-js: '>=1.9.5' tiny-invariant: ^1.3.3 @@ -5061,11 +5287,11 @@ packages: csstype: optional: true - '@tanstack/router-devtools-core@1.127.3': - resolution: {integrity: sha512-TaLa0h7efSTmIMckTJ1s4PuvJSRGGv4PBSDQE9QnrtCn3SJAlzjK6VIcGq3C72QKJiVDyDtCcDas4q0YeT8I+A==} + '@tanstack/router-devtools-core@1.129.2': + resolution: {integrity: sha512-PlGJ5A54P0J8FAe7biiLARN9U6VCDPbnoNjqL9jsvf2A0X/cQw4fgediR+jsMjVuXNoL4kMDprVTpGT5PoVUaQ==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.127.3 + '@tanstack/router-core': ^1.129.2 csstype: ^3.0.10 solid-js: '>=1.9.5' tiny-invariant: ^1.3.3 @@ -5086,6 +5312,10 @@ packages: resolution: {integrity: sha512-bPrUKJIo7cIBSF6FwKfZyYAl+FjoMU/HswWaYXr+rEdOw1EA86M3euuK33rfHNlVcxHTmZJk8AQ5p7ZYP6DogQ==} engines: {node: '>=12'} + '@tanstack/router-generator@1.129.2': + resolution: {integrity: sha512-xCZYd4sgPFdlgEten7x+uJx+0y6iUm2d8cnE3cHHzzc5COf5jO+FFh9kVRa9Ouh4h/binv5dpKRBhB33TqPRfw==} + engines: {node: '>=12'} + '@tanstack/router-plugin@1.120.2': resolution: {integrity: sha512-LVwvd/QKFrxtsKfm1Oiv6+NzAB79hcuhlbu14NwmRfdexPYmfjvJJPK0E3IlLmh/mRlEHmfYajutwuqvBONM9w==} engines: {node: '>=12'} @@ -5128,6 +5358,27 @@ packages: webpack: optional: true + '@tanstack/router-plugin@1.129.2': + resolution: {integrity: sha512-uchyp0fMG6MmMJMxydmp4JTyIfW0FHVE4hwGSnP9dgoncQHbqZQt3qNEYbzPIV+JRp6DKjb8Ax5DAUgL7/LVCA==} + engines: {node: '>=12'} + peerDependencies: + '@rsbuild/core': '>=1.0.2' + '@tanstack/react-router': ^1.129.2 + vite: '>=5.0.0 || >=6.0.0' + vite-plugin-solid: ^2.11.2 + webpack: '>=5.92.0' + peerDependenciesMeta: + '@rsbuild/core': + optional: true + '@tanstack/react-router': + optional: true + vite: + optional: true + vite-plugin-solid: + optional: true + webpack: + optional: true + '@tanstack/router-utils@1.115.0': resolution: {integrity: sha512-Dng4y+uLR9b5zPGg7dHReHOTHQa6x+G6nCoZshsDtWrYsrdCcJEtLyhwZ5wG8OyYS6dVr/Cn+E5Bd2b6BhJ89w==} engines: {node: '>=12'} @@ -5139,9 +5390,6 @@ packages: '@tanstack/store@0.7.0': resolution: {integrity: sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg==} - '@tanstack/store@0.7.1': - resolution: {integrity: sha512-PjUQKXEXhLYj2X5/6c1Xn/0/qKY0IVFxTJweopRfF26xfjVyb14yALydJrHupDh3/d+1WKmfEgZPBVCmDkzzwg==} - '@tanstack/store@0.7.2': resolution: {integrity: sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==} @@ -5321,6 +5569,9 @@ packages: '@types/node@24.0.13': resolution: {integrity: sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==} + '@types/node@24.0.15': + resolution: {integrity: sha512-oaeTSbCef7U/z7rDeJA138xpG3NuKc64/rZ2qmUFkFJmnMsAPaluIifqyWd8hSSMxyP9oie3dLAqYPblag9KgA==} + '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -5414,6 +5665,65 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@typescript-eslint/eslint-plugin@8.38.0': + resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.38.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.38.0': + resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/project-service@8.38.0': + resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.38.0': + resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.38.0': + resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/type-utils@8.38.0': + resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.38.0': + resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.38.0': + resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.38.0': + resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.38.0': + resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -5429,6 +5739,12 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -6998,6 +7314,9 @@ packages: effect@3.16.13: resolution: {integrity: sha512-xJDgOhD7+3qIY1d8PGfkaPZMfmdJuSp2XAQgc9dVF8pSl1FJL6WK4ZUpMh177R+GH8XgPloT8dlZsEYUYDo1Ag==} + effect@3.17.0: + resolution: {integrity: sha512-szMlUsbPhP9lsrU+sDPXL9pQT2ew8PhcZvPm0p5dzYFbc+Jn/lH2i5thtmPQdm6Ut1rS4fS67SbuG7Qm0E0oZA==} + electron-to-chromium@1.5.152: resolution: {integrity: sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg==} @@ -7124,6 +7443,17 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.20: + resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} + peerDependencies: + eslint: '>=8.40' + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -7140,8 +7470,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.29.0: - resolution: {integrity: sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==} + eslint@9.31.0: + resolution: {integrity: sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -7655,6 +7985,10 @@ packages: resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} engines: {node: '>=18'} + globals@16.3.0: + resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} + engines: {node: '>=18'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -7682,6 +8016,9 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql-config@5.1.3: resolution: {integrity: sha512-RBhejsPjrNSuwtckRlilWzLVt2j8itl74W9Gke1KejDTz7oaA5kVd6wRn9zK9TS5mcmIYGxf7zN7a1ORMdxp1Q==} engines: {node: '>= 16.0.0'} @@ -7953,6 +8290,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + image-size@1.2.1: resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} engines: {node: '>=16.x'} @@ -8720,6 +9061,11 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lucide-react@0.525.0: + resolution: {integrity: sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -9363,10 +9709,6 @@ packages: oniguruma-to-es@4.3.3: resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} - open@10.1.2: - resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} - engines: {node: '>=18'} - open@10.2.0: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} @@ -10210,6 +10552,11 @@ packages: engines: {node: '>=14'} hasBin: true + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true + pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} @@ -10908,9 +11255,6 @@ packages: engines: {node: '>=4'} hasBin: true - shiki@3.7.0: - resolution: {integrity: sha512-ZcI4UT9n6N2pDuM2n3Jbk0sR4Swzq43nLPgS/4h0E3B/NrFn2HKElrDtceSf8Zx/OWYOo7G1SAtBLypCp+YXqg==} - shiki@3.8.0: resolution: {integrity: sha512-yPqK0y68t20aakv+3aMTpUMJZd6UHaBY2/SBUDowh9M70gVUwqT0bf7Kz5CWG0AXfHtFvXCHhBBHVAzdp0ILoQ==} @@ -11271,6 +11615,9 @@ packages: tailwind-merge@3.2.0: resolution: {integrity: sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==} + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: @@ -11451,6 +11798,12 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-case-convert@2.1.0: resolution: {integrity: sha512-Ye79el/pHYXfoew6kqhMwCoxp4NWjKNcm2kBzpmEMIU9dd9aBmHNNFtZ+WTm0rz1ngyDmfqDXDlyUnBXayiD0w==} @@ -11521,6 +11874,9 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + tw-animate-css@1.3.5: + resolution: {integrity: sha512-t3u+0YNoloIhj1mMXs779P6MO9q3p3mvGn4k1n3nJPqJw/glZcuijG2qTSN4z4mgNRfW5ZC3aXJFLwDtiipZXA==} + tweetnacl-util@0.15.1: resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} @@ -11566,6 +11922,13 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typescript-eslint@8.38.0: + resolution: {integrity: sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -12021,6 +12384,46 @@ packages: yaml: optional: true + vite@7.0.5: + resolution: {integrity: sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -12644,7 +13047,7 @@ snapshots: '@babel/generator@7.27.5': dependencies: '@babel/parser': 7.27.7 - '@babel/types': 7.27.7 + '@babel/types': 7.28.0 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 @@ -12659,7 +13062,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.0 '@babel/helper-annotate-as-pure@7.27.1': dependencies: @@ -12782,7 +13185,7 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -12791,7 +13194,7 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -14160,7 +14563,7 @@ snapshots: '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) '@babel/runtime': 7.27.6 '@babel/runtime-corejs3': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 '@docusaurus/logger': 3.7.0 '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) babel-plugin-dynamic-import-node: 2.3.3 @@ -14176,7 +14579,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.7.0(acorn@8.15.0)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': + '@docusaurus/bundler@3.7.0(acorn@8.15.0)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': dependencies: '@babel/core': 7.28.0 '@docusaurus/babel': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14197,7 +14600,7 @@ snapshots: postcss: 8.5.3 postcss-loader: 7.3.4(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8) postcss-preset-env: 10.1.6(postcss@8.5.3) - react-dev-utils: 12.0.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8) + react-dev-utils: 12.0.1(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8) terser-webpack-plugin: 5.3.14(webpack@5.99.8) tslib: 2.8.1 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.8))(webpack@5.99.8) @@ -14221,10 +14624,10 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/core@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/core@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: '@docusaurus/babel': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@docusaurus/bundler': 3.7.0(acorn@8.15.0)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + '@docusaurus/bundler': 3.7.0(acorn@8.15.0)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@docusaurus/logger': 3.7.0 '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14251,7 +14654,7 @@ snapshots: p-map: 4.0.0 prompts: 2.4.2 react: 19.1.0 - react-dev-utils: 12.0.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8) + react-dev-utils: 12.0.1(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8) react-dom: 19.1.0(react@19.1.0) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.1.0)' @@ -14290,9 +14693,9 @@ snapshots: '@docusaurus/cssnano-preset@3.7.0': dependencies: - cssnano-preset-advanced: 6.1.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-sort-media-queries: 5.2.0(postcss@8.5.3) + cssnano-preset-advanced: 6.1.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-sort-media-queries: 5.2.0(postcss@8.5.6) tslib: 2.8.1 '@docusaurus/logger@3.7.0': @@ -14355,13 +14758,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-content-blog@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.7.0 '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14399,13 +14802,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.7.0 '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14441,9 +14844,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-content-pages@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14474,9 +14877,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-debug@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) fs-extra: 11.3.0 @@ -14505,9 +14908,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-google-analytics@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 @@ -14534,9 +14937,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-google-gtag@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/gtag.js': 0.0.12 @@ -14564,9 +14967,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-google-tag-manager@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 @@ -14593,9 +14996,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-sitemap@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.7.0 '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14627,9 +15030,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-svgr@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-svgr@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14660,21 +15063,21 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.7.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.8.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-debug': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-analytics': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-gtag': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-tag-manager': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-sitemap': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-svgr': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-classic': 3.7.0(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@docusaurus/theme-search-algolia': 3.7.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/preset-classic@3.7.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.8.3)(utf-8-validate@5.0.10)': + dependencies: + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-debug': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-analytics': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-gtag': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-tag-manager': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-sitemap': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-svgr': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/theme-classic': 3.7.0(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/theme-search-algolia': 3.7.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -14707,16 +15110,16 @@ snapshots: '@types/react': 19.1.8 react: 19.1.0 - '@docusaurus/theme-classic@3.7.0(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/theme-classic@3.7.0(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.7.0 '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/theme-translations': 3.7.0 '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14758,11 +15161,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@docusaurus/theme-common@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/history': 4.7.11 @@ -14783,13 +15186,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.7.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@docusaurus/theme-search-algolia@3.7.0(@algolia/client-search@5.25.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: '@docsearch/react': 3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3) - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.7.0 - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.29.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(bufferutil@4.0.9)(eslint@9.31.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/theme-translations': 3.7.0 '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14943,6 +15346,12 @@ snapshots: effect: 3.16.12 uuid: 11.1.0 + '@effect/experimental@0.51.1(@effect/platform@0.88.0(effect@3.17.0))(effect@3.17.0)': + dependencies: + '@effect/platform': 0.88.0(effect@3.17.0) + effect: 3.17.0 + uuid: 11.1.0 + '@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13)': dependencies: '@effect/platform': 0.88.0(effect@3.16.13) @@ -14994,6 +15403,13 @@ snapshots: msgpackr: 1.11.4 multipasta: 0.2.5 + '@effect/platform@0.88.0(effect@3.17.0)': + dependencies: + effect: 3.17.0 + find-my-way-ts: 0.1.6 + msgpackr: 1.11.4 + multipasta: 0.2.5 + '@effect/printer-ansi@0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13)': dependencies: '@effect/printer': 0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13) @@ -15201,36 +15617,26 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.31.0(jiti@2.4.2))': dependencies: - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 - optional: true - '@eslint-community/regexpp@4.12.1': - optional: true + '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.1': + '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - optional: true - '@eslint/config-helpers@0.2.3': - optional: true - - '@eslint/core@0.14.0': - dependencies: - '@types/json-schema': 7.0.15 - optional: true + '@eslint/config-helpers@0.3.0': {} '@eslint/core@0.15.1': dependencies: '@types/json-schema': 7.0.15 - optional: true '@eslint/eslintrc@3.3.1': dependencies: @@ -15245,19 +15651,15 @@ snapshots: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - optional: true - '@eslint/js@9.29.0': - optional: true + '@eslint/js@9.31.0': {} - '@eslint/object-schema@2.1.6': - optional: true + '@eslint/object-schema@2.1.6': {} '@eslint/plugin-kit@0.3.3': dependencies: '@eslint/core': 0.15.1 levn: 0.4.1 - optional: true '@ethereumjs/common@3.2.0': dependencies: @@ -15594,6 +15996,78 @@ snapshots: - utf-8-validate - zod + '@graphprotocol/hypergraph-react@0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': + dependencies: + '@automerge/automerge': 2.2.9 + '@automerge/automerge-repo': 2.0.6 + '@automerge/automerge-repo-react-hooks': 2.0.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/hypergraph': 0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@noble/hashes': 1.8.0 + '@tanstack/react-query': 5.83.0(react@19.1.0) + effect: 3.17.0 + graphql-request: 7.2.0(graphql@16.11.0) + react: 19.1.0 + siwe: 3.0.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + uuid: 11.1.0 + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + transitivePeerDependencies: + - bufferutil + - ethers + - graphql + - ox + - react-dom + - supports-color + - typescript + - utf-8-validate + - zod + + '@graphprotocol/hypergraph@0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': + dependencies: + '@automerge/automerge': 2.2.9 + '@automerge/automerge-repo': 2.0.6 + '@effect/experimental': 0.51.1(@effect/platform@0.88.0(effect@3.17.0))(effect@3.17.0) + '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@noble/secp256k1': 2.2.3 + '@rhinestone/module-sdk': 0.2.8(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)) + '@serenity-kit/noble-sodium': 0.2.1 + '@xstate/store': 3.5.1(react@19.1.0)(solid-js@1.9.5) + bs58check: 4.0.0 + effect: 3.17.0 + permissionless: 0.2.47(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)) + siwe: 3.0.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + uuid: 11.1.0 + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + transitivePeerDependencies: + - '@effect/platform' + - bufferutil + - ethers + - graphql + - ioredis + - lmdb + - ox + - react + - solid-js + - supports-color + - typescript + - utf-8-validate + - zod + + '@graphprotocol/typesync@0.0.3(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': + dependencies: + '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + effect: 3.17.0 + transitivePeerDependencies: + - bufferutil + - graphql + - ox + - typescript + - utf-8-validate + - zod + '@graphql-codegen/add@5.0.3(graphql@16.11.0)': dependencies: '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) @@ -16099,23 +16573,18 @@ snapshots: dependencies: '@hpke/common': 1.7.3 - '@humanfs/core@0.19.1': - optional: true + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': dependencies: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 - optional: true - '@humanwhocodes/module-importer@1.0.1': - optional: true + '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.3.1': - optional: true + '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.3': - optional: true + '@humanwhocodes/retry@0.4.3': {} '@img/sharp-darwin-arm64@0.34.1': optionalDependencies: @@ -16301,7 +16770,7 @@ snapshots: '@mdx-js/mdx@3.1.0(acorn@8.15.0)': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -16871,6 +17340,15 @@ snapshots: '@radix-ui/primitive@1.1.2': {} + '@radix-ui/react-arrow@1.1.7(@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)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@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) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@radix-ui/react-avatar@1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) @@ -16926,6 +17404,19 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 + '@radix-ui/react-dismissable-layer@1.1.10(@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)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@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) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.8)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@radix-ui/react-icons@1.3.2(react@19.1.0)': dependencies: react: 19.1.0 @@ -16937,6 +17428,56 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 + '@radix-ui/react-navigation-menu@1.2.13(@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)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.7(@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) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@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) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@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) + '@radix-ui/react-primitive': 2.1.3(@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) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@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) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + + '@radix-ui/react-popper@1.2.7(@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)': + dependencies: + '@floating-ui/react-dom': 2.1.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.7(@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) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@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) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + + '@radix-ui/react-portal@1.1.9(@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)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@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) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@radix-ui/react-presence@1.1.4(@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)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) @@ -17012,6 +17553,26 @@ snapshots: '@types/react': 19.1.8 '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@radix-ui/react-tooltip@1.2.7(@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)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@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) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@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) + '@radix-ui/react-portal': 1.1.9(@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) + '@radix-ui/react-presence': 1.1.4(@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) + '@radix-ui/react-primitive': 2.1.3(@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) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@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) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.3)(react@19.1.0)': dependencies: react: 19.1.0 @@ -17039,6 +17600,13 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.8)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.8 + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.3)(react@19.1.0)': dependencies: react: 19.1.0 @@ -17058,26 +17626,57 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 - '@react-aria/focus@3.19.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: - '@react-aria/interactions': 3.23.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-aria/utils': 3.27.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-types/shared': 3.27.0(react@19.1.0) - '@swc/helpers': 0.5.15 - clsx: 2.1.1 react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 - '@react-aria/focus@3.20.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: - '@react-aria/interactions': 3.25.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-aria/utils': 3.29.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-types/shared': 3.29.1(react@19.1.0) - '@swc/helpers': 0.5.17 - clsx: 2.1.1 + '@radix-ui/rect': 1.1.1 react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - + optionalDependencies: + '@types/react': 19.1.8 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.8)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.8 + + '@radix-ui/react-visually-hidden@1.2.3(@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)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@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) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + + '@radix-ui/rect@1.1.1': {} + + '@react-aria/focus@3.19.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@react-aria/interactions': 3.23.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-aria/utils': 3.27.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-types/shared': 3.27.0(react@19.1.0) + '@swc/helpers': 0.5.15 + clsx: 2.1.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + '@react-aria/focus@3.20.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@react-aria/interactions': 3.25.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-aria/utils': 3.29.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-types/shared': 3.29.1(react@19.1.0) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + '@react-aria/interactions@3.23.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@react-aria/ssr': 3.9.7(react@19.1.0) @@ -17415,6 +18014,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.19': {} + '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rollup/plugin-inject@5.0.5(rollup@4.45.0)': dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.45.0) @@ -17594,13 +18195,6 @@ snapshots: '@noble/curves': 1.9.0 '@noble/hashes': 1.8.0 - '@shikijs/core@3.7.0': - dependencies: - '@shikijs/types': 3.7.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.5 - '@shikijs/core@3.8.0': dependencies: '@shikijs/types': 3.8.0 @@ -17608,49 +18202,25 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.7.0': - dependencies: - '@shikijs/types': 3.7.0 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.3 - '@shikijs/engine-javascript@3.8.0': dependencies: '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@3.7.0': - dependencies: - '@shikijs/types': 3.7.0 - '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.8.0': dependencies: '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.7.0': - dependencies: - '@shikijs/types': 3.7.0 - '@shikijs/langs@3.8.0': dependencies: '@shikijs/types': 3.8.0 - '@shikijs/themes@3.7.0': - dependencies: - '@shikijs/types': 3.7.0 - '@shikijs/themes@3.8.0': dependencies: '@shikijs/types': 3.8.0 - '@shikijs/types@3.7.0': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - '@shikijs/types@3.8.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 @@ -18167,6 +18737,13 @@ snapshots: tailwindcss: 4.1.11 vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + '@tailwindcss/vite@4.1.11(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + dependencies: + '@tailwindcss/node': 4.1.11 + '@tailwindcss/oxide': 4.1.11 + tailwindcss: 4.1.11 + vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + '@tailwindcss/vite@4.1.5(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.5 @@ -18214,10 +18791,10 @@ snapshots: '@tanstack/query-core': 5.83.0 react: 19.1.0 - '@tanstack/react-router-devtools@1.122.0(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.127.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/react-router-devtools@1.122.0(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.2)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: '@tanstack/react-router': 1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-devtools-core': 1.122.0(@tanstack/router-core@1.127.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) + '@tanstack/router-devtools-core': 1.122.0(@tanstack/router-core@1.129.2)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -18226,10 +18803,10 @@ snapshots: - solid-js - tiny-invariant - '@tanstack/react-router-devtools@1.127.1(@tanstack/react-router@1.127.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.127.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/react-router-devtools@1.127.3(@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.2)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/react-router': 1.127.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-devtools-core': 1.127.0(@tanstack/router-core@1.127.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) + '@tanstack/react-router': 1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/router-devtools-core': 1.127.3(@tanstack/router-core@1.129.2)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -18238,10 +18815,10 @@ snapshots: - solid-js - tiny-invariant - '@tanstack/react-router-devtools@1.127.3(@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.127.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/react-router-devtools@1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.2)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/react-router': 1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-devtools-core': 1.127.3(@tanstack/router-core@1.127.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) + '@tanstack/react-router': 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/router-devtools-core': 1.129.2(@tanstack/router-core@1.129.2)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -18261,23 +18838,22 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-router@1.127.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@tanstack/history': 1.121.34 - '@tanstack/react-store': 0.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-core': 1.127.0 + '@tanstack/react-store': 0.7.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/router-core': 1.127.3 isbot: 5.1.28 - jsesc: 3.1.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@tanstack/history': 1.121.34 '@tanstack/react-store': 0.7.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-core': 1.127.3 + '@tanstack/router-core': 1.129.2 isbot: 5.1.28 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -18291,13 +18867,6 @@ snapshots: react-dom: 19.1.0(react@19.1.0) use-sync-external-store: 1.4.0(react@19.1.0) - '@tanstack/react-store@0.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@tanstack/store': 0.7.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - use-sync-external-store: 1.5.0(react@19.1.0) - '@tanstack/react-store@0.7.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@tanstack/store': 0.7.2 @@ -18323,18 +18892,17 @@ snapshots: '@tanstack/store': 0.7.0 tiny-invariant: 1.3.3 - '@tanstack/router-core@1.127.0': + '@tanstack/router-core@1.127.3': dependencies: '@tanstack/history': 1.121.34 - '@tanstack/store': 0.7.1 + '@tanstack/store': 0.7.2 cookie-es: 1.2.2 - jsesc: 3.1.0 seroval: 1.3.2 seroval-plugins: 1.3.2(seroval@1.3.2) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-core@1.127.3': + '@tanstack/router-core@1.129.2': dependencies: '@tanstack/history': 1.121.34 '@tanstack/store': 0.7.2 @@ -18344,9 +18912,9 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-devtools-core@1.122.0(@tanstack/router-core@1.127.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/router-devtools-core@1.122.0(@tanstack/router-core@1.129.2)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/router-core': 1.127.3 + '@tanstack/router-core': 1.129.2 clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.5 @@ -18354,9 +18922,9 @@ snapshots: optionalDependencies: csstype: 3.1.3 - '@tanstack/router-devtools-core@1.127.0(@tanstack/router-core@1.127.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/router-devtools-core@1.127.3(@tanstack/router-core@1.129.2)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/router-core': 1.127.3 + '@tanstack/router-core': 1.129.2 clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.5 @@ -18364,9 +18932,9 @@ snapshots: optionalDependencies: csstype: 3.1.3 - '@tanstack/router-devtools-core@1.127.3(@tanstack/router-core@1.127.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/router-devtools-core@1.129.2(@tanstack/router-core@1.129.2)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/router-core': 1.127.3 + '@tanstack/router-core': 1.129.2 clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.5 @@ -18377,7 +18945,7 @@ snapshots: '@tanstack/router-generator@1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': dependencies: '@tanstack/virtual-file-routes': 1.115.0 - prettier: 3.6.1 + prettier: 3.6.2 tsx: 4.20.3 zod: 3.24.2 optionalDependencies: @@ -18388,7 +18956,20 @@ snapshots: '@tanstack/router-core': 1.127.3 '@tanstack/router-utils': 1.121.21 '@tanstack/virtual-file-routes': 1.121.21 - prettier: 3.6.1 + prettier: 3.6.2 + recast: 0.23.11 + source-map: 0.7.4 + tsx: 4.20.3 + zod: 3.25.51 + transitivePeerDependencies: + - supports-color + + '@tanstack/router-generator@1.129.2': + dependencies: + '@tanstack/router-core': 1.129.2 + '@tanstack/router-utils': 1.121.21 + '@tanstack/virtual-file-routes': 1.121.21 + prettier: 3.6.2 recast: 0.23.11 source-map: 0.7.4 tsx: 4.20.3 @@ -18445,6 +19026,29 @@ snapshots: transitivePeerDependencies: - supports-color + '@tanstack/router-plugin@1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': + dependencies: + '@babel/core': 7.28.0 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.0 + '@tanstack/router-core': 1.129.2 + '@tanstack/router-generator': 1.129.2 + '@tanstack/router-utils': 1.121.21 + '@tanstack/virtual-file-routes': 1.121.21 + babel-dead-code-elimination: 1.0.10 + chokidar: 3.6.0 + unplugin: 2.1.2 + zod: 3.25.51 + optionalDependencies: + '@tanstack/react-router': 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + webpack: 5.99.8 + transitivePeerDependencies: + - supports-color + '@tanstack/router-utils@1.115.0': dependencies: '@babel/generator': 7.27.5 @@ -18465,8 +19069,6 @@ snapshots: '@tanstack/store@0.7.0': {} - '@tanstack/store@0.7.1': {} - '@tanstack/store@0.7.2': {} '@tanstack/virtual-core@3.13.6': {} @@ -18557,7 +19159,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 22.15.15 + '@types/node': 22.15.29 '@types/debug@4.1.12': dependencies: @@ -18577,7 +19179,7 @@ snapshots: '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree@1.0.7': {} @@ -18676,11 +19278,15 @@ snapshots: dependencies: undici-types: 7.8.0 + '@types/node@24.0.15': + dependencies: + undici-types: 7.8.0 + '@types/parse-json@4.0.2': {} '@types/pg@8.15.0': dependencies: - '@types/node': 22.15.15 + '@types/node': 22.15.29 pg-protocol: 1.7.0 pg-types: 4.0.2 @@ -18783,6 +19389,99 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/type-utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.38.0 + eslint: 9.31.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.38.0 + debug: 4.4.1 + eslint: 9.31.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) + '@typescript-eslint/types': 8.38.0 + debug: 4.4.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.38.0': + dependencies: + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/visitor-keys': 8.38.0 + + '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + + '@typescript-eslint/type-utils@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.1 + eslint: 9.31.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.38.0': {} + + '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/visitor-keys': 8.38.0 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.38.0': + dependencies: + '@typescript-eslint/types': 8.38.0 + eslint-visitor-keys: 4.2.1 + '@ungap/structured-clone@1.3.0': {} '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': @@ -18796,14 +19495,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.4.1(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.4.1(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.28.0) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -18819,6 +19518,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitejs/plugin-react@4.7.0(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + dependencies: + '@babel/core': 7.28.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + transitivePeerDependencies: + - supports-color + '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.2 @@ -18835,6 +19546,14 @@ snapshots: optionalDependencies: vite: 6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 @@ -19735,6 +20454,16 @@ snapshots: postcss: 8.5.3 postcss-value-parser: 4.2.0 + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + caniuse-lite: 1.0.30001718 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -20608,6 +21337,10 @@ snapshots: dependencies: postcss: 8.5.3 + css-declaration-sorter@7.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + css-has-pseudo@7.0.2(postcss@8.5.3): dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) @@ -20617,12 +21350,12 @@ snapshots: css-loader@6.11.0(webpack@5.99.8): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) - postcss-modules-scope: 3.2.1(postcss@8.5.3) - postcss-modules-values: 4.0.0(postcss@8.5.3) + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 semver: 7.7.1 optionalDependencies: @@ -20631,9 +21364,9 @@ snapshots: css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(lightningcss@1.30.1)(webpack@5.99.8): dependencies: '@jridgewell/trace-mapping': 0.3.25 - cssnano: 6.1.2(postcss@8.5.3) + cssnano: 6.1.2(postcss@8.5.6) jest-worker: 29.7.0 - postcss: 8.5.3 + postcss: 8.5.6 schema-utils: 4.3.2 serialize-javascript: 6.0.2 webpack: 5.99.8 @@ -20685,16 +21418,16 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-advanced@6.1.2(postcss@8.5.3): + cssnano-preset-advanced@6.1.2(postcss@8.5.6): dependencies: - autoprefixer: 10.4.21(postcss@8.5.3) + autoprefixer: 10.4.21(postcss@8.5.6) browserslist: 4.24.5 - cssnano-preset-default: 6.1.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-discard-unused: 6.0.5(postcss@8.5.3) - postcss-merge-idents: 6.0.3(postcss@8.5.3) - postcss-reduce-idents: 6.0.3(postcss@8.5.3) - postcss-zindex: 6.0.2(postcss@8.5.3) + cssnano-preset-default: 6.1.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-discard-unused: 6.0.5(postcss@8.5.6) + postcss-merge-idents: 6.0.3(postcss@8.5.6) + postcss-reduce-idents: 6.0.3(postcss@8.5.6) + postcss-zindex: 6.0.2(postcss@8.5.6) cssnano-preset-default@6.1.2(postcss@8.5.3): dependencies: @@ -20730,16 +21463,60 @@ snapshots: postcss-svgo: 6.0.3(postcss@8.5.3) postcss-unique-selectors: 6.0.4(postcss@8.5.3) + cssnano-preset-default@6.1.2(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + css-declaration-sorter: 7.2.0(postcss@8.5.6) + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 9.0.1(postcss@8.5.6) + postcss-colormin: 6.1.0(postcss@8.5.6) + postcss-convert-values: 6.1.0(postcss@8.5.6) + postcss-discard-comments: 6.0.2(postcss@8.5.6) + postcss-discard-duplicates: 6.0.3(postcss@8.5.6) + postcss-discard-empty: 6.0.3(postcss@8.5.6) + postcss-discard-overridden: 6.0.2(postcss@8.5.6) + postcss-merge-longhand: 6.0.5(postcss@8.5.6) + postcss-merge-rules: 6.1.1(postcss@8.5.6) + postcss-minify-font-values: 6.1.0(postcss@8.5.6) + postcss-minify-gradients: 6.0.3(postcss@8.5.6) + postcss-minify-params: 6.1.0(postcss@8.5.6) + postcss-minify-selectors: 6.0.4(postcss@8.5.6) + postcss-normalize-charset: 6.0.2(postcss@8.5.6) + postcss-normalize-display-values: 6.0.2(postcss@8.5.6) + postcss-normalize-positions: 6.0.2(postcss@8.5.6) + postcss-normalize-repeat-style: 6.0.2(postcss@8.5.6) + postcss-normalize-string: 6.0.2(postcss@8.5.6) + postcss-normalize-timing-functions: 6.0.2(postcss@8.5.6) + postcss-normalize-unicode: 6.1.0(postcss@8.5.6) + postcss-normalize-url: 6.0.2(postcss@8.5.6) + postcss-normalize-whitespace: 6.0.2(postcss@8.5.6) + postcss-ordered-values: 6.0.2(postcss@8.5.6) + postcss-reduce-initial: 6.1.0(postcss@8.5.6) + postcss-reduce-transforms: 6.0.2(postcss@8.5.6) + postcss-svgo: 6.0.3(postcss@8.5.6) + postcss-unique-selectors: 6.0.4(postcss@8.5.6) + cssnano-utils@4.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 + cssnano-utils@4.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + cssnano@6.1.2(postcss@8.5.3): dependencies: cssnano-preset-default: 6.1.2(postcss@8.5.3) lilconfig: 3.1.3 postcss: 8.5.3 + cssnano@6.1.2(postcss@8.5.6): + dependencies: + cssnano-preset-default: 6.1.2(postcss@8.5.6) + lilconfig: 3.1.3 + postcss: 8.5.6 + csso@5.0.5: dependencies: css-tree: 2.2.1 @@ -20802,8 +21579,7 @@ snapshots: deep-extend@0.6.0: {} - deep-is@0.1.4: - optional: true + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -21022,6 +21798,11 @@ snapshots: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 + effect@3.17.0: + dependencies: + '@standard-schema/spec': 1.0.0 + fast-check: 3.23.2 + electron-to-chromium@1.5.152: {} electron-to-chromium@1.5.52: {} @@ -21167,6 +21948,14 @@ snapshots: escape-string-regexp@5.0.0: {} + eslint-plugin-react-hooks@5.2.0(eslint@9.31.0(jiti@2.4.2)): + dependencies: + eslint: 9.31.0(jiti@2.4.2) + + eslint-plugin-react-refresh@0.4.20(eslint@9.31.0(jiti@2.4.2)): + dependencies: + eslint: 9.31.0(jiti@2.4.2) + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -21176,23 +21965,20 @@ snapshots: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - optional: true - eslint-visitor-keys@3.4.3: - optional: true + eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: - optional: true + eslint-visitor-keys@4.2.1: {} - eslint@9.29.0(jiti@2.4.2): + eslint@9.31.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.1 - '@eslint/config-helpers': 0.2.3 - '@eslint/core': 0.14.0 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.0 + '@eslint/core': 0.15.1 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.29.0 + '@eslint/js': 9.31.0 '@eslint/plugin-kit': 0.3.3 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -21225,21 +22011,18 @@ snapshots: jiti: 2.4.2 transitivePeerDependencies: - supports-color - optional: true espree@10.4.0: dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 - optional: true esprima@4.0.1: {} esquery@1.6.0: dependencies: estraverse: 5.3.0 - optional: true esrecurse@4.3.0: dependencies: @@ -21251,7 +22034,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-build-jsx@3.0.1: dependencies: @@ -21264,7 +22047,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-to-js@2.0.0: @@ -21275,7 +22058,7 @@ snapshots: estree-util-value-to-estree@3.4.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-visit@2.0.0: dependencies: @@ -21493,8 +22276,7 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-levenshtein@2.0.6: - optional: true + fast-levenshtein@2.0.6: {} fast-password-entropy@1.1.1: {} @@ -21566,7 +22348,6 @@ snapshots: file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - optional: true file-loader@6.2.0(webpack@5.99.8): dependencies: @@ -21647,12 +22428,10 @@ snapshots: dependencies: flatted: 3.3.3 keyv: 4.5.4 - optional: true flat@5.0.2: {} - flatted@3.3.3: - optional: true + flatted@3.3.3: {} follow-redirects@1.15.9: {} @@ -21670,7 +22449,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8): dependencies: '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 @@ -21688,7 +22467,7 @@ snapshots: typescript: 5.8.3 webpack: 5.99.8 optionalDependencies: - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) form-data-encoder@2.1.4: {} @@ -21843,11 +22622,12 @@ snapshots: globals@11.12.0: {} - globals@14.0.0: - optional: true + globals@14.0.0: {} globals@16.1.0: {} + globals@16.3.0: {} + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -21889,6 +22669,8 @@ snapshots: graceful-fs@4.2.11: {} + graphemer@1.4.0: {} + graphql-config@5.1.3(@types/node@24.0.13)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10): dependencies: '@graphql-tools/graphql-file-loader': 8.0.12(graphql@16.11.0) @@ -22034,7 +22816,7 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -22069,7 +22851,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -22280,9 +23062,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.3): + icss-utils@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 idb-keyval@6.2.1: {} @@ -22290,6 +23072,8 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.5: {} + image-size@1.2.1: dependencies: queue: 6.0.2 @@ -22689,8 +23473,7 @@ snapshots: json-schema-traverse@1.0.0: {} - json-stable-stringify-without-jsonify@1.0.1: - optional: true + json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-safe@5.0.1: {} @@ -22738,7 +23521,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - optional: true libphonenumber-js@1.11.18: {} @@ -22920,8 +23702,7 @@ snapshots: lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: - optional: true + lodash.merge@4.6.2: {} lodash.sortby@4.7.0: {} @@ -22977,6 +23758,10 @@ snapshots: dependencies: react: 19.1.0 + lucide-react@0.525.0(react@19.1.0): + dependencies: + react: 19.1.0 + lz-string@1.5.0: {} magic-string@0.30.17: @@ -23326,7 +24111,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -23337,7 +24122,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -23354,7 +24139,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -23390,7 +24175,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -23464,7 +24249,7 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -23678,8 +24463,7 @@ snapshots: napi-build-utils@2.0.0: {} - natural-compare@1.4.0: - optional: true + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -23885,13 +24669,6 @@ snapshots: regex: 6.0.1 regex-recursion: 6.0.2 - open@10.1.2: - dependencies: - default-browser: 5.2.1 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 3.1.0 - open@10.2.0: dependencies: default-browser: 5.2.1 @@ -23915,7 +24692,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 - optional: true ora@5.4.1: dependencies: @@ -24311,6 +25087,12 @@ snapshots: postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 + postcss-calc@9.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + postcss-clamp@4.1.0(postcss@8.5.3): dependencies: postcss: 8.5.3 @@ -24345,12 +25127,26 @@ snapshots: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-colormin@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-convert-values@6.1.0(postcss@8.5.3): dependencies: browserslist: 4.24.5 postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-convert-values@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-custom-media@11.0.5(postcss@8.5.3): dependencies: '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) @@ -24385,21 +25181,37 @@ snapshots: dependencies: postcss: 8.5.3 + postcss-discard-comments@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-discard-duplicates@6.0.3(postcss@8.5.3): dependencies: postcss: 8.5.3 + postcss-discard-duplicates@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-discard-empty@6.0.3(postcss@8.5.3): dependencies: postcss: 8.5.3 + postcss-discard-empty@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-discard-overridden@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 - postcss-discard-unused@6.0.5(postcss@8.5.3): + postcss-discard-overridden@6.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 + + postcss-discard-unused@6.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 postcss-selector-parser: 6.1.2 postcss-double-position-gradients@6.0.1(postcss@8.5.3): @@ -24466,10 +25278,10 @@ snapshots: postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-merge-idents@6.0.3(postcss@8.5.3): + postcss-merge-idents@6.0.3(postcss@8.5.6): dependencies: - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 postcss-merge-longhand@6.0.5(postcss@8.5.3): @@ -24478,6 +25290,12 @@ snapshots: postcss-value-parser: 4.2.0 stylehacks: 6.1.1(postcss@8.5.3) + postcss-merge-longhand@6.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + stylehacks: 6.1.1(postcss@8.5.6) + postcss-merge-rules@6.1.1(postcss@8.5.3): dependencies: browserslist: 4.24.5 @@ -24486,11 +25304,24 @@ snapshots: postcss: 8.5.3 postcss-selector-parser: 6.1.2 + postcss-merge-rules@6.1.1(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + postcss-minify-font-values@6.1.0(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-minify-font-values@6.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-minify-gradients@6.0.3(postcss@8.5.3): dependencies: colord: 2.9.3 @@ -24498,6 +25329,13 @@ snapshots: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-minify-gradients@6.0.3(postcss@8.5.6): + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-minify-params@6.1.0(postcss@8.5.3): dependencies: browserslist: 4.24.5 @@ -24505,31 +25343,43 @@ snapshots: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-minify-params@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-minify-selectors@6.0.4(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + postcss-minify-selectors@6.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 - postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 + postcss: 8.5.6 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.3): + postcss-modules-scope@3.2.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-modules-values@4.0.0(postcss@8.5.3): + postcss-modules-values@4.0.0(postcss@8.5.6): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-nesting@13.0.1(postcss@8.5.3): dependencies: @@ -24542,47 +25392,92 @@ snapshots: dependencies: postcss: 8.5.3 + postcss-normalize-charset@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-normalize-display-values@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-normalize-display-values@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-positions@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-normalize-positions@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-repeat-style@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-normalize-repeat-style@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-string@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-normalize-string@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-timing-functions@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-normalize-timing-functions@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-unicode@6.1.0(postcss@8.5.3): dependencies: browserslist: 4.24.5 postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-normalize-unicode@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-url@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-normalize-url@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-whitespace@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-normalize-whitespace@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-opacity-percentage@3.0.0(postcss@8.5.3): dependencies: postcss: 8.5.3 @@ -24593,6 +25488,12 @@ snapshots: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-ordered-values@6.0.2(postcss@8.5.6): + dependencies: + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-overflow-shorthand@6.0.0(postcss@8.5.3): dependencies: postcss: 8.5.3 @@ -24679,9 +25580,9 @@ snapshots: postcss: 8.5.3 postcss-selector-parser: 7.1.0 - postcss-reduce-idents@6.0.3(postcss@8.5.3): + postcss-reduce-idents@6.0.3(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 postcss-reduce-initial@6.1.0(postcss@8.5.3): @@ -24690,11 +25591,22 @@ snapshots: caniuse-api: 3.0.0 postcss: 8.5.3 + postcss-reduce-initial@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + postcss: 8.5.6 + postcss-reduce-transforms@6.0.2(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 + postcss-reduce-transforms@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3): dependencies: postcss: 8.5.3 @@ -24714,9 +25626,9 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sort-media-queries@5.2.0(postcss@8.5.3): + postcss-sort-media-queries@5.2.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 sort-css-media-queries: 2.2.0 postcss-svgo@6.0.3(postcss@8.5.3): @@ -24725,16 +25637,27 @@ snapshots: postcss-value-parser: 4.2.0 svgo: 3.3.2 + postcss-svgo@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + postcss-unique-selectors@6.0.4(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-selector-parser: 6.1.2 + postcss-unique-selectors@6.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + postcss-value-parser@4.2.0: {} - postcss-zindex@6.0.2(postcss@8.5.3): + postcss-zindex@6.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss@8.4.31: dependencies: @@ -24789,8 +25712,7 @@ snapshots: tar-fs: 2.1.2 tunnel-agent: 0.6.0 - prelude-ls@1.2.1: - optional: true + prelude-ls@1.2.1: {} prettier-plugin-tailwindcss@0.6.13(prettier@3.6.1): dependencies: @@ -24800,6 +25722,8 @@ snapshots: prettier@3.6.1: {} + prettier@3.6.2: {} + pretty-error@4.0.0: dependencies: lodash: 4.17.21 @@ -24986,7 +25910,7 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dev-utils@12.0.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8): + react-dev-utils@12.0.1(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8): dependencies: '@babel/code-frame': 7.27.1 address: 1.2.2 @@ -24997,7 +25921,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -25168,7 +26092,7 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 @@ -25184,14 +26108,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -25254,7 +26178,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: @@ -25761,17 +26685,6 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shiki@3.7.0: - dependencies: - '@shikijs/core': 3.7.0 - '@shikijs/engine-javascript': 3.7.0 - '@shikijs/engine-oniguruma': 3.7.0 - '@shikijs/langs': 3.7.0 - '@shikijs/themes': 3.7.0 - '@shikijs/types': 3.7.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - shiki@3.8.0: dependencies: '@shikijs/core': 3.8.0 @@ -26096,6 +27009,12 @@ snapshots: postcss: 8.5.3 postcss-selector-parser: 6.1.2 + stylehacks@6.1.1(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + stylis@4.2.0: {} stylis@4.3.2: {} @@ -26172,6 +27091,8 @@ snapshots: tailwind-merge@3.2.0: {} + tailwind-merge@3.3.1: {} + tailwindcss-animate@1.0.7(tailwindcss@4.1.5): dependencies: tailwindcss: 4.1.5 @@ -26343,6 +27264,10 @@ snapshots: trough@2.2.0: {} + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + ts-case-convert@2.1.0: {} ts-interface-checker@0.1.13: {} @@ -26427,6 +27352,8 @@ snapshots: dependencies: safe-buffer: 5.2.1 + tw-animate-css@1.3.5: {} + tweetnacl-util@0.15.1: {} tweetnacl@1.0.3: {} @@ -26434,7 +27361,6 @@ snapshots: type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - optional: true type-detect@4.1.0: {} @@ -26467,6 +27393,17 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typescript-eslint@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + typescript@5.8.3: {} ua-parser-js@1.0.40: {} @@ -26834,7 +27771,28 @@ snapshots: debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-node@3.2.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + dependencies: + cac: 6.7.14 + debug: 4.4.1 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -26902,6 +27860,23 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 + vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + dependencies: + esbuild: 0.25.2 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.39.0 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 24.0.15 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 + terser: 5.39.1 + tsx: 4.20.3 + yaml: 2.7.0 + vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: esbuild: 0.25.2 @@ -26919,6 +27894,40 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 + vite@7.0.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + dependencies: + esbuild: 0.25.2 + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.6 + rollup: 4.45.0 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 24.0.13 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 + terser: 5.39.1 + tsx: 4.20.3 + yaml: 2.7.0 + + vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + dependencies: + esbuild: 0.25.2 + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.6 + rollup: 4.45.0 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 24.0.15 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 + terser: 5.39.1 + tsx: 4.20.3 + yaml: 2.7.0 + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: '@types/chai': 5.2.2 @@ -26962,6 +27971,49 @@ snapshots: - tsx - yaml + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + dependencies: + '@types/chai': 5.2.2 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.0 + debug: 4.4.1 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + picomatch: 4.0.2 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.14 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite-node: 3.2.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 24.0.15 + jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + vm-browserify@1.1.2: {} w3c-xmlserializer@5.0.0: @@ -27212,8 +28264,7 @@ snapshots: wildcard@2.0.1: {} - word-wrap@1.2.5: - optional: true + word-wrap@1.2.5: {} wrap-ansi@6.2.0: dependencies: From 506177e5c4e63977a0b9725f526a3e033ff6368b Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Mon, 21 Jul 2025 17:13:14 -1000 Subject: [PATCH 02/30] feat(#354 | create-hypergraph-app): remove scripts until ready --- apps/create-hypergraph-app/package.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/apps/create-hypergraph-app/package.json b/apps/create-hypergraph-app/package.json index 14204272..43820100 100644 --- a/apps/create-hypergraph-app/package.json +++ b/apps/create-hypergraph-app/package.json @@ -18,12 +18,6 @@ "directory": "dist", "linkDirectory": false }, - "scripts": { - "test": "vitest run", - "dev": "pnpx tsx ./src/bin.ts", - "build": "tsup", - "check": "tsc --noEmit" - }, "keywords": ["The Graph", "Web3", "Knowledge Graph", "Hypergraph", "TypeSyncs"], "license": "MIT", "engines": { From 4798e01a06458c1581809bb510fcfd0728f2ebc3 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Mon, 21 Jul 2025 17:21:37 -1000 Subject: [PATCH 03/30] feat(#354 | create-hypergraph-app): add missing mapping.ts and main.tsx entrypoint --- .../template-vite-react/src/main.tsx | 31 +++++++++++++++++++ .../template-vite-react/src/mapping.ts | 18 +++++++++++ 2 files changed, 49 insertions(+) create mode 100644 apps/create-hypergraph-app/template-vite-react/src/main.tsx create mode 100644 apps/create-hypergraph-app/template-vite-react/src/mapping.ts diff --git a/apps/create-hypergraph-app/template-vite-react/src/main.tsx b/apps/create-hypergraph-app/template-vite-react/src/main.tsx new file mode 100644 index 00000000..87dd928c --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/main.tsx @@ -0,0 +1,31 @@ +import { HypergraphAppProvider } from '@graphprotocol/hypergraph-react'; +import { RouterProvider, createRouter } from '@tanstack/react-router'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { mapping } from './mapping'; + +// Import the generated route tree +import { routeTree } from './routeTree.gen'; + +// Create a new router instance +const router = createRouter({ routeTree }); + +// Register the router instance for type safety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router; + } +} + +// Render the app +const rootElement = document.getElementById('root'); +if (rootElement && !rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement); + root.render( + // + + + , + // , + ); +} \ No newline at end of file diff --git a/apps/create-hypergraph-app/template-vite-react/src/mapping.ts b/apps/create-hypergraph-app/template-vite-react/src/mapping.ts new file mode 100644 index 00000000..b345a5f0 --- /dev/null +++ b/apps/create-hypergraph-app/template-vite-react/src/mapping.ts @@ -0,0 +1,18 @@ +import { Id } from '@graphprotocol/grc-20'; +import type { Mapping } from '@graphprotocol/hypergraph'; + +export const mapping: Mapping = { + Address: { + typeIds: [Id.Id('5c6e72fb-8340-47c0-8281-8be159ecd495')], + properties: { + name: Id.Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + description: Id.Id('9b1f76ff-9711-404c-861e-59dc3fa7d037'), + }, + }, + Project: { + typeIds: [Id.Id('484a18c5-030a-499c-b0f2-ef588ff16d50')], + properties: { + name: Id.Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + }, + }, +}; \ No newline at end of file From 5a4c19323f38ac9511d4571dfc22315f6108fc01 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Tue, 22 Jul 2025 07:06:25 -1000 Subject: [PATCH 04/30] feat(#351 | create-hypergraph-app): working on building create-hypergraph-app cli tool --- apps/connect/package.json | 4 +- apps/create-hypergraph-app/package.json | 20 +- apps/create-hypergraph-app/src/Cli.ts | 48 + apps/create-hypergraph-app/src/bin.ts | 12 + .../create-hypergraph-app/tsconfig.build.json | 8 + apps/create-hypergraph-app/tsconfig.json | 10 + .../tsconfig.scripts.json | 12 + apps/create-hypergraph-app/tsconfig.src.json | 13 + apps/create-hypergraph-app/tsdown.config.ts | 13 + apps/events/package.json | 4 +- apps/server/package.json | 4 +- apps/typesync/package.json | 20 +- packages/hypergraph-react/package.json | 2 +- packages/hypergraph/package.json | 2 +- packages/typesync/package.json | 2 +- pnpm-lock.yaml | 1023 ++++++++++------- 16 files changed, 783 insertions(+), 414 deletions(-) create mode 100644 apps/create-hypergraph-app/src/Cli.ts create mode 100644 apps/create-hypergraph-app/src/bin.ts create mode 100644 apps/create-hypergraph-app/tsconfig.build.json create mode 100644 apps/create-hypergraph-app/tsconfig.json create mode 100644 apps/create-hypergraph-app/tsconfig.scripts.json create mode 100644 apps/create-hypergraph-app/tsconfig.src.json create mode 100644 apps/create-hypergraph-app/tsdown.config.ts diff --git a/apps/connect/package.json b/apps/connect/package.json index e4411dc3..063436d5 100644 --- a/apps/connect/package.json +++ b/apps/connect/package.json @@ -24,7 +24,7 @@ "@tanstack/react-router-devtools": "^1.122.0", "@xstate/store": "^3.5.1", "clsx": "^2.1.1", - "effect": "^3.16.12", + "effect": "^3.17.0", "framer-motion": "^12.10.1", "graphql-request": "^7.2.0", "lucide-react": "^0.508.0", @@ -37,7 +37,7 @@ "devDependencies": { "@tailwindcss/vite": "^4.1.10", "@tanstack/router-plugin": "^1.120.2", - "@types/node": "^22.15.15", + "@types/node": "^24.0.15", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "@vitejs/plugin-react": "^4.4.1", diff --git a/apps/create-hypergraph-app/package.json b/apps/create-hypergraph-app/package.json index 43820100..527dae54 100644 --- a/apps/create-hypergraph-app/package.json +++ b/apps/create-hypergraph-app/package.json @@ -18,6 +18,13 @@ "directory": "dist", "linkDirectory": false }, + "scripts": { + "test": "vitest run", + "dev": "pnpx tsx ./src/bin.ts", + "build": "tsdown", + "check": "tsc --noEmit", + "start": "node ./dist/bin.js" + }, "keywords": ["The Graph", "Web3", "Knowledge Graph", "Hypergraph", "TypeSyncs"], "license": "MIT", "engines": { @@ -26,5 +33,16 @@ "bugs": { "url": "https://github.com/graphprotocol/hypergraph/issues" }, - "homepage": "https://github.com/graphprotocol/hypergraph/tree/main/apps/create-hypergraph-app#readme" + "homepage": "https://github.com/graphprotocol/hypergraph/tree/main/apps/create-hypergraph-app#readme", + "devDependencies": { + "@effect/cli": "^0.68.0", + "@effect/language-service": "^0.28.0", + "@effect/platform": "^0.89.0", + "@effect/platform-node": "^0.92.0", + "@effect/printer-ansi": "^0.45.0", + "@effect/vitest": "^0.25.0", + "@types/node": "^24.0.15", + "effect": "^3.17.0", + "tsdown": "^0.12.9" + } } diff --git a/apps/create-hypergraph-app/src/Cli.ts b/apps/create-hypergraph-app/src/Cli.ts new file mode 100644 index 00000000..e5517d14 --- /dev/null +++ b/apps/create-hypergraph-app/src/Cli.ts @@ -0,0 +1,48 @@ +import { Command, Options, Span } from '@effect/cli'; +import { descriptionList } from '@effect/cli/HelpDoc'; +import { Console, Effect, Option, Schema } from 'effect'; + +const AvailableFrameworkKey = Schema.Union(Schema.Literal('vite-react')); +type AvailableFrameworkKey = typeof AvailableFrameworkKey.Type; + +const Framework = Schema.Record({ + key: AvailableFrameworkKey, + value: Schema.Struct({ + directory: Schema.NonEmptyTrimmedString, + }), +}); +type Framework = typeof Framework.Type; + +const availableFrameworks = { + 'vite-react': { + directory: 'template-vite-react', + }, +} as const satisfies Framework; + +const createHypergraphApp = Command.make('create-hypergraph-app', { + args: { + template: Options.choice('template', Object.keys(availableFrameworks) as ReadonlyArray).pipe( + Options.withAlias('t'), + Options.withDescription('The template to scaffold'), + Options.optional, + Options.withDefault(Option.some('vite-react')), + Options.map((templOpt) => + Option.getOrElse(templOpt, () => 'vite-react'), + ), + ), + }, +}).pipe( + Command.withDescription(descriptionList([[]])), + Command.withHandler(({ args }) => + Effect.gen(function* () { + const template = args.template; + + return yield* Console.log('selected template', { template }); + }), + ), +); + +export const run = Command.run(createHypergraphApp, { + name: 'create-hypergraph-app', + version: '0.0.1', +}); diff --git a/apps/create-hypergraph-app/src/bin.ts b/apps/create-hypergraph-app/src/bin.ts new file mode 100644 index 00000000..50f1abb5 --- /dev/null +++ b/apps/create-hypergraph-app/src/bin.ts @@ -0,0 +1,12 @@ +#!/usr/bin/env node + +import { NodeContext, NodeFileSystem, NodeRuntime } from '@effect/platform-node'; +import * as Effect from 'effect/Effect'; + +import { run } from './Cli.js'; + +const runnable = Effect.suspend(() => run(process.argv)).pipe( + Effect.provide(NodeFileSystem.layer), + Effect.provide(NodeContext.layer), +); +runnable.pipe(NodeRuntime.runMain({ disableErrorReporting: process.env.NODE_ENV === 'prod' })); diff --git a/apps/create-hypergraph-app/tsconfig.build.json b/apps/create-hypergraph-app/tsconfig.build.json new file mode 100644 index 00000000..fc59560f --- /dev/null +++ b/apps/create-hypergraph-app/tsconfig.build.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.src.json", + "compilerOptions": { + "tsBuildInfoFile": ".tsbuildinfo/build.tsbuildinfo", + "outDir": "dist", + "stripInternal": true + } +} diff --git a/apps/create-hypergraph-app/tsconfig.json b/apps/create-hypergraph-app/tsconfig.json new file mode 100644 index 00000000..b35721c3 --- /dev/null +++ b/apps/create-hypergraph-app/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "include": [], + "references": [ + { "path": "./tsconfig.src.json" }, + { "path": "tsconfig.scripts.json" }, + // templates + { "path": "./template-vite-react/tsconfig.json"} + ] +} diff --git a/apps/create-hypergraph-app/tsconfig.scripts.json b/apps/create-hypergraph-app/tsconfig.scripts.json new file mode 100644 index 00000000..7b037fdc --- /dev/null +++ b/apps/create-hypergraph-app/tsconfig.scripts.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["tsdown.config.ts"], + "compilerOptions": { + "tsBuildInfoFile": ".tsbuildinfo/scripts.tsbuildinfo", + "types": [ + "node" + ], + "rootDir": ".", + "noEmit": true + } +} diff --git a/apps/create-hypergraph-app/tsconfig.src.json b/apps/create-hypergraph-app/tsconfig.src.json new file mode 100644 index 00000000..0e5649dd --- /dev/null +++ b/apps/create-hypergraph-app/tsconfig.src.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src"], + "compilerOptions": { + "types": ["node"], + "tsBuildInfoFile": ".tsbuildinfo/src.tsbuildinfo", + "rootDir": "src", + "noEmit": true, + "composite": false, + "declaration": false, + "declarationMap": false + } +} diff --git a/apps/create-hypergraph-app/tsdown.config.ts b/apps/create-hypergraph-app/tsdown.config.ts new file mode 100644 index 00000000..c652d6f0 --- /dev/null +++ b/apps/create-hypergraph-app/tsdown.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'tsdown'; + +export default defineConfig(() => ({ + entry: ['src/bin.ts'], + target: 'node20', + minify: true, + tsconfig: 'tsconfig.build.json', + platform: 'node', + format: 'esm', + outDir: 'dist', + clean: true, + external: ['@parcel/watcher'], +})); diff --git a/apps/events/package.json b/apps/events/package.json index e511914b..33b5bc1a 100644 --- a/apps/events/package.json +++ b/apps/events/package.json @@ -21,7 +21,7 @@ "@xstate/store": "^3.5.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "effect": "^3.16.12", + "effect": "^3.17.0", "framer-motion": "^12.10.1", "graphql-request": "^7.1.2", "isomorphic-ws": "^5.0.0", @@ -40,7 +40,7 @@ "@biomejs/biome": "1.9.4", "@tailwindcss/vite": "^4.1.5", "@tanstack/router-plugin": "^1.120.2", - "@types/node": "^22.15.15", + "@types/node": "^24.0.15", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "@types/uuid": "^10.0.0", diff --git a/apps/server/package.json b/apps/server/package.json index 26d279f8..fe63b884 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -19,7 +19,7 @@ "@privy-io/server-auth": "^1.26.0", "body-parser": "^2.2.0", "cors": "^2.8.5", - "effect": "^3.16.12", + "effect": "^3.17.0", "express": "^5.1.0", "prisma": "^6.7.0", "siwe": "^3.0.0", @@ -29,7 +29,7 @@ "devDependencies": { "@types/cors": "^2.8.17", "@types/express": "^5.0.1", - "@types/node": "^22.15.15", + "@types/node": "^24.0.15", "@types/pg": "^8.15.0", "@types/ws": "^8.18.1", "tsup": "^8.4.0", diff --git a/apps/typesync/package.json b/apps/typesync/package.json index b92cf742..86bab805 100644 --- a/apps/typesync/package.json +++ b/apps/typesync/package.json @@ -38,20 +38,20 @@ "hypergraph": "pnpx tsx ./src/bin.ts typesync" }, "devDependencies": { - "@effect/cli": "^0.67.0", - "@effect/experimental": "^0.52.0", - "@effect/language-service": "^0.26.0", - "@effect/platform": "^0.88.0", - "@effect/platform-node": "^0.90.0", - "@effect/sql": "^0.41.0", - "@effect/sql-sqlite-node": "^0.42.0", - "@effect/vitest": "^0.24.0", + "@effect/cli": "^0.68.0", + "@effect/experimental": "^0.53.0", + "@effect/language-service": "^0.28.0", + "@effect/platform": "^0.89.0", + "@effect/platform-node": "^0.92.0", + "@effect/sql": "^0.43.0", + "@effect/sql-sqlite-node": "^0.44.0", + "@effect/vitest": "^0.25.0", "@graphql-codegen/cli": "^5.0.7", "@graphql-codegen/client-preset": "^4.8.3", "@graphql-codegen/typescript": "^4.1.6", "@graphql-codegen/typescript-operations": "^4.6.1", "@tanstack/router-plugin": "^1.127.5", - "@types/node": "^24.0.13", + "@types/node": "^24.0.15", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.6.0", @@ -76,7 +76,7 @@ "@tanstack/react-router-devtools": "^1.127.3", "better-sqlite3": "^12.2.0", "date-fns": "^4.1.0", - "effect": "^3.16.13", + "effect": "^3.17.0", "graphql": "^16.11.0", "graphql-request": "^7.2.0", "jotai": "^2.12.5", diff --git a/packages/hypergraph-react/package.json b/packages/hypergraph-react/package.json index 78111416..aeca5d93 100644 --- a/packages/hypergraph-react/package.json +++ b/packages/hypergraph-react/package.json @@ -44,7 +44,7 @@ "@graphprotocol/grc-20": "^0.21.6", "@noble/hashes": "^1.8.0", "@tanstack/react-query": "^5.75.5", - "effect": "^3.16.12", + "effect": "^3.17.0", "graphql-request": "^7.1.2", "siwe": "^3.0.0", "uuid": "^11.1.0", diff --git a/packages/hypergraph/package.json b/packages/hypergraph/package.json index 7ce427f3..08cd8bf0 100644 --- a/packages/hypergraph/package.json +++ b/packages/hypergraph/package.json @@ -54,7 +54,7 @@ "@serenity-kit/noble-sodium": "^0.2.1", "@xstate/store": "^3.5.1", "bs58check": "^4.0.0", - "effect": "^3.16.12", + "effect": "^3.17.0", "permissionless": "^0.2.47", "siwe": "^3.0.0", "uuid": "^11.1.0", diff --git a/packages/typesync/package.json b/packages/typesync/package.json index 78243b51..8c5ca082 100644 --- a/packages/typesync/package.json +++ b/packages/typesync/package.json @@ -39,6 +39,6 @@ }, "dependencies": { "@graphprotocol/grc-20": "^0.21.6", - "effect": "^3.16.12" + "effect": "^3.17.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9dd4342a..0655eeba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,8 +72,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 effect: - specifier: ^3.16.12 - version: 3.16.12 + specifier: ^3.17.0 + version: 3.17.0 framer-motion: specifier: ^12.10.1 version: 12.10.1(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -97,17 +97,17 @@ importers: version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) devDependencies: '@tailwindcss/vite': specifier: ^4.1.10 - version: 4.1.10(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.10(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/router-plugin': specifier: ^1.120.2 - version: 1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + version: 1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) '@types/node': - specifier: ^22.15.15 - version: 22.15.15 + specifier: ^24.0.15 + version: 24.0.15 '@types/react': specifier: ^19.1.3 version: 19.1.3 @@ -116,7 +116,7 @@ importers: version: 19.1.3(@types/react@19.1.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.4.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) prettier: specifier: ^3.6.0 version: 3.6.1 @@ -128,15 +128,43 @@ importers: version: 4.1.10 unplugin-fonts: specifier: ^1.3.1 - version: 1.3.1(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 1.3.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) vite-plugin-node-polyfills: specifier: ^0.23.0 - version: 0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) vite-plugin-svgr: specifier: ^4.3.0 - version: 4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) apps/create-hypergraph-app: + devDependencies: + '@effect/cli': + specifier: ^0.68.0 + version: 0.68.0(@effect/platform@0.89.0(effect@3.17.0))(@effect/printer-ansi@0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0))(@effect/printer@0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0))(effect@3.17.0) + '@effect/language-service': + specifier: ^0.28.0 + version: 0.28.0 + '@effect/platform': + specifier: ^0.89.0 + version: 0.89.0(effect@3.17.0) + '@effect/platform-node': + specifier: ^0.92.0 + version: 0.92.0(@effect/cluster@0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(utf-8-validate@5.0.10) + '@effect/printer-ansi': + specifier: ^0.45.0 + version: 0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0) + '@effect/vitest': + specifier: ^0.25.0 + version: 0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + '@types/node': + specifier: ^24.0.15 + version: 24.0.15 + effect: + specifier: ^3.17.0 + version: 3.17.0 + tsdown: + specifier: ^0.12.9 + version: 0.12.9(typescript@5.8.3) publishDirectory: dist apps/create-hypergraph-app/template-vite-react: @@ -146,10 +174,10 @@ importers: version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/hypergraph': specifier: 0.0.14 - version: 0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + version: 0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/hypergraph-react': specifier: 0.0.14 - version: 0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + version: 0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/typesync': specifier: ^0.0.3 version: 0.0.3(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) @@ -284,8 +312,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 effect: - specifier: ^3.16.12 - version: 3.16.12 + specifier: ^3.17.0 + version: 3.17.0 framer-motion: specifier: ^12.10.1 version: 12.10.1(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -324,20 +352,20 @@ importers: version: 2.29.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) devDependencies: '@biomejs/biome': specifier: 1.9.4 version: 1.9.4 '@tailwindcss/vite': specifier: ^4.1.5 - version: 4.1.5(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.5(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/router-plugin': specifier: ^1.120.2 - version: 1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + version: 1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) '@types/node': - specifier: ^22.15.15 - version: 22.15.15 + specifier: ^24.0.15 + version: 24.0.15 '@types/react': specifier: ^19.1.3 version: 19.1.3 @@ -349,7 +377,7 @@ importers: version: 10.0.0 '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.4.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) globals: specifier: ^16.1.0 version: 16.1.0 @@ -421,8 +449,8 @@ importers: specifier: ^2.8.5 version: 2.8.5 effect: - specifier: ^3.16.12 - version: 3.16.12 + specifier: ^3.17.0 + version: 3.17.0 express: specifier: ^5.1.0 version: 5.1.0 @@ -446,8 +474,8 @@ importers: specifier: ^5.0.1 version: 5.0.1 '@types/node': - specifier: ^22.15.15 - version: 22.15.15 + specifier: ^24.0.15 + version: 24.0.15 '@types/pg': specifier: ^8.15.0 version: 8.15.0 @@ -483,7 +511,7 @@ importers: version: 1.1.12(@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) '@tailwindcss/vite': specifier: ^4.1.11 - version: 4.1.11(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.11(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/react-form': specifier: ^1.14.1 version: 1.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -506,8 +534,8 @@ importers: specifier: ^4.1.0 version: 4.1.0 effect: - specifier: ^3.16.13 - version: 3.16.13 + specifier: ^3.17.0 + version: 3.17.0 graphql: specifier: ^16.11.0 version: 16.11.0 @@ -534,32 +562,32 @@ importers: version: 4.1.11 devDependencies: '@effect/cli': - specifier: ^0.67.0 - version: 0.67.0(@effect/platform@0.88.0(effect@3.16.13))(@effect/printer-ansi@0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13))(@effect/printer@0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13))(effect@3.16.13) + specifier: ^0.68.0 + version: 0.68.0(@effect/platform@0.89.0(effect@3.17.0))(@effect/printer-ansi@0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0))(@effect/printer@0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0))(effect@3.17.0) '@effect/experimental': - specifier: ^0.52.0 - version: 0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) + specifier: ^0.53.0 + version: 0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) '@effect/language-service': - specifier: ^0.26.0 - version: 0.26.0 + specifier: ^0.28.0 + version: 0.28.0 '@effect/platform': - specifier: ^0.88.0 - version: 0.88.0(effect@3.16.13) + specifier: ^0.89.0 + version: 0.89.0(effect@3.17.0) '@effect/platform-node': - specifier: ^0.90.0 - version: 0.90.0(@effect/cluster@0.37.2(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/workflow@0.1.2(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(bufferutil@4.0.9)(effect@3.16.13)(utf-8-validate@5.0.10) + specifier: ^0.92.0 + version: 0.92.0(@effect/cluster@0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(utf-8-validate@5.0.10) '@effect/sql': - specifier: ^0.41.0 - version: 0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) + specifier: ^0.43.0 + version: 0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) '@effect/sql-sqlite-node': - specifier: ^0.42.0 - version: 0.42.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(effect@3.16.13) + specifier: ^0.44.0 + version: 0.44.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(effect@3.17.0) '@effect/vitest': - specifier: ^0.24.0 - version: 0.24.0(effect@3.16.13)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + specifier: ^0.25.0 + version: 0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@graphql-codegen/cli': specifier: ^5.0.7 - version: 5.0.7(@babel/core@7.28.0)(@parcel/watcher@2.5.1)(@types/node@24.0.13)(bufferutil@4.0.9)(encoding@0.1.13)(enquirer@2.4.1)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + version: 5.0.7(@babel/core@7.28.0)(@parcel/watcher@2.5.1)(@types/node@24.0.15)(bufferutil@4.0.9)(encoding@0.1.13)(enquirer@2.4.1)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@graphql-codegen/client-preset': specifier: ^4.8.3 version: 4.8.3(@babel/core@7.28.0)(encoding@0.1.13)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0) @@ -571,10 +599,10 @@ importers: version: 4.6.1(@babel/core@7.28.0)(encoding@0.1.13)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0) '@tanstack/router-plugin': specifier: ^1.127.5 - version: 1.127.5(@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2)) + version: 1.127.5(@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2)) '@types/node': - specifier: ^24.0.13 - version: 24.0.13 + specifier: ^24.0.15 + version: 24.0.15 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -583,7 +611,7 @@ importers: version: 19.1.6(@types/react@19.1.8) '@vitejs/plugin-react': specifier: ^4.6.0 - version: 4.6.0(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.6.0(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) glob: specifier: ^11.0.3 version: 11.0.3 @@ -598,7 +626,7 @@ importers: version: 4.20.3 vite: specifier: ^7.0.4 - version: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) publishDirectory: dist apps/typesync/dist: @@ -717,7 +745,7 @@ importers: version: 2.0.6 '@effect/experimental': specifier: ^0.51.1 - version: 0.51.1(@effect/platform@0.88.0(effect@3.16.12))(effect@3.16.12) + version: 0.51.1(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) '@graphprotocol/grc-20': specifier: ^0.21.6 version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) @@ -746,8 +774,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 effect: - specifier: ^3.16.12 - version: 3.16.12 + specifier: ^3.17.0 + version: 3.17.0 permissionless: specifier: ^0.2.47 version: 0.2.47(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)) @@ -787,8 +815,8 @@ importers: specifier: ^5.75.5 version: 5.75.5(react@19.1.0) effect: - specifier: ^3.16.12 - version: 3.16.12 + specifier: ^3.17.0 + version: 3.17.0 graphql-request: specifier: ^7.1.2 version: 7.1.2(graphql@16.11.0) @@ -834,8 +862,8 @@ importers: specifier: ^0.21.6 version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) effect: - specifier: ^3.16.12 - version: 3.16.12 + specifier: ^3.17.0 + version: 3.17.0 publishDirectory: publish packages: @@ -1805,6 +1833,10 @@ packages: resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.1': + resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} + engines: {node: '>=6.9.0'} + '@base-ui-components/react@1.0.0-beta.0': resolution: {integrity: sha512-lPw5/40g/TbpSG1e1g4drl10kaSY2VBOFFQ9axmGhwPGqrQmTuW42jcUq/7OPdXQAyMakfWMWLSXyk3NXbRk+Q==} engines: {node: '>=14.0.0'} @@ -2403,13 +2435,13 @@ packages: resolution: {integrity: sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==} engines: {node: '>=18.0'} - '@effect/cli@0.67.0': - resolution: {integrity: sha512-gBbt43yibW7Nh5TJtTP2OwqCeSa+lixAcM5PYFV2cM32oPlgdtWYyl1m8rcIZwWJBhQyjNXFtuxlYFk9A8alog==} + '@effect/cli@0.68.0': + resolution: {integrity: sha512-OlKMbGKCuF/z8Bb4P/9lQreljzbQSUjpnkJ9U6Sb7cSRVuFoTglCEGUKb73yC8CnxZoV/rqk0LVcb/tJsXPBsQ==} peerDependencies: - '@effect/platform': ^0.88.0 - '@effect/printer': ^0.44.13 - '@effect/printer-ansi': ^0.44.13 - effect: ^3.16.13 + '@effect/platform': ^0.89.0 + '@effect/printer': ^0.45.0 + '@effect/printer-ansi': ^0.45.0 + effect: ^3.17.0 '@effect/cluster@0.37.2': resolution: {integrity: sha512-9U4P/Fk8C6fN/s0e4nvA++prZmELtV7k5RwG2AOw4NgqBZqptiJMutgaT10ltwgdvddRF/77PVjgORyzNTBmbg==} @@ -2433,11 +2465,11 @@ packages: lmdb: optional: true - '@effect/experimental@0.52.0': - resolution: {integrity: sha512-SqTmGQMNJTq8IZ0XKu3hDOD09YRiZLDbHfODu4r1yhhAfh93vn2x9waELQtiAbXcsjG/eMpbajcCc0KvFgFFIA==} + '@effect/experimental@0.53.0': + resolution: {integrity: sha512-EUYWW6g8CsobKDnOyX6a+NIPFOVVU8X1/tGddfagmuB7ukhT0QAppHqnqTqWgvZ6icbN8G5Z1Ui2xB4P80GrAA==} peerDependencies: - '@effect/platform': ^0.88.0 - effect: ^3.16.13 + '@effect/platform': ^0.89.0 + effect: ^3.17.0 ioredis: ^5 lmdb: ^3 peerDependenciesMeta: @@ -2446,44 +2478,44 @@ packages: lmdb: optional: true - '@effect/language-service@0.26.0': - resolution: {integrity: sha512-flHqsDIotdAq3whQb0fjpiYIFd6OR078TDPbxgBY5sDO+7ZNgGZ7kKH51bEIKNz+dFhw0NJjowT0qypyhPpUDw==} + '@effect/language-service@0.28.0': + resolution: {integrity: sha512-Vz3Ax/6sQbzEJDR/wqZkXB0XDfxZQSydWUD/7CRl6HmGCrw0wgIMd0xqKNF7LgE9uX6EgwQASHTOr0BSFCmYZA==} hasBin: true - '@effect/platform-node-shared@0.43.0': - resolution: {integrity: sha512-kYlGo5eNDsfOkirBC4B4a83OtESc9x4r+JWCHNtnRswBnKKj8GgC90vL1ksNbfTnESzRCQ8/bfjPeyxHAffDAg==} + '@effect/platform-node-shared@0.45.0': + resolution: {integrity: sha512-6pChbcUvZBXZY0fUJQ+WJaDhEk0Y0713YLpOQmrmIo92Uth+5ipbfoNHky+ickOsfi6eUOi7UPMaXkUzGHQwIQ==} peerDependencies: - '@effect/cluster': ^0.42.0 - '@effect/platform': ^0.88.0 - '@effect/rpc': ^0.65.0 - '@effect/sql': ^0.41.0 - effect: ^3.16.13 + '@effect/cluster': ^0.44.0 + '@effect/platform': ^0.89.0 + '@effect/rpc': ^0.66.0 + '@effect/sql': ^0.43.0 + effect: ^3.17.0 - '@effect/platform-node@0.90.0': - resolution: {integrity: sha512-U6WBUghdXYELtg5h+p5nzRV2ih0oPOoxnVrfvmR4UHQaOtvYbwu/Lexho59HBYdIqnYzHCi5KH12z8b6E0kv+Q==} + '@effect/platform-node@0.92.0': + resolution: {integrity: sha512-4ZIRY+1PhIY/bux/Khbr0nyTfWjMTYa8a1qHuaHBC2bBa5Ed5LjbP7T+TMrIB5cmp8s6L+pGkdvJTaxjGuoGvQ==} peerDependencies: - '@effect/cluster': ^0.42.0 - '@effect/platform': ^0.88.0 - '@effect/rpc': ^0.65.0 - '@effect/sql': ^0.41.0 - effect: ^3.16.13 + '@effect/cluster': ^0.44.0 + '@effect/platform': ^0.89.0 + '@effect/rpc': ^0.66.0 + '@effect/sql': ^0.43.0 + effect: ^3.17.0 - '@effect/platform@0.88.0': - resolution: {integrity: sha512-ObTXedf/DshoKtM2ygEcoP7Kj9rop0KeDvLriQE2HD4Fgo1pxjgbOivkCbSq03MErpNE2/lMYTY6Si6bo4qMqQ==} + '@effect/platform@0.89.0': + resolution: {integrity: sha512-9nTaD1h/X4M4qdl/4E1atwoe+p4VoH0SJiYd2mJrDJC18alwqlI/xaKNGRnJVPbIrhbKC62YJ9h2mqfkE4t2YA==} peerDependencies: - effect: ^3.16.13 + effect: ^3.17.0 - '@effect/printer-ansi@0.40.10': - resolution: {integrity: sha512-XMmAcHxojINGZKnNGJSrG1fMvMYLOlHGVAvvD/5pbp2Yi5Rh8PGDJjtaPmrj5PmO+WssovevLHGonrbKa8xybA==} + '@effect/printer-ansi@0.45.0': + resolution: {integrity: sha512-3MS02RP83eZaBJX98PRI4f5kyoEVyNfg2Qu/XUWQMFRp4wvmgNwEy18RjO9G6s7uB8NaYXTpQVDmtUoKARx7fA==} peerDependencies: - '@effect/typeclass': ^0.31.10 - effect: ^3.12.10 + '@effect/typeclass': ^0.36.0 + effect: ^3.17.0 - '@effect/printer@0.40.10': - resolution: {integrity: sha512-vu3ZndS4XVYjq6ctZXd/QXMz9LgqRsJJAX3bCiP+9DBVna2b4z/nVJsPfYwVA/1PmSJUiSpOXv/MDUCHwYxN7w==} + '@effect/printer@0.45.0': + resolution: {integrity: sha512-UpFBH2JKAgakSWpue6yKkIAXMq+3md/CPb9s/NGl28vDu1P33cvDeeDL/1EOzFk8WqhIs3oKwPMDnd3jUhjzdg==} peerDependencies: - '@effect/typeclass': ^0.31.10 - effect: ^3.12.10 + '@effect/typeclass': ^0.36.0 + effect: ^3.17.0 '@effect/rpc@0.61.4': resolution: {integrity: sha512-i1U/RuIRGqLJ2xxhgAPEsMwqfLW7mqtQYcj8Za2ouJejpqAN+6s3OIYxlsR4YZ6EDYfCZlD2eJ/wAD54xtAXDQ==} @@ -2491,30 +2523,30 @@ packages: '@effect/platform': ^0.84.4 effect: ^3.16.3 - '@effect/sql-sqlite-node@0.42.0': - resolution: {integrity: sha512-DZ+08CuE8SPrTfmtALHR7rjJSASOCd5yGZBVyDrj8De0g4R1YoyTHryii2VmopOUTPZu0g39bvz40OFJkqnajw==} + '@effect/sql-sqlite-node@0.44.0': + resolution: {integrity: sha512-RBGeOAiKUAGzscrANeJBOYz26z1rhjvpGTxJhsprYgW14uwGjEkOw2bgNbJHmn47GHrd8UaXSn8zy57QX7nOqQ==} peerDependencies: - '@effect/experimental': ^0.52.0 - '@effect/platform': ^0.88.0 - '@effect/sql': ^0.41.0 - effect: ^3.16.13 + '@effect/experimental': ^0.53.0 + '@effect/platform': ^0.89.0 + '@effect/sql': ^0.43.0 + effect: ^3.17.0 - '@effect/sql@0.41.0': - resolution: {integrity: sha512-P3RuRm/PHEYInkFE0VUijWCWGyCviq2rnLLcTpdIRCy9quwGTh53kOnh9Go1pL+owGkq3WrP1T1hiAr5LzeNfg==} + '@effect/sql@0.43.0': + resolution: {integrity: sha512-Q894sLjh7nV/DnbKq2i1HXVA4RQs05OEaN/cCSpLj+37c3ToKR5SmHNMA2Z1HGxauZDi5kenKG1dHKFxRApN5Q==} peerDependencies: - '@effect/experimental': ^0.52.0 - '@effect/platform': ^0.88.0 - effect: ^3.16.13 + '@effect/experimental': ^0.53.0 + '@effect/platform': ^0.89.0 + effect: ^3.17.0 '@effect/typeclass@0.31.10': resolution: {integrity: sha512-mDuQ44IfyDUSnltcFS+cEQGWhMg37IwNiPmATLw/NYBYHDBkqUc77vzlCpSlBiKDzExSI8vjMVWqGjL22MLHGQ==} peerDependencies: effect: ^3.12.10 - '@effect/vitest@0.24.0': - resolution: {integrity: sha512-t3o9OH+UskMIsZSoYv1cpG7PA/wBLbO+5Bzhlhrjp+5TxO1gaAE7/Up6SVUVwckXRprcthzxA1LPITtDHAEOCw==} + '@effect/vitest@0.25.0': + resolution: {integrity: sha512-FpOKYdhe3LaOoYn0cm5W9cD9bk2qwr2A+ujMhiDVxN7MMgndFsOd8uxcWjZRX6tWjzU2aKvZXFKGEp93GAmXug==} peerDependencies: - effect: ^3.16.13 + effect: ^3.17.0 vitest: ^3.2.0 '@effect/workflow@0.1.2': @@ -2522,9 +2554,18 @@ packages: peerDependencies: effect: ^3.16.3 + '@emnapi/core@1.4.5': + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/runtime@1.4.3': resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -3494,6 +3535,9 @@ packages: cpu: [x64] os: [win32] + '@napi-rs/wasm-runtime@1.0.1': + resolution: {integrity: sha512-KVlQ/jgywZpixGCKMNwxStmmbYEMyokZpCf2YuIChhfJA2uqfAKNEM8INz7zzTo55iEXfBhIIs3VqYyqzDLj8g==} + '@next/env@15.3.2': resolution: {integrity: sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==} @@ -3681,6 +3725,13 @@ packages: resolution: {integrity: sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==} engines: {node: '>=14'} + '@oxc-project/runtime@0.77.2': + resolution: {integrity: sha512-oqzN82vVbqK6BnUuYDlBMlMr8mEeysMn/P8HbiB3j5rD04JvIfONCfh6SbtJTxhp1C4cjLi1evrtVTIptrln7Q==} + engines: {node: '>=6.9.0'} + + '@oxc-project/types@0.77.2': + resolution: {integrity: sha512-+ZFWJF8ZBTOIO5PiNohNIw7JBzJCybScfrhLh65tcHCAtqaQkVDonjRD1HmMV/RF3rtt3r88hzSyTqvXs4j7vw==} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -3879,6 +3930,10 @@ packages: viem: optional: true + '@quansync/fs@0.1.3': + resolution: {integrity: sha512-G0OnZbMWEs5LhDyqy2UL17vGhSVHkQIfVojMtEWVenvj0V5S84VBgy86kJIuNsGDp2p7sTKlpSIpBUWdC35OKg==} + engines: {node: '>=20.0.0'} + '@radix-ui/primitive@1.1.2': resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} @@ -4315,12 +4370,85 @@ packages: peerDependencies: viem: ^2.0.0 + '@rolldown/binding-android-arm64@1.0.0-beta.28': + resolution: {integrity: sha512-hLb7k11KBXtO8xc7DO1OWriXWM/2FKv/R510NChqpzoI6au2aJbGUQTKJw4D8Mj7oHfY2Nwzy+sJBgWx/P8IKw==} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-beta.28': + resolution: {integrity: sha512-yRhjS3dcjfAasnJ2pTyCVm5rtfOmkGIglrFh+n9J7Zi4owJFsVVpbY7dOE3T1Op3mQ94apGN+Twtv6CIk6GFIQ==} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-beta.28': + resolution: {integrity: sha512-eOX0pjz++yVdqcDqnoZeVXUHxak2AcEgQBlEKJYaeJj+O5V3r3wSnlDVSkgD6YEAHo2IlIa89+qFHv529esY6w==} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.28': + resolution: {integrity: sha512-WV1QYVMkkp/568iaEBoZhD1axFLhSO+ybCJlbmHkTFMub4wb5bmKtfuaBgjUVDDSB6JfZ6UL3Z0Q9VVHENOgsg==} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.28': + resolution: {integrity: sha512-ug/Wh9Tz4XB/CsYvaI2r5uC3vE3zrP5iDIsD+uEgFPV71BOQOfXFgZbC1zv+J1adkzWACr578aGQqW9jRj0gVA==} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.28': + resolution: {integrity: sha512-h3hzQuP+5l47wxn9+A39n1Q3i4mAvbNFJCZ8EZLrkqfsecfeZ5btIbDJTVAIQTy+uPr7uluAHIf11Jw+YkWjOQ==} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.28': + resolution: {integrity: sha512-oW5LydGtfdT8TI5HTybxi1DdMCXCmVE1ak4VrSmVKsbBZyE0bDgL1UvTS1OOvuq4PM24zQHIuSNOpgLXgVj4vQ==} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.28': + resolution: {integrity: sha512-yeAAPMgssEkTCouUSYLrSWm+EXYBFI+ZTe8BVQkY5le51OCbqFNibtYkKZNHZBdhNRjWcSKSIuXN4MAXBz1j+g==} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.28': + resolution: {integrity: sha512-xWsylmva9L4ZFc28A9VGlF9fnrFpVxVC+kKqrBoqz2l/p5b4zRoFNtnSecivnxuPeR5Ga6W6lnpwGeWDvqBZ1Q==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.28': + resolution: {integrity: sha512-IdtRNm70EH7/1mjqXJc4pa2MoAxo/xl9hN8VySG9BQuYfhQz+JDC+FZBc+krlVUO3cTJz/o4xI/x4kA+rLKTwA==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.28': + resolution: {integrity: sha512-jS2G0+GtUCVcglCefScxgXeLJal0UAvVwvpy3reoC07K16k8WM/lXoYsZdpw34d5ONg0XcZpcokzA9R5K2o0lQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.28': + resolution: {integrity: sha512-K6SO4e48aqpE/E6iEaXYG1kVX3owLierZUngP44f7s6WcnNUXsX8aborZZkKDKjgfk654M/EjSI7riPQXfynIA==} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.28': + resolution: {integrity: sha512-IIAecHvlUY/oxADfA6sZFfmRx0ajY+U1rAPFT77COp11kf7irUJeD9GskFzCm+7Wm+q8Vogyh0KWqqd6f5Azgg==} + cpu: [ia32] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.28': + resolution: {integrity: sha512-eMGdPBhNkylib+7eaeC69axEjg5Y1Vie5LoKDBVaZ71jYTmtrUdna9PTUblkCIChNTQKlgxpi/eCaYmhId0aYA==} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-beta.19': resolution: {integrity: sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==} '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@rolldown/pluginutils@1.0.0-beta.28': + resolution: {integrity: sha512-fe3/1HZ3qJmXvkGv1kacKq2b+x9gbcyF1hnmLBVrRFEQWoOcRapQjXf8+hgyxI0EJAbnKEtrp5yhohQCFCjycw==} + '@rollup/plugin-inject@5.0.5': resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} @@ -5434,6 +5562,9 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + '@tybys/wasm-util@0.10.0': + resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -5566,9 +5697,6 @@ packages: '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - '@types/node@24.0.13': - resolution: {integrity: sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==} - '@types/node@24.0.15': resolution: {integrity: sha512-oaeTSbCef7U/z7rDeJA138xpG3NuKc64/rZ2qmUFkFJmnMsAPaluIifqyWd8hSSMxyP9oie3dLAqYPblag9KgA==} @@ -6153,6 +6281,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-kit@2.1.1: + resolution: {integrity: sha512-mfh6a7gKXE8pDlxTvqIc/syH/P3RkzbOF6LeHdcKztLEzYe6IMsRCL7N8vI7hqTGWNxpkCuuRTpT21xNWqhRtQ==} + engines: {node: '>=20.18.0'} + ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -6285,6 +6417,9 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + birpc@2.5.0: + resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -7292,6 +7427,15 @@ packages: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} + dts-resolver@2.1.1: + resolution: {integrity: sha512-3BiGFhB6mj5Kv+W2vdJseQUYW+SKVzAFJL6YNP6ursbrwy1fXHRotfHi3xLNxe4wZl/K8qbAFeCDjZLjzqxxRw==} + engines: {node: '>=20.18.0'} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -7311,9 +7455,6 @@ packages: effect@3.16.12: resolution: {integrity: sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==} - effect@3.16.13: - resolution: {integrity: sha512-xJDgOhD7+3qIY1d8PGfkaPZMfmdJuSp2XAQgc9dVF8pSl1FJL6WK4ZUpMh177R+GH8XgPloT8dlZsEYUYDo1Ag==} - effect@3.17.0: resolution: {integrity: sha512-szMlUsbPhP9lsrU+sDPXL9pQT2ew8PhcZvPm0p5dzYFbc+Jn/lH2i5thtmPQdm6Ut1rS4fS67SbuG7Qm0E0oZA==} @@ -7345,6 +7486,10 @@ packages: emoticon@4.1.0: resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} + encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} @@ -7928,6 +8073,9 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} @@ -8162,6 +8310,9 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} @@ -9485,8 +9636,8 @@ packages: multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - multipasta@0.2.5: - resolution: {integrity: sha512-c8eMDb1WwZcE02WVjHoOmUVk7fnKU/RmUcosHACglrWAuPQsEJv+E8430sXj6jNc1jHw0zrS16aCjQh4BcEb4A==} + multipasta@0.2.7: + resolution: {integrity: sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==} mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} @@ -10664,6 +10815,9 @@ packages: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + query-registry@3.0.1: resolution: {integrity: sha512-M9RxRITi2mHMVPU5zysNjctUT8bAPx6ltEXo/ir9+qmiM47Y7f0Ir3+OxUO5OjYAWdicBQRew7RtHtqUXydqlg==} engines: {node: '>=20'} @@ -11040,6 +11194,26 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + rolldown-plugin-dts@0.13.14: + resolution: {integrity: sha512-wjNhHZz9dlN6PTIXyizB6u/mAg1wEFMW9yw7imEVe3CxHSRnNHVyycIX0yDEOVJfDNISLPbkCIPEpFpizy5+PQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + '@typescript/native-preview': '>=7.0.0-dev.20250601.1' + rolldown: ^1.0.0-beta.9 + typescript: ^5.0.0 + vue-tsc: ^2.2.0 || ^3.0.0 + peerDependenciesMeta: + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.0.0-beta.28: + resolution: {integrity: sha512-QOANlVluwwrLP5snQqKfC2lv/KJphMkjh4V0gpw0K40GdKmhd8eShIGOJNAC51idk5cn3xI08SZTRWj0R2XlDw==} + hasBin: true + rollup@4.39.0: resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -11161,6 +11335,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -11721,6 +11900,9 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} @@ -11813,6 +11995,28 @@ packages: ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + tsdown@0.12.9: + resolution: {integrity: sha512-MfrXm9PIlT3saovtWKf/gCJJ/NQCdE0SiREkdNC+9Qy6UHhdeDPxnkFaBD7xttVUmgp0yUHtGirpoLB+OVLuLA==} + engines: {node: '>=18.0.0'} + hasBin: true + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + publint: ^0.3.0 + typescript: ^5.0.0 + unplugin-lightningcss: ^0.4.0 + unplugin-unused: ^0.5.0 + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + publint: + optional: true + typescript: + optional: true + unplugin-lightningcss: + optional: true + unplugin-unused: + optional: true + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -11948,6 +12152,9 @@ packages: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} + unconfig@7.3.2: + resolution: {integrity: sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==} + uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -13125,7 +13332,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/types': 7.28.0 transitivePeerDependencies: - supports-color @@ -13161,7 +13368,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.0 '@babel/helper-optimise-call-expression@7.27.1': dependencies: @@ -14064,6 +14271,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@base-ui-components/react@1.0.0-beta.0(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@babel/runtime': 7.27.1 @@ -15322,66 +15534,60 @@ snapshots: - uglify-js - webpack-cli - '@effect/cli@0.67.0(@effect/platform@0.88.0(effect@3.16.13))(@effect/printer-ansi@0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13))(@effect/printer@0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13))(effect@3.16.13)': + '@effect/cli@0.68.0(@effect/platform@0.89.0(effect@3.17.0))(@effect/printer-ansi@0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0))(@effect/printer@0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/platform': 0.88.0(effect@3.16.13) - '@effect/printer': 0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13) - '@effect/printer-ansi': 0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13) - effect: 3.16.13 + '@effect/platform': 0.89.0(effect@3.17.0) + '@effect/printer': 0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0) + '@effect/printer-ansi': 0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0) + effect: 3.17.0 ini: 4.1.3 toml: 3.0.0 yaml: 2.7.0 - '@effect/cluster@0.37.2(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/workflow@0.1.2(effect@3.16.13))(effect@3.16.13)': + '@effect/cluster@0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/platform': 0.88.0(effect@3.16.13) - '@effect/rpc': 0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) - '@effect/sql': 0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) - '@effect/workflow': 0.1.2(effect@3.16.13) - effect: 3.16.13 - - '@effect/experimental@0.51.1(@effect/platform@0.88.0(effect@3.16.12))(effect@3.16.12)': - dependencies: - '@effect/platform': 0.88.0(effect@3.16.12) - effect: 3.16.12 - uuid: 11.1.0 + '@effect/platform': 0.89.0(effect@3.17.0) + '@effect/rpc': 0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) + '@effect/sql': 0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) + '@effect/workflow': 0.1.2(effect@3.17.0) + effect: 3.17.0 - '@effect/experimental@0.51.1(@effect/platform@0.88.0(effect@3.17.0))(effect@3.17.0)': + '@effect/experimental@0.51.1(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/platform': 0.88.0(effect@3.17.0) + '@effect/platform': 0.89.0(effect@3.17.0) effect: 3.17.0 uuid: 11.1.0 - '@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13)': + '@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/platform': 0.88.0(effect@3.16.13) - effect: 3.16.13 + '@effect/platform': 0.89.0(effect@3.17.0) + effect: 3.17.0 uuid: 11.1.0 - '@effect/language-service@0.26.0': {} + '@effect/language-service@0.28.0': {} - '@effect/platform-node-shared@0.43.0(@effect/cluster@0.37.2(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/workflow@0.1.2(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(bufferutil@4.0.9)(effect@3.16.13)(utf-8-validate@5.0.10)': + '@effect/platform-node-shared@0.45.0(@effect/cluster@0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(utf-8-validate@5.0.10)': dependencies: - '@effect/cluster': 0.37.2(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/workflow@0.1.2(effect@3.16.13))(effect@3.16.13) - '@effect/platform': 0.88.0(effect@3.16.13) - '@effect/rpc': 0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) - '@effect/sql': 0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) + '@effect/cluster': 0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0) + '@effect/platform': 0.89.0(effect@3.17.0) + '@effect/rpc': 0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) + '@effect/sql': 0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) '@parcel/watcher': 2.5.1 - effect: 3.16.13 - multipasta: 0.2.5 + effect: 3.17.0 + multipasta: 0.2.7 ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node@0.90.0(@effect/cluster@0.37.2(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/workflow@0.1.2(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(bufferutil@4.0.9)(effect@3.16.13)(utf-8-validate@5.0.10)': + '@effect/platform-node@0.92.0(@effect/cluster@0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(utf-8-validate@5.0.10)': dependencies: - '@effect/cluster': 0.37.2(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/workflow@0.1.2(effect@3.16.13))(effect@3.16.13) - '@effect/platform': 0.88.0(effect@3.16.13) - '@effect/platform-node-shared': 0.43.0(@effect/cluster@0.37.2(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/workflow@0.1.2(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(bufferutil@4.0.9)(effect@3.16.13)(utf-8-validate@5.0.10) - '@effect/rpc': 0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) - '@effect/sql': 0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) - effect: 3.16.13 + '@effect/cluster': 0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0) + '@effect/platform': 0.89.0(effect@3.17.0) + '@effect/platform-node-shared': 0.45.0(@effect/cluster@0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(utf-8-validate@5.0.10) + '@effect/rpc': 0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) + '@effect/sql': 0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) + effect: 3.17.0 mime: 3.0.0 undici: 7.10.0 ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -15389,78 +15595,81 @@ snapshots: - bufferutil - utf-8-validate - '@effect/platform@0.88.0(effect@3.16.12)': - dependencies: - effect: 3.16.12 - find-my-way-ts: 0.1.6 - msgpackr: 1.11.4 - multipasta: 0.2.5 - - '@effect/platform@0.88.0(effect@3.16.13)': - dependencies: - effect: 3.16.13 - find-my-way-ts: 0.1.6 - msgpackr: 1.11.4 - multipasta: 0.2.5 - - '@effect/platform@0.88.0(effect@3.17.0)': + '@effect/platform@0.89.0(effect@3.17.0)': dependencies: + '@opentelemetry/semantic-conventions': 1.34.0 effect: 3.17.0 find-my-way-ts: 0.1.6 msgpackr: 1.11.4 - multipasta: 0.2.5 + multipasta: 0.2.7 - '@effect/printer-ansi@0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13)': + '@effect/printer-ansi@0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/printer': 0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13) - '@effect/typeclass': 0.31.10(effect@3.16.13) - effect: 3.16.13 + '@effect/printer': 0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0) + '@effect/typeclass': 0.31.10(effect@3.17.0) + effect: 3.17.0 - '@effect/printer@0.40.10(@effect/typeclass@0.31.10(effect@3.16.13))(effect@3.16.13)': + '@effect/printer@0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/typeclass': 0.31.10(effect@3.16.13) - effect: 3.16.13 + '@effect/typeclass': 0.31.10(effect@3.17.0) + effect: 3.17.0 - '@effect/rpc@0.61.4(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13)': + '@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/platform': 0.88.0(effect@3.16.13) - effect: 3.16.13 + '@effect/platform': 0.89.0(effect@3.17.0) + effect: 3.17.0 - '@effect/sql-sqlite-node@0.42.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(effect@3.16.13)': + '@effect/sql-sqlite-node@0.44.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/experimental': 0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) - '@effect/platform': 0.88.0(effect@3.16.13) - '@effect/sql': 0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) + '@effect/experimental': 0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) + '@effect/platform': 0.89.0(effect@3.17.0) + '@effect/sql': 0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) '@opentelemetry/semantic-conventions': 1.34.0 better-sqlite3: 11.10.0 - effect: 3.16.13 + effect: 3.17.0 - '@effect/sql@0.41.0(@effect/experimental@0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13))(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13)': + '@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/experimental': 0.52.0(@effect/platform@0.88.0(effect@3.16.13))(effect@3.16.13) - '@effect/platform': 0.88.0(effect@3.16.13) + '@effect/experimental': 0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) + '@effect/platform': 0.89.0(effect@3.17.0) '@opentelemetry/semantic-conventions': 1.34.0 - effect: 3.16.13 + effect: 3.17.0 uuid: 11.1.0 - '@effect/typeclass@0.31.10(effect@3.16.13)': + '@effect/typeclass@0.31.10(effect@3.17.0)': dependencies: - effect: 3.16.13 + effect: 3.17.0 + + '@effect/vitest@0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + dependencies: + effect: 3.17.0 + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - '@effect/vitest@0.24.0(effect@3.16.13)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@effect/workflow@0.1.2(effect@3.17.0)': dependencies: - effect: 3.16.13 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + effect: 3.17.0 - '@effect/workflow@0.1.2(effect@3.16.13)': + '@emnapi/core@1.4.5': dependencies: - effect: 3.16.13 + '@emnapi/wasi-threads': 1.0.4 + tslib: 2.8.1 + optional: true '@emnapi/runtime@1.4.3': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.4.5': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.4': + dependencies: + tslib: 2.8.1 + optional: true + '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 @@ -15996,13 +16205,13 @@ snapshots: - utf-8-validate - zod - '@graphprotocol/hypergraph-react@0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': + '@graphprotocol/hypergraph-react@0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': dependencies: '@automerge/automerge': 2.2.9 '@automerge/automerge-repo': 2.0.6 '@automerge/automerge-repo-react-hooks': 2.0.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) - '@graphprotocol/hypergraph': 0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/hypergraph': 0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@noble/hashes': 1.8.0 '@tanstack/react-query': 5.83.0(react@19.1.0) effect: 3.17.0 @@ -16022,11 +16231,11 @@ snapshots: - utf-8-validate - zod - '@graphprotocol/hypergraph@0.0.14(@effect/platform@0.88.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': + '@graphprotocol/hypergraph@0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': dependencies: '@automerge/automerge': 2.2.9 '@automerge/automerge-repo': 2.0.6 - '@effect/experimental': 0.51.1(@effect/platform@0.88.0(effect@3.17.0))(effect@3.17.0) + '@effect/experimental': 0.51.1(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@noble/ciphers': 1.3.0 '@noble/curves': 1.9.1 @@ -16074,7 +16283,7 @@ snapshots: graphql: 16.11.0 tslib: 2.6.2 - '@graphql-codegen/cli@5.0.7(@babel/core@7.28.0)(@parcel/watcher@2.5.1)(@types/node@24.0.13)(bufferutil@4.0.9)(encoding@0.1.13)(enquirer@2.4.1)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@graphql-codegen/cli@5.0.7(@babel/core@7.28.0)(@parcel/watcher@2.5.1)(@types/node@24.0.15)(bufferutil@4.0.9)(encoding@0.1.13)(enquirer@2.4.1)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: '@babel/generator': 7.27.1 '@babel/template': 7.27.1 @@ -16085,12 +16294,12 @@ snapshots: '@graphql-tools/apollo-engine-loader': 8.0.13(graphql@16.11.0) '@graphql-tools/code-file-loader': 8.1.13(graphql@16.11.0) '@graphql-tools/git-loader': 8.0.17(graphql@16.11.0) - '@graphql-tools/github-loader': 8.0.13(@types/node@24.0.13)(graphql@16.11.0) + '@graphql-tools/github-loader': 8.0.13(@types/node@24.0.15)(graphql@16.11.0) '@graphql-tools/graphql-file-loader': 8.0.12(graphql@16.11.0) '@graphql-tools/json-file-loader': 8.0.11(graphql@16.11.0) '@graphql-tools/load': 8.1.0(graphql@16.11.0) - '@graphql-tools/prisma-loader': 8.0.17(@types/node@24.0.13)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10) - '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.13)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) + '@graphql-tools/prisma-loader': 8.0.17(@types/node@24.0.15)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10) + '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) '@whatwg-node/fetch': 0.10.3 chalk: 4.1.2 @@ -16098,7 +16307,7 @@ snapshots: debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.11.0 - graphql-config: 5.1.3(@types/node@24.0.13)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + graphql-config: 5.1.3(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.7 @@ -16320,7 +16529,7 @@ snapshots: - bufferutil - utf-8-validate - '@graphql-tools/executor-http@1.2.6(@types/node@24.0.13)(graphql@16.11.0)': + '@graphql-tools/executor-http@1.2.6(@types/node@24.0.15)(graphql@16.11.0)': dependencies: '@graphql-tools/executor-common': 0.0.1(graphql@16.11.0) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) @@ -16329,7 +16538,7 @@ snapshots: '@whatwg-node/fetch': 0.10.3 extract-files: 11.0.0 graphql: 16.11.0 - meros: 1.3.0(@types/node@24.0.13) + meros: 1.3.0(@types/node@24.0.15) tslib: 2.8.1 value-or-promise: 1.0.12 transitivePeerDependencies: @@ -16369,9 +16578,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@8.0.13(@types/node@24.0.13)(graphql@16.11.0)': + '@graphql-tools/github-loader@8.0.13(@types/node@24.0.15)(graphql@16.11.0)': dependencies: - '@graphql-tools/executor-http': 1.2.6(@types/node@24.0.13)(graphql@16.11.0) + '@graphql-tools/executor-http': 1.2.6(@types/node@24.0.15)(graphql@16.11.0) '@graphql-tools/graphql-tag-pluck': 8.3.12(graphql@16.11.0) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) '@whatwg-node/fetch': 0.10.3 @@ -16439,9 +16648,9 @@ snapshots: graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/prisma-loader@8.0.17(@types/node@24.0.13)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10)': + '@graphql-tools/prisma-loader@8.0.17(@types/node@24.0.15)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10)': dependencies: - '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.13)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) + '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) '@types/js-yaml': 4.0.9 '@whatwg-node/fetch': 0.10.3 @@ -16483,10 +16692,10 @@ snapshots: graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/url-loader@8.0.24(@types/node@24.0.13)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10)': + '@graphql-tools/url-loader@8.0.24(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10)': dependencies: '@graphql-tools/executor-graphql-ws': 1.3.7(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) - '@graphql-tools/executor-http': 1.2.6(@types/node@24.0.13)(graphql@16.11.0) + '@graphql-tools/executor-http': 1.2.6(@types/node@24.0.15)(graphql@16.11.0) '@graphql-tools/executor-legacy-ws': 1.1.10(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) '@graphql-tools/wrap': 10.0.29(graphql@16.11.0) @@ -16692,7 +16901,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -16905,6 +17114,13 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true + '@napi-rs/wasm-runtime@1.0.1': + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.10.0 + optional: true + '@next/env@15.3.2': {} '@next/swc-darwin-arm64@15.3.2': @@ -17066,6 +17282,10 @@ snapshots: '@opentelemetry/semantic-conventions@1.34.0': {} + '@oxc-project/runtime@0.77.2': {} + + '@oxc-project/types@0.77.2': {} + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -17338,6 +17558,10 @@ snapshots: - typescript - utf-8-validate + '@quansync/fs@0.1.3': + dependencies: + quansync: 0.2.10 + '@radix-ui/primitive@1.1.2': {} '@radix-ui/react-arrow@1.1.7(@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)': @@ -18012,10 +18236,56 @@ snapshots: tslib: 2.8.1 viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@rolldown/binding-android-arm64@1.0.0-beta.28': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-beta.28': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-beta.28': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-beta.28': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.28': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.28': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.28': + optional: true + + '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.28': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.28': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.28': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.28': + dependencies: + '@napi-rs/wasm-runtime': 1.0.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.28': + optional: true + + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.28': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.28': + optional: true + '@rolldown/pluginutils@1.0.0-beta.19': {} '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rolldown/pluginutils@1.0.0-beta.28': {} + '@rollup/plugin-inject@5.0.5(rollup@4.45.0)': dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.45.0) @@ -18723,19 +18993,19 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.5 '@tailwindcss/oxide-win32-x64-msvc': 4.1.5 - '@tailwindcss/vite@4.1.10(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@tailwindcss/vite@4.1.10(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.10 '@tailwindcss/oxide': 4.1.10 tailwindcss: 4.1.10 - vite: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - '@tailwindcss/vite@4.1.11(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@tailwindcss/vite@4.1.11(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.11 '@tailwindcss/oxide': 4.1.11 tailwindcss: 4.1.11 - vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) '@tailwindcss/vite@4.1.11(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: @@ -18744,12 +19014,12 @@ snapshots: tailwindcss: 4.1.11 vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - '@tailwindcss/vite@4.1.5(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@tailwindcss/vite@4.1.5(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.5 '@tailwindcss/oxide': 4.1.5 tailwindcss: 4.1.5 - vite: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) '@tanstack/form-core@1.14.0': dependencies: @@ -18977,7 +19247,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': + '@tanstack/router-plugin@1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.28.0) @@ -18998,12 +19268,12 @@ snapshots: zod: 3.24.2 optionalDependencies: '@tanstack/react-router': 1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) webpack: 5.99.8 transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.127.5(@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2))': + '@tanstack/router-plugin@1.127.5(@tanstack/react-router@1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) @@ -19021,7 +19291,7 @@ snapshots: zod: 3.25.51 optionalDependencies: '@tanstack/react-router': 1.127.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2) transitivePeerDependencies: - supports-color @@ -19112,6 +19382,11 @@ snapshots: '@trysound/sax@0.2.0': {} + '@tybys/wasm-util@0.10.0': + dependencies: + tslib: 2.8.1 + optional: true + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -19138,11 +19413,11 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/chai@5.2.2': dependencies: @@ -19151,15 +19426,15 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.1 - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/cors@2.8.17': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/debug@4.1.12': dependencies: @@ -19187,14 +19462,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express-serve-static-core@5.0.1': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -19228,7 +19503,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/istanbul-lib-coverage@2.0.6': {} @@ -19256,7 +19531,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/node@12.20.55': {} @@ -19274,10 +19549,6 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@24.0.13': - dependencies: - undici-types: 7.8.0 - '@types/node@24.0.15': dependencies: undici-types: 7.8.0 @@ -19286,7 +19557,7 @@ snapshots: '@types/pg@8.15.0': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 pg-protocol: 1.7.0 pg-types: 4.0.2 @@ -19342,12 +19613,12 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/serve-index@1.9.4': dependencies: @@ -19356,12 +19627,12 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/stylis@4.2.5': {} @@ -19377,11 +19648,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 '@types/yargs-parser@21.0.3': {} @@ -19484,14 +19755,14 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.28.0) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -19506,7 +19777,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.6.0(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.6.0(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) @@ -19514,7 +19785,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.19 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -19538,14 +19809,6 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': - dependencies: - '@vitest/spy': 3.2.4 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@vitest/spy': 3.2.4 @@ -20430,6 +20693,11 @@ snapshots: assertion-error@2.0.1: {} + ast-kit@2.1.1: + dependencies: + '@babel/parser': 7.28.0 + pathe: 2.0.3 + ast-types@0.16.1: dependencies: tslib: 2.8.1 @@ -20601,6 +20869,8 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 + birpc@2.5.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -21769,6 +22039,8 @@ snapshots: dset@3.1.4: {} + dts-resolver@2.1.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -21793,11 +22065,6 @@ snapshots: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 - effect@3.16.13: - dependencies: - '@standard-schema/spec': 1.0.0 - fast-check: 3.23.2 - effect@3.17.0: dependencies: '@standard-schema/spec': 1.0.0 @@ -21837,6 +22104,8 @@ snapshots: emoticon@4.1.0: {} + empathic@2.0.0: {} + encode-utf8@1.0.3: {} encodeurl@1.0.2: {} @@ -22140,7 +22409,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 require-like: 0.1.2 event-target-shim@5.0.1: {} @@ -22561,6 +22830,10 @@ snapshots: get-stream@6.0.1: {} + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -22671,13 +22944,13 @@ snapshots: graphemer@1.4.0: {} - graphql-config@5.1.3(@types/node@24.0.13)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10): + graphql-config@5.1.3(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10): dependencies: '@graphql-tools/graphql-file-loader': 8.0.12(graphql@16.11.0) '@graphql-tools/json-file-loader': 8.0.11(graphql@16.11.0) '@graphql-tools/load': 8.1.0(graphql@16.11.0) '@graphql-tools/merge': 9.0.24(graphql@16.11.0) - '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.13)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) + '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) cosmiconfig: 8.3.6(typescript@5.8.3) graphql: 16.11.0 @@ -22921,6 +23194,8 @@ snapshots: dependencies: react-is: 16.13.1 + hookable@5.5.3: {} + hpack.js@2.1.6: dependencies: inherits: 2.0.4 @@ -23375,7 +23650,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.29 + '@types/node': 24.0.15 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -23383,13 +23658,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.15.29 + '@types/node': 24.0.15 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -24007,9 +24282,9 @@ snapshots: merge2@1.4.1: {} - meros@1.3.0(@types/node@24.0.13): + meros@1.3.0(@types/node@24.0.15): optionalDependencies: - '@types/node': 24.0.13 + '@types/node': 24.0.15 methods@1.1.2: {} @@ -24447,7 +24722,7 @@ snapshots: multiformats@9.9.0: {} - multipasta@0.2.5: {} + multipasta@0.2.7: {} mute-stream@0.0.8: {} @@ -25836,6 +26111,8 @@ snapshots: dependencies: side-channel: 1.1.0 + quansync@0.2.10: {} + query-registry@3.0.1: dependencies: query-string: 9.1.1 @@ -26337,6 +26614,45 @@ snapshots: hash-base: 3.0.5 inherits: 2.0.4 + rolldown-plugin-dts@0.13.14(rolldown@1.0.0-beta.28)(typescript@5.8.3): + dependencies: + '@babel/generator': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.1 + ast-kit: 2.1.1 + birpc: 2.5.0 + debug: 4.4.1 + dts-resolver: 2.1.1 + get-tsconfig: 4.10.1 + rolldown: 1.0.0-beta.28 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - oxc-resolver + - supports-color + + rolldown@1.0.0-beta.28: + dependencies: + '@oxc-project/runtime': 0.77.2 + '@oxc-project/types': 0.77.2 + '@rolldown/pluginutils': 1.0.0-beta.28 + ansis: 4.1.0 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-beta.28 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.28 + '@rolldown/binding-darwin-x64': 1.0.0-beta.28 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.28 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.28 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.28 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.28 + '@rolldown/binding-linux-arm64-ohos': 1.0.0-beta.28 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.28 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.28 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.28 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.28 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.28 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.28 + rollup@4.39.0: dependencies: '@types/estree': 1.0.7 @@ -26506,6 +26822,8 @@ snapshots: semver@7.7.1: {} + semver@7.7.2: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -27198,6 +27516,8 @@ snapshots: tinyexec@0.3.2: {} + tinyexec@1.0.1: {} + tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) @@ -27274,6 +27594,29 @@ snapshots: ts-log@2.2.7: {} + tsdown@0.12.9(typescript@5.8.3): + dependencies: + ansis: 4.1.0 + cac: 6.7.14 + chokidar: 4.0.3 + debug: 4.4.1 + diff: 8.0.2 + empathic: 2.0.0 + hookable: 5.5.3 + rolldown: 1.0.0-beta.28 + rolldown-plugin-dts: 0.13.14(rolldown@1.0.0-beta.28)(typescript@5.8.3) + semver: 7.7.2 + tinyexec: 1.0.1 + tinyglobby: 0.2.14 + unconfig: 7.3.2 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@typescript/native-preview' + - oxc-resolver + - supports-color + - vue-tsc + tslib@1.14.1: {} tslib@2.6.2: {} @@ -27416,6 +27759,13 @@ snapshots: unc-path-regex@0.1.2: {} + unconfig@7.3.2: + dependencies: + '@quansync/fs': 0.1.3 + defu: 6.1.4 + jiti: 2.4.2 + quansync: 0.2.10 + uncrypto@0.1.3: {} undici-types@6.19.8: {} @@ -27502,11 +27852,11 @@ snapshots: unpipe@1.0.0: {} - unplugin-fonts@1.3.1(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): + unplugin-fonts@1.3.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): dependencies: fast-glob: 3.3.3 unplugin: 2.0.0-beta.1 - vite: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) unplugin@2.0.0-beta.1: dependencies: @@ -27765,27 +28115,6 @@ snapshots: - utf-8-validate - zod - vite-node@3.2.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): - dependencies: - cac: 6.7.14 - debug: 4.4.1 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.0.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vite-node@3.2.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: cac: 6.7.14 @@ -27807,59 +28136,25 @@ snapshots: - tsx - yaml - vite-plugin-node-polyfills@0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): + vite-plugin-node-polyfills@0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.45.0) node-stdlib-browser: 1.3.1 - vite: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - rollup - vite-plugin-svgr@4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): + vite-plugin-svgr@4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.45.0) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) - vite: 6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite@6.3.5(@types/node@22.15.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): - dependencies: - esbuild: 0.25.2 - fdir: 6.4.4(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.39.0 - tinyglobby: 0.2.13 - optionalDependencies: - '@types/node': 22.15.15 - fsevents: 2.3.3 - jiti: 2.4.2 - lightningcss: 1.30.1 - terser: 5.39.1 - tsx: 4.20.3 - yaml: 2.7.0 - - vite@6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): - dependencies: - esbuild: 0.25.2 - fdir: 6.4.4(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.39.0 - tinyglobby: 0.2.13 - optionalDependencies: - '@types/node': 24.0.13 - fsevents: 2.3.3 - jiti: 2.4.2 - lightningcss: 1.30.1 - terser: 5.39.1 - tsx: 4.20.3 - yaml: 2.7.0 - vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: esbuild: 0.25.2 @@ -27877,7 +28172,7 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 - vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: esbuild: 0.25.2 fdir: 6.4.6(picomatch@4.0.2) @@ -27886,24 +28181,7 @@ snapshots: rollup: 4.45.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.13 - fsevents: 2.3.3 - jiti: 2.4.2 - lightningcss: 1.30.1 - terser: 5.39.1 - tsx: 4.20.3 - yaml: 2.7.0 - - vite@7.0.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): - dependencies: - esbuild: 0.25.2 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.6 - rollup: 4.45.0 - tinyglobby: 0.2.14 - optionalDependencies: - '@types/node': 24.0.13 + '@types/node': 24.0.15 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.30.1 @@ -27928,49 +28206,6 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): - dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.0 - debug: 4.4.1 - expect-type: 1.2.1 - magic-string: 0.30.17 - pathe: 2.0.3 - picomatch: 4.0.2 - std-env: 3.9.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.14 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - vite-node: 3.2.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/debug': 4.1.12 - '@types/node': 24.0.13 - jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: '@types/chai': 5.2.2 From a004e4f59fa6d9956af1618cd60f232f92b1f682 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Tue, 22 Jul 2025 08:17:26 -1000 Subject: [PATCH 05/30] feat(#351 | create-hypergraph-app): use prompts instead of options --- apps/create-hypergraph-app/src/Cli.ts | 71 ++++++++++++++++++--------- 1 file changed, 47 insertions(+), 24 deletions(-) diff --git a/apps/create-hypergraph-app/src/Cli.ts b/apps/create-hypergraph-app/src/Cli.ts index e5517d14..0796ddf2 100644 --- a/apps/create-hypergraph-app/src/Cli.ts +++ b/apps/create-hypergraph-app/src/Cli.ts @@ -1,6 +1,8 @@ -import { Command, Options, Span } from '@effect/cli'; -import { descriptionList } from '@effect/cli/HelpDoc'; -import { Console, Effect, Option, Schema } from 'effect'; +import { Command, Prompt } from '@effect/cli'; +import { FileSystem, Path } from '@effect/platform'; +import { NodeFileSystem } from '@effect/platform-node'; +import { Console, Data, Effect, Array as EffectArray, Schema } from 'effect'; +import type { NonEmptyReadonlyArray } from 'effect/Array'; const AvailableFrameworkKey = Schema.Union(Schema.Literal('vite-react')); type AvailableFrameworkKey = typeof AvailableFrameworkKey.Type; @@ -19,27 +21,48 @@ const availableFrameworks = { }, } as const satisfies Framework; -const createHypergraphApp = Command.make('create-hypergraph-app', { - args: { - template: Options.choice('template', Object.keys(availableFrameworks) as ReadonlyArray).pipe( - Options.withAlias('t'), - Options.withDescription('The template to scaffold'), - Options.optional, - Options.withDefault(Option.some('vite-react')), - Options.map((templOpt) => - Option.getOrElse(templOpt, () => 'vite-react'), - ), - ), - }, -}).pipe( - Command.withDescription(descriptionList([[]])), - Command.withHandler(({ args }) => - Effect.gen(function* () { - const template = args.template; - - return yield* Console.log('selected template', { template }); - }), - ), +const appNamePrompt = Prompt.text({ + message: 'What is your app named?', + default: 'my-hypergraph-app', +}); +const templatePrompt = Prompt.select({ + message: 'Choose your template', + choices: [ + { + title: 'Vite + React', + value: 'vite-react', + description: 'Scaffolds a vite + react app using @tanstack/react-router', + }, + ] as NonEmptyReadonlyArray>, +}); + +const prompts = Prompt.all([appNamePrompt, templatePrompt]); + +const createHypergraphApp = Command.prompt('create-hypergraph-app', prompts, ([appName, template]) => + Effect.gen(function* () { + const fs = yield* FileSystem.FileSystem; + const path = yield* Path.Path; + + const framework = availableFrameworks[template]; + + // check if directory already exists, if exists, and is not empty, throw an error + const targetDirectory = path.resolve('.', appName); + const exists = yield* fs.exists(targetDirectory); + if (exists) { + const targetDirRead = yield* fs.readDirectory(targetDirectory, { recursive: true }); + if (EffectArray.isNonEmptyArray(targetDirRead)) { + return yield* Console.error('The selected directory is not empty'); + } + } else { + // create the target directory + yield* fs.makeDirectory(targetDirectory, { recursive: true }); + } + + return yield* Console.log('selected template', { template, appName, targetDirectory }); + }), +).pipe( + Command.withDescription('Command line interface to scaffold a Hypergraph-enabled application'), + Command.provide(NodeFileSystem.layer), ); export const run = Command.run(createHypergraphApp, { From 8ea798fcde27bde3b3875586f8ad5a9bcf0055f3 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Tue, 22 Jul 2025 08:40:19 -1000 Subject: [PATCH 06/30] feat(#351 | create-hypergraph-app): bump @types/node to latest --- apps/connect/package.json | 2 +- apps/create-hypergraph-app/package.json | 2 +- .../template-vite-react/package.json | 2 +- apps/events/package.json | 2 +- apps/server/package.json | 2 +- apps/typesync/package.json | 2 +- pnpm-lock.yaml | 246 +++++++++--------- 7 files changed, 129 insertions(+), 129 deletions(-) diff --git a/apps/connect/package.json b/apps/connect/package.json index 063436d5..e56926ac 100644 --- a/apps/connect/package.json +++ b/apps/connect/package.json @@ -37,7 +37,7 @@ "devDependencies": { "@tailwindcss/vite": "^4.1.10", "@tanstack/router-plugin": "^1.120.2", - "@types/node": "^24.0.15", + "@types/node": "^24.1.0", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "@vitejs/plugin-react": "^4.4.1", diff --git a/apps/create-hypergraph-app/package.json b/apps/create-hypergraph-app/package.json index 527dae54..bde529e1 100644 --- a/apps/create-hypergraph-app/package.json +++ b/apps/create-hypergraph-app/package.json @@ -41,7 +41,7 @@ "@effect/platform-node": "^0.92.0", "@effect/printer-ansi": "^0.45.0", "@effect/vitest": "^0.25.0", - "@types/node": "^24.0.15", + "@types/node": "^24.1.0", "effect": "^3.17.0", "tsdown": "^0.12.9" } diff --git a/apps/create-hypergraph-app/template-vite-react/package.json b/apps/create-hypergraph-app/template-vite-react/package.json index 61cb39ea..42ca3ee5 100644 --- a/apps/create-hypergraph-app/template-vite-react/package.json +++ b/apps/create-hypergraph-app/template-vite-react/package.json @@ -34,7 +34,7 @@ "devDependencies": { "@eslint/js": "^9.31.0", "@tanstack/router-plugin": "^1.129.2", - "@types/node": "^24.0.15", + "@types/node": "^24.1.0", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.7.0", diff --git a/apps/events/package.json b/apps/events/package.json index b6bdfddc..7c0fc26b 100644 --- a/apps/events/package.json +++ b/apps/events/package.json @@ -41,7 +41,7 @@ "@biomejs/biome": "1.9.4", "@tailwindcss/vite": "^4.1.5", "@tanstack/router-plugin": "^1.120.2", - "@types/node": "^24.0.15", + "@types/node": "^24.1.0", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "@types/uuid": "^10.0.0", diff --git a/apps/server/package.json b/apps/server/package.json index fe63b884..355561f7 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@types/cors": "^2.8.17", "@types/express": "^5.0.1", - "@types/node": "^24.0.15", + "@types/node": "^24.1.0", "@types/pg": "^8.15.0", "@types/ws": "^8.18.1", "tsup": "^8.4.0", diff --git a/apps/typesync/package.json b/apps/typesync/package.json index d9837127..d6c4afe0 100644 --- a/apps/typesync/package.json +++ b/apps/typesync/package.json @@ -51,7 +51,7 @@ "@graphql-codegen/typescript": "^4.1.6", "@graphql-codegen/typescript-operations": "^4.6.1", "@tanstack/router-plugin": "^1.129.5", - "@types/node": "^24.0.15", + "@types/node": "^24.1.0", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 541c1846..57c4d8bd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,7 +37,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) apps/connect: dependencies: @@ -97,17 +97,17 @@ importers: version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) devDependencies: '@tailwindcss/vite': specifier: ^4.1.10 - version: 4.1.10(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.10(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/router-plugin': specifier: ^1.120.2 - version: 1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + version: 1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) '@types/node': - specifier: ^24.0.15 - version: 24.0.15 + specifier: ^24.1.0 + version: 24.1.0 '@types/react': specifier: ^19.1.3 version: 19.1.3 @@ -116,7 +116,7 @@ importers: version: 19.1.3(@types/react@19.1.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.4.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) prettier: specifier: ^3.6.0 version: 3.6.1 @@ -128,13 +128,13 @@ importers: version: 4.1.10 unplugin-fonts: specifier: ^1.3.1 - version: 1.3.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 1.3.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) vite-plugin-node-polyfills: specifier: ^0.23.0 - version: 0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) vite-plugin-svgr: specifier: ^4.3.0 - version: 4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) apps/create-hypergraph-app: devDependencies: @@ -155,10 +155,10 @@ importers: version: 0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0) '@effect/vitest': specifier: ^0.25.0 - version: 0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@types/node': - specifier: ^24.0.15 - version: 24.0.15 + specifier: ^24.1.0 + version: 24.1.0 effect: specifier: ^3.17.0 version: 3.17.0 @@ -192,7 +192,7 @@ importers: version: 1.2.7(@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) '@tailwindcss/vite': specifier: ^4.1.11 - version: 4.1.11(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.11(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/react-query': specifier: ^5.83.0 version: 5.83.0(react@19.1.0) @@ -225,17 +225,17 @@ importers: version: 4.1.11 vite: specifier: ^7.0.5 - version: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) devDependencies: '@eslint/js': specifier: ^9.31.0 version: 9.31.0 '@tanstack/router-plugin': specifier: ^1.129.2 - version: 1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + version: 1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) '@types/node': - specifier: ^24.0.15 - version: 24.0.15 + specifier: ^24.1.0 + version: 24.1.0 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -244,7 +244,7 @@ importers: version: 19.1.6(@types/react@19.1.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.7.0(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) eslint: specifier: ^9.31.0 version: 9.31.0(jiti@2.4.2) @@ -355,20 +355,20 @@ importers: version: 2.29.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) devDependencies: '@biomejs/biome': specifier: 1.9.4 version: 1.9.4 '@tailwindcss/vite': specifier: ^4.1.5 - version: 4.1.5(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.5(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/router-plugin': specifier: ^1.120.2 - version: 1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + version: 1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) '@types/node': - specifier: ^24.0.15 - version: 24.0.15 + specifier: ^24.1.0 + version: 24.1.0 '@types/react': specifier: ^19.1.3 version: 19.1.3 @@ -380,7 +380,7 @@ importers: version: 10.0.0 '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.4.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) globals: specifier: ^16.1.0 version: 16.1.0 @@ -477,8 +477,8 @@ importers: specifier: ^5.0.1 version: 5.0.1 '@types/node': - specifier: ^24.0.15 - version: 24.0.15 + specifier: ^24.1.0 + version: 24.1.0 '@types/pg': specifier: ^8.15.0 version: 8.15.0 @@ -517,7 +517,7 @@ importers: version: 1.1.12(@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) '@tailwindcss/vite': specifier: ^4.1.11 - version: 4.1.11(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.11(vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/react-form': specifier: ^1.14.1 version: 1.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -590,10 +590,10 @@ importers: version: 0.44.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(effect@3.17.0) '@effect/vitest': specifier: ^0.25.0 - version: 0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@graphql-codegen/cli': specifier: ^5.0.7 - version: 5.0.7(@babel/core@7.28.0)(@parcel/watcher@2.5.1)(@types/node@24.0.15)(bufferutil@4.0.9)(encoding@0.1.13)(enquirer@2.4.1)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + version: 5.0.7(@babel/core@7.28.0)(@parcel/watcher@2.5.1)(@types/node@24.1.0)(bufferutil@4.0.9)(encoding@0.1.13)(enquirer@2.4.1)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10) '@graphql-codegen/client-preset': specifier: ^4.8.3 version: 4.8.3(@babel/core@7.28.0)(encoding@0.1.13)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0) @@ -605,10 +605,10 @@ importers: version: 4.6.1(@babel/core@7.28.0)(encoding@0.1.13)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0) '@tanstack/router-plugin': specifier: ^1.129.5 - version: 1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2)) + version: 1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2)) '@types/node': - specifier: ^24.0.15 - version: 24.0.15 + specifier: ^24.1.0 + version: 24.1.0 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -617,7 +617,7 @@ importers: version: 19.1.6(@types/react@19.1.8) '@vitejs/plugin-react': specifier: ^4.6.0 - version: 4.6.0(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.6.0(vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) glob: specifier: ^11.0.3 version: 11.0.3 @@ -632,7 +632,7 @@ importers: version: 4.20.3 vite: specifier: ^7.0.4 - version: 7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + version: 7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) publishDirectory: dist apps/typesync/dist: @@ -660,7 +660,7 @@ importers: version: 1.1.12(@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) '@tailwindcss/vite': specifier: ^4.1.11 - version: 4.1.11(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.1.11(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@tanstack/react-form': specifier: ^1.14.1 version: 1.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -856,7 +856,7 @@ importers: version: 19.1.3 '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + version: 4.4.1(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@xstate/store': specifier: ^3.5.1 version: 3.5.1(react@19.1.0)(solid-js@1.9.5) @@ -5713,8 +5713,8 @@ packages: '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - '@types/node@24.0.15': - resolution: {integrity: sha512-oaeTSbCef7U/z7rDeJA138xpG3NuKc64/rZ2qmUFkFJmnMsAPaluIifqyWd8hSSMxyP9oie3dLAqYPblag9KgA==} + '@types/node@24.1.0': + resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -15656,10 +15656,10 @@ snapshots: dependencies: effect: 3.17.0 - '@effect/vitest@0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@effect/vitest@0.25.0(effect@3.17.0)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: effect: 3.17.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) '@effect/workflow@0.1.2(effect@3.17.0)': dependencies: @@ -16299,7 +16299,7 @@ snapshots: graphql: 16.11.0 tslib: 2.6.2 - '@graphql-codegen/cli@5.0.7(@babel/core@7.28.0)(@parcel/watcher@2.5.1)(@types/node@24.0.15)(bufferutil@4.0.9)(encoding@0.1.13)(enquirer@2.4.1)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': + '@graphql-codegen/cli@5.0.7(@babel/core@7.28.0)(@parcel/watcher@2.5.1)(@types/node@24.1.0)(bufferutil@4.0.9)(encoding@0.1.13)(enquirer@2.4.1)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: '@babel/generator': 7.27.1 '@babel/template': 7.27.1 @@ -16310,12 +16310,12 @@ snapshots: '@graphql-tools/apollo-engine-loader': 8.0.13(graphql@16.11.0) '@graphql-tools/code-file-loader': 8.1.13(graphql@16.11.0) '@graphql-tools/git-loader': 8.0.17(graphql@16.11.0) - '@graphql-tools/github-loader': 8.0.13(@types/node@24.0.15)(graphql@16.11.0) + '@graphql-tools/github-loader': 8.0.13(@types/node@24.1.0)(graphql@16.11.0) '@graphql-tools/graphql-file-loader': 8.0.12(graphql@16.11.0) '@graphql-tools/json-file-loader': 8.0.11(graphql@16.11.0) '@graphql-tools/load': 8.1.0(graphql@16.11.0) - '@graphql-tools/prisma-loader': 8.0.17(@types/node@24.0.15)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10) - '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) + '@graphql-tools/prisma-loader': 8.0.17(@types/node@24.1.0)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10) + '@graphql-tools/url-loader': 8.0.24(@types/node@24.1.0)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) '@whatwg-node/fetch': 0.10.3 chalk: 4.1.2 @@ -16323,7 +16323,7 @@ snapshots: debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.11.0 - graphql-config: 5.1.3(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10) + graphql-config: 5.1.3(@types/node@24.1.0)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.7 @@ -16545,7 +16545,7 @@ snapshots: - bufferutil - utf-8-validate - '@graphql-tools/executor-http@1.2.6(@types/node@24.0.15)(graphql@16.11.0)': + '@graphql-tools/executor-http@1.2.6(@types/node@24.1.0)(graphql@16.11.0)': dependencies: '@graphql-tools/executor-common': 0.0.1(graphql@16.11.0) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) @@ -16554,7 +16554,7 @@ snapshots: '@whatwg-node/fetch': 0.10.3 extract-files: 11.0.0 graphql: 16.11.0 - meros: 1.3.0(@types/node@24.0.15) + meros: 1.3.0(@types/node@24.1.0) tslib: 2.8.1 value-or-promise: 1.0.12 transitivePeerDependencies: @@ -16594,9 +16594,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@8.0.13(@types/node@24.0.15)(graphql@16.11.0)': + '@graphql-tools/github-loader@8.0.13(@types/node@24.1.0)(graphql@16.11.0)': dependencies: - '@graphql-tools/executor-http': 1.2.6(@types/node@24.0.15)(graphql@16.11.0) + '@graphql-tools/executor-http': 1.2.6(@types/node@24.1.0)(graphql@16.11.0) '@graphql-tools/graphql-tag-pluck': 8.3.12(graphql@16.11.0) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) '@whatwg-node/fetch': 0.10.3 @@ -16664,9 +16664,9 @@ snapshots: graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/prisma-loader@8.0.17(@types/node@24.0.15)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10)': + '@graphql-tools/prisma-loader@8.0.17(@types/node@24.1.0)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10)': dependencies: - '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) + '@graphql-tools/url-loader': 8.0.24(@types/node@24.1.0)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) '@types/js-yaml': 4.0.9 '@whatwg-node/fetch': 0.10.3 @@ -16708,10 +16708,10 @@ snapshots: graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/url-loader@8.0.24(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10)': + '@graphql-tools/url-loader@8.0.24(@types/node@24.1.0)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10)': dependencies: '@graphql-tools/executor-graphql-ws': 1.3.7(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) - '@graphql-tools/executor-http': 1.2.6(@types/node@24.0.15)(graphql@16.11.0) + '@graphql-tools/executor-http': 1.2.6(@types/node@24.1.0)(graphql@16.11.0) '@graphql-tools/executor-legacy-ws': 1.1.10(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) '@graphql-tools/wrap': 10.0.29(graphql@16.11.0) @@ -16917,7 +16917,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.0.15 + '@types/node': 22.15.29 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -19009,33 +19009,33 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.5 '@tailwindcss/oxide-win32-x64-msvc': 4.1.5 - '@tailwindcss/vite@4.1.10(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@tailwindcss/vite@4.1.10(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.10 '@tailwindcss/oxide': 4.1.10 tailwindcss: 4.1.10 - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - '@tailwindcss/vite@4.1.11(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@tailwindcss/vite@4.1.11(vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.11 '@tailwindcss/oxide': 4.1.11 tailwindcss: 4.1.11 - vite: 7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - '@tailwindcss/vite@4.1.11(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@tailwindcss/vite@4.1.11(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.11 '@tailwindcss/oxide': 4.1.11 tailwindcss: 4.1.11 - vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - '@tailwindcss/vite@4.1.5(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@tailwindcss/vite@4.1.5(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.5 '@tailwindcss/oxide': 4.1.5 tailwindcss: 4.1.5 - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) '@tanstack/form-core@1.14.0': dependencies: @@ -19273,7 +19273,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': + '@tanstack/router-plugin@1.120.2(@tanstack/react-router@1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.28.0) @@ -19294,12 +19294,12 @@ snapshots: zod: 3.24.2 optionalDependencies: '@tanstack/react-router': 1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) webpack: 5.99.8 transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': + '@tanstack/router-plugin@1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) @@ -19317,12 +19317,12 @@ snapshots: zod: 3.25.51 optionalDependencies: '@tanstack/react-router': 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) webpack: 5.99.8 transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2))': + '@tanstack/router-plugin@1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) @@ -19340,7 +19340,7 @@ snapshots: zod: 3.25.51 optionalDependencies: '@tanstack/react-router': 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2) transitivePeerDependencies: - supports-color @@ -19439,11 +19439,11 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/bonjour@3.5.13': dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 '@types/chai@5.2.2': dependencies: @@ -19452,15 +19452,15 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.1 - '@types/node': 24.0.15 + '@types/node': 22.15.29 '@types/connect@3.4.38': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/cors@2.8.17': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/debug@4.1.12': dependencies: @@ -19488,14 +19488,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express-serve-static-core@5.0.1': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -19529,7 +19529,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 '@types/istanbul-lib-coverage@2.0.6': {} @@ -19557,7 +19557,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 '@types/node@12.20.55': {} @@ -19575,7 +19575,7 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@24.0.15': + '@types/node@24.1.0': dependencies: undici-types: 7.8.0 @@ -19583,7 +19583,7 @@ snapshots: '@types/pg@8.15.0': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 pg-protocol: 1.7.0 pg-types: 4.0.2 @@ -19639,12 +19639,12 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/serve-index@1.9.4': dependencies: @@ -19653,12 +19653,12 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 '@types/stylis@4.2.5': {} @@ -19674,11 +19674,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/ws@8.18.1': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/yargs-parser@21.0.3': {} @@ -19781,29 +19781,29 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.28.0) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.4.1(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.4.1(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.28.0) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.6.0(vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.6.0(vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) @@ -19811,11 +19811,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.19 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.7.0(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.7.0(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) @@ -19823,7 +19823,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -19835,13 +19835,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': + '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -22435,7 +22435,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 require-like: 0.1.2 event-target-shim@5.0.1: {} @@ -22970,13 +22970,13 @@ snapshots: graphemer@1.4.0: {} - graphql-config@5.1.3(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10): + graphql-config@5.1.3(@types/node@24.1.0)(bufferutil@4.0.9)(graphql@16.11.0)(typescript@5.8.3)(utf-8-validate@5.0.10): dependencies: '@graphql-tools/graphql-file-loader': 8.0.12(graphql@16.11.0) '@graphql-tools/json-file-loader': 8.0.11(graphql@16.11.0) '@graphql-tools/load': 8.1.0(graphql@16.11.0) '@graphql-tools/merge': 9.0.24(graphql@16.11.0) - '@graphql-tools/url-loader': 8.0.24(@types/node@24.0.15)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) + '@graphql-tools/url-loader': 8.0.24(@types/node@24.1.0)(bufferutil@4.0.9)(graphql@16.11.0)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) cosmiconfig: 8.3.6(typescript@5.8.3) graphql: 16.11.0 @@ -23676,7 +23676,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 24.0.15 + '@types/node': 22.15.29 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -23684,13 +23684,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 24.0.15 + '@types/node': 22.15.29 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -24308,9 +24308,9 @@ snapshots: merge2@1.4.1: {} - meros@1.3.0(@types/node@24.0.15): + meros@1.3.0(@types/node@24.1.0): optionalDependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 methods@1.1.2: {} @@ -27878,11 +27878,11 @@ snapshots: unpipe@1.0.0: {} - unplugin-fonts@1.3.1(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): + unplugin-fonts@1.3.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): dependencies: fast-glob: 3.3.3 unplugin: 2.0.0-beta.1 - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) unplugin@2.0.0-beta.1: dependencies: @@ -28141,13 +28141,13 @@ snapshots: - utf-8-validate - zod - vite-node@3.2.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + vite-node@3.2.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -28162,26 +28162,26 @@ snapshots: - tsx - yaml - vite-plugin-node-polyfills@0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): + vite-plugin-node-polyfills@0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.45.0) node-stdlib-browser: 1.3.1 - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - rollup - vite-plugin-svgr@4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): + vite-plugin-svgr@4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.45.0) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: esbuild: 0.25.2 fdir: 6.4.4(picomatch@4.0.2) @@ -28190,7 +28190,7 @@ snapshots: rollup: 4.39.0 tinyglobby: 0.2.13 optionalDependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.30.1 @@ -28198,7 +28198,7 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 - vite@7.0.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: esbuild: 0.25.2 fdir: 6.4.6(picomatch@4.0.2) @@ -28207,7 +28207,7 @@ snapshots: rollup: 4.45.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.30.1 @@ -28215,7 +28215,7 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 - vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: esbuild: 0.25.2 fdir: 6.4.6(picomatch@4.0.2) @@ -28224,7 +28224,7 @@ snapshots: rollup: 4.45.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.30.1 @@ -28232,11 +28232,11 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.15)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -28254,12 +28254,12 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - vite-node: 3.2.4(@types/node@24.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + vite-node: 3.2.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.0.15 + '@types/node': 24.1.0 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - jiti From 64d196db0e26f53f494c927a054f46d88412ef9d Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Tue, 22 Jul 2025 10:32:05 -1000 Subject: [PATCH 07/30] feat(#351 | create-hypergraph-app): buildout ability scaffold app, install deps, initialize git --- apps/create-hypergraph-app/src/Cli.ts | 222 ++++++++++++++++-- apps/create-hypergraph-app/src/Utils.ts | 93 ++++++++ apps/create-hypergraph-app/test/Utils.test.ts | 207 ++++++++++++++++ apps/create-hypergraph-app/tsconfig.test.json | 10 + apps/create-hypergraph-app/vitest.config.ts | 12 + apps/typesync/package.json | 1 + pnpm-lock.yaml | 3 + tsconfig.json | 3 +- 8 files changed, 525 insertions(+), 26 deletions(-) create mode 100644 apps/create-hypergraph-app/src/Utils.ts create mode 100644 apps/create-hypergraph-app/test/Utils.test.ts create mode 100644 apps/create-hypergraph-app/tsconfig.test.json create mode 100644 apps/create-hypergraph-app/vitest.config.ts diff --git a/apps/create-hypergraph-app/src/Cli.ts b/apps/create-hypergraph-app/src/Cli.ts index 0796ddf2..b7a1d529 100644 --- a/apps/create-hypergraph-app/src/Cli.ts +++ b/apps/create-hypergraph-app/src/Cli.ts @@ -1,9 +1,20 @@ +import { execSync } from 'node:child_process'; +import { readdirSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; import { Command, Prompt } from '@effect/cli'; import { FileSystem, Path } from '@effect/platform'; import { NodeFileSystem } from '@effect/platform-node'; -import { Console, Data, Effect, Array as EffectArray, Schema } from 'effect'; +import type { PlatformError } from '@effect/platform/Error'; +import { Cause, Console, Data, Effect, Array as EffectArray, String as EffectString, Schema } from 'effect'; import type { NonEmptyReadonlyArray } from 'effect/Array'; +import * as Utils from './Utils.js'; + +const appNamePrompt = Prompt.text({ + message: 'What is your app named?', + default: 'my-hypergraph-app', +}); + const AvailableFrameworkKey = Schema.Union(Schema.Literal('vite-react')); type AvailableFrameworkKey = typeof AvailableFrameworkKey.Type; @@ -20,11 +31,6 @@ const availableFrameworks = { directory: 'template-vite-react', }, } as const satisfies Framework; - -const appNamePrompt = Prompt.text({ - message: 'What is your app named?', - default: 'my-hypergraph-app', -}); const templatePrompt = Prompt.select({ message: 'Choose your template', choices: [ @@ -36,30 +42,187 @@ const templatePrompt = Prompt.select({ ] as NonEmptyReadonlyArray>, }); -const prompts = Prompt.all([appNamePrompt, templatePrompt]); +const PackageManager = Schema.Literal('pnpm', 'bun', 'yarn', 'npm'); +type PackageManager = typeof PackageManager.Type; +const packageManangerPrompt = Prompt.select({ + message: 'What package manager do you want to use?', + choices: [ + { title: 'pnpm', value: 'pnpm' }, + { title: 'bun', value: 'bun' }, + { title: 'yarn', value: 'yarn' }, + { title: 'npm', value: 'npm' }, + ] as NonEmptyReadonlyArray>, +}); +const installDepsPropmpt = Prompt.toggle({ + message: 'Do you want us to install deps?', + active: 'Yes', + inactive: 'No', + initial: false, +}); -const createHypergraphApp = Command.prompt('create-hypergraph-app', prompts, ([appName, template]) => - Effect.gen(function* () { - const fs = yield* FileSystem.FileSystem; - const path = yield* Path.Path; +const initializeGitRepoPrompt = Prompt.toggle({ + message: 'Initialize a git repository?', + active: 'Tes', + inactive: 'No', + initial: true, +}); + +const prompts = Prompt.all([ + appNamePrompt, + templatePrompt, + packageManangerPrompt, + installDepsPropmpt, + initializeGitRepoPrompt, +]); - const framework = availableFrameworks[template]; +const createHypergraphApp = Command.prompt( + 'create-hypergraph-app', + prompts, + ([appName, template, pkgMananger, installDeps, initializeGitRepo]) => + Effect.gen(function* () { + const fs = yield* FileSystem.FileSystem; + const path = yield* Path.Path; - // check if directory already exists, if exists, and is not empty, throw an error - const targetDirectory = path.resolve('.', appName); - const exists = yield* fs.exists(targetDirectory); - if (exists) { - const targetDirRead = yield* fs.readDirectory(targetDirectory, { recursive: true }); - if (EffectArray.isNonEmptyArray(targetDirRead)) { - return yield* Console.error('The selected directory is not empty'); + const framework = availableFrameworks[template]; + + // check if directory already exists, if exists, and is not empty, throw an error + const targetDirectory = path.resolve('.', appName); + const exists = yield* fs.exists(targetDirectory); + if (exists) { + const targetDirRead = yield* fs.readDirectory(targetDirectory, { recursive: true }); + if (EffectArray.isNonEmptyArray(targetDirRead)) { + return yield* Console.error('The selected directory is not empty'); + } + } else { + // create the target directory + yield* fs.makeDirectory(targetDirectory, { recursive: true }); } - } else { - // create the target directory - yield* fs.makeDirectory(targetDirectory, { recursive: true }); - } - return yield* Console.log('selected template', { template, appName, targetDirectory }); - }), + yield* Console.log(`Scaffolding ${template} hypergraph app in ${targetDirectory}...`); + + // retrieve template directory based on selected template + const templateDir = path.resolve(fileURLToPath(import.meta.url), '..', '..', framework.directory); + const templatDirExists = yield* fs.exists(templateDir); + if (!templatDirExists) { + return yield* Console.error('Selected template does not exist'); + } + + /** + * Updates the name of the template package.json to the user-entered name in the prompt + */ + function updatePackageJson(directory: string) { + return Effect.gen(function* () { + const packageJsonPath = path.join(directory, 'package.json'); + // read the cloned package.json + const packageJson = yield* fs.readFileString(packageJsonPath).pipe(Effect.map(JSON.parse)); + + const validatedPackageName = Utils.validatePackageName(appName); + const name = validatedPackageName.normalizedName; + // update the name and description + packageJson.name = name; + + // rewrite file + yield* fs.writeFileString(packageJsonPath, JSON.stringify(packageJson, null, 2)); + }); + } + + function copyTemplate(src: string, dest: string): Effect.Effect { + return Effect.gen(function* () { + const skipDir = new Set(['node_modules', '.tanstack', 'dist']); + + yield* fs.makeDirectory(dest, { recursive: true }); + const entries = readdirSync(src, { withFileTypes: true }); + + for (const entry of entries) { + // Skip .git directory + if (EffectString.startsWith('.git')(entry.name)) continue; + // Skip the node_modules, .tanstack and dist directories + if (entry.isDirectory() && skipDir.has(entry.name)) continue; + + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, entry.name); + + if (entry.isDirectory()) { + yield* copyTemplate(srcPath, destPath); + } else { + yield* fs.copyFile(srcPath, destPath); + } + } + }); + } + + const installDepsInScaffoldedApp = Effect.async((resume) => { + try { + execSync(`${pkgMananger} install`, { + stdio: 'inherit', + cwd: targetDirectory, + }); + return resume(Effect.void); + } catch (err) { + return resume(Effect.fail(new InstallDepsError({ cause: err }))); + } + }); + + const initializeGit = Effect.gen(function* () { + yield* Effect.try({ + try: () => { + execSync('git init', { + stdio: 'inherit', + cwd: targetDirectory, + }); + }, + catch: (err) => new InitializeGitRepoError({ cause: err }), + }); + + yield* Effect.try({ + try: () => { + execSync('git add .', { + stdio: 'inherit', + cwd: targetDirectory, + }); + }, + catch: (err) => new InitializeGitRepoError({ cause: err }), + }); + + yield* Effect.try({ + try: () => { + execSync('git commit -m "Initial commit - Scaffold Hypergraph app"', { + stdio: 'inherit', + cwd: targetDirectory, + }); + }, + catch: (err) => new InitializeGitRepoError({ cause: err }), + }); + }); + + return yield* copyTemplate(templateDir, targetDirectory).pipe( + Effect.tapErrorCause((cause) => + Console.error('Failure copying the template directory files into your target directory', Cause.pretty(cause)), + ), + Effect.andThen(() => updatePackageJson(targetDirectory)), + // Initialize the git repo if user selected to + Effect.andThen(() => Effect.when(initializeGit, () => initializeGitRepo)), + Effect.tapErrorCause((cause) => Console.error('Failure initializing the git repository', Cause.pretty(cause))), + // Install the deps with the selected package manager if user selected to + Effect.andThen(() => Effect.when(installDepsInScaffoldedApp, () => installDeps)), + Effect.tapErrorCause((cause) => + Console.error(`Failure installing deps with ${pkgMananger}`, Cause.pretty(cause)), + ), + // success. inform user + Effect.andThen(() => + Console.log( + `🎉 Successfully scaffolded your hypergraph enabled app ${appName}!`, + '\r\n', + 'To start the app, run:', + '\r\n', + `cd ${appName}`, + installDeps ? '\r\n' : `\r\n${pkgMananger} install`, + '\r\n', + `${pkgMananger} run dev`, + ), + ), + ); + }), ).pipe( Command.withDescription('Command line interface to scaffold a Hypergraph-enabled application'), Command.provide(NodeFileSystem.layer), @@ -69,3 +232,12 @@ export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', version: '0.0.1', }); + +class InitializeGitRepoError extends Data.TaggedError( + 'Hypergraph/create-hypergraph-app/errors/InitializeGitRepoError', +)<{ + readonly cause: unknown; +}> {} +class InstallDepsError extends Data.TaggedError('Hypergraph/create-hypergraph-app/errors/InstallDepsError')<{ + readonly cause: unknown; +}> {} diff --git a/apps/create-hypergraph-app/src/Utils.ts b/apps/create-hypergraph-app/src/Utils.ts new file mode 100644 index 00000000..6cae6ec2 --- /dev/null +++ b/apps/create-hypergraph-app/src/Utils.ts @@ -0,0 +1,93 @@ +/** + * Validates and normalizes a package name according to npm rules + * Uses the official npm package name regex: + * "^(?:(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)?/[a-z0-9-._~])|[a-z0-9-~])[a-z0-9-._~]*$" + * + * @param name The proposed package name to validate + * @returns An object with validity status, normalized name and error message if invalid + */ +export function validatePackageName(name: string): { + isValid: boolean; + normalizedName: string; + errorMessage?: string; +} { + // Trim whitespace + const normalizedName = name.trim(); + + // Package name cannot be empty + if (!normalizedName) { + return { + isValid: false, + normalizedName: '', + errorMessage: 'Package name cannot be empty', + }; + } + + // Package name length constraints (npm limits to 214 chars) + if (normalizedName.length > 214) { + return { + isValid: false, + normalizedName, + errorMessage: 'Package name cannot exceed 214 characters', + }; + } + + // Use the official npm package name regex + const npmPackageNameRegex = /^(?:(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)?\/[a-z0-9-._~])|[a-z0-9-~])[a-z0-9-._~]*$/; + + // If the name already matches the regex, it's valid + if (npmPackageNameRegex.test(normalizedName)) { + return { + isValid: true, + normalizedName, + }; + } + + // Name is invalid, let's try to normalize it + + // Convert to lowercase (package names cannot contain uppercase) + let suggestedName = normalizedName.toLowerCase(); + + // Handle scoped packages (@username/package-name) + const isScopedPackage = suggestedName.startsWith('@'); + + if (isScopedPackage) { + const parts = suggestedName.split('/'); + + if (parts.length !== 2) { + // Malformed scoped package, fix the structure + const scopeName = parts[0].replace(/[^a-z0-9-*~]/g, '-').replace(/^@/, '@'); + const packageName = (parts[1] || 'package').replace(/[^a-z0-9-._~]/g, '-'); + suggestedName = `${scopeName}/${packageName}`; + } else { + // Fix each part of the scoped package + const scopeName = parts[0].replace(/[^a-z0-9-*~@]/g, '-'); + const packageName = parts[1].replace(/[^a-z0-9-._~]/g, '-'); + suggestedName = `${scopeName}/${packageName}`; + } + } else { + // Regular package (not scoped) + + // Remove invalid starting characters (only allow a-z, 0-9, tilde, hyphen) + suggestedName = suggestedName.replace(/^[^a-z0-9-~]+/, ''); + + if (suggestedName === '') { + suggestedName = 'package'; // Default if nothing valid remains + } + + // Replace invalid characters with hyphens + suggestedName = suggestedName.replace(/[^a-z0-9-._~]/g, '-'); + } + + // Test if our suggestion is valid + if (!npmPackageNameRegex.test(suggestedName)) { + // If still invalid, provide a simple fallback + suggestedName = isScopedPackage ? '@user/package' : 'package'; + } + + return { + isValid: false, + normalizedName: suggestedName, + errorMessage: `Invalid package name. Suggested alternative: ${suggestedName}`, + }; +} diff --git a/apps/create-hypergraph-app/test/Utils.test.ts b/apps/create-hypergraph-app/test/Utils.test.ts new file mode 100644 index 00000000..a394b791 --- /dev/null +++ b/apps/create-hypergraph-app/test/Utils.test.ts @@ -0,0 +1,207 @@ +import { describe, expect, it } from '@effect/vitest'; + +import * as Utils from '../src/Utils.js'; + +describe('Utils', () => { + describe('validatePackageName', () => { + describe('valid package names', () => { + it('should accept simple lowercase names', () => { + const result = Utils.validatePackageName('mypackage'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('mypackage'); + expect(result.errorMessage).toBeUndefined(); + }); + + it('should accept names with hyphens', () => { + const result = Utils.validatePackageName('my-package-name'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('my-package-name'); + }); + + it('should accept names with dots', () => { + const result = Utils.validatePackageName('my.package.name'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('my.package.name'); + }); + + it('should accept names with underscores', () => { + const result = Utils.validatePackageName('my_package_name'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('my_package_name'); + }); + + it('should accept names starting with numbers', () => { + const result = Utils.validatePackageName('123package'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('123package'); + }); + + it('should accept names starting with tilde', () => { + const result = Utils.validatePackageName('~package'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('~package'); + }); + + it('should accept valid scoped packages', () => { + const result = Utils.validatePackageName('@myorg/mypackage'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('@myorg/mypackage'); + }); + + it('should accept scoped packages with dots and underscores', () => { + const result = Utils.validatePackageName('@my-org/my.package_name'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('@my-org/my.package_name'); + }); + + it('should trim whitespace and validate', () => { + const result = Utils.validatePackageName(' mypackage '); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('mypackage'); + }); + }); + + describe('invalid package names', () => { + it('should reject empty names', () => { + const result = Utils.validatePackageName(''); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe(''); + expect(result.errorMessage).toBe('Package name cannot be empty'); + }); + + it('should reject names with only whitespace', () => { + const result = Utils.validatePackageName(' '); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe(''); + expect(result.errorMessage).toBe('Package name cannot be empty'); + }); + + it('should reject names exceeding 214 characters', () => { + const longName = 'a'.repeat(215); + const result = Utils.validatePackageName(longName); + expect(result.isValid).toBe(false); + expect(result.errorMessage).toBe('Package name cannot exceed 214 characters'); + }); + + it('should reject names with uppercase letters', () => { + const result = Utils.validatePackageName('MyPackage'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('mypackage'); + expect(result.errorMessage).toContain('Invalid package name'); + }); + + it('should reject names with spaces', () => { + const result = Utils.validatePackageName('my package'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('my-package'); + }); + + it('should reject names with special characters', () => { + const result = Utils.validatePackageName('my@package!'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('my-package-'); + }); + + it('should reject names starting with invalid characters', () => { + const result = Utils.validatePackageName('!package'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('package'); + }); + + it('should reject malformed scoped packages', () => { + const result = Utils.validatePackageName('@myorg'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('@user/package'); + }); + + it('should reject scoped packages with multiple slashes', () => { + const result = Utils.validatePackageName('@myorg/sub/package'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('@user/package'); + }); + }); + + describe('package name normalization', () => { + it('should convert uppercase to lowercase', () => { + const result = Utils.validatePackageName('MYPACKAGE'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('mypackage'); + }); + + it('should replace spaces with hyphens', () => { + const result = Utils.validatePackageName('my awesome package'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('my-awesome-package'); + }); + + it('should remove invalid starting characters', () => { + const result = Utils.validatePackageName('###package'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('package'); + }); + + it('should handle names that become empty after cleaning', () => { + const result = Utils.validatePackageName('###'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('package'); + }); + + it('should normalize scoped packages correctly', () => { + const result = Utils.validatePackageName('@My Org/My Package'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('@my-org/my-package'); + }); + + it('should handle scoped packages with invalid characters', () => { + const result = Utils.validatePackageName('@my!org/my!package'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('@my-org/my-package'); + }); + + it('should provide fallback for completely invalid names', () => { + const result = Utils.validatePackageName('@###/###'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('@---/---'); + }); + }); + + describe('edge cases', () => { + it('should handle single character names', () => { + const result = Utils.validatePackageName('a'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('a'); + }); + + it('should handle names at exactly 214 characters', () => { + const maxLengthName = 'a'.repeat(214); + const result = Utils.validatePackageName(maxLengthName); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe(maxLengthName); + }); + + it('should handle scoped packages with empty scope', () => { + const result = Utils.validatePackageName('@/package'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('@/package'); + }); + + it('should handle scoped packages with empty package name', () => { + const result = Utils.validatePackageName('@myorg/'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('@user/package'); + }); + + it('should handle names with consecutive special characters', () => { + const result = Utils.validatePackageName('my---package'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('my---package'); + }); + + it('should handle names with mixed valid and invalid characters', () => { + const result = Utils.validatePackageName('my$package%name'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('my-package-name'); + }); + }); + }); +}); diff --git a/apps/create-hypergraph-app/tsconfig.test.json b/apps/create-hypergraph-app/tsconfig.test.json new file mode 100644 index 00000000..52509c9f --- /dev/null +++ b/apps/create-hypergraph-app/tsconfig.test.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.base.json", + "include": ["test"], + "compilerOptions": { + "types": ["node"], + "tsBuildInfoFile": ".tsbuildinfo/test.tsbuildinfo", + "rootDir": "test", + "noEmit": true + } +} diff --git a/apps/create-hypergraph-app/vitest.config.ts b/apps/create-hypergraph-app/vitest.config.ts new file mode 100644 index 00000000..e516a830 --- /dev/null +++ b/apps/create-hypergraph-app/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + include: ['./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + exclude: [], + globals: true, + coverage: { + provider: 'v8', + }, + }, +}); diff --git a/apps/typesync/package.json b/apps/typesync/package.json index d6c4afe0..c7950b1c 100644 --- a/apps/typesync/package.json +++ b/apps/typesync/package.json @@ -43,6 +43,7 @@ "@effect/language-service": "^0.28.0", "@effect/platform": "^0.89.0", "@effect/platform-node": "^0.92.0", + "@effect/printer": "^0.45.0", "@effect/sql": "^0.43.0", "@effect/sql-sqlite-node": "^0.44.0", "@effect/vitest": "^0.25.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 57c4d8bd..e6c42ab6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -582,6 +582,9 @@ importers: '@effect/platform-node': specifier: ^0.92.0 version: 0.92.0(@effect/cluster@0.37.2(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(utf-8-validate@5.0.10) + '@effect/printer': + specifier: ^0.45.0 + version: 0.45.0(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0) '@effect/sql': specifier: ^0.43.0 version: 0.43.0(@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) diff --git a/tsconfig.json b/tsconfig.json index 5ba7f73b..63ecfed0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,6 +8,7 @@ { "path": "apps/server" }, { "path": "apps/connect" }, { "path": "apps/events" }, - { "path": "apps/typesync" } + { "path": "apps/typesync" }, + { "path": "apps/create-hypergraph-app" } ] } From 68a79db051ec0c64aca3e1f1932d9aecde04bb09 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Tue, 22 Jul 2025 10:38:05 -1000 Subject: [PATCH 08/30] feat(#351 | create-hypergraph-app): rebase main. sort order import --- apps/create-hypergraph-app/package.json | 4 +++- apps/create-hypergraph-app/src/Cli.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/create-hypergraph-app/package.json b/apps/create-hypergraph-app/package.json index 768ac90a..e583d3e8 100644 --- a/apps/create-hypergraph-app/package.json +++ b/apps/create-hypergraph-app/package.json @@ -26,7 +26,9 @@ "dev": "pnpx tsx ./src/bin.ts", "build": "tsdown", "check": "tsc --noEmit", - "start": "node ./dist/bin.js" + "start": "node ./dist/bin.js", + "lint": "biome check", + "lint:fix": "biome check --write --unsafe" }, "keywords": [ "The Graph", diff --git a/apps/create-hypergraph-app/src/Cli.ts b/apps/create-hypergraph-app/src/Cli.ts index b7a1d529..183ae93b 100644 --- a/apps/create-hypergraph-app/src/Cli.ts +++ b/apps/create-hypergraph-app/src/Cli.ts @@ -3,8 +3,8 @@ import { readdirSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { Command, Prompt } from '@effect/cli'; import { FileSystem, Path } from '@effect/platform'; -import { NodeFileSystem } from '@effect/platform-node'; import type { PlatformError } from '@effect/platform/Error'; +import { NodeFileSystem } from '@effect/platform-node'; import { Cause, Console, Data, Effect, Array as EffectArray, String as EffectString, Schema } from 'effect'; import type { NonEmptyReadonlyArray } from 'effect/Array'; From 39beee4a3063711804816bc600e6e93c04c82333 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Tue, 22 Jul 2025 18:11:32 -1000 Subject: [PATCH 09/30] feat(#351 | create-hypergraph-app): fixes. updates from testing --- apps/create-hypergraph-app/README.md | 12 + apps/create-hypergraph-app/package.json | 18 +- .../scripts/copy-package-json.ts | 43 +++ apps/create-hypergraph-app/src/Cli.ts | 73 ++++-- apps/create-hypergraph-app/src/Logger.ts | 20 ++ apps/create-hypergraph-app/src/Utils.ts | 132 +++++++++- apps/create-hypergraph-app/src/bin.ts | 11 +- apps/create-hypergraph-app/test/Utils.test.ts | 246 +++++++++++++++--- apps/create-hypergraph-app/tsconfig.json | 2 +- .../tsconfig.scripts.json | 2 +- pnpm-lock.yaml | 59 ++--- 11 files changed, 517 insertions(+), 101 deletions(-) create mode 100644 apps/create-hypergraph-app/scripts/copy-package-json.ts create mode 100644 apps/create-hypergraph-app/src/Logger.ts diff --git a/apps/create-hypergraph-app/README.md b/apps/create-hypergraph-app/README.md index 49bb1df3..32896243 100644 --- a/apps/create-hypergraph-app/README.md +++ b/apps/create-hypergraph-app/README.md @@ -36,6 +36,18 @@ Then follow the given prompts. - vite + react +## Example: scaffolding a vite + react app, initializing the git repo and installing deps with pnpm + +```bash +✔ What is your app named? … my-hypergraph-app +✔ Choose your template … Vite + React +✔ What package manager do you want to use? … pnpm +✔ Do you want us to install deps? … Yes / No +✔ Initialize a git repository? … Yes / No +Scaffolding vite-react hypergraph app in /my-hypergraph-app... +Initialized empty Git repository +``` + ## References - [create vite app](https://github.com/vitejs/vite/tree/main/packages/create-vite) diff --git a/apps/create-hypergraph-app/package.json b/apps/create-hypergraph-app/package.json index e583d3e8..a49ebf74 100644 --- a/apps/create-hypergraph-app/package.json +++ b/apps/create-hypergraph-app/package.json @@ -1,15 +1,15 @@ { "name": "@graphprotocol/create-hypergraph-app", - "version": "0.0.1", + "version": "0.0.0-alpha.10", "description": "CLI toolchain to scaffold a hypergraph-enabled application with a given template.", "type": "module", "bin": { - "create-hypergraph-app": "dist/bin.js", - "cha": "dist/bin.js" + "create-hypergraph-app": "./dist/bin.js", + "cha": "./dist/bin.js" }, "files": [ - "dist", - "template-*" + "template-*", + "dist" ], "repository": { "type": "git", @@ -24,7 +24,10 @@ "scripts": { "test": "vitest run", "dev": "pnpx tsx ./src/bin.ts", - "build": "tsdown", + "build": "tsdown && tsx scripts/copy-package-json.ts && pnpm run copy-all", + "copy-templates": "cp -r template-* dist/", + "copy-readme": "cp README.md dist/README.md", + "copy-all": "pnpm run copy-templates && pnpm run copy-readme", "check": "tsc --noEmit", "start": "node ./dist/bin.js", "lint": "biome check", @@ -54,6 +57,7 @@ "@effect/vitest": "^0.25.0", "@types/node": "^24.1.0", "effect": "^3.17.0", - "tsdown": "^0.12.9" + "tsdown": "^0.13.0", + "tsx": "^4.20.3" } } diff --git a/apps/create-hypergraph-app/scripts/copy-package-json.ts b/apps/create-hypergraph-app/scripts/copy-package-json.ts new file mode 100644 index 00000000..8ace73b2 --- /dev/null +++ b/apps/create-hypergraph-app/scripts/copy-package-json.ts @@ -0,0 +1,43 @@ +import * as path from 'node:path'; +import * as FileSystem from '@effect/platform/FileSystem'; +import * as NodeFileSystem from '@effect/platform-node/NodeFileSystem'; +import { Effect, pipe } from 'effect'; + +const read = pipe( + FileSystem.FileSystem, + Effect.flatMap((fileSystem) => fileSystem.readFileString('package.json')), + Effect.map((_) => JSON.parse(_)), + Effect.map((json) => ({ + name: json.name, + version: json.version, + description: json.description, + bin: { + 'create-hypergraph-app': 'bin.js', + cha: 'bin.js', + }, + engines: json.engines, + repository: json.repository, + license: json.license, + bugs: json.bugs, + homepage: json.homepage, + tags: json.tags, + keywords: json.keywords, + dependencies: json.dependencies, + })), +); + +const pathTo = path.join('dist', 'package.json'); + +const write = (pkg: object) => + FileSystem.FileSystem.pipe( + Effect.flatMap((fileSystem) => fileSystem.writeFileString(pathTo, JSON.stringify(pkg, null, 2))), + ); + +const program = pipe( + Effect.log(`Copying package.json to ${pathTo}...`), + Effect.zipRight(read), + Effect.flatMap(write), + Effect.provide(NodeFileSystem.layer), +); + +Effect.runPromise(program); diff --git a/apps/create-hypergraph-app/src/Cli.ts b/apps/create-hypergraph-app/src/Cli.ts index 183ae93b..6565219e 100644 --- a/apps/create-hypergraph-app/src/Cli.ts +++ b/apps/create-hypergraph-app/src/Cli.ts @@ -5,7 +5,8 @@ import { Command, Prompt } from '@effect/cli'; import { FileSystem, Path } from '@effect/platform'; import type { PlatformError } from '@effect/platform/Error'; import { NodeFileSystem } from '@effect/platform-node'; -import { Cause, Console, Data, Effect, Array as EffectArray, String as EffectString, Schema } from 'effect'; +import { Ansi, AnsiDoc } from '@effect/printer-ansi'; +import { Cause, Data, Effect, Array as EffectArray, String as EffectString, Schema } from 'effect'; import type { NonEmptyReadonlyArray } from 'effect/Array'; import * as Utils from './Utils.js'; @@ -13,6 +14,9 @@ import * as Utils from './Utils.js'; const appNamePrompt = Prompt.text({ message: 'What is your app named?', default: 'my-hypergraph-app', + validate(value) { + return Utils.validateProjectName(value); + }, }); const AvailableFrameworkKey = Schema.Union(Schema.Literal('vite-react')); @@ -22,6 +26,7 @@ const Framework = Schema.Record({ key: AvailableFrameworkKey, value: Schema.Struct({ directory: Schema.NonEmptyTrimmedString, + skipDirectories: Schema.Set(Schema.NonEmptyTrimmedString), }), }); type Framework = typeof Framework.Type; @@ -29,6 +34,7 @@ type Framework = typeof Framework.Type; const availableFrameworks = { 'vite-react': { directory: 'template-vite-react', + skipDirectories: new Set([...Utils.ALWAYS_SKIP_DIRECTORIES, '.tanstack', 'dist']), }, } as const satisfies Framework; const templatePrompt = Prompt.select({ @@ -62,7 +68,7 @@ const installDepsPropmpt = Prompt.toggle({ const initializeGitRepoPrompt = Prompt.toggle({ message: 'Initialize a git repository?', - active: 'Tes', + active: 'Yes', inactive: 'No', initial: true, }); @@ -91,20 +97,34 @@ const createHypergraphApp = Command.prompt( if (exists) { const targetDirRead = yield* fs.readDirectory(targetDirectory, { recursive: true }); if (EffectArray.isNonEmptyArray(targetDirRead)) { - return yield* Console.error('The selected directory is not empty'); + return yield* Effect.logError( + AnsiDoc.vsep([ + AnsiDoc.text('The selected directory is not empty.').pipe(AnsiDoc.annotate(Ansi.red)), + AnsiDoc.text(`Please choose an empty directory, or clean ${targetDirectory}`), + ]), + ); } } else { // create the target directory yield* fs.makeDirectory(targetDirectory, { recursive: true }); } - yield* Console.log(`Scaffolding ${template} hypergraph app in ${targetDirectory}...`); + yield* Effect.logInfo(AnsiDoc.text(`Scaffolding Hypergraph app ${appName} with template ${template}`)); // retrieve template directory based on selected template - const templateDir = path.resolve(fileURLToPath(import.meta.url), '..', '..', framework.directory); + const __filename = import.meta.filename; + const __dirname = path.dirname(fileURLToPath(import.meta.url)); + + const templateDir = EffectString.endsWith('Cli.ts')(__filename) + ? // running locally + path.resolve(__dirname, '..', '..', framework.directory) + : // running the published version + path.resolve(__dirname, framework.directory); const templatDirExists = yield* fs.exists(templateDir); if (!templatDirExists) { - return yield* Console.error('Selected template does not exist'); + return yield* Effect.logError( + AnsiDoc.text(`Selected template ${template} does not exist`).pipe(AnsiDoc.annotate(Ansi.red)), + ); } /** @@ -128,16 +148,12 @@ const createHypergraphApp = Command.prompt( function copyTemplate(src: string, dest: string): Effect.Effect { return Effect.gen(function* () { - const skipDir = new Set(['node_modules', '.tanstack', 'dist']); - yield* fs.makeDirectory(dest, { recursive: true }); const entries = readdirSync(src, { withFileTypes: true }); for (const entry of entries) { - // Skip .git directory - if (EffectString.startsWith('.git')(entry.name)) continue; - // Skip the node_modules, .tanstack and dist directories - if (entry.isDirectory() && skipDir.has(entry.name)) continue; + // Skip the node_modules, .tanstack, dist, and .git directories + if (entry.isDirectory() && framework.skipDirectories.has(entry.name)) continue; const srcPath = path.join(src, entry.name); const destPath = path.join(dest, entry.name); @@ -166,7 +182,7 @@ const createHypergraphApp = Command.prompt( const initializeGit = Effect.gen(function* () { yield* Effect.try({ try: () => { - execSync('git init', { + execSync('git init -q', { stdio: 'inherit', cwd: targetDirectory, }); @@ -186,7 +202,7 @@ const createHypergraphApp = Command.prompt( yield* Effect.try({ try: () => { - execSync('git commit -m "Initial commit - Scaffold Hypergraph app"', { + execSync('git commit -q -m "Initial commit - Scaffold Hypergraph app"', { stdio: 'inherit', cwd: targetDirectory, }); @@ -197,28 +213,33 @@ const createHypergraphApp = Command.prompt( return yield* copyTemplate(templateDir, targetDirectory).pipe( Effect.tapErrorCause((cause) => - Console.error('Failure copying the template directory files into your target directory', Cause.pretty(cause)), + Effect.logError( + 'Failure copying the template directory files into your target directory', + Cause.pretty(cause), + ), ), Effect.andThen(() => updatePackageJson(targetDirectory)), // Initialize the git repo if user selected to Effect.andThen(() => Effect.when(initializeGit, () => initializeGitRepo)), - Effect.tapErrorCause((cause) => Console.error('Failure initializing the git repository', Cause.pretty(cause))), + Effect.tapErrorCause((cause) => + Effect.logError('Failure initializing the git repository', Cause.pretty(cause)), + ), // Install the deps with the selected package manager if user selected to Effect.andThen(() => Effect.when(installDepsInScaffoldedApp, () => installDeps)), Effect.tapErrorCause((cause) => - Console.error(`Failure installing deps with ${pkgMananger}`, Cause.pretty(cause)), + Effect.logError(`Failure installing deps with ${pkgMananger}`, Cause.pretty(cause)), ), // success. inform user Effect.andThen(() => - Console.log( - `🎉 Successfully scaffolded your hypergraph enabled app ${appName}!`, - '\r\n', - 'To start the app, run:', - '\r\n', - `cd ${appName}`, - installDeps ? '\r\n' : `\r\n${pkgMananger} install`, + Effect.logInfo( + AnsiDoc.text(`🎉 Successfully scaffolded your hypergraph enabled app ${appName}!`), + '\r\n\r\n', + AnsiDoc.text('To start the app, run:'), + '\r\n\r\n', + AnsiDoc.text(`cd ${appName}`), + installDeps ? '\r\n' : AnsiDoc.text(`${pkgMananger} install`), '\r\n', - `${pkgMananger} run dev`, + AnsiDoc.text(`${pkgMananger} run dev`), ), ), ); @@ -230,7 +251,7 @@ const createHypergraphApp = Command.prompt( export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.0.1', + version: '0.0.0-alpha.10', }); class InitializeGitRepoError extends Data.TaggedError( diff --git a/apps/create-hypergraph-app/src/Logger.ts b/apps/create-hypergraph-app/src/Logger.ts new file mode 100644 index 00000000..bcdb898f --- /dev/null +++ b/apps/create-hypergraph-app/src/Logger.ts @@ -0,0 +1,20 @@ +import * as Ansi from '@effect/printer-ansi/Ansi'; +import * as AnsiDoc from '@effect/printer-ansi/AnsiDoc'; +import * as EffectArray from 'effect/Array'; +import * as Logger from 'effect/Logger'; + +export const AnsiDocLogger = Logger.make(({ message }) => { + const messageArr = EffectArray.ensure(message); + for (let i = 0; i < messageArr.length; i++) { + const currentMessage = messageArr[i]; + if (AnsiDoc.isDoc(currentMessage)) { + const prefix = AnsiDoc.text('create-hypergraph-app').pipe( + AnsiDoc.annotate(Ansi.cyan), + AnsiDoc.squareBracketed, + AnsiDoc.cat(AnsiDoc.colon), + ); + const document = AnsiDoc.catWithSpace(prefix, currentMessage as AnsiDoc.AnsiDoc); + globalThis.console.log(AnsiDoc.render(document, { style: 'pretty' })); + } + } +}); diff --git a/apps/create-hypergraph-app/src/Utils.ts b/apps/create-hypergraph-app/src/Utils.ts index 6cae6ec2..1f46056f 100644 --- a/apps/create-hypergraph-app/src/Utils.ts +++ b/apps/create-hypergraph-app/src/Utils.ts @@ -1,5 +1,135 @@ +import * as Effect from 'effect/Effect'; + +export const ALWAYS_SKIP_DIRECTORIES = ['node_modules', '.git']; + +const SCOPED_PACKAGE_REGEX = /^(?:@([^/]+?)[/])?([^/]+?)$/; + +const blockList = ['node_modules', 'favicon.ico']; + +// Generated with node -e 'console.log(require("module").builtinModules)' +const nodeBuiltins = [ + '_http_agent', + '_http_client', + '_http_common', + '_http_incoming', + '_http_outgoing', + '_http_server', + '_stream_duplex', + '_stream_passthrough', + '_stream_readable', + '_stream_transform', + '_stream_wrap', + '_stream_writable', + '_tls_common', + '_tls_wrap', + 'assert', + 'assert/strict', + 'async_hooks', + 'buffer', + 'child_process', + 'cluster', + 'console', + 'constants', + 'crypto', + 'dgram', + 'diagnostics_channel', + 'dns', + 'dns/promises', + 'domain', + 'events', + 'fs', + 'fs/promises', + 'http', + 'http2', + 'https', + 'inspector', + 'inspector/promises', + 'module', + 'net', + 'os', + 'path', + 'path/posix', + 'path/win32', + 'perf_hooks', + 'process', + 'punycode', + 'querystring', + 'readline', + 'readline/promises', + 'repl', + 'stream', + 'stream/consumers', + 'stream/promises', + 'stream/web', + 'string_decoder', + 'sys', + 'timers', + 'timers/promises', + 'tls', + 'trace_events', + 'tty', + 'url', + 'util', + 'util/types', + 'v8', + 'vm', + 'wasi', + 'worker_threads', + 'zlib', +]; + +const invalid = (message: string) => Effect.fail(message); + +export function validateProjectName(name: string): Effect.Effect { + if (name.length === 0) { + return invalid('Project name must be a non-empty string'); + } + if (name.length > 214) { + return invalid('Project name must not contain more than 214 characters'); + } + if (name.toLowerCase() !== name) { + return invalid('Project name must not contain capital letters'); + } + if (name.trim() !== name) { + return invalid('Project name must not contain leading or trailing whitespace'); + } + if (name.match(/^\./)) { + return invalid('Project name must not start with a period'); + } + if (name.match(/^_/)) { + return invalid('Project name must not start with an underscore'); + } + if (/[~'!()*]/.test(name.split('/').slice(-1)[0])) { + return invalid("Project name must not contain the special scharacters ~'!()*"); + } + const isNodeBuiltin = nodeBuiltins.some((builtinName) => { + return name.toLowerCase() === builtinName; + }); + if (isNodeBuiltin) { + return invalid('Project name must not be a NodeJS built-in module name'); + } + const isBlockedName = blockList.some((blockedName) => { + return name.toLowerCase() === blockedName; + }); + if (isBlockedName) { + return invalid(`Project name '${name}' is blocked from use`); + } + if (encodeURIComponent(name) !== name) { + // Check scoped packages + const result = name.match(SCOPED_PACKAGE_REGEX); + if (result) { + const user = result[1]; + const pkg = result[2]; + if (encodeURIComponent(user) !== user || encodeURIComponent(pkg) !== pkg) { + return invalid('Project name must only contain URL-friendly characters'); + } + } + } + return Effect.succeed(name); +} + /** - * Validates and normalizes a package name according to npm rules + * Validates and normalizes a package.json > name according to npm rules * Uses the official npm package name regex: * "^(?:(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)?/[a-z0-9-._~])|[a-z0-9-~])[a-z0-9-._~]*$" * diff --git a/apps/create-hypergraph-app/src/bin.ts b/apps/create-hypergraph-app/src/bin.ts index 50f1abb5..fd9fa568 100644 --- a/apps/create-hypergraph-app/src/bin.ts +++ b/apps/create-hypergraph-app/src/bin.ts @@ -2,11 +2,20 @@ import { NodeContext, NodeFileSystem, NodeRuntime } from '@effect/platform-node'; import * as Effect from 'effect/Effect'; +import * as Logger from 'effect/Logger'; +import * as LogLevel from 'effect/LogLevel'; import { run } from './Cli.js'; +import { AnsiDocLogger } from './Logger.js'; const runnable = Effect.suspend(() => run(process.argv)).pipe( + // replaces default logger with AnsiDocLogger + Effect.provide(Logger.replace(Logger.defaultLogger, AnsiDocLogger)), + Logger.withMinimumLogLevel(LogLevel.Info), Effect.provide(NodeFileSystem.layer), Effect.provide(NodeContext.layer), ); -runnable.pipe(NodeRuntime.runMain({ disableErrorReporting: process.env.NODE_ENV === 'prod' })); +runnable.pipe( + Effect.orDie, + NodeRuntime.runMain({ disableErrorReporting: process.env.NODE_ENV === 'prod', disablePrettyLogger: true }), +); diff --git a/apps/create-hypergraph-app/test/Utils.test.ts b/apps/create-hypergraph-app/test/Utils.test.ts index a394b791..308c6365 100644 --- a/apps/create-hypergraph-app/test/Utils.test.ts +++ b/apps/create-hypergraph-app/test/Utils.test.ts @@ -1,60 +1,62 @@ -import { describe, expect, it } from '@effect/vitest'; +import { describe, it } from '@effect/vitest'; +import * as Effect from 'effect/Effect'; +import * as Exit from 'effect/Exit'; import * as Utils from '../src/Utils.js'; describe('Utils', () => { describe('validatePackageName', () => { describe('valid package names', () => { - it('should accept simple lowercase names', () => { + it('should accept simple lowercase names', ({ expect }) => { const result = Utils.validatePackageName('mypackage'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('mypackage'); expect(result.errorMessage).toBeUndefined(); }); - it('should accept names with hyphens', () => { + it('should accept names with hyphens', ({ expect }) => { const result = Utils.validatePackageName('my-package-name'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('my-package-name'); }); - it('should accept names with dots', () => { + it('should accept names with dots', ({ expect }) => { const result = Utils.validatePackageName('my.package.name'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('my.package.name'); }); - it('should accept names with underscores', () => { + it('should accept names with underscores', ({ expect }) => { const result = Utils.validatePackageName('my_package_name'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('my_package_name'); }); - it('should accept names starting with numbers', () => { + it('should accept names starting with numbers', ({ expect }) => { const result = Utils.validatePackageName('123package'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('123package'); }); - it('should accept names starting with tilde', () => { + it('should accept names starting with tilde', ({ expect }) => { const result = Utils.validatePackageName('~package'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('~package'); }); - it('should accept valid scoped packages', () => { + it('should accept valid scoped packages', ({ expect }) => { const result = Utils.validatePackageName('@myorg/mypackage'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('@myorg/mypackage'); }); - it('should accept scoped packages with dots and underscores', () => { + it('should accept scoped packages with dots and underscores', ({ expect }) => { const result = Utils.validatePackageName('@my-org/my.package_name'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('@my-org/my.package_name'); }); - it('should trim whitespace and validate', () => { + it('should trim whitespace and validate', ({ expect }) => { const result = Utils.validatePackageName(' mypackage '); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('mypackage'); @@ -62,59 +64,59 @@ describe('Utils', () => { }); describe('invalid package names', () => { - it('should reject empty names', () => { + it('should reject empty names', ({ expect }) => { const result = Utils.validatePackageName(''); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe(''); expect(result.errorMessage).toBe('Package name cannot be empty'); }); - it('should reject names with only whitespace', () => { + it('should reject names with only whitespace', ({ expect }) => { const result = Utils.validatePackageName(' '); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe(''); expect(result.errorMessage).toBe('Package name cannot be empty'); }); - it('should reject names exceeding 214 characters', () => { + it('should reject names exceeding 214 characters', ({ expect }) => { const longName = 'a'.repeat(215); const result = Utils.validatePackageName(longName); expect(result.isValid).toBe(false); expect(result.errorMessage).toBe('Package name cannot exceed 214 characters'); }); - it('should reject names with uppercase letters', () => { + it('should reject names with uppercase letters', ({ expect }) => { const result = Utils.validatePackageName('MyPackage'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('mypackage'); expect(result.errorMessage).toContain('Invalid package name'); }); - it('should reject names with spaces', () => { + it('should reject names with spaces', ({ expect }) => { const result = Utils.validatePackageName('my package'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('my-package'); }); - it('should reject names with special characters', () => { + it('should reject names with special characters', ({ expect }) => { const result = Utils.validatePackageName('my@package!'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('my-package-'); }); - it('should reject names starting with invalid characters', () => { + it('should reject names starting with invalid characters', ({ expect }) => { const result = Utils.validatePackageName('!package'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('package'); }); - it('should reject malformed scoped packages', () => { + it('should reject malformed scoped packages', ({ expect }) => { const result = Utils.validatePackageName('@myorg'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('@user/package'); }); - it('should reject scoped packages with multiple slashes', () => { + it('should reject scoped packages with multiple slashes', ({ expect }) => { const result = Utils.validatePackageName('@myorg/sub/package'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('@user/package'); @@ -122,43 +124,43 @@ describe('Utils', () => { }); describe('package name normalization', () => { - it('should convert uppercase to lowercase', () => { + it('should convert uppercase to lowercase', ({ expect }) => { const result = Utils.validatePackageName('MYPACKAGE'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('mypackage'); }); - it('should replace spaces with hyphens', () => { + it('should replace spaces with hyphens', ({ expect }) => { const result = Utils.validatePackageName('my awesome package'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('my-awesome-package'); }); - it('should remove invalid starting characters', () => { + it('should remove invalid starting characters', ({ expect }) => { const result = Utils.validatePackageName('###package'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('package'); }); - it('should handle names that become empty after cleaning', () => { + it('should handle names that become empty after cleaning', ({ expect }) => { const result = Utils.validatePackageName('###'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('package'); }); - it('should normalize scoped packages correctly', () => { + it('should normalize scoped packages correctly', ({ expect }) => { const result = Utils.validatePackageName('@My Org/My Package'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('@my-org/my-package'); }); - it('should handle scoped packages with invalid characters', () => { + it('should handle scoped packages with invalid characters', ({ expect }) => { const result = Utils.validatePackageName('@my!org/my!package'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('@my-org/my-package'); }); - it('should provide fallback for completely invalid names', () => { + it('should provide fallback for completely invalid names', ({ expect }) => { const result = Utils.validatePackageName('@###/###'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('@---/---'); @@ -166,42 +168,222 @@ describe('Utils', () => { }); describe('edge cases', () => { - it('should handle single character names', () => { + it('should handle single character names', ({ expect }) => { const result = Utils.validatePackageName('a'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('a'); }); - it('should handle names at exactly 214 characters', () => { + it('should handle names at exactly 214 characters', ({ expect }) => { const maxLengthName = 'a'.repeat(214); const result = Utils.validatePackageName(maxLengthName); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe(maxLengthName); }); - it('should handle scoped packages with empty scope', () => { + it('should handle scoped packages with empty scope', ({ expect }) => { const result = Utils.validatePackageName('@/package'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('@/package'); }); - it('should handle scoped packages with empty package name', () => { + it('should handle scoped packages with empty package name', ({ expect }) => { const result = Utils.validatePackageName('@myorg/'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('@user/package'); }); - it('should handle names with consecutive special characters', () => { + it('should handle names with consecutive special characters', ({ expect }) => { const result = Utils.validatePackageName('my---package'); expect(result.isValid).toBe(true); expect(result.normalizedName).toBe('my---package'); }); - it('should handle names with mixed valid and invalid characters', () => { + it('should handle names with mixed valid and invalid characters', ({ expect }) => { const result = Utils.validatePackageName('my$package%name'); expect(result.isValid).toBe(false); expect(result.normalizedName).toBe('my-package-name'); }); }); }); + + describe('validateProjectName', () => { + describe('valid project names', () => { + it.effect('should accept simple lowercase names', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('myproject'); + expect(result).toEqual('myproject'); + }), + ); + + it.effect('should accept names with hyphens', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('my-project-name'); + expect(result).toBe('my-project-name'); + }), + ); + + it.effect('should accept names with dots', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('my.project.name'); + expect(result).toBe('my.project.name'); + }), + ); + + it.effect('should accept names with underscores after the first character', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('m_project'); + expect(result).toBe('m_project'); + }), + ); + + it.effect('should accept names with numbers', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('project123'); + expect(result).toBe('project123'); + }), + ); + + it.effect('should accept scoped packages with valid characters', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('@myorg/myproject'); + expect(result).toBe('@myorg/myproject'); + }), + ); + + it.effect('should accept names at exactly 214 characters', ({ expect }) => + Effect.gen(function* () { + const maxLengthName = 'a'.repeat(214); + const result = yield* Utils.validateProjectName(maxLengthName); + expect(result).toBe(maxLengthName); + }), + ); + }); + + describe('invalid project names', () => { + it.effect('should reject empty names', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName('')); + expect(result).toStrictEqual(Exit.fail('Project name must be a non-empty string')); + }), + ); + + it.effect('should reject names exceeding 214 characters', ({ expect }) => + Effect.gen(function* () { + const longName = 'a'.repeat(215); + const result = yield* Effect.exit(Utils.validateProjectName(longName)); + expect(result).toStrictEqual(Exit.fail('Project name must not contain more than 214 characters')); + }), + ); + + it.effect('should reject names with uppercase letters', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName('MyProject')); + expect(result).toStrictEqual(Exit.fail('Project name must not contain capital letters')); + }), + ); + + it.effect('should reject names with leading whitespace', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName(' myproject')); + expect(result).toStrictEqual(Exit.fail('Project name must not contain leading or trailing whitespace')); + }), + ); + + it.effect('should reject names with trailing whitespace', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName('myproject ')); + expect(result).toStrictEqual(Exit.fail('Project name must not contain leading or trailing whitespace')); + }), + ); + + it.effect('should reject names starting with a period', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName('.myproject')); + expect(result).toStrictEqual(Exit.fail('Project name must not start with a period')); + }), + ); + + it.effect('should reject names starting with an underscore', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName('_myproject')); + expect(result).toStrictEqual(Exit.fail('Project name must not start with an underscore')); + }), + ); + + it.effect("should reject names with special characters ~'!()*", ({ expect }) => + Effect.gen(function* () { + const specialChars = ['~', "'", '!', '(', ')', '*']; + for (const char of specialChars) { + const result = yield* Effect.exit(Utils.validateProjectName(`my${char}project`)); + expect(result).toStrictEqual(Exit.fail("Project name must not contain the special scharacters ~'!()*")); + } + }), + ); + + it.effect('should reject NodeJS built-in module names', ({ expect }) => + Effect.gen(function* () { + const builtins = ['fs', 'path', 'http', 'crypto', 'buffer']; + for (const builtin of builtins) { + const result = yield* Effect.exit(Utils.validateProjectName(builtin)); + expect(result).toStrictEqual(Exit.fail('Project name must not be a NodeJS built-in module name')); + } + }), + ); + + it.effect('should reject blocked names', ({ expect }) => + Effect.gen(function* () { + const blockedNames = ['node_modules', 'favicon.ico']; + for (const blocked of blockedNames) { + const result = yield* Effect.exit(Utils.validateProjectName(blocked)); + expect(result).toStrictEqual(Exit.fail(`Project name '${blocked}' is blocked from use`)); + } + }), + ); + + it.effect('should reject names with non-URL-friendly characters', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName('my')); + expect(result).toStrictEqual(Exit.fail('Project name must only contain URL-friendly characters')); + }), + ); + + it.effect('should reject scoped packages with non-URL-friendly characters', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName('@my/my')); + expect(result).toStrictEqual(Exit.fail('Project name must only contain URL-friendly characters')); + }), + ); + }); + + describe('edge cases', () => { + it.effect('should accept single character names', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('a'); + expect(result).toBe('a'); + }), + ); + + it.effect('should handle scoped packages with special characters in last segment', ({ expect }) => + Effect.gen(function* () { + const result = yield* Effect.exit(Utils.validateProjectName('@myorg/my!project')); + expect(result).toStrictEqual(Exit.fail("Project name must not contain the special scharacters ~'!()*")); + }), + ); + + it.effect('should accept names with multiple dots and hyphens', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('my-project.test.utils'); + expect(result).toBe('my-project.test.utils'); + }), + ); + + it.effect('should accept URL-friendly special characters', ({ expect }) => + Effect.gen(function* () { + const result = yield* Utils.validateProjectName('my-project_v2.0'); + expect(result).toBe('my-project_v2.0'); + }), + ); + }); + }); }); diff --git a/apps/create-hypergraph-app/tsconfig.json b/apps/create-hypergraph-app/tsconfig.json index b35721c3..a1739aff 100644 --- a/apps/create-hypergraph-app/tsconfig.json +++ b/apps/create-hypergraph-app/tsconfig.json @@ -3,7 +3,7 @@ "include": [], "references": [ { "path": "./tsconfig.src.json" }, - { "path": "tsconfig.scripts.json" }, + { "path": "./tsconfig.scripts.json" }, // templates { "path": "./template-vite-react/tsconfig.json"} ] diff --git a/apps/create-hypergraph-app/tsconfig.scripts.json b/apps/create-hypergraph-app/tsconfig.scripts.json index 7b037fdc..e974d95c 100644 --- a/apps/create-hypergraph-app/tsconfig.scripts.json +++ b/apps/create-hypergraph-app/tsconfig.scripts.json @@ -1,6 +1,6 @@ { "extends": "../../tsconfig.base.json", - "include": ["tsdown.config.ts"], + "include": ["tsdown.config.ts", "scripts"], "compilerOptions": { "tsBuildInfoFile": ".tsbuildinfo/scripts.tsbuildinfo", "types": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56ae7ee3..6f136773 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,9 +163,11 @@ importers: specifier: ^3.17.0 version: 3.17.0 tsdown: - specifier: ^0.12.9 - version: 0.12.9(typescript@5.8.3) - publishDirectory: dist + specifier: ^0.13.0 + version: 0.13.0(typescript@5.8.3) + tsx: + specifier: ^4.20.3 + version: 4.20.3 apps/create-hypergraph-app/template-vite-react: dependencies: @@ -8148,9 +8150,6 @@ packages: get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -11266,14 +11265,14 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - rolldown-plugin-dts@0.13.14: - resolution: {integrity: sha512-wjNhHZz9dlN6PTIXyizB6u/mAg1wEFMW9yw7imEVe3CxHSRnNHVyycIX0yDEOVJfDNISLPbkCIPEpFpizy5+PQ==} + rolldown-plugin-dts@0.14.1: + resolution: {integrity: sha512-M++jFiiI0dwd9jNnta5vfxc058wwoibgeBzNMZw0QRm8jPJYxy4P3nQYlBtwQagKUDQVR0LXHSrRgXTezELEhw==} engines: {node: '>=20.18.0'} peerDependencies: '@typescript/native-preview': '>=7.0.0-dev.20250601.1' rolldown: ^1.0.0-beta.9 typescript: ^5.0.0 - vue-tsc: ^2.2.0 || ^3.0.0 + vue-tsc: ~3.0.3 peerDependenciesMeta: '@typescript/native-preview': optional: true @@ -12067,9 +12066,9 @@ packages: ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} - tsdown@0.12.9: - resolution: {integrity: sha512-MfrXm9PIlT3saovtWKf/gCJJ/NQCdE0SiREkdNC+9Qy6UHhdeDPxnkFaBD7xttVUmgp0yUHtGirpoLB+OVLuLA==} - engines: {node: '>=18.0.0'} + tsdown@0.13.0: + resolution: {integrity: sha512-+1ZqbLIYDAiNxtAvq9RsTg55PRvaMxGmtvRFBW2J+i4GfDKiyHAkxez1eB3EPvHG1Z917nsf2madsSeblJS3GA==} + engines: {node: '>=20.19.0'} hasBin: true peerDependencies: '@arethetypeswrong/core': ^0.18.1 @@ -17008,7 +17007,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.29 + '@types/node': 24.1.0 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -19534,7 +19533,7 @@ snapshots: '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 '@types/chai@5.2.2': dependencies: @@ -19543,7 +19542,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.1 - '@types/node': 22.15.29 + '@types/node': 24.1.0 '@types/connect@3.4.38': dependencies: @@ -19579,7 +19578,7 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -19620,7 +19619,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 '@types/istanbul-lib-coverage@2.0.6': {} @@ -19648,7 +19647,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 '@types/node@12.20.55': {} @@ -19730,7 +19729,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 '@types/send@0.17.4': dependencies: @@ -19749,7 +19748,7 @@ snapshots: '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 '@types/stylis@4.2.5': {} @@ -22526,7 +22525,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 require-like: 0.1.2 event-target-shim@5.0.1: {} @@ -22951,10 +22950,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - get-tsconfig@4.8.1: - dependencies: - resolve-pkg-maps: 1.0.0 - github-from-package@0.0.0: {} github-slugger@1.5.0: {} @@ -23767,7 +23762,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.29 + '@types/node': 24.1.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -23775,13 +23770,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.15.29 + '@types/node': 24.1.0 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -26731,7 +26726,7 @@ snapshots: hash-base: 3.0.5 inherits: 2.0.4 - rolldown-plugin-dts@0.13.14(rolldown@1.0.0-beta.29)(typescript@5.8.3): + rolldown-plugin-dts@0.14.1(rolldown@1.0.0-beta.29)(typescript@5.8.3): dependencies: '@babel/generator': 7.28.0 '@babel/parser': 7.28.0 @@ -27711,7 +27706,7 @@ snapshots: ts-log@2.2.7: {} - tsdown@0.12.9(typescript@5.8.3): + tsdown@0.13.0(typescript@5.8.3): dependencies: ansis: 4.1.0 cac: 6.7.14 @@ -27721,7 +27716,7 @@ snapshots: empathic: 2.0.0 hookable: 5.5.3 rolldown: 1.0.0-beta.29 - rolldown-plugin-dts: 0.13.14(rolldown@1.0.0-beta.29)(typescript@5.8.3) + rolldown-plugin-dts: 0.14.1(rolldown@1.0.0-beta.29)(typescript@5.8.3) semver: 7.7.2 tinyexec: 1.0.1 tinyglobby: 0.2.14 @@ -27802,7 +27797,7 @@ snapshots: tsx@4.20.3: dependencies: esbuild: 0.25.2 - get-tsconfig: 4.8.1 + get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 From deee18d44bc0c84ff671ebd1dc981a9250d74db5 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Tue, 22 Jul 2025 18:15:34 -1000 Subject: [PATCH 10/30] feat(#351 | create-hypergraph-app): add create-hypergraph-app tests to root workspace --- vitest.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vitest.config.ts b/vitest.config.ts index d194e6db..fce266b6 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -2,6 +2,6 @@ import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { - projects: ['./packages/*', './apps/events', './apps/typesync'], + projects: ['./packages/*', './apps/events', './apps/typesync', './apps/create-hypergraph-app'], }, }); From bd88912c3a9e5e898d4ca29b0c0a317f799a730d Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Tue, 22 Jul 2025 18:46:26 -1000 Subject: [PATCH 11/30] feat(#351 | create-hypergraph-app): handle sigint of user killing cli with a log line instead of error message --- apps/create-hypergraph-app/package.json | 2 +- apps/create-hypergraph-app/src/Cli.ts | 10 +++++----- apps/create-hypergraph-app/src/bin.ts | 19 ++++++++++++++++--- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/apps/create-hypergraph-app/package.json b/apps/create-hypergraph-app/package.json index a49ebf74..64b9cc46 100644 --- a/apps/create-hypergraph-app/package.json +++ b/apps/create-hypergraph-app/package.json @@ -1,6 +1,6 @@ { "name": "@graphprotocol/create-hypergraph-app", - "version": "0.0.0-alpha.10", + "version": "0.0.0-alpha.11", "description": "CLI toolchain to scaffold a hypergraph-enabled application with a given template.", "type": "module", "bin": { diff --git a/apps/create-hypergraph-app/src/Cli.ts b/apps/create-hypergraph-app/src/Cli.ts index 6565219e..5fccf65e 100644 --- a/apps/create-hypergraph-app/src/Cli.ts +++ b/apps/create-hypergraph-app/src/Cli.ts @@ -233,12 +233,12 @@ const createHypergraphApp = Command.prompt( Effect.andThen(() => Effect.logInfo( AnsiDoc.text(`🎉 Successfully scaffolded your hypergraph enabled app ${appName}!`), - '\r\n\r\n', + AnsiDoc.hardLine, AnsiDoc.text('To start the app, run:'), - '\r\n\r\n', + AnsiDoc.hardLine, AnsiDoc.text(`cd ${appName}`), - installDeps ? '\r\n' : AnsiDoc.text(`${pkgMananger} install`), - '\r\n', + installDeps ? AnsiDoc.hardLine : AnsiDoc.text(`${pkgMananger} install`), + AnsiDoc.hardLine, AnsiDoc.text(`${pkgMananger} run dev`), ), ), @@ -251,7 +251,7 @@ const createHypergraphApp = Command.prompt( export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.0.0-alpha.10', + version: '0.0.0-alpha.11', }); class InitializeGitRepoError extends Data.TaggedError( diff --git a/apps/create-hypergraph-app/src/bin.ts b/apps/create-hypergraph-app/src/bin.ts index fd9fa568..b5c349cc 100644 --- a/apps/create-hypergraph-app/src/bin.ts +++ b/apps/create-hypergraph-app/src/bin.ts @@ -1,6 +1,8 @@ #!/usr/bin/env node import { NodeContext, NodeFileSystem, NodeRuntime } from '@effect/platform-node'; +import * as Ansi from '@effect/printer-ansi/Ansi'; +import * as AnsiDoc from '@effect/printer-ansi/AnsiDoc'; import * as Effect from 'effect/Effect'; import * as Logger from 'effect/Logger'; import * as LogLevel from 'effect/LogLevel'; @@ -9,13 +11,24 @@ import { run } from './Cli.js'; import { AnsiDocLogger } from './Logger.js'; const runnable = Effect.suspend(() => run(process.argv)).pipe( - // replaces default logger with AnsiDocLogger - Effect.provide(Logger.replace(Logger.defaultLogger, AnsiDocLogger)), - Logger.withMinimumLogLevel(LogLevel.Info), Effect.provide(NodeFileSystem.layer), Effect.provide(NodeContext.layer), ); + runnable.pipe( + Effect.catchAllDefect((defect) => + Effect.gen(function* () { + if (defect && typeof defect === 'object' && 'name' in defect && defect.name === 'QuitException') { + return yield* Effect.logError( + AnsiDoc.cat(AnsiDoc.hardLine, AnsiDoc.text('Exiting...').pipe(AnsiDoc.annotate(Ansi.red))), + ); + } + return Effect.die(defect); + }), + ), + // replaces default logger with AnsiDocLogger + Effect.provide(Logger.replace(Logger.defaultLogger, AnsiDocLogger)), + Logger.withMinimumLogLevel(LogLevel.Info), Effect.orDie, NodeRuntime.runMain({ disableErrorReporting: process.env.NODE_ENV === 'prod', disablePrettyLogger: true }), ); From 447cdb4b11ccb1da974db17bd6c48d54b04dfd0c Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 07:24:55 -1000 Subject: [PATCH 12/30] feat(#351 | create-hypergraph): rename to create-hypergraph (drop app) --- .../LICENSE | 0 .../README.md | 8 +- .../package.json | 8 +- .../scripts/copy-package-json.ts | 0 .../src/Cli.ts | 0 .../src/Logger.ts | 0 .../src/Utils.ts | 0 .../src/bin.ts | 0 .../template-vite-react/.gitignore | 0 .../template-vite-react/.prettierignore | 0 .../template-vite-react/.prettierrc | 0 .../template-vite-react/README.md | 0 .../template-vite-react/components.json | 0 .../template-vite-react/eslint.config.mjs | 0 .../template-vite-react/index.html | 0 .../template-vite-react/package.json | 0 .../template-vite-react/public/hypergraph.svg | 0 .../src/components/logout.tsx | 0 .../src/components/navbar.tsx | 0 .../src/components/spaces-menu.tsx | 0 .../src/components/ui/button.tsx | 0 .../src/components/ui/navigation-menu.tsx | 0 .../src/components/ui/tooltip.tsx | 0 .../template-vite-react/src/index.css | 0 .../template-vite-react/src/lib/utils.ts | 0 .../template-vite-react/src/main.tsx | 0 .../template-vite-react/src/mapping.ts | 0 .../template-vite-react/src/routeTree.gen.ts | 0 .../template-vite-react/src/routes/__root.tsx | 0 .../src/routes/authenticate-success.tsx | 0 .../src/routes/explore-public-knowledge.tsx | 0 .../template-vite-react/src/routes/index.tsx | 0 .../template-vite-react/src/routes/login.tsx | 0 .../src/routes/private-space/$space-id.tsx | 0 .../src/routes/public-space/$space-id.tsx | 0 .../template-vite-react/src/schema.ts | 0 .../template-vite-react/src/vite-env.d.ts | 0 .../template-vite-react/tsconfig.app.json | 0 .../template-vite-react/tsconfig.json | 0 .../template-vite-react/tsconfig.node.json | 0 .../template-vite-react/vite.config.ts | 0 .../test/Utils.test.ts | 0 .../tsconfig.build.json | 0 .../tsconfig.json | 0 .../tsconfig.scripts.json | 0 .../tsconfig.src.json | 0 .../tsconfig.test.json | 0 .../tsdown.config.ts | 0 .../vitest.config.ts | 0 biome.jsonc | 2 +- pnpm-lock.yaml | 183 ++++-------------- tsconfig.json | 2 +- vitest.config.ts | 2 +- 53 files changed, 48 insertions(+), 157 deletions(-) rename apps/{create-hypergraph-app => create-hypergraph}/LICENSE (100%) rename apps/{create-hypergraph-app => create-hypergraph}/README.md (90%) rename apps/{create-hypergraph-app => create-hypergraph}/package.json (89%) rename apps/{create-hypergraph-app => create-hypergraph}/scripts/copy-package-json.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/src/Cli.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/src/Logger.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/src/Utils.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/src/bin.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/.gitignore (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/.prettierignore (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/.prettierrc (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/README.md (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/components.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/eslint.config.mjs (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/index.html (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/package.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/public/hypergraph.svg (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/components/logout.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/components/navbar.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/components/spaces-menu.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/components/ui/button.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/components/ui/navigation-menu.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/components/ui/tooltip.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/index.css (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/lib/utils.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/main.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/mapping.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/routeTree.gen.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/routes/__root.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/routes/authenticate-success.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/routes/explore-public-knowledge.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/routes/index.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/routes/login.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/routes/private-space/$space-id.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/routes/public-space/$space-id.tsx (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/schema.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/src/vite-env.d.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/tsconfig.app.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/tsconfig.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/tsconfig.node.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/template-vite-react/vite.config.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/test/Utils.test.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/tsconfig.build.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/tsconfig.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/tsconfig.scripts.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/tsconfig.src.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/tsconfig.test.json (100%) rename apps/{create-hypergraph-app => create-hypergraph}/tsdown.config.ts (100%) rename apps/{create-hypergraph-app => create-hypergraph}/vitest.config.ts (100%) diff --git a/apps/create-hypergraph-app/LICENSE b/apps/create-hypergraph/LICENSE similarity index 100% rename from apps/create-hypergraph-app/LICENSE rename to apps/create-hypergraph/LICENSE diff --git a/apps/create-hypergraph-app/README.md b/apps/create-hypergraph/README.md similarity index 90% rename from apps/create-hypergraph-app/README.md rename to apps/create-hypergraph/README.md index 32896243..d6ac0cf4 100644 --- a/apps/create-hypergraph-app/README.md +++ b/apps/create-hypergraph/README.md @@ -9,25 +9,25 @@ Inspiration takes from the `vite`, `nextjs`, and `effect` create app command too With NPM: ```bash -npm create hypergraph-app@latest +npm create hypergraph@latest ``` With Yarn: ```bash -yarn create hypergraph-app +yarn create hypergraph ``` With PNPM: ```bash -pnpm create hypergraph-app@latest +pnpm create hypergraph@latest ``` With Bun: ```bash -bun create hypergraph-app +bun create hypergraph ``` Then follow the given prompts. diff --git a/apps/create-hypergraph-app/package.json b/apps/create-hypergraph/package.json similarity index 89% rename from apps/create-hypergraph-app/package.json rename to apps/create-hypergraph/package.json index 64b9cc46..52e47984 100644 --- a/apps/create-hypergraph-app/package.json +++ b/apps/create-hypergraph/package.json @@ -1,7 +1,7 @@ { - "name": "@graphprotocol/create-hypergraph-app", - "version": "0.0.0-alpha.11", - "description": "CLI toolchain to scaffold a hypergraph-enabled application with a given template.", + "name": "create-hypergraph", + "version": "0.0.0-alpha.1", + "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { "create-hypergraph-app": "./dist/bin.js", @@ -14,7 +14,7 @@ "repository": { "type": "git", "url": "git+https://github.com/graphprotocol/hypergraph.git", - "directory": "apps/create-hypergraph-app" + "directory": "apps/create-hypergraph" }, "publishConfig": { "access": "public", diff --git a/apps/create-hypergraph-app/scripts/copy-package-json.ts b/apps/create-hypergraph/scripts/copy-package-json.ts similarity index 100% rename from apps/create-hypergraph-app/scripts/copy-package-json.ts rename to apps/create-hypergraph/scripts/copy-package-json.ts diff --git a/apps/create-hypergraph-app/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts similarity index 100% rename from apps/create-hypergraph-app/src/Cli.ts rename to apps/create-hypergraph/src/Cli.ts diff --git a/apps/create-hypergraph-app/src/Logger.ts b/apps/create-hypergraph/src/Logger.ts similarity index 100% rename from apps/create-hypergraph-app/src/Logger.ts rename to apps/create-hypergraph/src/Logger.ts diff --git a/apps/create-hypergraph-app/src/Utils.ts b/apps/create-hypergraph/src/Utils.ts similarity index 100% rename from apps/create-hypergraph-app/src/Utils.ts rename to apps/create-hypergraph/src/Utils.ts diff --git a/apps/create-hypergraph-app/src/bin.ts b/apps/create-hypergraph/src/bin.ts similarity index 100% rename from apps/create-hypergraph-app/src/bin.ts rename to apps/create-hypergraph/src/bin.ts diff --git a/apps/create-hypergraph-app/template-vite-react/.gitignore b/apps/create-hypergraph/template-vite-react/.gitignore similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/.gitignore rename to apps/create-hypergraph/template-vite-react/.gitignore diff --git a/apps/create-hypergraph-app/template-vite-react/.prettierignore b/apps/create-hypergraph/template-vite-react/.prettierignore similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/.prettierignore rename to apps/create-hypergraph/template-vite-react/.prettierignore diff --git a/apps/create-hypergraph-app/template-vite-react/.prettierrc b/apps/create-hypergraph/template-vite-react/.prettierrc similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/.prettierrc rename to apps/create-hypergraph/template-vite-react/.prettierrc diff --git a/apps/create-hypergraph-app/template-vite-react/README.md b/apps/create-hypergraph/template-vite-react/README.md similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/README.md rename to apps/create-hypergraph/template-vite-react/README.md diff --git a/apps/create-hypergraph-app/template-vite-react/components.json b/apps/create-hypergraph/template-vite-react/components.json similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/components.json rename to apps/create-hypergraph/template-vite-react/components.json diff --git a/apps/create-hypergraph-app/template-vite-react/eslint.config.mjs b/apps/create-hypergraph/template-vite-react/eslint.config.mjs similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/eslint.config.mjs rename to apps/create-hypergraph/template-vite-react/eslint.config.mjs diff --git a/apps/create-hypergraph-app/template-vite-react/index.html b/apps/create-hypergraph/template-vite-react/index.html similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/index.html rename to apps/create-hypergraph/template-vite-react/index.html diff --git a/apps/create-hypergraph-app/template-vite-react/package.json b/apps/create-hypergraph/template-vite-react/package.json similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/package.json rename to apps/create-hypergraph/template-vite-react/package.json diff --git a/apps/create-hypergraph-app/template-vite-react/public/hypergraph.svg b/apps/create-hypergraph/template-vite-react/public/hypergraph.svg similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/public/hypergraph.svg rename to apps/create-hypergraph/template-vite-react/public/hypergraph.svg diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/logout.tsx b/apps/create-hypergraph/template-vite-react/src/components/logout.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/components/logout.tsx rename to apps/create-hypergraph/template-vite-react/src/components/logout.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/navbar.tsx b/apps/create-hypergraph/template-vite-react/src/components/navbar.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/components/navbar.tsx rename to apps/create-hypergraph/template-vite-react/src/components/navbar.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/spaces-menu.tsx b/apps/create-hypergraph/template-vite-react/src/components/spaces-menu.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/components/spaces-menu.tsx rename to apps/create-hypergraph/template-vite-react/src/components/spaces-menu.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/ui/button.tsx b/apps/create-hypergraph/template-vite-react/src/components/ui/button.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/components/ui/button.tsx rename to apps/create-hypergraph/template-vite-react/src/components/ui/button.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/ui/navigation-menu.tsx b/apps/create-hypergraph/template-vite-react/src/components/ui/navigation-menu.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/components/ui/navigation-menu.tsx rename to apps/create-hypergraph/template-vite-react/src/components/ui/navigation-menu.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/components/ui/tooltip.tsx b/apps/create-hypergraph/template-vite-react/src/components/ui/tooltip.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/components/ui/tooltip.tsx rename to apps/create-hypergraph/template-vite-react/src/components/ui/tooltip.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/index.css b/apps/create-hypergraph/template-vite-react/src/index.css similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/index.css rename to apps/create-hypergraph/template-vite-react/src/index.css diff --git a/apps/create-hypergraph-app/template-vite-react/src/lib/utils.ts b/apps/create-hypergraph/template-vite-react/src/lib/utils.ts similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/lib/utils.ts rename to apps/create-hypergraph/template-vite-react/src/lib/utils.ts diff --git a/apps/create-hypergraph-app/template-vite-react/src/main.tsx b/apps/create-hypergraph/template-vite-react/src/main.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/main.tsx rename to apps/create-hypergraph/template-vite-react/src/main.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/mapping.ts b/apps/create-hypergraph/template-vite-react/src/mapping.ts similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/mapping.ts rename to apps/create-hypergraph/template-vite-react/src/mapping.ts diff --git a/apps/create-hypergraph-app/template-vite-react/src/routeTree.gen.ts b/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/routeTree.gen.ts rename to apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/__root.tsx b/apps/create-hypergraph/template-vite-react/src/routes/__root.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/routes/__root.tsx rename to apps/create-hypergraph/template-vite-react/src/routes/__root.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/authenticate-success.tsx b/apps/create-hypergraph/template-vite-react/src/routes/authenticate-success.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/routes/authenticate-success.tsx rename to apps/create-hypergraph/template-vite-react/src/routes/authenticate-success.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/explore-public-knowledge.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/routes/explore-public-knowledge.tsx rename to apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/index.tsx b/apps/create-hypergraph/template-vite-react/src/routes/index.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/routes/index.tsx rename to apps/create-hypergraph/template-vite-react/src/routes/index.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/login.tsx b/apps/create-hypergraph/template-vite-react/src/routes/login.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/routes/login.tsx rename to apps/create-hypergraph/template-vite-react/src/routes/login.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/private-space/$space-id.tsx b/apps/create-hypergraph/template-vite-react/src/routes/private-space/$space-id.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/routes/private-space/$space-id.tsx rename to apps/create-hypergraph/template-vite-react/src/routes/private-space/$space-id.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/routes/public-space/$space-id.tsx b/apps/create-hypergraph/template-vite-react/src/routes/public-space/$space-id.tsx similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/routes/public-space/$space-id.tsx rename to apps/create-hypergraph/template-vite-react/src/routes/public-space/$space-id.tsx diff --git a/apps/create-hypergraph-app/template-vite-react/src/schema.ts b/apps/create-hypergraph/template-vite-react/src/schema.ts similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/schema.ts rename to apps/create-hypergraph/template-vite-react/src/schema.ts diff --git a/apps/create-hypergraph-app/template-vite-react/src/vite-env.d.ts b/apps/create-hypergraph/template-vite-react/src/vite-env.d.ts similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/src/vite-env.d.ts rename to apps/create-hypergraph/template-vite-react/src/vite-env.d.ts diff --git a/apps/create-hypergraph-app/template-vite-react/tsconfig.app.json b/apps/create-hypergraph/template-vite-react/tsconfig.app.json similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/tsconfig.app.json rename to apps/create-hypergraph/template-vite-react/tsconfig.app.json diff --git a/apps/create-hypergraph-app/template-vite-react/tsconfig.json b/apps/create-hypergraph/template-vite-react/tsconfig.json similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/tsconfig.json rename to apps/create-hypergraph/template-vite-react/tsconfig.json diff --git a/apps/create-hypergraph-app/template-vite-react/tsconfig.node.json b/apps/create-hypergraph/template-vite-react/tsconfig.node.json similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/tsconfig.node.json rename to apps/create-hypergraph/template-vite-react/tsconfig.node.json diff --git a/apps/create-hypergraph-app/template-vite-react/vite.config.ts b/apps/create-hypergraph/template-vite-react/vite.config.ts similarity index 100% rename from apps/create-hypergraph-app/template-vite-react/vite.config.ts rename to apps/create-hypergraph/template-vite-react/vite.config.ts diff --git a/apps/create-hypergraph-app/test/Utils.test.ts b/apps/create-hypergraph/test/Utils.test.ts similarity index 100% rename from apps/create-hypergraph-app/test/Utils.test.ts rename to apps/create-hypergraph/test/Utils.test.ts diff --git a/apps/create-hypergraph-app/tsconfig.build.json b/apps/create-hypergraph/tsconfig.build.json similarity index 100% rename from apps/create-hypergraph-app/tsconfig.build.json rename to apps/create-hypergraph/tsconfig.build.json diff --git a/apps/create-hypergraph-app/tsconfig.json b/apps/create-hypergraph/tsconfig.json similarity index 100% rename from apps/create-hypergraph-app/tsconfig.json rename to apps/create-hypergraph/tsconfig.json diff --git a/apps/create-hypergraph-app/tsconfig.scripts.json b/apps/create-hypergraph/tsconfig.scripts.json similarity index 100% rename from apps/create-hypergraph-app/tsconfig.scripts.json rename to apps/create-hypergraph/tsconfig.scripts.json diff --git a/apps/create-hypergraph-app/tsconfig.src.json b/apps/create-hypergraph/tsconfig.src.json similarity index 100% rename from apps/create-hypergraph-app/tsconfig.src.json rename to apps/create-hypergraph/tsconfig.src.json diff --git a/apps/create-hypergraph-app/tsconfig.test.json b/apps/create-hypergraph/tsconfig.test.json similarity index 100% rename from apps/create-hypergraph-app/tsconfig.test.json rename to apps/create-hypergraph/tsconfig.test.json diff --git a/apps/create-hypergraph-app/tsdown.config.ts b/apps/create-hypergraph/tsdown.config.ts similarity index 100% rename from apps/create-hypergraph-app/tsdown.config.ts rename to apps/create-hypergraph/tsdown.config.ts diff --git a/apps/create-hypergraph-app/vitest.config.ts b/apps/create-hypergraph/vitest.config.ts similarity index 100% rename from apps/create-hypergraph-app/vitest.config.ts rename to apps/create-hypergraph/vitest.config.ts diff --git a/biome.jsonc b/biome.jsonc index 5dbe4e5c..4c77405d 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -17,7 +17,7 @@ "!**/tsconfig.*.json", "!**/variant-schema.ts", "!**/apps/typesync/client/src/generated", - "!**/apps/create-hypergraph-app/template-*/**", + "!**/apps/create-hypergraph/template-*/**", "!**/*.css" ] }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6f136773..2e101936 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -136,7 +136,7 @@ importers: specifier: ^4.3.0 version: 4.3.0(rollup@4.45.0)(typescript@5.8.3)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) - apps/create-hypergraph-app: + apps/create-hypergraph: devDependencies: '@effect/cli': specifier: ^0.68.0 @@ -168,8 +168,11 @@ importers: tsx: specifier: ^4.20.3 version: 4.20.3 + publishDirectory: dist + + apps/create-hypergraph/dist: {} - apps/create-hypergraph-app/template-vite-react: + apps/create-hypergraph/template-vite-react: dependencies: '@graphprotocol/grc-20': specifier: ^0.21.6 @@ -200,7 +203,7 @@ importers: version: 5.83.0(react@19.1.0) '@tanstack/react-router': specifier: ^1.129.2 - version: 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -234,7 +237,7 @@ importers: version: 9.31.0 '@tanstack/router-plugin': specifier: ^1.129.2 - version: 1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + version: 1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) '@types/node': specifier: ^24.1.0 version: 24.1.0 @@ -676,11 +679,11 @@ importers: specifier: ^5.83.0 version: 5.83.0(@tanstack/react-query@5.83.0(react@19.1.0))(react@19.1.0) '@tanstack/react-router': - specifier: ^1.128.0 - version: 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.129.5 + version: 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/react-router-devtools': - specifier: ^1.128.0 - version: 1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.6)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) + specifier: ^1.129.5 + version: 1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.6)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) better-sqlite3: specifier: ^12.2.0 version: 12.2.0 @@ -688,7 +691,7 @@ importers: specifier: ^4.1.0 version: 4.1.0 effect: - specifier: ^3.16.16 + specifier: ^3.17.0 version: 3.17.0 graphql: specifier: ^16.11.0 @@ -5388,14 +5391,6 @@ packages: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router-devtools@1.129.2': - resolution: {integrity: sha512-8ipEnUv5lWcZYQ5ia0L2wOGqt1CJpfU8iSN9xaX7z93U9cRQg0G1IOf0iYkHpjfUe8WxRY6+5siST+qlKbdtJA==} - engines: {node: '>=12'} - peerDependencies: - '@tanstack/react-router': ^1.129.2 - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router-devtools@1.129.5': resolution: {integrity: sha512-PBmFfcJsru2RMfbyeNPm2WAlrccm3+n4yaBkz5morS0ZnfDm5MwKbf+RrjbiiGo9nj7EQh5uxuEw4nDg6winyA==} engines: {node: '>=12'} @@ -5411,13 +5406,6 @@ packages: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.129.2': - resolution: {integrity: sha512-ERGkvtb4qlo1ihrKUMJn2RfiC3T7rE/PpRtsATCmC0Gy0NmaO8S1+XvgriYl2bzdqTnBliwwIzqkKB9A2xPqDQ==} - engines: {node: '>=12'} - peerDependencies: - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.129.5': resolution: {integrity: sha512-t0Imn7opXrIflBBTId7u8QJTZQd8w2OboWkP+FcBls2jfybPjrgF2jOwQ3XZdlHhUJoIVUj/2aootlisjsPhig==} engines: {node: '>=12'} @@ -5453,10 +5441,6 @@ packages: resolution: {integrity: sha512-3dZYP5cCq3jJYgnRDzKR3w4sYzrXP5sw1st303ye87VV26r31I8UaIuUEs7kiJaxgWBvqHglWCiygBWQODZXVw==} engines: {node: '>=12'} - '@tanstack/router-core@1.129.2': - resolution: {integrity: sha512-M7OuzxbSkEFa1WWQoLOg7RtJUHzfaURMiRCLbKLEJWJkw1Cuylj7oBbzbawDAJFTHry9UUDZNPP0MSCfcXypPA==} - engines: {node: '>=12'} - '@tanstack/router-core@1.129.5': resolution: {integrity: sha512-xDKS4TAo1Qi1XfxNVjPNjwid4nTl5n2AeGHStLGwHEv/6MR4wbUmowOukxej1QcfbQSm0LZIO4OtJB3vWV38og==} engines: {node: '>=12'} @@ -5477,18 +5461,6 @@ packages: csstype: optional: true - '@tanstack/router-devtools-core@1.129.2': - resolution: {integrity: sha512-PlGJ5A54P0J8FAe7biiLARN9U6VCDPbnoNjqL9jsvf2A0X/cQw4fgediR+jsMjVuXNoL4kMDprVTpGT5PoVUaQ==} - engines: {node: '>=12'} - peerDependencies: - '@tanstack/router-core': ^1.129.2 - csstype: ^3.0.10 - solid-js: '>=1.9.5' - tiny-invariant: ^1.3.3 - peerDependenciesMeta: - csstype: - optional: true - '@tanstack/router-devtools-core@1.129.5': resolution: {integrity: sha512-V4zFbe0L4wZMk9VFJVyv7N9YpTD+jYZEShE+NZkJm/+XmvcV/Hnis/25frId8sA+Bsb1h9cM2cC/9Q3Ee8igDw==} engines: {node: '>=12'} @@ -5510,10 +5482,6 @@ packages: '@tanstack/react-router': optional: true - '@tanstack/router-generator@1.129.2': - resolution: {integrity: sha512-xCZYd4sgPFdlgEten7x+uJx+0y6iUm2d8cnE3cHHzzc5COf5jO+FFh9kVRa9Ouh4h/binv5dpKRBhB33TqPRfw==} - engines: {node: '>=12'} - '@tanstack/router-generator@1.129.5': resolution: {integrity: sha512-UqNdUcnaxPo1cVXXJJGn1uL1Wc5iLKP3RCBWoofcufUWII6PBP1A67dNLLj04ypLhpLvBF11YBeXb7cEZ0Yayg==} engines: {node: '>=12'} @@ -5539,27 +5507,6 @@ packages: webpack: optional: true - '@tanstack/router-plugin@1.129.2': - resolution: {integrity: sha512-uchyp0fMG6MmMJMxydmp4JTyIfW0FHVE4hwGSnP9dgoncQHbqZQt3qNEYbzPIV+JRp6DKjb8Ax5DAUgL7/LVCA==} - engines: {node: '>=12'} - peerDependencies: - '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.129.2 - vite: '>=5.0.0 || >=6.0.0' - vite-plugin-solid: ^2.11.2 - webpack: '>=5.92.0' - peerDependenciesMeta: - '@rsbuild/core': - optional: true - '@tanstack/react-router': - optional: true - vite: - optional: true - vite-plugin-solid: - optional: true - webpack: - optional: true - '@tanstack/router-plugin@1.129.5': resolution: {integrity: sha512-LUmSnxcvwnm66qe8Dz+yYzZbdD73V0zlqEaIYklD7657++PzdokRMlXBhAzaKCPBITBOHFCAlP6jKhnbJZGDzg==} engines: {node: '>=12'} @@ -13410,7 +13357,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -13443,7 +13390,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@babel/helper-plugin-utils@7.26.5': {} @@ -14245,7 +14192,7 @@ snapshots: dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 esutils: 2.0.3 '@babel/preset-react@7.27.1(@babel/core@7.28.0)': @@ -17141,8 +17088,8 @@ snapshots: '@metamask/utils@3.6.0': dependencies: '@types/debug': 4.1.12 - debug: 4.4.0 - semver: 7.7.1 + debug: 4.4.1 + semver: 7.7.2 superstruct: 1.0.4 transitivePeerDependencies: - supports-color @@ -19179,18 +19126,6 @@ snapshots: - solid-js - tiny-invariant - '@tanstack/react-router-devtools@1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.6)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': - dependencies: - '@tanstack/react-router': 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-devtools-core': 1.129.2(@tanstack/router-core@1.129.6)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - transitivePeerDependencies: - - '@tanstack/router-core' - - csstype - - solid-js - - tiny-invariant - '@tanstack/react-router-devtools@1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.129.6)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: '@tanstack/react-router': 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -19214,17 +19149,6 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@tanstack/history': 1.121.34 - '@tanstack/react-store': 0.7.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-core': 1.129.2 - isbot: 5.1.28 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - '@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@tanstack/history': 1.121.34 @@ -19268,16 +19192,6 @@ snapshots: '@tanstack/store': 0.7.0 tiny-invariant: 1.3.3 - '@tanstack/router-core@1.129.2': - dependencies: - '@tanstack/history': 1.121.34 - '@tanstack/store': 0.7.2 - cookie-es: 1.2.2 - seroval: 1.3.2 - seroval-plugins: 1.3.2(seroval@1.3.2) - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - '@tanstack/router-core@1.129.5': dependencies: '@tanstack/history': 1.121.34 @@ -19308,16 +19222,6 @@ snapshots: optionalDependencies: csstype: 3.1.3 - '@tanstack/router-devtools-core@1.129.2(@tanstack/router-core@1.129.6)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': - dependencies: - '@tanstack/router-core': 1.129.6 - clsx: 2.1.1 - goober: 2.1.16(csstype@3.1.3) - solid-js: 1.9.5 - tiny-invariant: 1.3.3 - optionalDependencies: - csstype: 3.1.3 - '@tanstack/router-devtools-core@1.129.5(@tanstack/router-core@1.129.6)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: '@tanstack/router-core': 1.129.6 @@ -19337,19 +19241,6 @@ snapshots: optionalDependencies: '@tanstack/react-router': 1.120.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-generator@1.129.2': - dependencies: - '@tanstack/router-core': 1.129.2 - '@tanstack/router-utils': 1.121.21 - '@tanstack/virtual-file-routes': 1.121.21 - prettier: 3.6.2 - recast: 0.23.11 - source-map: 0.7.4 - tsx: 4.20.3 - zod: 3.25.51 - transitivePeerDependencies: - - supports-color - '@tanstack/router-generator@1.129.5': dependencies: '@tanstack/router-core': 1.129.6 @@ -19389,16 +19280,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.129.2(@tanstack/react-router@1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': + '@tanstack/router-plugin@1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.0 - '@tanstack/router-core': 1.129.2 - '@tanstack/router-generator': 1.129.2 + '@babel/types': 7.28.1 + '@tanstack/router-core': 1.129.6 + '@tanstack/router-generator': 1.129.5 '@tanstack/router-utils': 1.121.21 '@tanstack/virtual-file-routes': 1.121.21 babel-dead-code-elimination: 1.0.10 @@ -19406,13 +19297,13 @@ snapshots: unplugin: 2.1.2 zod: 3.25.51 optionalDependencies: - '@tanstack/react-router': 1.129.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - webpack: 5.99.8 + '@tanstack/react-router': 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + vite: 7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2) transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2))': + '@tanstack/router-plugin@1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8)': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) @@ -19430,8 +19321,8 @@ snapshots: zod: 3.25.51 optionalDependencies: '@tanstack/react-router': 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 7.0.4(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.2) + vite: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + webpack: 5.99.8 transitivePeerDependencies: - supports-color @@ -19847,7 +19738,7 @@ snapshots: fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.1 + semver: 7.7.2 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -21743,7 +21634,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8 @@ -22847,7 +22738,7 @@ snapshots: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.7.1 + semver: 7.7.2 tapable: 1.1.3 typescript: 5.8.3 webpack: 5.99.8 @@ -24892,7 +24783,7 @@ snapshots: node-abi@3.74.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 node-addon-api@7.1.1: {} @@ -25225,7 +25116,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.1.0 registry-url: 6.0.1 - semver: 7.7.1 + semver: 7.7.2 package-manager-detector@0.2.8: {} @@ -25655,7 +25546,7 @@ snapshots: cosmiconfig: 8.3.6(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 - semver: 7.7.1 + semver: 7.7.2 webpack: 5.99.8 transitivePeerDependencies: - typescript @@ -26926,7 +26817,7 @@ snapshots: semver-diff@4.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 semver@5.7.2: {} @@ -26973,7 +26864,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -27077,7 +26968,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.1 '@img/sharp-darwin-x64': 0.34.1 @@ -28018,7 +27909,7 @@ snapshots: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.7.1 + semver: 7.7.2 semver-diff: 4.0.0 xdg-basedir: 5.1.0 diff --git a/tsconfig.json b/tsconfig.json index 63ecfed0..e25e00b1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,6 @@ { "path": "apps/connect" }, { "path": "apps/events" }, { "path": "apps/typesync" }, - { "path": "apps/create-hypergraph-app" } + { "path": "apps/create-hypergraph" } ] } diff --git a/vitest.config.ts b/vitest.config.ts index fce266b6..c9626b73 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -2,6 +2,6 @@ import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { - projects: ['./packages/*', './apps/events', './apps/typesync', './apps/create-hypergraph-app'], + projects: ['./packages/*', './apps/events', './apps/typesync', './apps/create-hypergraph'], }, }); From ba47d5345510e4da038d5cbf6a31427f4a58f155 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 07:29:36 -1000 Subject: [PATCH 13/30] feat(#351 | create-hypergraph): rename package.json bin to create-hypergraph --- apps/create-hypergraph/package.json | 6 +++--- apps/create-hypergraph/scripts/copy-package-json.ts | 4 ++-- apps/create-hypergraph/src/Cli.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 52e47984..9fc455d4 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,11 +1,11 @@ { "name": "create-hypergraph", - "version": "0.0.0-alpha.1", + "version": "0.0.0-alpha.2", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { - "create-hypergraph-app": "./dist/bin.js", - "cha": "./dist/bin.js" + "create-hypergraph": "./dist/bin.js", + "ch": "./dist/bin.js" }, "files": [ "template-*", diff --git a/apps/create-hypergraph/scripts/copy-package-json.ts b/apps/create-hypergraph/scripts/copy-package-json.ts index 8ace73b2..7d99f23e 100644 --- a/apps/create-hypergraph/scripts/copy-package-json.ts +++ b/apps/create-hypergraph/scripts/copy-package-json.ts @@ -12,8 +12,8 @@ const read = pipe( version: json.version, description: json.description, bin: { - 'create-hypergraph-app': 'bin.js', - cha: 'bin.js', + 'create-hypergraph': 'bin.js', + ch: 'bin.js', }, engines: json.engines, repository: json.repository, diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index 5fccf65e..c10d09f2 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -251,7 +251,7 @@ const createHypergraphApp = Command.prompt( export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.0.0-alpha.11', + version: '0.0.0-alpha.2', }); class InitializeGitRepoError extends Data.TaggedError( From f40426b5b927d3babc2e8228545888b2d09cbd82 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 07:41:34 -1000 Subject: [PATCH 14/30] feat(#351 | create-hypergraph): fix typo --- apps/create-hypergraph/package.json | 2 +- apps/create-hypergraph/src/Cli.ts | 2 +- .../template-vite-react/src/routes/private-space/$space-id.tsx | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 9fc455d4..30a3520f 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.0.0-alpha.2", + "version": "0.0.0-alpha.3", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index c10d09f2..4f9a6c83 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -251,7 +251,7 @@ const createHypergraphApp = Command.prompt( export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.0.0-alpha.2', + version: '0.0.0-alpha.3', }); class InitializeGitRepoError extends Data.TaggedError( diff --git a/apps/create-hypergraph/template-vite-react/src/routes/private-space/$space-id.tsx b/apps/create-hypergraph/template-vite-react/src/routes/private-space/$space-id.tsx index 764c62e3..9fa19500 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/private-space/$space-id.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/private-space/$space-id.tsx @@ -192,5 +192,4 @@ function PrivateSpace() {
); -} -s; +} \ No newline at end of file From 4446ffef87a30cbd72d536cc627069f5d85caae4 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 10:35:03 -1000 Subject: [PATCH 15/30] feat(#351 | create-hypergraph): resolve inputs from passed in options or prompts --- apps/create-hypergraph/README.md | 37 +- apps/create-hypergraph/package.json | 2 +- apps/create-hypergraph/src/Cli.ts | 493 ++++++++++++---------- apps/create-hypergraph/src/Domain.ts | 25 ++ apps/create-hypergraph/src/Utils.ts | 7 +- apps/create-hypergraph/src/bin.ts | 4 + apps/create-hypergraph/test/Utils.test.ts | 37 +- 7 files changed, 361 insertions(+), 244 deletions(-) create mode 100644 apps/create-hypergraph/src/Domain.ts diff --git a/apps/create-hypergraph/README.md b/apps/create-hypergraph/README.md index d6ac0cf4..d048b603 100644 --- a/apps/create-hypergraph/README.md +++ b/apps/create-hypergraph/README.md @@ -32,22 +32,35 @@ bun create hypergraph Then follow the given prompts. -### Currently Supported Templates - -- vite + react - -## Example: scaffolding a vite + react app, initializing the git repo and installing deps with pnpm +### Args + +- `app-name` -> if provided, used as the name of the app, as well as the directory the app is scaffolded in to + +### Params + +- `--template` -> if provided, uses the provided template + - options: + - vite-react +- `--package-manager` -> if provided, uses the provided package manager + - options: + - pnpm + - bun + - npm + - yarn +- `--skip-install-deps` -> if flag provided, the deps will not be install in the scaffolded app + - default: false +- `--skip-initialize-git` -> if flag provided, git will not be initialized in the scaffolded app + - default: false ```bash -✔ What is your app named? … my-hypergraph-app -✔ Choose your template … Vite + React -✔ What package manager do you want to use? … pnpm -✔ Do you want us to install deps? … Yes / No -✔ Initialize a git repository? … Yes / No -Scaffolding vite-react hypergraph app in /my-hypergraph-app... -Initialized empty Git repository +# fully configured +pnpm create hypergraph@latest --template vite-react --package-manager pnpm my-hypergraph-app ``` +### Currently Supported Templates + +- vite + react + ## References - [create vite app](https://github.com/vitejs/vite/tree/main/packages/create-vite) diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 30a3520f..04066916 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.0.0-alpha.3", + "version": "0.0.0-alpha.4", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index 4f9a6c83..8fe39df2 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -1,258 +1,323 @@ import { execSync } from 'node:child_process'; import { readdirSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; -import { Command, Prompt } from '@effect/cli'; +import { Args, Command, HelpDoc, Options, Prompt } from '@effect/cli'; import { FileSystem, Path } from '@effect/platform'; import type { PlatformError } from '@effect/platform/Error'; import { NodeFileSystem } from '@effect/platform-node'; import { Ansi, AnsiDoc } from '@effect/printer-ansi'; -import { Cause, Data, Effect, Array as EffectArray, String as EffectString, Schema } from 'effect'; -import type { NonEmptyReadonlyArray } from 'effect/Array'; +import { Cause, Data, Effect, Array as EffectArray, String as EffectString, Option } from 'effect'; +import * as Domain from './Domain.js'; import * as Utils from './Utils.js'; -const appNamePrompt = Prompt.text({ - message: 'What is your app named?', - default: 'my-hypergraph-app', - validate(value) { - return Utils.validateProjectName(value); - }, -}); +// ======================== +// Command Config +// ======================== -const AvailableFrameworkKey = Schema.Union(Schema.Literal('vite-react')); -type AvailableFrameworkKey = typeof AvailableFrameworkKey.Type; +const appName = Args.directory({ name: 'app-name', exists: 'no' }).pipe( + Args.withDescription( + 'What is your app named? Will also be the folder where your Hypergraph app will be scaffolded in to', + ), + Args.mapEffect(Utils.validateProjectName), + Args.mapEffect((name) => Effect.map(Path.Path, (path) => path.resolve(name))), + Args.optional, +); -const Framework = Schema.Record({ - key: AvailableFrameworkKey, - value: Schema.Struct({ - directory: Schema.NonEmptyTrimmedString, - skipDirectories: Schema.Set(Schema.NonEmptyTrimmedString), - }), -}); -type Framework = typeof Framework.Type; - -const availableFrameworks = { - 'vite-react': { - directory: 'template-vite-react', - skipDirectories: new Set([...Utils.ALWAYS_SKIP_DIRECTORIES, '.tanstack', 'dist']), - }, -} as const satisfies Framework; -const templatePrompt = Prompt.select({ - message: 'Choose your template', - choices: [ - { - title: 'Vite + React', - value: 'vite-react', - description: 'Scaffolds a vite + react app using @tanstack/react-router', - }, - ] as NonEmptyReadonlyArray>, -}); +const template = Options.choice('template', Domain.availableFrameworkKeys).pipe( + Options.withAlias('t'), + Options.withDescription('Template to scaffold'), + Options.optional, +); -const PackageManager = Schema.Literal('pnpm', 'bun', 'yarn', 'npm'); -type PackageManager = typeof PackageManager.Type; -const packageManangerPrompt = Prompt.select({ - message: 'What package manager do you want to use?', - choices: [ - { title: 'pnpm', value: 'pnpm' }, - { title: 'bun', value: 'bun' }, - { title: 'yarn', value: 'yarn' }, - { title: 'npm', value: 'npm' }, - ] as NonEmptyReadonlyArray>, -}); -const installDepsPropmpt = Prompt.toggle({ - message: 'Do you want us to install deps?', - active: 'Yes', - inactive: 'No', - initial: false, -}); +const packageManager = Options.choice('package-manager', Domain.PackageManager).pipe( + Options.withAlias('p'), + Options.withDescription('The package manager to use to install deps (if selected)'), + Options.optional, +); + +const skipInstallDeps = Options.boolean('skip-install-deps').pipe( + Options.withDescription('If flag is provided, the deps will not be installed with the given package manager'), + Options.withDefault(false), +); + +const skipInitializeGit = Options.boolean('skip-initialize-git').pipe( + Options.withDescription('If flag is provided, git will not be initialized in the scaffolded app'), + Options.withDefault(false), +); + +interface RawConfig { + readonly appName: Option.Option; + readonly template: Option.Option; + readonly packageManager: Option.Option; + readonly skipInstallDeps: boolean; + readonly skipInitializeGit: boolean; +} +interface ResolvedConfig { + readonly appName: string; + readonly template: Domain.AvailableFrameworkKey; + readonly packageManager: Domain.PackageManager; + readonly skipInstallDeps: boolean; + readonly skipInitializeGit: boolean; +} + +const createHypergraphApp = Command.make('create-hypergraph-app', { + appName, + template, + packageManager, + skipInstallDeps, + skipInitializeGit, +}).pipe( + Command.withDescription('Command line interface to scaffold a Hypergraph-enabled application'), + Command.provide(NodeFileSystem.layer), + Command.withHandler(handleCommand), +); -const initializeGitRepoPrompt = Prompt.toggle({ - message: 'Initialize a git repository?', - active: 'Yes', - inactive: 'No', - initial: true, +export const run = Command.run(createHypergraphApp, { + name: 'create-hypergraph-app', + version: '0.0.0-alpha.4', }); -const prompts = Prompt.all([ - appNamePrompt, - templatePrompt, - packageManangerPrompt, - installDepsPropmpt, - initializeGitRepoPrompt, -]); - -const createHypergraphApp = Command.prompt( - 'create-hypergraph-app', - prompts, - ([appName, template, pkgMananger, installDeps, initializeGitRepo]) => - Effect.gen(function* () { - const fs = yield* FileSystem.FileSystem; - const path = yield* Path.Path; - - const framework = availableFrameworks[template]; - - // check if directory already exists, if exists, and is not empty, throw an error - const targetDirectory = path.resolve('.', appName); - const exists = yield* fs.exists(targetDirectory); - if (exists) { - const targetDirRead = yield* fs.readDirectory(targetDirectory, { recursive: true }); - if (EffectArray.isNonEmptyArray(targetDirRead)) { - return yield* Effect.logError( - AnsiDoc.vsep([ - AnsiDoc.text('The selected directory is not empty.').pipe(AnsiDoc.annotate(Ansi.red)), - AnsiDoc.text(`Please choose an empty directory, or clean ${targetDirectory}`), - ]), - ); - } - } else { - // create the target directory - yield* fs.makeDirectory(targetDirectory, { recursive: true }); - } +// ======================== +// Command Handler +// ======================== - yield* Effect.logInfo(AnsiDoc.text(`Scaffolding Hypergraph app ${appName} with template ${template}`)); +function handleCommand(config: Readonly) { + return Effect.all({ + appName: resolveAppName(config), + template: resolveTemplate(config), + packageManager: resolvePackageManager(config), + skipInstallDeps: Effect.succeed(config.skipInstallDeps), + skipInitializeGit: Effect.succeed(config.skipInitializeGit), + }).pipe(Effect.flatMap(scaffoldHypergraphApp)); +} - // retrieve template directory based on selected template - const __filename = import.meta.filename; - const __dirname = path.dirname(fileURLToPath(import.meta.url)); +function scaffoldHypergraphApp(config: Readonly) { + return Effect.gen(function* () { + const fs = yield* FileSystem.FileSystem; + const path = yield* Path.Path; - const templateDir = EffectString.endsWith('Cli.ts')(__filename) - ? // running locally - path.resolve(__dirname, '..', '..', framework.directory) - : // running the published version - path.resolve(__dirname, framework.directory); - const templatDirExists = yield* fs.exists(templateDir); - if (!templatDirExists) { + const framework = Domain.availableFrameworks[config.template]; + + // check if directory already exists, if exists, and is not empty, throw an error + const targetDirectory = path.resolve('.', config.appName); + const exists = yield* fs.exists(targetDirectory); + if (exists) { + const targetDirRead = yield* fs.readDirectory(targetDirectory, { recursive: true }); + if (EffectArray.isNonEmptyArray(targetDirRead)) { return yield* Effect.logError( - AnsiDoc.text(`Selected template ${template} does not exist`).pipe(AnsiDoc.annotate(Ansi.red)), + AnsiDoc.vsep([ + AnsiDoc.text('The selected directory is not empty.').pipe(AnsiDoc.annotate(Ansi.red)), + AnsiDoc.text(`Please choose an empty directory, or clean ${targetDirectory}`), + ]), ); } + } else { + // create the target directory + yield* fs.makeDirectory(targetDirectory, { recursive: true }); + } - /** - * Updates the name of the template package.json to the user-entered name in the prompt - */ - function updatePackageJson(directory: string) { - return Effect.gen(function* () { - const packageJsonPath = path.join(directory, 'package.json'); - // read the cloned package.json - const packageJson = yield* fs.readFileString(packageJsonPath).pipe(Effect.map(JSON.parse)); - - const validatedPackageName = Utils.validatePackageName(appName); - const name = validatedPackageName.normalizedName; - // update the name and description - packageJson.name = name; - - // rewrite file - yield* fs.writeFileString(packageJsonPath, JSON.stringify(packageJson, null, 2)); - }); - } + yield* Effect.logInfo( + AnsiDoc.text(`Scaffolding Hypergraph app ${config.appName} with template ${config.template}`), + ); - function copyTemplate(src: string, dest: string): Effect.Effect { - return Effect.gen(function* () { - yield* fs.makeDirectory(dest, { recursive: true }); - const entries = readdirSync(src, { withFileTypes: true }); + // retrieve template directory based on selected template + const __filename = import.meta.filename; + const __dirname = path.dirname(fileURLToPath(import.meta.url)); - for (const entry of entries) { - // Skip the node_modules, .tanstack, dist, and .git directories - if (entry.isDirectory() && framework.skipDirectories.has(entry.name)) continue; + const templateDir = EffectString.endsWith('Cli.ts')(__filename) + ? // running locally + path.resolve(__dirname, '..', framework.directory) + : // running the published version + path.resolve(__dirname, framework.directory); + const templatDirExists = yield* fs.exists(templateDir); + if (!templatDirExists) { + return yield* Effect.logError( + AnsiDoc.text(`Selected template ${config.template} does not exist`).pipe(AnsiDoc.annotate(Ansi.red)), + ); + } - const srcPath = path.join(src, entry.name); - const destPath = path.join(dest, entry.name); + /** + * Updates the name of the template package.json to the user-entered name in the prompt + */ + function updatePackageJson(directory: string) { + return Effect.gen(function* () { + const packageJsonPath = path.join(directory, 'package.json'); + // read the cloned package.json + const packageJson = yield* fs.readFileString(packageJsonPath).pipe(Effect.map(JSON.parse)); - if (entry.isDirectory()) { - yield* copyTemplate(srcPath, destPath); - } else { - yield* fs.copyFile(srcPath, destPath); - } + const validatedPackageName = Utils.validatePackageName(config.appName); + const name = validatedPackageName.normalizedName; + // update the name and description + packageJson.name = name; + + // rewrite file + yield* fs.writeFileString(packageJsonPath, JSON.stringify(packageJson, null, 2)); + }); + } + + function copyTemplate(src: string, dest: string): Effect.Effect { + return Effect.gen(function* () { + yield* fs.makeDirectory(dest, { recursive: true }); + const entries = readdirSync(src, { withFileTypes: true }); + + for (const entry of entries) { + // Skip the node_modules, .tanstack, dist, and .git directories + if (entry.isDirectory() && framework.skipDirectories.has(entry.name)) continue; + + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, entry.name); + + if (entry.isDirectory()) { + yield* copyTemplate(srcPath, destPath); + } else { + yield* fs.copyFile(srcPath, destPath); } + } + }); + } + + const installDepsInScaffoldedApp = Effect.async((resume) => { + try { + execSync(`${config.packageManager} install`, { + stdio: 'inherit', + cwd: targetDirectory, }); + return resume(Effect.void); + } catch (err) { + return resume(Effect.fail(new InstallDepsError({ cause: err }))); } + }); - const installDepsInScaffoldedApp = Effect.async((resume) => { - try { - execSync(`${pkgMananger} install`, { + const initializeGit = Effect.gen(function* () { + yield* Effect.try({ + try: () => { + execSync('git init -q', { stdio: 'inherit', cwd: targetDirectory, }); - return resume(Effect.void); - } catch (err) { - return resume(Effect.fail(new InstallDepsError({ cause: err }))); - } + }, + catch: (err) => new InitializeGitRepoError({ cause: err }), }); - const initializeGit = Effect.gen(function* () { - yield* Effect.try({ - try: () => { - execSync('git init -q', { - stdio: 'inherit', - cwd: targetDirectory, - }); - }, - catch: (err) => new InitializeGitRepoError({ cause: err }), - }); - - yield* Effect.try({ - try: () => { - execSync('git add .', { - stdio: 'inherit', - cwd: targetDirectory, - }); - }, - catch: (err) => new InitializeGitRepoError({ cause: err }), - }); + yield* Effect.try({ + try: () => { + execSync('git add .', { + stdio: 'inherit', + cwd: targetDirectory, + }); + }, + catch: (err) => new InitializeGitRepoError({ cause: err }), + }); - yield* Effect.try({ - try: () => { - execSync('git commit -q -m "Initial commit - Scaffold Hypergraph app"', { - stdio: 'inherit', - cwd: targetDirectory, - }); - }, - catch: (err) => new InitializeGitRepoError({ cause: err }), - }); + yield* Effect.try({ + try: () => { + execSync('git commit -q -m "Initial commit - Scaffold Hypergraph app"', { + stdio: 'inherit', + cwd: targetDirectory, + }); + }, + catch: (err) => new InitializeGitRepoError({ cause: err }), }); + }); - return yield* copyTemplate(templateDir, targetDirectory).pipe( - Effect.tapErrorCause((cause) => - Effect.logError( - 'Failure copying the template directory files into your target directory', - Cause.pretty(cause), - ), - ), - Effect.andThen(() => updatePackageJson(targetDirectory)), - // Initialize the git repo if user selected to - Effect.andThen(() => Effect.when(initializeGit, () => initializeGitRepo)), - Effect.tapErrorCause((cause) => - Effect.logError('Failure initializing the git repository', Cause.pretty(cause)), + return yield* copyTemplate(templateDir, targetDirectory).pipe( + Effect.tapErrorCause((cause) => + Effect.logError('Failure copying the template directory files into your target directory', Cause.pretty(cause)), + ), + Effect.andThen(() => updatePackageJson(targetDirectory)), + // Initialize the git repo if user selected to + Effect.andThen(() => Effect.when(initializeGit, () => !config.skipInitializeGit)), + Effect.tapErrorCause((cause) => Effect.logError('Failure initializing the git repository', Cause.pretty(cause))), + // Install the deps with the selected package manager if user selected to + Effect.andThen(() => Effect.when(installDepsInScaffoldedApp, () => !config.skipInstallDeps)), + Effect.tapErrorCause((cause) => + Effect.logError(`Failure installing deps with ${config.packageManager}`, Cause.pretty(cause)), + ), + // success. inform user + Effect.andThen(() => + Effect.logInfo( + AnsiDoc.text(`🎉 Successfully scaffolded your hypergraph enabled app ${config.appName}!`), + AnsiDoc.hardLine, + AnsiDoc.text('To start the app, run:'), + AnsiDoc.hardLine, + AnsiDoc.text(`cd ${config.appName}`), + config.skipInstallDeps ? AnsiDoc.text(`${config.packageManager} install`) : AnsiDoc.hardLine, + AnsiDoc.hardLine, + AnsiDoc.text(`${config.packageManager} run dev`), ), - // Install the deps with the selected package manager if user selected to - Effect.andThen(() => Effect.when(installDepsInScaffoldedApp, () => installDeps)), - Effect.tapErrorCause((cause) => - Effect.logError(`Failure installing deps with ${pkgMananger}`, Cause.pretty(cause)), - ), - // success. inform user - Effect.andThen(() => - Effect.logInfo( - AnsiDoc.text(`🎉 Successfully scaffolded your hypergraph enabled app ${appName}!`), - AnsiDoc.hardLine, - AnsiDoc.text('To start the app, run:'), - AnsiDoc.hardLine, - AnsiDoc.text(`cd ${appName}`), - installDeps ? AnsiDoc.hardLine : AnsiDoc.text(`${pkgMananger} install`), - AnsiDoc.hardLine, - AnsiDoc.text(`${pkgMananger} run dev`), - ), - ), - ); - }), -).pipe( - Command.withDescription('Command line interface to scaffold a Hypergraph-enabled application'), - Command.provide(NodeFileSystem.layer), -); + ), + ); + }); +} -export const run = Command.run(createHypergraphApp, { - name: 'create-hypergraph-app', - version: '0.0.0-alpha.3', -}); +// ======================== +// Command choices resolution +// ======================== + +/** + * Resolves the app name from either: the passed in arg to the command, _or_ by prompting the user + */ +function resolveAppName(config: Readonly) { + return Option.match(config.appName, { + onSome(name) { + return Effect.succeed(name); + }, + onNone() { + // user did not pass in the app name as an arg. fetch from a prompt + return Prompt.text({ + message: 'What is your app named?', + default: 'my-hypergraph-app', + validate(value) { + return Utils.validateProjectName(value).pipe(Effect.mapError((doc) => HelpDoc.toAnsiText(doc))); + }, + }).pipe(Effect.flatMap((name) => Path.Path.pipe(Effect.map((path) => path.resolve(name))))); + }, + }); +} +/** + * Resolves the template from either: the passed in --template option to the command, _or_ by prompting the user + */ +function resolveTemplate(config: Readonly) { + return Option.match(config.template, { + onSome(template) { + return Effect.succeed(template); + }, + onNone() { + return Prompt.select({ + message: 'Choose your template', + choices: [ + { + title: 'Vite + React', + value: 'vite-react', + description: 'Scaffolds a vite + react app using @tanstack/react-router', + }, + ], + }).pipe(Effect.map((selected) => selected)); + }, + }); +} +/** + * Resolves the package manager from either: the passed in --package-manager option to the command, _or_ by prompting the user + */ +function resolvePackageManager(config: Readonly) { + return Option.match(config.packageManager, { + onSome(pkg) { + return Effect.succeed(pkg); + }, + onNone() { + return Prompt.select({ + message: 'What package manager do you want to use?', + choices: [ + { title: 'pnpm', value: 'pnpm' }, + { title: 'bun', value: 'bun' }, + { title: 'yarn', value: 'yarn' }, + { title: 'npm', value: 'npm' }, + ], + }).pipe(Effect.map((selected) => selected)); + }, + }); +} class InitializeGitRepoError extends Data.TaggedError( 'Hypergraph/create-hypergraph-app/errors/InitializeGitRepoError', diff --git a/apps/create-hypergraph/src/Domain.ts b/apps/create-hypergraph/src/Domain.ts new file mode 100644 index 00000000..401c3644 --- /dev/null +++ b/apps/create-hypergraph/src/Domain.ts @@ -0,0 +1,25 @@ +import * as Schema from 'effect/Schema'; + +export const ALWAYS_SKIP_DIRECTORIES = ['node_modules', '.git']; + +export const AvailableFrameworkKey = Schema.Union(Schema.Literal('vite-react')); +export type AvailableFrameworkKey = typeof AvailableFrameworkKey.Type; +export const Framework = Schema.Record({ + key: AvailableFrameworkKey, + value: Schema.Struct({ + directory: Schema.NonEmptyTrimmedString, + skipDirectories: Schema.Set(Schema.NonEmptyTrimmedString), + }), +}); +export type Framework = typeof Framework.Type; + +export const availableFrameworks = { + 'vite-react': { + directory: 'template-vite-react', + skipDirectories: new Set([...ALWAYS_SKIP_DIRECTORIES, '.tanstack', 'dist']), + }, +} as const satisfies Framework; +export const availableFrameworkKeys = Object.keys(availableFrameworks) as ReadonlyArray; + +export const PackageManager = ['pnpm', 'bun', 'yarn', 'npm'] as const; +export type PackageManager = (typeof PackageManager)[number]; diff --git a/apps/create-hypergraph/src/Utils.ts b/apps/create-hypergraph/src/Utils.ts index 1f46056f..248dd138 100644 --- a/apps/create-hypergraph/src/Utils.ts +++ b/apps/create-hypergraph/src/Utils.ts @@ -1,7 +1,6 @@ +import * as HelpDoc from '@effect/cli/HelpDoc'; import * as Effect from 'effect/Effect'; -export const ALWAYS_SKIP_DIRECTORIES = ['node_modules', '.git']; - const SCOPED_PACKAGE_REGEX = /^(?:@([^/]+?)[/])?([^/]+?)$/; const blockList = ['node_modules', 'favicon.ico']; @@ -78,9 +77,9 @@ const nodeBuiltins = [ 'zlib', ]; -const invalid = (message: string) => Effect.fail(message); +const invalid = (message: string) => Effect.fail(HelpDoc.p(message)); -export function validateProjectName(name: string): Effect.Effect { +export function validateProjectName(name: string): Effect.Effect { if (name.length === 0) { return invalid('Project name must be a non-empty string'); } diff --git a/apps/create-hypergraph/src/bin.ts b/apps/create-hypergraph/src/bin.ts index b5c349cc..ec4a9d66 100644 --- a/apps/create-hypergraph/src/bin.ts +++ b/apps/create-hypergraph/src/bin.ts @@ -16,6 +16,10 @@ const runnable = Effect.suspend(() => run(process.argv)).pipe( ); runnable.pipe( + Effect.catchTags({ + QuitException: () => + Effect.logError(AnsiDoc.cat(AnsiDoc.hardLine, AnsiDoc.text('Exiting...').pipe(AnsiDoc.annotate(Ansi.red)))), + }), Effect.catchAllDefect((defect) => Effect.gen(function* () { if (defect && typeof defect === 'object' && 'name' in defect && defect.name === 'QuitException') { diff --git a/apps/create-hypergraph/test/Utils.test.ts b/apps/create-hypergraph/test/Utils.test.ts index 308c6365..ccb816e9 100644 --- a/apps/create-hypergraph/test/Utils.test.ts +++ b/apps/create-hypergraph/test/Utils.test.ts @@ -1,3 +1,4 @@ +import * as HelpDoc from '@effect/cli/HelpDoc'; import { describe, it } from '@effect/vitest'; import * as Effect from 'effect/Effect'; import * as Exit from 'effect/Exit'; @@ -264,7 +265,7 @@ describe('Utils', () => { it.effect('should reject empty names', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName('')); - expect(result).toStrictEqual(Exit.fail('Project name must be a non-empty string')); + expect(result).toStrictEqual(Exit.fail(HelpDoc.p('Project name must be a non-empty string'))); }), ); @@ -272,42 +273,46 @@ describe('Utils', () => { Effect.gen(function* () { const longName = 'a'.repeat(215); const result = yield* Effect.exit(Utils.validateProjectName(longName)); - expect(result).toStrictEqual(Exit.fail('Project name must not contain more than 214 characters')); + expect(result).toStrictEqual(Exit.fail(HelpDoc.p('Project name must not contain more than 214 characters'))); }), ); it.effect('should reject names with uppercase letters', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName('MyProject')); - expect(result).toStrictEqual(Exit.fail('Project name must not contain capital letters')); + expect(result).toStrictEqual(Exit.fail(HelpDoc.p('Project name must not contain capital letters'))); }), ); it.effect('should reject names with leading whitespace', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName(' myproject')); - expect(result).toStrictEqual(Exit.fail('Project name must not contain leading or trailing whitespace')); + expect(result).toStrictEqual( + Exit.fail(HelpDoc.p('Project name must not contain leading or trailing whitespace')), + ); }), ); it.effect('should reject names with trailing whitespace', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName('myproject ')); - expect(result).toStrictEqual(Exit.fail('Project name must not contain leading or trailing whitespace')); + expect(result).toStrictEqual( + Exit.fail(HelpDoc.p('Project name must not contain leading or trailing whitespace')), + ); }), ); it.effect('should reject names starting with a period', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName('.myproject')); - expect(result).toStrictEqual(Exit.fail('Project name must not start with a period')); + expect(result).toStrictEqual(Exit.fail(HelpDoc.p('Project name must not start with a period'))); }), ); it.effect('should reject names starting with an underscore', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName('_myproject')); - expect(result).toStrictEqual(Exit.fail('Project name must not start with an underscore')); + expect(result).toStrictEqual(Exit.fail(HelpDoc.p('Project name must not start with an underscore'))); }), ); @@ -316,7 +321,9 @@ describe('Utils', () => { const specialChars = ['~', "'", '!', '(', ')', '*']; for (const char of specialChars) { const result = yield* Effect.exit(Utils.validateProjectName(`my${char}project`)); - expect(result).toStrictEqual(Exit.fail("Project name must not contain the special scharacters ~'!()*")); + expect(result).toStrictEqual( + Exit.fail(HelpDoc.p("Project name must not contain the special scharacters ~'!()*")), + ); } }), ); @@ -326,7 +333,9 @@ describe('Utils', () => { const builtins = ['fs', 'path', 'http', 'crypto', 'buffer']; for (const builtin of builtins) { const result = yield* Effect.exit(Utils.validateProjectName(builtin)); - expect(result).toStrictEqual(Exit.fail('Project name must not be a NodeJS built-in module name')); + expect(result).toStrictEqual( + Exit.fail(HelpDoc.p('Project name must not be a NodeJS built-in module name')), + ); } }), ); @@ -336,7 +345,7 @@ describe('Utils', () => { const blockedNames = ['node_modules', 'favicon.ico']; for (const blocked of blockedNames) { const result = yield* Effect.exit(Utils.validateProjectName(blocked)); - expect(result).toStrictEqual(Exit.fail(`Project name '${blocked}' is blocked from use`)); + expect(result).toStrictEqual(Exit.fail(HelpDoc.p(`Project name '${blocked}' is blocked from use`))); } }), ); @@ -344,14 +353,14 @@ describe('Utils', () => { it.effect('should reject names with non-URL-friendly characters', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName('my')); - expect(result).toStrictEqual(Exit.fail('Project name must only contain URL-friendly characters')); + expect(result).toStrictEqual(Exit.fail(HelpDoc.p('Project name must only contain URL-friendly characters'))); }), ); it.effect('should reject scoped packages with non-URL-friendly characters', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName('@my/my')); - expect(result).toStrictEqual(Exit.fail('Project name must only contain URL-friendly characters')); + expect(result).toStrictEqual(Exit.fail(HelpDoc.p('Project name must only contain URL-friendly characters'))); }), ); }); @@ -367,7 +376,9 @@ describe('Utils', () => { it.effect('should handle scoped packages with special characters in last segment', ({ expect }) => Effect.gen(function* () { const result = yield* Effect.exit(Utils.validateProjectName('@myorg/my!project')); - expect(result).toStrictEqual(Exit.fail("Project name must not contain the special scharacters ~'!()*")); + expect(result).toStrictEqual( + Exit.fail(HelpDoc.p("Project name must not contain the special scharacters ~'!()*")), + ); }), ); From f54e72a79302045e194fa4cf081b615ae5eccd72 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 10:52:28 -1000 Subject: [PATCH 16/30] feat(#351 | create-hypergraph): create llms.txt for create-hypergraph usage --- apps/create-hypergraph/llms.txt | 131 ++++++++++++++++++++++++++++ apps/create-hypergraph/package.json | 8 +- apps/create-hypergraph/src/Cli.ts | 4 +- 3 files changed, 137 insertions(+), 6 deletions(-) create mode 100644 apps/create-hypergraph/llms.txt diff --git a/apps/create-hypergraph/llms.txt b/apps/create-hypergraph/llms.txt new file mode 100644 index 00000000..4c7c3695 --- /dev/null +++ b/apps/create-hypergraph/llms.txt @@ -0,0 +1,131 @@ +# create-hypergraph + +A command-line tool for scaffolding Hypergraph-enabled applications. + +## What is Hypergraph? + +Hypergraph is a local-first framework for building web3 consumer applications. It enables developers to build performant, privacy-preserving apps where: + +- Data is stored locally on the user's device with zero network latency +- All private data is end-to-end encrypted +- Changes sync automatically across devices when online +- Users own their data and can take it between apps +- No traditional backend infrastructure is needed + +## When to Use Hypergraph + +Use Hypergraph when building: +- **Collaborative Applications**: Real-time document editing, shared workspaces, team tools +- **Social Applications**: Messaging apps, social networks, community platforms +- **Knowledge Management**: Note-taking apps, personal wikis, research tools +- **Privacy-First Apps**: Any application requiring end-to-end encryption +- **Offline-First Apps**: Applications that must work without internet connectivity + +Hypergraph is ideal when you need: +- Instant UI updates without loading spinners +- Real-time collaboration features +- User-owned, portable data +- Privacy through encryption +- To avoid managing servers and databases + +## Installation and Usage + +This tool is published to npm and can be run using: +```bash +pnpm create hypergraph +# or +npm create hypergraph +# or +yarn create hypergraph +# or +bun create hypergraph +``` + +Alternatively, you can use the shorthand: +```bash +pnpx ch +``` + +## Purpose + +create-hypergraph is a CLI tool that scaffolds new Hypergraph-enabled applications with pre-configured templates. It streamlines the process of setting up a new project with The Graph Protocol's Hypergraph framework. + +## Command-Line Options + +### Positional Arguments + +- `app-name` (optional): The name of your application. This will also be the folder name where your app is scaffolded. If not provided, the tool will prompt for it interactively. + +### Options + +- `--template, -t` (optional): Template to scaffold + - Available values: `vite-react` + - Default: prompts user to select + - Currently only supports `vite-react` which scaffolds a Vite + React app using @tanstack/react-router + +- `--package-manager, -p` (optional): The package manager to use for installing dependencies + - Available values: `pnpm`, `bun`, `yarn`, `npm` + - Default: prompts user to select + +- `--skip-install-deps`: Skip installing dependencies after scaffolding + - Default: false (dependencies will be installed) + +- `--skip-initialize-git`: Skip initializing a git repository in the scaffolded app + - Default: false (git repository will be initialized with an initial commit) + +## Examples + +### Interactive Mode (Recommended) +```bash +pnpm create hypergraph +``` +This will prompt you for all necessary information. + +### Fully Specified +```bash +pnpm create hypergraph my-app --template vite-react --package-manager pnpm +``` + +### Skip Optional Steps +```bash +pnpm create hypergraph my-app --skip-install-deps --skip-initialize-git +``` + +## Workflow + +1. **Validates app name**: Ensures the provided name is a valid project name +2. **Checks target directory**: Verifies the directory doesn't exist or is empty +3. **Copies template files**: Scaffolds the selected template into the target directory +4. **Updates package.json**: Sets the correct package name in the scaffolded app +5. **Initializes git** (optional): Creates a git repository with initial commit +6. **Installs dependencies** (optional): Runs the package manager install command + +## Template Details + +### vite-react +- Modern React application using Vite as the build tool +- Configured with @tanstack/react-router for routing +- Hypergraph integration pre-configured +- TypeScript enabled +- Development server with HMR + +## Error Handling + +The tool will fail gracefully if: +- The target directory exists and is not empty +- The selected template doesn't exist +- Git initialization fails +- Dependency installation fails + +## Requirements + +- Node.js >= 20 +- One of the supported package managers (pnpm, npm, yarn, or bun) + +## Post-Scaffolding + +After successful scaffolding, navigate to your app directory and start development: +```bash +cd +pnpm run dev # or npm/yarn/bun run dev +``` \ No newline at end of file diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 04066916..898ce40e 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.0.0-alpha.4", + "version": "0.0.0-alpha.5", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { @@ -9,7 +9,8 @@ }, "files": [ "template-*", - "dist" + "dist", + "llms.txt" ], "repository": { "type": "git", @@ -27,7 +28,8 @@ "build": "tsdown && tsx scripts/copy-package-json.ts && pnpm run copy-all", "copy-templates": "cp -r template-* dist/", "copy-readme": "cp README.md dist/README.md", - "copy-all": "pnpm run copy-templates && pnpm run copy-readme", + "copy-llms": "cp llms.txt dist/llms.txt", + "copy-all": "pnpm run copy-templates && pnpm run copy-readme && pnpm run copy-llms", "check": "tsc --noEmit", "start": "node ./dist/bin.js", "lint": "biome check", diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index 8fe39df2..fb35e68b 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -75,7 +75,7 @@ const createHypergraphApp = Command.make('create-hypergraph-app', { export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.0.0-alpha.4', + version: '0.0.0-alpha.5', }); // ======================== @@ -240,10 +240,8 @@ function scaffoldHypergraphApp(config: Readonly) { AnsiDoc.text(`🎉 Successfully scaffolded your hypergraph enabled app ${config.appName}!`), AnsiDoc.hardLine, AnsiDoc.text('To start the app, run:'), - AnsiDoc.hardLine, AnsiDoc.text(`cd ${config.appName}`), config.skipInstallDeps ? AnsiDoc.text(`${config.packageManager} install`) : AnsiDoc.hardLine, - AnsiDoc.hardLine, AnsiDoc.text(`${config.packageManager} run dev`), ), ), From 97894a1d5b61573eaf9bcc8320e05c6386c93538 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 11:15:17 -1000 Subject: [PATCH 17/30] feat(#351 | create-hypergraph): test suite for Cli tool --- apps/create-hypergraph/package.json | 3 +- apps/create-hypergraph/src/Cli.ts | 2 +- apps/create-hypergraph/test/Cli.test.ts | 266 ++++++++++++++++++++++++ pnpm-lock.yaml | 121 ++++++++++- 4 files changed, 385 insertions(+), 7 deletions(-) create mode 100644 apps/create-hypergraph/test/Cli.test.ts diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 898ce40e..1ae2a8b6 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.0.0-alpha.5", + "version": "0.0.1", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { @@ -59,6 +59,7 @@ "@effect/vitest": "^0.25.0", "@types/node": "^24.1.0", "effect": "^3.17.0", + "execa": "^9.6.0", "tsdown": "^0.13.0", "tsx": "^4.20.3" } diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index fb35e68b..c6a6c45b 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -75,7 +75,7 @@ const createHypergraphApp = Command.make('create-hypergraph-app', { export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.0.0-alpha.5', + version: '0.0.1', }); // ======================== diff --git a/apps/create-hypergraph/test/Cli.test.ts b/apps/create-hypergraph/test/Cli.test.ts new file mode 100644 index 00000000..bb5fe8fd --- /dev/null +++ b/apps/create-hypergraph/test/Cli.test.ts @@ -0,0 +1,266 @@ +import { existsSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { describe, expect, it } from '@effect/vitest'; +import { Effect } from 'effect'; +import { execaCommandSync } from 'execa'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); +const CLI_PATH = resolve(__dirname, '../src/bin.ts'); + +const projectName = 'test-app'; +const testDir = join(tmpdir(), 'create-hypergraph-test-'); + +const run = (args: Array, cwd?: string) => { + return Effect.sync(() => { + const fullCommand = `pnpx tsx ${CLI_PATH} ${args.join(' ')}`; + const result = execaCommandSync(fullCommand, { cwd }); + return result.stdout; + }); +}; + +const runExpectError = (args: Array, cwd?: string) => { + return Effect.sync(() => { + const fullCommand = `pnpx tsx ${CLI_PATH} ${args.join(' ')}`; + try { + const result = execaCommandSync(fullCommand, { cwd, reject: false }); + return { stdout: result.stdout, stderr: result.stderr, exitCode: result.exitCode }; + // biome-ignore lint/suspicious/noExplicitAny: error + } catch (error: any) { + return { stdout: error.stdout || '', stderr: error.stderr || '', exitCode: error.exitCode || 1 }; + } + }); +}; + +const cleanupTestDirs = () => { + return Effect.sync(() => { + const tmpDirContents = readdirSync(tmpdir()); + tmpDirContents.forEach((file) => { + if (file.startsWith('create-hypergraph-test-')) { + rmSync(join(tmpdir(), file), { recursive: true, force: true }); + } + }); + }); +}; + +const createTempDir = () => { + return Effect.sync(() => mkdtempSync(testDir)); +}; + +const cleanupTempDir = (tempDir: string) => { + return Effect.sync(() => { + if (tempDir && existsSync(tempDir)) { + rmSync(tempDir, { recursive: true, force: true }); + } + }); +}; + +describe('create-hypergraph CLI', () => { + it.effect('happy path - scaffolds app with all options provided', () => + Effect.gen(function* () { + // Clean up any previous test directories + yield* cleanupTestDirs(); + + // Create a fresh temp directory for this test + const tempDir = yield* createTempDir(); + + try { + // Run the CLI with all options provided + const output = yield* run( + [ + '--template', + 'vite-react', + '--package-manager', + 'pnpm', + '--skip-install-deps', + '--skip-initialize-git', + projectName, + ], + tempDir, + ); + + // Verify the output contains success message + expect(output).toContain('Successfully scaffolded your hypergraph enabled app'); + + // Verify the project directory was created + const projectPath = join(tempDir, projectName); + expect(existsSync(projectPath)).toBe(true); + + // Verify expected files/directories exist + const expectedFiles = [ + 'package.json', + 'tsconfig.json', + 'vite.config.ts', + 'index.html', + 'src/main.tsx', + 'src/index.css', + 'src/schema.ts', + 'src/mapping.ts', + ]; + + expectedFiles.forEach((file) => { + const filePath = join(projectPath, file); + expect(existsSync(filePath)).toBe(true); + }); + + // Verify package.json exists and has a valid name + const packageJsonPath = join(projectPath, 'package.json'); + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); + // The CLI normalizes the package name, so just verify it's not empty + expect(packageJson.name).toBeTruthy(); + expect(typeof packageJson.name).toBe('string'); + + // Verify no .git directory exists (since we skipped git init) + expect(existsSync(join(projectPath, '.git'))).toBe(false); + + // Verify no node_modules exists (since we skipped install) + expect(existsSync(join(projectPath, 'node_modules'))).toBe(false); + } finally { + // Clean up the temp directory + yield* cleanupTempDir(tempDir); + } + }), + ); + + it.effect('error - invalid app name with capital letters', () => + Effect.gen(function* () { + yield* cleanupTestDirs(); + const tempDir = yield* createTempDir(); + + try { + const result = yield* runExpectError( + [ + '--template', + 'vite-react', + '--skip-install-deps', + '--skip-initialize-git', + 'MyApp', // Capital letters not allowed + ], + tempDir, + ); + + expect(result.exitCode).not.toBe(0); + expect(result.stderr).toContain('Project name must not contain capital letters'); + } finally { + yield* cleanupTempDir(tempDir); + } + }), + ); + + it.effect('error - invalid app name starting with underscore', () => + Effect.gen(function* () { + yield* cleanupTestDirs(); + const tempDir = yield* createTempDir(); + + try { + const result = yield* runExpectError( + [ + '--template', + 'vite-react', + '--skip-install-deps', + '--skip-initialize-git', + '_myapp', // Starting with underscore not allowed + ], + tempDir, + ); + + expect(result.exitCode).not.toBe(0); + expect(result.stderr).toContain('Project name must not start with an underscore'); + } finally { + yield* cleanupTempDir(tempDir); + } + }), + ); + + it.effect('error - non-empty directory already exists', () => + Effect.gen(function* () { + yield* cleanupTestDirs(); + const tempDir = yield* createTempDir(); + + try { + // Create the project directory and add a file to make it non-empty + const projectPath = join(tempDir, projectName); + yield* Effect.sync(() => { + mkdirSync(projectPath, { recursive: true }); + writeFileSync(join(projectPath, 'existing-file.txt'), 'content'); + }); + + const result = yield* runExpectError( + ['--template', 'vite-react', '--skip-install-deps', '--skip-initialize-git', projectName], + tempDir, + ); + + expect(result.exitCode).not.toBe(0); + expect(result.stderr).toContain("Path 'test-app' must not exist"); + } finally { + yield* cleanupTempDir(tempDir); + } + }), + ); + + it.effect('test git initialization when not skipped', () => + Effect.gen(function* () { + yield* cleanupTestDirs(); + const tempDir = yield* createTempDir(); + + try { + // Run CLI without skipping git initialization + const output = yield* run( + [ + '--template', + 'vite-react', + '--package-manager', + 'pnpm', + '--skip-install-deps', + // Note: not skipping git init + 'test-git-app', + ], + tempDir, + ); + + expect(output).toContain('Successfully scaffolded your hypergraph enabled app'); + + // Verify .git directory was created + const projectPath = join(tempDir, 'test-git-app'); + expect(existsSync(join(projectPath, '.git'))).toBe(true); + } finally { + yield* cleanupTempDir(tempDir); + } + }), + ); + + it.effect( + 'test dependency installation when not skipped', + () => + Effect.gen(function* () { + yield* cleanupTestDirs(); + const tempDir = yield* createTempDir(); + + try { + // Run CLI without skipping dependency installation + const output = yield* run( + [ + '--template', + 'vite-react', + '--package-manager', + 'pnpm', + '--skip-initialize-git', + // Note: not skipping install deps + 'test-deps-app', + ], + tempDir, + ); + + expect(output).toContain('Successfully scaffolded your hypergraph enabled app'); + + // Verify node_modules directory was created + const projectPath = join(tempDir, 'test-deps-app'); + expect(existsSync(join(projectPath, 'node_modules'))).toBe(true); + } finally { + yield* cleanupTempDir(tempDir); + } + }), + { timeout: 60000 }, // 60 second timeout for dependency installation + ); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e101936..f1ae51a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -162,6 +162,9 @@ importers: effect: specifier: ^3.17.0 version: 3.17.0 + execa: + specifier: ^9.6.0 + version: 9.6.0 tsdown: specifier: ^0.13.0 version: 0.13.0(typescript@5.8.3) @@ -330,7 +333,7 @@ importers: version: 7.1.2(graphql@16.11.0) isomorphic-ws: specifier: ^5.0.0 - version: 5.0.0(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 5.0.0(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) lucide-react: specifier: ^0.508.0 version: 0.508.0(react@19.1.0) @@ -4764,6 +4767,9 @@ packages: '@scure/bip39@1.6.0': resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@serenity-kit/noble-sodium@0.2.1': resolution: {integrity: sha512-023EjSl/ZMl8yNmnzeeWJh/V44QyBC82I8xuHltITeWdcyrQHbGnmMZRZOm/uTRinhgqoMzRBNQqbrfyuI5idg==} @@ -4814,6 +4820,10 @@ packages: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@slorber/react-helmet-async@1.3.0': resolution: {integrity: sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==} peerDependencies: @@ -7749,6 +7759,10 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + execa@9.6.0: + resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} + engines: {node: ^18.19.0 || >=20.5.0} + expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -7879,6 +7893,10 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -8094,6 +8112,10 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} @@ -8432,6 +8454,10 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -8711,6 +8737,10 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -8730,6 +8760,10 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} @@ -9799,6 +9833,10 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} @@ -10019,6 +10057,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} @@ -10064,6 +10106,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -10733,6 +10779,10 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + pretty-time@1.1.0: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} @@ -11697,6 +11747,10 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-hex-prefix@1.0.0: resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -12216,6 +12270,10 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -12993,6 +13051,10 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + zod-package-json@1.0.3: resolution: {integrity: sha512-Mb6GzuRyUEl8X+6V6xzHbd4XV0au/4gOYrYP+CAfHL32uPmGswES+v2YqonZiW1NZWVA3jkssCKSU2knonm/aQ==} engines: {node: '>=20'} @@ -18512,6 +18574,8 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.5 + '@sec-ant/readable-stream@0.4.1': {} + '@serenity-kit/noble-sodium@0.2.1': dependencies: '@noble/ciphers': 1.3.0 @@ -18571,6 +18635,8 @@ snapshots: '@sindresorhus/is@5.6.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@babel/runtime': 7.27.6 @@ -22444,6 +22510,21 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + execa@9.6.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + expand-template@2.0.3: {} expect-type@1.2.1: {} @@ -22621,6 +22702,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -22837,6 +22922,11 @@ snapshots: get-stream@6.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-tsconfig@4.10.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -23328,6 +23418,8 @@ snapshots: human-signals@2.1.0: {} + human-signals@8.0.1: {} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -23550,6 +23642,8 @@ snapshots: is-stream@2.0.1: {} + is-stream@4.0.1: {} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -23566,6 +23660,8 @@ snapshots: is-unicode-supported@0.1.0: {} + is-unicode-supported@2.1.0: {} + is-upper-case@2.0.2: dependencies: tslib: 2.8.1 @@ -23602,10 +23698,6 @@ snapshots: dependencies: ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - isomorphic-ws@5.0.0(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - isomorphic-ws@5.0.0(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -24875,6 +24967,11 @@ snapshots: dependencies: path-key: 3.1.1 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + nprogress@0.2.0: {} nth-check@2.1.1: @@ -25163,6 +25260,8 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-ms@4.0.0: {} + parse-numeric-range@1.3.0: {} parse5-htmlparser2-tree-adapter@7.1.0: @@ -25200,6 +25299,8 @@ snapshots: path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-root-regex@0.1.2: {} @@ -26013,6 +26114,10 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + pretty-time@1.1.0: {} prism-react-renderer@2.4.1(react@19.1.0): @@ -27279,6 +27384,8 @@ snapshots: strip-final-newline@2.0.0: {} + strip-final-newline@4.0.0: {} + strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed: 1.0.0 @@ -27802,6 +27909,8 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} + unicorn-magic@0.3.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -28628,6 +28737,8 @@ snapshots: yocto-queue@1.2.1: {} + yoctocolors@2.1.1: {} + zod-package-json@1.0.3: dependencies: zod: 3.25.51 From 2d3814e60a51dfbcab419b39e93cdd2083cd2d84 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 11:30:05 -1000 Subject: [PATCH 18/30] feat(#351 | create-hypergraph): better check for access to template directory --- apps/create-hypergraph/package.json | 4 +- apps/create-hypergraph/src/Cli.ts | 25 +++--- apps/create-hypergraph/test/Cli.test.ts | 4 +- apps/create-hypergraph/tsdown.config.ts | 3 + pnpm-lock.yaml | 109 +++++++++++++++++++++++- 5 files changed, 127 insertions(+), 18 deletions(-) diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 1ae2a8b6..9c496d99 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.0.1", + "version": "0.0.2", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { @@ -24,7 +24,7 @@ }, "scripts": { "test": "vitest run", - "dev": "pnpx tsx ./src/bin.ts", + "dev": "NODE_ENV=development pnpx tsx ./src/bin.ts", "build": "tsdown && tsx scripts/copy-package-json.ts && pnpm run copy-all", "copy-templates": "cp -r template-* dist/", "copy-readme": "cp README.md dist/README.md", diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index c6a6c45b..a80c8bbd 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -6,7 +6,7 @@ import { FileSystem, Path } from '@effect/platform'; import type { PlatformError } from '@effect/platform/Error'; import { NodeFileSystem } from '@effect/platform-node'; import { Ansi, AnsiDoc } from '@effect/printer-ansi'; -import { Cause, Data, Effect, Array as EffectArray, String as EffectString, Option } from 'effect'; +import { Cause, Data, Effect, Array as EffectArray, Option } from 'effect'; import * as Domain from './Domain.js'; import * as Utils from './Utils.js'; @@ -75,7 +75,7 @@ const createHypergraphApp = Command.make('create-hypergraph-app', { export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.0.1', + version: '0.0.2', }); // ======================== @@ -97,10 +97,11 @@ function scaffoldHypergraphApp(config: Readonly) { const fs = yield* FileSystem.FileSystem; const path = yield* Path.Path; + const appname = path.basename(config.appName); const framework = Domain.availableFrameworks[config.template]; // check if directory already exists, if exists, and is not empty, throw an error - const targetDirectory = path.resolve('.', config.appName); + const targetDirectory = config.appName; const exists = yield* fs.exists(targetDirectory); if (exists) { const targetDirRead = yield* fs.readDirectory(targetDirectory, { recursive: true }); @@ -118,18 +119,16 @@ function scaffoldHypergraphApp(config: Readonly) { } yield* Effect.logInfo( - AnsiDoc.text(`Scaffolding Hypergraph app ${config.appName} with template ${config.template}`), + AnsiDoc.text(`Scaffolding Hypergraph app ${path.basename(config.appName)} with template ${config.template}`), ); // retrieve template directory based on selected template - const __filename = import.meta.filename; const __dirname = path.dirname(fileURLToPath(import.meta.url)); - const templateDir = EffectString.endsWith('Cli.ts')(__filename) - ? // running locally - path.resolve(__dirname, '..', framework.directory) - : // running the published version - path.resolve(__dirname, framework.directory); + const isDev = process.env.NODE_ENV === 'development' || __dirname.includes('/src/'); + const templateDir = isDev + ? path.resolve(__dirname, '..', framework.directory) + : path.resolve(__dirname, framework.directory); const templatDirExists = yield* fs.exists(templateDir); if (!templatDirExists) { return yield* Effect.logError( @@ -146,7 +145,7 @@ function scaffoldHypergraphApp(config: Readonly) { // read the cloned package.json const packageJson = yield* fs.readFileString(packageJsonPath).pipe(Effect.map(JSON.parse)); - const validatedPackageName = Utils.validatePackageName(config.appName); + const validatedPackageName = Utils.validatePackageName(appname); const name = validatedPackageName.normalizedName; // update the name and description packageJson.name = name; @@ -237,10 +236,10 @@ function scaffoldHypergraphApp(config: Readonly) { // success. inform user Effect.andThen(() => Effect.logInfo( - AnsiDoc.text(`🎉 Successfully scaffolded your hypergraph enabled app ${config.appName}!`), + AnsiDoc.text(`🎉 Successfully scaffolded your hypergraph enabled app ${appname}!`), AnsiDoc.hardLine, AnsiDoc.text('To start the app, run:'), - AnsiDoc.text(`cd ${config.appName}`), + AnsiDoc.text(`cd ${appname}`), config.skipInstallDeps ? AnsiDoc.text(`${config.packageManager} install`) : AnsiDoc.hardLine, AnsiDoc.text(`${config.packageManager} run dev`), ), diff --git a/apps/create-hypergraph/test/Cli.test.ts b/apps/create-hypergraph/test/Cli.test.ts index bb5fe8fd..f8cb2482 100644 --- a/apps/create-hypergraph/test/Cli.test.ts +++ b/apps/create-hypergraph/test/Cli.test.ts @@ -15,7 +15,7 @@ const testDir = join(tmpdir(), 'create-hypergraph-test-'); const run = (args: Array, cwd?: string) => { return Effect.sync(() => { const fullCommand = `pnpx tsx ${CLI_PATH} ${args.join(' ')}`; - const result = execaCommandSync(fullCommand, { cwd }); + const result = execaCommandSync(fullCommand, { cwd, env: { ...process.env, NODE_ENV: 'development' } }); return result.stdout; }); }; @@ -24,7 +24,7 @@ const runExpectError = (args: Array, cwd?: string) => { return Effect.sync(() => { const fullCommand = `pnpx tsx ${CLI_PATH} ${args.join(' ')}`; try { - const result = execaCommandSync(fullCommand, { cwd, reject: false }); + const result = execaCommandSync(fullCommand, { cwd, reject: false, env: { ...process.env, NODE_ENV: 'development' } }); return { stdout: result.stdout, stderr: result.stderr, exitCode: result.exitCode }; // biome-ignore lint/suspicious/noExplicitAny: error } catch (error: any) { diff --git a/apps/create-hypergraph/tsdown.config.ts b/apps/create-hypergraph/tsdown.config.ts index c652d6f0..2d7522fa 100644 --- a/apps/create-hypergraph/tsdown.config.ts +++ b/apps/create-hypergraph/tsdown.config.ts @@ -10,4 +10,7 @@ export default defineConfig(() => ({ outDir: 'dist', clean: true, external: ['@parcel/watcher'], + env: { + NODE_ENV: 'production', + }, })); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f1ae51a9..70964605 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -175,6 +175,109 @@ importers: apps/create-hypergraph/dist: {} + apps/create-hypergraph/my-hypergraph-app: + dependencies: + '@graphprotocol/grc-20': + specifier: ^0.21.6 + version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/hypergraph': + specifier: 0.0.14 + version: 0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/hypergraph-react': + specifier: 0.0.14 + version: 0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/typesync': + specifier: ^0.0.3 + version: 0.0.3(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@radix-ui/react-navigation-menu': + specifier: ^1.2.13 + version: 1.2.13(@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) + '@radix-ui/react-slot': + specifier: ^1.2.3 + version: 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-tooltip': + specifier: ^1.2.7 + version: 1.2.7(@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) + '@tailwindcss/vite': + specifier: ^4.1.11 + version: 4.1.11(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + '@tanstack/react-query': + specifier: ^5.83.0 + version: 5.83.0(react@19.1.0) + '@tanstack/react-router': + specifier: ^1.129.2 + version: 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + effect: + specifier: ^3.17.0 + version: 3.17.0 + lucide-react: + specifier: ^0.525.0 + version: 0.525.0(react@19.1.0) + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 + tailwindcss: + specifier: ^4.1.11 + version: 4.1.11 + vite: + specifier: ^7.0.5 + version: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + devDependencies: + '@eslint/js': + specifier: ^9.31.0 + version: 9.31.0 + '@tanstack/router-plugin': + specifier: ^1.129.2 + version: 1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + '@types/node': + specifier: ^24.1.0 + version: 24.1.0 + '@types/react': + specifier: ^19.1.8 + version: 19.1.8 + '@types/react-dom': + specifier: ^19.1.6 + version: 19.1.6(@types/react@19.1.8) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) + eslint: + specifier: ^9.31.0 + version: 9.31.0(jiti@2.4.2) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.31.0(jiti@2.4.2)) + eslint-plugin-react-refresh: + specifier: ^0.4.20 + version: 0.4.20(eslint@9.31.0(jiti@2.4.2)) + globals: + specifier: ^16.3.0 + version: 16.3.0 + prettier: + specifier: ^3.6.2 + version: 3.6.2 + tw-animate-css: + specifier: ^1.3.5 + version: 1.3.5 + typescript: + specifier: ~5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.38.0 + version: 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + apps/create-hypergraph/template-vite-react: dependencies: '@graphprotocol/grc-20': @@ -333,7 +436,7 @@ importers: version: 7.1.2(graphql@16.11.0) isomorphic-ws: specifier: ^5.0.0 - version: 5.0.0(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 5.0.0(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) lucide-react: specifier: ^0.508.0 version: 0.508.0(react@19.1.0) @@ -23698,6 +23801,10 @@ snapshots: dependencies: ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + isomorphic-ws@5.0.0(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + isomorphic-ws@5.0.0(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) From 2e62f8bb6219589644c424e7c79c849243544241 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 11:53:34 -1000 Subject: [PATCH 19/30] feat(#351 | create-hypergraph): create CHANGELOG and publish to npm --- .changeset/shaggy-cups-scream.md | 6 ++++++ CONTRIBUTING.md | 7 +++++++ apps/create-hypergraph/CHANGELOG.md | 20 ++++++++++++++++++++ apps/create-hypergraph/package.json | 8 +++++--- apps/create-hypergraph/src/Cli.ts | 2 +- apps/create-hypergraph/test/Cli.test.ts | 6 +++++- 6 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 .changeset/shaggy-cups-scream.md create mode 100644 apps/create-hypergraph/CHANGELOG.md diff --git a/.changeset/shaggy-cups-scream.md b/.changeset/shaggy-cups-scream.md new file mode 100644 index 00000000..d9f5851c --- /dev/null +++ b/.changeset/shaggy-cups-scream.md @@ -0,0 +1,6 @@ +--- +"create-hypergraph": patch +--- + +Add CHANGELOG.md to publishable dist folder + \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eaf4479f..3d182599 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,6 +47,13 @@ cd apps/typesync pnpm dev:client ``` +To develop the create-hypergraph, run: + +```sh +cd apps/create-hypergraph +pnpm run dev +``` + You can run the Next example app with: ```sh diff --git a/apps/create-hypergraph/CHANGELOG.md b/apps/create-hypergraph/CHANGELOG.md new file mode 100644 index 00000000..ebc48fd0 --- /dev/null +++ b/apps/create-hypergraph/CHANGELOG.md @@ -0,0 +1,20 @@ +# create-hypergraph + +## 0.0.2 +### Patch Changes + +- 2d3814e: better check for access to template directory +- 97894a1: test suite for Cli tool +- f54e72a: create llms.txt for create-hypergraph usage +- 4446ffe: resolve inputs from passed in options or prompts +- f40426b: fix typo +- ba47d53: rename package.json bin to create-hypergraph +- 447cdb4: rename to create-hypergraph (drop app) +- bd88912: handle sigint of user killing cli with a log line instead of error message +- deee18d: add create-hypergraph-app tests to root workspace +- 39beee4: fixes. updates from testing +- 68a79db: rebase main. sort order import +- 64d196d: buildout ability scaffold app, install deps, initialize git +- 8ea798f: bump @types/node to latest +- a004e4f: use prompts instead of options +- 5a4c193: working on building create-hypergraph-app cli tool \ No newline at end of file diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 9c496d99..73eb0fe1 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.0.2", + "version": "0.0.3", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { @@ -10,7 +10,8 @@ "files": [ "template-*", "dist", - "llms.txt" + "llms.txt", + "CHANGELOG.md" ], "repository": { "type": "git", @@ -28,8 +29,9 @@ "build": "tsdown && tsx scripts/copy-package-json.ts && pnpm run copy-all", "copy-templates": "cp -r template-* dist/", "copy-readme": "cp README.md dist/README.md", + "copy-changelog": "cp CHANGELOG.md dist/CHANGELOG.md", "copy-llms": "cp llms.txt dist/llms.txt", - "copy-all": "pnpm run copy-templates && pnpm run copy-readme && pnpm run copy-llms", + "copy-all": "pnpm run copy-templates && pnpm run copy-readme && pnpm run copy-changelog && pnpm run copy-llms", "check": "tsc --noEmit", "start": "node ./dist/bin.js", "lint": "biome check", diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index a80c8bbd..e48b2e04 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -75,7 +75,7 @@ const createHypergraphApp = Command.make('create-hypergraph-app', { export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.0.2', + version: '0.0.3', }); // ======================== diff --git a/apps/create-hypergraph/test/Cli.test.ts b/apps/create-hypergraph/test/Cli.test.ts index f8cb2482..ecfa3e42 100644 --- a/apps/create-hypergraph/test/Cli.test.ts +++ b/apps/create-hypergraph/test/Cli.test.ts @@ -24,7 +24,11 @@ const runExpectError = (args: Array, cwd?: string) => { return Effect.sync(() => { const fullCommand = `pnpx tsx ${CLI_PATH} ${args.join(' ')}`; try { - const result = execaCommandSync(fullCommand, { cwd, reject: false, env: { ...process.env, NODE_ENV: 'development' } }); + const result = execaCommandSync(fullCommand, { + cwd, + reject: false, + env: { ...process.env, NODE_ENV: 'development' }, + }); return { stdout: result.stdout, stderr: result.stderr, exitCode: result.exitCode }; // biome-ignore lint/suspicious/noExplicitAny: error } catch (error: any) { From 559aec11878e60b96b359bdb4a542adde48c82f3 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Wed, 23 Jul 2025 12:07:05 -1000 Subject: [PATCH 20/30] feat(#351 | create-hypergraph): configure git to run create-hypergraph test suite which initializes git --- .github/workflows/tests-and-checks.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/tests-and-checks.yml b/.github/workflows/tests-and-checks.yml index 001fa370..2d5bbb83 100644 --- a/.github/workflows/tests-and-checks.yml +++ b/.github/workflows/tests-and-checks.yml @@ -24,6 +24,10 @@ jobs: run: pnpm build - name: Generate Prisma Types run: cd apps/server && pnpm prisma generate + - name: Configure Git for tests + run: | + git config --global user.email "test@example.com" + git config --global user.name "Test User" - name: Typecheck run: pnpm check - name: Linting & Formatting From 20340b94aa645b6059f686e123bb694244d6d9c4 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Thu, 24 Jul 2025 08:21:03 -1000 Subject: [PATCH 21/30] feat(#365 | nextjs-template): add nextjs template to create-hypergraph --- .changeset/config.json | 2 +- apps/create-hypergraph/src/Cli.ts | 5 + apps/create-hypergraph/src/Domain.ts | 6 +- .../template-nextjs/.gitignore | 41 + .../template-nextjs/.prettierignore | 4 + .../template-nextjs/.prettierrc | 4 + .../Components/Login/AuthCallback.tsx | 21 + .../Components/Login/LoginButton.tsx | 29 + .../Components/Login/LoginForm.tsx | 33 + .../Components/PublicKnowledge/Explore.tsx | 62 + .../template-nextjs/README.md | 3 + .../template-nextjs/app/Providers.tsx | 15 + .../app/authenticate-success/page.tsx | 32 + .../app/explore-public-knowledge/page.tsx | 18 + .../template-nextjs/app/favicon.ico | Bin 0 -> 25931 bytes .../template-nextjs/app/globals.css | 44 + .../template-nextjs/app/layout.tsx | 34 + .../template-nextjs/app/login/page.tsx | 9 + .../template-nextjs/app/mapping.ts | 18 + .../template-nextjs/app/page.tsx | 105 + .../template-nextjs/app/schema.ts | 10 + .../template-nextjs/eslint.config.mjs | 14 + .../template-nextjs/next-end.d.ts | 5 + .../template-nextjs/next.config.ts | 5 + .../template-nextjs/package.json | 38 + .../template-nextjs/postcss.config.mjs | 6 + .../template-nextjs/public/hypergraph.svg | 1 + .../template-nextjs/tsconfig.json | 27 + pnpm-lock.yaml | 2475 +++++++++++++---- 29 files changed, 2546 insertions(+), 520 deletions(-) create mode 100644 apps/create-hypergraph/template-nextjs/.gitignore create mode 100644 apps/create-hypergraph/template-nextjs/.prettierignore create mode 100644 apps/create-hypergraph/template-nextjs/.prettierrc create mode 100644 apps/create-hypergraph/template-nextjs/Components/Login/AuthCallback.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/Login/LoginButton.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/Login/LoginForm.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx create mode 100644 apps/create-hypergraph/template-nextjs/README.md create mode 100644 apps/create-hypergraph/template-nextjs/app/Providers.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/authenticate-success/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/favicon.ico create mode 100644 apps/create-hypergraph/template-nextjs/app/globals.css create mode 100644 apps/create-hypergraph/template-nextjs/app/layout.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/login/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/mapping.ts create mode 100644 apps/create-hypergraph/template-nextjs/app/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/schema.ts create mode 100644 apps/create-hypergraph/template-nextjs/eslint.config.mjs create mode 100644 apps/create-hypergraph/template-nextjs/next-end.d.ts create mode 100644 apps/create-hypergraph/template-nextjs/next.config.ts create mode 100644 apps/create-hypergraph/template-nextjs/package.json create mode 100644 apps/create-hypergraph/template-nextjs/postcss.config.mjs create mode 100644 apps/create-hypergraph/template-nextjs/public/hypergraph.svg create mode 100644 apps/create-hypergraph/template-nextjs/tsconfig.json diff --git a/.changeset/config.json b/.changeset/config.json index 5f527176..95793762 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -7,6 +7,6 @@ "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", - "ignore": ["events", "next-example", "docs", "hypergraph-vite-react-template"], + "ignore": ["events", "next-example", "docs", "hypergraph-vite-react-template", "hypergraph-template-nextjs"], "prettier": false } diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index e48b2e04..d4569d0b 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -289,6 +289,11 @@ function resolveTemplate(config: Readonly) { value: 'vite-react', description: 'Scaffolds a vite + react app using @tanstack/react-router', }, + { + title: 'Nextjs', + value: 'nextjs', + description: 'Scaffolds a nextjs app', + }, ], }).pipe(Effect.map((selected) => selected)); }, diff --git a/apps/create-hypergraph/src/Domain.ts b/apps/create-hypergraph/src/Domain.ts index 401c3644..0dda4f6c 100644 --- a/apps/create-hypergraph/src/Domain.ts +++ b/apps/create-hypergraph/src/Domain.ts @@ -2,7 +2,7 @@ import * as Schema from 'effect/Schema'; export const ALWAYS_SKIP_DIRECTORIES = ['node_modules', '.git']; -export const AvailableFrameworkKey = Schema.Union(Schema.Literal('vite-react')); +export const AvailableFrameworkKey = Schema.Union(Schema.Literal('vite-react'), Schema.Literal('nextjs')); export type AvailableFrameworkKey = typeof AvailableFrameworkKey.Type; export const Framework = Schema.Record({ key: AvailableFrameworkKey, @@ -18,6 +18,10 @@ export const availableFrameworks = { directory: 'template-vite-react', skipDirectories: new Set([...ALWAYS_SKIP_DIRECTORIES, '.tanstack', 'dist']), }, + nextjs: { + directory: 'template-nextjs', + skipDirectories: new Set([...ALWAYS_SKIP_DIRECTORIES, '.next', 'dist']), + }, } as const satisfies Framework; export const availableFrameworkKeys = Object.keys(availableFrameworks) as ReadonlyArray; diff --git a/apps/create-hypergraph/template-nextjs/.gitignore b/apps/create-hypergraph/template-nextjs/.gitignore new file mode 100644 index 00000000..5ef6a520 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/apps/create-hypergraph/template-nextjs/.prettierignore b/apps/create-hypergraph/template-nextjs/.prettierignore new file mode 100644 index 00000000..093167f8 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/.prettierignore @@ -0,0 +1,4 @@ +# Ignore artifacts: +build +dist +.next \ No newline at end of file diff --git a/apps/create-hypergraph/template-nextjs/.prettierrc b/apps/create-hypergraph/template-nextjs/.prettierrc new file mode 100644 index 00000000..0981b7cc --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "printWidth": 120 +} diff --git a/apps/create-hypergraph/template-nextjs/Components/Login/AuthCallback.tsx b/apps/create-hypergraph/template-nextjs/Components/Login/AuthCallback.tsx new file mode 100644 index 00000000..0f093dee --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/Login/AuthCallback.tsx @@ -0,0 +1,21 @@ +'use client'; + +import { useHypergraphApp } from '@graphprotocol/hypergraph-react'; +import { useRouter } from 'next/navigation'; +import { useLayoutEffect } from 'react'; + +export type AuthCallbackProps = { + ciphertext: string; + nonce: string; +}; +export function AuthCallback({ ciphertext, nonce }: Readonly) { + const router = useRouter(); + const { processConnectAuthSuccess } = useHypergraphApp(); + + useLayoutEffect(() => { + processConnectAuthSuccess({ storage: localStorage, ciphertext, nonce }); + router.replace('/'); + }, [ciphertext, nonce, processConnectAuthSuccess, router]); + + return
Authenticating …
; +} diff --git a/apps/create-hypergraph/template-nextjs/Components/Login/LoginButton.tsx b/apps/create-hypergraph/template-nextjs/Components/Login/LoginButton.tsx new file mode 100644 index 00000000..1d77aa13 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/Login/LoginButton.tsx @@ -0,0 +1,29 @@ +'use client'; + +import { useHypergraphApp } from '@graphprotocol/hypergraph-react'; + +export function LoginButton() { + const { redirectToConnect } = useHypergraphApp(); + + const handleSignIn = () => { + redirectToConnect({ + storage: localStorage, + connectUrl: 'https://hypergraph-connect.vercel.app/', + successUrl: `${window.location.origin}/authenticate-success`, + appId: '93bb8907-085a-4a0e-83dd-62b0dc98e793', + redirectFn: (url: URL) => { + window.location.href = url.toString(); + }, + }); + }; + + return ( + + ); +} diff --git a/apps/create-hypergraph/template-nextjs/Components/Login/LoginForm.tsx b/apps/create-hypergraph/template-nextjs/Components/Login/LoginForm.tsx new file mode 100644 index 00000000..7d7bd53b --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/Login/LoginForm.tsx @@ -0,0 +1,33 @@ +'use client'; + +import { useHypergraphApp } from '@graphprotocol/hypergraph-react'; + +export function LoginForm() { + const { redirectToConnect } = useHypergraphApp(); + + return ( +
+
+

Sign in to access your spaces and start building.

+ +
+
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx b/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx new file mode 100644 index 00000000..01a157b5 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx @@ -0,0 +1,62 @@ +'use client'; + +import { useQuery } from '@graphprotocol/hypergraph-react'; +import { Project } from '../../app/schema'; + +export function PublicKnowledgeExplorer() { + const { data: projects, isPending } = useQuery(Project, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 40, + }); + + // empty state + if (isPending === false && projects.length === 0) { + return ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ ); + } + + return ( +
+ {projects.map((project) => ( +
+ {/* Gradient overlay */} +
+ + {/* Content */} +
+ {/* Project icon/avatar */} +
+ {project.name.charAt(0).toUpperCase()} +
+ + {/* Project name */} +

+ {project.name} +

+
+ + {/* Decorative corner accent */} +
+
+ ))} +
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/README.md b/apps/create-hypergraph/template-nextjs/README.md new file mode 100644 index 00000000..648caa55 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/README.md @@ -0,0 +1,3 @@ +# Hypergraph + Nextjs + +This template is a minimal setup for a [Hypergraph](https://github.com/graphprotocol/hypergraph) app using nextjs. diff --git a/apps/create-hypergraph/template-nextjs/app/Providers.tsx b/apps/create-hypergraph/template-nextjs/app/Providers.tsx new file mode 100644 index 00000000..e9409417 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/Providers.tsx @@ -0,0 +1,15 @@ +'use client'; + +import { HypergraphAppProvider } from '@graphprotocol/hypergraph-react'; + +import { mapping } from './mapping'; + +export default function Providers({ children }: Readonly<{ children: React.ReactNode }>) { + const _storage = typeof window !== 'undefined' ? window.localStorage : (undefined as unknown as Storage); + + return ( + + {children} + + ); +} diff --git a/apps/create-hypergraph/template-nextjs/app/authenticate-success/page.tsx b/apps/create-hypergraph/template-nextjs/app/authenticate-success/page.tsx new file mode 100644 index 00000000..f728f1b0 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/authenticate-success/page.tsx @@ -0,0 +1,32 @@ +import { redirect } from 'next/navigation'; + +import { AuthCallback } from '../../Components/Login/AuthCallback'; + +export default async function AuthenticateSuccessPage( + props: Readonly<{ + searchParams: Promise<{ [key: string]: string | string[] | undefined }>; + }>, +) { + const searchParams = await props.searchParams; + const authSuccessParams = validateAuthenticateSuccessParams(searchParams); + if (authSuccessParams == null) { + return redirect('/404'); + } + + return ; +} + +function validateAuthenticateSuccessParams( + params: Readonly<{ + [key: string]: string | string[] | undefined; + }>, +) { + if (!params['ciphertext'] || !params['nonce']) { + return null; + } + + return { + ciphertext: Array.isArray(params.ciphertext) ? params.ciphertext[0] : params.ciphertext, + nonce: Array.isArray(params.nonce) ? params.nonce[0] : params.nonce, + }; +} diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/page.tsx new file mode 100644 index 00000000..1a8e2dcd --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/page.tsx @@ -0,0 +1,18 @@ +import { PublicKnowledgeExplorer } from '../../Components/PublicKnowledge/Explore'; + +export default function ExplorePublicKnowledgePage() { + return ( +
+
+

+ Explore Public Knowledge +

+

+ This page demonstrates how to query public data from a space. No authentication is required. +

+
+ + +
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/app/favicon.ico b/apps/create-hypergraph/template-nextjs/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/apps/create-hypergraph/template-nextjs/app/globals.css b/apps/create-hypergraph/template-nextjs/app/globals.css new file mode 100644 index 00000000..b104a415 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/globals.css @@ -0,0 +1,44 @@ +@import 'tailwindcss'; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +html, +body { + max-width: 100vw; + overflow-x: hidden; +} + +body { + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} + +@media (prefers-color-scheme: dark) { + html { + color-scheme: dark; + } +} diff --git a/apps/create-hypergraph/template-nextjs/app/layout.tsx b/apps/create-hypergraph/template-nextjs/app/layout.tsx new file mode 100644 index 00000000..857f0ba8 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/layout.tsx @@ -0,0 +1,34 @@ +import type { Metadata } from 'next'; +import { Geist, Geist_Mono } from 'next/font/google'; + +import Providers from './Providers'; +import './globals.css'; + +const geistSans = Geist({ + variable: '--font-geist-sans', + subsets: ['latin'], +}); + +const geistMono = Geist_Mono({ + variable: '--font-geist-mono', + subsets: ['latin'], +}); + +export const metadata: Metadata = { + title: 'Hypergraph + Nextjs', + description: 'Hypergraph-enabled nextjs starter app', +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/apps/create-hypergraph/template-nextjs/app/login/page.tsx b/apps/create-hypergraph/template-nextjs/app/login/page.tsx new file mode 100644 index 00000000..d39a28a8 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/login/page.tsx @@ -0,0 +1,9 @@ +import { LoginForm } from '../../Components/Login/LoginForm'; + +export default function LoginPage() { + return ( +
+ +
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/app/mapping.ts b/apps/create-hypergraph/template-nextjs/app/mapping.ts new file mode 100644 index 00000000..34cf9956 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/mapping.ts @@ -0,0 +1,18 @@ +import { Id } from '@graphprotocol/grc-20'; +import type { Mapping } from '@graphprotocol/hypergraph'; + +export const mapping: Mapping = { + Address: { + typeIds: [Id.Id('5c6e72fb-8340-47c0-8281-8be159ecd495')], + properties: { + name: Id.Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + description: Id.Id('9b1f76ff-9711-404c-861e-59dc3fa7d037'), + }, + }, + Project: { + typeIds: [Id.Id('484a18c5-030a-499c-b0f2-ef588ff16d50')], + properties: { + name: Id.Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + }, + }, +}; diff --git a/apps/create-hypergraph/template-nextjs/app/page.tsx b/apps/create-hypergraph/template-nextjs/app/page.tsx new file mode 100644 index 00000000..e3c731a9 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/page.tsx @@ -0,0 +1,105 @@ +import Image from 'next/image'; +import Link from 'next/link'; +import { LoginButton } from '../Components/Login/LoginButton'; + +export default function HomePage() { + return ( +
+
+ Hypergraph Logo +

+ Welcome to Hypergraph +

+

Your web3 app template powered by Hypergraph

+
+ +
+ {/* Section 1: Explore existing public knowledge */} +
+
+
+ + + +
+

Explore Public Knowledge

+

+ Discover and explore the vast network of knowledge already available in the public Knowledge Graph. +

+ Start Exploring +
+
+ + {/* Section 2: Sign in with Geo Connect */} +
+
+
+ + + +
+

Manage Your Data

+

+ Sign in with Geo Connect to manage your private data and publish it to the public Knowledge Graph. +

+ +
+
+ + {/* Section 3: Explore the docs */} +
+
+
+ + + +
+

Explore the Docs

+

+ Learn how to build with Hypergraph and discover all the features available in our comprehensive + documentation. +

+ + Read Documentation + +
+
+
+
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/app/schema.ts b/apps/create-hypergraph/template-nextjs/app/schema.ts new file mode 100644 index 00000000..ed50614a --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/schema.ts @@ -0,0 +1,10 @@ +import { Entity, Type } from '@graphprotocol/hypergraph'; + +export class Address extends Entity.Class
('Address')({ + name: Type.Text, + description: Type.Text, +}) {} + +export class Project extends Entity.Class('Project')({ + name: Type.Text, +}) {} diff --git a/apps/create-hypergraph/template-nextjs/eslint.config.mjs b/apps/create-hypergraph/template-nextjs/eslint.config.mjs new file mode 100644 index 00000000..5b67bd0a --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/eslint.config.mjs @@ -0,0 +1,14 @@ +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { FlatCompat } from '@eslint/eslintrc'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [...compat.extends('next/core-web-vitals', 'next/typescript')]; + +export default eslintConfig; diff --git a/apps/create-hypergraph/template-nextjs/next-end.d.ts b/apps/create-hypergraph/template-nextjs/next-end.d.ts new file mode 100644 index 00000000..1b3be084 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/next-end.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/create-hypergraph/template-nextjs/next.config.ts b/apps/create-hypergraph/template-nextjs/next.config.ts new file mode 100644 index 00000000..b22af960 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/next.config.ts @@ -0,0 +1,5 @@ +import type { NextConfig } from 'next'; + +const nextConfig: NextConfig = {}; + +export default nextConfig; diff --git a/apps/create-hypergraph/template-nextjs/package.json b/apps/create-hypergraph/template-nextjs/package.json new file mode 100644 index 00000000..d7ea1420 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/package.json @@ -0,0 +1,38 @@ +{ + "name": "hypergraph-template-nextjs", + "description": "Hypergraph-enabled nextjs starter app", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev --turbopack", + "build": "next build", + "start": "next start", + "lint": "next lint", + "lint:fix": "next lint --fix", + "format": "prettier . --check", + "format:fix": "prettier . --write --list-different", + "prebuild": "pnpm --workspace-concurrency 1 --filter @graphprotocol/hypergraph run build && pnpm --workspace-concurrency 1 --filter @graphprotocol/hypergraph-react run build" + }, + "type": "module", + "dependencies": { + "@graphprotocol/grc-20": "^0.21.6", + "@graphprotocol/hypergraph": "^0.0.14", + "@graphprotocol/hypergraph-react": "^0.0.14", + "@tailwindcss/postcss": "^4.1.11", + "next": "15.4.3", + "postcss": "^8.5.6", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "tailwindcss": "^4.1.11" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@types/node": "^24", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "15.4.3", + "prettier": "^3.6.2", + "typescript": "^5" + } +} diff --git a/apps/create-hypergraph/template-nextjs/postcss.config.mjs b/apps/create-hypergraph/template-nextjs/postcss.config.mjs new file mode 100644 index 00000000..54e87396 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/postcss.config.mjs @@ -0,0 +1,6 @@ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; +export default config; \ No newline at end of file diff --git a/apps/create-hypergraph/template-nextjs/public/hypergraph.svg b/apps/create-hypergraph/template-nextjs/public/hypergraph.svg new file mode 100644 index 00000000..f7378aad --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/public/hypergraph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/create-hypergraph/template-nextjs/tsconfig.json b/apps/create-hypergraph/template-nextjs/tsconfig.json new file mode 100644 index 00000000..c1334095 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 70964605..ad32c205 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -175,108 +175,60 @@ importers: apps/create-hypergraph/dist: {} - apps/create-hypergraph/my-hypergraph-app: + apps/create-hypergraph/template-nextjs: dependencies: '@graphprotocol/grc-20': specifier: ^0.21.6 version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/hypergraph': - specifier: 0.0.14 + specifier: ^0.0.14 version: 0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/hypergraph-react': - specifier: 0.0.14 + specifier: ^0.0.14 version: 0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) - '@graphprotocol/typesync': - specifier: ^0.0.3 - version: 0.0.3(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) - '@radix-ui/react-navigation-menu': - specifier: ^1.2.13 - version: 1.2.13(@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) - '@radix-ui/react-slot': - specifier: ^1.2.3 - version: 1.2.3(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-tooltip': - specifier: ^1.2.7 - version: 1.2.7(@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) - '@tailwindcss/vite': + '@tailwindcss/postcss': specifier: ^4.1.11 - version: 4.1.11(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) - '@tanstack/react-query': - specifier: ^5.83.0 - version: 5.83.0(react@19.1.0) - '@tanstack/react-router': - specifier: ^1.129.2 - version: 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - class-variance-authority: - specifier: ^0.7.1 - version: 0.7.1 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - effect: - specifier: ^3.17.0 - version: 3.17.0 - lucide-react: - specifier: ^0.525.0 - version: 0.525.0(react@19.1.0) + version: 4.1.11 + next: + specifier: 15.4.3 + version: 15.4.3(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + postcss: + specifier: ^8.5.6 + version: 8.5.6 react: specifier: ^19.1.0 version: 19.1.0 react-dom: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) - tailwind-merge: - specifier: ^3.3.1 - version: 3.3.1 tailwindcss: specifier: ^4.1.11 version: 4.1.11 - vite: - specifier: ^7.0.5 - version: 7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) devDependencies: - '@eslint/js': - specifier: ^9.31.0 - version: 9.31.0 - '@tanstack/router-plugin': - specifier: ^1.129.2 - version: 1.129.5(@tanstack/react-router@1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))(webpack@5.99.8) + '@eslint/eslintrc': + specifier: ^3 + version: 3.3.1 '@types/node': - specifier: ^24.1.0 + specifier: ^24 version: 24.1.0 '@types/react': - specifier: ^19.1.8 + specifier: ^19 version: 19.1.8 '@types/react-dom': - specifier: ^19.1.6 + specifier: ^19 version: 19.1.6(@types/react@19.1.8) - '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0)) eslint: - specifier: ^9.31.0 + specifier: ^9 version: 9.31.0(jiti@2.4.2) - eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@9.31.0(jiti@2.4.2)) - eslint-plugin-react-refresh: - specifier: ^0.4.20 - version: 0.4.20(eslint@9.31.0(jiti@2.4.2)) - globals: - specifier: ^16.3.0 - version: 16.3.0 + eslint-config-next: + specifier: 15.4.3 + version: 15.4.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) prettier: specifier: ^3.6.2 version: 3.6.2 - tw-animate-css: - specifier: ^1.3.5 - version: 1.3.5 typescript: - specifier: ~5.8.3 + specifier: ^5 version: 5.8.3 - typescript-eslint: - specifier: ^8.38.0 - version: 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) apps/create-hypergraph/template-vite-react: dependencies: @@ -1078,6 +1030,10 @@ packages: resolution: {integrity: sha512-ZO0UKvDyEFvyeJQX0gmZDQEvhLZ2X10K+ps6hViMo1HgE2V8em00SwNsQ+7E/52a+YiBkVWX61pJJJE44juDMQ==} engines: {node: '>= 14.0.0'} + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -3451,110 +3407,232 @@ packages: cpu: [arm64] os: [darwin] + '@img/sharp-darwin-arm64@0.34.3': + resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-x64@0.34.1': resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] + '@img/sharp-darwin-x64@0.34.3': + resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + 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-arm64@1.2.0': + resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.1.0': resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.2.0': + resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-linux-arm64@1.1.0': resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linux-arm64@1.2.0': + resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linux-arm@1.1.0': resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} cpu: [arm] os: [linux] + '@img/sharp-libvips-linux-arm@1.2.0': + resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==} + cpu: [arm] + os: [linux] + '@img/sharp-libvips-linux-ppc64@1.1.0': resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} cpu: [ppc64] os: [linux] + '@img/sharp-libvips-linux-ppc64@1.2.0': + resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==} + cpu: [ppc64] + 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-s390x@1.2.0': + resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==} + cpu: [s390x] + 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-linux-x64@1.2.0': + resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==} + cpu: [x64] + 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-arm64@1.2.0': + resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.1.0': resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} cpu: [x64] os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.2.0': + resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==} + cpu: [x64] + os: [linux] + '@img/sharp-linux-arm64@0.34.1': resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linux-arm64@0.34.3': + resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linux-arm@0.34.1': resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + '@img/sharp-linux-arm@0.34.3': + resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.3': + resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + '@img/sharp-linux-s390x@0.34.1': resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + '@img/sharp-linux-s390x@0.34.3': + resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + '@img/sharp-linux-x64@0.34.1': resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-linux-x64@0.34.3': + resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-linuxmusl-arm64@0.34.1': resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linuxmusl-arm64@0.34.3': + resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linuxmusl-x64@0.34.1': resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-linuxmusl-x64@0.34.3': + resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-wasm32@0.34.1': resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] + '@img/sharp-wasm32@0.34.3': + resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.3': + resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + '@img/sharp-win32-ia32@0.34.1': resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] + '@img/sharp-win32-ia32@0.34.3': + resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + '@img/sharp-win32-x64@0.34.1': resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] + '@img/sharp-win32-x64@0.34.3': + resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -3714,60 +3792,117 @@ packages: cpu: [x64] os: [win32] + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@napi-rs/wasm-runtime@1.0.1': resolution: {integrity: sha512-KVlQ/jgywZpixGCKMNwxStmmbYEMyokZpCf2YuIChhfJA2uqfAKNEM8INz7zzTo55iEXfBhIIs3VqYyqzDLj8g==} '@next/env@15.3.2': resolution: {integrity: sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==} + '@next/env@15.4.3': + resolution: {integrity: sha512-lKJ9KJAvaWzqurIsz6NWdQOLj96mdhuDMusLSYHw9HBe2On7BjUwU1WeRvq19x7NrEK3iOgMeSBV5qEhVH1cMw==} + + '@next/eslint-plugin-next@15.4.3': + resolution: {integrity: sha512-wYYbP29uZlm9lqD1C6HDgW9WNNt6AlTogYKYpDyATs0QrKYIv/rPueoIDRH6qttXGCe3zNrb7hxfQx4w8OSkLA==} + '@next/swc-darwin-arm64@15.3.2': resolution: {integrity: sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@15.4.3': + resolution: {integrity: sha512-YAhZWKeEYY7LHQJiQ8fe3Y6ymfcDcTn7rDC8PDu/pdeIl1Z2LHD4uyPNuQUGCEQT//MSNv6oZCeQzZfTCKZv+A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-x64@15.3.2': resolution: {integrity: sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@15.4.3': + resolution: {integrity: sha512-ZPHRdd51xaxCMpT4viQ6h8TgYM1zPW1JIeksPY9wKlyvBVUQqrWqw8kEh1sa7/x0Ied+U7pYHkAkutrUwxbMcg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-linux-arm64-gnu@15.3.2': resolution: {integrity: sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@15.4.3': + resolution: {integrity: sha512-QUdqftCXC5vw5cowucqi9FeOPQ0vdMxoOHLY0J5jPdercwSJFjdi9CkEO4Xkq1eG4t1TB/BG81n6rmTsWoILnw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@15.3.2': resolution: {integrity: sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@15.4.3': + resolution: {integrity: sha512-HTL31NsmoafX+r5g91Yj3+q34nrn1xKmCWVuNA+fUWO4X0pr+n83uGzLyEOn0kUqbMZ40KmWx+4wsbMoUChkiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-x64-gnu@15.3.2': resolution: {integrity: sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@15.4.3': + resolution: {integrity: sha512-HRQLWoeFkKXd2YCEEy9GhfwOijRm37x4w5r0MMVHxBKSA6ms3JoPUXvGhfHT6srnGRcEUWNrQ2vzkHir5ZWTSw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@15.3.2': resolution: {integrity: sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@15.4.3': + resolution: {integrity: sha512-NyXUx6G7AayaRGUsVPenuwhyAoyxjQuQPaK50AXoaAHPwRuif4WmSrXUs8/Y0HJIZh8E/YXRm9H7uuGfiacpuQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-win32-arm64-msvc@15.3.2': resolution: {integrity: sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@15.4.3': + resolution: {integrity: sha512-2CUTmpzN/7cL1a7GjdLkDFlfH3nwMwW8a6JiaAUsL9MtKmNNO3fnXqnY0Zk30fii3hVEl4dr7ztrpYt0t2CcGQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-x64-msvc@15.3.2': resolution: {integrity: sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@15.4.3': + resolution: {integrity: sha512-i54YgUhvrUQxQD84SjAbkfWhYkOdm/DNRAVekCHLWxVg3aUbyC6NFQn9TwgCkX5QAS2pXCJo3kFboSFvrsd7dA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} @@ -3844,6 +3979,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + '@octokit/action@6.1.0': resolution: {integrity: sha512-lo+nHx8kAV86bxvOVOI3vFjX3gXPd/L7guAUbvs3pUvnR2KC+R7yjBkA1uACt4gYhs4LcWP3AXSGQzsbeN2XXw==} engines: {node: '>= 18'} @@ -4846,6 +4985,12 @@ packages: cpu: [x64] os: [win32] + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.12.0': + resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==} + '@scure/base@1.1.9': resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} @@ -5433,6 +5578,9 @@ packages: resolution: {integrity: sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA==} engines: {node: '>= 10'} + '@tailwindcss/postcss@4.1.11': + resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==} + '@tailwindcss/vite@4.1.10': resolution: {integrity: sha512-QWnD5HDY2IADv+vYR82lOhqOlS1jSCUUAmfem52cXAhRTKxpDh3ARX8TTXJTCCO7Rv7cD2Nlekabv02bwP3a2A==} peerDependencies: @@ -5801,6 +5949,9 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -5989,6 +6140,101 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + '@vitejs/plugin-react@4.4.1': resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6395,13 +6641,49 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -6419,6 +6701,9 @@ packages: resolution: {integrity: sha512-mfh6a7gKXE8pDlxTvqIc/syH/P3RkzbOF6LeHdcKztLEzYe6IMsRCL7N8vI7hqTGWNxpkCuuRTpT21xNWqhRtQ==} engines: {node: '>=20.18.0'} + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -6431,6 +6716,10 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -6454,6 +6743,14 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + axe-core@4.10.3: + resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} + engines: {node: '>=4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + babel-dead-code-elimination@1.0.10: resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} @@ -7277,6 +7574,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -7285,6 +7585,18 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + dataloader@2.2.3: resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} @@ -7308,6 +7620,14 @@ packages: supports-color: optional: true + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -7507,6 +7827,10 @@ packages: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -7659,6 +7983,10 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -7667,6 +7995,10 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -7674,6 +8006,18 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + es-toolkit@1.33.0: resolution: {integrity: sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==} @@ -7722,6 +8066,68 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + eslint-config-next@15.4.3: + resolution: {integrity: sha512-blytVMTpdqqlLBvYOvwT51m5eqRHNofKR/pfBSeeHiQMSY33kCph31hAK3DiAsL/RamVJRQzHwTRbbNr+7c/sw==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + eslint-plugin-react-hooks@5.2.0: resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} engines: {node: '>=10'} @@ -7733,6 +8139,12 @@ packages: peerDependencies: eslint: '>=8.40' + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -7914,6 +8326,10 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -8192,6 +8608,13 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -8219,6 +8642,10 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} @@ -8280,6 +8707,10 @@ packages: resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} engines: {node: '>=18'} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -8371,6 +8802,10 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -8378,6 +8813,10 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -8661,6 +9100,10 @@ packages: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} @@ -8693,19 +9136,38 @@ packages: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -8718,6 +9180,14 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -8739,6 +9209,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -8774,14 +9248,26 @@ packages: is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-npm@6.0.0: resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -8836,6 +9322,14 @@ packages: resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} engines: {node: '>=6'} + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -8844,10 +9338,18 @@ packages: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -8870,6 +9372,18 @@ packages: is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -8934,6 +9448,10 @@ packages: peerDependencies: ws: '*' + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -9053,6 +9571,10 @@ packages: resolution: {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==} engines: {node: '>= 0.2.0'} + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -9068,6 +9590,10 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -9082,6 +9608,13 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + latest-version@7.0.0: resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} engines: {node: '>=14.16'} @@ -9813,6 +10346,11 @@ packages: napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + napi-postinstall@0.3.2: + resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -9852,6 +10390,27 @@ packages: sass: optional: true + next@15.4.3: + resolution: {integrity: sha512-uW7Qe6poVasNIE1X382nI29oxSdFJzjQzTgJFLD43MxyPfGKKxCMySllhBpvqr48f58Om+tLMivzRwBpXEytvA==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -9982,6 +10541,26 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} @@ -10049,6 +10628,10 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + ox@0.6.7: resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} peerDependencies: @@ -11202,6 +11785,10 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + regenerate-unicode-properties@10.2.0: resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} engines: {node: '>=4'} @@ -11218,6 +11805,10 @@ packages: regex@6.0.1: resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + regexpu-core@6.2.0: resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} engines: {node: '>=4'} @@ -11330,6 +11921,10 @@ packages: engines: {node: '>= 0.4'} hasBin: true + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} @@ -11424,12 +12019,20 @@ packages: rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -11564,6 +12167,14 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -11588,6 +12199,10 @@ packages: resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.34.3: + resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -11771,6 +12386,9 @@ packages: resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} engines: {node: '>=12'} + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -11785,6 +12403,10 @@ packages: std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} @@ -11817,6 +12439,29 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -12170,6 +12815,9 @@ packages: ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsdown@0.13.0: resolution: {integrity: sha512-+1ZqbLIYDAiNxtAvq9RsTg55PRvaMxGmtvRFBW2J+i4GfDKiyHAkxez1eB3EPvHG1Z917nsf2madsSeblJS3GA==} engines: {node: '>=20.19.0'} @@ -12298,6 +12946,18 @@ packages: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -12323,6 +12983,10 @@ packages: uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} @@ -12438,6 +13102,9 @@ packages: resolution: {integrity: sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==} engines: {node: '>=18.12.0'} + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + unstorage@1.14.4: resolution: {integrity: sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==} peerDependencies: @@ -12956,6 +13623,18 @@ packages: whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} @@ -13307,6 +13986,8 @@ snapshots: dependencies: '@algolia/client-common': 5.25.0 + '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -14742,215 +15423,215 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)': + '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.6)': dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - '@csstools/postcss-color-function@4.0.9(postcss@8.5.3)': + '@csstools/postcss-color-function@4.0.9(postcss@8.5.6)': dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-color-mix-function@3.0.9(postcss@8.5.3)': + '@csstools/postcss-color-mix-function@3.0.9(postcss@8.5.6)': dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-content-alt-text@2.0.5(postcss@8.5.3)': + '@csstools/postcss-content-alt-text@2.0.5(postcss@8.5.6)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-exponential-functions@2.0.8(postcss@8.5.3)': + '@csstools/postcss-exponential-functions@2.0.8(postcss@8.5.6)': dependencies: '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.3)': + '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.6)': dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@2.0.9(postcss@8.5.3)': + '@csstools/postcss-gamut-mapping@2.0.9(postcss@8.5.6)': dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-gradients-interpolation-method@5.0.9(postcss@8.5.3)': + '@csstools/postcss-gradients-interpolation-method@5.0.9(postcss@8.5.6)': dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-hwb-function@4.0.9(postcss@8.5.3)': + '@csstools/postcss-hwb-function@4.0.9(postcss@8.5.6)': dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-ic-unit@4.0.1(postcss@8.5.3)': + '@csstools/postcss-ic-unit@4.0.1(postcss@8.5.6)': dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-initial@2.0.1(postcss@8.5.3)': + '@csstools/postcss-initial@2.0.1(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.3)': + '@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.6)': dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - '@csstools/postcss-light-dark-function@2.0.8(postcss@8.5.3)': + '@csstools/postcss-light-dark-function@2.0.8(postcss@8.5.6)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.3)': + '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.3)': + '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.3)': + '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.3)': + '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.3)': + '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.6)': dependencies: '@csstools/css-tokenizer': 3.0.3 - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-media-minmax@2.0.8(postcss@8.5.3)': + '@csstools/postcss-media-minmax@2.0.8(postcss@8.5.6)': dependencies: '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.3)': + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.6)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.3)': + '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.6)': dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.3)': + '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@4.0.9(postcss@8.5.3)': + '@csstools/postcss-oklab-function@4.0.9(postcss@8.5.6)': dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-progressive-custom-properties@4.0.1(postcss@8.5.3)': + '@csstools/postcss-progressive-custom-properties@4.0.1(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-random-function@2.0.0(postcss@8.5.3)': + '@csstools/postcss-random-function@2.0.0(postcss@8.5.6)': dependencies: '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-relative-color-syntax@3.0.9(postcss@8.5.3)': + '@csstools/postcss-relative-color-syntax@3.0.9(postcss@8.5.6)': dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.3)': + '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - '@csstools/postcss-sign-functions@1.1.3(postcss@8.5.3)': + '@csstools/postcss-sign-functions@1.1.3(postcss@8.5.6)': dependencies: '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-stepped-value-functions@4.0.8(postcss@8.5.3)': + '@csstools/postcss-stepped-value-functions@4.0.8(postcss@8.5.6)': dependencies: '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.3)': + '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.6)': dependencies: '@csstools/color-helpers': 5.0.2 - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@4.0.8(postcss@8.5.3)': + '@csstools/postcss-trigonometric-functions@4.0.8(postcss@8.5.6)': dependencies: '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + postcss: 8.5.6 - '@csstools/postcss-unset-value@4.0.0(postcss@8.5.3)': + '@csstools/postcss-unset-value@4.0.0(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.1.0)': dependencies: @@ -14960,9 +15641,9 @@ snapshots: dependencies: postcss-selector-parser: 7.1.0 - '@csstools/utilities@2.0.0(postcss@8.5.3)': + '@csstools/utilities@2.0.0(postcss@8.5.6)': dependencies: - postcss: 8.5.3 + postcss: 8.5.6 '@discoveryjs/json-ext@0.5.7': {} @@ -15022,14 +15703,14 @@ snapshots: copy-webpack-plugin: 11.0.0(webpack@5.99.8) css-loader: 6.11.0(webpack@5.99.8) css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(lightningcss@1.30.1)(webpack@5.99.8) - cssnano: 6.1.2(postcss@8.5.3) + cssnano: 6.1.2(postcss@8.5.6) file-loader: 6.2.0(webpack@5.99.8) html-minifier-terser: 7.2.0 mini-css-extract-plugin: 2.9.2(webpack@5.99.8) null-loader: 4.0.1(webpack@5.99.8) - postcss: 8.5.3 - postcss-loader: 7.3.4(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8) - postcss-preset-env: 10.1.6(postcss@8.5.3) + postcss: 8.5.6 + postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.8.3)(webpack@5.99.8) + postcss-preset-env: 10.1.6(postcss@8.5.6) react-dev-utils: 12.0.1(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.99.8) terser-webpack-plugin: 5.3.14(webpack@5.99.8) tslib: 2.8.1 @@ -15561,7 +16242,7 @@ snapshots: infima: 0.2.0-alpha.45 lodash: 4.17.21 nprogress: 0.2.0 - postcss: 8.5.3 + postcss: 8.5.6 prism-react-renderer: 2.4.1(react@19.1.0) prismjs: 1.30.0 react: 19.1.0 @@ -17018,79 +17699,165 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.1.0 optional: true + '@img/sharp-darwin-arm64@0.34.3': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.0 + optional: true + '@img/sharp-darwin-x64@0.34.1': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.1.0 optional: true + '@img/sharp-darwin-x64@0.34.3': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.0 + optional: true + '@img/sharp-libvips-darwin-arm64@1.1.0': optional: true + '@img/sharp-libvips-darwin-arm64@1.2.0': + optional: true + '@img/sharp-libvips-darwin-x64@1.1.0': optional: true + '@img/sharp-libvips-darwin-x64@1.2.0': + optional: true + '@img/sharp-libvips-linux-arm64@1.1.0': optional: true + '@img/sharp-libvips-linux-arm64@1.2.0': + optional: true + '@img/sharp-libvips-linux-arm@1.1.0': optional: true + '@img/sharp-libvips-linux-arm@1.2.0': + optional: true + '@img/sharp-libvips-linux-ppc64@1.1.0': optional: true + '@img/sharp-libvips-linux-ppc64@1.2.0': + optional: true + '@img/sharp-libvips-linux-s390x@1.1.0': optional: true + '@img/sharp-libvips-linux-s390x@1.2.0': + optional: true + '@img/sharp-libvips-linux-x64@1.1.0': optional: true + '@img/sharp-libvips-linux-x64@1.2.0': + optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.2.0': + optional: true + '@img/sharp-libvips-linuxmusl-x64@1.1.0': optional: true + '@img/sharp-libvips-linuxmusl-x64@1.2.0': + optional: true + '@img/sharp-linux-arm64@0.34.1': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.1.0 optional: true + '@img/sharp-linux-arm64@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.0 + optional: true + '@img/sharp-linux-arm@0.34.1': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.1.0 optional: true + '@img/sharp-linux-arm@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.0 + optional: true + + '@img/sharp-linux-ppc64@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.0 + optional: true + '@img/sharp-linux-s390x@0.34.1': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.1.0 optional: true + '@img/sharp-linux-s390x@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.0 + optional: true + '@img/sharp-linux-x64@0.34.1': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.1.0 optional: true + '@img/sharp-linux-x64@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.0 + optional: true + '@img/sharp-linuxmusl-arm64@0.34.1': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 optional: true + '@img/sharp-linuxmusl-arm64@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 + optional: true + '@img/sharp-linuxmusl-x64@0.34.1': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.1.0 optional: true + '@img/sharp-linuxmusl-x64@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.0 + optional: true + '@img/sharp-wasm32@0.34.1': dependencies: '@emnapi/runtime': 1.4.3 optional: true + '@img/sharp-wasm32@0.34.3': + dependencies: + '@emnapi/runtime': 1.4.5 + optional: true + + '@img/sharp-win32-arm64@0.34.3': + optional: true + '@img/sharp-win32-ia32@0.34.1': optional: true + '@img/sharp-win32-ia32@0.34.3': + optional: true + '@img/sharp-win32-x64@0.34.1': optional: true + '@img/sharp-win32-x64@0.34.3': + optional: true + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -17332,6 +18099,13 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.10.0 + optional: true + '@napi-rs/wasm-runtime@1.0.1': dependencies: '@emnapi/core': 1.4.5 @@ -17341,30 +18115,60 @@ snapshots: '@next/env@15.3.2': {} + '@next/env@15.4.3': {} + + '@next/eslint-plugin-next@15.4.3': + dependencies: + fast-glob: 3.3.1 + '@next/swc-darwin-arm64@15.3.2': optional: true + '@next/swc-darwin-arm64@15.4.3': + optional: true + '@next/swc-darwin-x64@15.3.2': optional: true + '@next/swc-darwin-x64@15.4.3': + optional: true + '@next/swc-linux-arm64-gnu@15.3.2': optional: true + '@next/swc-linux-arm64-gnu@15.4.3': + optional: true + '@next/swc-linux-arm64-musl@15.3.2': optional: true + '@next/swc-linux-arm64-musl@15.4.3': + optional: true + '@next/swc-linux-x64-gnu@15.3.2': optional: true + '@next/swc-linux-x64-gnu@15.4.3': + optional: true + '@next/swc-linux-x64-musl@15.3.2': optional: true + '@next/swc-linux-x64-musl@15.4.3': + optional: true + '@next/swc-win32-arm64-msvc@15.3.2': optional: true + '@next/swc-win32-arm64-msvc@15.4.3': + optional: true + '@next/swc-win32-x64-msvc@15.3.2': optional: true + '@next/swc-win32-x64-msvc@15.4.3': + optional: true + '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': optional: true @@ -17426,6 +18230,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.18.0 + '@nolyfill/is-core-module@1.0.39': {} + '@octokit/action@6.1.0': dependencies: '@octokit/auth-action': 4.1.0 @@ -18640,6 +19446,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.45.0': optional: true + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.12.0': {} + '@scure/base@1.1.9': {} '@scure/base@1.2.5': {} @@ -19215,6 +20025,14 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.5 '@tailwindcss/oxide-win32-x64-msvc': 4.1.5 + '@tailwindcss/postcss@4.1.11': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.11 + '@tailwindcss/oxide': 4.1.11 + postcss: 8.5.6 + tailwindcss: 4.1.11 + '@tailwindcss/vite@4.1.10(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@tailwindcss/node': 4.1.10 @@ -19695,6 +20513,8 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/json5@0.0.29': {} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -19931,6 +20751,65 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true + '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.28.0 @@ -20847,10 +21726,79 @@ snapshots: dependencies: dequal: 2.0.3 + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + array-flatten@1.1.1: {} + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + array-union@2.1.0: {} + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + asap@2.0.6: {} asn1.js@4.10.1: @@ -20874,6 +21822,8 @@ snapshots: '@babel/parser': 7.28.0 pathe: 2.0.3 + ast-types-flow@0.0.8: {} + ast-types@0.16.1: dependencies: tslib: 2.8.1 @@ -20882,22 +21832,14 @@ snapshots: astring@1.9.0: {} + async-function@1.0.0: {} + at-least-node@1.0.0: {} atomic-sleep@1.0.0: {} auto-bind@4.0.0: {} - autoprefixer@10.4.21(postcss@8.5.3): - dependencies: - browserslist: 4.24.5 - caniuse-lite: 1.0.30001718 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.24.5 @@ -20912,6 +21854,10 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 + axe-core@4.10.3: {} + + axobject-query@4.1.0: {} + babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.28.0 @@ -21772,25 +22718,21 @@ snapshots: dependencies: type-fest: 1.4.0 - css-blank-pseudo@7.0.1(postcss@8.5.3): + css-blank-pseudo@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 css-color-keywords@1.0.0: {} - css-declaration-sorter@7.2.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - css-declaration-sorter@7.2.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - css-has-pseudo@7.0.2(postcss@8.5.3): + css-has-pseudo@7.0.2(postcss@8.5.6): dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 @@ -21820,9 +22762,9 @@ snapshots: clean-css: 5.3.3 lightningcss: 1.30.1 - css-prefers-color-scheme@10.0.0(postcss@8.5.3): + css-prefers-color-scheme@10.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 css-select@4.3.0: dependencies: @@ -21875,40 +22817,6 @@ snapshots: postcss-reduce-idents: 6.0.3(postcss@8.5.6) postcss-zindex: 6.0.2(postcss@8.5.6) - cssnano-preset-default@6.1.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.5 - css-declaration-sorter: 7.2.0(postcss@8.5.3) - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-calc: 9.0.1(postcss@8.5.3) - postcss-colormin: 6.1.0(postcss@8.5.3) - postcss-convert-values: 6.1.0(postcss@8.5.3) - postcss-discard-comments: 6.0.2(postcss@8.5.3) - postcss-discard-duplicates: 6.0.3(postcss@8.5.3) - postcss-discard-empty: 6.0.3(postcss@8.5.3) - postcss-discard-overridden: 6.0.2(postcss@8.5.3) - postcss-merge-longhand: 6.0.5(postcss@8.5.3) - postcss-merge-rules: 6.1.1(postcss@8.5.3) - postcss-minify-font-values: 6.1.0(postcss@8.5.3) - postcss-minify-gradients: 6.0.3(postcss@8.5.3) - postcss-minify-params: 6.1.0(postcss@8.5.3) - postcss-minify-selectors: 6.0.4(postcss@8.5.3) - postcss-normalize-charset: 6.0.2(postcss@8.5.3) - postcss-normalize-display-values: 6.0.2(postcss@8.5.3) - postcss-normalize-positions: 6.0.2(postcss@8.5.3) - postcss-normalize-repeat-style: 6.0.2(postcss@8.5.3) - postcss-normalize-string: 6.0.2(postcss@8.5.3) - postcss-normalize-timing-functions: 6.0.2(postcss@8.5.3) - postcss-normalize-unicode: 6.1.0(postcss@8.5.3) - postcss-normalize-url: 6.0.2(postcss@8.5.3) - postcss-normalize-whitespace: 6.0.2(postcss@8.5.3) - postcss-ordered-values: 6.0.2(postcss@8.5.3) - postcss-reduce-initial: 6.1.0(postcss@8.5.3) - postcss-reduce-transforms: 6.0.2(postcss@8.5.3) - postcss-svgo: 6.0.3(postcss@8.5.3) - postcss-unique-selectors: 6.0.4(postcss@8.5.3) - cssnano-preset-default@6.1.2(postcss@8.5.6): dependencies: browserslist: 4.24.5 @@ -21943,20 +22851,10 @@ snapshots: postcss-svgo: 6.0.3(postcss@8.5.6) postcss-unique-selectors: 6.0.4(postcss@8.5.6) - cssnano-utils@4.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - cssnano-utils@4.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 - cssnano@6.1.2(postcss@8.5.3): - dependencies: - cssnano-preset-default: 6.1.2(postcss@8.5.3) - lilconfig: 3.1.3 - postcss: 8.5.3 - cssnano@6.1.2(postcss@8.5.6): dependencies: cssnano-preset-default: 6.1.2(postcss@8.5.6) @@ -21974,6 +22872,8 @@ snapshots: csstype@3.1.3: {} + damerau-levenshtein@1.0.8: {} + data-uri-to-buffer@4.0.1: {} data-urls@5.0.0: @@ -21981,6 +22881,24 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + dataloader@2.2.3: {} date-fns@4.1.0: {} @@ -21995,6 +22913,10 @@ snapshots: dependencies: ms: 2.0.0 + debug@3.2.7: + dependencies: + ms: 2.1.3 + debug@4.4.0: dependencies: ms: 2.1.3 @@ -22153,6 +23075,10 @@ snapshots: dependencies: '@leichtgewicht/ip-codec': 2.0.5 + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} @@ -22314,16 +23240,109 @@ snapshots: dependencies: is-arrayish: 0.2.1 + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + es-define-property@1.0.1: {} es-errors@1.3.0: {} + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + es-toolkit@1.33.0: {} es6-promise@4.2.8: {} @@ -22393,6 +23412,108 @@ snapshots: escape-string-regexp@5.0.0: {} + eslint-config-next@15.4.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@next/eslint-plugin-next': 15.4.3 + '@rushstack/eslint-patch': 1.12.0 + '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.31.0(jiti@2.4.2)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.31.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.31.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.5(eslint@9.31.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.31.0(jiti@2.4.2)) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.31.0(jiti@2.4.2)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.1 + eslint: 9.31.0(jiti@2.4.2) + get-tsconfig: 4.10.1 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.14 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.31.0(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.31.0(jiti@2.4.2)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.31.0(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.31.0(jiti@2.4.2)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.31.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.31.0(jiti@2.4.2)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.31.0(jiti@2.4.2)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.10.3 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.31.0(jiti@2.4.2) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + eslint-plugin-react-hooks@5.2.0(eslint@9.31.0(jiti@2.4.2)): dependencies: eslint: 9.31.0(jiti@2.4.2) @@ -22401,6 +23522,28 @@ snapshots: dependencies: eslint: 9.31.0(jiti@2.4.2) + eslint-plugin-react@7.37.5(eslint@9.31.0(jiti@2.4.2)): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.31.0(jiti@2.4.2) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -22726,6 +23869,14 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -22999,6 +24150,17 @@ snapshots: function-bind@1.1.2: {} + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -23030,6 +24192,12 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + get-tsconfig@4.10.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -23097,6 +24265,11 @@ snapshots: globals@16.3.0: {} + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -23220,12 +24393,18 @@ snapshots: handle-thing@2.0.1: {} + has-bigints@1.1.0: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -23607,6 +24786,12 @@ snapshots: through: 2.3.8 wrap-ansi: 6.2.0 + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + interpret@1.4.0: {} invariant@2.2.4: @@ -23636,17 +24821,44 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} is-arrayish@0.3.2: optional: true + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-buffer@1.1.6: {} + is-bun-module@2.0.0: + dependencies: + semver: 7.7.2 + is-callable@1.2.7: {} is-ci@3.0.1: @@ -23657,6 +24869,17 @@ snapshots: dependencies: hasown: 2.0.2 + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-decimal@2.0.1: {} is-docker@2.2.1: {} @@ -23667,6 +24890,10 @@ snapshots: is-extglob@2.1.1: {} + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + is-fullwidth-code-point@3.0.0: {} is-generator-function@1.1.0: @@ -23699,13 +24926,22 @@ snapshots: dependencies: tslib: 2.8.1 + is-map@2.0.3: {} + is-nan@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 + is-negative-zero@2.0.3: {} + is-npm@6.0.0: {} + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-number@7.0.0: {} is-obj@1.0.1: {} @@ -23743,14 +24979,31 @@ snapshots: is-root@2.1.0: {} + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + is-stream@2.0.1: {} is-stream@4.0.1: {} + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.19 @@ -23769,6 +25022,17 @@ snapshots: dependencies: tslib: 2.8.1 + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-windows@1.0.2: {} is-wsl@2.2.0: @@ -23821,6 +25085,15 @@ snapshots: dependencies: ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -23959,6 +25232,10 @@ snapshots: remedial: 1.0.8 remove-trailing-spaces: 1.0.8 + json5@1.0.2: + dependencies: + minimist: 1.2.8 + json5@2.2.3: {} jsonfile@4.0.0: @@ -23973,6 +25250,13 @@ snapshots: jsonparse@1.3.1: {} + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.5 + object.values: 1.2.1 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -23983,6 +25267,12 @@ snapshots: kleur@3.0.3: {} + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + latest-version@7.0.0: dependencies: package-json: 8.1.1 @@ -24940,6 +26230,8 @@ snapshots: napi-build-utils@2.0.0: {} + napi-postinstall@0.3.2: {} + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -24975,6 +26267,29 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@15.4.3(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@next/env': 15.4.3 + '@swc/helpers': 0.5.15 + caniuse-lite: 1.0.30001718 + postcss: 8.4.31 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + styled-jsx: 5.1.6(@babel/core@7.28.0)(react@19.1.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.4.3 + '@next/swc-darwin-x64': 15.4.3 + '@next/swc-linux-arm64-gnu': 15.4.3 + '@next/swc-linux-arm64-musl': 15.4.3 + '@next/swc-linux-x64-gnu': 15.4.3 + '@next/swc-linux-x64-musl': 15.4.3 + '@next/swc-win32-arm64-msvc': 15.4.3 + '@next/swc-win32-x64-msvc': 15.4.3 + sharp: 0.34.3 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -25115,17 +26430,53 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - obuf@1.1.2: {} + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 - ofetch@1.4.1: + object.entries@1.1.9: dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.4 - ufo: 1.5.4 + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 - ohash@1.1.4: {} + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 - on-exit-leak-free@0.2.0: {} + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + obuf@1.1.2: {} + + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.4 + + ohash@1.1.4: {} + + on-exit-leak-free@0.2.0: {} on-exit-leak-free@2.1.2: {} @@ -25193,6 +26544,12 @@ snapshots: outdent@0.5.0: {} + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + ox@0.6.7(typescript@5.8.3)(zod@3.25.51): dependencies: '@adraffy/ens-normalize': 1.11.0 @@ -25562,55 +26919,41 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-attribute-case-insensitive@7.0.1(postcss@8.5.3): + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-calc@9.0.1(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - postcss-calc@9.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-clamp@4.1.0(postcss@8.5.3): + postcss-clamp@4.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.9(postcss@8.5.3): + postcss-color-functional-notation@7.0.9(postcss@8.5.6): dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 - - postcss-color-hex-alpha@10.0.0(postcss@8.5.3): - dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - postcss-color-rebeccapurple@10.0.0(postcss@8.5.3): + postcss-color-hex-alpha@10.0.0(postcss@8.5.6): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-colormin@6.1.0(postcss@8.5.3): + postcss-color-rebeccapurple@10.0.0(postcss@8.5.6): dependencies: - browserslist: 4.24.5 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 postcss-colormin@6.1.0(postcss@8.5.6): @@ -25621,76 +26964,54 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@6.1.0(postcss@8.5.3): - dependencies: - browserslist: 4.24.5 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-convert-values@6.1.0(postcss@8.5.6): dependencies: browserslist: 4.24.5 postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.5(postcss@8.5.3): + postcss-custom-media@11.0.5(postcss@8.5.6): dependencies: '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + postcss: 8.5.6 - postcss-custom-properties@14.0.4(postcss@8.5.3): + postcss-custom-properties@14.0.4(postcss@8.5.6): dependencies: '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.4(postcss@8.5.3): + postcss-custom-selectors@8.0.4(postcss@8.5.6): dependencies: '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-dir-pseudo-class@9.0.1(postcss@8.5.3): + postcss-dir-pseudo-class@9.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-discard-comments@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-discard-comments@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-discard-duplicates@6.0.3(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-discard-duplicates@6.0.3(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-discard-empty@6.0.3(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-discard-empty@6.0.3(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-discard-overridden@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-discard-overridden@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -25700,45 +27021,45 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 6.1.2 - postcss-double-position-gradients@6.0.1(postcss@8.5.3): + postcss-double-position-gradients@6.0.1(postcss@8.5.6): dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.1(postcss@8.5.3): + postcss-focus-visible@10.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-focus-within@9.0.1(postcss@8.5.3): + postcss-focus-within@9.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-font-variant@5.0.0(postcss@8.5.3): + postcss-font-variant@5.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-gap-properties@6.0.0(postcss@8.5.3): + postcss-gap-properties@6.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-image-set-function@7.0.0(postcss@8.5.3): + postcss-image-set-function@7.0.0(postcss@8.5.6): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-lab-function@7.0.9(postcss@8.5.3): + postcss-lab-function@7.0.9(postcss@8.5.6): dependencies: '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.7.0): dependencies: @@ -25749,19 +27070,19 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 - postcss-loader@7.3.4(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8): + postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.8.3)(webpack@5.99.8): dependencies: cosmiconfig: 8.3.6(typescript@5.8.3) jiti: 1.21.7 - postcss: 8.5.3 + postcss: 8.5.6 semver: 7.7.2 webpack: 5.99.8 transitivePeerDependencies: - typescript - postcss-logical@8.1.0(postcss@8.5.3): + postcss-logical@8.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 postcss-merge-idents@6.0.3(postcss@8.5.6): @@ -25770,26 +27091,12 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-merge-longhand@6.0.5(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - stylehacks: 6.1.1(postcss@8.5.3) - postcss-merge-longhand@6.0.5(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 stylehacks: 6.1.1(postcss@8.5.6) - postcss-merge-rules@6.1.1(postcss@8.5.3): - dependencies: - browserslist: 4.24.5 - caniuse-api: 3.0.0 - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - postcss-merge-rules@6.1.1(postcss@8.5.6): dependencies: browserslist: 4.24.5 @@ -25798,23 +27105,11 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@6.1.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-minify-font-values@6.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-gradients@6.0.3(postcss@8.5.3): - dependencies: - colord: 2.9.3 - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-minify-gradients@6.0.3(postcss@8.5.6): dependencies: colord: 2.9.3 @@ -25822,13 +27117,6 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-params@6.1.0(postcss@8.5.3): - dependencies: - browserslist: 4.24.5 - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-minify-params@6.1.0(postcss@8.5.6): dependencies: browserslist: 4.24.5 @@ -25836,11 +27124,6 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-selectors@6.0.4(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - postcss-minify-selectors@6.0.4(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -25867,112 +27150,61 @@ snapshots: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 - postcss-nesting@13.0.1(postcss@8.5.3): + postcss-nesting@13.0.1(postcss@8.5.6): dependencies: '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.1.0) '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-normalize-charset@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-normalize-charset@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-normalize-display-values@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-normalize-display-values@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-positions@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-normalize-positions@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-string@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-normalize-string@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@6.1.0(postcss@8.5.3): - dependencies: - browserslist: 4.24.5 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-normalize-unicode@6.1.0(postcss@8.5.6): dependencies: browserslist: 4.24.5 postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-url@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-normalize-url@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-opacity-percentage@3.0.0(postcss@8.5.3): + postcss-opacity-percentage@3.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 - - postcss-ordered-values@6.0.2(postcss@8.5.3): - dependencies: - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 + postcss: 8.5.6 postcss-ordered-values@6.0.2(postcss@8.5.6): dependencies: @@ -25980,90 +27212,90 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@6.0.0(postcss@8.5.3): + postcss-overflow-shorthand@6.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.5.3): + postcss-page-break@3.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-place@10.0.0(postcss@8.5.3): + postcss-place@10.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-preset-env@10.1.6(postcss@8.5.3): - dependencies: - '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.3) - '@csstools/postcss-color-function': 4.0.9(postcss@8.5.3) - '@csstools/postcss-color-mix-function': 3.0.9(postcss@8.5.3) - '@csstools/postcss-content-alt-text': 2.0.5(postcss@8.5.3) - '@csstools/postcss-exponential-functions': 2.0.8(postcss@8.5.3) - '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.3) - '@csstools/postcss-gamut-mapping': 2.0.9(postcss@8.5.3) - '@csstools/postcss-gradients-interpolation-method': 5.0.9(postcss@8.5.3) - '@csstools/postcss-hwb-function': 4.0.9(postcss@8.5.3) - '@csstools/postcss-ic-unit': 4.0.1(postcss@8.5.3) - '@csstools/postcss-initial': 2.0.1(postcss@8.5.3) - '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.3) - '@csstools/postcss-light-dark-function': 2.0.8(postcss@8.5.3) - '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.3) - '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.3) - '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.3) - '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.3) - '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.3) - '@csstools/postcss-media-minmax': 2.0.8(postcss@8.5.3) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.3) - '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.3) - '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.3) - '@csstools/postcss-oklab-function': 4.0.9(postcss@8.5.3) - '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3) - '@csstools/postcss-random-function': 2.0.0(postcss@8.5.3) - '@csstools/postcss-relative-color-syntax': 3.0.9(postcss@8.5.3) - '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.3) - '@csstools/postcss-sign-functions': 1.1.3(postcss@8.5.3) - '@csstools/postcss-stepped-value-functions': 4.0.8(postcss@8.5.3) - '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.3) - '@csstools/postcss-trigonometric-functions': 4.0.8(postcss@8.5.3) - '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.3) - autoprefixer: 10.4.21(postcss@8.5.3) + postcss-preset-env@10.1.6(postcss@8.5.6): + dependencies: + '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.6) + '@csstools/postcss-color-function': 4.0.9(postcss@8.5.6) + '@csstools/postcss-color-mix-function': 3.0.9(postcss@8.5.6) + '@csstools/postcss-content-alt-text': 2.0.5(postcss@8.5.6) + '@csstools/postcss-exponential-functions': 2.0.8(postcss@8.5.6) + '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.6) + '@csstools/postcss-gamut-mapping': 2.0.9(postcss@8.5.6) + '@csstools/postcss-gradients-interpolation-method': 5.0.9(postcss@8.5.6) + '@csstools/postcss-hwb-function': 4.0.9(postcss@8.5.6) + '@csstools/postcss-ic-unit': 4.0.1(postcss@8.5.6) + '@csstools/postcss-initial': 2.0.1(postcss@8.5.6) + '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.6) + '@csstools/postcss-light-dark-function': 2.0.8(postcss@8.5.6) + '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.6) + '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.6) + '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.6) + '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.6) + '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.6) + '@csstools/postcss-media-minmax': 2.0.8(postcss@8.5.6) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.6) + '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.6) + '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.6) + '@csstools/postcss-oklab-function': 4.0.9(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.6) + '@csstools/postcss-random-function': 2.0.0(postcss@8.5.6) + '@csstools/postcss-relative-color-syntax': 3.0.9(postcss@8.5.6) + '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.6) + '@csstools/postcss-sign-functions': 1.1.3(postcss@8.5.6) + '@csstools/postcss-stepped-value-functions': 4.0.8(postcss@8.5.6) + '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.6) + '@csstools/postcss-trigonometric-functions': 4.0.8(postcss@8.5.6) + '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.6) + autoprefixer: 10.4.21(postcss@8.5.6) browserslist: 4.24.5 - css-blank-pseudo: 7.0.1(postcss@8.5.3) - css-has-pseudo: 7.0.2(postcss@8.5.3) - css-prefers-color-scheme: 10.0.0(postcss@8.5.3) + css-blank-pseudo: 7.0.1(postcss@8.5.6) + css-has-pseudo: 7.0.2(postcss@8.5.6) + css-prefers-color-scheme: 10.0.0(postcss@8.5.6) cssdb: 8.2.5 - postcss: 8.5.3 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.3) - postcss-clamp: 4.1.0(postcss@8.5.3) - postcss-color-functional-notation: 7.0.9(postcss@8.5.3) - postcss-color-hex-alpha: 10.0.0(postcss@8.5.3) - postcss-color-rebeccapurple: 10.0.0(postcss@8.5.3) - postcss-custom-media: 11.0.5(postcss@8.5.3) - postcss-custom-properties: 14.0.4(postcss@8.5.3) - postcss-custom-selectors: 8.0.4(postcss@8.5.3) - postcss-dir-pseudo-class: 9.0.1(postcss@8.5.3) - postcss-double-position-gradients: 6.0.1(postcss@8.5.3) - postcss-focus-visible: 10.0.1(postcss@8.5.3) - postcss-focus-within: 9.0.1(postcss@8.5.3) - postcss-font-variant: 5.0.0(postcss@8.5.3) - postcss-gap-properties: 6.0.0(postcss@8.5.3) - postcss-image-set-function: 7.0.0(postcss@8.5.3) - postcss-lab-function: 7.0.9(postcss@8.5.3) - postcss-logical: 8.1.0(postcss@8.5.3) - postcss-nesting: 13.0.1(postcss@8.5.3) - postcss-opacity-percentage: 3.0.0(postcss@8.5.3) - postcss-overflow-shorthand: 6.0.0(postcss@8.5.3) - postcss-page-break: 3.0.4(postcss@8.5.3) - postcss-place: 10.0.0(postcss@8.5.3) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.3) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.3) - postcss-selector-not: 8.0.1(postcss@8.5.3) - - postcss-pseudo-class-any-link@10.0.1(postcss@8.5.3): + postcss: 8.5.6 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.6) + postcss-clamp: 4.1.0(postcss@8.5.6) + postcss-color-functional-notation: 7.0.9(postcss@8.5.6) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.6) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.6) + postcss-custom-media: 11.0.5(postcss@8.5.6) + postcss-custom-properties: 14.0.4(postcss@8.5.6) + postcss-custom-selectors: 8.0.4(postcss@8.5.6) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.6) + postcss-double-position-gradients: 6.0.1(postcss@8.5.6) + postcss-focus-visible: 10.0.1(postcss@8.5.6) + postcss-focus-within: 9.0.1(postcss@8.5.6) + postcss-font-variant: 5.0.0(postcss@8.5.6) + postcss-gap-properties: 6.0.0(postcss@8.5.6) + postcss-image-set-function: 7.0.0(postcss@8.5.6) + postcss-lab-function: 7.0.9(postcss@8.5.6) + postcss-logical: 8.1.0(postcss@8.5.6) + postcss-nesting: 13.0.1(postcss@8.5.6) + postcss-opacity-percentage: 3.0.0(postcss@8.5.6) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.6) + postcss-page-break: 3.0.4(postcss@8.5.6) + postcss-place: 10.0.0(postcss@8.5.6) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.6) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.6) + postcss-selector-not: 8.0.1(postcss@8.5.6) + + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 postcss-reduce-idents@6.0.3(postcss@8.5.6): @@ -26071,35 +27303,24 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-reduce-initial@6.1.0(postcss@8.5.3): - dependencies: - browserslist: 4.24.5 - caniuse-api: 3.0.0 - postcss: 8.5.3 - postcss-reduce-initial@6.1.0(postcss@8.5.6): dependencies: browserslist: 4.24.5 caniuse-api: 3.0.0 postcss: 8.5.6 - postcss-reduce-transforms@6.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - postcss-reduce-transforms@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3): + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-selector-not@8.0.1(postcss@8.5.3): + postcss-selector-not@8.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 postcss-selector-parser@6.1.2: @@ -26117,23 +27338,12 @@ snapshots: postcss: 8.5.6 sort-css-media-queries: 2.2.0 - postcss-svgo@6.0.3(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - postcss-svgo@6.0.3(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@6.0.4(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - postcss-unique-selectors@6.0.4(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -26147,13 +27357,13 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 postcss@8.4.38: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -26623,6 +27833,17 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + regenerate-unicode-properties@10.2.0: dependencies: regenerate: 1.4.2 @@ -26639,6 +27860,15 @@ snapshots: dependencies: regex-utilities: 2.3.0 + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + regexpu-core@6.2.0: dependencies: regenerate: 1.4.2 @@ -26795,6 +28025,12 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + responselike@3.0.0: dependencies: lowercase-keys: 3.0.0 @@ -26949,7 +28185,7 @@ snapshots: dependencies: escalade: 3.2.0 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.6 strip-json-comments: 3.1.1 run-applescript@7.0.0: {} @@ -26964,10 +28200,23 @@ snapshots: dependencies: tslib: 2.8.1 + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + safe-regex-test@1.1.0: dependencies: call-bound: 1.0.4 @@ -27159,6 +28408,19 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + setimmediate@1.0.5: {} setprototypeof@1.1.0: {} @@ -27204,6 +28466,36 @@ snapshots: '@img/sharp-win32-x64': 0.34.1 optional: true + sharp@0.34.3: + dependencies: + color: 4.2.3 + detect-libc: 2.0.4 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.3 + '@img/sharp-darwin-x64': 0.34.3 + '@img/sharp-libvips-darwin-arm64': 1.2.0 + '@img/sharp-libvips-darwin-x64': 1.2.0 + '@img/sharp-libvips-linux-arm': 1.2.0 + '@img/sharp-libvips-linux-arm64': 1.2.0 + '@img/sharp-libvips-linux-ppc64': 1.2.0 + '@img/sharp-libvips-linux-s390x': 1.2.0 + '@img/sharp-libvips-linux-x64': 1.2.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 + '@img/sharp-libvips-linuxmusl-x64': 1.2.0 + '@img/sharp-linux-arm': 0.34.3 + '@img/sharp-linux-arm64': 0.34.3 + '@img/sharp-linux-ppc64': 0.34.3 + '@img/sharp-linux-s390x': 0.34.3 + '@img/sharp-linux-x64': 0.34.3 + '@img/sharp-linuxmusl-arm64': 0.34.3 + '@img/sharp-linuxmusl-x64': 0.34.3 + '@img/sharp-wasm32': 0.34.3 + '@img/sharp-win32-arm64': 0.34.3 + '@img/sharp-win32-ia32': 0.34.3 + '@img/sharp-win32-x64': 0.34.3 + optional: true + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -27416,6 +28708,8 @@ snapshots: srcset@4.0.0: {} + stable-hash@0.0.5: {} + stackback@0.0.2: {} statuses@1.5.0: {} @@ -27424,6 +28718,11 @@ snapshots: std-env@3.9.0: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + stream-browserify@3.0.0: dependencies: inherits: 2.0.4 @@ -27458,6 +28757,56 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -27538,12 +28887,6 @@ snapshots: optionalDependencies: '@babel/core': 7.28.0 - stylehacks@6.1.1(postcss@8.5.3): - dependencies: - browserslist: 4.24.5 - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - stylehacks@6.1.1(postcss@8.5.6): dependencies: browserslist: 4.24.5 @@ -27811,6 +29154,13 @@ snapshots: ts-log@2.2.7: {} + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + tsdown@0.13.0(typescript@5.8.3): dependencies: ansis: 4.1.0 @@ -27949,6 +29299,33 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 @@ -27974,6 +29351,13 @@ snapshots: dependencies: multiformats: 9.9.0 + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + unc-path-regex@0.1.2: {} unconfig@7.3.2: @@ -28087,6 +29471,30 @@ snapshots: acorn: 8.14.0 webpack-virtual-modules: 0.6.2 + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.2 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + unstorage@1.14.4(idb-keyval@6.2.1): dependencies: anymatch: 3.1.3 @@ -28687,6 +30095,37 @@ snapshots: tr46: 1.0.1 webidl-conversions: 4.0.2 + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + which-module@2.0.1: {} which-typed-array@1.1.19: From 87c2c32ec693bb18d2d331ed239efbc44c735258 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Thu, 24 Jul 2025 09:37:36 -1000 Subject: [PATCH 22/30] feat(#365 | nextjs-template): rebase on main. fixes from updated hypergraph versions. fixing issue with .gitignore not being published --- apps/create-hypergraph/.npmignore | 13 +++ .../template-vite-react/package.json | 6 +- .../template-vite-react/src/main.tsx | 2 +- .../template-vite-react/src/mapping.ts | 2 +- .../template-vite-react/src/routes/index.tsx | 1 - .../template-vite-react/src/routes/login.tsx | 2 - pnpm-lock.yaml | 101 ++++++++++++++++-- 7 files changed, 113 insertions(+), 14 deletions(-) create mode 100644 apps/create-hypergraph/.npmignore diff --git a/apps/create-hypergraph/.npmignore b/apps/create-hypergraph/.npmignore new file mode 100644 index 00000000..c4859130 --- /dev/null +++ b/apps/create-hypergraph/.npmignore @@ -0,0 +1,13 @@ +# Include .gitignore files in templates +!template-*/.gitignore +!dist/template-*/.gitignore + +# Exclude source files +src/ +scripts/ +test/ +*.ts +!*.d.ts +tsconfig*.json +vitest.config.ts +tsdown.config.ts \ No newline at end of file diff --git a/apps/create-hypergraph/template-vite-react/package.json b/apps/create-hypergraph/template-vite-react/package.json index 42ca3ee5..f0a9cfcc 100644 --- a/apps/create-hypergraph/template-vite-react/package.json +++ b/apps/create-hypergraph/template-vite-react/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@graphprotocol/grc-20": "^0.21.6", - "@graphprotocol/hypergraph": "0.0.14", - "@graphprotocol/hypergraph-react": "0.0.14", - "@graphprotocol/typesync": "^0.0.3", + "@graphprotocol/hypergraph": "0.1.0", + "@graphprotocol/hypergraph-react": "0.1.0", + "@graphprotocol/typesync": "^0.1.0", "@radix-ui/react-navigation-menu": "^1.2.13", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-tooltip": "^1.2.7", diff --git a/apps/create-hypergraph/template-vite-react/src/main.tsx b/apps/create-hypergraph/template-vite-react/src/main.tsx index 87dd928c..5a5fcd00 100644 --- a/apps/create-hypergraph/template-vite-react/src/main.tsx +++ b/apps/create-hypergraph/template-vite-react/src/main.tsx @@ -23,7 +23,7 @@ if (rootElement && !rootElement.innerHTML) { const root = ReactDOM.createRoot(rootElement); root.render( // - + , // , diff --git a/apps/create-hypergraph/template-vite-react/src/mapping.ts b/apps/create-hypergraph/template-vite-react/src/mapping.ts index b345a5f0..ed2fd934 100644 --- a/apps/create-hypergraph/template-vite-react/src/mapping.ts +++ b/apps/create-hypergraph/template-vite-react/src/mapping.ts @@ -1,5 +1,5 @@ import { Id } from '@graphprotocol/grc-20'; -import type { Mapping } from '@graphprotocol/hypergraph'; +import type { Mapping } from '@graphprotocol/typesync/Mapping'; export const mapping: Mapping = { Address: { diff --git a/apps/create-hypergraph/template-vite-react/src/routes/index.tsx b/apps/create-hypergraph/template-vite-react/src/routes/index.tsx index aeb2f0de..bd7c6eee 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/index.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/index.tsx @@ -14,7 +14,6 @@ function Index() { storage: localStorage, connectUrl: 'https://hypergraph-connect.vercel.app/', successUrl: `${window.location.origin}/authenticate-success`, - appId: '93bb8907-085a-4a0e-83dd-62b0dc98e793', redirectFn: (url: URL) => { window.location.href = url.toString(); }, diff --git a/apps/create-hypergraph/template-vite-react/src/routes/login.tsx b/apps/create-hypergraph/template-vite-react/src/routes/login.tsx index fad0d7cd..bc11840e 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/login.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/login.tsx @@ -16,8 +16,6 @@ function Login() { // connectUrl: 'http://localhost:5180', connectUrl: 'https://hypergraph-connect.vercel.app/', successUrl: `${window.location.origin}/authenticate-success`, - // hardcoded appId for testing - appId: '93bb8907-085a-4a0e-83dd-62b0dc98e793', redirectFn: (url: URL) => { window.location.href = url.toString(); }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad32c205..5cd6851f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -236,14 +236,14 @@ importers: specifier: ^0.21.6 version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/hypergraph': - specifier: 0.0.14 - version: 0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + specifier: 0.1.0 + version: 0.1.0(@effect/platform@0.89.0(effect@3.17.0))(@graphprotocol/typesync@0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/hypergraph-react': - specifier: 0.0.14 - version: 0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + specifier: 0.1.0 + version: 0.1.0(@graphprotocol/hypergraph@0.1.0(@effect/platform@0.89.0(effect@3.17.0))(@graphprotocol/typesync@0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(@graphprotocol/typesync@0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/typesync': - specifier: ^0.0.3 - version: 0.0.3(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + specifier: ^0.1.0 + version: 0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@radix-ui/react-navigation-menu': specifier: ^1.2.13 version: 1.2.13(@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) @@ -3095,12 +3095,27 @@ packages: '@graphprotocol/hypergraph': '*' react: ^18.0.0 || ^19.0.0 + '@graphprotocol/hypergraph-react@0.1.0': + resolution: {integrity: sha512-6B6gyU+IUuCcZFOYJGVUBwE2gIlbSCRG+tRDa8GZoc3YW+TERGyqTskJG0BnXl/mvjBgu+McOF01XD+d9iFoBg==} + peerDependencies: + '@graphprotocol/hypergraph': '*' + '@graphprotocol/typesync': 0.1.0 + react: ^18.0.0 || ^19.0.0 + '@graphprotocol/hypergraph@0.0.14': resolution: {integrity: sha512-kr1Vhl7G/uYSamnZJzTtOuHaPklUtcWyTl6oMNbd2NWaAjBNNqD3A2hvelQJ8XAQHpbjbh2xgRjLzZ6M422vyg==} + '@graphprotocol/hypergraph@0.1.0': + resolution: {integrity: sha512-tbeSiW+D9zusH9Vw2IwaEIiFasJcfHIoy3J+e73k+95agX919s0LUKeozctnFiu3vY1PIfBajvdn9+cx5IP24w==} + peerDependencies: + '@graphprotocol/typesync': 0.1.0 + '@graphprotocol/typesync@0.0.3': resolution: {integrity: sha512-8+agAOyyftY7itiQgXHkcKZy+n98xvzpcf6AfygUb4FY7GSpmRl8BX/gTn2Wu8gIigr7AZyL6NFnSpBrSr7OPQ==} + '@graphprotocol/typesync@0.1.0': + resolution: {integrity: sha512-/9+PYTJfXEace6Oc4JiQPDLeWWQUhhw3u73UpcdzVD1i9UzlU234LJDIDi/mXZ/KVmPEgCKhhqYdgRXJIXT73Q==} + '@graphql-codegen/add@5.0.3': resolution: {integrity: sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==} peerDependencies: @@ -17130,6 +17145,33 @@ snapshots: - utf-8-validate - zod + '@graphprotocol/hypergraph-react@0.1.0(@graphprotocol/hypergraph@0.1.0(@effect/platform@0.89.0(effect@3.17.0))(@graphprotocol/typesync@0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(@graphprotocol/typesync@0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': + dependencies: + '@automerge/automerge': 2.2.9 + '@automerge/automerge-repo': 2.0.6 + '@automerge/automerge-repo-react-hooks': 2.0.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/hypergraph': 0.1.0(@effect/platform@0.89.0(effect@3.17.0))(@graphprotocol/typesync@0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/typesync': 0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@noble/hashes': 1.8.0 + '@tanstack/react-query': 5.83.0(react@19.1.0) + effect: 3.17.0 + graphql-request: 7.2.0(graphql@16.11.0) + react: 19.1.0 + siwe: 3.0.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + uuid: 11.1.0 + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + transitivePeerDependencies: + - bufferutil + - ethers + - graphql + - ox + - react-dom + - supports-color + - typescript + - utf-8-validate + - zod + '@graphprotocol/hypergraph@0.0.14(@effect/platform@0.89.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': dependencies: '@automerge/automerge': 2.2.9 @@ -17164,6 +17206,41 @@ snapshots: - utf-8-validate - zod + '@graphprotocol/hypergraph@0.1.0(@effect/platform@0.89.0(effect@3.17.0))(@graphprotocol/typesync@0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': + dependencies: + '@automerge/automerge': 2.2.9 + '@automerge/automerge-repo': 2.0.6 + '@effect/experimental': 0.51.1(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0) + '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@graphprotocol/typesync': 0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@noble/secp256k1': 2.2.3 + '@rhinestone/module-sdk': 0.2.8(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)) + '@serenity-kit/noble-sodium': 0.2.1 + '@xstate/store': 3.5.1(react@19.1.0)(solid-js@1.9.5) + bs58check: 4.0.0 + effect: 3.17.0 + permissionless: 0.2.47(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)) + siwe: 3.0.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + uuid: 11.1.0 + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + transitivePeerDependencies: + - '@effect/platform' + - bufferutil + - ethers + - graphql + - ioredis + - lmdb + - ox + - react + - solid-js + - supports-color + - typescript + - utf-8-validate + - zod + '@graphprotocol/typesync@0.0.3(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': dependencies: '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) @@ -17176,6 +17253,18 @@ snapshots: - utf-8-validate - zod + '@graphprotocol/typesync@0.1.0(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': + dependencies: + '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + effect: 3.17.0 + transitivePeerDependencies: + - bufferutil + - graphql + - ox + - typescript + - utf-8-validate + - zod + '@graphql-codegen/add@5.0.3(graphql@16.11.0)': dependencies: '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) From fadccd213ed3dd07b06d0e1b0ba366d893d05a51 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Fri, 25 Jul 2025 09:18:14 -1000 Subject: [PATCH 23/30] feat(#365 | nextjs template): fixes to nextjs template for functionality to match vite+react. styling fixes --- .changeset/spicy-baths-crash.md | 11 + .../template-nextjs/Components/Layout.tsx | 111 ++++++++++ .../Components/Login/AuthCallback.tsx | 4 +- .../Components/Login/LoginButton.tsx | 11 +- .../Components/Login/LoginForm.tsx | 4 +- .../Components/Space/PrivateSpace.tsx | 191 ++++++++++++++++++ .../Components/Space/PublicSpace.tsx | 118 +++++++++++ .../template-nextjs/Components/SpacesMenu.tsx | 74 +++++++ .../Components/ui/NavigationMenu.tsx | 143 +++++++++++++ .../template-nextjs/Components/ui/Tooltip.tsx | 28 +++ .../template-nextjs/Components/ui/button.tsx | 50 +++++ .../{.gitignore => _gitignore} | 0 .../template-nextjs/app/Providers.tsx | 7 +- .../template-nextjs/app/favicon.ico | Bin 25931 -> 4286 bytes .../template-nextjs/app/globals.css | 142 ++++++++++--- .../template-nextjs/app/layout.tsx | 9 +- .../template-nextjs/app/mapping.ts | 2 +- .../template-nextjs/app/page.tsx | 16 +- .../app/private-space/[spaceid]/page.tsx | 16 ++ .../app/public-space/[spaceid]/page.tsx | 16 ++ .../template-nextjs/components.json | 21 ++ .../template-nextjs/lib/utils.ts | 6 + .../template-nextjs/package.json | 13 +- .../template-nextjs/postcss.config.mjs | 4 +- .../template-nextjs/tsconfig.json | 2 +- pnpm-lock.yaml | 128 +++--------- pnpm-workspace.yaml | 2 + 27 files changed, 973 insertions(+), 156 deletions(-) create mode 100644 .changeset/spicy-baths-crash.md create mode 100644 apps/create-hypergraph/template-nextjs/Components/Layout.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/Space/PrivateSpace.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/Space/PublicSpace.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/SpacesMenu.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/ui/NavigationMenu.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/ui/Tooltip.tsx create mode 100644 apps/create-hypergraph/template-nextjs/Components/ui/button.tsx rename apps/create-hypergraph/template-nextjs/{.gitignore => _gitignore} (100%) create mode 100644 apps/create-hypergraph/template-nextjs/app/private-space/[spaceid]/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/public-space/[spaceid]/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/components.json create mode 100644 apps/create-hypergraph/template-nextjs/lib/utils.ts diff --git a/.changeset/spicy-baths-crash.md b/.changeset/spicy-baths-crash.md new file mode 100644 index 00000000..c8d31db3 --- /dev/null +++ b/.changeset/spicy-baths-crash.md @@ -0,0 +1,11 @@ +--- +"create-hypergraph": minor +--- + +Include a nextjs template for selection with the create-hypergraph command. + +Example usage: + +```bash +pnpm create hypergraph@latest --template nextjs +``` \ No newline at end of file diff --git a/apps/create-hypergraph/template-nextjs/Components/Layout.tsx b/apps/create-hypergraph/template-nextjs/Components/Layout.tsx new file mode 100644 index 00000000..fc5cd3fe --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/Layout.tsx @@ -0,0 +1,111 @@ +'use client'; + +import { useHypergraphApp, useHypergraphAuth } from '@graphprotocol/hypergraph-react'; +import { usePathname, useRouter } from 'next/navigation'; +import { useLayoutEffect } from 'react'; + +import { SpacesMenu } from './SpacesMenu'; +import { Button } from './ui/button'; +import { + NavigationMenu, + NavigationMenuContent, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, +} from './ui/NavigationMenu'; + +export function Layout({ children }: Readonly<{ children: React.ReactNode }>) { + const navigation = useRouter(); + const pathname = usePathname(); + + const { authenticated } = useHypergraphAuth(); + const { redirectToConnect, logout } = useHypergraphApp(); + + useLayoutEffect(() => { + if (pathname.startsWith('/login') || pathname.startsWith('/authenticate-success') || pathname === '/') { + return; + } + + // Only redirect to login if not authenticated and not already on login page + if (!authenticated) { + void navigation.push('/login'); + } + }, [authenticated, pathname, navigation]); + + const handleSignIn = () => { + redirectToConnect({ + storage: localStorage, + connectUrl: 'https://hypergraph-connect.vercel.app/', + successUrl: `${window.location.origin}/authenticate-success`, + redirectFn: (url: URL) => { + window.location.href = url.toString(); + }, + }); + }; + const handleLogout = () => { + logout(); + navigation.push('/login'); + }; + + return ( +
+ +
{children}
+
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/Components/Login/AuthCallback.tsx b/apps/create-hypergraph/template-nextjs/Components/Login/AuthCallback.tsx index 0f093dee..adde8ec4 100644 --- a/apps/create-hypergraph/template-nextjs/Components/Login/AuthCallback.tsx +++ b/apps/create-hypergraph/template-nextjs/Components/Login/AuthCallback.tsx @@ -2,7 +2,7 @@ import { useHypergraphApp } from '@graphprotocol/hypergraph-react'; import { useRouter } from 'next/navigation'; -import { useLayoutEffect } from 'react'; +import { useEffect } from 'react'; export type AuthCallbackProps = { ciphertext: string; @@ -12,7 +12,7 @@ export function AuthCallback({ ciphertext, nonce }: Readonly) const router = useRouter(); const { processConnectAuthSuccess } = useHypergraphApp(); - useLayoutEffect(() => { + useEffect(() => { processConnectAuthSuccess({ storage: localStorage, ciphertext, nonce }); router.replace('/'); }, [ciphertext, nonce, processConnectAuthSuccess, router]); diff --git a/apps/create-hypergraph/template-nextjs/Components/Login/LoginButton.tsx b/apps/create-hypergraph/template-nextjs/Components/Login/LoginButton.tsx index 1d77aa13..0bd5336d 100644 --- a/apps/create-hypergraph/template-nextjs/Components/Login/LoginButton.tsx +++ b/apps/create-hypergraph/template-nextjs/Components/Login/LoginButton.tsx @@ -2,6 +2,8 @@ import { useHypergraphApp } from '@graphprotocol/hypergraph-react'; +import { Button } from '../ui/button'; + export function LoginButton() { const { redirectToConnect } = useHypergraphApp(); @@ -10,7 +12,6 @@ export function LoginButton() { storage: localStorage, connectUrl: 'https://hypergraph-connect.vercel.app/', successUrl: `${window.location.origin}/authenticate-success`, - appId: '93bb8907-085a-4a0e-83dd-62b0dc98e793', redirectFn: (url: URL) => { window.location.href = url.toString(); }, @@ -18,12 +19,8 @@ export function LoginButton() { }; return ( - + ); } diff --git a/apps/create-hypergraph/template-nextjs/Components/Login/LoginForm.tsx b/apps/create-hypergraph/template-nextjs/Components/Login/LoginForm.tsx index 7d7bd53b..a9e1213a 100644 --- a/apps/create-hypergraph/template-nextjs/Components/Login/LoginForm.tsx +++ b/apps/create-hypergraph/template-nextjs/Components/Login/LoginForm.tsx @@ -11,14 +11,12 @@ export function LoginForm() {

Sign in to access your spaces and start building.

+ +
+
+ + {/* Addresses List */} +
+
+

+ Your Addresses ({addresses?.length || 0}) +

+ + {addresses && addresses.length > 0 ? ( +
+ {addresses.map((address) => ( +
+
+

{address.name}

+ + ID: {address.id.slice(0, 8)}... + +
+ +
+
+ + +
+ + +
+
+ ))} +
+ ) : ( +
+
+ + + +
+

No addresses created yet

+

Create your first address using the form

+
+ )} +
+
+
+
+
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/Components/Space/PublicSpace.tsx b/apps/create-hypergraph/template-nextjs/Components/Space/PublicSpace.tsx new file mode 100644 index 00000000..c4ff9c9b --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/Space/PublicSpace.tsx @@ -0,0 +1,118 @@ +'use client'; + +import { HypergraphSpaceProvider, useQuery, useSpace } from '@graphprotocol/hypergraph-react'; + +import { Address } from '@/app/schema'; + +export function PublicSpaceWrapper({ spaceid }: Readonly<{ spaceid: string }>) { + return ( + + + + ); +} + +function PublicSpace() { + const { ready, name } = useSpace({ mode: 'public' }); + const { data: addresses } = useQuery(Address, { mode: 'public' }); + + if (!ready) { + return ( +
+
+
+

Loading space...

+
+
+ ); + } + + return ( +
+ {/* Header */} +
+
+
+

{name}

+

Public Space

+
+
+
+ + {/* Main Content */} +
+
+
+

Addresses

+

+ {addresses ? `${addresses.length} addresses found` : 'Loading addresses...'} +

+
+ +
+ {!addresses ? ( +
+ {[...Array(3)].map((_, i) => ( +
+
+
+ ))} +
+ ) : addresses.length > 0 ? ( +
+ {addresses.map((address) => ( +
+
+
+
+ + {address.name.charAt(0).toUpperCase()} + +
+
+

+ {address.name} +

+

Address ID: {address.id}

+
+
+
+ + + +
+
+
+ ))} +
+ ) : ( +
+
+ + + + +
+

No addresses found

+

This space doesn't have any addresses yet.

+
+ )} +
+
+
+
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/Components/SpacesMenu.tsx b/apps/create-hypergraph/template-nextjs/Components/SpacesMenu.tsx new file mode 100644 index 00000000..0ed57f3f --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/SpacesMenu.tsx @@ -0,0 +1,74 @@ +'use client'; + +import { useSpaces } from '@graphprotocol/hypergraph-react'; +import Link from 'next/link'; + +import { NavigationMenuContent, NavigationMenuLink } from '@/Components/ui/NavigationMenu'; + +export function SpacesMenu() { + const { data: publicSpaces, isPending: publicSpacesPending } = useSpaces({ mode: 'public' }); + const { data: privateSpaces, isPending: privateSpacesPending } = useSpaces({ mode: 'private' }); + + const isLoading = publicSpacesPending || privateSpacesPending; + + if (isLoading) { + return ( + +
    +
  • Loading spaces...
  • +
+
+ ); + } + + return ( + +
    + {/* Private Spaces Section */} +
  • +
    Private Spaces
    + {privateSpaces && privateSpaces.length > 0 ? ( +
    + {privateSpaces.map((space) => ( + + +
    {space.name}
    + +
    + ))} +
    + ) : ( +
    No private spaces found
    + )} +
  • + + {/* Separator */} +
  • + + {/* Public Spaces Section */} +
  • +
    Public Spaces
    + {publicSpaces && publicSpaces.length > 0 ? ( +
    + {publicSpaces.map((space) => ( + + +
    {space.name}
    + +
    + ))} +
    + ) : ( +
    No public spaces found
    + )} +
  • +
+
+ ); +} diff --git a/apps/create-hypergraph/template-nextjs/Components/ui/NavigationMenu.tsx b/apps/create-hypergraph/template-nextjs/Components/ui/NavigationMenu.tsx new file mode 100644 index 00000000..bfab9ea8 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/ui/NavigationMenu.tsx @@ -0,0 +1,143 @@ +import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'; +import { cva } from 'class-variance-authority'; +import { ChevronDownIcon } from 'lucide-react'; +import type * as React from 'react'; + +import { cn } from '@/lib/utils'; + +function NavigationMenu({ + className, + children, + viewport = true, + ...props +}: React.ComponentProps & { + viewport?: boolean; +}) { + return ( + + {children} + {viewport && } + + ); +} + +function NavigationMenuList({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function NavigationMenuItem({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +const navigationMenuTriggerStyle = cva( + 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1', +); + +function NavigationMenuTrigger({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + {children}{' '} + + ); +} + +function NavigationMenuContent({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function NavigationMenuViewport({ + className, + ...props +}: React.ComponentProps) { + return ( +
+ +
+ ); +} + +function NavigationMenuLink({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function NavigationMenuIndicator({ + className, + ...props +}: React.ComponentProps) { + return ( + +
+ + ); +} + +export { + NavigationMenu, + NavigationMenuContent, + NavigationMenuIndicator, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, + navigationMenuTriggerStyle, + NavigationMenuViewport, +}; diff --git a/apps/create-hypergraph/template-nextjs/Components/ui/Tooltip.tsx b/apps/create-hypergraph/template-nextjs/Components/ui/Tooltip.tsx new file mode 100644 index 00000000..6a304fb3 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/ui/Tooltip.tsx @@ -0,0 +1,28 @@ +import * as TooltipPrimitive from '@radix-ui/react-tooltip'; +import * as React from 'react'; + +import { cn } from '@/lib/utils'; + +const TooltipProvider = TooltipPrimitive.Provider; + +const Tooltip = TooltipPrimitive.Root; + +const TooltipTrigger = TooltipPrimitive.Trigger; + +const TooltipContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)); +TooltipContent.displayName = TooltipPrimitive.Content.displayName; + +export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }; diff --git a/apps/create-hypergraph/template-nextjs/Components/ui/button.tsx b/apps/create-hypergraph/template-nextjs/Components/ui/button.tsx new file mode 100644 index 00000000..172d4943 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/ui/button.tsx @@ -0,0 +1,50 @@ +import * as React from 'react'; +import { Slot } from '@radix-ui/react-slot'; +import { cva, type VariantProps } from 'class-variance-authority'; + +import { cn } from '@/lib/utils'; + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer", + { + variants: { + variant: { + default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90', + destructive: + 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60', + outline: + 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50', + secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50', + link: 'text-primary underline-offset-4 hover:underline', + }, + size: { + default: 'h-9 px-4 py-2 has-[>svg]:px-3', + sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5', + lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', + icon: 'size-9', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +); + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<'button'> & + VariantProps & { + asChild?: boolean; + }) { + const Comp = asChild ? Slot : 'button'; + + return ; +} + +export { Button, buttonVariants }; diff --git a/apps/create-hypergraph/template-nextjs/.gitignore b/apps/create-hypergraph/template-nextjs/_gitignore similarity index 100% rename from apps/create-hypergraph/template-nextjs/.gitignore rename to apps/create-hypergraph/template-nextjs/_gitignore diff --git a/apps/create-hypergraph/template-nextjs/app/Providers.tsx b/apps/create-hypergraph/template-nextjs/app/Providers.tsx index e9409417..c17ad362 100644 --- a/apps/create-hypergraph/template-nextjs/app/Providers.tsx +++ b/apps/create-hypergraph/template-nextjs/app/Providers.tsx @@ -8,7 +8,12 @@ export default function Providers({ children }: Readonly<{ children: React.React const _storage = typeof window !== 'undefined' ? window.localStorage : (undefined as unknown as Storage); return ( - + {children} ); diff --git a/apps/create-hypergraph/template-nextjs/app/favicon.ico b/apps/create-hypergraph/template-nextjs/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..f7d86f87a8d0801e5610dea803bee83c655bf9d8 100644 GIT binary patch literal 4286 zcmeHLv2KGv40SigEHFpvlBqke^k3lPB32goD;753dheo(qUx|QYPdwIk%MKM_u$Fr zAw(bcI-d!@bUhJeM0BxkQ}k^ed1tov`E~PKg2?>aE(OMMG)>buM|`w_J4q7fh>y0| z{IT^vO7CS^%rFej5lg1+m+;!QHAPW4M=Y7PpTom=W>1S$3bx zG)+z4_d#5rl<+nCw65zrw?7-maVFtQ^+)Vy@JsqU@`v?dP~(fgkVi%KJa0A2+X|{&&s&%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m diff --git a/apps/create-hypergraph/template-nextjs/app/globals.css b/apps/create-hypergraph/template-nextjs/app/globals.css index b104a415..c2f75965 100644 --- a/apps/create-hypergraph/template-nextjs/app/globals.css +++ b/apps/create-hypergraph/template-nextjs/app/globals.css @@ -1,44 +1,120 @@ @import 'tailwindcss'; +@import 'tw-animate-css'; -:root { - --background: #ffffff; - --foreground: #171717; -} - -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; - } -} +@custom-variant dark (&:is(.dark *)); -html, -body { - max-width: 100vw; - overflow-x: hidden; +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); } -body { - color: var(--foreground); - background: var(--background); - font-family: Arial, Helvetica, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -* { - box-sizing: border-box; - padding: 0; - margin: 0; +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.129 0.042 264.695); + --card: oklch(1 0 0); + --card-foreground: oklch(0.129 0.042 264.695); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.129 0.042 264.695); + --primary: oklch(0.208 0.042 265.755); + --primary-foreground: oklch(0.984 0.003 247.858); + --secondary: oklch(0.968 0.007 247.896); + --secondary-foreground: oklch(0.208 0.042 265.755); + --muted: oklch(0.968 0.007 247.896); + --muted-foreground: oklch(0.554 0.046 257.417); + --accent: oklch(0.968 0.007 247.896); + --accent-foreground: oklch(0.208 0.042 265.755); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.929 0.013 255.508); + --input: oklch(0.929 0.013 255.508); + --ring: oklch(0.704 0.04 256.788); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.984 0.003 247.858); + --sidebar-foreground: oklch(0.129 0.042 264.695); + --sidebar-primary: oklch(0.208 0.042 265.755); + --sidebar-primary-foreground: oklch(0.984 0.003 247.858); + --sidebar-accent: oklch(0.968 0.007 247.896); + --sidebar-accent-foreground: oklch(0.208 0.042 265.755); + --sidebar-border: oklch(0.929 0.013 255.508); + --sidebar-ring: oklch(0.704 0.04 256.788); } -a { - color: inherit; - text-decoration: none; +.dark { + --background: oklch(0.129 0.042 264.695); + --foreground: oklch(0.984 0.003 247.858); + --card: oklch(0.208 0.042 265.755); + --card-foreground: oklch(0.984 0.003 247.858); + --popover: oklch(0.208 0.042 265.755); + --popover-foreground: oklch(0.984 0.003 247.858); + --primary: oklch(0.929 0.013 255.508); + --primary-foreground: oklch(0.208 0.042 265.755); + --secondary: oklch(0.279 0.041 260.031); + --secondary-foreground: oklch(0.984 0.003 247.858); + --muted: oklch(0.279 0.041 260.031); + --muted-foreground: oklch(0.704 0.04 256.788); + --accent: oklch(0.279 0.041 260.031); + --accent-foreground: oklch(0.984 0.003 247.858); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.551 0.027 264.364); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.208 0.042 265.755); + --sidebar-foreground: oklch(0.984 0.003 247.858); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.984 0.003 247.858); + --sidebar-accent: oklch(0.279 0.041 260.031); + --sidebar-accent-foreground: oklch(0.984 0.003 247.858); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.551 0.027 264.364); } -@media (prefers-color-scheme: dark) { - html { - color-scheme: dark; +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; } } diff --git a/apps/create-hypergraph/template-nextjs/app/layout.tsx b/apps/create-hypergraph/template-nextjs/app/layout.tsx index 857f0ba8..103427d5 100644 --- a/apps/create-hypergraph/template-nextjs/app/layout.tsx +++ b/apps/create-hypergraph/template-nextjs/app/layout.tsx @@ -1,6 +1,7 @@ import type { Metadata } from 'next'; import { Geist, Geist_Mono } from 'next/font/google'; +import { Layout } from '@/Components/Layout'; import Providers from './Providers'; import './globals.css'; @@ -25,9 +26,11 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - - - {children} + + + + {children} + ); diff --git a/apps/create-hypergraph/template-nextjs/app/mapping.ts b/apps/create-hypergraph/template-nextjs/app/mapping.ts index 34cf9956..79974c27 100644 --- a/apps/create-hypergraph/template-nextjs/app/mapping.ts +++ b/apps/create-hypergraph/template-nextjs/app/mapping.ts @@ -1,5 +1,5 @@ import { Id } from '@graphprotocol/grc-20'; -import type { Mapping } from '@graphprotocol/hypergraph'; +import type { Mapping } from '@graphprotocol/typesync/Mapping'; export const mapping: Mapping = { Address: { diff --git a/apps/create-hypergraph/template-nextjs/app/page.tsx b/apps/create-hypergraph/template-nextjs/app/page.tsx index e3c731a9..f274e546 100644 --- a/apps/create-hypergraph/template-nextjs/app/page.tsx +++ b/apps/create-hypergraph/template-nextjs/app/page.tsx @@ -1,10 +1,12 @@ import Image from 'next/image'; import Link from 'next/link'; -import { LoginButton } from '../Components/Login/LoginButton'; + +import { LoginButton } from '@/Components/Login/LoginButton'; +import { Button } from '@/Components/ui/button'; export default function HomePage() { return ( -
+
Hypergraph Logo

@@ -36,7 +38,11 @@ export default function HomePage() {

Discover and explore the vast network of knowledge already available in the public Knowledge Graph.

- Start Exploring + + +

@@ -95,7 +101,9 @@ export default function HomePage() { rel="noopener noreferrer" className="inline-block w-full" > - Read Documentation +
diff --git a/apps/create-hypergraph/template-nextjs/app/private-space/[spaceid]/page.tsx b/apps/create-hypergraph/template-nextjs/app/private-space/[spaceid]/page.tsx new file mode 100644 index 00000000..3f59a316 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/private-space/[spaceid]/page.tsx @@ -0,0 +1,16 @@ +import { redirect } from 'next/navigation'; + +import { PrivateSpaceWrapper } from '@/Components/Space/PrivateSpace'; + +type PrivateSpacePageParams = { params: Promise<{ spaceid: string }> }; + +export default async function PrivateSpacePage(props: Readonly) { + const params = await props.params; + const spaceid = params.spaceid; + + if (!spaceid) { + return redirect('/404'); + } + + return ; +} diff --git a/apps/create-hypergraph/template-nextjs/app/public-space/[spaceid]/page.tsx b/apps/create-hypergraph/template-nextjs/app/public-space/[spaceid]/page.tsx new file mode 100644 index 00000000..625026d4 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/public-space/[spaceid]/page.tsx @@ -0,0 +1,16 @@ +import { redirect } from 'next/navigation'; + +import { PublicSpaceWrapper } from '@/Components/Space/PublicSpace'; + +type PublicSpacePageParams = { params: Promise<{ spaceid: string }> }; + +export default async function PublicSpacePage(props: Readonly) { + const params = await props.params; + const spaceid = params.spaceid; + + if (!spaceid) { + return redirect('/404'); + } + + return ; +} diff --git a/apps/create-hypergraph/template-nextjs/components.json b/apps/create-hypergraph/template-nextjs/components.json new file mode 100644 index 00000000..0c2a1572 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "app/globals.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/Components", + "utils": "@/lib/utils", + "ui": "@/Components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/apps/create-hypergraph/template-nextjs/lib/utils.ts b/apps/create-hypergraph/template-nextjs/lib/utils.ts new file mode 100644 index 00000000..9a46229e --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from 'clsx'; +import { twMerge } from 'tailwind-merge'; + +export function cn(...inputs: ReadonlyArray) { + return twMerge(clsx(inputs)); +} diff --git a/apps/create-hypergraph/template-nextjs/package.json b/apps/create-hypergraph/template-nextjs/package.json index d7ea1420..824bc5b2 100644 --- a/apps/create-hypergraph/template-nextjs/package.json +++ b/apps/create-hypergraph/template-nextjs/package.json @@ -16,13 +16,21 @@ "type": "module", "dependencies": { "@graphprotocol/grc-20": "^0.21.6", - "@graphprotocol/hypergraph": "^0.0.14", - "@graphprotocol/hypergraph-react": "^0.0.14", + "@graphprotocol/hypergraph": "workspace:*", + "@graphprotocol/hypergraph-react": "workspace:*", + "@graphprotocol/typesync": "workspace:*", + "@radix-ui/react-navigation-menu": "^1.2.13", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tooltip": "^1.2.7", "@tailwindcss/postcss": "^4.1.11", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.525.0", "next": "15.4.3", "postcss": "^8.5.6", "react": "^19.1.0", "react-dom": "^19.1.0", + "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.11" }, "devDependencies": { @@ -33,6 +41,7 @@ "eslint": "^9", "eslint-config-next": "15.4.3", "prettier": "^3.6.2", + "tw-animate-css": "^1.3.5", "typescript": "^5" } } diff --git a/apps/create-hypergraph/template-nextjs/postcss.config.mjs b/apps/create-hypergraph/template-nextjs/postcss.config.mjs index 54e87396..95d885ee 100644 --- a/apps/create-hypergraph/template-nextjs/postcss.config.mjs +++ b/apps/create-hypergraph/template-nextjs/postcss.config.mjs @@ -1,6 +1,6 @@ const config = { plugins: { - "@tailwindcss/postcss": {}, + '@tailwindcss/postcss': {}, }, }; -export default config; \ No newline at end of file +export default config; diff --git a/apps/create-hypergraph/template-nextjs/tsconfig.json b/apps/create-hypergraph/template-nextjs/tsconfig.json index c1334095..d8b93235 100644 --- a/apps/create-hypergraph/template-nextjs/tsconfig.json +++ b/apps/create-hypergraph/template-nextjs/tsconfig.json @@ -19,7 +19,7 @@ } ], "paths": { - "@/*": ["./src/*"] + "@/*": ["./*"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e6db3d8..bb5703e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -173,22 +173,41 @@ importers: version: 4.20.3 publishDirectory: dist - apps/create-hypergraph/dist: {} - apps/create-hypergraph/template-nextjs: dependencies: '@graphprotocol/grc-20': specifier: ^0.21.6 version: 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) '@graphprotocol/hypergraph': - specifier: ^0.0.14 - version: 0.0.14(@effect/platform@0.90.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + specifier: workspace:* + version: link:../../../packages/hypergraph/publish '@graphprotocol/hypergraph-react': - specifier: ^0.0.14 - version: 0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.90.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + specifier: workspace:* + version: link:../../../packages/hypergraph-react/publish + '@graphprotocol/typesync': + specifier: workspace:* + version: link:../../../packages/typesync/publish + '@radix-ui/react-navigation-menu': + specifier: ^1.2.13 + version: 1.2.13(@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) + '@radix-ui/react-slot': + specifier: ^1.2.3 + version: 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-tooltip': + specifier: ^1.2.7 + version: 1.2.7(@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) '@tailwindcss/postcss': specifier: ^4.1.11 version: 4.1.11 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + lucide-react: + specifier: ^0.525.0 + version: 0.525.0(react@19.1.0) next: specifier: 15.4.3 version: 15.4.3(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -201,6 +220,9 @@ importers: react-dom: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 tailwindcss: specifier: ^4.1.11 version: 4.1.11 @@ -226,6 +248,9 @@ importers: prettier: specifier: ^3.6.2 version: 3.6.2 + tw-animate-css: + specifier: ^1.3.5 + version: 1.3.5 typescript: specifier: ^5 version: 5.8.3 @@ -3089,15 +3114,6 @@ packages: '@graphprotocol/grc-20@0.21.6': resolution: {integrity: sha512-xN8kejQfRdeC5LsantOD9aajwR+/JHnsK5IUEE7rMJbbHGeRTzAhWGike8k1+nIPRKooOyrocgly24KXxChcgw==} - '@graphprotocol/hypergraph-react@0.0.14': - resolution: {integrity: sha512-Hr7x45xFO+MFAeuaWs+1+EgX0JNxftclpP9ClfisuQs01bgHwJpy9jYZ+oeJ02ODSaDd82st12XQ/1kfEsn9aw==} - peerDependencies: - '@graphprotocol/hypergraph': '*' - react: ^18.0.0 || ^19.0.0 - - '@graphprotocol/hypergraph@0.0.14': - resolution: {integrity: sha512-kr1Vhl7G/uYSamnZJzTtOuHaPklUtcWyTl6oMNbd2NWaAjBNNqD3A2hvelQJ8XAQHpbjbh2xgRjLzZ6M422vyg==} - '@graphprotocol/typesync@0.0.3': resolution: {integrity: sha512-8+agAOyyftY7itiQgXHkcKZy+n98xvzpcf6AfygUb4FY7GSpmRl8BX/gTn2Wu8gIigr7AZyL6NFnSpBrSr7OPQ==} @@ -7913,9 +7929,6 @@ packages: effect@3.16.12: resolution: {integrity: sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==} - effect@3.17.0: - resolution: {integrity: sha512-szMlUsbPhP9lsrU+sDPXL9pQT2ew8PhcZvPm0p5dzYFbc+Jn/lH2i5thtmPQdm6Ut1rS4fS67SbuG7Qm0E0oZA==} - effect@3.17.1: resolution: {integrity: sha512-t917ks10FGNf7MpwOxHUg6vo42p0XsdMHuBMVpy4NttPu5gIv8/ah5MgbHLVQJ2kmDvZfQUT1/xyCa1IR09u2Q==} @@ -16454,12 +16467,6 @@ snapshots: '@effect/workflow': 0.1.2(effect@3.17.1) effect: 3.17.1 - '@effect/experimental@0.51.1(@effect/platform@0.90.0(effect@3.17.0))(effect@3.17.0)': - dependencies: - '@effect/platform': 0.90.0(effect@3.17.0) - effect: 3.17.0 - uuid: 11.1.0 - '@effect/experimental@0.51.1(@effect/platform@0.90.0(effect@3.17.1))(effect@3.17.1)': dependencies: '@effect/platform': 0.90.0(effect@3.17.1) @@ -16503,14 +16510,6 @@ snapshots: - bufferutil - utf-8-validate - '@effect/platform@0.90.0(effect@3.17.0)': - dependencies: - '@opentelemetry/semantic-conventions': 1.34.0 - effect: 3.17.0 - find-my-way-ts: 0.1.6 - msgpackr: 1.11.4 - multipasta: 0.2.7 - '@effect/platform@0.90.0(effect@3.17.1)': dependencies: '@opentelemetry/semantic-conventions': 1.34.0 @@ -17121,66 +17120,6 @@ snapshots: - utf-8-validate - zod - '@graphprotocol/hypergraph-react@0.0.14(@graphprotocol/hypergraph@0.0.14(@effect/platform@0.90.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': - dependencies: - '@automerge/automerge': 2.2.9 - '@automerge/automerge-repo': 2.0.6 - '@automerge/automerge-repo-react-hooks': 2.0.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) - '@graphprotocol/hypergraph': 0.0.14(@effect/platform@0.90.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) - '@noble/hashes': 1.8.0 - '@tanstack/react-query': 5.83.0(react@19.1.0) - effect: 3.17.0 - graphql-request: 7.2.0(graphql@16.11.0) - react: 19.1.0 - siwe: 3.0.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - uuid: 11.1.0 - viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) - transitivePeerDependencies: - - bufferutil - - ethers - - graphql - - ox - - react-dom - - supports-color - - typescript - - utf-8-validate - - zod - - '@graphprotocol/hypergraph@0.0.14(@effect/platform@0.90.0(effect@3.17.0))(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(react@19.1.0)(solid-js@1.9.5)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': - dependencies: - '@automerge/automerge': 2.2.9 - '@automerge/automerge-repo': 2.0.6 - '@effect/experimental': 0.51.1(@effect/platform@0.90.0(effect@3.17.0))(effect@3.17.0) - '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.1 - '@noble/hashes': 1.8.0 - '@noble/secp256k1': 2.2.3 - '@rhinestone/module-sdk': 0.2.8(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)) - '@serenity-kit/noble-sodium': 0.2.1 - '@xstate/store': 3.5.1(react@19.1.0)(solid-js@1.9.5) - bs58check: 4.0.0 - effect: 3.17.0 - permissionless: 0.2.47(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)) - siwe: 3.0.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - uuid: 11.1.0 - viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) - transitivePeerDependencies: - - '@effect/platform' - - bufferutil - - ethers - - graphql - - ioredis - - lmdb - - ox - - react - - solid-js - - supports-color - - typescript - - utf-8-validate - - zod - '@graphprotocol/typesync@0.0.3(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51)': dependencies: '@graphprotocol/grc-20': 0.21.6(bufferutil@4.0.9)(graphql@16.11.0)(ox@0.6.7(typescript@5.8.3)(zod@3.25.51))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) @@ -23184,11 +23123,6 @@ snapshots: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 - effect@3.17.0: - dependencies: - '@standard-schema/spec': 1.0.0 - fast-check: 3.23.2 - effect@3.17.1: dependencies: '@standard-schema/spec': 1.0.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 701a814b..c827ef98 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,6 +3,7 @@ packages: - apps/*/* - packages/* - docs + onlyBuiltDependencies: - '@biomejs/biome' - '@parcel/watcher' @@ -20,4 +21,5 @@ onlyBuiltDependencies: - msgpackr-extract - prisma - sharp + - unrs-resolver - utf-8-validate From 89e556c102f7b86eccd4f2eb918deec3c23f8b44 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Fri, 25 Jul 2025 09:20:43 -1000 Subject: [PATCH 24/30] feat(#365 | nextjs template): changeset and publish --- .changeset/spicy-baths-crash.md | 11 ----------- apps/create-hypergraph/CHANGELOG.md | 11 +++++++++++ apps/create-hypergraph/package.json | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) delete mode 100644 .changeset/spicy-baths-crash.md diff --git a/.changeset/spicy-baths-crash.md b/.changeset/spicy-baths-crash.md deleted file mode 100644 index c8d31db3..00000000 --- a/.changeset/spicy-baths-crash.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"create-hypergraph": minor ---- - -Include a nextjs template for selection with the create-hypergraph command. - -Example usage: - -```bash -pnpm create hypergraph@latest --template nextjs -``` \ No newline at end of file diff --git a/apps/create-hypergraph/CHANGELOG.md b/apps/create-hypergraph/CHANGELOG.md index d3bc269a..5809af48 100644 --- a/apps/create-hypergraph/CHANGELOG.md +++ b/apps/create-hypergraph/CHANGELOG.md @@ -1,5 +1,16 @@ # create-hypergraph +## 0.3.0 +### Minor Changes + +- fadccd2: Include a nextjs template for selection with the create-hypergraph command. + + Example usage: + + ```bash + pnpm create hypergraph@latest --template nextjs + ``` + ## 0.2.0 ### Minor Changes diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 15f962f5..901acdda 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.2.0", + "version": "0.3.0", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { From 862688a4da963bb4460425a2aa4abb94adace6d4 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Fri, 25 Jul 2025 09:22:30 -1000 Subject: [PATCH 25/30] feat(#365 | nextjs template): add nextjs template to README for better visibility/clarity --- .changeset/twelve-emus-join.md | 6 ++++++ apps/create-hypergraph/README.md | 4 +++- apps/create-hypergraph/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/twelve-emus-join.md diff --git a/.changeset/twelve-emus-join.md b/.changeset/twelve-emus-join.md new file mode 100644 index 00000000..cacb5ed2 --- /dev/null +++ b/.changeset/twelve-emus-join.md @@ -0,0 +1,6 @@ +--- +"create-hypergraph": patch +--- + +Update available create hypergraph templates in README + \ No newline at end of file diff --git a/apps/create-hypergraph/README.md b/apps/create-hypergraph/README.md index d048b603..539e7859 100644 --- a/apps/create-hypergraph/README.md +++ b/apps/create-hypergraph/README.md @@ -41,6 +41,7 @@ Then follow the given prompts. - `--template` -> if provided, uses the provided template - options: - vite-react + - nextjs - `--package-manager` -> if provided, uses the provided package manager - options: - pnpm @@ -59,7 +60,8 @@ pnpm create hypergraph@latest --template vite-react --package-manager pnpm my-hy ### Currently Supported Templates -- vite + react +- [vite + react](./template-vite-react/README.md) +- [nextjs](./template-nextjs/README.md) ## References diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 901acdda..66df4fd8 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -43,7 +43,7 @@ "Web3", "Knowledge Graph", "Hypergraph", - "TypeSyncs" + "TypeSync" ], "license": "MIT", "engines": { From be6c647891e7452dd4cff1e7058a19f5968ba300 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Fri, 25 Jul 2025 09:25:53 -1000 Subject: [PATCH 26/30] feat(#365 | nextjs template): publish create-hypergraph 0.3.1 --- .changeset/twelve-emus-join.md | 6 ------ apps/create-hypergraph/CHANGELOG.md | 5 +++++ apps/create-hypergraph/package.json | 2 +- apps/create-hypergraph/src/Cli.ts | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 .changeset/twelve-emus-join.md diff --git a/.changeset/twelve-emus-join.md b/.changeset/twelve-emus-join.md deleted file mode 100644 index cacb5ed2..00000000 --- a/.changeset/twelve-emus-join.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"create-hypergraph": patch ---- - -Update available create hypergraph templates in README - \ No newline at end of file diff --git a/apps/create-hypergraph/CHANGELOG.md b/apps/create-hypergraph/CHANGELOG.md index 5809af48..5c0e416d 100644 --- a/apps/create-hypergraph/CHANGELOG.md +++ b/apps/create-hypergraph/CHANGELOG.md @@ -1,5 +1,10 @@ # create-hypergraph +## 0.3.1 +### Patch Changes + +- 862688a: Update available create hypergraph templates in README to include nextjs for better visibility + ## 0.3.0 ### Minor Changes diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 66df4fd8..66af9f80 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.3.0", + "version": "0.3.1", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index 999ad048..f7488f6f 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -75,7 +75,7 @@ const createHypergraphApp = Command.make('create-hypergraph-app', { export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.2.0', + version: '0.3.1', }); // ======================== From 91eb4fb9bafce7d4c840b592aee11aaf32e38652 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Fri, 25 Jul 2025 09:30:51 -1000 Subject: [PATCH 27/30] feat(#365 | nextjs template): update llms.txt with additional nextjs template --- apps/create-hypergraph/llms.txt | 12 ++++++++++-- apps/create-hypergraph/package.json | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/create-hypergraph/llms.txt b/apps/create-hypergraph/llms.txt index 4c7c3695..d6c677e1 100644 --- a/apps/create-hypergraph/llms.txt +++ b/apps/create-hypergraph/llms.txt @@ -59,9 +59,10 @@ create-hypergraph is a CLI tool that scaffolds new Hypergraph-enabled applicatio ### Options - `--template, -t` (optional): Template to scaffold - - Available values: `vite-react` + - Available values: `vite-react`, `nextjs` - Default: prompts user to select - - Currently only supports `vite-react` which scaffolds a Vite + React app using @tanstack/react-router + - `vite-react`: Scaffolds a Vite + React app using @tanstack/react-router + - `nextjs`: Scaffolds a Next.js app with App Router and Hypergraph integration - `--package-manager, -p` (optional): The package manager to use for installing dependencies - Available values: `pnpm`, `bun`, `yarn`, `npm` @@ -109,6 +110,13 @@ pnpm create hypergraph my-app --skip-install-deps --skip-initialize-git - TypeScript enabled - Development server with HMR +### nextjs +- Next.js application with App Router +- Server and Client Components support +- Hypergraph integration with client-side providers +- TypeScript enabled +- Built-in optimizations and best practices + ## Error Handling The tool will fail gracefully if: diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 66af9f80..575f282a 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.3.1", + "version": "0.3.2", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": { From 4ec2c075001a6013de885a35a1c70a322dbb231f Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Fri, 25 Jul 2025 09:32:38 -1000 Subject: [PATCH 28/30] feat(#365 | nextjs template): publish 0.3.2 --- apps/create-hypergraph/CHANGELOG.md | 5 +++++ apps/create-hypergraph/src/Cli.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/create-hypergraph/CHANGELOG.md b/apps/create-hypergraph/CHANGELOG.md index 5c0e416d..1afd89f3 100644 --- a/apps/create-hypergraph/CHANGELOG.md +++ b/apps/create-hypergraph/CHANGELOG.md @@ -1,5 +1,10 @@ # create-hypergraph +## 0.3.2 +### Patch Changes + +- 91eb4fb: Update llms.txt to include nextjs template for visibility to AI agents + ## 0.3.1 ### Patch Changes diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index f7488f6f..03515dd4 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -75,7 +75,7 @@ const createHypergraphApp = Command.make('create-hypergraph-app', { export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.3.1', + version: '0.3.2', }); // ======================== From c5822d5c3de55ab1c3127fccaa6d96707ccf6b79 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Fri, 25 Jul 2025 09:40:01 -1000 Subject: [PATCH 29/30] feat(#365 | nextjs template): use default syncServerUri instead of localhost --- .changeset/social-maps-chew.md | 6 ++++++ apps/create-hypergraph/src/Cli.ts | 2 +- apps/create-hypergraph/template-nextjs/app/Providers.tsx | 7 +------ 3 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 .changeset/social-maps-chew.md diff --git a/.changeset/social-maps-chew.md b/.changeset/social-maps-chew.md new file mode 100644 index 00000000..3ccab2a5 --- /dev/null +++ b/.changeset/social-maps-chew.md @@ -0,0 +1,6 @@ +--- +"create-hypergraph": patch +--- + +Remove localhost syncServerUri from HypergraphAppProvider. uses default instead + \ No newline at end of file diff --git a/apps/create-hypergraph/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts index 03515dd4..f328e881 100644 --- a/apps/create-hypergraph/src/Cli.ts +++ b/apps/create-hypergraph/src/Cli.ts @@ -75,7 +75,7 @@ const createHypergraphApp = Command.make('create-hypergraph-app', { export const run = Command.run(createHypergraphApp, { name: 'create-hypergraph-app', - version: '0.3.2', + version: '0.3.3', }); // ======================== diff --git a/apps/create-hypergraph/template-nextjs/app/Providers.tsx b/apps/create-hypergraph/template-nextjs/app/Providers.tsx index c17ad362..5ab3d848 100644 --- a/apps/create-hypergraph/template-nextjs/app/Providers.tsx +++ b/apps/create-hypergraph/template-nextjs/app/Providers.tsx @@ -8,12 +8,7 @@ export default function Providers({ children }: Readonly<{ children: React.React const _storage = typeof window !== 'undefined' ? window.localStorage : (undefined as unknown as Storage); return ( - + {children} ); From 4eaaf9f982fff53e375da9a779c3064e70a16f77 Mon Sep 17 00:00:00 2001 From: Chris Whited Date: Fri, 25 Jul 2025 09:42:20 -1000 Subject: [PATCH 30/30] feat(#365 | nextjs template): publish 0.3.3 --- .changeset/social-maps-chew.md | 6 ------ apps/create-hypergraph/CHANGELOG.md | 5 +++++ apps/create-hypergraph/package.json | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 .changeset/social-maps-chew.md diff --git a/.changeset/social-maps-chew.md b/.changeset/social-maps-chew.md deleted file mode 100644 index 3ccab2a5..00000000 --- a/.changeset/social-maps-chew.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"create-hypergraph": patch ---- - -Remove localhost syncServerUri from HypergraphAppProvider. uses default instead - \ No newline at end of file diff --git a/apps/create-hypergraph/CHANGELOG.md b/apps/create-hypergraph/CHANGELOG.md index 1afd89f3..7792c235 100644 --- a/apps/create-hypergraph/CHANGELOG.md +++ b/apps/create-hypergraph/CHANGELOG.md @@ -1,5 +1,10 @@ # create-hypergraph +## 0.3.3 +### Patch Changes + +- c5822d5: Remove localhost syncServerUri from HypergraphAppProvider. uses default instead + ## 0.3.2 ### Patch Changes diff --git a/apps/create-hypergraph/package.json b/apps/create-hypergraph/package.json index 575f282a..db6bdd16 100644 --- a/apps/create-hypergraph/package.json +++ b/apps/create-hypergraph/package.json @@ -1,6 +1,6 @@ { "name": "create-hypergraph", - "version": "0.3.2", + "version": "0.3.3", "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", "type": "module", "bin": {