diff --git a/aiprompts/waveapp.md b/aiprompts/waveapp.md
new file mode 100644
index 0000000000..ce60450e3e
--- /dev/null
+++ b/aiprompts/waveapp.md
@@ -0,0 +1,365 @@
+# Wave Apps Architecture Guide
+
+Wave Apps are self-contained web applications that run within Wave Terminal blocks. They combine a Node.js backend server with a React frontend, providing a standardized way to create interactive applications that integrate seamlessly with Wave Terminal's block system.
+
+## Project Structure
+
+A typical Wave App follows this directory structure:
+
+```
+waveapp-name/
+├── describe.json # App metadata and API specification
+├── package.json # Node.js dependencies and scripts
+├── server.js # Hono backend server (Node.js)
+├── vite.config.ts # Vite build configuration
+├── tsconfig.json # TypeScript configuration
+├── index.html # HTML entry point
+├── public/ # Static assets
+└── src/
+ ├── main.tsx # React app entry point
+ ├── index.css # Tailwind CSS styles
+ └── App.tsx # Main React component (optional)
+```
+
+## Technology Stack
+
+### Backend Framework
+- **[Hono](https://hono.dev/)** - Fast, lightweight web framework for Node.js
+- **[@hono/node-server](https://github.com/honojs/node-server)** - Node.js adapter for Hono
+- **CORS support** via `hono/cors` middleware
+- **Static file serving** via `@hono/node-server/serve-static`
+
+### Frontend Framework
+- **[React 19](https://react.dev/)** - UI framework with modern features
+- **[Vite 7](https://vitejs.dev/)** - Fast build tool and dev server
+- **[TypeScript 5](https://www.typescriptlang.org/)** - Type-safe JavaScript
+- **[@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react)** - React support for Vite
+
+### Styling
+- **[Tailwind CSS v4](https://tailwindcss.com/)** - Utility-first CSS framework
+- **[@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss-vite)** - Vite plugin for Tailwind
+- **Custom CSS variables** - Wave Terminal theme integration
+
+### Development Tools
+- **[concurrently](https://github.com/open-cli-tools/concurrently)** - Run backend and frontend simultaneously
+- **TypeScript definitions** - Full type safety across the stack
+
+## Core Configuration Files
+
+### describe.json
+
+The [`describe.json`](waveapps/jwt/describe.json) file is the heart of every Wave App. It defines:
+
+- **App metadata** (name, version, description)
+- **API specification** (endpoints, schemas, actions)
+- **Configuration schema** for app settings
+- **Data schema** for app state
+- **Custom actions** the app can perform
+
+```json
+{
+ "name": "App Name",
+ "version": "1.0.0",
+ "baseurl": "/",
+ "description": "App description",
+ "actions": [
+ {
+ "name": "action-name",
+ "method": "POST",
+ "path": "/api/action",
+ "description": "Action description",
+ "inputschema": "InputSchema",
+ "outputschema": "OutputSchema"
+ }
+ ],
+ "schemas": {
+ "config": {
+ "type": "object",
+ "description": "App configuration schema",
+ "properties": {}
+ },
+ "data": {
+ "type": "object",
+ "description": "App data schema",
+ "properties": {}
+ }
+ }
+}
+```
+
+### package.json Scripts
+
+Standard scripts for Wave App development:
+
+```json
+{
+ "scripts": {
+ "start": "node server.js",
+ "dev": "concurrently \"node server.js\" \"vite\"",
+ "build": "vite build",
+ "preview": "vite preview"
+ }
+}
+```
+
+### vite.config.ts
+
+Vite configuration with Tailwind CSS and API proxy:
+
+```typescript
+import tailwindcss from "@tailwindcss/vite";
+import react from "@vitejs/plugin-react";
+import { defineConfig } from "vite";
+
+export default defineConfig({
+ plugins: [react(), tailwindcss()],
+ server: {
+ port: 5173,
+ proxy: {
+ "/api": "http://localhost:3000/",
+ },
+ },
+ build: {
+ outDir: "dist",
+ },
+});
+```
+
+## Required API Endpoints
+
+Every Wave App **MUST** implement these three endpoints:
+
+### 1. `/api/config` (GET/PUT)
+
+**GET** - Returns current app configuration
+**PUT** - Updates app configuration with new settings
+
+```javascript
+// GET /api/config
+app.get("/api/config", (c) => {
+ return c.json(appConfig);
+});
+
+// PUT /api/config
+app.put("/api/config", async (c) => {
+ try {
+ const newConfig = await c.req.json();
+ appConfig = { ...appConfig, ...newConfig };
+ return c.json(appConfig);
+ } catch (error) {
+ return c.json({ error: "Invalid config format" }, 400);
+ }
+});
+```
+
+### 2. `/api/describe` (GET)
+
+Serves the [`describe.json`](waveapps/jwt/describe.json) file containing app metadata and API specification:
+
+```javascript
+app.get("/api/describe", serveStatic({ path: "./describe.json" }));
+```
+
+### 3. `/api/data` (GET)
+
+Returns current app state/data for Wave Terminal integration:
+
+```javascript
+app.get("/api/data", (c) => {
+ return c.json(appData || {});
+});
+```
+
+## Server Architecture
+
+### Hono Server Setup
+
+Wave Apps use Hono as the backend framework with these key features:
+
+```javascript
+import { serve } from "@hono/node-server";
+import { serveStatic } from "@hono/node-server/serve-static";
+import { Hono } from "hono";
+import { cors } from "hono/cors";
+
+const app = new Hono();
+
+// CORS for frontend communication
+app.use("/*", cors());
+
+// Static file serving for built frontend
+app.use("/static/*", serveStatic({ root: "./dist" }));
+app.use("/*", serveStatic({ root: "./dist" }));
+
+// Start server on fixed port
+const server = serve({
+ fetch: app.fetch,
+ port: 3000,
+});
+```
+
+### Wave Terminal Integration
+
+Apps communicate with Wave Terminal through a messaging system:
+
+```javascript
+function sendWaveAppMessage(message) {
+ if (process.send) {
+ process.send(message);
+ } else {
+ console.log(`#waveapp${JSON.stringify(message)}`);
+ }
+}
+
+server.on("listening", () => {
+ const port = server.address().port;
+ sendWaveAppMessage({
+ type: "listening",
+ port: port,
+ });
+});
+```
+
+### State Management
+
+Apps maintain their own state for configuration and data:
+
+```javascript
+let appData = null; // Current app state
+let appConfig = {}; // App configuration
+```
+
+## Frontend Architecture
+
+### React Entry Point
+
+The frontend uses React 19 with TypeScript, typically structured as a single-page application:
+
+```typescript
+// src/main.tsx
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+
+const App: React.FC = () => {
+ // App component logic
+ return (
+
+ {/* App UI */}
+
+ );
+};
+
+ReactDOM.createRoot(document.getElementById('root')!).render();
+```
+
+### Tailwind CSS Integration
+
+Wave Apps use Tailwind CSS v4 with custom CSS variables for Wave Terminal theme integration:
+
+```css
+/* src/index.css */
+@import "https://github.com/tailwindcss";
+
+@theme {
+ --color-background: rgb(34, 34, 34);
+ --color-foreground: #f7f7f7;
+ --color-accent: rgb(88, 193, 66);
+ --color-panel: rgba(31, 33, 31, 0.5);
+ --color-border: rgba(255, 255, 255, 0.16);
+ /* ... more theme variables */
+}
+```
+
+### API Communication
+
+Frontend communicates with backend via standard fetch API:
+
+```typescript
+const response = await fetch('https://github.com/api/endpoint', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(data)
+});
+
+const result = await response.json();
+```
+
+## Development Workflow
+
+### Development Mode
+
+Run both backend and frontend in development:
+
+```bash
+npm run dev
+# Runs: concurrently "node server.js" "vite"
+```
+
+This starts:
+- **Backend server** on port 3000 (Hono)
+- **Frontend dev server** on port 5173 (Vite)
+- **API proxy** from frontend to backend
+
+### Production Build
+
+Build and serve the app:
+
+```bash
+npm run build # Build frontend to dist/
+npm start # Start production server
+```
+
+### File Structure After Build
+
+```
+waveapp-name/
+├── dist/ # Built frontend files
+│ ├── index.html
+│ ├── assets/
+│ └── static/
+├── server.js # Backend server
+└── describe.json # App metadata
+```
+
+## Integration with Wave Terminal
+
+Wave Apps integrate with Wave Terminal through:
+
+1. **Block System** - Apps run within Wave Terminal blocks
+2. **Configuration** - Apps receive config from Wave Terminal via `/api/config`
+3. **Data Exchange** - Apps expose state via `/api/data`
+4. **Actions** - Apps define custom actions in `describe.json`
+5. **Messaging** - Apps communicate status via the messaging system
+
+## Best Practices
+
+### Backend
+- Use fixed ports (3000 for backend, 5173 for dev frontend)
+- Implement proper error handling in API endpoints
+- Maintain app state in memory (or persist as needed)
+- Use CORS middleware for frontend communication
+- Serve static files from the `dist` directory
+
+### Frontend
+- Use Tailwind CSS with Wave Terminal theme variables
+- Implement proper loading and error states
+- Use TypeScript for type safety
+- Follow React best practices and hooks patterns
+- Handle API errors gracefully
+
+### Configuration
+- Define clear schemas in `describe.json`
+- Validate configuration inputs
+- Provide sensible defaults
+- Document all API endpoints and schemas
+
+### Development
+- Use `concurrently` for simultaneous backend/frontend development
+- Leverage Vite's hot reload for fast iteration
+- Test both development and production builds
+- Follow Wave Terminal's coding conventions
+
+This architecture provides a robust foundation for building interactive applications that integrate seamlessly with Wave Terminal's block-based interface while maintaining modern web development practices.
\ No newline at end of file
diff --git a/frontend/layout/tests/model.ts b/frontend/layout/tests/model.ts
index 01b043fd4b..fd67c9fae2 100644
--- a/frontend/layout/tests/model.ts
+++ b/frontend/layout/tests/model.ts
@@ -7,5 +7,6 @@ export function newLayoutTreeState(rootNode: LayoutNode): LayoutTreeState {
return {
rootNode,
generation: 0,
+ pendingBackendActions: [],
};
}
diff --git a/package.json b/package.json
index b9ff6e2c44..64409412d4 100644
--- a/package.json
+++ b/package.json
@@ -171,6 +171,7 @@
},
"packageManager": "yarn@4.6.0",
"workspaces": [
- "docs"
+ "docs",
+ "waveapps/*"
]
}
diff --git a/waveapps/jwt/describe.json b/waveapps/jwt/describe.json
new file mode 100644
index 0000000000..1241dd7270
--- /dev/null
+++ b/waveapps/jwt/describe.json
@@ -0,0 +1,50 @@
+{
+ "name": "JWT Decoder",
+ "version": "1.0.0",
+ "baseurl": "/",
+ "description": "A simple JWT token decoder that parses and displays JWT header and payload information",
+ "actions": [
+ {
+ "name": "decode",
+ "method": "POST",
+ "path": "/api/decode",
+ "description": "Decode a JWT token and return header and payload",
+ "inputschema": "DecodeRequest",
+ "outputschema": "DecodeResponse"
+ }
+ ],
+ "schemas": {
+ "config": {
+ "type": "object",
+ "description": "Configuration for JWT decoder (currently empty)",
+ "properties": {}
+ },
+ "data": {
+ "type": "object",
+ "description": "Last decoded JWT token data or error",
+ "properties": {
+ "header": { "type": "object", "description": "JWT header" },
+ "payload": { "type": "object", "description": "JWT payload" },
+ "signature": { "type": "string", "description": "JWT signature (base64url encoded)" },
+ "error": { "type": "string", "description": "Error message if decoding failed" }
+ }
+ },
+ "DecodeRequest": {
+ "type": "object",
+ "description": "Request to decode a JWT token",
+ "properties": {
+ "token": { "type": "string", "description": "JWT token to decode" }
+ },
+ "required": ["token"]
+ },
+ "DecodeResponse": {
+ "type": "object",
+ "description": "Decoded JWT token response",
+ "properties": {
+ "header": { "type": "object", "description": "JWT header" },
+ "payload": { "type": "object", "description": "JWT payload" },
+ "signature": { "type": "string", "description": "JWT signature (base64url encoded)" }
+ }
+ }
+ }
+}
diff --git a/waveapps/jwt/index.html b/waveapps/jwt/index.html
new file mode 100644
index 0000000000..6979e65070
--- /dev/null
+++ b/waveapps/jwt/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ JWT Decoder
+
+
+
+
+
+
\ No newline at end of file
diff --git a/waveapps/jwt/package.json b/waveapps/jwt/package.json
new file mode 100644
index 0000000000..fe13f454d9
--- /dev/null
+++ b/waveapps/jwt/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "jwt-decoder",
+ "version": "1.0.0",
+ "description": "Simple JWT decoder waveapp",
+ "type": "module",
+ "main": "server.js",
+ "scripts": {
+ "start": "node server.js",
+ "dev": "concurrently \"node server.js\" \"vite\"",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@hono/node-server": "^1.19.0",
+ "hono": "^4.0.0",
+ "jsonwebtoken": "^9.0.2",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0"
+ },
+ "devDependencies": {
+ "@tailwindcss/vite": "^4.1.12",
+ "@types/jsonwebtoken": "^9",
+ "@types/node": "^20.0.0",
+ "@types/react": "^19.0.0",
+ "@types/react-dom": "^19.0.0",
+ "@vitejs/plugin-react": "^5.0.0",
+ "concurrently": "^8.2.0",
+ "tailwindcss": "^4.0.0",
+ "typescript": "^5.0.0",
+ "vite": "^7.0.0"
+ },
+ "keywords": [
+ "jwt",
+ "decoder",
+ "waveapp"
+ ],
+ "author": "Wave Terminal",
+ "license": "Apache-2.0"
+}
diff --git a/waveapps/jwt/server.js b/waveapps/jwt/server.js
new file mode 100644
index 0000000000..d0cd9c0f1d
--- /dev/null
+++ b/waveapps/jwt/server.js
@@ -0,0 +1,108 @@
+import { serve } from "@hono/node-server";
+import { serveStatic } from "@hono/node-server/serve-static";
+import { Hono } from "hono";
+import { cors } from "hono/cors";
+import jwt from "jsonwebtoken";
+
+const app = new Hono();
+
+// Helper function to send messages to parent process
+function sendWaveAppMessage(message) {
+ if (process.send) {
+ process.send(message);
+ } else {
+ console.log(`#waveapp${JSON.stringify(message)}`);
+ }
+}
+
+app.use("/*", cors());
+app.use("/static/*", serveStatic({ root: "./dist" }));
+
+// State management
+let appData = null;
+let appConfig = {};
+
+// Waveapp spec handlers
+app.get("/api/config", (c) => {
+ return c.json(appConfig);
+});
+
+app.put("/api/config", async (c) => {
+ try {
+ const newConfig = await c.req.json();
+ appConfig = { ...appConfig, ...newConfig };
+ return c.json(appConfig);
+ } catch (error) {
+ return c.json({ error: "Invalid config format" }, 400);
+ }
+});
+
+app.get("/api/data", (c) => {
+ return c.json(appData || {});
+});
+
+app.get("/api/describe", serveStatic({ path: "./describe.json" }));
+
+// JWT decode endpoint
+app.post("/api/decode", async (c) => {
+ try {
+ const { token } = await c.req.json();
+
+ if (!token) {
+ const errorData = { error: "Token is required" };
+ appData = errorData;
+ return c.json(errorData, 400);
+ }
+
+ // Try to verify to get detailed parsing errors from the library
+ try {
+ jwt.verify(token, "dummy-secret", { ignoreExpiration: true, ignoreNotBefore: true });
+ } catch (verifyError) {
+ // If it's a signature error, that's expected - continue to decode
+ if (verifyError.name === "JsonWebTokenError" && verifyError.message === "invalid signature") {
+ // Token is structurally valid, just can't verify signature
+ } else {
+ // This is a real parsing/format error from the library
+ const errorData = { error: verifyError.message };
+ appData = errorData;
+ return c.json(errorData, 400);
+ }
+ }
+
+ // Decode JWT since we know it's structurally valid
+ const decoded = jwt.decode(token, { complete: true });
+
+ const result = {
+ header: decoded.header,
+ payload: decoded.payload,
+ signature: decoded.signature,
+ };
+
+ // Store the decoded data
+ appData = result;
+
+ return c.json(result);
+ } catch (error) {
+ const errorData = { error: error.message || "Failed to decode JWT token" };
+ appData = errorData;
+ return c.json(errorData, 400);
+ }
+});
+
+// Serve static files from dist directory (built by Vite)
+app.use("/*", serveStatic({ root: "./dist" }));
+
+const server = serve({
+ fetch: app.fetch,
+ port: 3000, // Fixed port to match Vite proxy config
+});
+
+server.on("listening", () => {
+ const port = server.address().port;
+ console.log(`JWT Decoder server running on port ${port}`);
+
+ sendWaveAppMessage({
+ type: "listening",
+ port: port,
+ });
+});
diff --git a/waveapps/jwt/src/index.css b/waveapps/jwt/src/index.css
new file mode 100644
index 0000000000..e718370f93
--- /dev/null
+++ b/waveapps/jwt/src/index.css
@@ -0,0 +1,62 @@
+/* Copyright 2025, Command Line Inc.
+ SPDX-License-Identifier: Apache-2.0 */
+
+@import "https://github.com/tailwindcss";
+
+@theme {
+ --color-background: rgb(34, 34, 34);
+ --color-foreground: #f7f7f7;
+ --color-white: #f7f7f7;
+ --color-muted-foreground: rgb(195, 200, 194);
+ --color-secondary: rgb(195, 200, 194);
+ --color-accent-50: rgb(236, 253, 232);
+ --color-accent-100: rgb(209, 250, 202);
+ --color-accent-200: rgb(167, 243, 168);
+ --color-accent-300: rgb(110, 231, 133);
+ --color-accent-400: rgb(88, 193, 66); /* main accent color */
+ --color-accent-500: rgb(63, 162, 51);
+ --color-accent-600: rgb(47, 133, 47);
+ --color-accent-700: rgb(34, 104, 43);
+ --color-accent-800: rgb(22, 81, 35);
+ --color-accent-900: rgb(15, 61, 29);
+ --color-error: rgb(229, 77, 46);
+ --color-warning: rgb(224, 185, 86);
+ --color-success: rgb(78, 154, 6);
+ --color-panel: rgba(31, 33, 31, 0.5);
+ --color-hover: rgba(255, 255, 255, 0.1);
+ --color-border: rgba(255, 255, 255, 0.16);
+ --color-modalbg: #232323;
+ --color-accentbg: rgba(88, 193, 66, 0.5);
+ --color-hoverbg: rgba(255, 255, 255, 0.2);
+ --color-accent: rgb(88, 193, 66);
+ --color-accenthover: rgb(118, 223, 96);
+
+ --font-sans: "Inter", sans-serif;
+ --font-mono: "Hack", monospace;
+ --font-markdown: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif,
+ "Apple Color Emoji", "Segoe UI Emoji";
+
+ --text-xxs: 10px;
+ --text-title: 18px;
+ --text-default: 14px;
+
+ --radius: 8px;
+
+ /* ANSI Colors (Default Dark Palette) */
+ --ansi-black: #757575;
+ --ansi-red: #cc685c;
+ --ansi-green: #76c266;
+ --ansi-yellow: #cbca9b;
+ --ansi-blue: #85aacb;
+ --ansi-magenta: #cc72ca;
+ --ansi-cyan: #74a7cb;
+ --ansi-white: #c1c1c1;
+ --ansi-brightblack: #727272;
+ --ansi-brightred: #cc9d97;
+ --ansi-brightgreen: #a3dd97;
+ --ansi-brightyellow: #cbcaaa;
+ --ansi-brightblue: #9ab6cb;
+ --ansi-brightmagenta: #cc8ecb;
+ --ansi-brightcyan: #b7b8cb;
+ --ansi-brightwhite: #f0f0f0;
+}
\ No newline at end of file
diff --git a/waveapps/jwt/src/main.tsx b/waveapps/jwt/src/main.tsx
new file mode 100644
index 0000000000..dd19ff1d0a
--- /dev/null
+++ b/waveapps/jwt/src/main.tsx
@@ -0,0 +1,122 @@
+import React, { useState } from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+
+interface DecodedJWT {
+ header: Record;
+ payload: Record;
+ signature: string;
+}
+
+const App: React.FC = () => {
+ const [token, setToken] = useState('');
+ const [decoded, setDecoded] = useState(null);
+ const [error, setError] = useState(null);
+ const [loading, setLoading] = useState(false);
+
+ const decodeToken = async () => {
+ if (!token.trim()) {
+ setError('Please enter a JWT token');
+ setDecoded(null);
+ return;
+ }
+
+ setLoading(true);
+ setError(null);
+
+ try {
+ const response = await fetch('https://github.com/api/decode', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({ token })
+ });
+
+ const result = await response.json();
+
+ if (!response.ok) {
+ setError(result.error || `Server error: ${response.status} ${response.statusText}`);
+ setDecoded(null);
+ return;
+ }
+
+ setDecoded(result);
+ setError(null);
+ } catch (err) {
+ if (err instanceof TypeError && err.message.includes('fetch')) {
+ setError('Network error: Unable to connect to server');
+ } else if (err instanceof SyntaxError) {
+ setError('Server response error: Invalid JSON received');
+ } else {
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
+ setError(`Failed to decode token: ${errorMessage}`);
+ }
+ setDecoded(null);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ return (
+
+
+
JWT Decoder
+
+
+ {/* Input Section */}
+
+
+
+
+
+
+
+ {error && (
+
+ {error}
+
+ )}
+
+
+ {/* Output Section */}
+
+ {/* Header */}
+
+
+
+
+ {decoded ? JSON.stringify(decoded.header, null, 2) : 'No token decoded yet'}
+
+
+
+
+ {/* Payload */}
+
+
+
+
+ {decoded ? JSON.stringify(decoded.payload, null, 2) : 'No token decoded yet'}
+
+
+
+
+
+
+
+ );
+};
+
+ReactDOM.createRoot(document.getElementById('root')!).render();
\ No newline at end of file
diff --git a/waveapps/jwt/tsconfig.json b/waveapps/jwt/tsconfig.json
new file mode 100644
index 0000000000..2a7b9b3ec1
--- /dev/null
+++ b/waveapps/jwt/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "moduleResolution": "bundler",
+ "jsx": "react-jsx",
+ "skipLibCheck": true,
+ "noEmit": true
+ },
+ "include": ["src"]
+}
\ No newline at end of file
diff --git a/waveapps/jwt/vite.config.ts b/waveapps/jwt/vite.config.ts
new file mode 100644
index 0000000000..81f0ed7d9c
--- /dev/null
+++ b/waveapps/jwt/vite.config.ts
@@ -0,0 +1,16 @@
+import tailwindcss from "@tailwindcss/vite";
+import react from "@vitejs/plugin-react";
+import { defineConfig } from "vite";
+
+export default defineConfig({
+ plugins: [react(), tailwindcss()],
+ server: {
+ port: 5173,
+ proxy: {
+ "/api": "http://localhost:3000/",
+ },
+ },
+ build: {
+ outDir: "dist",
+ },
+});
diff --git a/yarn.lock b/yarn.lock
index 6a09840112..9995119b85 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -280,7 +280,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/core@npm:^7.27.7":
+"@babel/core@npm:^7.27.7, @babel/core@npm:^7.28.3":
version: 7.28.3
resolution: "@babel/core@npm:7.28.3"
dependencies:
@@ -1276,6 +1276,28 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-transform-react-jsx-self@npm:^7.27.1":
+ version: 7.27.1
+ resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^7.27.1"
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+ checksum: 10c0/00a4f917b70a608f9aca2fb39aabe04a60aa33165a7e0105fd44b3a8531630eb85bf5572e9f242f51e6ad2fa38c2e7e780902176c863556c58b5ba6f6e164031
+ languageName: node
+ linkType: hard
+
+"@babel/plugin-transform-react-jsx-source@npm:^7.27.1":
+ version: 7.27.1
+ resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^7.27.1"
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+ checksum: 10c0/5e67b56c39c4d03e59e03ba80692b24c5a921472079b63af711b1d250fc37c1733a17069b63537f750f3e937ec44a42b1ee6a46cd23b1a0df5163b17f741f7f2
+ languageName: node
+ linkType: hard
+
"@babel/plugin-transform-react-jsx@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9"
@@ -1614,6 +1636,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/runtime@npm:^7.21.0":
+ version: 7.28.3
+ resolution: "@babel/runtime@npm:7.28.3"
+ checksum: 10c0/b360f82c2c5114f2a062d4d143d7b4ec690094764853937110585a9497977aed66c102166d0e404766c274e02a50ffb8f6d77fef7251ecf3f607f0e03e6397bc
+ languageName: node
+ linkType: hard
+
"@babel/template@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/template@npm:7.25.9"
@@ -3656,6 +3685,15 @@ __metadata:
languageName: node
linkType: hard
+"@hono/node-server@npm:^1.19.0":
+ version: 1.19.0
+ resolution: "@hono/node-server@npm:1.19.0"
+ peerDependencies:
+ hono: ^4
+ checksum: 10c0/33d7d6a1d139e449e57900533117a356efc04d26ca3cb1412e0c51c761e1eaf475bcf0b9646e46cfe589712d37c3b540223ac458577e090913bf348eebc1e01e
+ languageName: node
+ linkType: hard
+
"@humanwhocodes/config-array@npm:^0.13.0":
version: 0.13.0
resolution: "@humanwhocodes/config-array@npm:0.13.0"
@@ -4601,6 +4639,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/pluginutils@npm:1.0.0-beta.32":
+ version: 1.0.0-beta.32
+ resolution: "@rolldown/pluginutils@npm:1.0.0-beta.32"
+ checksum: 10c0/ba3582fc3c35c8eb57b0df2d22d0733b1be83d37edcc258203364773f094f58fc0cb7a056d604603573a69dd0105a466506cad467f59074e1e53d0dc26191f06
+ languageName: node
+ linkType: hard
+
"@rollup/plugin-node-resolve@npm:^16.0.1":
version: 16.0.1
resolution: "@rollup/plugin-node-resolve@npm:16.0.1"
@@ -5751,7 +5796,7 @@ __metadata:
languageName: node
linkType: hard
-"@tailwindcss/vite@npm:^4.0.17":
+"@tailwindcss/vite@npm:^4.0.17, @tailwindcss/vite@npm:^4.1.12":
version: 4.1.12
resolution: "@tailwindcss/vite@npm:4.1.12"
dependencies:
@@ -5890,7 +5935,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/babel__core@npm:^7.18.0":
+"@types/babel__core@npm:^7.18.0, @types/babel__core@npm:^7.20.5":
version: 7.20.5
resolution: "@types/babel__core@npm:7.20.5"
dependencies:
@@ -6324,6 +6369,16 @@ __metadata:
languageName: node
linkType: hard
+"@types/jsonwebtoken@npm:^9":
+ version: 9.0.10
+ resolution: "@types/jsonwebtoken@npm:9.0.10"
+ dependencies:
+ "@types/ms": "npm:*"
+ "@types/node": "npm:*"
+ checksum: 10c0/0688ac8fb75f809201cb7e18a12b9d80ce539cb9dd27e1b01e11807cb1a337059e899b8ee3abc3f2c9417f02e363a3069d9eab9ef9724b1da1f0e10713514f94
+ languageName: node
+ linkType: hard
+
"@types/keyv@npm:^3.1.4":
version: 3.1.4
resolution: "@types/keyv@npm:3.1.4"
@@ -6397,6 +6452,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/node@npm:^20.0.0":
+ version: 20.19.11
+ resolution: "@types/node@npm:20.19.11"
+ dependencies:
+ undici-types: "npm:~6.21.0"
+ checksum: 10c0/9eecc4be04f1a8afbb8f8059b322fd0bbceeb02f96669bbaa52fb0b264c2e3269432a8833ada4be7b335e18d6b438b2d2c0274f5b3f54cc2081cb7c5374a6561
+ languageName: node
+ linkType: hard
+
"@types/node@npm:^20.9.0":
version: 20.17.6
resolution: "@types/node@npm:20.17.6"
@@ -6496,6 +6560,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/react-dom@npm:^19.0.0":
+ version: 19.1.7
+ resolution: "@types/react-dom@npm:19.1.7"
+ peerDependencies:
+ "@types/react": ^19.0.0
+ checksum: 10c0/8db5751c1567552fe4e1ece9f5823b682f2994ec8d30ed34ba0ef984e3c8ace1435f8be93d02f55c350147e78ac8c4dbcd8ed2c3b6a60f575bc5374f588c51c9
+ languageName: node
+ linkType: hard
+
"@types/react-router-config@npm:*, @types/react-router-config@npm:^5.0.7":
version: 5.0.11
resolution: "@types/react-router-config@npm:5.0.11"
@@ -6548,6 +6621,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/react@npm:^19.0.0":
+ version: 19.1.11
+ resolution: "@types/react@npm:19.1.11"
+ dependencies:
+ csstype: "npm:^3.0.2"
+ checksum: 10c0/639b225c2bbcd4b8a30e1ea7a73aec81ae5b952a4c432460b48c9881c9d12e76645c9032d24f15eefae9985a12d5cb26557fe10e9850b2da0fabfb0a1e2d16bd
+ languageName: node
+ linkType: hard
+
"@types/resolve@npm:1.20.2":
version: 1.20.2
resolution: "@types/resolve@npm:1.20.2"
@@ -6914,6 +6996,22 @@ __metadata:
languageName: node
linkType: hard
+"@vitejs/plugin-react@npm:^5.0.0":
+ version: 5.0.1
+ resolution: "@vitejs/plugin-react@npm:5.0.1"
+ dependencies:
+ "@babel/core": "npm:^7.28.3"
+ "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1"
+ "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1"
+ "@rolldown/pluginutils": "npm:1.0.0-beta.32"
+ "@types/babel__core": "npm:^7.20.5"
+ react-refresh: "npm:^0.17.0"
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+ checksum: 10c0/2641171beedfc38edc5671abb47706906f9af2a79a6dfff4e946106c9550de4f83ccae41c164f3ee26a3edf07127ecc0e415fe5cddbf7abc71fbb2540016c27d
+ languageName: node
+ linkType: hard
+
"@vitest/coverage-istanbul@npm:^3.0.9":
version: 3.2.4
resolution: "@vitest/coverage-istanbul@npm:3.2.4"
@@ -8161,6 +8259,13 @@ __metadata:
languageName: node
linkType: hard
+"buffer-equal-constant-time@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "buffer-equal-constant-time@npm:1.0.1"
+ checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e
+ languageName: node
+ linkType: hard
+
"buffer-from@npm:^1.0.0":
version: 1.1.2
resolution: "buffer-from@npm:1.1.2"
@@ -8999,6 +9104,26 @@ __metadata:
languageName: node
linkType: hard
+"concurrently@npm:^8.2.0":
+ version: 8.2.2
+ resolution: "concurrently@npm:8.2.2"
+ dependencies:
+ chalk: "npm:^4.1.2"
+ date-fns: "npm:^2.30.0"
+ lodash: "npm:^4.17.21"
+ rxjs: "npm:^7.8.1"
+ shell-quote: "npm:^1.8.1"
+ spawn-command: "npm:0.0.2"
+ supports-color: "npm:^8.1.1"
+ tree-kill: "npm:^1.2.2"
+ yargs: "npm:^17.7.2"
+ bin:
+ conc: dist/bin/concurrently.js
+ concurrently: dist/bin/concurrently.js
+ checksum: 10c0/0e9683196fe9c071d944345d21d8f34aa6c0cc50c0dd897e95619f2f1c9eb4871dca851b2569da17888235b7335b4c821ca19deed35bebcd9a131ee5d247f34c
+ languageName: node
+ linkType: hard
+
"config-chain@npm:^1.1.11":
version: 1.1.13
resolution: "config-chain@npm:1.1.13"
@@ -9849,6 +9974,15 @@ __metadata:
languageName: node
linkType: hard
+"date-fns@npm:^2.30.0":
+ version: 2.30.0
+ resolution: "date-fns@npm:2.30.0"
+ dependencies:
+ "@babel/runtime": "npm:^7.21.0"
+ checksum: 10c0/e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581
+ languageName: node
+ linkType: hard
+
"dayjs@npm:^1.11.13":
version: 1.11.13
resolution: "dayjs@npm:1.11.13"
@@ -10399,6 +10533,15 @@ __metadata:
languageName: node
linkType: hard
+"ecdsa-sig-formatter@npm:1.0.11":
+ version: 1.0.11
+ resolution: "ecdsa-sig-formatter@npm:1.0.11"
+ dependencies:
+ safe-buffer: "npm:^5.0.1"
+ checksum: 10c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c
+ languageName: node
+ linkType: hard
+
"ee-first@npm:1.1.1":
version: 1.1.1
resolution: "ee-first@npm:1.1.1"
@@ -11635,7 +11778,7 @@ __metadata:
languageName: node
linkType: hard
-"fdir@npm:^6.4.6":
+"fdir@npm:^6.4.6, fdir@npm:^6.5.0":
version: 6.5.0
resolution: "fdir@npm:6.5.0"
peerDependencies:
@@ -12725,6 +12868,13 @@ __metadata:
languageName: node
linkType: hard
+"hono@npm:^4.0.0":
+ version: 4.9.4
+ resolution: "hono@npm:4.9.4"
+ checksum: 10c0/2ecea6846d6fb2f9135e1287af849c5fbafac0394b2e38b1d00d4afe00b791c20e39b6a6d8dcd6c444b97aafcf7043509f53d00960da636ce395fe91e089ede5
+ languageName: node
+ linkType: hard
+
"hosted-git-info@npm:^4.1.0":
version: 4.1.0
resolution: "hosted-git-info@npm:4.1.0"
@@ -14000,6 +14150,67 @@ __metadata:
languageName: node
linkType: hard
+"jsonwebtoken@npm:^9.0.2":
+ version: 9.0.2
+ resolution: "jsonwebtoken@npm:9.0.2"
+ dependencies:
+ jws: "npm:^3.2.2"
+ lodash.includes: "npm:^4.3.0"
+ lodash.isboolean: "npm:^3.0.3"
+ lodash.isinteger: "npm:^4.0.4"
+ lodash.isnumber: "npm:^3.0.3"
+ lodash.isplainobject: "npm:^4.0.6"
+ lodash.isstring: "npm:^4.0.1"
+ lodash.once: "npm:^4.0.0"
+ ms: "npm:^2.1.1"
+ semver: "npm:^7.5.4"
+ checksum: 10c0/d287a29814895e866db2e5a0209ce730cbc158441a0e5a70d5e940eb0d28ab7498c6bf45029cc8b479639bca94056e9a7f254e2cdb92a2f5750c7f358657a131
+ languageName: node
+ linkType: hard
+
+"jwa@npm:^1.4.1":
+ version: 1.4.2
+ resolution: "jwa@npm:1.4.2"
+ dependencies:
+ buffer-equal-constant-time: "npm:^1.0.1"
+ ecdsa-sig-formatter: "npm:1.0.11"
+ safe-buffer: "npm:^5.0.1"
+ checksum: 10c0/210a544a42ca22203e8fc538835205155ba3af6a027753109f9258bdead33086bac3c25295af48ac1981f87f9c5f941bc8f70303670f54ea7dcaafb53993d92c
+ languageName: node
+ linkType: hard
+
+"jws@npm:^3.2.2":
+ version: 3.2.2
+ resolution: "jws@npm:3.2.2"
+ dependencies:
+ jwa: "npm:^1.4.1"
+ safe-buffer: "npm:^5.0.1"
+ checksum: 10c0/e770704533d92df358adad7d1261fdecad4d7b66fa153ba80d047e03ca0f1f73007ce5ed3fbc04d2eba09ba6e7e6e645f351e08e5ab51614df1b0aa4f384dfff
+ languageName: node
+ linkType: hard
+
+"jwt-decoder@workspace:waveapps/jwt":
+ version: 0.0.0-use.local
+ resolution: "jwt-decoder@workspace:waveapps/jwt"
+ dependencies:
+ "@hono/node-server": "npm:^1.19.0"
+ "@tailwindcss/vite": "npm:^4.1.12"
+ "@types/jsonwebtoken": "npm:^9"
+ "@types/node": "npm:^20.0.0"
+ "@types/react": "npm:^19.0.0"
+ "@types/react-dom": "npm:^19.0.0"
+ "@vitejs/plugin-react": "npm:^5.0.0"
+ concurrently: "npm:^8.2.0"
+ hono: "npm:^4.0.0"
+ jsonwebtoken: "npm:^9.0.2"
+ react: "npm:^19.0.0"
+ react-dom: "npm:^19.0.0"
+ tailwindcss: "npm:^4.0.0"
+ typescript: "npm:^5.0.0"
+ vite: "npm:^7.0.0"
+ languageName: unknown
+ linkType: soft
+
"keyv@npm:^4.0.0, keyv@npm:^4.5.3":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
@@ -14288,6 +14499,20 @@ __metadata:
languageName: node
linkType: hard
+"lodash.includes@npm:^4.3.0":
+ version: 4.3.0
+ resolution: "lodash.includes@npm:4.3.0"
+ checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b
+ languageName: node
+ linkType: hard
+
+"lodash.isboolean@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "lodash.isboolean@npm:3.0.3"
+ checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7
+ languageName: node
+ linkType: hard
+
"lodash.isequal@npm:^4.5.0":
version: 4.5.0
resolution: "lodash.isequal@npm:4.5.0"
@@ -14295,6 +14520,34 @@ __metadata:
languageName: node
linkType: hard
+"lodash.isinteger@npm:^4.0.4":
+ version: 4.0.4
+ resolution: "lodash.isinteger@npm:4.0.4"
+ checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7
+ languageName: node
+ linkType: hard
+
+"lodash.isnumber@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "lodash.isnumber@npm:3.0.3"
+ checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d
+ languageName: node
+ linkType: hard
+
+"lodash.isplainobject@npm:^4.0.6":
+ version: 4.0.6
+ resolution: "lodash.isplainobject@npm:4.0.6"
+ checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb
+ languageName: node
+ linkType: hard
+
+"lodash.isstring@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "lodash.isstring@npm:4.0.1"
+ checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92
+ languageName: node
+ linkType: hard
+
"lodash.memoize@npm:^4.1.2":
version: 4.1.2
resolution: "lodash.memoize@npm:4.1.2"
@@ -14309,6 +14562,13 @@ __metadata:
languageName: node
linkType: hard
+"lodash.once@npm:^4.0.0":
+ version: 4.1.1
+ resolution: "lodash.once@npm:4.1.1"
+ checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04
+ languageName: node
+ linkType: hard
+
"lodash.uniq@npm:^4.5.0":
version: 4.5.0
resolution: "lodash.uniq@npm:4.5.0"
@@ -18125,6 +18385,17 @@ __metadata:
languageName: node
linkType: hard
+"react-dom@npm:^19.0.0":
+ version: 19.1.1
+ resolution: "react-dom@npm:19.1.1"
+ dependencies:
+ scheduler: "npm:^0.26.0"
+ peerDependencies:
+ react: ^19.1.1
+ checksum: 10c0/8c91198510521299c56e4e8d5e3a4508b2734fb5e52f29eeac33811de64e76fe586ad32c32182e2e84e070d98df67125da346c3360013357228172dbcd20bcdd
+ languageName: node
+ linkType: hard
+
"react-error-overlay@npm:^6.0.11":
version: 6.0.11
resolution: "react-error-overlay@npm:6.0.11"
@@ -18261,6 +18532,13 @@ __metadata:
languageName: node
linkType: hard
+"react-refresh@npm:^0.17.0":
+ version: 0.17.0
+ resolution: "react-refresh@npm:0.17.0"
+ checksum: 10c0/002cba940384c9930008c0bce26cac97a9d5682bc623112c2268ba0c155127d9c178a9a5cc2212d560088d60dfd503edd808669a25f9b377f316a32361d0b23c
+ languageName: node
+ linkType: hard
+
"react-router-config@npm:^5.1.1":
version: 5.1.1
resolution: "react-router-config@npm:5.1.1"
@@ -18378,6 +18656,13 @@ __metadata:
languageName: node
linkType: hard
+"react@npm:^19.0.0":
+ version: 19.1.1
+ resolution: "react@npm:19.1.1"
+ checksum: 10c0/8c9769a2dfd02e603af6445058325e6c8a24b47b185d0e461f66a6454765ddcaecb3f0a90184836c68bb509f3c38248359edbc42f0d07c23eb500a5c30c87b4e
+ languageName: node
+ linkType: hard
+
"read-binary-file-arch@npm:^1.0.6":
version: 1.0.6
resolution: "read-binary-file-arch@npm:1.0.6"
@@ -19624,7 +19909,7 @@ __metadata:
languageName: node
linkType: hard
-"rxjs@npm:^7.8.2":
+"rxjs@npm:^7.8.1, rxjs@npm:^7.8.2":
version: 7.8.2
resolution: "rxjs@npm:7.8.2"
dependencies:
@@ -19760,6 +20045,13 @@ __metadata:
languageName: node
linkType: hard
+"scheduler@npm:^0.26.0":
+ version: 0.26.0
+ resolution: "scheduler@npm:0.26.0"
+ checksum: 10c0/5b8d5bfddaae3513410eda54f2268e98a376a429931921a81b5c3a2873aab7ca4d775a8caac5498f8cbc7d0daeab947cf923dbd8e215d61671f9f4e392d34356
+ languageName: node
+ linkType: hard
+
"schema-utils@npm:2.7.0":
version: 2.7.0
resolution: "schema-utils@npm:2.7.0"
@@ -20298,6 +20590,13 @@ __metadata:
languageName: node
linkType: hard
+"spawn-command@npm:0.0.2":
+ version: 0.0.2
+ resolution: "spawn-command@npm:0.0.2"
+ checksum: 10c0/b22f2d71239e6e628a400831861ba747750bbb40c0a53323754cf7b84330b73d81e40ff1f9055e6d1971818679510208a9302e13d9ff3b32feb67e74d7a1b3ef
+ languageName: node
+ linkType: hard
+
"spdx-correct@npm:^3.0.0":
version: 3.2.0
resolution: "spdx-correct@npm:3.2.0"
@@ -20710,7 +21009,7 @@ __metadata:
languageName: node
linkType: hard
-"supports-color@npm:^8.0.0":
+"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1":
version: 8.1.1
resolution: "supports-color@npm:8.1.1"
dependencies:
@@ -20790,7 +21089,7 @@ __metadata:
languageName: node
linkType: hard
-"tailwindcss@npm:4.1.12, tailwindcss@npm:^4.1.12":
+"tailwindcss@npm:4.1.12, tailwindcss@npm:^4.0.0, tailwindcss@npm:^4.1.12":
version: 4.1.12
resolution: "tailwindcss@npm:4.1.12"
checksum: 10c0/0e43375d8de91e1c97a60ed7855f1bf02d5cac61a909439afd54462604862ee71706d812c0447a639f2ef98051a8817840b3df6847c7a1ed015f7a910240ffef
@@ -21119,6 +21418,15 @@ __metadata:
languageName: node
linkType: hard
+"tree-kill@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "tree-kill@npm:1.2.2"
+ bin:
+ tree-kill: cli.js
+ checksum: 10c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2
+ languageName: node
+ linkType: hard
+
"trim-lines@npm:^3.0.0":
version: 3.0.1
resolution: "trim-lines@npm:3.0.1"
@@ -21359,6 +21667,16 @@ __metadata:
languageName: node
linkType: hard
+"typescript@npm:^5.0.0, typescript@npm:^5.9.2":
+ version: 5.9.2
+ resolution: "typescript@npm:5.9.2"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: 10c0/cd635d50f02d6cf98ed42de2f76289701c1ec587a363369255f01ed15aaf22be0813226bff3c53e99d971f9b540e0b3cc7583dbe05faded49b1b0bed2f638a18
+ languageName: node
+ linkType: hard
+
"typescript@npm:^5.3.3":
version: 5.6.3
resolution: "typescript@npm:5.6.3"
@@ -21369,13 +21687,13 @@ __metadata:
languageName: node
linkType: hard
-"typescript@npm:^5.9.2":
+"typescript@patch:typescript@npm%3A^5.0.0#optional!builtin, typescript@patch:typescript@npm%3A^5.9.2#optional!builtin":
version: 5.9.2
- resolution: "typescript@npm:5.9.2"
+ resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 10c0/cd635d50f02d6cf98ed42de2f76289701c1ec587a363369255f01ed15aaf22be0813226bff3c53e99d971f9b540e0b3cc7583dbe05faded49b1b0bed2f638a18
+ checksum: 10c0/34d2a8e23eb8e0d1875072064d5e1d9c102e0bdce56a10a25c0b917b8aa9001a9cf5c225df12497e99da107dc379360bc138163c66b55b95f5b105b50578067e
languageName: node
linkType: hard
@@ -21389,16 +21707,6 @@ __metadata:
languageName: node
linkType: hard
-"typescript@patch:typescript@npm%3A^5.9.2#optional!builtin":
- version: 5.9.2
- resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"
- bin:
- tsc: bin/tsc
- tsserver: bin/tsserver
- checksum: 10c0/34d2a8e23eb8e0d1875072064d5e1d9c102e0bdce56a10a25c0b917b8aa9001a9cf5c225df12497e99da107dc379360bc138163c66b55b95f5b105b50578067e
- languageName: node
- linkType: hard
-
"undici-types@npm:~6.19.2, undici-types@npm:~6.19.8":
version: 6.19.8
resolution: "undici-types@npm:6.19.8"
@@ -22192,6 +22500,61 @@ __metadata:
languageName: node
linkType: hard
+"vite@npm:^7.0.0":
+ version: 7.1.3
+ resolution: "vite@npm:7.1.3"
+ dependencies:
+ esbuild: "npm:^0.25.0"
+ fdir: "npm:^6.5.0"
+ fsevents: "npm:~2.3.3"
+ picomatch: "npm:^4.0.3"
+ postcss: "npm:^8.5.6"
+ rollup: "npm:^4.43.0"
+ tinyglobby: "npm:^0.2.14"
+ peerDependencies:
+ "@types/node": ^20.19.0 || >=22.12.0
+ jiti: ">=1.21.0"
+ less: ^4.0.0
+ lightningcss: ^1.21.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: ">=0.54.8"
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ peerDependenciesMeta:
+ "@types/node":
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+ bin:
+ vite: bin/vite.js
+ checksum: 10c0/a0aa418beab80673dc9a3e9d1fa49472955d6ef9d41a4c9c6bd402953f411346f612864dae267adfb2bb8ceeb894482369316ffae5816c84fd45990e352b727d
+ languageName: node
+ linkType: hard
+
"vitest@npm:^3.0.9":
version: 3.2.4
resolution: "vitest@npm:3.2.4"
@@ -23001,7 +23364,7 @@ __metadata:
languageName: node
linkType: hard
-"yargs@npm:^17.0.1, yargs@npm:^17.6.2":
+"yargs@npm:^17.0.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2":
version: 17.7.2
resolution: "yargs@npm:17.7.2"
dependencies: