From 46ef4974f7da5645e4a6c3ae0ee275575b612430 Mon Sep 17 00:00:00 2001 From: zknpr <96851588+zknpr@users.noreply.github.com> Date: Thu, 8 Oct 2026 22:57:42 +0200 Subject: [PATCH 01/15] fix(native): refuse SQL-level ATTACH and DETACH on native connections (#562) The native worker runs SQL on real-filesystem tjs:sqlite handles. Any SQL that reached it could ATTACH an arbitrary path: read every existing SQLite database the user can open, write into it, and turn any existing empty file into a database. A read-only open does not stop this; it blocks writes through the attached schema, not the ATTACH or reads through it. Creating a new file is refused today only because the worker opens without SQLITE_OPEN_CREATE, which attached schemas inherit. No webview RPC reaches this on its own: the view and SQL editor paths wrap user text in CREATE VIEW / SELECT * FROM (...) and enforce one statement with SQLite's own parser. The worker channel itself had no path authority, so any host-side SQL injection or future raw-SQL feature would have become arbitrary file read/write. The guard is installed once on Database.prototype and AsyncDatabase.prototype before any connection exists, so it covers the primary handle, the AsyncDatabase reader and dedicated cell-read snapshots, and every RPC that reaches SQL (query, queryNumeric, queryBatch, querySingle, run, runSingle, exec, execBatch, prepare/stmtRun, queryBounded, queryExportSpool, describeReadQuery, compileBatch, workspaceQuery, workspaceQueryPlan): - prepare, allAsync and AsyncDatabase.all/run compile only the first statement, so they refuse a leading ATTACH/DETACH, also behind EXPLAIN or EXPLAIN QUERY PLAN. Leading trivia is skipped as tokenize.c does: whitespace, -- comments to \n only, unnested /* */ comments, the ; of empty statements, and a U+FEFF byte-order mark at a token start. - exec ran every statement natively. It now walks the script through the guarded prepare one statement at a time, with SQLite's parser finding each boundary, so a later ATTACH is checked before it compiles. - Non-string SQL is refused because the binding coerces it with ToString: ['ATTACH ...'] would otherwise compile unchecked. ATTACH/DETACH cannot nest in WITH, a subquery, VALUES, a compound SELECT, CREATE VIEW or a trigger body, and sqlite_attach() is not callable by name, so checking each statement's leading verb is complete. EXPLAIN ATTACH is inert on SQLite 3.51.2 and is refused anyway. The refusal message carries ERR_NATIVE_SQL_ATTACH_BLOCKED, which survives the string-only worker IPC. The worker's own SAVEPOINT, PRAGMA journal_mode, CREATE/DROP TEMP VIEW and VACUUM INTO statements are unaffected. The native smoke test that attached ':memory:' to build a TEMP trigger bound to an attached schema now asserts that the ATTACH is refused. That state can no longer exist on a native connection. WASM tests still cover the rebind refusal. --- natives/native-worker.js | 151 +++++++++++ tests/unit/native_attach_guard.test.ts | 350 +++++++++++++++++++++++++ tests/unit/native_real_smoke.test.ts | 72 ++--- 3 files changed, 528 insertions(+), 45 deletions(-) create mode 100644 tests/unit/native_attach_guard.test.ts diff --git a/natives/native-worker.js b/natives/native-worker.js index a6a16c63..ca2ff013 100644 --- a/natives/native-worker.js +++ b/natives/native-worker.js @@ -49,6 +49,157 @@ function describeNativeError(error, fallback) { + `... [truncated from ${message.length} characters]`; } +// ============================================================================ +// SQL Path Authority +// ============================================================================ + +/** + * Stable identity of the ATTACH/DETACH refusal. Worker errors cross IPC as + * plain strings, so the code is part of the message as well as `error.code`. + */ +const NATIVE_SQL_ATTACH_BLOCKED = 'ERR_NATIVE_SQL_ATTACH_BLOCKED'; + +/** SQLite's whitespace (sqlite3Isspace): space and \t \n \v \f \r. */ +function isSqliteSpace(code) { + return code === 0x20 || (code >= 0x09 && code <= 0x0d); +} + +/** SQLite's IdChar: ASCII letters, digits, `_`, `$`, and every code unit >= 0x80. */ +function isSqliteIdChar(code) { + return (code >= 0x61 && code <= 0x7a) || (code >= 0x41 && code <= 0x5a) + || (code >= 0x30 && code <= 0x39) || code === 0x5f || code === 0x24 || code >= 0x80; +} + +/** + * Skip the whitespace and comments SQLite skips before a token, mirroring + * tokenize.c: `--` runs to `\n` only, `/*` to the first `*\/` (no nesting; an + * unterminated comment runs to the end), and a U+FEFF byte-order mark at a + * token start is whitespace (CC_BOM), so `\uFEFFATTACH ...` runs the ATTACH. + * Between statements SQLite also skips the `;` of empty statements, so + * `;; ATTACH ...` compiles the ATTACH. + */ +function skipSqlTrivia(sql, index, skipEmptyStatements) { + for (;;) { + const code = sql.charCodeAt(index); + if (isSqliteSpace(code) || code === 0xfeff || (skipEmptyStatements && code === 0x3b)) { + index++; + } else if (code === 0x2d && sql.charCodeAt(index + 1) === 0x2d) { + const end = sql.indexOf('\n', index + 2); + index = end < 0 ? sql.length : end; + } else if (code === 0x2f && sql.charCodeAt(index + 1) === 0x2a) { + const end = sql.indexOf('*/', index + 2); + index = end < 0 ? sql.length : end + 2; + } else { + return index; + } + } +} + +/** + * The keyword-shaped token at `index`, ASCII-lowercased, and where it ends. + * SQLite folds keyword case in ASCII only, so a token containing anything but + * ASCII letters is an identifier and never one of the keywords compared here. + */ +function readSqlWord(sql, index) { + let end = index; + while (end < sql.length && isSqliteIdChar(sql.charCodeAt(end))) end++; + const word = sql.slice(index, end); + return { word: /^[A-Za-z]+$/.test(word) ? word.toLowerCase() : word, end }; +} + +/** + * The verb of the first statement SQLite would compile from `sql`, looking + * through `EXPLAIN` and `EXPLAIN QUERY PLAN`. + */ +function leadingStatementVerb(sql) { + let token = readSqlWord(sql, skipSqlTrivia(sql, 0, true)); + if (token.word !== 'explain') return token.word; + token = readSqlWord(sql, skipSqlTrivia(sql, token.end, false)); + if (token.word !== 'query') return token.word; + token = readSqlWord(sql, skipSqlTrivia(sql, token.end, false)); + if (token.word !== 'plan') return token.word; + return readSqlWord(sql, skipSqlTrivia(sql, token.end, false)).word; +} + +/** + * Refuse SQL that would ATTACH or DETACH a database. + * + * The connections here are real-filesystem SQLite handles. ATTACH opens any + * path the process can reach: it reads every existing database, writes into + * it, and turns any existing empty file into one (even under a read-only + * open, which blocks writes through the attached schema but not ATTACH or the + * reads). It would make the bound path meaningless, so it is never allowed. + * + * Checking the first statement's leading verb is complete because ATTACH and + * DETACH only exist as a whole statement: SQLite rejects them at compile time + * inside WITH, a subquery, VALUES or a trigger body, and the `sqlite_attach` + * function they compile to is not callable by name. Every caller passes a + * string whose FIRST statement is the only one it compiles (prepare, allAsync, + * AsyncDatabase.all/run); exec, which runs every statement, is rebuilt below + * as a per-statement walk that checks each one before compiling it. + * + * EXPLAIN ATTACH lists opcodes without running them and opens nothing on the + * bundled SQLite 3.51.2; it is refused anyway so this guard never depends on + * EXPLAIN semantics. Non-string SQL is refused because the binding coerces it + * with ToString: an array ['ATTACH ...'] would otherwise compile unchecked. + */ +function assertSqlPathAuthority(sql) { + if (typeof sql !== 'string') { + throw new TypeError('Native SQLite requires SQL text as a string'); + } + const verb = leadingStatementVerb(sql); + if (verb !== 'attach' && verb !== 'detach') return; + const error = new Error( + `${verb.toUpperCase()} is not allowed on the native SQLite engine: it can open, read ` + + 'or write a database file outside the one this editor opened. ' + + `(${NATIVE_SQL_ATTACH_BLOCKED})` + ); + error.code = NATIVE_SQL_ATTACH_BLOCKED; + throw error; +} + +/** + * Install the guard on the connection classes themselves, once, before any + * connection exists. Every handle this worker opens (the primary, the + * AsyncDatabase reader, dedicated cell-read snapshots) and every RPC that + * reaches SQL then goes through it, including any added later. + */ +function installSqlPathAuthorityGuard() { + const rawPrepare = Database.prototype.prepare; + Database.prototype.prepare = function prepare(sql, ...rest) { + assertSqlPathAuthority(sql); + return rawPrepare.call(this, sql, ...rest); + }; + + // The native exec runs every statement in the string, so checking only the + // first would miss `SELECT 1; ATTACH ...`. Executing one statement at a + // time through the guarded prepare lets SQLite's own parser find each + // boundary, and runs earlier DDL before a later statement that needs it is + // compiled. This is what sqlite3_exec does internally (prepare, step to + // completion, finalize), so the worker's own statements keep their meaning. + Database.prototype.exec = function exec(sql) { + executeQuery(this, sql, []); + }; + + const guardAsync = (prototype, name) => { + const raw = prototype?.[name]; + if (typeof raw !== 'function') return; + prototype[name] = function (sql, ...rest) { + try { + assertSqlPathAuthority(sql); + } catch (error) { + return Promise.reject(error); + } + return raw.call(this, sql, ...rest); + }; + }; + guardAsync(Database.prototype, 'allAsync'); + guardAsync(AsyncDatabase?.prototype, 'all'); + guardAsync(AsyncDatabase?.prototype, 'run'); +} + +installSqlPathAuthorityGuard(); + // Both stdio handles changed API in the same txiki generation. Detect once so // the legacy path stays identical and the WHATWG handles remain locked to one // reader/writer for the worker's lifetime. diff --git a/tests/unit/native_attach_guard.test.ts b/tests/unit/native_attach_guard.test.ts new file mode 100644 index 00000000..d05e9b05 --- /dev/null +++ b/tests/unit/native_attach_guard.test.ts @@ -0,0 +1,350 @@ +import './vscode_mock_setup'; // Must be first + +import assert from 'node:assert/strict'; +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import { DatabaseSync } from 'node:sqlite'; +import { it, type TestContext } from 'node:test'; + +import { NativeWorkerProcess } from '../../src/nativeWorker'; + +/** + * SQL-level ATTACH on the native engine's real-filesystem connection opens or + * creates any path SQLite can reach, so the worker refuses ATTACH/DETACH on + * every connection it opens. These tests drive the bundled txiki runtime + * through the raw host->worker RPC channel: that channel, not a host helper, + * is the boundary the guard has to hold. + */ + +const BLOCKED = /ERR_NATIVE_SQL_ATTACH_BLOCKED/; +const NOT_TEXT = /Native SQLite requires SQL text as a string/; +const SECRET = 'TOP-SECRET-OUTSIDE-BOUND-PATH'; +const BOUNDARY = '/*sqlite_explorer_boundary_attach_guard*/'; + +interface QueryResult { + columns: string[]; + values: unknown[][]; + resultSets?: QueryResult[]; +} + +function bundledRuntime(): { binary: string; library: string } | undefined { + const target = process.platform === 'darwin' + ? (process.arch === 'arm64' ? 'aarch64-macos' : 'x86_64-macos') + : process.platform === 'linux' + ? (process.arch === 'arm64' ? 'aarch64-linux-gnu' : 'x86_64-linux-gnu') + : process.platform === 'win32' && process.arch === 'x64' ? 'x86_64-windows' : undefined; + if (!target) return undefined; + const directory = path.join(process.cwd(), 'natives', target); + const binary = path.join(directory, process.platform === 'win32' ? 'tjs.exe' : 'tjs'); + const suffix = process.platform === 'darwin' ? 'dylib' : process.platform === 'win32' ? 'dll' : 'so'; + return fs.existsSync(binary) + ? { binary, library: path.join(directory, `query-plan.${suffix}`) } + : undefined; +} + +function render(value: unknown): string { + try { + return JSON.stringify(value, (_key, item) => typeof item === 'bigint' ? `${item}n` : item); + } catch { + return String(value); + } +} + +async function startFixture(t: TestContext) { + const runtime = bundledRuntime(); + if (!runtime) { + t.skip(`no bundled native runtime for ${process.platform}-${process.arch}`); + return undefined; + } + const root = process.cwd(); + fs.mkdirSync(path.join(root, '.tmp'), { recursive: true }); + const directory = fs.mkdtempSync(path.join(root, '.tmp', 'native-attach-guard-')); + // The bound database and the attacker's targets live in sibling + // directories: nothing under outside/ is reachable through the bound path. + const boundDirectory = path.join(directory, 'bound'); + const outsideDirectory = path.join(directory, 'outside'); + fs.mkdirSync(boundDirectory); + fs.mkdirSync(outsideDirectory); + const bound = path.join(boundDirectory, 'bound.sqlite'); + const secret = path.join(outsideDirectory, 'secret.sqlite'); + for (const [file, sql] of [ + [bound, "CREATE TABLE entries(id INTEGER PRIMARY KEY, value TEXT); INSERT INTO entries VALUES (1, 'kept');"], + [secret, `CREATE TABLE secret(v TEXT); INSERT INTO secret VALUES ('${SECRET}');`] + ] as const) { + const seed = new DatabaseSync(file); + try { seed.exec(sql); } finally { seed.close(); } + } + // SQLite treats an existing zero-byte file as an empty database, so ATTACH + // can turn any empty file the user owns into one. + const emptyFile = path.join(outsideDirectory, 'empty.bin'); + fs.writeFileSync(emptyFile, new Uint8Array(0)); + const outsideSeen = new Set(fs.readdirSync(outsideDirectory)); + let emptyFileSize = 0; + + const worker = new NativeWorkerProcess(runtime.binary, path.join(root, 'natives', 'native-worker.js')); + await worker.start(); + t.after(() => { + worker.stop(); + fs.rmSync(directory, { recursive: true, force: true }); + }); + await worker.call('open', [bound, false]); + + let counter = 0; + const outsidePath = (label: string) => path.join(outsideDirectory, `${label}-${++counter}.sqlite`); + const query = (sql: string, params?: unknown[]) => worker.call('query', [sql, params]); + const attachedSchemas = async () => (await query('PRAGMA database_list')).values + .map(row => String(row[1])) + .filter(name => name !== 'main' && name !== 'temp'); + + /** + * Observable effects of an executed ATTACH since the last call: an extra + * schema on the connection, or a file the bound path does not cover. Any + * schema found is detached so one executed case cannot mask the next. + */ + const sideEffects = async (): Promise => { + const effects: string[] = []; + for (const schema of await attachedSchemas()) { + effects.push(`schema "${schema}" attached`); + try { + await worker.call('exec', [`DETACH DATABASE "${schema}"`]); + } catch (error) { + effects.push(`could not detach "${schema}": ${(error as Error).message}`); + } + } + // Report each file effect once, so a later case is not blamed for it. + for (const entry of fs.readdirSync(outsideDirectory)) { + if (outsideSeen.has(entry)) continue; + outsideSeen.add(entry); + effects.push(`created outside/${entry}`); + } + const size = fs.statSync(emptyFile).size; + if (size !== emptyFileSize) { + effects.push(`wrote ${size} bytes into outside/empty.bin`); + emptyFileSize = size; + } + return effects; + }; + + const control = async () => { + assert.deepEqual((await query('SELECT value FROM entries')).values, [['kept']], + 'a benign read on the same connection must keep working'); + }; + + return { worker, runtime, directory, bound, secret, emptyFile, outsidePath, query, attachedSchemas, sideEffects, control }; +} + +type Fixture = NonNullable>>; + +/** + * Run one attempt and describe what the native worker actually did. Returns + * undefined only for a policy refusal that left no side effect. + */ +async function refusalProblem( + f: Fixture, + label: string, + attempt: () => Promise, + expectedRefusal: RegExp = BLOCKED +): Promise { + let outcome: unknown; + let failure: Error | undefined; + try { + outcome = await attempt(); + } catch (error) { + failure = error as Error; + } + const effects = await f.sideEffects(); + if (failure === undefined) { + return `${label}: EXECUTED by the native worker; result=${render(outcome)}` + + (effects.length > 0 ? `; side effects: ${effects.join(', ')}` : ''); + } + if (!expectedRefusal.test(failure.message)) { + return `${label}: refused for an unrelated reason (${failure.message})` + + (effects.length > 0 ? `; side effects: ${effects.join(', ')}` : ''); + } + if (effects.length > 0) return `${label}: refused but left side effects: ${effects.join(', ')}`; + return undefined; +} + +it('refuses SQL-level ATTACH that reads a database outside the bound path', async t => { + const f = await startFixture(t); if (!f) return; + await f.control(); + + const readSecret = `SELECT 1 AS ok; ATTACH DATABASE '${f.secret}' AS leak; SELECT v FROM leak.secret`; + const writable = await refusalProblem(f, 'query: ATTACH as 2nd statement, then read', () => f.query(readSecret)); + + // A read-only open does not help: it blocks writes through the attached + // schema, never the ATTACH itself or a read through it. + await f.worker.call('open', [f.bound, true]); + const readOnly = await refusalProblem(f, 'read-only open: ATTACH, then read', () => f.query(readSecret)); + await f.worker.call('open', [f.bound, false]); + + assert.deepEqual([writable, readOnly].filter(problem => problem !== undefined), []); + await f.control(); +}); + +it('refuses SQL-level ATTACH that writes files outside the bound path', async t => { + const f = await startFixture(t); if (!f) return; + await f.control(); + + const problems: string[] = []; + const record = (problem: string | undefined) => { if (problem !== undefined) problems.push(problem); }; + + // Write into an existing SQLite database outside the bound directory. + record(await refusalProblem(f, 'exec: ATTACH an existing outside database, CREATE TABLE, INSERT', () => f.worker.call('exec', [ + `ATTACH '${f.secret}' AS planted; CREATE TABLE planted.injected(a); INSERT INTO planted.injected VALUES ('written')` + ]))); + const secretCopy = new DatabaseSync(f.secret, { readOnly: true }); + try { + const injected = secretCopy.prepare("SELECT name FROM sqlite_schema WHERE name = 'injected'").all(); + if (injected.length > 0) problems.push('outside/secret.sqlite now contains table "injected"'); + } finally { + secretCopy.close(); + } + + // Turn an existing empty file into a database. + record(await refusalProblem(f, 'exec: ATTACH an existing empty file, CREATE TABLE', () => f.worker.call('exec', [ + `ATTACH '${f.emptyFile}' AS planted_empty; CREATE TABLE planted_empty.t(a); INSERT INTO planted_empty.t VALUES ('written')` + ]))); + + // Create a new file. The worker opens without SQLITE_OPEN_CREATE, which + // attached schemas inherit, so SQLite itself refuses this one today; the + // guard must refuse it before SQLite is consulted at all. + const target = f.outsidePath('created'); + record(await refusalProblem(f, 'exec: ATTACH a new path, CREATE TABLE', () => f.worker.call('exec', [ + `ATTACH '${target}' AS planted_new; CREATE TABLE planted_new.t(a)` + ]))); + + assert.deepEqual(problems, []); + assert.equal(fs.existsSync(target), false); + await f.control(); +}); + +it('refuses ATTACH and DETACH at every SQL entry point of the native worker', async t => { + const f = await startFixture(t); if (!f) return; + const { worker } = f; + + const cases: Array<[string, (target: string, alias: string) => Promise, RegExp?]> = [ + ['query', (p, a) => f.query(`ATTACH '${p}' AS ${a}`)], + ['query: 2nd of three statements', (p, a) => f.query(`SELECT 1; ATTACH '${p}' AS ${a}; SELECT 2`)], + ['query: block and line comments first', (p, a) => f.query(`/* leading */ -- line comment\n ATTACH '${p}' AS ${a}`)], + ['query: empty statements, mixed case', (p, a) => f.query(`;;\n\t; AtTaCh DATABASE '${p}' AS ${a}`)], + // SQLite skips a U+FEFF byte-order mark at any token start (CC_BOM). + ['query: byte-order mark after a comment', (p, a) => f.query(`/**/\uFEFFATTACH '${p}' AS ${a}`)], + ['exec: byte-order mark before the 2nd statement', (p, a) => worker.call('exec', [`SELECT 1;\uFEFF\uFEFFATTACH '${p}' AS ${a}`])], + ['query: bound filename', (p, a) => f.query(`ATTACH ? AS ${a}`, [p])], + ['queryNumeric', (p, a) => worker.call('queryNumeric', [`ATTACH '${p}' AS ${a}`, [], ['x']])], + ['queryBatch: 2nd item', (p, a) => worker.call('queryBatch', [[{ sql: 'SELECT 1' }, { sql: `ATTACH '${p}' AS ${a}` }]])], + ['querySingle', (p, a) => worker.call('querySingle', [`ATTACH '${p}' AS ${a}\n${BOUNDARY}`, [], BOUNDARY])], + ['run', (p, a) => worker.call('run', [`ATTACH '${p}' AS ${a}`])], + ['runSingle', (p, a) => { + const sql = `ATTACH '${p}' AS ${a}`; + return worker.call('runSingle', [`${sql}\n${BOUNDARY}`, sql, [], BOUNDARY]); + }], + ['exec: 2nd statement', (p, a) => worker.call('exec', [`SELECT 1; ATTACH '${p}' AS ${a}`])], + ['execBatch', (p, a) => worker.call('execBatch', [[{ sql: `ATTACH '${p}' AS ${a}` }]])], + ['execBatch: paramsList', (p, a) => worker.call('execBatch', [[{ sql: `ATTACH ? AS ${a}`, paramsList: [[p]] }]])], + ['prepare + stmtRun', async (p, a) => { + const { stmtId } = await worker.call<{ stmtId: number }>('prepare', [`ATTACH ? AS ${a}`]); + return worker.call('stmtRun', [stmtId, [p]]); + }], + ['queryBounded', (p, a) => { + const sql = `ATTACH '${p}' AS ${a}`; + return worker.call('queryBounded', [`${sql}\n${BOUNDARY}`, sql, BOUNDARY, ['x'], undefined, 1, 5000]); + }], + ['workspaceQuery: primary allAsync', (p, a) => worker.call('workspaceQuery', [`ATTACH '${p}' AS ${a}`, BOUNDARY, [], [], 5000])], + ['workspaceQueryPlan: primary allAsync', (p, a) => worker.call('workspaceQueryPlan', [`ATTACH '${p}' AS ${a}`, [], f.runtime.library, 5000])], + // The binding coerces non-string SQL with ToString, so an array whose + // only element is the statement compiles exactly like the string. + ['prepare: SQL as a one-element array', async (p, a) => { + const { stmtId } = await worker.call<{ stmtId: number }>('prepare', [[`ATTACH '${p}' AS ${a}`]]); + return worker.call('stmtRun', [stmtId, []]); + }, NOT_TEXT], + ['workspaceQueryPlan: SQL as a one-element array', (p, a) => worker.call('workspaceQueryPlan', [[`ATTACH '${p}' AS ${a}`], [], f.runtime.library, 5000]), NOT_TEXT], + // EXPLAIN of an ATTACH is inert on SQLite 3.51.2 (it lists opcodes and + // opens nothing); it is refused anyway so the guard never depends on that. + ['query: EXPLAIN ATTACH', (p, a) => f.query(`EXPLAIN ATTACH '${p}' AS ${a}`)], + ['query: EXPLAIN QUERY PLAN ATTACH', (p, a) => f.query(`EXPLAIN /* c */ QUERY\nPLAN ATTACH '${p}' AS ${a}`)], + ]; + + // Every case targets the existing outside database: an executed ATTACH + // then shows up as an attached schema rather than as an open failure. + const problems: string[] = []; + let index = 0; + for (const [label, attempt, expectedRefusal] of cases) { + const alias = `guard_${++index}`; + const problem = await refusalProblem(f, label, () => attempt(f.secret, alias), expectedRefusal); + if (problem !== undefined) problems.push(problem); + } + + // compileBatch reports compile failures per probe instead of rejecting. + const compiled = await worker.call<{ errors: Array }>('compileBatch', [[ + `EXPLAIN ATTACH '${f.secret}' AS compile_probe` + ]]); + if (!BLOCKED.test(compiled.errors[0] ?? '')) { + problems.push(`compileBatch: EXPLAIN ATTACH compiled (errors=${render(compiled.errors)})`); + } + + // DETACH needs a schema to detach. Before the fix the ATTACH below + // succeeds; after it, the ATTACH is refused and the DETACH must be too. + try { await worker.call('exec', [`ATTACH '${f.secret}' AS detach_target`]); } catch { /* refused */ } + for (const [label, sql] of [ + ['query: DETACH', 'DETACH DATABASE detach_target'], + ['run: comment-prefixed DETACH', '/* c */ DETACH detach_target'], + ['exec: DETACH main', 'SELECT 1; DETACH main'] + ] as const) { + let outcome: unknown; + let failure: Error | undefined; + try { + outcome = await worker.call(label.startsWith('exec') ? 'exec' : label.startsWith('run') ? 'run' : 'query', [sql]); + } catch (error) { + failure = error as Error; + } + if (failure === undefined) problems.push(`${label}: EXECUTED; result=${render(outcome)}`); + else if (!BLOCKED.test(failure.message)) problems.push(`${label}: refused for an unrelated reason (${failure.message})`); + } + const leftover = await f.sideEffects(); + if (leftover.length > 0) problems.push(`after DETACH cases: ${leftover.join(', ')}`); + + assert.deepEqual(problems, []); + await f.control(); +}); + +it('keeps the worker\'s own SQL and benign scripts working (control arm)', async t => { + const f = await startFixture(t); if (!f) return; + const { worker } = f; + await f.control(); + + // exec runs a multi-statement script whose later statement depends on the + // DDL of an earlier one, so each statement must execute before the next compiles. + await worker.call('exec', ["CREATE TABLE made(a TEXT); INSERT INTO made VALUES ('ok'); -- trailing comment\n"]); + assert.deepEqual((await f.query('SELECT a FROM made')).values, [['ok']]); + + // Mentioning attach/detach as an identifier, a string or a column is not ATTACH. + await worker.call('run', ['CREATE TABLE attach_log(detach TEXT, "attach" TEXT, attach_count INTEGER)']); + await worker.call('run', ["INSERT INTO attach_log VALUES ('ATTACH x', 'DETACH y', 1)"]); + const mentions = await f.query("SELECT detach, \"attach\", attach_count FROM attach_log; SELECT 'ATTACH ''q'' AS z' AS word"); + assert.deepEqual(mentions.resultSets?.map(set => set.values), [[['ATTACH x', 'DETACH y', 1]], [["ATTACH 'q' AS z"]]]); + + // Internal statements: the execBatch SAVEPOINT bracket, PRAGMA journal_mode, + // compile-only EXPLAIN probes, the primary allAsync read and VACUUM INTO. + await worker.call('execBatch', [[{ sql: 'INSERT INTO made VALUES (?)', params: ['batched'] }]]); + await worker.call('setJournalMode', ['wal']); + assert.equal((await f.query('PRAGMA journal_mode')).values[0][0], 'wal'); + await worker.call('setJournalMode', ['delete']); + assert.equal((await f.query('PRAGMA journal_mode')).values[0][0], 'delete'); + assert.deepEqual((await worker.call<{ errors: unknown[] }>('compileBatch', [['EXPLAIN SELECT a FROM made']])).errors, [null]); + const read = await worker.call<{ values: unknown[][] }>('workspaceQuery', ['SELECT a FROM made ORDER BY rowid', BOUNDARY, [], ['a'], 5000]); + assert.deepEqual(read.values, [['ok'], ['batched']]); + + const snapshot = path.join(f.directory, 'snapshot.sqlite'); + await worker.call('vacuumInto', [snapshot, 5000]); + const copy = new DatabaseSync(snapshot, { readOnly: true }); + try { + assert.deepEqual(copy.prepare('SELECT a FROM made ORDER BY rowid').all().map(row => row.a), ['ok', 'batched']); + } finally { + copy.close(); + } + + assert.deepEqual(await f.attachedSchemas(), []); + await f.control(); +}); diff --git a/tests/unit/native_real_smoke.test.ts b/tests/unit/native_real_smoke.test.ts index 5707449c..e59554c4 100644 --- a/tests/unit/native_real_smoke.test.ts +++ b/tests/unit/native_real_smoke.test.ts @@ -472,6 +472,21 @@ it('passes the native view smoke lane through the bundled txiki worker', async ( ); const engine = connection.databaseOps; + await testContext.test('refuses SQL-level ATTACH through the native host operations', async () => { + // The read-only copy is an existing database the bound path does + // not cover; before the guard this attached it and read through it. + await assert.rejects( + engine.executeQuery(`SELECT 1; ATTACH '${readOnlyDatabasePath}' AS smoke_attached`), + /ERR_NATIVE_SQL_ATTACH_BLOCKED/ + ); + const schemas = await engine.executeQuery('PRAGMA database_list'); + assert.deepStrictEqual( + schemas[0].rows.map(row => row[1]).filter(name => name !== 'main' && name !== 'temp'), + [] + ); + assert.deepStrictEqual((await engine.executeQuery('SELECT 1 AS ok'))[0].rows, [[1]]); + }); + await testContext.test('serializes through an isolated native snapshot', async () => { const snapshot = await engine.serializeDatabase(); assert.strictEqual( @@ -4531,54 +4546,21 @@ SELECT value AS x, value * 10 AS x FROM sequence`; ); }); - await testContext.test('refuses to rebind a native TEMP trigger historically attached elsewhere', async () => { - await engine.executeQuery("ATTACH DATABASE ':memory:' AS native_aux_history"); - await engine.executeQuery( - 'CREATE TABLE native_aux_history.native_historical_rows (value INTEGER)' - ); - await engine.executeQuery( - 'CREATE VIEW native_aux_history.native_historical_view AS ' + - 'SELECT value FROM native_historical_rows' - ); - await engine.executeQuery( - 'CREATE TEMP TABLE native_historical_log (value INTEGER)' - ); - await engine.executeQuery( - 'CREATE TEMP TRIGGER native_historical_aux_insert ' + - 'INSTEAD OF INSERT ON native_historical_view ' + - 'BEGIN INSERT INTO native_historical_log VALUES (NEW.value); END' - ); - await engine.executeQuery('CREATE TABLE native_historical_main_rows (value INTEGER)'); - await engine.executeQuery( - 'CREATE VIEW native_historical_view AS ' + - 'SELECT value FROM native_historical_main_rows' - ); - - const browsed = await engine.getViewDefinition('native_historical_view'); - assert.deepStrictEqual(browsed.triggers, []); - assert.deepStrictEqual( - browsed.ambiguousTemporaryTriggerNames, - ['native_historical_aux_insert'] - ); - await assert.rejects( - engine.editView( - 'native_historical_view', - 'SELECT value * 2 AS value FROM native_historical_main_rows', - true - ), - /native_historical_aux_insert.*TEMP trigger.*schema-qualified target/is - ); + await testContext.test('cannot bind a native TEMP trigger to an attached schema', async () => { + // Native connections refuse every ATTACH, including ':memory:' + // (which opens no file), so a TEMP trigger historically bound to an + // attached schema cannot exist here. The rebind refusal for that + // state stays covered on WASM in view_operations.test.ts and + // web_demo_worker.test.ts, whose in-memory VFS has no path to escape. await assert.rejects( - engine.executeQuery('INSERT INTO main.native_historical_view VALUES (23)'), - /cannot modify.*view|SQL logic error/i - ); - await engine.executeQuery( - 'INSERT INTO native_aux_history.native_historical_view VALUES (29)' + engine.executeQuery("ATTACH DATABASE ':memory:' AS native_aux_history"), + /ERR_NATIVE_SQL_ATTACH_BLOCKED/ ); - const logged = await engine.executeQuery( - 'SELECT value FROM native_historical_log' + const schemas = await engine.executeQuery('PRAGMA database_list'); + assert.deepStrictEqual( + schemas[0].rows.map(row => row[1]).filter(name => name !== 'main' && name !== 'temp'), + [] ); - assert.strictEqual(logged[0].rows[0][0], 29); }); await testContext.test('preserves a bracket-qualified main TEMP trigger through a temp shadow', async () => { From 2014c93e278f3e5ed5530ac6f99377e01725b314 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 17:46:15 +0200 Subject: [PATCH 02/15] chore(deps): bump the root-routine-updates group across 1 directory with 6 updates (#566) Bumps the root-routine-updates group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [sql.js](https://github.com/sql-js/sql.js) | `1.14.2` | `1.15.0` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.5.1` | `26.6.5` | | [mocha](https://github.com/mochajs/mocha) | `12.0.1` | `12.0.3` | | [ovsx](https://github.com/eclipse-openvsx/openvsx/tree/HEAD/cli) | `1.2.0` | `1.3.0` | | [playwright-core](https://github.com/microsoft/playwright) | `1.63.0` | `1.64.1` | | [tsx](https://github.com/privatenumber/tsx) | `4.23.13` | `4.23.15` | Updates `sql.js` from 1.14.2 to 1.15.0 - [Release notes](https://github.com/sql-js/sql.js/releases) - [Commits](https://github.com/sql-js/sql.js/compare/v1.14.2...v1.15.0) Updates `@types/node` from 26.5.1 to 26.6.5 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `mocha` from 12.0.1 to 12.0.3 - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v12.0.1...v12.0.3) Updates `ovsx` from 1.2.0 to 1.3.0 - [Release notes](https://github.com/eclipse-openvsx/openvsx/releases) - [Changelog](https://github.com/eclipse-openvsx/openvsx/blob/main/cli/CHANGELOG.md) - [Commits](https://github.com/eclipse-openvsx/openvsx/commits/v1.3.0/cli) Updates `playwright-core` from 1.63.0 to 1.64.1 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.63.0...v1.64.1) Updates `tsx` from 4.23.13 to 4.23.15 - [Release notes](https://github.com/privatenumber/tsx/releases) - [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs) - [Commits](https://github.com/privatenumber/tsx/compare/v4.23.13...v4.23.15) --- updated-dependencies: - dependency-name: sql.js dependency-version: 1.15.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: root-routine-updates - dependency-name: "@types/node" dependency-version: 26.6.5 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: root-routine-updates - dependency-name: mocha dependency-version: 12.0.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: root-routine-updates - dependency-name: ovsx dependency-version: 1.3.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: root-routine-updates - dependency-name: playwright-core dependency-version: 1.64.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: root-routine-updates - dependency-name: tsx dependency-version: 4.23.15 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: root-routine-updates ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 508 +++++++++++++++++++++++++++++----------------- package.json | 12 +- 2 files changed, 327 insertions(+), 193 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81a5f605..f252ba6a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,20 +26,20 @@ "@scure/base": "^2.4.0", "@vscode/codicons": "^0.0.45", "@vscode/extension-telemetry": "^1.5.2", - "sql.js": "^1.14.2" + "sql.js": "^1.15.0" }, "devDependencies": { - "@types/node": "^26.5.1", + "@types/node": "^26.6.5", "@types/vscode": "=1.110.0", "@vscode/test-electron": "^3.1.0", "@vscode/vsce": "^3.9.2", "esbuild": "^0.28.2", "esbuild-plugin-polyfill-node": "^0.3.0", - "mocha": "^12.0.1", - "ovsx": "1.2.0", - "playwright-core": "1.63.0", + "mocha": "^12.0.3", + "ovsx": "1.3.0", + "playwright-core": "1.64.1", "ts-node": "^10.9.2", - "tsx": "^4.23.13", + "tsx": "^4.23.15", "typescript": "^6.0.3" }, "engines": { @@ -108,6 +108,16 @@ "node": ">=18.0.0" } }, + "node_modules/@azure/core-process": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@azure/core-process/-/core-process-1.0.0.tgz", + "integrity": "sha512-/shnJ+ooO8WPxDhPEeI/2oRQuubn16gZ6CvlbpWbEswZfzwI9tI/sMAHmF3x1LuQ9yZYXfLW3TjzGMLEC5blKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22.0.0" + } + }, "node_modules/@azure/core-rest-pipeline": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", @@ -156,26 +166,27 @@ } }, "node_modules/@azure/identity": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz", - "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.14.0.tgz", + "integrity": "sha512-8utCLdTZn14CiAe0HW4JbtzUMsc0mdDwnjUvStFMrR4IxQP8S2eL9zVAdplpfORVJGYmidZElpeXRYjJQ4UyUw==", "dev": true, "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.9.0", "@azure/core-client": "^1.9.2", + "@azure/core-process": "^1.0.0", "@azure/core-rest-pipeline": "^1.17.0", "@azure/core-tracing": "^1.0.0", "@azure/core-util": "^1.11.0", "@azure/logger": "^1.0.0", "@azure/msal-browser": "^5.5.0", - "@azure/msal-node": "^5.1.0", - "open": "^10.1.0", + "@azure/msal-node": "^6.0.0", + "open": "^11.0.0", "tslib": "^2.2.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" } }, "node_modules/@azure/logger": { @@ -216,19 +227,29 @@ } }, "node_modules/@azure/msal-node": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.2.2.tgz", - "integrity": "sha512-toS+2AePxqyzb0YOKttDOOiSl3jrkK9aiqIvpurpis0O34QcIS5gToqrgT39p04Dpxw3YoUU0lxJKTpSFFfA6Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-6.0.1.tgz", + "integrity": "sha512-ixSO1Y/kCVRthRs+hSx/5qkwaunX1/RAePhlMN0wIpIQ4WEZ6AREGGnGd1AP0qspHVsAwzWQKGubpjh50JyJIQ==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "16.6.2", + "@azure/msal-common": "16.14.1", "jsonwebtoken": "^9.0.0" }, "engines": { "node": ">=20" } }, + "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.14.1.tgz", + "integrity": "sha512-Or6xhPNyi4zHW25158yxBoyxuCqNSPa5YBVqfF1J5Ks4MJWBo/USXdp05DQIPu1Zli00YZu6t0+h6KvHJealxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -1248,7 +1269,6 @@ "integrity": "sha512-WrOw/bcXm0f9qHkumlT1QlArXSTWqaY9sunsDpOk+yCCorCKMxvWT/a3xko4EYHVdeZoh00yI2TydXn6eyICDA==", "dev": true, "license": "MIT", - "optional": true, "engines": { "node": ">= 10" }, @@ -2161,9 +2181,9 @@ } }, "node_modules/@types/node": { - "version": "26.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.5.1.tgz", - "integrity": "sha512-CzNm2FezW4VR/LjG6yUdiEgLE/rAQ9Slj5gCu/C2VrdcW7I0ahNZ8DRbHT7zOZ6r3ONgd/bsQIeSaoDGrd1C6g==", + "version": "26.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", + "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", "dev": true, "license": "MIT", "dependencies": { @@ -2293,26 +2313,28 @@ } }, "node_modules/@vscode/vsce-sign": { - "version": "2.0.4", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.1.0.tgz", + "integrity": "sha512-9AQrqazrBgTgRSuwleLVXUrIUphY02/SFCh2TKYoLV/xifJAdblhdmEmw5gUrYSPQ3sRwNs9iyCMD14sATEE6g==", "dev": true, "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE.txt", "optionalDependencies": { - "@vscode/vsce-sign-alpine-arm64": "2.0.2", - "@vscode/vsce-sign-alpine-x64": "2.0.2", - "@vscode/vsce-sign-darwin-arm64": "2.0.2", - "@vscode/vsce-sign-darwin-x64": "2.0.2", - "@vscode/vsce-sign-linux-arm": "2.0.2", - "@vscode/vsce-sign-linux-arm64": "2.0.2", - "@vscode/vsce-sign-linux-x64": "2.0.2", - "@vscode/vsce-sign-win32-arm64": "2.0.2", - "@vscode/vsce-sign-win32-x64": "2.0.2" + "@vscode/vsce-sign-alpine-arm64": "2.0.6", + "@vscode/vsce-sign-alpine-x64": "2.0.6", + "@vscode/vsce-sign-darwin-arm64": "2.0.6", + "@vscode/vsce-sign-darwin-x64": "2.0.6", + "@vscode/vsce-sign-linux-arm": "2.0.6", + "@vscode/vsce-sign-linux-arm64": "2.0.6", + "@vscode/vsce-sign-linux-x64": "2.0.6", + "@vscode/vsce-sign-win32-arm64": "2.0.6", + "@vscode/vsce-sign-win32-x64": "2.0.6" } }, "node_modules/@vscode/vsce-sign-alpine-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", - "integrity": "sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz", + "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==", "cpu": [ "arm64" ], @@ -2324,9 +2346,9 @@ ] }, "node_modules/@vscode/vsce-sign-alpine-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", - "integrity": "sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz", + "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==", "cpu": [ "x64" ], @@ -2338,7 +2360,9 @@ ] }, "node_modules/@vscode/vsce-sign-darwin-arm64": { - "version": "2.0.2", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz", + "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==", "cpu": [ "arm64" ], @@ -2350,9 +2374,9 @@ ] }, "node_modules/@vscode/vsce-sign-darwin-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", - "integrity": "sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz", + "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==", "cpu": [ "x64" ], @@ -2364,9 +2388,9 @@ ] }, "node_modules/@vscode/vsce-sign-linux-arm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", - "integrity": "sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz", + "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==", "cpu": [ "arm" ], @@ -2378,9 +2402,9 @@ ] }, "node_modules/@vscode/vsce-sign-linux-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", - "integrity": "sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz", + "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==", "cpu": [ "arm64" ], @@ -2392,9 +2416,9 @@ ] }, "node_modules/@vscode/vsce-sign-linux-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", - "integrity": "sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz", + "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==", "cpu": [ "x64" ], @@ -2406,9 +2430,9 @@ ] }, "node_modules/@vscode/vsce-sign-win32-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", - "integrity": "sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz", + "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==", "cpu": [ "arm64" ], @@ -2420,9 +2444,9 @@ ] }, "node_modules/@vscode/vsce-sign-win32-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", - "integrity": "sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz", + "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==", "cpu": [ "x64" ], @@ -2745,9 +2769,9 @@ "license": "BSD-3-Clause" }, "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.1.tgz", + "integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==", "dev": true, "license": "MIT", "dependencies": { @@ -2919,7 +2943,9 @@ } }, "node_modules/cockatiel": { - "version": "3.1.2", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", "dev": true, "license": "MIT", "engines": { @@ -2967,13 +2993,13 @@ } }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=20" } }, "node_modules/console-control-strings": { @@ -3083,9 +3109,9 @@ } }, "node_modules/default-browser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", - "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz", + "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==", "dev": true, "license": "MIT", "dependencies": { @@ -3511,44 +3537,19 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-8.0.0.tgz", - "integrity": "sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww==", + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^8.0.0", - "unicorn-magic": "^0.3.0" - }, "engines": { - "node": ">=20" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/form-data": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", @@ -4124,6 +4125,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -4206,9 +4220,9 @@ } }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -4295,7 +4309,9 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true, "license": "MIT" }, @@ -4420,22 +4436,6 @@ "uc.micro": "^2.0.0" } }, - "node_modules/locate-path": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-8.0.0.tgz", - "integrity": "sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lodash": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", @@ -4545,6 +4545,19 @@ "markdown-it": "bin/markdown-it.mjs" } }, + "node_modules/marked": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-18.1.1.tgz", + "integrity": "sha512-zEGgrtUG8crk+TrMacJSVABU4DYDDkS8uqgU3ohrn/2fW9C2AEfUrO3m6IhpIpQpl7YcVpiXXC9cSMWDANT3dg==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -4653,13 +4666,13 @@ } }, "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^5.0.8" }, "engines": { "node": "18 || 20 || >=22" @@ -4696,9 +4709,9 @@ "optional": true }, "node_modules/mocha": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-12.0.1.tgz", - "integrity": "sha512-/ILgtFHV+R7EJLwN0OkrPPOu6wbJyrtuRtTJ5szdFHv2A3mPmkbu3r1H2q6FhaAfywDJCulcQQ2S9qDGfZW6dw==", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-12.0.3.tgz", + "integrity": "sha512-beammieDdiWdkjANWeWPpkxUROYGi5FN88fPOkLiticz7HTg3Y+Pho3EYE6SUdcuWnZ3h2WD8EXCA55JF4o6wg==", "dev": true, "license": "MIT", "dependencies": { @@ -4706,7 +4719,7 @@ "chokidar": "^5.0.0", "debug": "^4.3.5", "diff": "^9.0.0", - "find-up": "^8.0.0", + "find-up-simple": "^1.0.1", "glob": "^13.0.0", "is-path-inside": "^4.0.0", "is-unicode-supported": "^0.1.0", @@ -4976,19 +4989,21 @@ } }, "node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.4.tgz", + "integrity": "sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==", "dev": true, "license": "MIT", "dependencies": { - "default-browser": "^5.2.1", + "default-browser": "^5.5.1", "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" + "powershell-utils": "^0.2.1", + "wsl-utils": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5062,21 +5077,18 @@ } }, "node_modules/ovsx": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-1.2.0.tgz", - "integrity": "sha512-12mauBqsLehlJ0cRiroQz4uKYVjblVS5OobgSJ278CdCtkDfRQD+SI3NQ00GNalDqzp5PDN11yx84miFUojeMw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-1.3.0.tgz", + "integrity": "sha512-U5B1YCo+6knEipsEF9O+iO+uwK+vTm8qNQyvc5zzE/2P6Zfzjhw4Xj4UJ7WZ1aU/kVGI70FuUWxv/GVXK5JmXw==", "dev": true, "license": "EPL-2.0", "dependencies": { "@inquirer/prompts": "^7.10.1", - "@vscode/vsce": "^3.7.1", - "commander": "^6.2.1", + "@vscode/vsce": "^4.0.0", + "commander": "^14.0.3", "cross-keychain": "^1.1.0", - "follow-redirects": "^1.16.0", "is-ci": "^2.0.0", - "leven": "^3.1.0", "semver": "^7.6.0", - "tmp": "^0.2.3", "yauzl-promise": "^4.0.0" }, "bin": { @@ -5086,36 +5098,81 @@ "node": ">=22.0.0" } }, - "node_modules/p-limit": { + "node_modules/ovsx/node_modules/@vscode/vsce": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-4.0.0.tgz", + "integrity": "sha512-NImwuLaenMmb5D5Jer9/lzi/F9ZQUBOp8Azhj/BVYcTFgixv8KehFXqEUDjQlD2tAiw2E6dDGyjTuAB//di60A==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "@azure/identity": "^4.13.2", + "@napi-rs/keyring": "^1.3.0", + "@secretlint/core": "^10.2.2", + "@secretlint/secretlint-rule-no-dotenv": "^10.2.2", + "@secretlint/secretlint-rule-preset-recommend": "^10.2.2", + "@secretlint/source-creator": "^10.2.2", + "@secretlint/types": "^10.2.2", + "@vscode/vsce-sign": "^2.1.0", + "azure-devops-node-api": "^12.5.0", + "cockatiel": "^3.2.1", + "commander": "^12.1.0", + "hosted-git-info": "^4.1.0", + "jsonc-parser": "^3.3.1", + "marked": "^18.0.11", + "mime": "^1.6.0", + "minimatch": "^10.2.6", + "parse5": "^8.0.1", + "proper-lockfile": "^4.1.2", + "read": "^1.0.7", + "semver": "^7.8.5", + "tinyglobby": "^0.2.17", + "typed-rest-client": "^1.8.11", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^3.4.0", + "yazl": "^2.5.1" + }, + "bin": { + "vsce": "vsce" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 22" + } + }, + "node_modules/ovsx/node_modules/@vscode/vsce/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/ovsx/node_modules/entities": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", + "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/ovsx/node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "entities": "^8.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/p-map": { @@ -5255,9 +5312,9 @@ } }, "node_modules/playwright-core": { - "version": "1.63.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz", - "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.1.tgz", + "integrity": "sha512-BC4s8y6SEVA6Q1rSxZTto8hI1KUI3xXlHGZgvGqP4IqPdI/a6FX9H29IDNz7vKo9l21b6LfYosScPL6M3xxyDQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5277,6 +5334,19 @@ "node": ">=4" } }, + "node_modules/powershell-utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.2.1.tgz", + "integrity": "sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prebuild-install": { "version": "7.0.1", "dev": true, @@ -5309,6 +5379,25 @@ "dev": true, "license": "MIT" }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/pump": { "version": "3.0.0", "dev": true, @@ -5492,6 +5581,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -5580,9 +5679,9 @@ } }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -5826,9 +5925,9 @@ "license": "CC0-1.0" }, "node_modules/sql.js": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.14.2.tgz", - "integrity": "sha512-3ZGPovObMFrdw79zrUHbfdE/DLIsy8jdNdssmMSQuRAymedU6q84asPt0kgiqrdMYlPegDItiIMfmIXzZnYFcw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.15.0.tgz", + "integrity": "sha512-54VT5h9/VGlLaQan5pX/Zx8k6Vbykwl5hRUtl4h4+VYnaZCTraUs4P1i2WLz21O6oPVp6Gvg+d1OyPo01ZG5ig==", "license": "MIT" }, "node_modules/stdin-discarder": { @@ -6078,6 +6177,54 @@ "url": "https://bevry.me/fund" } }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tmp": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", @@ -6150,9 +6297,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.23.13", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.13.tgz", - "integrity": "sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw==", + "version": "4.23.15", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.15.tgz", + "integrity": "sha512-Yiex1Ovn8z2xPpOWckIiysV1SSyRMY9BkLF++q0yKiDxCqRhosKfMg3janKkiLBwZ5c/YryloKwGZcrEmtwxKw==", "dev": true, "license": "MIT", "dependencies": { @@ -6440,16 +6587,17 @@ "optional": true }, "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-1.0.1.tgz", + "integrity": "sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==", "dev": true, "license": "MIT", "dependencies": { - "is-wsl": "^3.1.0" + "is-wsl": "^3.1.0", + "powershell-utils": "^0.2.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6481,13 +6629,12 @@ "license": "ISC" }, "node_modules/yauzl": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.0.tgz", - "integrity": "sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz", + "integrity": "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==", "dev": true, "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3", "pend": "~1.2.0" }, "engines": { @@ -6527,19 +6674,6 @@ "node": ">=6" } }, - "node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yoctocolors-cjs": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", diff --git a/package.json b/package.json index 2a40f347..7b1a7d5b 100644 --- a/package.json +++ b/package.json @@ -285,24 +285,24 @@ "test:native-smoke": "node --import tsx --test tests/unit/native_real_smoke.test.ts" }, "devDependencies": { - "@types/node": "^26.5.1", + "@types/node": "^26.6.5", "@types/vscode": "=1.110.0", "@vscode/test-electron": "^3.1.0", "@vscode/vsce": "^3.9.2", "esbuild": "^0.28.2", "esbuild-plugin-polyfill-node": "^0.3.0", - "mocha": "^12.0.1", - "ovsx": "1.2.0", - "playwright-core": "1.63.0", + "mocha": "^12.0.3", + "ovsx": "1.3.0", + "playwright-core": "1.64.1", "ts-node": "^10.9.2", - "tsx": "^4.23.13", + "tsx": "^4.23.15", "typescript": "^6.0.3" }, "dependencies": { "@scure/base": "^2.4.0", "@vscode/codicons": "^0.0.45", "@vscode/extension-telemetry": "^1.5.2", - "sql.js": "^1.14.2" + "sql.js": "^1.15.0" }, "overrides": { "qs": "^6.16.0", From 5b9a822fb614b0019e5b53ff1371b7150d185d4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 17:46:19 +0200 Subject: [PATCH 03/15] chore(deps): bump the website-routine-updates group across 1 directory with 8 updates (#567) Bumps the website-routine-updates group with 8 updates in the /website directory: | Package | From | To | | --- | --- | --- | | [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `1.45.0` | `1.58.0` | | [next](https://github.com/vercel/next.js) | `16.3.5` | `16.4.2` | | [react](https://github.com/react/react/tree/HEAD/packages/react) | `19.3.0` | `19.3.1` | | [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom) | `19.3.0` | `19.3.1` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.5.1` | `26.6.5` | | [eslint](https://github.com/eslint/eslint) | `10.10.0` | `10.13.0` | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `16.3.5` | `16.4.2` | | [postcss](https://github.com/postcss/postcss) | `8.5.28` | `8.5.30` | Updates `lucide-react` from 1.45.0 to 1.58.0 - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/1.58.0/packages/lucide-react) Updates `next` from 16.3.5 to 16.4.2 - [Release notes](https://github.com/vercel/next.js/releases) - [Commits](https://github.com/vercel/next.js/compare/v16.3.5...v16.4.2) Updates `react` from 19.3.0 to 19.3.1 - [Release notes](https://github.com/react/react/releases) - [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/react/react/commits/v19.3.1/packages/react) Updates `react-dom` from 19.3.0 to 19.3.1 - [Release notes](https://github.com/react/react/releases) - [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/react/react/commits/v19.3.1/packages/react-dom) Updates `@types/node` from 26.5.1 to 26.6.5 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `eslint` from 10.10.0 to 10.13.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/compare/v10.10.0...v10.13.0) Updates `eslint-config-next` from 16.3.5 to 16.4.2 - [Release notes](https://github.com/vercel/next.js/releases) - [Commits](https://github.com/vercel/next.js/commits/v16.4.2/packages/eslint-config-next) Updates `postcss` from 8.5.28 to 8.5.30 - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.5.28...8.5.30) --- updated-dependencies: - dependency-name: lucide-react dependency-version: 1.58.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: website-routine-updates - dependency-name: next dependency-version: 16.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: website-routine-updates - dependency-name: react dependency-version: 19.3.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: website-routine-updates - dependency-name: react-dom dependency-version: 19.3.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: website-routine-updates - dependency-name: "@types/node" dependency-version: 26.6.5 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: website-routine-updates - dependency-name: eslint dependency-version: 10.13.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: website-routine-updates - dependency-name: eslint-config-next dependency-version: 16.4.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: website-routine-updates - dependency-name: postcss dependency-version: 8.5.30 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: website-routine-updates ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 190 +++++++++++++++++++++----------------- website/package.json | 16 ++-- 2 files changed, 112 insertions(+), 94 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index 732bd993..4c212fc9 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -10,20 +10,20 @@ "dependencies": { "@vercel/analytics": "^2.0.1", "@vercel/speed-insights": "^2.0.0", - "lucide-react": "^1.45.0", - "next": "^16.3.5", - "react": "^19.3.0", - "react-dom": "^19.3.0" + "lucide-react": "^1.58.0", + "next": "^16.4.2", + "react": "^19.3.1", + "react-dom": "^19.3.1" }, "devDependencies": { "@eslint/compat": "^2.1.1", "@tailwindcss/postcss": "^4.3.3", - "@types/node": "^26.5.1", + "@types/node": "^26.6.5", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "eslint": "^10.10.0", - "eslint-config-next": "^16.3.5", - "postcss": "^8.5.28", + "eslint": "^10.13.0", + "eslint-config-next": "^16.4.2", + "postcss": "^8.5.30", "tailwindcss": "^4.3.3", "typescript": "^6.0.3" } @@ -1132,15 +1132,15 @@ } }, "node_modules/@next/env": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.3.5.tgz", - "integrity": "sha512-NWEXVDMqoEo0ktmU6u0sE2Vg0LOcsD7NnOTJNo3/fEaTfsg+F1bMIxuDmQbda4e3yTIQwVdUREF2yIuMOusKtg==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.4.2.tgz", + "integrity": "sha512-nTUTFH7G5/J/fmpkjVLegOkqyKOP0CEsJcMsyO4UCYeN1su+YMW/MfaSErnJskL7XM+UDK6aTvslxsRCyya/sA==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.3.5.tgz", - "integrity": "sha512-PGfSeItHJ12DH8t+6sEbuMe59NE5rAhCfgk06QKTH2ne9VUL1JlaXdYXY3B8RaiF2SO50rDYvd39TulP6A6xZQ==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.4.2.tgz", + "integrity": "sha512-gCTWlw0e+Y6kajpFyKKgA195jUJCRhlzJE0lV7ufe8a+ghIsANWZ0/FiJwg6DuOG1+OvRbcZDcFBoRh3mNJx0g==", "dev": true, "license": "MIT", "dependencies": { @@ -1181,9 +1181,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.3.5.tgz", - "integrity": "sha512-pMmGgETfKvElucLHtVaeiMRbp2zUbvKx7b1yGko0liBz3cw1mKSggWN/Rp/wPz8z+E1O82u3r4L1Co+ZS5hokQ==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.4.2.tgz", + "integrity": "sha512-ONkhFvZNFWlsEHOM/81AtxdyuJP2KRYKYR0JxPwvcu1AuPMMMgcL+wW2luldJvMtZwKtUxoSkCychW5wIeoYSw==", "cpu": [ "arm64" ], @@ -1197,9 +1197,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.3.5.tgz", - "integrity": "sha512-76VaGYvf6HPa5/w12yLkE3dXTn9AfdEviI79oEL3aZoAmRLc9rWitjWqyjViVysK/ht/y9YKzFkBrUdi/wGkow==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.4.2.tgz", + "integrity": "sha512-luPCMbOsCoaF+kXJEUjmjmOZg1lC3BflhmUu+ZmW4tBu2vW/4AXak8JBFvePizGkxVmNiAw/r9ra+6UviCWtWQ==", "cpu": [ "x64" ], @@ -1213,12 +1213,15 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.3.5.tgz", - "integrity": "sha512-zKDELJ5jSQMHeO/hmXUQsAzagX4bQD4OiMi3pQ5FbUj+yK506oLVHnKA2YXMlbg1EHHqJYtyePOgByIDXD1lqw==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.4.2.tgz", + "integrity": "sha512-xhwFTAncJyaCNy5KqKKuKaIIdCy1/1ZV1s5S1G0hhT7wGMkDTlfJ6aQbfRFnIG/s3/kDrxQ8aycVe+c5QnP8ow==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1229,12 +1232,15 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.3.5.tgz", - "integrity": "sha512-7Vql0pgzCoHagv6+FNOZoqmJqA52c6zeVbhtS/47qFozO1MSx4ms7x7GHiciY8R5CDsSMKMQjJEryoJLcsBIbA==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.4.2.tgz", + "integrity": "sha512-T1PNmfbPcxr5ndtWUL/3wQtLXsz808lq6sc2GrNT5k2oquF7UyqZddHSuAewHVsWsGXe6nsl9HoN1YNriVjuSg==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1245,12 +1251,15 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.3.5.tgz", - "integrity": "sha512-NH/xzehyHEFWE2nlcZon7TB/0+H4shfWCi7S1zka815XCOhJDYZhoeJtOYy0dh0WVRWACVXSyGNFFytoMxUhRg==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.4.2.tgz", + "integrity": "sha512-N9cDUOCGtkJG5PNKDFZUF3xXndrJJcpLp121uAGjIGvO/U2p9tfdNOM9htj7+5f72l0m8rMw/cvYacUJBQoudg==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1261,12 +1270,15 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.3.5.tgz", - "integrity": "sha512-lV4+EhWMfS8jcC+EH2nn/Cm5cn6XsgbE07bU9tMH8fCo0tNAqhyzi1b5wQ/Tn6NGFTvKDY65w3ZH95EjwBRAnQ==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.4.2.tgz", + "integrity": "sha512-yY2uh1YhX6ufuYy2FCbw1dqblbhI57GLYAJfCkqD9auTv6pLrH67Uccjc3QMKBeCYAG6lkgu08ExmX1bbjejjQ==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1277,9 +1289,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.3.5.tgz", - "integrity": "sha512-/wKzAREX2RF++MhicjDbg8tGn2AiBIM0+EFeTFKoUEUbW5D6amCJehd5Z5G1H5/gxNdgnwoXMcHz24H/c2tGkQ==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.4.2.tgz", + "integrity": "sha512-j/ArWRIHpMMB6wYLMhr2puTguBt70lNU/Cmjl9p6dTDE8DGknYJMP9PdwPk2dqpCNL/KIX9yfngDvIesxJPmsg==", "cpu": [ "arm64" ], @@ -1293,9 +1305,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.3.5.tgz", - "integrity": "sha512-LNdCHzgLFc+UeqMS84LzXPaeBRKyqDN9OMyFAr1OrB0XrNw78IRrEVtZvvA7245W/HsaoeVOQX9jPjPk8jojwA==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.4.2.tgz", + "integrity": "sha512-AA4edyWHDko3NCSo0x6GomsdgFb0oR1J3MXU1b5xt6FRFg4AucrMPW3S0hCe/9onU0O1BbpGQBsqo1r0Gneu1g==", "cpu": [ "x64" ], @@ -1749,9 +1761,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "26.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.5.1.tgz", - "integrity": "sha512-CzNm2FezW4VR/LjG6yUdiEgLE/rAQ9Slj5gCu/C2VrdcW7I0ahNZ8DRbHT7zOZ6r3ONgd/bsQIeSaoDGrd1C6g==", + "version": "26.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", + "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", "dev": true, "license": "MIT", "dependencies": { @@ -1762,7 +1774,7 @@ "version": "19.3.0", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -2916,7 +2928,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/damerau-levenshtein": { @@ -3330,9 +3342,9 @@ } }, "node_modules/eslint": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.10.0.tgz", - "integrity": "sha512-NPXn6r5zl4uET1DAVPaOwzX3rut4c0wcmw3dWJAfOsTM5+TogXo0DDjz8pwm/hL8cyVNpHqeK4JpN0NjnyFFNw==", + "version": "10.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.13.0.tgz", + "integrity": "sha512-UohDjD4zSzEwhf58M3O7vc/ycc8O1I7dNlhtD0WxE8Px8EHNJKtUwzBqrzeGhisRuv2ag4sAYswszCJRgKXYUg==", "dev": true, "license": "MIT", "workspaces": [ @@ -3389,21 +3401,21 @@ } }, "node_modules/eslint-config-next": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.3.5.tgz", - "integrity": "sha512-wPjq9MLQuWykHs8tsm2gH6OJThk6N27L8Te2JatlaGZ7jT1gtgGmJKukygL28xOlWsg5J1a1bGy/PvLyQC8OYA==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.4.2.tgz", + "integrity": "sha512-P33vjcETMXc+qBjpF77TeJHZLzk6cPcTy8KjpxLucYB3mCIFIORMcZ+cBXcAiIYjE5RM7jyknEEOwMNdnx/ADQ==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "16.3.5", + "@next/eslint-plugin-next": "16.4.2", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^7.0.0", + "eslint-plugin-react-hooks": "^7.1.0", "globals": "16.4.0", - "typescript-eslint": "^8.46.0" + "typescript-eslint": "^8.56.0" }, "peerDependencies": { "eslint": ">=9.0.0", @@ -5124,12 +5136,18 @@ } }, "node_modules/lucide-react": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.45.0.tgz", - "integrity": "sha512-yH1ubCAduho9UR7oJhRXIQXogksRILBiTuZC4/bQIGeB9JOkxMlSuEHyyZpo1Z3S0yWJO2KTSUZbjiNvVxeOUw==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.58.0.tgz", + "integrity": "sha512-hXaFNm6mk6QVtBnDGBn1YAs8j2tGUk0A4s/CpclIcczfxeXiW1rdOLVo6zCsoIih9XXsGvDODQerl749a2n7bA==", "license": "ISC", "peerDependencies": { + "@types/react": "*", "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/magic-string": { @@ -5210,9 +5228,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.18", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", - "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", "funding": [ { "type": "github", @@ -5251,12 +5269,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "16.3.5", - "resolved": "https://registry.npmjs.org/next/-/next-16.3.5.tgz", - "integrity": "sha512-MdtsTgzyfCPRLC6uJ1mN8ao7lyJ4BB0U6Inhnx3gta1UcCIdHK3yxLG0E8OWQteWD8/Q0qb8A5o7wJaL8M9y2w==", + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/next/-/next-16.4.2.tgz", + "integrity": "sha512-r+oBJojfefUjOiWkBhXgLS+igxX/7BWyK59uHnyOyplMSLtBZ+QLP3okrdYTbrfrbrmNTVWLBPaHDX9KRaIt3w==", "license": "MIT", "dependencies": { - "@next/env": "16.3.5", + "@next/env": "16.4.2", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", @@ -5270,15 +5288,15 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.3.5", - "@next/swc-darwin-x64": "16.3.5", - "@next/swc-linux-arm64-gnu": "16.3.5", - "@next/swc-linux-arm64-musl": "16.3.5", - "@next/swc-linux-x64-gnu": "16.3.5", - "@next/swc-linux-x64-musl": "16.3.5", - "@next/swc-win32-arm64-msvc": "16.3.5", - "@next/swc-win32-x64-msvc": "16.3.5", - "sharp": "^0.35.4" + "@next/swc-darwin-arm64": "16.4.2", + "@next/swc-darwin-x64": "16.4.2", + "@next/swc-linux-arm64-gnu": "16.4.2", + "@next/swc-linux-arm64-musl": "16.4.2", + "@next/swc-linux-x64-gnu": "16.4.2", + "@next/swc-linux-x64-musl": "16.4.2", + "@next/swc-win32-arm64-msvc": "16.4.2", + "@next/swc-win32-x64-msvc": "16.4.2", + "sharp": "^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -5609,9 +5627,9 @@ } }, "node_modules/postcss": { - "version": "8.5.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", - "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "version": "8.5.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz", + "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==", "dev": true, "funding": [ { @@ -5629,9 +5647,9 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.18", + "nanoid": "^3.3.20", "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "source-map-js": "^1.2.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -5711,24 +5729,24 @@ "license": "MIT" }, "node_modules/react": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", - "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.1.tgz", + "integrity": "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", - "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.1.tgz", + "integrity": "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==", "license": "MIT", "dependencies": { "scheduler": "^0.28.0" }, "peerDependencies": { - "react": "^19.3.0" + "react": "^19.3.1" } }, "node_modules/react-is": { @@ -6134,9 +6152,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" diff --git a/website/package.json b/website/package.json index 3d88b66e..521e4343 100644 --- a/website/package.json +++ b/website/package.json @@ -13,10 +13,10 @@ "dependencies": { "@vercel/analytics": "^2.0.1", "@vercel/speed-insights": "^2.0.0", - "lucide-react": "^1.45.0", - "next": "^16.3.5", - "react": "^19.3.0", - "react-dom": "^19.3.0" + "lucide-react": "^1.58.0", + "next": "^16.4.2", + "react": "^19.3.1", + "react-dom": "^19.3.1" }, "overrides": { "picomatch@>=4.0.0 <4.0.4": "4.0.4", @@ -27,12 +27,12 @@ "devDependencies": { "@eslint/compat": "^2.1.1", "@tailwindcss/postcss": "^4.3.3", - "@types/node": "^26.5.1", + "@types/node": "^26.6.5", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "eslint": "^10.10.0", - "eslint-config-next": "^16.3.5", - "postcss": "^8.5.28", + "eslint": "^10.13.0", + "eslint-config-next": "^16.4.2", + "postcss": "^8.5.30", "tailwindcss": "^4.3.3", "typescript": "^6.0.3" } From 908a9da7de520285287f091e29d9b8f05ffe813c Mon Sep 17 00:00:00 2001 From: zknpr <96851588+zknpr@users.noreply.github.com> Date: Fri, 23 Oct 2026 17:46:56 +0200 Subject: [PATCH 04/15] chore(deps): resolve remaining Dependabot alerts in both lockfiles Root: markdown-it 14.3.0 -> 14.3.3 (GHSA-vfgh-jcmw-g37q, GHSA-r7fv-28h4-cvq7, GHSA-gfr2-rv44-r23c, GHSA-253c-mchw-3w2r), pulled in by @vscode/vsce. Website: brace-expansion 1.1.18 -> 1.1.21 under eslint-config-next (GHSA-q2hr-2g5m-vwhr) and 5.0.9 -> 5.0.12 under eslint. Both are in-range `npm update`s of build-time dependencies; neither ships in the VSIX or in the website's runtime bundle. With #566 (ovsx 1.3.0 drops follow-redirects) and #567 (next 16.4.2, source-map-js 1.2.2) this clears all 12 open alerts once it reaches main. The lockfile diff also carries npm 11's peer flags on four root devDependencies and drops optional wasm32 @emnapi entries from the website lockfile; both are local-npm normalization only. Co-Authored-By: Claude Opus 5.5 --- package-lock.json | 13 ++++-- website/package-lock.json | 83 ++++++++++----------------------------- 2 files changed, 29 insertions(+), 67 deletions(-) diff --git a/package-lock.json b/package-lock.json index f252ba6a..9e3c9e75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2186,6 +2186,7 @@ "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~8.9.0" } @@ -3417,6 +3418,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -4518,9 +4520,9 @@ "license": "ISC" }, "node_modules/markdown-it": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", - "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", + "version": "14.3.3", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.3.tgz", + "integrity": "sha512-L//tDAkjTjJCU6pBUSBTgs3Kg4InVaZuUZog/b6V12UKhcDQ7S78877ibbCanRExwPuYP1CZD7Gd2dxSy1GXRg==", "dev": true, "funding": [ { @@ -6218,6 +6220,7 @@ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -6294,7 +6297,8 @@ }, "node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "license": "0BSD", + "peer": true }, "node_modules/tsx": { "version": "4.23.15", @@ -6364,6 +6368,7 @@ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/website/package-lock.json b/website/package-lock.json index 4c212fc9..a2452edb 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -72,6 +72,7 @@ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", @@ -305,29 +306,6 @@ "keyv": "^5.6.0" } }, - "node_modules/@emnapi/core": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", - "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.3", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", - "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@emnapi/wasi-threads": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", @@ -335,7 +313,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "tslib": "^2.4.0" } @@ -1219,9 +1196,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1238,9 +1212,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1257,9 +1228,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1276,9 +1244,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1607,27 +1572,6 @@ "node": ">=14.0.0" } }, - "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": { - "version": "1.11.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": { - "version": "1.11.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/wasi-threads": { "version": "1.2.2", "dev": true, @@ -1776,6 +1720,7 @@ "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -1835,6 +1780,7 @@ "integrity": "sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.65.0", "@typescript-eslint/types": "8.65.0", @@ -2466,6 +2412,7 @@ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2746,9 +2693,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2791,6 +2738,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.44", "caniuse-lite": "^1.0.30001806", @@ -3347,6 +3295,7 @@ "integrity": "sha512-UohDjD4zSzEwhf58M3O7vc/ycc8O1I7dNlhtD0WxE8Px8EHNJKtUwzBqrzeGhisRuv2ag4sAYswszCJRgKXYUg==", "dev": true, "license": "MIT", + "peer": true, "workspaces": [ "packages/*" ], @@ -3435,9 +3384,9 @@ "license": "MIT" }, "node_modules/eslint-config-next/node_modules/brace-expansion": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "dev": true, "license": "MIT", "dependencies": { @@ -3486,6 +3435,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -4797,6 +4747,7 @@ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -5273,6 +5224,7 @@ "resolved": "https://registry.npmjs.org/next/-/next-16.4.2.tgz", "integrity": "sha512-r+oBJojfefUjOiWkBhXgLS+igxX/7BWyK59uHnyOyplMSLtBZ+QLP3okrdYTbrfrbrmNTVWLBPaHDX9KRaIt3w==", "license": "MIT", + "peer": true, "dependencies": { "@next/env": "16.4.2", "@swc/helpers": "0.5.23", @@ -5733,6 +5685,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.3.1.tgz", "integrity": "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -5742,6 +5695,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.1.tgz", "integrity": "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.28.0" }, @@ -6403,6 +6357,7 @@ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -6565,6 +6520,7 @@ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6843,6 +6799,7 @@ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From 248327c57711c523be9c96f0c5c4723f37e8734f Mon Sep 17 00:00:00 2001 From: zknpr <96851588+zknpr@users.noreply.github.com> Date: Fri, 23 Oct 2026 17:46:56 +0200 Subject: [PATCH 05/15] docs(readme): point to the SQLite Explorer desktop app Link the standalone Tauri app (zknpr/SQLite-Explorer-App) from the header and add an Installation subsection naming the published packages (macOS Apple Silicon .dmg, Linux x86-64 .deb, Windows x86-64 installer) and their unsigned status, deferring first-launch steps to the app's own install notes. The README is the Marketplace and Open VSX listing, so this goes live with the next publish. Co-Authored-By: Claude Opus 5.5 --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a90eae4e..44ff9556 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A powerful, open-source SQLite database viewer and editor for Visual Studio Code. -**[Try it in your browser](https://sqlite-explorer.zknpr.xyz/demo)** | **[Website](https://sqlite-explorer.zknpr.xyz/)** | **[Changelog](CHANGELOG.md)** +**[Try it in your browser](https://sqlite-explorer.zknpr.xyz/demo)** | **[Desktop app](https://github.com/zknpr/SQLite-Explorer-App)** | **[Website](https://sqlite-explorer.zknpr.xyz/)** | **[Changelog](CHANGELOG.md)** ![SQLite Explorer](media/main.png) @@ -134,6 +134,12 @@ Or from the command line: code --install-extension zknpr.sqlite-explorer ``` +### Desktop app + +SQLite Explorer also runs as a standalone desktop application, no VS Code required. It uses the same viewer inside a Tauri shell and ships packages for macOS (Apple Silicon `.dmg`), Linux (x86-64 `.deb`) and Windows (x86-64 installer). Download them from the [SQLite Explorer App releases](https://github.com/zknpr/SQLite-Explorer-App/releases). + +The packages are not signed with a publisher identity yet, so macOS and Windows warn on first launch. The app's [install notes](https://github.com/zknpr/SQLite-Explorer-App#install) cover the first-launch steps and checksum verification. + ## Usage 1. Open any `.sqlite`, `.db`, or `.sqlite3` file in VS Code From 1280518afbfd53d892bcee3bc6b1dab48e35f800 Mon Sep 17 00:00:00 2001 From: zknpr <96851588+zknpr@users.noreply.github.com> Date: Fri, 23 Oct 2026 18:25:33 +0200 Subject: [PATCH 06/15] fix(native): enforce SQL path authority in the runtime and close VACUUM INTO Re-pin the five txiki.js runtimes to zknpr/txiki.js master@0353db57 (Actions run 39983760340): - SQLite 3.51.2 -> 3.54.1, fixing CVE-2026-11822/11824 (FTS5 heap write with DEFENSIVE off, which this engine leaves off). - Every connection installs a C authorizer at open that refuses ATTACH and DETACH except plain VACUUM's private temporary database and one path trusted code permits with permitAttach(). VACUUM INTO attaches its destination, so SQL-level VACUUM INTO is refused by the same rule. #562's tokenizer-mirroring guard in native-worker.js stays in front for its error code; the authorizer is the backstop that does not depend on SQLite's tokenizer staying unchanged across updates. runVacuumInto, the host's export snapshot, permits exactly its host-chosen path around `VACUUM main INTO ?` and withdraws it when the call settles, including on failure. Regression tests, shown failing on the shipped 1.8.1 runtime: SQL-level VACUUM INTO through query, run, exec, a bound destination and a read-only open each created a file outside the bound directory; the runtime refusing ATTACH without the worker guard, with a permitAttach control arm; the snapshot permit order and withdrawal. native_real_smoke pins the bundled SQLite 3.54.1 and its REAL-to-text rendering, which now uses up to 17 significant digits. --- natives/aarch64-linux-gnu/tjs | Bin 3764896 -> 3830768 bytes natives/aarch64-macos/tjs | Bin 3303072 -> 3336288 bytes natives/native-worker.js | 37 +++++++-- natives/x86_64-linux-gnu/tjs | Bin 3896192 -> 3945664 bytes natives/x86_64-macos/tjs | Bin 3404288 -> 3449544 bytes natives/x86_64-windows/tjs.exe | Bin 3702272 -> 3737600 bytes scripts/refresh-natives.mjs | 18 ++--- tests/unit/artifact_refresh_policy.test.ts | 4 +- tests/unit/nativeWorker.test.ts | 35 ++++++-- tests/unit/native_attach_guard.test.ts | 89 ++++++++++++++++++++- tests/unit/native_real_smoke.test.ts | 5 +- 11 files changed, 160 insertions(+), 28 deletions(-) diff --git a/natives/aarch64-linux-gnu/tjs b/natives/aarch64-linux-gnu/tjs index c1c82c9d5a39aa1258a7a53d9b7a2eda135f0838..182bbe39e31cd8e202fcd69221520ef367b55dd1 100755 GIT binary patch delta 1461905 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�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:Awa(c9TMhuEBJnF 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 z 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