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/.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 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/connect/package.json b/apps/connect/package.json index 3db63552..8f70976d 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.16", + "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.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/README.md b/apps/create-hypergraph-app/README.md deleted file mode 100644 index 49bb1df3..00000000 --- a/apps/create-hypergraph-app/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# @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 deleted file mode 100644 index cc02b18b..00000000 --- a/apps/create-hypergraph-app/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "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 - }, - "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/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-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/README.md b/apps/create-hypergraph/README.md new file mode 100644 index 00000000..d048b603 --- /dev/null +++ b/apps/create-hypergraph/README.md @@ -0,0 +1,67 @@ +# @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@latest +``` + +With Yarn: + +```bash +yarn create hypergraph +``` + +With PNPM: + +```bash +pnpm create hypergraph@latest +``` + +With Bun: + +```bash +bun create hypergraph +``` + +Then follow the given prompts. + +### 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 +# 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) +- [create effect app](https://effect.website/docs/getting-started/create-effect-app/) \ No newline at end of file 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 new file mode 100644 index 00000000..73eb0fe1 --- /dev/null +++ b/apps/create-hypergraph/package.json @@ -0,0 +1,68 @@ +{ + "name": "create-hypergraph", + "version": "0.0.3", + "description": "CLI toolchain to scaffold a Hypergraph-enabled application with a given template.", + "type": "module", + "bin": { + "create-hypergraph": "./dist/bin.js", + "ch": "./dist/bin.js" + }, + "files": [ + "template-*", + "dist", + "llms.txt", + "CHANGELOG.md" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/graphprotocol/hypergraph.git", + "directory": "apps/create-hypergraph" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": false + }, + "scripts": { + "test": "vitest run", + "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", + "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-changelog && pnpm run copy-llms", + "check": "tsc --noEmit", + "start": "node ./dist/bin.js", + "lint": "biome check", + "lint:fix": "biome check --write --unsafe" + }, + "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", + "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.1.0", + "effect": "^3.17.0", + "execa": "^9.6.0", + "tsdown": "^0.13.0", + "tsx": "^4.20.3" + } +} diff --git a/apps/create-hypergraph/scripts/copy-package-json.ts b/apps/create-hypergraph/scripts/copy-package-json.ts new file mode 100644 index 00000000..7d99f23e --- /dev/null +++ b/apps/create-hypergraph/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': 'bin.js', + ch: '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/src/Cli.ts b/apps/create-hypergraph/src/Cli.ts new file mode 100644 index 00000000..e48b2e04 --- /dev/null +++ b/apps/create-hypergraph/src/Cli.ts @@ -0,0 +1,326 @@ +import { execSync } from 'node:child_process'; +import { readdirSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +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, Option } from 'effect'; + +import * as Domain from './Domain.js'; +import * as Utils from './Utils.js'; + +// ======================== +// Command Config +// ======================== + +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 template = Options.choice('template', Domain.availableFrameworkKeys).pipe( + Options.withAlias('t'), + Options.withDescription('Template to scaffold'), + Options.optional, +); + +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), +); + +export const run = Command.run(createHypergraphApp, { + name: 'create-hypergraph-app', + version: '0.0.3', +}); + +// ======================== +// Command Handler +// ======================== + +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)); +} + +function scaffoldHypergraphApp(config: Readonly) { + return Effect.gen(function* () { + 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 = 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.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* Effect.logInfo( + AnsiDoc.text(`Scaffolding Hypergraph app ${path.basename(config.appName)} with template ${config.template}`), + ); + + // retrieve template directory based on selected template + const __dirname = path.dirname(fileURLToPath(import.meta.url)); + + 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( + AnsiDoc.text(`Selected template ${config.template} does not exist`).pipe(AnsiDoc.annotate(Ansi.red)), + ); + } + + /** + * 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* () { + 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 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 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, () => !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 ${appname}!`), + AnsiDoc.hardLine, + AnsiDoc.text('To start the app, run:'), + AnsiDoc.text(`cd ${appname}`), + config.skipInstallDeps ? AnsiDoc.text(`${config.packageManager} install`) : AnsiDoc.hardLine, + AnsiDoc.text(`${config.packageManager} run dev`), + ), + ), + ); + }); +} + +// ======================== +// 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', +)<{ + readonly cause: unknown; +}> {} +class InstallDepsError extends Data.TaggedError('Hypergraph/create-hypergraph-app/errors/InstallDepsError')<{ + readonly cause: unknown; +}> {} 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/Logger.ts b/apps/create-hypergraph/src/Logger.ts new file mode 100644 index 00000000..bcdb898f --- /dev/null +++ b/apps/create-hypergraph/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/src/Utils.ts b/apps/create-hypergraph/src/Utils.ts new file mode 100644 index 00000000..248dd138 --- /dev/null +++ b/apps/create-hypergraph/src/Utils.ts @@ -0,0 +1,222 @@ +import * as HelpDoc from '@effect/cli/HelpDoc'; +import * as Effect from 'effect/Effect'; + +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(HelpDoc.p(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.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-._~]*$" + * + * @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/src/bin.ts b/apps/create-hypergraph/src/bin.ts new file mode 100644 index 00000000..ec4a9d66 --- /dev/null +++ b/apps/create-hypergraph/src/bin.ts @@ -0,0 +1,38 @@ +#!/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'; + +import { run } from './Cli.js'; +import { AnsiDocLogger } from './Logger.js'; + +const runnable = Effect.suspend(() => run(process.argv)).pipe( + Effect.provide(NodeFileSystem.layer), + Effect.provide(NodeContext.layer), +); + +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') { + 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 }), +); 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 97% rename from apps/create-hypergraph-app/template-vite-react/package.json rename to apps/create-hypergraph/template-vite-react/package.json index 61cb39ea..42ca3ee5 100644 --- a/apps/create-hypergraph-app/template-vite-react/package.json +++ b/apps/create-hypergraph/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/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 99% 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 index 764c62e3..9fa19500 100644 --- 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 @@ -192,5 +192,4 @@ function PrivateSpace() { ); -} -s; +} \ No newline at end of file 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/test/Cli.test.ts b/apps/create-hypergraph/test/Cli.test.ts new file mode 100644 index 00000000..ecfa3e42 --- /dev/null +++ b/apps/create-hypergraph/test/Cli.test.ts @@ -0,0 +1,270 @@ +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, env: { ...process.env, NODE_ENV: 'development' } }); + 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, + 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) { + 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/apps/create-hypergraph/test/Utils.test.ts b/apps/create-hypergraph/test/Utils.test.ts new file mode 100644 index 00000000..ccb816e9 --- /dev/null +++ b/apps/create-hypergraph/test/Utils.test.ts @@ -0,0 +1,400 @@ +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'; + +import * as Utils from '../src/Utils.js'; + +describe('Utils', () => { + describe('validatePackageName', () => { + describe('valid package 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', ({ 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', ({ 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', ({ 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', ({ expect }) => { + const result = Utils.validatePackageName('123package'); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('123package'); + }); + + 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', ({ 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', ({ 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', ({ expect }) => { + const result = Utils.validatePackageName(' mypackage '); + expect(result.isValid).toBe(true); + expect(result.normalizedName).toBe('mypackage'); + }); + }); + + describe('invalid package 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', ({ 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', ({ 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', ({ 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', ({ 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', ({ 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', ({ expect }) => { + const result = Utils.validatePackageName('!package'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('package'); + }); + + 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', ({ expect }) => { + 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', ({ expect }) => { + const result = Utils.validatePackageName('MYPACKAGE'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('mypackage'); + }); + + 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', ({ 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', ({ expect }) => { + const result = Utils.validatePackageName('###'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('package'); + }); + + 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', ({ 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', ({ expect }) => { + const result = Utils.validatePackageName('@###/###'); + expect(result.isValid).toBe(false); + expect(result.normalizedName).toBe('@---/---'); + }); + }); + + describe('edge cases', () => { + 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', ({ 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', ({ 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', ({ 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', ({ 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', ({ 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(HelpDoc.p('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(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(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(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(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(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(HelpDoc.p('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(HelpDoc.p("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(HelpDoc.p('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(HelpDoc.p(`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(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(HelpDoc.p('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(HelpDoc.p("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/tsconfig.build.json b/apps/create-hypergraph/tsconfig.build.json new file mode 100644 index 00000000..fc59560f --- /dev/null +++ b/apps/create-hypergraph/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/tsconfig.json b/apps/create-hypergraph/tsconfig.json new file mode 100644 index 00000000..a1739aff --- /dev/null +++ b/apps/create-hypergraph/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/tsconfig.scripts.json b/apps/create-hypergraph/tsconfig.scripts.json new file mode 100644 index 00000000..e974d95c --- /dev/null +++ b/apps/create-hypergraph/tsconfig.scripts.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["tsdown.config.ts", "scripts"], + "compilerOptions": { + "tsBuildInfoFile": ".tsbuildinfo/scripts.tsbuildinfo", + "types": [ + "node" + ], + "rootDir": ".", + "noEmit": true + } +} diff --git a/apps/create-hypergraph/tsconfig.src.json b/apps/create-hypergraph/tsconfig.src.json new file mode 100644 index 00000000..0e5649dd --- /dev/null +++ b/apps/create-hypergraph/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/tsconfig.test.json b/apps/create-hypergraph/tsconfig.test.json new file mode 100644 index 00000000..52509c9f --- /dev/null +++ b/apps/create-hypergraph/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/tsdown.config.ts b/apps/create-hypergraph/tsdown.config.ts new file mode 100644 index 00000000..2d7522fa --- /dev/null +++ b/apps/create-hypergraph/tsdown.config.ts @@ -0,0 +1,16 @@ +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'], + env: { + NODE_ENV: 'production', + }, +})); diff --git a/apps/create-hypergraph/vitest.config.ts b/apps/create-hypergraph/vitest.config.ts new file mode 100644 index 00000000..e516a830 --- /dev/null +++ b/apps/create-hypergraph/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/events/package.json b/apps/events/package.json index 9305d453..7c0fc26b 100644 --- a/apps/events/package.json +++ b/apps/events/package.json @@ -22,7 +22,7 @@ "@xstate/store": "^3.5.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "effect": "^3.16.16", + "effect": "^3.17.0", "framer-motion": "^12.10.1", "graphql-request": "^7.1.2", "isomorphic-ws": "^5.0.0", @@ -41,7 +41,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.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 5dacb1d3..28a74082 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.16", + "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.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 2be193e5..a535dfc1 100644 --- a/apps/typesync/package.json +++ b/apps/typesync/package.json @@ -41,21 +41,21 @@ "hypergraph": "pnpx tsx ./src/bin.ts typesync" }, "devDependencies": { - "@effect/cli": "^0.67.1", - "@effect/experimental": "^0.52.2", - "@effect/language-service": "^0.27.1", - "@effect/platform": "^0.88.1", - "@effect/platform-node": "^0.91.0", - "@effect/printer": "^0.44.14", - "@effect/sql": "^0.42.0", - "@effect/sql-sqlite-node": "^0.43.0", - "@effect/vitest": "^0.24.1", + "@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/printer": "^0.45.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.128.0", - "@types/node": "^24.0.14", + "@tanstack/router-plugin": "^1.129.5", + "@types/node": "^24.1.0", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.6.0", @@ -77,11 +77,11 @@ "@tanstack/react-form": "^1.14.1", "@tanstack/react-query": "^5.83.0", "@tanstack/react-query-devtools": "^5.83.0", - "@tanstack/react-router": "^1.128.0", - "@tanstack/react-router-devtools": "^1.128.0", + "@tanstack/react-router": "^1.129.5", + "@tanstack/react-router-devtools": "^1.129.5", "better-sqlite3": "^12.2.0", "date-fns": "^4.1.0", - "effect": "^3.16.16", + "effect": "^3.17.0", "graphql": "^16.11.0", "graphql-request": "^7.2.0", "jotai": "^2.12.5", 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/packages/hypergraph-react/package.json b/packages/hypergraph-react/package.json index 5ae02306..43d6298b 100644 --- a/packages/hypergraph-react/package.json +++ b/packages/hypergraph-react/package.json @@ -52,7 +52,7 @@ "@graphprotocol/grc-20": "^0.21.6", "@noble/hashes": "^1.8.0", "@tanstack/react-query": "^5.75.5", - "effect": "^3.16.16", + "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 b5f25818..7955a72d 100644 --- a/packages/hypergraph/package.json +++ b/packages/hypergraph/package.json @@ -58,7 +58,7 @@ "@serenity-kit/noble-sodium": "^0.2.1", "@xstate/store": "^3.5.1", "bs58check": "^4.0.0", - "effect": "^3.16.16", + "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 889170c0..8f059af0 100644 --- a/packages/typesync/package.json +++ b/packages/typesync/package.json @@ -43,6 +43,6 @@ }, "dependencies": { "@graphprotocol/grc-20": "^0.21.6", - "effect": "^3.16.16" + "effect": "^3.17.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 648391e1..70964605 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: @@ -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.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) + 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.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) '@xstate/store': specifier: ^3.5.1 version: 3.5.1(react@19.1.0)(solid-js@1.9.5) @@ -72,7 +72,7 @@ importers: specifier: ^2.1.1 version: 2.1.1 effect: - specifier: ^3.16.16 + specifier: ^3.17.0 version: 3.17.0 framer-motion: specifier: ^12.10.1 @@ -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.29)(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@22.15.29)(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@22.15.29)(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: ^22.15.15 - version: 22.15.29 + 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@22.15.29)(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,18 +128,157 @@ importers: version: 4.1.10 unplugin-fonts: specifier: ^1.3.1 - version: 1.3.1(vite@6.3.5(@types/node@22.15.29)(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@22.15.29)(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@22.15.29)(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: + apps/create-hypergraph: + 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.2 + '@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.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.1.0 + version: 24.1.0 + 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) + tsx: + specifier: ^4.20.3 + version: 4.20.3 publishDirectory: dist - apps/create-hypergraph-app/template-vite-react: + 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': specifier: ^0.21.6 @@ -164,13 +303,13 @@ 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) '@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 @@ -197,17 +336,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.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.0.15 - version: 24.0.15 + specifier: ^24.1.0 + version: 24.1.0 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -216,7 +355,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) @@ -276,7 +415,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.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) + 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.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) '@xstate/store': specifier: ^3.5.1 version: 3.5.1(react@19.1.0)(solid-js@1.9.5) @@ -287,7 +426,7 @@ importers: specifier: ^2.1.1 version: 2.1.1 effect: - specifier: ^3.16.16 + specifier: ^3.17.0 version: 3.17.0 framer-motion: specifier: ^12.10.1 @@ -327,20 +466,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.29)(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@22.15.29)(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@22.15.29)(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: ^22.15.15 - version: 22.15.29 + specifier: ^24.1.0 + version: 24.1.0 '@types/react': specifier: ^19.1.3 version: 19.1.3 @@ -352,7 +491,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.29)(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 @@ -424,7 +563,7 @@ importers: specifier: ^2.8.5 version: 2.8.5 effect: - specifier: ^3.16.16 + specifier: ^3.17.0 version: 3.17.0 express: specifier: ^5.1.0 @@ -449,8 +588,8 @@ importers: specifier: ^5.0.1 version: 5.0.1 '@types/node': - specifier: ^22.15.15 - version: 22.15.29 + specifier: ^24.1.0 + version: 24.1.0 '@types/pg': specifier: ^8.15.0 version: 8.15.0 @@ -489,7 +628,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) @@ -500,11 +639,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.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) + 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 @@ -512,7 +651,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 @@ -540,35 +679,35 @@ importers: version: 4.1.11 devDependencies: '@effect/cli': - specifier: ^0.67.1 - version: 0.67.1(@effect/platform@0.88.2(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.44.14(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0))(effect@3.17.0) + 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.2 - version: 0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0) + 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.27.1 - version: 0.27.2 + specifier: ^0.28.0 + version: 0.28.2 '@effect/platform': - specifier: ^0.88.1 - version: 0.88.2(effect@3.17.0) + specifier: ^0.89.0 + version: 0.89.0(effect@3.17.0) '@effect/platform-node': - specifier: ^0.91.0 - version: 0.91.0(@effect/cluster@0.37.2(@effect/platform@0.88.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(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/printer': - specifier: ^0.44.14 - version: 0.44.14(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0) + 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.42.0 - version: 0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0) - '@effect/sql-sqlite-node': specifier: ^0.43.0 - version: 0.43.0(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(effect@3.17.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.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.1 - version: 0.24.1(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)) + specifier: ^0.25.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) @@ -579,11 +718,11 @@ importers: specifier: ^4.6.1 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.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))(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)) + 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.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.14 - version: 24.0.15 + specifier: ^24.1.0 + version: 24.1.0 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -592,7 +731,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 @@ -607,9 +746,84 @@ 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: + 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/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) + '@graphql-typed-document-node/core': + specifier: ^3.2.0 + version: 3.2.0(graphql@16.11.0) + '@headlessui/react': + specifier: ^2.2.4 + version: 2.2.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@heroicons/react': + specifier: ^2.2.0 + version: 2.2.0(react@19.1.0) + '@phosphor-icons/react': + specifier: ^2.1.10 + version: 2.1.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-tabs': + specifier: ^1.1.12 + 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.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) + '@tanstack/react-query': + specifier: ^5.83.0 + version: 5.83.0(react@19.1.0) + '@tanstack/react-query-devtools': + 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.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.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 + date-fns: + specifier: ^4.1.0 + version: 4.1.0 + effect: + specifier: ^3.17.0 + version: 3.17.0 + graphql: + specifier: ^16.11.0 + version: 16.11.0 + graphql-request: + specifier: ^7.2.0 + version: 7.2.0(graphql@16.11.0) + jotai: + specifier: ^2.12.5 + version: 2.12.5(@types/react@19.1.8)(react@19.1.0) + open: + specifier: ^10.2.0 + version: 10.2.0 + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + shiki: + specifier: ^3.8.0 + version: 3.8.0 + tailwindcss: + specifier: ^4.1.11 + version: 4.1.11 + docs: dependencies: '@docusaurus/core': @@ -680,7 +894,7 @@ importers: specifier: ^4.0.0 version: 4.0.0 effect: - specifier: ^3.16.16 + specifier: ^3.17.0 version: 3.17.0 permissionless: specifier: ^0.2.47 @@ -724,7 +938,7 @@ importers: specifier: ^5.75.5 version: 5.75.5(react@19.1.0) effect: - specifier: ^3.16.16 + specifier: ^3.17.0 version: 3.17.0 graphql-request: specifier: ^7.1.2 @@ -756,7 +970,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) @@ -774,7 +988,7 @@ 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.16 + specifier: ^3.17.0 version: 3.17.0 publishDirectory: publish @@ -1745,6 +1959,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'} @@ -2396,13 +2614,13 @@ packages: resolution: {integrity: sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==} engines: {node: '>=18.0'} - '@effect/cli@0.67.1': - resolution: {integrity: sha512-+Dg3z2KqMjrynSESZL9dApXpj6sJdUuYRjZ8KFgso52F6uqlM/5RKZiHOG3eHK6mrsOC0jgX+qsUMO46F8l9zw==} + '@effect/cli@0.68.0': + resolution: {integrity: sha512-OlKMbGKCuF/z8Bb4P/9lQreljzbQSUjpnkJ9U6Sb7cSRVuFoTglCEGUKb73yC8CnxZoV/rqk0LVcb/tJsXPBsQ==} peerDependencies: - '@effect/platform': ^0.88.1 - '@effect/printer': ^0.44.14 - '@effect/printer-ansi': ^0.44.14 - effect: ^3.16.14 + '@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==} @@ -2426,11 +2644,11 @@ packages: lmdb: optional: true - '@effect/experimental@0.52.2': - resolution: {integrity: sha512-CotYjNLYvSAsYYwTE1/NUr/XkiupoYi941lq3NWGrJrYWov3T6v3Gg2om/n29/WqoMYpnFn0ka2AixTWhcq9dg==} + '@effect/experimental@0.53.0': + resolution: {integrity: sha512-EUYWW6g8CsobKDnOyX6a+NIPFOVVU8X1/tGddfagmuB7ukhT0QAppHqnqTqWgvZ6icbN8G5Z1Ui2xB4P80GrAA==} peerDependencies: - '@effect/platform': ^0.88.1 - effect: ^3.16.14 + '@effect/platform': ^0.89.0 + effect: ^3.17.0 ioredis: ^5 lmdb: ^3 peerDependenciesMeta: @@ -2439,32 +2657,27 @@ packages: lmdb: optional: true - '@effect/language-service@0.27.2': - resolution: {integrity: sha512-AFgxoIZ6xpfwCZp7+1mj3f1HsK3Yqe9I0iUfpf8Iu2gl9F3dmdFiOvuoLRVSkfVsK2BTQr8kv2zPi53Lst2haw==} + '@effect/language-service@0.28.2': + resolution: {integrity: sha512-KBRUZhdP1Yc/4NesXSL2s0pLeK8FCOX+vLn8xDcchNfHNwod7PvbjcMHUGKI4xsx3s5ZgaPrYU5A6TDvYyjWhQ==} hasBin: true - '@effect/platform-node-shared@0.44.0': - resolution: {integrity: sha512-UvMExEu5TUdlzJRe2O87K8+ttie0VfA26J/82uAXCAMCmi139EQvzBEbX7yE1iYIruH9CmypKXKFLU61VxSlnw==} - peerDependencies: - '@effect/cluster': ^0.43.0 - '@effect/platform': ^0.88.1 - '@effect/rpc': ^0.65.1 - '@effect/sql': ^0.42.0 - effect: ^3.16.14 - - '@effect/platform-node@0.91.0': - resolution: {integrity: sha512-oHDcCilVLX1YEK6u0ukaNuYb03wLaCUTlws5JaGXsBjjdMlf3+bEW9i30bKFmf+B+uXheflf8X3MyZ3p94sXZA==} + '@effect/platform-node-shared@0.45.0': + resolution: {integrity: sha512-6pChbcUvZBXZY0fUJQ+WJaDhEk0Y0713YLpOQmrmIo92Uth+5ipbfoNHky+ickOsfi6eUOi7UPMaXkUzGHQwIQ==} peerDependencies: - '@effect/cluster': ^0.43.0 - '@effect/platform': ^0.88.1 - '@effect/rpc': ^0.65.1 - '@effect/sql': ^0.42.0 - effect: ^3.16.14 + '@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.2': - resolution: {integrity: sha512-JnPCfQz1y8ZED2OBxU82iFBT43fXrl26N+PEFtLWn1EedG6C6AwFvwbpFkICF3G2Qj/ZZ153xZaAxtVOPu4WTg==} + '@effect/platform-node@0.92.0': + resolution: {integrity: sha512-4ZIRY+1PhIY/bux/Khbr0nyTfWjMTYa8a1qHuaHBC2bBa5Ed5LjbP7T+TMrIB5cmp8s6L+pGkdvJTaxjGuoGvQ==} peerDependencies: - effect: ^3.16.16 + '@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.89.0': resolution: {integrity: sha512-9nTaD1h/X4M4qdl/4E1atwoe+p4VoH0SJiYd2mJrDJC18alwqlI/xaKNGRnJVPbIrhbKC62YJ9h2mqfkE4t2YA==} @@ -2477,12 +2690,6 @@ packages: '@effect/typeclass': ^0.36.0 effect: ^3.17.0 - '@effect/printer@0.44.14': - resolution: {integrity: sha512-Z9YJbmRG++BJqpR+kmJIlo1XdVGtZXPcHSMKPUiZHkZNtX2dG5Ynk2PwdRiA68sz895Fr1QwdYel8zKorUij/w==} - peerDependencies: - '@effect/typeclass': ^0.35.14 - effect: ^3.16.14 - '@effect/printer@0.45.0': resolution: {integrity: sha512-UpFBH2JKAgakSWpue6yKkIAXMq+3md/CPb9s/NGl28vDu1P33cvDeeDL/1EOzFk8WqhIs3oKwPMDnd3jUhjzdg==} peerDependencies: @@ -2495,30 +2702,30 @@ packages: '@effect/platform': ^0.84.4 effect: ^3.16.3 - '@effect/sql-sqlite-node@0.43.0': - resolution: {integrity: sha512-kivFGI6rr0nDhaFDezfBxuDRiw4uhXLwiP66vxqInLmyLzti3RdqZ6I5u4/6MlfS29RIVikIXh+8W8vO+uCpDA==} + '@effect/sql-sqlite-node@0.44.0': + resolution: {integrity: sha512-RBGeOAiKUAGzscrANeJBOYz26z1rhjvpGTxJhsprYgW14uwGjEkOw2bgNbJHmn47GHrd8UaXSn8zy57QX7nOqQ==} peerDependencies: - '@effect/experimental': ^0.52.1 - '@effect/platform': ^0.88.1 - '@effect/sql': ^0.42.0 - effect: ^3.16.14 + '@effect/experimental': ^0.53.0 + '@effect/platform': ^0.89.0 + '@effect/sql': ^0.43.0 + effect: ^3.17.0 - '@effect/sql@0.42.1': - resolution: {integrity: sha512-fVbHAS7iQ+SoySBNmpmXSDYxbJF8Am/1giJqXBQIhZdeXCI3q0+dAU7yjcGjorwRj7GaGdB05MeguV4BWRMWDg==} + '@effect/sql@0.43.0': + resolution: {integrity: sha512-Q894sLjh7nV/DnbKq2i1HXVA4RQs05OEaN/cCSpLj+37c3ToKR5SmHNMA2Z1HGxauZDi5kenKG1dHKFxRApN5Q==} peerDependencies: - '@effect/experimental': ^0.52.2 - '@effect/platform': ^0.88.2 - effect: ^3.16.16 + '@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.1': - resolution: {integrity: sha512-q5NVkJcmdiOlFLYhRLmeDfAk3maNDD4BYeeAr0Gy3TTXZWCX7hlWnzLoJpBVuJjjMJDC/HGxq9GFKxbP/oY7mQ==} + '@effect/vitest@0.25.0': + resolution: {integrity: sha512-FpOKYdhe3LaOoYn0cm5W9cD9bk2qwr2A+ujMhiDVxN7MMgndFsOd8uxcWjZRX6tWjzU2aKvZXFKGEp93GAmXug==} peerDependencies: - effect: ^3.16.14 + effect: ^3.17.0 vitest: ^3.2.0 '@effect/workflow@0.1.2': @@ -2526,9 +2733,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==} @@ -3498,6 +3714,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==} @@ -3685,6 +3904,13 @@ packages: resolution: {integrity: sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==} engines: {node: '>=14'} + '@oxc-project/runtime@0.77.3': + resolution: {integrity: sha512-vsC/ewcGJ7xXnnwZkku7rpPH5Lxb5g4J+V6lD9eBTnRLmXVXM7Qu50y+ozD+UD5IXaSoVOvVMGTT4YSNCz2MQQ==} + engines: {node: '>=6.9.0'} + + '@oxc-project/types@0.77.3': + resolution: {integrity: sha512-5Vh+neJhhxuF0lYCjZXbxjqm2EO6YJ1jG+KuHntrd6VY67OMpYhWq2cZhUhy+xL9qLJVJRaeII7Xj9fciA6v7A==} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -3883,6 +4109,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==} @@ -4319,12 +4549,85 @@ packages: peerDependencies: viem: ^2.0.0 + '@rolldown/binding-android-arm64@1.0.0-beta.29': + resolution: {integrity: sha512-pDv7gg59Gdy80eFmMkEqXEaoJi3Y9W/a9T3z9M4t8Ma8aVXNldvSy9UgtlX7AK7DPqF8tULnmIZ2Z3rvGMz/NQ==} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-beta.29': + resolution: {integrity: sha512-fPqR6TfTqbzgKKCQYtcCS+Dms91YcptTbdlwJ13DxOUgMe8LgDIVsLLlEykfm7ijJd5mM4zNw0Hr2CJb6kvQZw==} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-beta.29': + resolution: {integrity: sha512-7Z4qosL0xN8i6++txHOEPCVP3/lcGLOvftUJOWATZ5aDkDskwcZDa66BGiJt/K1/DgW4kpRVmnGWUWAORHBbFA==} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.29': + resolution: {integrity: sha512-0HLTfPW5Glh608s76qgayN/nPsXPchNUumavf7W5nh1eMG6qBsOO7Q1QaK0v4un7qtsn3IA/1Tgq0ZgNc0dbeg==} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.29': + resolution: {integrity: sha512-QNboxdVTJOZS4zP8kA2+XUwAegejd5QNSH5zVR4neqG2AfbxRcMFzSVRkJHN6yDaaKweD/4sUvXfmef6p/7zsw==} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.29': + resolution: {integrity: sha512-hzBmOtYdC4369XxN2SNJ3oBlXKWNif3ieWBT+oh/qvAeox4fQR0ngqyh+kIGOufBnP5Zc2rqJf9LzIbJw3Tx/Q==} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.29': + resolution: {integrity: sha512-6B35GmFJJ4RX88OgubrnUmuJBUgRh6/OTXIpy8m/VUnoc683lufIPo26HW/0LxLgxp2GM7KHr3LOULcVxbqq4Q==} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.29': + resolution: {integrity: sha512-z3ru8fUCunQM8q9I7RbDVMT5cxzxVVVBNNKM5/qAQQrdObd1u8g0LR5z0yLtaFWzybwLVdPtJDRcXtLm5tOBFA==} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.29': + resolution: {integrity: sha512-n6fs4L7j99MIiI6vKhQDdyScv4/uMAPtIMkB0zGbUX8MKWT1osym1hvWVdlENjnS/Phf0zzhjyOgoFDzdhI1cQ==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.29': + resolution: {integrity: sha512-C5hcJgtDN4rp6/WsPTQSDVUWrdnIC//ynMGcUIh1O0anm9KnSy47zKQ5D9EqtlEKvO+2PPqmyUVJ2DTq18nlVA==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.29': + resolution: {integrity: sha512-lMN1IBItdZFO182Sdus9oVuNDqyIymn/bsR5KwgeGaiqLsrmpQHBSLwkS/nKJO1nzYlpGDRugFSpnrSJ5ZmihQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.29': + resolution: {integrity: sha512-0UrXCUAOrbWdyVJskzjtne/4d3YMMhhhpBnob3SeF4jAvbKYqPhCZJ71pP7yUpvbowGXXTnHWpKfitg4Sovmtw==} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.29': + resolution: {integrity: sha512-YX0OYL1dcB7rPnsndpEa68fytYyZZj1iaWzH7momFB2oBS2lXAe1UrrDWcdLoUXdzPIyzpvtBCiS2XcDgYG7ag==} + cpu: [ia32] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.29': + resolution: {integrity: sha512-azrPWbV+NZiCFNs59AgH9Y6vFKHoAI6T/XtKKsoLxkPyP1LpbdgL5eqRfeWz+GCAUY9qhDOC4hH1GjFG8PrZIg==} + 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.29': + resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} + '@rollup/plugin-inject@5.0.5': resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} @@ -4567,6 +4870,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==} @@ -4617,6 +4923,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: @@ -5194,11 +5504,11 @@ 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==} + '@tanstack/react-router-devtools@1.129.5': + resolution: {integrity: sha512-PBmFfcJsru2RMfbyeNPm2WAlrccm3+n4yaBkz5morS0ZnfDm5MwKbf+RrjbiiGo9nj7EQh5uxuEw4nDg6winyA==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.129.2 + '@tanstack/react-router': ^1.129.5 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' @@ -5209,8 +5519,8 @@ 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==} + '@tanstack/react-router@1.129.5': + resolution: {integrity: sha512-t0Imn7opXrIflBBTId7u8QJTZQd8w2OboWkP+FcBls2jfybPjrgF2jOwQ3XZdlHhUJoIVUj/2aootlisjsPhig==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -5244,8 +5554,12 @@ packages: resolution: {integrity: sha512-3dZYP5cCq3jJYgnRDzKR3w4sYzrXP5sw1st303ye87VV26r31I8UaIuUEs7kiJaxgWBvqHglWCiygBWQODZXVw==} engines: {node: '>=12'} - '@tanstack/router-core@1.129.2': - resolution: {integrity: sha512-M7OuzxbSkEFa1WWQoLOg7RtJUHzfaURMiRCLbKLEJWJkw1Cuylj7oBbzbawDAJFTHry9UUDZNPP0MSCfcXypPA==} + '@tanstack/router-core@1.129.5': + resolution: {integrity: sha512-xDKS4TAo1Qi1XfxNVjPNjwid4nTl5n2AeGHStLGwHEv/6MR4wbUmowOukxej1QcfbQSm0LZIO4OtJB3vWV38og==} + engines: {node: '>=12'} + + '@tanstack/router-core@1.129.6': + resolution: {integrity: sha512-XAj3nEcFWOWHTMx/K4XvcoWdq/h9WaH+5VPD/AUvA1pkA0Sq/I3Ji/yuOEYv4u0EvqL2c0UHk2eVudjWxGVgrQ==} engines: {node: '>=12'} '@tanstack/router-devtools-core@1.122.0': @@ -5260,11 +5574,11 @@ packages: csstype: optional: true - '@tanstack/router-devtools-core@1.129.2': - resolution: {integrity: sha512-PlGJ5A54P0J8FAe7biiLARN9U6VCDPbnoNjqL9jsvf2A0X/cQw4fgediR+jsMjVuXNoL4kMDprVTpGT5PoVUaQ==} + '@tanstack/router-devtools-core@1.129.5': + resolution: {integrity: sha512-V4zFbe0L4wZMk9VFJVyv7N9YpTD+jYZEShE+NZkJm/+XmvcV/Hnis/25frId8sA+Bsb1h9cM2cC/9Q3Ee8igDw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.129.2 + '@tanstack/router-core': ^1.129.5 csstype: ^3.0.10 solid-js: '>=1.9.5' tiny-invariant: ^1.3.3 @@ -5281,8 +5595,8 @@ packages: '@tanstack/react-router': optional: true - '@tanstack/router-generator@1.129.2': - resolution: {integrity: sha512-xCZYd4sgPFdlgEten7x+uJx+0y6iUm2d8cnE3cHHzzc5COf5jO+FFh9kVRa9Ouh4h/binv5dpKRBhB33TqPRfw==} + '@tanstack/router-generator@1.129.5': + resolution: {integrity: sha512-UqNdUcnaxPo1cVXXJJGn1uL1Wc5iLKP3RCBWoofcufUWII6PBP1A67dNLLj04ypLhpLvBF11YBeXb7cEZ0Yayg==} engines: {node: '>=12'} '@tanstack/router-plugin@1.120.2': @@ -5306,12 +5620,12 @@ packages: webpack: optional: true - '@tanstack/router-plugin@1.129.2': - resolution: {integrity: sha512-uchyp0fMG6MmMJMxydmp4JTyIfW0FHVE4hwGSnP9dgoncQHbqZQt3qNEYbzPIV+JRp6DKjb8Ax5DAUgL7/LVCA==} + '@tanstack/router-plugin@1.129.5': + resolution: {integrity: sha512-LUmSnxcvwnm66qe8Dz+yYzZbdD73V0zlqEaIYklD7657++PzdokRMlXBhAzaKCPBITBOHFCAlP6jKhnbJZGDzg==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.129.2 + '@tanstack/react-router': ^1.129.5 vite: '>=5.0.0 || >=6.0.0' vite-plugin-solid: ^2.11.2 webpack: '>=5.92.0' @@ -5382,6 +5696,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==} @@ -5514,8 +5831,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==} @@ -6098,6 +6415,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'} @@ -6230,6 +6551,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==} @@ -7237,6 +7561,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'} @@ -7287,6 +7620,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==} @@ -7525,6 +7862,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'} @@ -7655,6 +7996,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'} @@ -7870,8 +8215,12 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + 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==} github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -8104,6 +8453,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==} @@ -8205,6 +8557,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==} @@ -8484,6 +8840,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'} @@ -8503,6 +8863,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==} @@ -9572,6 +9936,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==} @@ -9792,6 +10160,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==} @@ -9837,6 +10209,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==} @@ -10506,6 +10882,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'} @@ -10606,6 +10986,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'} @@ -10982,6 +11365,26 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + 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: ~3.0.3 + peerDependenciesMeta: + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.0.0-beta.29: + resolution: {integrity: sha512-EsoOi8moHN6CAYyTZipxDDVTJn0j2nBCWor4wRU45RQ8ER2qREDykXLr3Ulz6hBh6oBKCFTQIjo21i0FXNo/IA==} + hasBin: true + rollup@4.39.0: resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -11103,6 +11506,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'} @@ -11442,6 +11850,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'} @@ -11663,6 +12075,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'} @@ -11755,6 +12170,28 @@ packages: ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + tsdown@0.13.0: + resolution: {integrity: sha512-+1ZqbLIYDAiNxtAvq9RsTg55PRvaMxGmtvRFBW2J+i4GfDKiyHAkxez1eB3EPvHG1Z917nsf2madsSeblJS3GA==} + engines: {node: '>=20.19.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==} @@ -11890,6 +12327,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==} @@ -11933,6 +12373,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==} @@ -12710,6 +13154,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'} @@ -13004,7 +13452,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@babel/helper-annotate-as-pure@7.27.1': dependencies: @@ -13026,7 +13474,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.26.5(@babel/core@7.28.0) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -13066,22 +13514,22 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color '@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 '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -13103,11 +13551,11 @@ snapshots: '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@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': {} @@ -13118,7 +13566,7 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-annotate-as-pure': 7.27.1 '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -13142,8 +13590,8 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -13165,8 +13613,8 @@ snapshots: '@babel/helper-wrap-function@7.27.1': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -13909,7 +14357,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)': @@ -14006,6 +14454,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 @@ -15299,21 +15752,21 @@ snapshots: - uglify-js - webpack-cli - '@effect/cli@0.67.1(@effect/platform@0.88.2(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.44.14(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0))(effect@3.17.0)': + '@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.2(effect@3.17.0) - '@effect/printer': 0.44.14(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0) + '@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.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.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)': dependencies: - '@effect/platform': 0.88.2(effect@3.17.0) - '@effect/rpc': 0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0) - '@effect/sql': 0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.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) '@effect/workflow': 0.1.2(effect@3.17.0) effect: 3.17.0 @@ -15323,20 +15776,20 @@ snapshots: effect: 3.17.0 uuid: 11.1.0 - '@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0)': + '@effect/experimental@0.53.0(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/platform': 0.88.2(effect@3.17.0) + '@effect/platform': 0.89.0(effect@3.17.0) effect: 3.17.0 uuid: 11.1.0 - '@effect/language-service@0.27.2': {} + '@effect/language-service@0.28.2': {} - '@effect/platform-node-shared@0.44.0(@effect/cluster@0.37.2(@effect/platform@0.88.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(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.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0) - '@effect/platform': 0.88.2(effect@3.17.0) - '@effect/rpc': 0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0) - '@effect/sql': 0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.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) '@parcel/watcher': 2.5.1 effect: 3.17.0 multipasta: 0.2.7 @@ -15345,13 +15798,13 @@ snapshots: - bufferutil - utf-8-validate - '@effect/platform-node@0.91.0(@effect/cluster@0.37.2(@effect/platform@0.88.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(bufferutil@4.0.9)(effect@3.17.0)(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.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0) - '@effect/platform': 0.88.2(effect@3.17.0) - '@effect/platform-node-shared': 0.44.0(@effect/cluster@0.37.2(@effect/platform@0.88.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/workflow@0.1.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(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.88.2(effect@3.17.0))(effect@3.17.0) - '@effect/sql': 0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.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/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 @@ -15360,14 +15813,6 @@ snapshots: - bufferutil - utf-8-validate - '@effect/platform@0.88.2(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.89.0(effect@3.17.0)': dependencies: '@opentelemetry/semantic-conventions': 1.34.0 @@ -15382,34 +15827,29 @@ snapshots: '@effect/typeclass': 0.31.10(effect@3.17.0) effect: 3.17.0 - '@effect/printer@0.44.14(@effect/typeclass@0.31.10(effect@3.17.0))(effect@3.17.0)': - dependencies: - '@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)': dependencies: '@effect/typeclass': 0.31.10(effect@3.17.0) effect: 3.17.0 - '@effect/rpc@0.61.4(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0)': + '@effect/rpc@0.61.4(@effect/platform@0.89.0(effect@3.17.0))(effect@3.17.0)': dependencies: - '@effect/platform': 0.88.2(effect@3.17.0) + '@effect/platform': 0.89.0(effect@3.17.0) effect: 3.17.0 - '@effect/sql-sqlite-node@0.43.0(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(effect@3.17.0)': + '@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.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0) - '@effect/platform': 0.88.2(effect@3.17.0) - '@effect/sql': 0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.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) '@opentelemetry/semantic-conventions': 1.34.0 better-sqlite3: 11.10.0 effect: 3.17.0 - '@effect/sql@0.42.1(@effect/experimental@0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0))(@effect/platform@0.88.2(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)': dependencies: - '@effect/experimental': 0.52.2(@effect/platform@0.88.2(effect@3.17.0))(effect@3.17.0) - '@effect/platform': 0.88.2(effect@3.17.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) '@opentelemetry/semantic-conventions': 1.34.0 effect: 3.17.0 uuid: 11.1.0 @@ -15418,20 +15858,36 @@ snapshots: dependencies: effect: 3.17.0 - '@effect/vitest@0.24.1(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: effect: 3.17.0 + '@emnapi/core@1.4.5': + dependencies: + '@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 @@ -16045,7 +16501,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 @@ -16056,12 +16512,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 @@ -16069,7 +16525,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 @@ -16291,7 +16747,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) @@ -16300,7 +16756,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: @@ -16340,9 +16796,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 @@ -16410,9 +16866,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 @@ -16454,10 +16910,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) @@ -16663,7 +17119,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': 24.1.0 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -16797,8 +17253,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 @@ -16876,6 +17332,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': @@ -17037,6 +17500,10 @@ snapshots: '@opentelemetry/semantic-conventions@1.34.0': {} + '@oxc-project/runtime@0.77.3': {} + + '@oxc-project/types@0.77.3': {} + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -17309,6 +17776,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)': @@ -17983,10 +18454,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.29': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-beta.29': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-beta.29': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-beta.29': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.29': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.29': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.29': + optional: true + + '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.29': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.29': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.29': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.29': + dependencies: + '@napi-rs/wasm-runtime': 1.0.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.29': + optional: true + + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.29': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.29': + optional: true + '@rolldown/pluginutils@1.0.0-beta.19': {} '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rolldown/pluginutils@1.0.0-beta.29': {} + '@rollup/plugin-inject@5.0.5(rollup@4.45.0)': dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.45.0) @@ -18160,6 +18677,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 @@ -18219,6 +18738,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 @@ -18694,33 +19215,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@22.15.29)(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@22.15.29)(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@22.15.29)(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@22.15.29)(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: @@ -18762,10 +19283,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.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)': + '@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.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.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.129.2)(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.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: @@ -18774,10 +19295,10 @@ 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.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)': + '@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.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) + '@tanstack/react-router': 1.129.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@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) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -18797,11 +19318,11 @@ 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)': + '@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 '@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 + '@tanstack/router-core': 1.129.5 isbot: 5.1.28 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -18840,7 +19361,17 @@ snapshots: '@tanstack/store': 0.7.0 tiny-invariant: 1.3.3 - '@tanstack/router-core@1.129.2': + '@tanstack/router-core@1.129.5': + 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.6': dependencies: '@tanstack/history': 1.121.34 '@tanstack/store': 0.7.2 @@ -18850,9 +19381,9 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.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)': + '@tanstack/router-devtools-core@1.122.0(@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.2 + '@tanstack/router-core': 1.129.6 clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.5 @@ -18860,9 +19391,9 @@ snapshots: optionalDependencies: csstype: 3.1.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)': + '@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.2 + '@tanstack/router-core': 1.129.6 clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.5 @@ -18879,9 +19410,9 @@ 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': + '@tanstack/router-generator@1.129.5': dependencies: - '@tanstack/router-core': 1.129.2 + '@tanstack/router-core': 1.129.6 '@tanstack/router-utils': 1.121.21 '@tanstack/virtual-file-routes': 1.121.21 prettier: 3.6.2 @@ -18892,7 +19423,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.29)(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) @@ -18913,21 +19444,21 @@ 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.29)(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.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) '@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 @@ -18935,22 +19466,22 @@ 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.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-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.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.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) '@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 @@ -18958,8 +19489,8 @@ 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.0.15)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.1)(tsx@4.20.3)(yaml@2.7.0) + '@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 transitivePeerDependencies: - supports-color @@ -19027,6 +19558,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': @@ -19053,11 +19589,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': 24.1.0 '@types/chai@5.2.2': dependencies: @@ -19066,15 +19602,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': 24.1.0 '@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: @@ -19102,14 +19638,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': 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 '@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 @@ -19143,7 +19679,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/istanbul-lib-coverage@2.0.6': {} @@ -19171,7 +19707,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@types/node@12.20.55': {} @@ -19189,7 +19725,7 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@24.0.15': + '@types/node@24.1.0': dependencies: undici-types: 7.8.0 @@ -19197,7 +19733,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 @@ -19253,12 +19789,12 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 '@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: @@ -19267,12 +19803,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': 24.1.0 '@types/stylis@4.2.5': {} @@ -19288,11 +19824,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': {} @@ -19371,7 +19907,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: @@ -19395,29 +19931,29 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.29)(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@22.15.29)(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) @@ -19425,11 +19961,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) @@ -19437,7 +19973,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 @@ -19449,13 +19985,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: @@ -20333,6 +20869,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 @@ -20504,6 +21045,8 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 + birpc@2.5.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -21260,7 +21803,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 @@ -21672,6 +22215,8 @@ snapshots: dset@3.1.4: {} + dts-resolver@2.1.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -21735,6 +22280,8 @@ snapshots: emoticon@4.1.0: {} + empathic@2.0.0: {} + encode-utf8@1.0.3: {} encodeurl@1.0.2: {} @@ -22038,7 +22585,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 require-like: 0.1.2 event-target-shim@5.0.1: {} @@ -22066,6 +22613,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: {} @@ -22243,6 +22805,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 @@ -22360,7 +22926,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 @@ -22459,7 +23025,12 @@ snapshots: get-stream@6.0.1: {} - get-tsconfig@4.8.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 @@ -22569,13 +23140,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 @@ -22819,6 +23390,8 @@ snapshots: dependencies: react-is: 16.13.1 + hookable@5.5.3: {} + hpack.js@2.1.6: dependencies: inherits: 2.0.4 @@ -22948,6 +23521,8 @@ snapshots: human-signals@2.1.0: {} + human-signals@8.0.1: {} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -23170,6 +23745,8 @@ snapshots: is-stream@2.0.1: {} + is-stream@4.0.1: {} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -23186,6 +23763,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 @@ -23273,7 +23852,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 24.0.15 + '@types/node': 24.1.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -23281,13 +23860,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 24.0.15 + '@types/node': 24.1.0 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -23905,9 +24484,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: {} @@ -24403,7 +24982,7 @@ snapshots: node-abi@3.74.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 node-addon-api@7.1.1: {} @@ -24495,6 +25074,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: @@ -24736,7 +25320,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: {} @@ -24783,6 +25367,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: @@ -24820,6 +25406,8 @@ snapshots: path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-root-regex@0.1.2: {} @@ -25166,7 +25754,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 @@ -25633,6 +26221,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): @@ -25734,6 +26326,8 @@ snapshots: dependencies: side-channel: 1.1.0 + quansync@0.2.10: {} + query-registry@3.0.1: dependencies: query-string: 9.1.1 @@ -26235,6 +26829,45 @@ snapshots: hash-base: 3.0.5 inherits: 2.0.4 + 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 + '@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.29 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - oxc-resolver + - supports-color + + rolldown@1.0.0-beta.29: + dependencies: + '@oxc-project/runtime': 0.77.3 + '@oxc-project/types': 0.77.3 + '@rolldown/pluginutils': 1.0.0-beta.29 + ansis: 4.1.0 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-beta.29 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.29 + '@rolldown/binding-darwin-x64': 1.0.0-beta.29 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.29 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.29 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.29 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.29 + '@rolldown/binding-linux-arm64-ohos': 1.0.0-beta.29 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.29 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.29 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.29 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.29 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.29 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.29 + rollup@4.39.0: dependencies: '@types/estree': 1.0.7 @@ -26396,7 +27029,7 @@ snapshots: semver-diff@4.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 semver@5.7.2: {} @@ -26404,6 +27037,8 @@ snapshots: semver@7.7.1: {} + semver@7.7.2: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -26441,7 +27076,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 @@ -26545,7 +27180,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 @@ -26856,6 +27491,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 @@ -27096,6 +27733,8 @@ snapshots: tinyexec@0.3.2: {} + tinyexec@1.0.1: {} + tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) @@ -27172,6 +27811,29 @@ snapshots: ts-log@2.2.7: {} + tsdown@0.13.0(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.29 + 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 + 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: {} @@ -27240,7 +27902,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 @@ -27314,6 +27976,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: {} @@ -27347,6 +28016,8 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} + unicorn-magic@0.3.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -27400,11 +28071,11 @@ snapshots: unpipe@1.0.0: {} - unplugin-fonts@1.3.1(vite@6.3.5(@types/node@22.15.29)(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@22.15.29)(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: @@ -27454,7 +28125,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 @@ -27663,13 +28334,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 @@ -27684,43 +28355,26 @@ snapshots: - tsx - yaml - vite-plugin-node-polyfills@0.23.0(rollup@4.45.0)(vite@6.3.5(@types/node@22.15.29)(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@22.15.29)(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@22.15.29)(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@22.15.29)(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@22.15.29)(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.29 - 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): + 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) @@ -27729,7 +28383,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 @@ -27737,7 +28391,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) @@ -27746,7 +28400,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 @@ -27754,7 +28408,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) @@ -27763,7 +28417,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 @@ -27771,11 +28425,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 @@ -27793,12 +28447,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 @@ -28190,6 +28844,8 @@ snapshots: yocto-queue@1.2.1: {} + yoctocolors@2.1.1: {} + zod-package-json@1.0.3: dependencies: zod: 3.25.51 diff --git a/tsconfig.json b/tsconfig.json index 5ba7f73b..e25e00b1 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" } ] } diff --git a/vitest.config.ts b/vitest.config.ts index d194e6db..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'], + projects: ['./packages/*', './apps/events', './apps/typesync', './apps/create-hypergraph'], }, });