mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-06 08:18:39 +00:00
More progress
This commit is contained in:
parent
5a57c3aa82
commit
52ffbf6b71
29 changed files with 957 additions and 69 deletions
|
|
@ -5,6 +5,7 @@ import pluginReactHooks from "eslint-plugin-react-hooks"
|
|||
import pluginReact from "eslint-plugin-react"
|
||||
import globals from "globals"
|
||||
import pluginNext from "@next/eslint-plugin-next"
|
||||
|
||||
import { config as baseConfig } from "./base.js"
|
||||
|
||||
/**
|
||||
|
|
|
|||
14
benchmark/config/typescript/cjs.json
Normal file
14
benchmark/config/typescript/cjs.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"compilerOptions": {
|
||||
"module": "CommonJS",
|
||||
"moduleResolution": "Node",
|
||||
"esModuleInterop": true,
|
||||
"target": "ES2022",
|
||||
"lib": ["ES2022", "ESNext.Disposable", "DOM"],
|
||||
"sourceMap": true,
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"useUnknownInCatchVariables": false
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,9 @@
|
|||
"lint": "turbo lint",
|
||||
"check-types": "turbo check-types",
|
||||
"format": "turbo format",
|
||||
"build": "turbo build",
|
||||
"build:extension": "cd .. && npm run vscode-test",
|
||||
"build:runner": "turbo build --filter @benchmark/runner",
|
||||
"cli": "pnpm --filter @benchmark/cli dev",
|
||||
"web": "pnpm --filter @benchmark/web dev"
|
||||
},
|
||||
|
|
@ -15,6 +18,7 @@
|
|||
"globals": "^16.0.0",
|
||||
"prettier": "^3.5.3",
|
||||
"rimraf": "^6.0.1",
|
||||
"tsup": "^8.4.0",
|
||||
"tsx": "^4.19.3",
|
||||
"turbo": "^2.4.4",
|
||||
"typescript": "^5",
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
"lint": "eslint src --ext ts --max-warnings=0",
|
||||
"check-types": "tsc --noEmit",
|
||||
"format": "prettier --write src",
|
||||
"build": "pnpm --filter @benchmark/client build",
|
||||
"dev": "dotenvx run -f ../../.env -- tsx src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import { type Language, languages, type Run, findRun, createRun, getTask } from
|
|||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
const extensionDevelopmentPath = path.resolve(__dirname, "../../../..")
|
||||
const extensionTestsPath = path.resolve(extensionDevelopmentPath, "benchmark/packages/runner/dist/run.js")
|
||||
const extensionTestsPath = path.resolve(extensionDevelopmentPath, "benchmark/packages/runner/dist")
|
||||
const exercisesPath = path.resolve(extensionDevelopmentPath, "benchmark/exercises")
|
||||
|
||||
export const isLanguage = (language: string): language is Language => languages.includes(language as Language)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,10 @@
|
|||
"type": "module",
|
||||
"packageManager": "pnpm@10.6.5",
|
||||
"exports": {
|
||||
".": "./src/index.ts"
|
||||
".": {
|
||||
"import": "./src/index.ts",
|
||||
"require": "./dist/index.cjs"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint src --ext ts --max-warnings=0",
|
||||
|
|
|
|||
|
|
@ -4,10 +4,17 @@
|
|||
"private": true,
|
||||
"type": "module",
|
||||
"packageManager": "pnpm@10.6.5",
|
||||
"exports": {
|
||||
".": {
|
||||
"import": "./src/index.ts",
|
||||
"require": "./dist/index.cjs"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint src --ext ts --max-warnings=0",
|
||||
"check-types": "tsc --noEmit",
|
||||
"format": "prettier --write src",
|
||||
"build": "tsup",
|
||||
"test:server": "tsx scripts/server.ts",
|
||||
"test:client": "tsx scripts/client.ts"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ async function main(socketPath: string) {
|
|||
try {
|
||||
const startTime = Date.now()
|
||||
const client = new IpcClient(socketPath)
|
||||
client.connect()
|
||||
|
||||
while (!client.isConnected) {
|
||||
if (Date.now() - startTime > 5000) {
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
import { IpcServer } from "../src/ipcServer"
|
||||
import { ServerMessageType } from "../src/types"
|
||||
|
||||
async function main() {
|
||||
async function main(socketPath: string) {
|
||||
try {
|
||||
const server = new IpcServer()
|
||||
const server = new IpcServer(socketPath)
|
||||
server.listen()
|
||||
console.log(`listening @ ${server.socketPath}`)
|
||||
|
||||
while (server.isListening) {
|
||||
server.broadcast({ type: ServerMessageType.Message, data: { message: "hello" } })
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000))
|
||||
}
|
||||
|
||||
|
|
@ -17,4 +19,9 @@ async function main() {
|
|||
}
|
||||
}
|
||||
|
||||
main()
|
||||
if (!process.argv[2]) {
|
||||
console.error("Usage: npx tsx scripts/client.ts <socketPath>")
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
main(process.argv[2])
|
||||
|
|
|
|||
4
benchmark/packages/ipc/src/index.ts
Normal file
4
benchmark/packages/ipc/src/index.ts
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
export { IpcClient } from "./ipcClient.js"
|
||||
export { IpcServer } from "./ipcServer.js"
|
||||
|
||||
export * from "./types.js"
|
||||
|
|
@ -1,17 +1,27 @@
|
|||
import EventEmitter from "node:events"
|
||||
import ipc from "node-ipc"
|
||||
|
||||
import { ClientMessage, ClientMessageType, ServerMessageType, serverMessageSchema } from "./types.js"
|
||||
import { ClientMessage, ClientMessageType, ServerMessage, ServerMessageType, serverMessageSchema } from "./types.js"
|
||||
|
||||
export class IpcClient {
|
||||
export interface IpcClientEvents {
|
||||
connect: []
|
||||
message: [data: ServerMessage]
|
||||
disconnect: []
|
||||
}
|
||||
|
||||
export class IpcClient extends EventEmitter<IpcClientEvents> {
|
||||
private readonly _socketPath: string
|
||||
private readonly _log: (...args: unknown[]) => void
|
||||
|
||||
private _isConnected = false
|
||||
private _clientId?: string
|
||||
|
||||
constructor(socketPath: string) {
|
||||
this._socketPath = socketPath
|
||||
}
|
||||
constructor(socketPath: string, log = console.log) {
|
||||
super()
|
||||
|
||||
this._socketPath = socketPath
|
||||
this._log = log
|
||||
|
||||
connect() {
|
||||
ipc.config.silent = true
|
||||
|
||||
ipc.connectTo("benchmarkServer", this.socketPath, () => {
|
||||
|
|
@ -22,20 +32,25 @@ export class IpcClient {
|
|||
}
|
||||
|
||||
private onConnect(args: unknown) {
|
||||
console.log("[client#onConnect]", args)
|
||||
if (this._isConnected) {
|
||||
return
|
||||
}
|
||||
|
||||
this.log("[client#onConnect]", args)
|
||||
this._isConnected = true
|
||||
this.emit("connect")
|
||||
}
|
||||
|
||||
private onMessage(data: unknown) {
|
||||
if (typeof data !== "object") {
|
||||
console.log("[client#onMessage] invalid data", data)
|
||||
this._log("[client#onMessage] invalid data", data)
|
||||
return
|
||||
}
|
||||
|
||||
const result = serverMessageSchema.safeParse(data)
|
||||
|
||||
if (!result.success) {
|
||||
console.log("[client#onMessage] invalid payload", result.error)
|
||||
this.log("[client#onMessage] invalid payload", result.error)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -43,24 +58,35 @@ export class IpcClient {
|
|||
|
||||
switch (payload.type) {
|
||||
case ServerMessageType.Hello:
|
||||
console.log(`[client#Hello] ${payload.data.clientId}`)
|
||||
this.log(`[client#Hello] ${payload.data.clientId}`)
|
||||
this._clientId = payload.data.clientId
|
||||
break
|
||||
case ServerMessageType.Pong:
|
||||
console.log(`[client#Pong]`)
|
||||
this.log(`[client#Pong]`)
|
||||
break
|
||||
}
|
||||
|
||||
this.emit("message", payload)
|
||||
}
|
||||
|
||||
private onDisconnect(args: unknown) {
|
||||
console.log("[client#onDisconnect]", args)
|
||||
if (!this._isConnected) {
|
||||
return
|
||||
}
|
||||
|
||||
this.log("[client#onDisconnect]", args)
|
||||
this._isConnected = false
|
||||
this.emit("disconnect")
|
||||
}
|
||||
|
||||
public sendMessage(message: ClientMessage) {
|
||||
ipc.of.benchmarkServer?.emit("message", message)
|
||||
}
|
||||
|
||||
private log(...args: unknown[]) {
|
||||
this._log(...args)
|
||||
}
|
||||
|
||||
public ping() {
|
||||
if (!this.isReady) {
|
||||
return false
|
||||
|
|
@ -70,6 +96,15 @@ export class IpcClient {
|
|||
return true
|
||||
}
|
||||
|
||||
public disconnect() {
|
||||
try {
|
||||
ipc.disconnect("benchmarkServer")
|
||||
// @TODO: Should we set _disconnect here?
|
||||
} catch (error) {
|
||||
this.log("[client#disconnect] error disconnecting", error)
|
||||
}
|
||||
}
|
||||
|
||||
public get socketPath() {
|
||||
return this._socketPath
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,31 +1,32 @@
|
|||
import { Socket } from "node:net"
|
||||
import ipc from "node-ipc"
|
||||
import * as os from "node:os"
|
||||
import * as path from "node:path"
|
||||
import * as crypto from "node:crypto"
|
||||
|
||||
import ipc from "node-ipc"
|
||||
|
||||
import { ClientMessageType, ServerMessage, ServerMessageType, clientMessageSchema } from "./types.js"
|
||||
|
||||
export class IpcServer {
|
||||
private _isListening = false
|
||||
private _socketId: string
|
||||
private _clients: Map<string, Socket>
|
||||
private readonly _socketPath: string
|
||||
private readonly _log: (...args: unknown[]) => void
|
||||
private readonly _clients: Map<string, Socket>
|
||||
|
||||
constructor() {
|
||||
this._socketId = "benchmark"
|
||||
private _isListening = false
|
||||
|
||||
constructor(socketPath: string, log = console.log) {
|
||||
this._socketPath = socketPath
|
||||
this._log = log
|
||||
this._clients = new Map()
|
||||
}
|
||||
|
||||
public listen() {
|
||||
this._isListening = true
|
||||
|
||||
ipc.config.id = this._socketId
|
||||
ipc.config.silent = true
|
||||
|
||||
ipc.serve(this.socketPath, () => {
|
||||
ipc.server.on("connect", (socket) => this.onConnect(socket))
|
||||
ipc.server.on("message", (data, socket) => this.onMessage(data, socket))
|
||||
ipc.server.on("socket.disconnected", (socket, id) => this.onDisconnect(socket, id))
|
||||
ipc.server.on("socket.disconnected", (socket) => this.onDisconnect(socket))
|
||||
})
|
||||
|
||||
ipc.server.start()
|
||||
|
|
@ -33,21 +34,21 @@ export class IpcServer {
|
|||
|
||||
private onConnect(socket: Socket) {
|
||||
const clientId = crypto.randomBytes(6).toString("hex")
|
||||
console.log(`[server#onConnect]`, clientId)
|
||||
this._clients.set(clientId, socket)
|
||||
this.sendMessage(socket, { type: ServerMessageType.Hello, data: { clientId } })
|
||||
this.log(`[server#onConnect] clientId = ${clientId}, # clients = ${this._clients.size}`)
|
||||
this.send(socket, { type: ServerMessageType.Hello, data: { clientId } })
|
||||
}
|
||||
|
||||
private onMessage(data: unknown, socket: Socket) {
|
||||
if (typeof data !== "object") {
|
||||
console.log("[server#onMessage] invalid data", data)
|
||||
this.log("[server#onMessage] invalid data", data)
|
||||
return
|
||||
}
|
||||
|
||||
const result = clientMessageSchema.safeParse(data)
|
||||
|
||||
if (!result.success) {
|
||||
console.log("[server#onMessage] invalid payload", result.error)
|
||||
this.log("[server#onMessage] invalid payload", result.error)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -55,25 +56,45 @@ export class IpcServer {
|
|||
|
||||
switch (payload.type) {
|
||||
case ClientMessageType.Message:
|
||||
console.log(`[server#Message] ${payload.data.message}`)
|
||||
this.log(`[server#Message] ${payload.data.message}`)
|
||||
break
|
||||
case ClientMessageType.Ping:
|
||||
console.log(`[server#Ping]`)
|
||||
this.sendMessage(socket, { type: ServerMessageType.Pong })
|
||||
this.log(`[server#Ping]`)
|
||||
this.send(socket, { type: ServerMessageType.Pong })
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
private onDisconnect(socket: Socket, destroyedSocketID: string) {
|
||||
console.log(`[server#socket.disconnected] ${destroyedSocketID}`)
|
||||
private onDisconnect(destroyedSocket: Socket) {
|
||||
let destroyedClientId: string | undefined
|
||||
|
||||
for (const [clientId, socket] of this._clients.entries()) {
|
||||
if (socket === destroyedSocket) {
|
||||
destroyedClientId = clientId
|
||||
this._clients.delete(clientId)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
this.log(`[server#socket.disconnected] clientId = ${destroyedClientId}, # clients = ${this._clients.size}`)
|
||||
}
|
||||
|
||||
public sendMessage(socket: Socket, message: ServerMessage) {
|
||||
private log(...args: unknown[]) {
|
||||
this._log(...args)
|
||||
}
|
||||
|
||||
public broadcast(message: ServerMessage) {
|
||||
this.log("[server#broadcast] message =", message)
|
||||
ipc.server.broadcast("message", message)
|
||||
}
|
||||
|
||||
public send(socket: Socket, message: ServerMessage) {
|
||||
this.log("[server#send] message =", message)
|
||||
ipc.server.emit(socket, "message", message)
|
||||
}
|
||||
|
||||
public get socketPath() {
|
||||
return path.join(os.tmpdir(), `${this._socketId}.sock`)
|
||||
return this._socketPath
|
||||
}
|
||||
|
||||
public get isListening() {
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import { z } from "zod"
|
|||
*/
|
||||
|
||||
export enum ClientMessageType {
|
||||
Message = "message",
|
||||
Ping = "ping",
|
||||
Message = "message",
|
||||
}
|
||||
|
||||
export const clientMessageSchema = z.discriminatedUnion("type", [
|
||||
|
|
@ -34,6 +34,8 @@ export type ClientMessage = z.infer<typeof clientMessageSchema>
|
|||
export enum ServerMessageType {
|
||||
Hello = "hello",
|
||||
Pong = "pong",
|
||||
Message = "message",
|
||||
Data = "data",
|
||||
}
|
||||
|
||||
export const serverMessageSchema = z.discriminatedUnion("type", [
|
||||
|
|
@ -46,6 +48,16 @@ export const serverMessageSchema = z.discriminatedUnion("type", [
|
|||
z.object({
|
||||
type: z.literal(ServerMessageType.Pong),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(ServerMessageType.Message),
|
||||
data: z.object({
|
||||
message: z.string(),
|
||||
}),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(ServerMessageType.Data),
|
||||
data: z.unknown(),
|
||||
}),
|
||||
])
|
||||
|
||||
export type ServerMessage = z.infer<typeof serverMessageSchema>
|
||||
|
|
|
|||
8
benchmark/packages/ipc/tsconfig.cjs.json
Normal file
8
benchmark/packages/ipc/tsconfig.cjs.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"extends": "@benchmark/typescript-config/cjs.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "dist"
|
||||
},
|
||||
"include": ["src"],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
12
benchmark/packages/ipc/tsup.config.ts
Normal file
12
benchmark/packages/ipc/tsup.config.ts
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import { defineConfig } from "tsup"
|
||||
|
||||
export default defineConfig({
|
||||
entry: ["src/index.ts"],
|
||||
format: ["cjs"],
|
||||
dts: true,
|
||||
sourcemap: true,
|
||||
clean: true,
|
||||
outExtension: ({ format }) => ({ js: format === "cjs" ? ".cjs" : ".js" }),
|
||||
tsconfig: "tsconfig.cjs.json",
|
||||
noExternal: ["node-ipc", "zod"],
|
||||
})
|
||||
27
benchmark/packages/runner/README.md
Normal file
27
benchmark/packages/runner/README.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Extension Runner
|
||||
|
||||
VS Code provides two CLI parameters for running extension tests, `--extensionDevelopmentPath` and `--extensionTestsPath`.
|
||||
|
||||
For example:
|
||||
|
||||
```sh
|
||||
# - Launches VS Code Extension Host
|
||||
# - Loads the extension at <EXTENSION-ROOT-PATH>
|
||||
# - Executes the test runner script at <TEST-RUNNER-SCRIPT-PATH>
|
||||
code \
|
||||
--extensionDevelopmentPath=<EXTENSION-ROOT-PATH> \
|
||||
--extensionTestsPath=<TEST-RUNNER-SCRIPT-PATH>
|
||||
```
|
||||
|
||||
If you make extension code changes then you need to re-build it so that `extensionDevelopmentPath` has the latest version transpiled:
|
||||
|
||||
```sh
|
||||
# From the repository root:
|
||||
pnpm build:extension
|
||||
```
|
||||
|
||||
If you make changes to `@benchmark/runner` or any of its dependencies then you should rebuild it:
|
||||
|
||||
```sh
|
||||
pnpm build:runner
|
||||
```
|
||||
|
|
@ -7,11 +7,14 @@
|
|||
"lint": "eslint src --ext ts --max-warnings=0",
|
||||
"check-types": "tsc --noEmit",
|
||||
"format": "prettier --write src",
|
||||
"build": "rimraf dist && tsc",
|
||||
"vscode-test": "pnpm build && cd ../../.. && npm run vscode-test"
|
||||
"build": "tsup"
|
||||
},
|
||||
"dependencies": {
|
||||
"@benchmark/ipc": "workspace:^"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@benchmark/eslint-config": "workspace:^",
|
||||
"@benchmark/typescript-config": "workspace:^",
|
||||
"@types/vscode": "^1.98.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,12 @@ import * as path from "path"
|
|||
|
||||
import * as vscode from "vscode"
|
||||
|
||||
import { RooCodeAPI, TokenUsage } from "../../../../src/exports/roo-code"
|
||||
import { RooCodeAPI } from "../../../../src/exports/roo-code.js"
|
||||
|
||||
import { waitUntilReady, waitUntilCompleted, sleep } from "./utils"
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
const { IpcServer, ServerMessageType } = require("@benchmark/ipc")
|
||||
|
||||
import { waitUntilReady, waitUntilCompleted, sleep } from "./utils.js"
|
||||
|
||||
export async function run() {
|
||||
/**
|
||||
|
|
@ -70,7 +73,38 @@ export async function run() {
|
|||
.getConfiguration("roo-cline")
|
||||
.update("allowedCommands", ["*"], vscode.ConfigurationTarget.Global)
|
||||
|
||||
await sleep(2_000)
|
||||
await sleep(1_000)
|
||||
|
||||
/**
|
||||
* Start the IPC server.
|
||||
*/
|
||||
|
||||
const server = new IpcServer(`/tmp/benchmark-${runId}.sock`)
|
||||
server.listen()
|
||||
|
||||
api.on("message", (message) => {
|
||||
server.broadcast({ type: ServerMessageType.Data, data: message })
|
||||
})
|
||||
|
||||
api.on("taskStarted", (taskId) => {
|
||||
server.broadcast({ type: ServerMessageType.Data, data: { taskId } })
|
||||
})
|
||||
|
||||
api.on("taskPaused", (taskId) => {
|
||||
server.broadcast({ type: ServerMessageType.Data, data: { taskId } })
|
||||
})
|
||||
|
||||
api.on("taskUnpaused", (taskId) => {
|
||||
server.broadcast({ type: ServerMessageType.Data, data: { taskId } })
|
||||
})
|
||||
|
||||
api.on("taskAskResponded", (taskId) => {
|
||||
server.broadcast({ type: ServerMessageType.Data, data: { taskId } })
|
||||
})
|
||||
|
||||
api.on("taskTokenUsageUpdated", (taskId, usage) => {
|
||||
server.broadcast({ type: ServerMessageType.Data, data: { taskId, usage } })
|
||||
})
|
||||
|
||||
/**
|
||||
* Run the task and wait up to 10 minutes for it to complete.
|
||||
|
|
@ -78,8 +112,7 @@ export async function run() {
|
|||
|
||||
const startTime = Date.now()
|
||||
const taskId = await api.startNewTask(prompt)
|
||||
|
||||
let usage: TokenUsage | undefined = undefined
|
||||
let usage
|
||||
|
||||
try {
|
||||
usage = await waitUntilCompleted({ api, taskId, timeout: 5 * 60 * 1_000 }) // 5m
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import * as vscode from "vscode"
|
||||
|
||||
import { RooCodeAPI, TokenUsage } from "../../../../src/exports/roo-code"
|
||||
import { RooCodeAPI, TokenUsage } from "../../../../src/exports/roo-code.js"
|
||||
|
||||
type WaitForOptions = {
|
||||
timeout?: number
|
||||
|
|
|
|||
|
|
@ -1,15 +1,8 @@
|
|||
{
|
||||
"extends": "@benchmark/typescript-config/base.json",
|
||||
"compilerOptions": {
|
||||
"module": "CommonJS",
|
||||
"moduleResolution": "Node",
|
||||
"esModuleInterop": true,
|
||||
"target": "ES2022",
|
||||
"lib": ["ES2022", "ESNext.Disposable", "DOM"],
|
||||
"sourceMap": true,
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"useUnknownInCatchVariables": false,
|
||||
"outDir": "dist"
|
||||
},
|
||||
"include": ["src", "../../../../src/exports/roo-code.d.ts"]
|
||||
"include": ["src"],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
|
|
|||
11
benchmark/packages/runner/tsup.config.ts
Normal file
11
benchmark/packages/runner/tsup.config.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import { defineConfig } from "tsup"
|
||||
|
||||
export default defineConfig({
|
||||
entry: ["src/index.ts"],
|
||||
format: ["cjs"],
|
||||
dts: true,
|
||||
sourcemap: true,
|
||||
clean: true,
|
||||
tsconfig: "tsconfig.json",
|
||||
external: ["vscode"],
|
||||
})
|
||||
|
|
@ -1,4 +1,17 @@
|
|||
import { nextJsConfig } from "@benchmark/eslint-config/next-js"
|
||||
|
||||
/** @type {import("eslint").Linter.Config} */
|
||||
export default [...nextJsConfig]
|
||||
export default [
|
||||
...nextJsConfig,
|
||||
{
|
||||
rules: {
|
||||
"no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
caughtErrorsIgnorePattern: "^_",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
|
|
|||
|
|
@ -4,15 +4,16 @@
|
|||
"private": true,
|
||||
"packageManager": "pnpm@10.6.5",
|
||||
"scripts": {
|
||||
"dev": "dotenvx run -f ../../.env -- next dev --turbopack",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"check-types": "tsc -b",
|
||||
"dev": "dotenvx run -f ../../.env -- next dev --turbopack",
|
||||
"build": "echo 'NOP' || next build",
|
||||
"start": "next start",
|
||||
"format": "prettier --write src"
|
||||
},
|
||||
"dependencies": {
|
||||
"@benchmark/db": "workspace:^",
|
||||
"@benchmark/ipc": "workspace:^",
|
||||
"@hookform/resolvers": "^4.1.3",
|
||||
"@radix-ui/react-label": "^2.1.2",
|
||||
"@radix-ui/react-select": "^2.1.6",
|
||||
|
|
|
|||
35
benchmark/packages/web/src/app/api/runs/[id]/stream/route.ts
Normal file
35
benchmark/packages/web/src/app/api/runs/[id]/stream/route.ts
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import type { NextRequest } from "next/server"
|
||||
|
||||
import { findRun } from "@benchmark/db"
|
||||
import { IpcClient } from "@benchmark/ipc"
|
||||
|
||||
import { SSEStream } from "@/lib/server/sse-stream"
|
||||
|
||||
export const dynamic = "force-dynamic"
|
||||
|
||||
export async function GET(request: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params
|
||||
const stream = new SSEStream()
|
||||
const run = await findRun(Number(id))
|
||||
const client = new IpcClient(`/tmp/benchmark-${run.id}.sock`, () => {})
|
||||
|
||||
const write = async (data: string | object) => {
|
||||
const success = await stream.write(data)
|
||||
|
||||
if (!success) {
|
||||
client.disconnect()
|
||||
}
|
||||
}
|
||||
|
||||
client.on("connect", () => write("connect"))
|
||||
client.on("disconnect", () => write("disconnect"))
|
||||
client.on("message", write)
|
||||
|
||||
request.signal.addEventListener("abort", () => {
|
||||
console.log(`abort`)
|
||||
client.disconnect()
|
||||
stream.close().catch(() => {})
|
||||
})
|
||||
|
||||
return stream.getResponse()
|
||||
}
|
||||
|
|
@ -1,5 +1,14 @@
|
|||
import { findRun } from "@benchmark/db"
|
||||
|
||||
import { ShowRun } from "./show-run"
|
||||
|
||||
export default async function Page() {
|
||||
return <ShowRun />
|
||||
export default async function Page({ params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params
|
||||
const run = await findRun(Number(id))
|
||||
|
||||
if (!run) {
|
||||
return <div>Run not found</div>
|
||||
}
|
||||
|
||||
return <ShowRun run={run} />
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,18 @@
|
|||
export async function ShowRun() {
|
||||
return <div>Show Run</div>
|
||||
"use client"
|
||||
|
||||
import { useCallback } from "react"
|
||||
|
||||
import { Run } from "@benchmark/db"
|
||||
|
||||
import { useEventSource } from "@/hooks/use-event-source"
|
||||
|
||||
export function ShowRun({ run }: { run: Run }) {
|
||||
const url = `/api/runs/${run.id}/stream`
|
||||
const onMessage = useCallback(({ data }: MessageEvent) => console.log(data), [])
|
||||
const status = useEventSource({ url, onMessage })
|
||||
return (
|
||||
<div>
|
||||
Show Run: {run.id} | {status}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
63
benchmark/packages/web/src/hooks/use-event-source.ts
Normal file
63
benchmark/packages/web/src/hooks/use-event-source.ts
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import { useCallback, useEffect, useRef, useState } from "react"
|
||||
|
||||
export type EventSourceStatus = "init" | "open" | "error"
|
||||
|
||||
export type EventSourceEvent = Event & { data: string }
|
||||
|
||||
type UseEventSourceOptions = {
|
||||
url: string
|
||||
withCredentials?: boolean
|
||||
onMessage: (event: MessageEvent) => void
|
||||
}
|
||||
|
||||
export function useEventSource({ url, withCredentials, onMessage }: UseEventSourceOptions) {
|
||||
const sourceRef = useRef<EventSource | null>(null)
|
||||
const statusRef = useRef<EventSourceStatus>("init")
|
||||
const [status, setStatus] = useState<EventSourceStatus>("init")
|
||||
const handleMessage = useCallback((event: MessageEvent) => onMessage(event), [onMessage])
|
||||
|
||||
const createEventSource = useCallback(() => {
|
||||
console.log("connecting")
|
||||
sourceRef.current = new EventSource(url, { withCredentials })
|
||||
|
||||
sourceRef.current.onopen = (event) => {
|
||||
console.log("onopen", event)
|
||||
statusRef.current = "open"
|
||||
setStatus("open")
|
||||
}
|
||||
|
||||
sourceRef.current.onmessage = (event) => {
|
||||
// console.log("onmessage", event)
|
||||
handleMessage(event)
|
||||
}
|
||||
|
||||
sourceRef.current.onerror = (event) => {
|
||||
console.log("onerror", event)
|
||||
statusRef.current = "error"
|
||||
setStatus("error")
|
||||
// sourceRef.current?.close()
|
||||
// sourceRef.current = null
|
||||
}
|
||||
}, [url, withCredentials, handleMessage])
|
||||
|
||||
useEffect(() => {
|
||||
createEventSource()
|
||||
|
||||
setTimeout(() => {
|
||||
if (statusRef.current === "init") {
|
||||
console.log("timeout -> close")
|
||||
sourceRef.current?.close()
|
||||
sourceRef.current = null
|
||||
createEventSource()
|
||||
}
|
||||
}, 100)
|
||||
|
||||
return () => {
|
||||
console.log("unmounting -> close")
|
||||
sourceRef.current?.close()
|
||||
sourceRef.current = null
|
||||
}
|
||||
}, [createEventSource])
|
||||
|
||||
return status
|
||||
}
|
||||
37
benchmark/packages/web/src/lib/server/sse-stream.ts
Normal file
37
benchmark/packages/web/src/lib/server/sse-stream.ts
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
export class SSEStream {
|
||||
private readonly _stream: TransformStream
|
||||
private readonly _writer: WritableStreamDefaultWriter
|
||||
private readonly _encoder: TextEncoder
|
||||
|
||||
constructor() {
|
||||
this._stream = new TransformStream()
|
||||
this._writer = this._stream.writable.getWriter()
|
||||
this._encoder = new TextEncoder()
|
||||
}
|
||||
|
||||
public async write(data: string | object) {
|
||||
try {
|
||||
const buffer = typeof data === "object" ? JSON.stringify(data) : data
|
||||
await this._writer.write(this._encoder.encode(`data: ${buffer}\n\n`))
|
||||
return true
|
||||
} catch (error) {
|
||||
console.error("[SSEStream#write]", error)
|
||||
this.close().catch(() => {})
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
public close() {
|
||||
return this._writer.close()
|
||||
}
|
||||
|
||||
public getResponse() {
|
||||
return new Response(this._stream.readable, {
|
||||
headers: {
|
||||
"Content-Type": "text/event-stream",
|
||||
Connection: "keep-alive",
|
||||
"Cache-Control": "no-cache, no-transform",
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
526
benchmark/pnpm-lock.yaml
generated
526
benchmark/pnpm-lock.yaml
generated
|
|
@ -26,6 +26,9 @@ importers:
|
|||
rimraf:
|
||||
specifier: ^6.0.1
|
||||
version: 6.0.1
|
||||
tsup:
|
||||
specifier: ^8.4.0
|
||||
version: 8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)
|
||||
tsx:
|
||||
specifier: ^4.19.3
|
||||
version: 4.19.3
|
||||
|
|
@ -149,10 +152,20 @@ importers:
|
|||
version: 9.2.3
|
||||
|
||||
packages/runner:
|
||||
dependencies:
|
||||
'@benchmark/ipc':
|
||||
specifier: workspace:^
|
||||
version: link:../ipc
|
||||
node-ipc:
|
||||
specifier: ^12.0.0
|
||||
version: 12.0.0
|
||||
devDependencies:
|
||||
'@benchmark/eslint-config':
|
||||
specifier: workspace:^
|
||||
version: link:../../config/eslint
|
||||
'@benchmark/typescript-config':
|
||||
specifier: workspace:^
|
||||
version: link:../../config/typescript
|
||||
'@types/vscode':
|
||||
specifier: ^1.98.0
|
||||
version: 1.98.0
|
||||
|
|
@ -162,6 +175,9 @@ importers:
|
|||
'@benchmark/db':
|
||||
specifier: workspace:^
|
||||
version: link:../db
|
||||
'@benchmark/ipc':
|
||||
specifier: workspace:^
|
||||
version: link:../ipc
|
||||
'@hookform/resolvers':
|
||||
specifier: ^4.1.3
|
||||
version: 4.1.3(react-hook-form@7.54.2(react@19.0.0))
|
||||
|
|
@ -875,6 +891,24 @@ packages:
|
|||
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.8':
|
||||
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
'@jridgewell/resolve-uri@3.1.2':
|
||||
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
'@jridgewell/set-array@1.2.1':
|
||||
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.0':
|
||||
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
|
||||
|
||||
'@jridgewell/trace-mapping@0.3.25':
|
||||
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
||||
|
||||
'@libsql/client@0.14.0':
|
||||
resolution: {integrity: sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q==}
|
||||
|
||||
|
|
@ -1045,6 +1079,10 @@ packages:
|
|||
'@petamoriken/float16@3.9.2':
|
||||
resolution: {integrity: sha512-VgffxawQde93xKxT3qap3OH+meZf7VaSB5Sqd4Rqc+FP5alWbpOyan/7tRbOAvynjpG3GpdtAuGU/NdhQpmrog==}
|
||||
|
||||
'@pkgjs/parseargs@0.11.0':
|
||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
'@radix-ui/number@1.1.0':
|
||||
resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==}
|
||||
|
||||
|
|
@ -1301,6 +1339,101 @@ packages:
|
|||
'@radix-ui/rect@1.1.0':
|
||||
resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.36.0':
|
||||
resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-android-arm64@4.36.0':
|
||||
resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.36.0':
|
||||
resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.36.0':
|
||||
resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.36.0':
|
||||
resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.36.0':
|
||||
resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.36.0':
|
||||
resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.36.0':
|
||||
resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.36.0':
|
||||
resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.36.0':
|
||||
resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.36.0':
|
||||
resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.36.0':
|
||||
resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.36.0':
|
||||
resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.36.0':
|
||||
resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.36.0':
|
||||
resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.36.0':
|
||||
resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.36.0':
|
||||
resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.36.0':
|
||||
resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.36.0':
|
||||
resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@standard-schema/utils@0.3.0':
|
||||
resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
|
||||
|
||||
|
|
@ -1519,6 +1652,9 @@ packages:
|
|||
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
any-promise@1.3.0:
|
||||
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
|
||||
|
||||
apisauce@2.1.6:
|
||||
resolution: {integrity: sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg==}
|
||||
|
||||
|
|
@ -1599,10 +1735,20 @@ packages:
|
|||
buffer@6.0.3:
|
||||
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
|
||||
|
||||
bundle-require@5.1.0:
|
||||
resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
peerDependencies:
|
||||
esbuild: '>=0.18'
|
||||
|
||||
busboy@1.6.0:
|
||||
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
|
||||
engines: {node: '>=10.16.0'}
|
||||
|
||||
cac@6.7.14:
|
||||
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
call-bind-apply-helpers@1.0.2:
|
||||
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
|
@ -1634,6 +1780,10 @@ packages:
|
|||
resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==}
|
||||
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
|
||||
|
||||
chokidar@4.0.3:
|
||||
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
|
||||
engines: {node: '>= 14.16.0'}
|
||||
|
||||
class-variance-authority@0.7.1:
|
||||
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
|
||||
|
||||
|
|
@ -1695,9 +1845,17 @@ packages:
|
|||
resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
|
||||
engines: {node: '>=16'}
|
||||
|
||||
commander@4.1.1:
|
||||
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
concat-map@0.0.1:
|
||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||
|
||||
consola@3.4.2:
|
||||
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
|
||||
engines: {node: ^14.18.0 || >=16.10.0}
|
||||
|
||||
copyfiles@2.4.1:
|
||||
resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==}
|
||||
hasBin: true
|
||||
|
|
@ -2203,6 +2361,10 @@ packages:
|
|||
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
|
||||
glob@10.4.5:
|
||||
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
|
||||
hasBin: true
|
||||
|
||||
glob@11.0.1:
|
||||
resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
|
@ -2452,6 +2614,9 @@ packages:
|
|||
resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
jackspeak@3.4.3:
|
||||
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
|
||||
|
||||
jackspeak@4.1.0:
|
||||
resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
|
@ -2465,6 +2630,10 @@ packages:
|
|||
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
|
||||
hasBin: true
|
||||
|
||||
joycon@3.1.1:
|
||||
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
js-base64@3.7.7:
|
||||
resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==}
|
||||
|
||||
|
|
@ -2511,12 +2680,10 @@ packages:
|
|||
|
||||
libsql@0.4.7:
|
||||
resolution: {integrity: sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==}
|
||||
cpu: [x64, arm64, wasm32]
|
||||
os: [darwin, linux, win32]
|
||||
|
||||
libsql@0.5.1:
|
||||
resolution: {integrity: sha512-ePnm5zj6T//GKiTY/v5b0a272NX73hqdRORmD8gzz1nUui9051dtTt6t0XCrIqxwJAHSmQiZcfAx3YSASn9Y+A==}
|
||||
cpu: [x64, arm64, wasm32]
|
||||
os: [darwin, linux, win32]
|
||||
|
||||
lie@3.3.0:
|
||||
|
|
@ -2586,9 +2753,17 @@ packages:
|
|||
resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
|
||||
lilconfig@3.1.3:
|
||||
resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
lines-and-columns@1.2.4:
|
||||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||
|
||||
load-tsconfig@0.2.5:
|
||||
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
||||
locate-path@6.0.0:
|
||||
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
||||
engines: {node: '>=10'}
|
||||
|
|
@ -2623,6 +2798,9 @@ packages:
|
|||
lodash.snakecase@4.1.1:
|
||||
resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
|
||||
|
||||
lodash.sortby@4.7.0:
|
||||
resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
|
||||
|
||||
lodash.startcase@4.4.0:
|
||||
resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
|
||||
|
||||
|
|
@ -2653,6 +2831,9 @@ packages:
|
|||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||
hasBin: true
|
||||
|
||||
lru-cache@10.4.3:
|
||||
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
|
||||
|
||||
lru-cache@11.0.2:
|
||||
resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
|
@ -2712,6 +2893,9 @@ packages:
|
|||
ms@2.1.3:
|
||||
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
||||
|
||||
mz@2.7.0:
|
||||
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
|
||||
|
||||
nanoid@3.3.11:
|
||||
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
|
|
@ -2862,6 +3046,10 @@ packages:
|
|||
path-parse@1.0.7:
|
||||
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||
|
||||
path-scurry@1.11.1:
|
||||
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
|
||||
engines: {node: '>=16 || 14 >=14.18'}
|
||||
|
||||
path-scurry@2.0.0:
|
||||
resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
|
@ -2881,6 +3069,10 @@ packages:
|
|||
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
pirates@4.0.6:
|
||||
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
pluralize@8.0.0:
|
||||
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
|
||||
engines: {node: '>=4'}
|
||||
|
|
@ -2889,6 +3081,24 @@ packages:
|
|||
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
postcss-load-config@6.0.1:
|
||||
resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
|
||||
engines: {node: '>= 18'}
|
||||
peerDependencies:
|
||||
jiti: '>=1.21.0'
|
||||
postcss: '>=8.0.9'
|
||||
tsx: ^4.8.1
|
||||
yaml: ^2.4.2
|
||||
peerDependenciesMeta:
|
||||
jiti:
|
||||
optional: true
|
||||
postcss:
|
||||
optional: true
|
||||
tsx:
|
||||
optional: true
|
||||
yaml:
|
||||
optional: true
|
||||
|
||||
postcss@8.4.31:
|
||||
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
|
@ -2980,6 +3190,10 @@ packages:
|
|||
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
readdirp@4.1.2:
|
||||
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
|
||||
engines: {node: '>= 14.18.0'}
|
||||
|
||||
reflect.getprototypeof@1.0.10:
|
||||
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
|
@ -2996,6 +3210,10 @@ packages:
|
|||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
resolve-from@5.0.0:
|
||||
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
resolve-pkg-maps@1.0.0:
|
||||
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
|
||||
|
||||
|
|
@ -3025,6 +3243,11 @@ packages:
|
|||
engines: {node: 20 || >=22}
|
||||
hasBin: true
|
||||
|
||||
rollup@4.36.0:
|
||||
resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==}
|
||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||
hasBin: true
|
||||
|
||||
run-parallel@1.2.0:
|
||||
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
|
||||
|
||||
|
|
@ -3131,6 +3354,10 @@ packages:
|
|||
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
source-map@0.8.0-beta.0:
|
||||
resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
stdin-discarder@0.1.0:
|
||||
resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
|
@ -3220,6 +3447,11 @@ packages:
|
|||
babel-plugin-macros:
|
||||
optional: true
|
||||
|
||||
sucrase@3.35.0:
|
||||
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
|
||||
engines: {node: '>=16 || 14 >=14.17'}
|
||||
hasBin: true
|
||||
|
||||
supports-color@5.5.0:
|
||||
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
|
||||
engines: {node: '>=4'}
|
||||
|
|
@ -3247,22 +3479,65 @@ packages:
|
|||
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
thenify-all@1.6.0:
|
||||
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
|
||||
engines: {node: '>=0.8'}
|
||||
|
||||
thenify@3.3.1:
|
||||
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
|
||||
|
||||
through2@2.0.5:
|
||||
resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
|
||||
|
||||
tinyexec@0.3.2:
|
||||
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
|
||||
|
||||
tinyglobby@0.2.12:
|
||||
resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
|
||||
engines: {node: '>=8.0'}
|
||||
|
||||
tr46@1.0.1:
|
||||
resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
|
||||
|
||||
tree-kill@1.2.2:
|
||||
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
|
||||
hasBin: true
|
||||
|
||||
ts-api-utils@2.0.1:
|
||||
resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==}
|
||||
engines: {node: '>=18.12'}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4'
|
||||
|
||||
ts-interface-checker@0.1.13:
|
||||
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
|
||||
|
||||
tslib@2.8.1:
|
||||
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
|
||||
|
||||
tsup@8.4.0:
|
||||
resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==}
|
||||
engines: {node: '>=18'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@microsoft/api-extractor': ^7.36.0
|
||||
'@swc/core': ^1
|
||||
postcss: ^8.4.12
|
||||
typescript: '>=4.5.0'
|
||||
peerDependenciesMeta:
|
||||
'@microsoft/api-extractor':
|
||||
optional: true
|
||||
'@swc/core':
|
||||
optional: true
|
||||
postcss:
|
||||
optional: true
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
tsx@4.19.3:
|
||||
resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
|
@ -3378,6 +3653,12 @@ packages:
|
|||
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
webidl-conversions@4.0.2:
|
||||
resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
|
||||
|
||||
whatwg-url@7.1.0:
|
||||
resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
|
||||
|
||||
which-boxed-primitive@1.1.1:
|
||||
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
|
@ -3883,6 +4164,23 @@ snapshots:
|
|||
wrap-ansi: 8.1.0
|
||||
wrap-ansi-cjs: wrap-ansi@7.0.0
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.8':
|
||||
dependencies:
|
||||
'@jridgewell/set-array': 1.2.1
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
'@jridgewell/trace-mapping': 0.3.25
|
||||
|
||||
'@jridgewell/resolve-uri@3.1.2': {}
|
||||
|
||||
'@jridgewell/set-array@1.2.1': {}
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.0': {}
|
||||
|
||||
'@jridgewell/trace-mapping@0.3.25':
|
||||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.1.2
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
|
||||
'@libsql/client@0.14.0':
|
||||
dependencies:
|
||||
'@libsql/core': 0.14.0
|
||||
|
|
@ -4014,6 +4312,9 @@ snapshots:
|
|||
|
||||
'@petamoriken/float16@3.9.2': {}
|
||||
|
||||
'@pkgjs/parseargs@0.11.0':
|
||||
optional: true
|
||||
|
||||
'@radix-ui/number@1.1.0': {}
|
||||
|
||||
'@radix-ui/primitive@1.1.1': {}
|
||||
|
|
@ -4233,6 +4534,63 @@ snapshots:
|
|||
|
||||
'@radix-ui/rect@1.1.0': {}
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm64@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.36.0':
|
||||
optional: true
|
||||
|
||||
'@standard-schema/utils@0.3.0': {}
|
||||
|
||||
'@swc/counter@0.1.3': {}
|
||||
|
|
@ -4458,6 +4816,8 @@ snapshots:
|
|||
|
||||
ansi-styles@6.2.1: {}
|
||||
|
||||
any-promise@1.3.0: {}
|
||||
|
||||
apisauce@2.1.6:
|
||||
dependencies:
|
||||
axios: 0.21.4
|
||||
|
|
@ -4571,10 +4931,17 @@ snapshots:
|
|||
base64-js: 1.5.1
|
||||
ieee754: 1.2.1
|
||||
|
||||
bundle-require@5.1.0(esbuild@0.25.1):
|
||||
dependencies:
|
||||
esbuild: 0.25.1
|
||||
load-tsconfig: 0.2.5
|
||||
|
||||
busboy@1.6.0:
|
||||
dependencies:
|
||||
streamsearch: 1.1.0
|
||||
|
||||
cac@6.7.14: {}
|
||||
|
||||
call-bind-apply-helpers@1.0.2:
|
||||
dependencies:
|
||||
es-errors: 1.3.0
|
||||
|
|
@ -4609,6 +4976,10 @@ snapshots:
|
|||
|
||||
chalk@5.4.1: {}
|
||||
|
||||
chokidar@4.0.3:
|
||||
dependencies:
|
||||
readdirp: 4.1.2
|
||||
|
||||
class-variance-authority@0.7.1:
|
||||
dependencies:
|
||||
clsx: 2.1.1
|
||||
|
|
@ -4670,8 +5041,12 @@ snapshots:
|
|||
|
||||
commander@11.1.0: {}
|
||||
|
||||
commander@4.1.1: {}
|
||||
|
||||
concat-map@0.0.1: {}
|
||||
|
||||
consola@3.4.2: {}
|
||||
|
||||
copyfiles@2.4.1:
|
||||
dependencies:
|
||||
glob: 7.2.3
|
||||
|
|
@ -5288,6 +5663,15 @@ snapshots:
|
|||
dependencies:
|
||||
is-glob: 4.0.3
|
||||
|
||||
glob@10.4.5:
|
||||
dependencies:
|
||||
foreground-child: 3.3.1
|
||||
jackspeak: 3.4.3
|
||||
minimatch: 9.0.5
|
||||
minipass: 7.1.2
|
||||
package-json-from-dist: 1.0.1
|
||||
path-scurry: 1.11.1
|
||||
|
||||
glob@11.0.1:
|
||||
dependencies:
|
||||
foreground-child: 3.3.1
|
||||
|
|
@ -5561,6 +5945,12 @@ snapshots:
|
|||
has-symbols: 1.1.0
|
||||
set-function-name: 2.0.2
|
||||
|
||||
jackspeak@3.4.3:
|
||||
dependencies:
|
||||
'@isaacs/cliui': 8.0.2
|
||||
optionalDependencies:
|
||||
'@pkgjs/parseargs': 0.11.0
|
||||
|
||||
jackspeak@4.1.0:
|
||||
dependencies:
|
||||
'@isaacs/cliui': 8.0.2
|
||||
|
|
@ -5574,6 +5964,8 @@ snapshots:
|
|||
|
||||
jiti@2.4.2: {}
|
||||
|
||||
joycon@3.1.1: {}
|
||||
|
||||
js-base64@3.7.7: {}
|
||||
|
||||
js-message@1.0.7: {}
|
||||
|
|
@ -5694,8 +6086,12 @@ snapshots:
|
|||
lightningcss-win32-arm64-msvc: 1.29.2
|
||||
lightningcss-win32-x64-msvc: 1.29.2
|
||||
|
||||
lilconfig@3.1.3: {}
|
||||
|
||||
lines-and-columns@1.2.4: {}
|
||||
|
||||
load-tsconfig@0.2.5: {}
|
||||
|
||||
locate-path@6.0.0:
|
||||
dependencies:
|
||||
p-locate: 5.0.0
|
||||
|
|
@ -5720,6 +6116,8 @@ snapshots:
|
|||
|
||||
lodash.snakecase@4.1.1: {}
|
||||
|
||||
lodash.sortby@4.7.0: {}
|
||||
|
||||
lodash.startcase@4.4.0: {}
|
||||
|
||||
lodash.trim@4.5.1: {}
|
||||
|
|
@ -5745,6 +6143,8 @@ snapshots:
|
|||
dependencies:
|
||||
js-tokens: 4.0.0
|
||||
|
||||
lru-cache@10.4.3: {}
|
||||
|
||||
lru-cache@11.0.2: {}
|
||||
|
||||
lru-cache@6.0.0:
|
||||
|
|
@ -5790,6 +6190,12 @@ snapshots:
|
|||
|
||||
ms@2.1.3: {}
|
||||
|
||||
mz@2.7.0:
|
||||
dependencies:
|
||||
any-promise: 1.3.0
|
||||
object-assign: 4.1.1
|
||||
thenify-all: 1.6.0
|
||||
|
||||
nanoid@3.3.11: {}
|
||||
|
||||
natural-compare@1.4.0: {}
|
||||
|
|
@ -5964,6 +6370,11 @@ snapshots:
|
|||
|
||||
path-parse@1.0.7: {}
|
||||
|
||||
path-scurry@1.11.1:
|
||||
dependencies:
|
||||
lru-cache: 10.4.3
|
||||
minipass: 7.1.2
|
||||
|
||||
path-scurry@2.0.0:
|
||||
dependencies:
|
||||
lru-cache: 11.0.2
|
||||
|
|
@ -5977,10 +6388,20 @@ snapshots:
|
|||
|
||||
picomatch@4.0.2: {}
|
||||
|
||||
pirates@4.0.6: {}
|
||||
|
||||
pluralize@8.0.0: {}
|
||||
|
||||
possible-typed-array-names@1.1.0: {}
|
||||
|
||||
postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3):
|
||||
dependencies:
|
||||
lilconfig: 3.1.3
|
||||
optionalDependencies:
|
||||
jiti: 2.4.2
|
||||
postcss: 8.5.3
|
||||
tsx: 4.19.3
|
||||
|
||||
postcss@8.4.31:
|
||||
dependencies:
|
||||
nanoid: 3.3.11
|
||||
|
|
@ -6074,6 +6495,8 @@ snapshots:
|
|||
string_decoder: 1.3.0
|
||||
util-deprecate: 1.0.2
|
||||
|
||||
readdirp@4.1.2: {}
|
||||
|
||||
reflect.getprototypeof@1.0.10:
|
||||
dependencies:
|
||||
call-bind: 1.0.8
|
||||
|
|
@ -6098,6 +6521,8 @@ snapshots:
|
|||
|
||||
resolve-from@4.0.0: {}
|
||||
|
||||
resolve-from@5.0.0: {}
|
||||
|
||||
resolve-pkg-maps@1.0.0: {}
|
||||
|
||||
resolve@2.0.0-next.5:
|
||||
|
|
@ -6127,6 +6552,31 @@ snapshots:
|
|||
glob: 11.0.1
|
||||
package-json-from-dist: 1.0.1
|
||||
|
||||
rollup@4.36.0:
|
||||
dependencies:
|
||||
'@types/estree': 1.0.6
|
||||
optionalDependencies:
|
||||
'@rollup/rollup-android-arm-eabi': 4.36.0
|
||||
'@rollup/rollup-android-arm64': 4.36.0
|
||||
'@rollup/rollup-darwin-arm64': 4.36.0
|
||||
'@rollup/rollup-darwin-x64': 4.36.0
|
||||
'@rollup/rollup-freebsd-arm64': 4.36.0
|
||||
'@rollup/rollup-freebsd-x64': 4.36.0
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.36.0
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.36.0
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.36.0
|
||||
'@rollup/rollup-linux-arm64-musl': 4.36.0
|
||||
'@rollup/rollup-linux-loongarch64-gnu': 4.36.0
|
||||
'@rollup/rollup-linux-powerpc64le-gnu': 4.36.0
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.36.0
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.36.0
|
||||
'@rollup/rollup-linux-x64-gnu': 4.36.0
|
||||
'@rollup/rollup-linux-x64-musl': 4.36.0
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.36.0
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.36.0
|
||||
'@rollup/rollup-win32-x64-msvc': 4.36.0
|
||||
fsevents: 2.3.3
|
||||
|
||||
run-parallel@1.2.0:
|
||||
dependencies:
|
||||
queue-microtask: 1.2.3
|
||||
|
|
@ -6269,6 +6719,10 @@ snapshots:
|
|||
|
||||
source-map@0.6.1: {}
|
||||
|
||||
source-map@0.8.0-beta.0:
|
||||
dependencies:
|
||||
whatwg-url: 7.1.0
|
||||
|
||||
stdin-discarder@0.1.0:
|
||||
dependencies:
|
||||
bl: 5.1.0
|
||||
|
|
@ -6372,6 +6826,16 @@ snapshots:
|
|||
client-only: 0.0.1
|
||||
react: 19.0.0
|
||||
|
||||
sucrase@3.35.0:
|
||||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.3.8
|
||||
commander: 4.1.1
|
||||
glob: 10.4.5
|
||||
lines-and-columns: 1.2.4
|
||||
mz: 2.7.0
|
||||
pirates: 4.0.6
|
||||
ts-interface-checker: 0.1.13
|
||||
|
||||
supports-color@5.5.0:
|
||||
dependencies:
|
||||
has-flag: 3.0.0
|
||||
|
|
@ -6392,21 +6856,71 @@ snapshots:
|
|||
|
||||
tapable@2.2.1: {}
|
||||
|
||||
thenify-all@1.6.0:
|
||||
dependencies:
|
||||
thenify: 3.3.1
|
||||
|
||||
thenify@3.3.1:
|
||||
dependencies:
|
||||
any-promise: 1.3.0
|
||||
|
||||
through2@2.0.5:
|
||||
dependencies:
|
||||
readable-stream: 2.3.8
|
||||
xtend: 4.0.2
|
||||
|
||||
tinyexec@0.3.2: {}
|
||||
|
||||
tinyglobby@0.2.12:
|
||||
dependencies:
|
||||
fdir: 6.4.3(picomatch@4.0.2)
|
||||
picomatch: 4.0.2
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
|
||||
tr46@1.0.1:
|
||||
dependencies:
|
||||
punycode: 2.3.1
|
||||
|
||||
tree-kill@1.2.2: {}
|
||||
|
||||
ts-api-utils@2.0.1(typescript@5.8.2):
|
||||
dependencies:
|
||||
typescript: 5.8.2
|
||||
|
||||
ts-interface-checker@0.1.13: {}
|
||||
|
||||
tslib@2.8.1: {}
|
||||
|
||||
tsup@8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2):
|
||||
dependencies:
|
||||
bundle-require: 5.1.0(esbuild@0.25.1)
|
||||
cac: 6.7.14
|
||||
chokidar: 4.0.3
|
||||
consola: 3.4.2
|
||||
debug: 4.4.0
|
||||
esbuild: 0.25.1
|
||||
joycon: 3.1.1
|
||||
picocolors: 1.1.1
|
||||
postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3)
|
||||
resolve-from: 5.0.0
|
||||
rollup: 4.36.0
|
||||
source-map: 0.8.0-beta.0
|
||||
sucrase: 3.35.0
|
||||
tinyexec: 0.3.2
|
||||
tinyglobby: 0.2.12
|
||||
tree-kill: 1.2.2
|
||||
optionalDependencies:
|
||||
postcss: 8.5.3
|
||||
typescript: 5.8.2
|
||||
transitivePeerDependencies:
|
||||
- jiti
|
||||
- supports-color
|
||||
- tsx
|
||||
- yaml
|
||||
|
||||
tsx@4.19.3:
|
||||
dependencies:
|
||||
esbuild: 0.25.1
|
||||
|
|
@ -6528,6 +7042,14 @@ snapshots:
|
|||
|
||||
web-streams-polyfill@3.3.3: {}
|
||||
|
||||
webidl-conversions@4.0.2: {}
|
||||
|
||||
whatwg-url@7.1.0:
|
||||
dependencies:
|
||||
lodash.sortby: 4.7.0
|
||||
tr46: 1.0.1
|
||||
webidl-conversions: 4.0.2
|
||||
|
||||
which-boxed-primitive@1.1.1:
|
||||
dependencies:
|
||||
is-bigint: 1.1.0
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue