From 85dd11c84d56e79491d1d639a9e83f17af3e87e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=A9=98?= Date: Thu, 23 Apr 2026 09:18:37 +0000 Subject: [PATCH] =?UTF-8?q?refactor(daemon):=20upgrade=20Drizzle=20v1.0-be?= =?UTF-8?q?ta=20+=20migrate=20better-sqlite3=20=E2=86=92=20node:sqlite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Upgrade drizzle-orm from 0.43.1 to 1.0.0-beta.23 - Replace better-sqlite3 with node:sqlite (DatabaseSync) in: - sense-runtime.ts (Drizzle driver) - log-store.ts (raw SQL) - all test files - Replace sqlite.pragma() with sqlite.exec('PRAGMA ...') - Replace sqlite.transaction() with manual BEGIN/COMMIT/ROLLBACK - Update CLI init command to verify node:sqlite instead of better-sqlite3 - Remove better-sqlite3 and @types/better-sqlite3 from dependencies - Zero native addons remaining in the monorepo 🎉 Closes #67 小橘 --- packages/cli/src/commands/init.ts | 48 +- packages/daemon/package.json | 5 +- .../__tests__/kernel-trigger-sense.test.ts | 4 +- .../src/__tests__/sense-runtime.test.ts | 34 +- packages/daemon/src/log-store.ts | 49 +- packages/daemon/src/sense-runtime.ts | 50 +- pnpm-lock.yaml | 830 +++++++++++++++++- pnpm-workspace.yaml | 1 - 8 files changed, 885 insertions(+), 136 deletions(-) diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts index 21b8796..984f17c 100644 --- a/packages/cli/src/commands/init.ts +++ b/packages/cli/src/commands/init.ts @@ -1,4 +1,4 @@ -import { spawn, execFile } from "node:child_process"; +import { execFile, spawn } from "node:child_process"; import { existsSync, mkdirSync, writeFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { promisify } from "node:util"; @@ -35,7 +35,7 @@ const PACKAGE_JSON = `{ "drizzle-kit": "latest" }, "pnpm": { - "onlyBuiltDependencies": ["better-sqlite3", "esbuild"] + "onlyBuiltDependencies": ["esbuild"] } } `; @@ -218,14 +218,18 @@ const initWorkspaceCommand = defineCommand({ }, }); -async function tryRequireSqlite(nerveRoot: string): Promise { +/** Verify built-in `node:sqlite` (Node.js ≥22.5) loads in a child process. */ +async function verifyNodeSqlite(): Promise { try { - const modulePath = join(nerveRoot, "node_modules", "better-sqlite3"); - // Use a child process to test if the native module loads - await execFileAsync("node", ["-e", `require(${JSON.stringify(modulePath)})`], { - cwd: nerveRoot, - timeout: 10_000, - }); + await execFileAsync( + "node", + [ + "--input-type=module", + "-e", + "import { DatabaseSync } from 'node:sqlite'; new DatabaseSync(':memory:').exec('SELECT 1');", + ], + { timeout: 10_000 }, + ); return true; } catch { return false; @@ -264,27 +268,11 @@ async function runInitWorkspace(force: boolean): Promise { ); } - // Verify better-sqlite3 native module — rebuild up to 2 times if broken - const sqlitePath = join(nerveRoot, "node_modules", "better-sqlite3"); - if (existsSync(sqlitePath)) { - for (let attempt = 1; attempt <= 2; attempt++) { - if (await tryRequireSqlite(nerveRoot)) break; - process.stdout.write( - `${attempt === 1 ? "Building" : "Retrying build of"} native module better-sqlite3 (attempt ${attempt}/2)…\n`, - ); - try { - await runCommand(cmd, ["rebuild", "better-sqlite3"], nerveRoot); - } catch { - // will be caught by the verify below - } - } - if (!(await tryRequireSqlite(nerveRoot))) { - process.stdout.write( - `⚠️ better-sqlite3 native module is not working. The daemon will fail to start.\n` + - ` Fix: cd ${nerveRoot} && ${cmd} rebuild better-sqlite3\n` + - ` Or: npm install --build-from-source better-sqlite3\n`, - ); - } + if (!(await verifyNodeSqlite())) { + process.stdout.write( + "⚠️ Built-in SQLite (node:sqlite) is not available in this Node.js build. " + + "The daemon requires Node.js 22.5 or newer with SQLite enabled.\n", + ); } if (!existsSync(join(nerveRoot, ".git"))) { diff --git a/packages/daemon/package.json b/packages/daemon/package.json index e706737..6b6975f 100644 --- a/packages/daemon/package.json +++ b/packages/daemon/package.json @@ -17,12 +17,11 @@ }, "dependencies": { "@uncaged/nerve-core": "workspace:*", - "better-sqlite3": "^11.10.0", - "drizzle-orm": "^0.43.1", + "drizzle-orm": "1.0.0-beta.23-c10d10c", "yaml": "^2.8.3" }, "devDependencies": { - "@types/better-sqlite3": "^7.6.13", + "@types/node": "^22.0.0", "vitest": "^4.1.5" } } diff --git a/packages/daemon/src/__tests__/kernel-trigger-sense.test.ts b/packages/daemon/src/__tests__/kernel-trigger-sense.test.ts index a224ca3..0b4bc19 100644 --- a/packages/daemon/src/__tests__/kernel-trigger-sense.test.ts +++ b/packages/daemon/src/__tests__/kernel-trigger-sense.test.ts @@ -2,7 +2,7 @@ * Unit tests for kernel.triggerSense() — IPC issue #36. * * These tests use a mock child_process and a mock LogStore so they do NOT - * require better-sqlite3 to be present in the test environment. + * require a real LogStore (node:sqlite) in integration tests. */ import { EventEmitter } from "node:events"; @@ -58,7 +58,7 @@ vi.mock("node:child_process", () => ({ const { createKernel } = await import("../kernel.js"); // --------------------------------------------------------------------------- -// Mock LogStore factory (avoids better-sqlite3 dependency) +// Mock LogStore factory (avoids SQLite I/O in this unit test) // --------------------------------------------------------------------------- function makeMockLogStore() { diff --git a/packages/daemon/src/__tests__/sense-runtime.test.ts b/packages/daemon/src/__tests__/sense-runtime.test.ts index 7f30135..1aed4b7 100644 --- a/packages/daemon/src/__tests__/sense-runtime.test.ts +++ b/packages/daemon/src/__tests__/sense-runtime.test.ts @@ -2,8 +2,8 @@ import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import Database from "better-sqlite3"; -import { drizzle } from "drizzle-orm/better-sqlite3"; +import { DatabaseSync } from "node:sqlite"; +import { drizzle } from "drizzle-orm/node-sqlite"; import { integer, real, sqliteTable } from "drizzle-orm/sqlite-core"; import { describe, expect, it } from "vitest"; @@ -49,7 +49,7 @@ const samples = sqliteTable("samples", { describe("runMigrations", () => { it("creates table via SQL migration file", () => { - const sqlite = new Database(":memory:"); + const sqlite = new DatabaseSync(":memory:"); const migrationsDir = makeTempMigrationsDir(INIT_SQL); const result = runMigrations(sqlite, migrationsDir); @@ -64,7 +64,7 @@ describe("runMigrations", () => { }); it("runs multiple migrations in lexicographic order", () => { - const sqlite = new Database(":memory:"); + const sqlite = new DatabaseSync(":memory:"); const dir = mkdtempSync(join(tmpdir(), "nerve-multi-")); writeFileSync(join(dir, "0001_init.sql"), INIT_SQL); @@ -81,7 +81,7 @@ describe("runMigrations", () => { }); it("returns ok when migrations directory is empty", () => { - const sqlite = new Database(":memory:"); + const sqlite = new DatabaseSync(":memory:"); const dir = makeTempMigrationsDirEmpty(); const result = runMigrations(sqlite, dir); expect(result.ok).toBe(true); @@ -89,14 +89,14 @@ describe("runMigrations", () => { }); it("returns err when migrations directory does not exist", () => { - const sqlite = new Database(":memory:"); + const sqlite = new DatabaseSync(":memory:"); const result = runMigrations(sqlite, "/nonexistent/path/migrations"); expect(result.ok).toBe(false); sqlite.close(); }); it("returns err when a migration SQL is invalid", () => { - const sqlite = new Database(":memory:"); + const sqlite = new DatabaseSync(":memory:"); const dir = mkdtempSync(join(tmpdir(), "nerve-bad-sql-")); writeFileSync(join(dir, "0001_bad.sql"), "NOT VALID SQL !!!;"); const result = runMigrations(sqlite, dir); @@ -141,7 +141,7 @@ describe("openPeerDb", () => { it("opens an existing db in read-only mode", () => { // Create a writable db first const dbPath = makeTempDbPath(); - const sqlite = new Database(dbPath); + const sqlite = new DatabaseSync(dbPath); sqlite.exec(INIT_SQL); sqlite.prepare("INSERT INTO samples (ts, value) VALUES (1, 42.0)").run(); sqlite.close(); @@ -170,11 +170,11 @@ describe("openPeerDb", () => { describe("executeCompute", () => { function makeRuntime(computeFn: ComputeFn): { runtime: SenseRuntime; - sqlite: Database.Database; + sqlite: DatabaseSync; } { - const sqlite = new Database(":memory:"); + const sqlite = new DatabaseSync(":memory:"); sqlite.exec(INIT_SQL); - const db = drizzle(sqlite) as DrizzleDB; + const db = drizzle({ client: sqlite }) as DrizzleDB; return { runtime: { name: "test-sense", db, compute: computeFn }, sqlite, @@ -226,10 +226,10 @@ describe("executeCompute", () => { it("compute can read from peers", async () => { // Set up a peer db with data - const peerSqlite = new Database(":memory:"); + const peerSqlite = new DatabaseSync(":memory:"); peerSqlite.exec(INIT_SQL); peerSqlite.prepare("INSERT INTO samples (ts, value) VALUES (100, 3.14)").run(); - const peerDb = drizzle(peerSqlite) as DrizzleDB; + const peerDb = drizzle({ client: peerSqlite }) as DrizzleDB; const peers: PeerMap = { "other-sense": peerDb }; @@ -248,9 +248,9 @@ describe("executeCompute", () => { }); it("write to own db does not affect peer db (isolation)", async () => { - const peerSqlite = new Database(":memory:"); + const peerSqlite = new DatabaseSync(":memory:"); peerSqlite.exec(INIT_SQL); - const peerDb = drizzle(peerSqlite) as DrizzleDB; + const peerDb = drizzle({ client: peerSqlite }) as DrizzleDB; const peers: PeerMap = { "peer-sense": peerDb }; const { runtime, sqlite } = makeRuntime(async (db) => { @@ -403,7 +403,7 @@ describe("parseParentMessage", () => { describe("runMigrations journal", () => { it("does not re-run an already-applied migration", () => { - const sqlite = new Database(":memory:"); + const sqlite = new DatabaseSync(":memory:"); const dir = mkdtempSync(join(tmpdir(), "nerve-journal-")); writeFileSync(join(dir, "0001_init.sql"), INIT_SQL); @@ -430,7 +430,7 @@ describe("runMigrations journal", () => { }); it("tracks migrations in _migrations table", () => { - const sqlite = new Database(":memory:"); + const sqlite = new DatabaseSync(":memory:"); const dir = mkdtempSync(join(tmpdir(), "nerve-journal2-")); writeFileSync(join(dir, "0001_init.sql"), INIT_SQL); diff --git a/packages/daemon/src/log-store.ts b/packages/daemon/src/log-store.ts index 521c161..5daa380 100644 --- a/packages/daemon/src/log-store.ts +++ b/packages/daemon/src/log-store.ts @@ -9,8 +9,7 @@ import { mkdirSync, writeFileSync } from "node:fs"; import { dirname, join } from "node:path"; -import Database from "better-sqlite3"; -import type BetterSqlite3 from "better-sqlite3"; +import { DatabaseSync, type StatementSync } from "node:sqlite"; import { DEFAULT_LOG_RETENTION_MS, @@ -184,7 +183,23 @@ function buildJsonlBody(rows: SqlLogRow[]): string { return `${lines.join("\n")}\n`; } -function runOptionalVacuum(sqlite: BetterSqlite3.Database, vacuum?: boolean): boolean { +function runInTransaction(db: DatabaseSync, fn: () => T): T { + db.exec("BEGIN IMMEDIATE"); + try { + const out = fn(); + db.exec("COMMIT"); + return out; + } catch (e) { + try { + db.exec("ROLLBACK"); + } catch { + // ignore rollback errors + } + throw e; + } +} + +function runOptionalVacuum(sqlite: DatabaseSync, vacuum?: boolean): boolean { if (vacuum !== true) return false; sqlite.exec("VACUUM"); return true; @@ -199,7 +214,7 @@ function resolveArchiveStartDay(watermark: string | null, minDay: string): strin function runArchiveDayLoop( dbPath: string, options: ArchiveLogsOptions, - selectLogsForDayStmt: BetterSqlite3.Statement, + selectLogsForDayStmt: StatementSync, archiveDayTx: (day: string, start: number, endExclusive: number) => void, startDay: string, lastDay: string, @@ -235,8 +250,8 @@ function runArchiveDayLoop( export function createLogStore(dbPath: string): LogStore { mkdirSync(dirname(dbPath), { recursive: true }); - const sqlite: BetterSqlite3.Database = new Database(dbPath); - sqlite.pragma("journal_mode = WAL"); + const sqlite = new DatabaseSync(dbPath); + sqlite.exec("PRAGMA journal_mode=WAL"); sqlite.exec(SCHEMA_SQL); const insertStmt = sqlite.prepare( @@ -288,8 +303,8 @@ export function createLogStore(dbPath: string): LogStore { "DELETE FROM logs WHERE ts >= @start AND ts < @endExclusive", ); - const upsertWorkflowRunTx = sqlite.transaction( - (entry: Omit, run: WorkflowRun) => { + function upsertWorkflowRunTx(entry: Omit, run: WorkflowRun): LogEntry { + return runInTransaction(sqlite, () => { const info = insertStmt.run({ source: entry.source, type: entry.type, @@ -304,8 +319,8 @@ export function createLogStore(dbPath: string): LogStore { ts: run.ts, }); return { ...entry, id: Number(info.lastInsertRowid) }; - }, - ); + }); + } function append(entry: Omit): LogEntry { const info = insertStmt.run({ @@ -376,11 +391,11 @@ export function createLogStore(dbPath: string): LogStore { } function upsertWorkflowRun(entry: Omit, run: WorkflowRun): LogEntry { - return upsertWorkflowRunTx(entry, run) as LogEntry; + return upsertWorkflowRunTx(entry, run); } function appendWithWorkflowUpdate(entry: Omit, run: WorkflowRun): LogEntry { - return upsertWorkflowRunTx(entry, run) as LogEntry; + return upsertWorkflowRunTx(entry, run); } function getWorkflowRun(runId: string): WorkflowRun | null { @@ -460,10 +475,12 @@ export function createLogStore(dbPath: string): LogStore { return result; } - const archiveDayTx = sqlite.transaction((day: string, start: number, endExclusive: number) => { - deleteLogsForDayStmt.run({ start, endExclusive }); - setMetaStmt.run({ key: LOG_ARCHIVE_META_KEY, value: day }); - }); + function archiveDayTx(day: string, start: number, endExclusive: number): void { + runInTransaction(sqlite, () => { + deleteLogsForDayStmt.run({ start, endExclusive }); + setMetaStmt.run({ key: LOG_ARCHIVE_META_KEY, value: day }); + }); + } function readWatermark(): string | null { const raw = getMeta(LOG_ARCHIVE_META_KEY); diff --git a/packages/daemon/src/sense-runtime.ts b/packages/daemon/src/sense-runtime.ts index 2baf01a..643e1cb 100644 --- a/packages/daemon/src/sense-runtime.ts +++ b/packages/daemon/src/sense-runtime.ts @@ -1,9 +1,9 @@ import { mkdirSync, readFileSync, readdirSync } from "node:fs"; import { dirname, join } from "node:path"; +import { DatabaseSync } from "node:sqlite"; -import Database from "better-sqlite3"; -import { drizzle } from "drizzle-orm/better-sqlite3"; -import type { BetterSQLite3Database } from "drizzle-orm/better-sqlite3"; +import { drizzle } from "drizzle-orm/node-sqlite"; +import type { NodeSQLiteDatabase } from "drizzle-orm/node-sqlite"; import type { Result } from "@uncaged/nerve-core"; import { err, ok } from "@uncaged/nerve-core"; @@ -11,7 +11,7 @@ import { err, ok } from "@uncaged/nerve-core"; import type { BlobStore } from "./blob-store.js"; /** A Drizzle DB instance (schema-generic) */ -export type DrizzleDB = BetterSQLite3Database>; +export type DrizzleDB = NodeSQLiteDatabase>; /** Read-only map of peer sense name → their Drizzle DB */ export type PeerMap = Readonly>; @@ -42,7 +42,7 @@ export type SenseRuntime = { compute: ComputeFn; }; -function ensureMigrationsTable(sqlite: Database.Database): Result { +function ensureMigrationsTable(sqlite: DatabaseSync): Result { try { sqlite.exec( `CREATE TABLE IF NOT EXISTS _migrations ( @@ -69,11 +69,7 @@ function listMigrationFiles(migrationsDir: string): Result { } } -function applyMigrationFile( - sqlite: Database.Database, - file: string, - filePath: string, -): Result { +function applyMigrationFile(sqlite: DatabaseSync, file: string, filePath: string): Result { let sql: string; try { sql = readFileSync(filePath, "utf8"); @@ -83,13 +79,18 @@ function applyMigrationFile( } const insertJournal = sqlite.prepare("INSERT INTO _migrations (name, applied_at) VALUES (?, ?)"); + sqlite.exec("BEGIN IMMEDIATE"); try { - sqlite.transaction(() => { - sqlite.exec(sql); - insertJournal.run(file, Date.now()); - })(); + sqlite.exec(sql); + insertJournal.run(file, Date.now()); + sqlite.exec("COMMIT"); return ok(undefined); } catch (e) { + try { + sqlite.exec("ROLLBACK"); + } catch { + // ignore secondary errors during rollback + } const msg = e instanceof Error ? e.message : String(e); return err(new Error(`Migration "${file}" failed: ${msg}`)); } @@ -97,10 +98,10 @@ function applyMigrationFile( /** * Run all *.sql migration files in the given directory against a - * better-sqlite3 Database, in lexicographic order. + * `node:sqlite` DatabaseSync, in lexicographic order. * Tracks applied migrations in _migrations table to avoid re-running. */ -export function runMigrations(sqlite: Database.Database, migrationsDir: string): Result { +export function runMigrations(sqlite: DatabaseSync, migrationsDir: string): Result { const tableResult = ensureMigrationsTable(sqlite); if (!tableResult.ok) return tableResult; @@ -129,14 +130,13 @@ export function runMigrations(sqlite: Database.Database, migrationsDir: string): export function openSenseDb( dbPath: string, migrationsDir: string, -): Result<{ sqlite: Database.Database; db: DrizzleDB }> { - let sqlite: Database.Database; +): Result<{ sqlite: DatabaseSync; db: DrizzleDB }> { + let sqlite: DatabaseSync; try { mkdirSync(dirname(dbPath), { recursive: true }); - sqlite = new Database(dbPath); - // WAL mode for better concurrent read performance - sqlite.pragma("journal_mode = WAL"); + sqlite = new DatabaseSync(dbPath); + sqlite.exec("PRAGMA journal_mode=WAL"); } catch (e) { const msg = e instanceof Error ? e.message : String(e); return err(new Error(`Failed to open database "${dbPath}": ${msg}`)); @@ -145,7 +145,7 @@ export function openSenseDb( const migResult = runMigrations(sqlite, migrationsDir); if (!migResult.ok) return migResult; - const db = drizzle(sqlite) as DrizzleDB; + const db = drizzle({ client: sqlite }) as DrizzleDB; return ok({ sqlite, db }); } @@ -153,16 +153,16 @@ export function openSenseDb( * Open a peer sense DB in read-only mode (no migrations). */ export function openPeerDb(dbPath: string): Result { - let sqlite: Database.Database; + let sqlite: DatabaseSync; try { - sqlite = new Database(dbPath, { readonly: true }); + sqlite = new DatabaseSync(dbPath, { readOnly: true }); } catch (e) { const msg = e instanceof Error ? e.message : String(e); return err(new Error(`Failed to open peer database "${dbPath}" (readonly): ${msg}`)); } - return ok(drizzle(sqlite) as DrizzleDB); + return ok(drizzle({ client: sqlite }) as DrizzleDB); } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a41a30..d3eee37 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,25 +52,90 @@ importers: '@uncaged/nerve-core': specifier: workspace:* version: link:../core - better-sqlite3: - specifier: ^11.10.0 - version: 11.10.0 drizzle-orm: - specifier: ^0.43.1 - version: 0.43.1(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(sql.js@1.14.1) + specifier: 1.0.0-beta.23-c10d10c + version: 1.0.0-beta.23-c10d10c(@types/better-sqlite3@7.6.13)(@types/mssql@9.1.11(@azure/core-client@1.10.1))(better-sqlite3@11.10.0)(mssql@11.0.1(@azure/core-client@1.10.1))(sql.js@1.14.1) yaml: specifier: ^2.8.3 version: 2.8.3 devDependencies: - '@types/better-sqlite3': - specifier: ^7.6.13 - version: 7.6.13 vitest: specifier: ^4.1.5 version: 4.1.5(@types/node@25.6.0)(vite@8.0.9(@types/node@25.6.0)(esbuild@0.27.7)(yaml@2.8.3)) packages: + '@azure-rest/core-client@2.6.0': + resolution: {integrity: sha512-iuFKDm8XPzNxPfRjhyU5/xKZmcRDzSuEghXDHHk4MjBV/wFL34GmYVBZnn9wmuoLBeS1qAw9ceMdaeJBPcB1QQ==} + engines: {node: '>=20.0.0'} + + '@azure/abort-controller@2.1.2': + resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} + engines: {node: '>=18.0.0'} + + '@azure/core-auth@1.10.1': + resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==} + engines: {node: '>=20.0.0'} + + '@azure/core-client@1.10.1': + resolution: {integrity: sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==} + engines: {node: '>=20.0.0'} + + '@azure/core-http-compat@2.4.0': + resolution: {integrity: sha512-f1P96IB399YiN2ARYHP7EpZi3Bf3wH4SN2lGzrw7JVwm7bbsVYtf2iKSBwTywD2P62NOPZGHFSZi+6jjb75JuA==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@azure/core-client': ^1.10.0 + '@azure/core-rest-pipeline': ^1.22.0 + + '@azure/core-lro@2.7.2': + resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} + engines: {node: '>=18.0.0'} + + '@azure/core-paging@1.6.2': + resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} + engines: {node: '>=18.0.0'} + + '@azure/core-rest-pipeline@1.23.0': + resolution: {integrity: sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==} + engines: {node: '>=20.0.0'} + + '@azure/core-tracing@1.3.1': + resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==} + engines: {node: '>=20.0.0'} + + '@azure/core-util@1.13.1': + resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==} + engines: {node: '>=20.0.0'} + + '@azure/identity@4.13.1': + resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==} + engines: {node: '>=20.0.0'} + + '@azure/keyvault-common@2.1.0': + resolution: {integrity: sha512-aCDidWuKY06LWQ4x7/8TIXK6iRqTaRWRL3t7T+LC+j1b07HtoIsOxP/tU90G4jCSBn5TAyUTCtA4MS/y5Hudaw==} + engines: {node: '>=20.0.0'} + + '@azure/keyvault-keys@4.10.0': + resolution: {integrity: sha512-eDT7iXoBTRZ2n3fLiftuGJFD+yjkiB1GNqzU2KbY1TLYeXeSPVTVgn2eJ5vmRTZ11978jy2Kg2wI7xa9Tyr8ag==} + engines: {node: '>=18.0.0'} + + '@azure/logger@1.3.0': + resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} + engines: {node: '>=20.0.0'} + + '@azure/msal-browser@5.8.0': + resolution: {integrity: sha512-X7IZV77bN56l7sbLjkcbQJX1t3U4tgxqztDr/XFbUcUfKk+z2FavcLgKP+OYUNj0wl/pEEtV9lldW9siY8BuHQ==} + engines: {node: '>=0.8.0'} + + '@azure/msal-common@16.5.1': + resolution: {integrity: sha512-WS9w9SfI8SEYO7mTnxGeZ3UwQfhAVYCWglYF2/7GNx3ioHiAs2gPkl9eSwVs8cPrmiGh+zi9ai/OOKoq4cyzDw==} + engines: {node: '>=0.8.0'} + + '@azure/msal-node@5.1.4': + resolution: {integrity: sha512-G4LXGGggok1QC48uKu64/SV2DPRDlddmV8EieK8pflsNYMj9/Zz+Y9OHoEBhT15h+zpdwXXLYA/7PJCR/yZ8aw==} + engines: {node: '>=20'} + '@biomejs/biome@1.9.4': resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} engines: {node: '>=14.21.3'} @@ -306,6 +371,9 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@js-joda/core@5.7.0': + resolution: {integrity: sha512-WBu4ULVVxySLLzK1Ppq+OdfP+adRS4ntmDQT915rzDJ++i95gc2jZkM5B6LWEAwN3lGXpfie3yPABozdD3K3Vg==} + '@napi-rs/wasm-runtime@1.1.4': resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} peerDependencies: @@ -554,6 +622,9 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@tediousjs/connection-string@0.5.0': + resolution: {integrity: sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -569,12 +640,22 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/mssql@9.1.11': + resolution: {integrity: sha512-vcujgrDbDezCxNDO4KY6gjwduLYOKfrexpRUwhoysRvcXZ3+IgZ/PMYFDgh8c3cQIxZ6skAwYo+H6ibMrBWPjQ==} + '@types/node@22.19.17': resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==} '@types/node@25.6.0': resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + '@types/readable-stream@4.0.23': + resolution: {integrity: sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==} + + '@typespec/ts-http-runtime@0.3.5': + resolution: {integrity: sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==} + engines: {node: '>=20.0.0'} + '@vitest/expect@4.1.5': resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} @@ -604,11 +685,19 @@ packages: '@vitest/utils@4.1.5': resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -628,9 +717,22 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@6.1.6: + resolution: {integrity: sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -655,6 +757,10 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -686,15 +792,29 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - drizzle-orm@0.43.1: - resolution: {integrity: sha512-dUcDaZtE/zN4RV/xqGrVSMpnEczxd5cIaoDeor7Zst9wOe/HzC/7eAaulywWGYXdDEc9oBPMjayVEDg0ziTLJA==} + drizzle-orm@1.0.0-beta.23-c10d10c: + resolution: {integrity: sha512-l7KNyUoBLlB3SiSg00VmjpvtDBIztjHXWj7+AkgbNGtsyZpLxdr6orecIUAx0GxDNYIpBp3nicMjpCks1uK69A==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' + '@effect/sql': ^0.48.5 + '@effect/sql-pg': ^0.49.7 '@electric-sql/pglite': '>=0.2.0' '@libsql/client': '>=0.10.0' '@libsql/client-wasm': '>=0.10.0' @@ -702,30 +822,42 @@ packages: '@op-engineering/op-sqlite': '>=2' '@opentelemetry/api': ^1.4.1 '@planetscale/database': '>=1.13' - '@prisma/client': '*' + '@sinclair/typebox': '>=0.34.8' + '@sqlitecloud/drivers': '>=1.0.653' '@tidbcloud/serverless': '*' + '@tursodatabase/database': '>=0.2.1' + '@tursodatabase/database-common': '>=0.2.1' + '@tursodatabase/database-wasm': '>=0.2.1' '@types/better-sqlite3': '*' + '@types/mssql': ^9.1.4 '@types/pg': '*' '@types/sql.js': '*' + '@upstash/redis': '>=1.34.7' '@vercel/postgres': '>=0.8.0' '@xata.io/client': '*' - better-sqlite3: '>=7' + arktype: '>=2.0.0' + better-sqlite3: '>=9.3.0' bun-types: '*' expo-sqlite: '>=14.0.0' gel: '>=2' - knex: '*' - kysely: '*' + mssql: ^11.0.1 mysql2: '>=2' pg: '>=8' postgres: '>=3' - prisma: '*' sql.js: '>=1' sqlite3: '>=5' + typebox: '>=1.0.0' + valibot: '>=1.0.0-beta.7' + zod: ^3.25.0 || ^4.0.0 peerDependenciesMeta: '@aws-sdk/client-rds-data': optional: true '@cloudflare/workers-types': optional: true + '@effect/sql': + optional: true + '@effect/sql-pg': + optional: true '@electric-sql/pglite': optional: true '@libsql/client': @@ -740,20 +872,34 @@ packages: optional: true '@planetscale/database': optional: true - '@prisma/client': + '@sinclair/typebox': + optional: true + '@sqlitecloud/drivers': optional: true '@tidbcloud/serverless': optional: true + '@tursodatabase/database': + optional: true + '@tursodatabase/database-common': + optional: true + '@tursodatabase/database-wasm': + optional: true '@types/better-sqlite3': optional: true + '@types/mssql': + optional: true '@types/pg': optional: true '@types/sql.js': optional: true + '@upstash/redis': + optional: true '@vercel/postgres': optional: true '@xata.io/client': optional: true + arktype: + optional: true better-sqlite3: optional: true bun-types: @@ -762,9 +908,7 @@ packages: optional: true gel: optional: true - knex: - optional: true - kysely: + mssql: optional: true mysql2: optional: true @@ -772,12 +916,19 @@ packages: optional: true postgres: optional: true - prisma: - optional: true sql.js: optional: true sqlite3: optional: true + typebox: + optional: true + valibot: + optional: true + zod: + optional: true + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} @@ -793,6 +944,14 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -827,6 +986,22 @@ packages: github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -836,10 +1011,37 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} + js-md4@0.3.2: + resolution: {integrity: sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==} + + jsonwebtoken@9.0.3: + resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} + engines: {node: '>=12', npm: '>=6'} + + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -925,6 +1127,27 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -944,6 +1167,11 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mssql@11.0.1: + resolution: {integrity: sha512-KlGNsugoT90enKlR8/G36H0kTxPthDhmtNUCwEHvgRza5Cjpjoj+P2X6eMpFUDN7pFrJZsKadL4x990G8RBE1w==} + engines: {node: '>=18'} + hasBin: true + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -955,6 +1183,9 @@ packages: napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + native-duplexpair@1.0.0: + resolution: {integrity: sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==} + node-abi@3.89.0: resolution: {integrity: sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==} engines: {node: '>=10'} @@ -969,6 +1200,10 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -1014,6 +1249,10 @@ packages: deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. hasBin: true + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + pump@3.0.4: resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} @@ -1025,6 +1264,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -1033,6 +1276,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rolldown@1.0.0-rc.16: resolution: {integrity: sha512-rzi5WqKzEZw3SooTt7cgm4eqIoujPIyGcJNGFL7iPEuajQw7vxMHUkXylu4/vhCkJGXsgRmxqMKXUpT6FEgl0g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1043,9 +1289,16 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -1068,6 +1321,9 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + sql.js@1.14.1: resolution: {integrity: sha512-gcj8zBWU5cFsi9WUP+4bFNXAyF1iRpA3LLyS/DP5xlrNzGmPIizUeBggKa8DbDwdqaKwUcTEnChtd2grWo/x/A==} @@ -1096,6 +1352,18 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} + tarn@3.0.2: + resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} + engines: {node: '>=8.0.0'} + + tedious@18.6.2: + resolution: {integrity: sha512-g7jC56o3MzLkE3lHkaFe2ZdOVFBahq5bsB60/M4NYUbocw/MCrS89IOEQUFr+ba6pb8ZHczZ/VqCyYeYq0xBAg==} + engines: {node: '>=18'} + + tedious@19.2.1: + resolution: {integrity: sha512-pk1Q16Yl62iocuQB+RWbg6rFUFkIyzqOFQ6NfysCltRvQqKwfurgj8v/f2X+CKvDhSL4IJ0cCOfCHDg9PWEEYA==} + engines: {node: '>=18.17'} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -1170,6 +1438,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + vite@8.0.9: resolution: {integrity: sha512-t7g7GVRpMXjNpa67HaVWI/8BWtdVIQPCL2WoozXXA7LBGEFK4AkkKkHx2hAQf5x1GZSlcmEDPkVLSGahxnEEZw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1262,6 +1534,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + yaml@2.8.3: resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} @@ -1269,6 +1545,167 @@ packages: snapshots: + '@azure-rest/core-client@2.6.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@typespec/ts-http-runtime': 0.3.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/abort-controller@2.1.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@azure/core-auth@1.10.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.13.1 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/core-client@1.10.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/core-http-compat@2.4.0(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0)': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + optional: true + + '@azure/core-lro@2.7.2': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/core-paging@1.6.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@azure/core-rest-pipeline@1.23.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@typespec/ts-http-runtime': 0.3.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/core-tracing@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@azure/core-util@1.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@typespec/ts-http-runtime': 0.3.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/identity@4.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@azure/msal-browser': 5.8.0 + '@azure/msal-node': 5.1.4 + open: 10.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/keyvault-common@2.1.0': + dependencies: + '@azure-rest/core-client': 2.6.0 + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/keyvault-keys@4.10.0(@azure/core-client@1.10.1)': + dependencies: + '@azure-rest/core-client': 2.6.0 + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-http-compat': 2.4.0(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) + '@azure/core-lro': 2.7.2 + '@azure/core-paging': 1.6.2 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/keyvault-common': 2.1.0 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + optional: true + + '@azure/logger@1.3.0': + dependencies: + '@typespec/ts-http-runtime': 0.3.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@azure/msal-browser@5.8.0': + dependencies: + '@azure/msal-common': 16.5.1 + optional: true + + '@azure/msal-common@16.5.1': + optional: true + + '@azure/msal-node@5.1.4': + dependencies: + '@azure/msal-common': 16.5.1 + jsonwebtoken: 9.0.3 + uuid: 8.3.2 + optional: true + '@biomejs/biome@1.9.4': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.9.4 @@ -1412,6 +1849,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@js-joda/core@5.7.0': + optional: true + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: '@emnapi/core': 1.9.2 @@ -1549,6 +1989,9 @@ snapshots: '@standard-schema/spec@1.1.0': {} + '@tediousjs/connection-string@0.5.0': + optional: true + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 @@ -1557,6 +2000,7 @@ snapshots: '@types/better-sqlite3@7.6.13': dependencies: '@types/node': 22.19.17 + optional: true '@types/chai@5.2.3': dependencies: @@ -1567,6 +2011,16 @@ snapshots: '@types/estree@1.0.8': {} + '@types/mssql@9.1.11(@azure/core-client@1.10.1)': + dependencies: + '@types/node': 22.19.17 + tarn: 3.0.2 + tedious: 19.2.1(@azure/core-client@1.10.1) + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + optional: true + '@types/node@22.19.17': dependencies: undici-types: 6.21.0 @@ -1576,6 +2030,20 @@ snapshots: undici-types: 7.19.2 optional: true + '@types/readable-stream@4.0.23': + dependencies: + '@types/node': 22.19.17 + optional: true + + '@typespec/ts-http-runtime@0.3.5': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + optional: true + '@vitest/expect@4.1.5': dependencies: '@standard-schema/spec': 1.1.0 @@ -1625,33 +2093,68 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + optional: true + acorn@8.16.0: {} + agent-base@7.1.4: + optional: true + any-promise@1.3.0: {} assertion-error@2.0.1: {} - base64-js@1.5.1: {} + base64-js@1.5.1: + optional: true better-sqlite3@11.10.0: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 + optional: true bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 + optional: true bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true + + bl@6.1.6: + dependencies: + '@types/readable-stream': 4.0.23 + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 4.7.0 + optional: true + + buffer-equal-constant-time@1.0.1: + optional: true buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + optional: true + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + optional: true bundle-require@5.1.0(esbuild@0.27.7): dependencies: @@ -1666,12 +2169,16 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@1.1.4: {} + chownr@1.1.4: + optional: true citty@0.1.6: dependencies: consola: 3.4.2 + commander@11.1.0: + optional: true + commander@4.1.1: {} confbox@0.1.8: {} @@ -1687,20 +2194,42 @@ snapshots: decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 + optional: true - deep-extend@0.6.0: {} + deep-extend@0.6.0: + optional: true + + default-browser-id@5.0.1: + optional: true + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + optional: true + + define-lazy-prop@3.0.0: + optional: true detect-libc@2.1.2: {} - drizzle-orm@0.43.1(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(sql.js@1.14.1): + drizzle-orm@1.0.0-beta.23-c10d10c(@types/better-sqlite3@7.6.13)(@types/mssql@9.1.11(@azure/core-client@1.10.1))(better-sqlite3@11.10.0)(mssql@11.0.1(@azure/core-client@1.10.1))(sql.js@1.14.1): optionalDependencies: '@types/better-sqlite3': 7.6.13 + '@types/mssql': 9.1.11(@azure/core-client@1.10.1) better-sqlite3: 11.10.0 + mssql: 11.0.1(@azure/core-client@1.10.1) sql.js: 1.14.1 + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + optional: true + end-of-stream@1.4.5: dependencies: once: 1.4.0 + optional: true es-module-lexer@2.0.0: {} @@ -1737,7 +2266,14 @@ snapshots: dependencies: '@types/estree': 1.0.8 - expand-template@2.0.3: {} + event-target-shim@5.0.1: + optional: true + + events@3.3.0: + optional: true + + expand-template@2.0.3: + optional: true expect-type@1.3.0: {} @@ -1745,7 +2281,8 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - file-uri-to-path@1.0.0: {} + file-uri-to-path@1.0.0: + optional: true fix-dts-default-cjs-exports@1.0.1: dependencies: @@ -1753,21 +2290,95 @@ snapshots: mlly: 1.8.2 rollup: 4.60.2 - fs-constants@1.0.0: {} + fs-constants@1.0.0: + optional: true fsevents@2.3.3: optional: true - github-from-package@0.0.0: {} + github-from-package@0.0.0: + optional: true - ieee754@1.2.1: {} + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + optional: true - inherits@2.0.4: {} + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + optional: true - ini@1.3.8: {} + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ieee754@1.2.1: + optional: true + + inherits@2.0.4: + optional: true + + ini@1.3.8: + optional: true + + is-docker@3.0.0: + optional: true + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + optional: true + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + optional: true joycon@3.1.1: {} + js-md4@0.3.2: + optional: true + + jsonwebtoken@9.0.3: + dependencies: + jws: 4.0.1 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.4 + optional: true + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + optional: true + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + optional: true + lightningcss-android-arm64@1.32.0: optional: true @@ -1823,15 +2434,39 @@ snapshots: load-tsconfig@0.2.5: {} + lodash.includes@4.3.0: + optional: true + + lodash.isboolean@3.0.3: + optional: true + + lodash.isinteger@4.0.4: + optional: true + + lodash.isnumber@3.0.3: + optional: true + + lodash.isplainobject@4.0.6: + optional: true + + lodash.isstring@4.0.1: + optional: true + + lodash.once@4.1.1: + optional: true + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - mimic-response@3.1.0: {} + mimic-response@3.1.0: + optional: true - minimist@1.2.8: {} + minimist@1.2.8: + optional: true - mkdirp-classic@0.5.3: {} + mkdirp-classic@0.5.3: + optional: true mlly@1.8.2: dependencies: @@ -1842,6 +2477,19 @@ snapshots: ms@2.1.3: {} + mssql@11.0.1(@azure/core-client@1.10.1): + dependencies: + '@tediousjs/connection-string': 0.5.0 + commander: 11.1.0 + debug: 4.4.3 + rfdc: 1.4.1 + tarn: 3.0.2 + tedious: 18.6.2(@azure/core-client@1.10.1) + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + optional: true + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -1850,11 +2498,16 @@ snapshots: nanoid@3.3.11: {} - napi-build-utils@2.0.0: {} + napi-build-utils@2.0.0: + optional: true + + native-duplexpair@1.0.0: + optional: true node-abi@3.89.0: dependencies: semver: 7.7.4 + optional: true object-assign@4.1.1: {} @@ -1863,6 +2516,15 @@ snapshots: once@1.4.0: dependencies: wrappy: 1.0.2 + optional: true + + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + optional: true pathe@2.0.3: {} @@ -1905,11 +2567,16 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.4 tunnel-agent: 0.6.0 + optional: true + + process@0.11.10: + optional: true pump@3.0.4: dependencies: end-of-stream: 1.4.5 once: 1.4.0 + optional: true rc@1.2.8: dependencies: @@ -1917,17 +2584,31 @@ snapshots: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + optional: true readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + optional: true + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + optional: true readdirp@4.1.2: {} resolve-from@5.0.0: {} + rfdc@1.4.1: + optional: true + rolldown@1.0.0-rc.16: dependencies: '@oxc-project/types': 0.126.0 @@ -1980,24 +2661,37 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.60.2 fsevents: 2.3.3 - safe-buffer@5.2.1: {} + run-applescript@7.1.0: + optional: true - semver@7.7.4: {} + safe-buffer@5.2.1: + optional: true + + safer-buffer@2.1.2: + optional: true + + semver@7.7.4: + optional: true siginfo@2.0.0: {} - simple-concat@1.0.1: {} + simple-concat@1.0.1: + optional: true simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 + optional: true source-map-js@1.2.1: {} source-map@0.7.6: {} + sprintf-js@1.1.3: + optional: true + sql.js@1.14.1: optional: true @@ -2008,8 +2702,10 @@ snapshots: string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 + optional: true - strip-json-comments@2.0.1: {} + strip-json-comments@2.0.1: + optional: true sucrase@3.35.1: dependencies: @@ -2027,6 +2723,7 @@ snapshots: mkdirp-classic: 0.5.3 pump: 3.0.4 tar-stream: 2.2.0 + optional: true tar-stream@2.2.0: dependencies: @@ -2035,6 +2732,44 @@ snapshots: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true + + tarn@3.0.2: + optional: true + + tedious@18.6.2(@azure/core-client@1.10.1): + dependencies: + '@azure/core-auth': 1.10.1 + '@azure/identity': 4.13.1 + '@azure/keyvault-keys': 4.10.0(@azure/core-client@1.10.1) + '@js-joda/core': 5.7.0 + '@types/node': 22.19.17 + bl: 6.1.6 + iconv-lite: 0.6.3 + js-md4: 0.3.2 + native-duplexpair: 1.0.0 + sprintf-js: 1.1.3 + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + optional: true + + tedious@19.2.1(@azure/core-client@1.10.1): + dependencies: + '@azure/core-auth': 1.10.1 + '@azure/identity': 4.13.1 + '@azure/keyvault-keys': 4.10.0(@azure/core-client@1.10.1) + '@js-joda/core': 5.7.0 + '@types/node': 22.19.17 + bl: 6.1.6 + iconv-lite: 0.7.2 + js-md4: 0.3.2 + native-duplexpair: 1.0.0 + sprintf-js: 1.1.3 + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + optional: true thenify-all@1.6.0: dependencies: @@ -2095,6 +2830,7 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + optional: true typescript@5.9.3: {} @@ -2105,7 +2841,11 @@ snapshots: undici-types@7.19.2: optional: true - util-deprecate@1.0.2: {} + util-deprecate@1.0.2: + optional: true + + uuid@8.3.2: + optional: true vite@8.0.9(@types/node@22.19.17)(esbuild@0.27.7)(yaml@2.8.3): dependencies: @@ -2192,6 +2932,12 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wrappy@1.0.2: {} + wrappy@1.0.2: + optional: true + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + optional: true yaml@2.8.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0aab058..cf8dd26 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,5 +3,4 @@ packages: onlyBuiltDependencies: - "@biomejs/biome" - - better-sqlite3 - esbuild