🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@valv/mysql

Package Overview
Dependencies
Maintainers
2
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@valv/mysql - npm Package Compare versions

Comparing version
0.2.1
to
0.3.0
+7
-0
dist/adapter.d.ts

@@ -8,2 +8,8 @@ import type { ValvAdapter, SchemaMap, Query, CompiledQuery, FnDef } from "@valv/core";

database?: string;
/**
* Per-query wall-clock cap in milliseconds (`max_execution_time`, which MySQL
* enforces for read-only SELECTs). Defaults to 10000. Raise it for heavier
* analytical workloads; keep it low to bound a runaway query.
*/
statementTimeoutMs?: number;
}

@@ -14,2 +20,3 @@ export declare class MySqlAdapter implements ValvAdapter {

private schemaCache;
private get timeoutMs();
constructor(client: MySqlClient, options?: MySqlAdapterOptions);

@@ -16,0 +23,0 @@ introspect(): Promise<SchemaMap>;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAErF,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEnE,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAUD,qBAAa,YAAa,YAAW,WAAW;IAI5C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,WAAW,CAAyB;gBAGlC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB;IAGrC,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAMtC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,GAAG,aAAa;IAIxD,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAI5B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAc3E"}
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAErF,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEnE,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AASD,qBAAa,YAAa,YAAW,WAAW;IAQ5C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,KAAK,SAAS,GAEpB;gBAGS,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB;IAGrC,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAMtC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,GAAG,aAAa;IAIxD,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAI5B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAe3E"}

@@ -6,10 +6,12 @@ "use strict";

const introspection_1 = require("./introspection");
// Per-query wall-clock cap so a structurally-valid query (e.g. a join that scans
// far more than expected) can't run away on the server. Applied via
// `max_execution_time` (milliseconds), which MySQL enforces for read-only
// SELECTs — exactly this adapter's queries.
const STATEMENT_TIMEOUT_MS = 10000;
// Default per-query wall-clock cap so a structurally-valid query (e.g. a join
// that scans far more than expected) can't run away on the server. Override per
// instance with `statementTimeoutMs`.
const DEFAULT_STATEMENT_TIMEOUT_MS = 10000;
// Read-only adapter: no `mutate`, so core refuses writes. Adding writes is
// emit{Insert,Update,Delete} over the same driver, when a real need appears.
class MySqlAdapter {
get timeoutMs() {
return this.options.statementTimeoutMs ?? DEFAULT_STATEMENT_TIMEOUT_MS;
}
constructor(client, options = {}) {

@@ -31,4 +33,5 @@ this.client = client;

async execute(sql, parameters = []) {
// Pin the session before the query runs. Both settings are our own hardcoded
// literals (never user input), so inlining them is safe:
// Pin the session before the query runs. The timeout is a numeric config
// value and the zone is a literal — neither is model input, and a number
// can't carry SQL, so inlining them is safe:
// - max_execution_time caps read-only SELECT wall-clock.

@@ -40,3 +43,3 @@ // - time_zone '+00:00' forces DATE_FORMAT bucketing (and any tz-sensitive

// consumer passes one per request, not a shared pool (see MySqlClient).
await this.client.query(`SET SESSION max_execution_time = ${STATEMENT_TIMEOUT_MS}`);
await this.client.query(`SET SESSION max_execution_time = ${this.timeoutMs}`);
await this.client.query(`SET time_zone = '+00:00'`);

@@ -43,0 +46,0 @@ const [result] = await this.client.query(sql, parameters);

@@ -1,1 +0,1 @@

{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":";;;AACA,qCAA+D;AAC/D,mDAAmE;AASnE,iFAAiF;AACjF,oEAAoE;AACpE,0EAA0E;AAC1E,4CAA4C;AAC5C,MAAM,oBAAoB,GAAG,KAAM,CAAA;AAEnC,2EAA2E;AAC3E,6EAA6E;AAC7E,MAAa,YAAY;IAGvB,YACU,MAAmB,EACnB,UAA+B,EAAE;QADjC,WAAM,GAAN,MAAM,CAAa;QACnB,YAAO,GAAP,OAAO,CAA0B;QAJnC,gBAAW,GAAqB,IAAI,CAAA;IAKzC,CAAC;IAEJ,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,WAAW,KAAhB,IAAI,CAAC,WAAW,GACd,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,IAAA,+BAAe,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAA;QACpF,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,OAAO,CAAC,KAAY,EAAE,OAAkB;QACtC,OAAO,IAAA,WAAI,EAAC,KAAK,EAAE,OAAO,EAAE,mBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChF,CAAC;IAED,SAAS;QACP,OAAO,EAAE,GAAG,qBAAc,EAAE,GAAG,mBAAY,CAAC,SAAS,EAAE,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,aAAwB,EAAE;QACnD,6EAA6E;QAC7E,yDAAyD;QACzD,0DAA0D;QAC1D,2EAA2E;QAC3E,8EAA8E;QAC9E,0EAA0E;QAC1E,0EAA0E;QAC1E,wEAAwE;QACxE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,oBAAoB,EAAE,CAAC,CAAA;QACnF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QACzD,OAAO,CAAC,MAAM,IAAI,EAAE,CAAc,CAAA;IACpC,CAAC;CACF;AApCD,oCAoCC"}
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":";;;AACA,qCAA+D;AAC/D,mDAAmE;AAenE,8EAA8E;AAC9E,gFAAgF;AAChF,sCAAsC;AACtC,MAAM,4BAA4B,GAAG,KAAM,CAAA;AAE3C,2EAA2E;AAC3E,6EAA6E;AAC7E,MAAa,YAAY;IAGvB,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,4BAA4B,CAAA;IACxE,CAAC;IAED,YACU,MAAmB,EACnB,UAA+B,EAAE;QADjC,WAAM,GAAN,MAAM,CAAa;QACnB,YAAO,GAAP,OAAO,CAA0B;QARnC,gBAAW,GAAqB,IAAI,CAAA;IASzC,CAAC;IAEJ,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,WAAW,KAAhB,IAAI,CAAC,WAAW,GACd,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,IAAA,+BAAe,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAA;QACpF,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,OAAO,CAAC,KAAY,EAAE,OAAkB;QACtC,OAAO,IAAA,WAAI,EAAC,KAAK,EAAE,OAAO,EAAE,mBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChF,CAAC;IAED,SAAS;QACP,OAAO,EAAE,GAAG,qBAAc,EAAE,GAAG,mBAAY,CAAC,SAAS,EAAE,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,aAAwB,EAAE;QACnD,yEAAyE;QACzE,yEAAyE;QACzE,6CAA6C;QAC7C,0DAA0D;QAC1D,2EAA2E;QAC3E,8EAA8E;QAC9E,0EAA0E;QAC1E,0EAA0E;QAC1E,wEAAwE;QACxE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAC7E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QACzD,OAAO,CAAC,MAAM,IAAI,EAAE,CAAc,CAAA;IACpC,CAAC;CACF;AAzCD,oCAyCC"}

@@ -9,2 +9,4 @@ import { Valv } from "@valv/core";

database?: string;
/** Per-query wall-clock cap in milliseconds (`max_execution_time`). Defaults to 10000. */
statementTimeoutMs?: number;
};

@@ -11,0 +13,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,KAAK,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG;IAC5E,yEAAyE;IACzE,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,GAAG,cAAc,EACxD,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAWjC"}
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,KAAK,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG;IAC5E,yEAAyE;IACzE,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,GAAG,cAAc,EACxD,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAYjC"}

@@ -13,3 +13,3 @@ "use strict";

async function createValv(client, config) {
const { schema, database, ...rest } = config;
const { schema, database, statementTimeoutMs, ...rest } = config;
const valv = new core_1.Valv({

@@ -20,2 +20,3 @@ ...rest,

database,
statementTimeoutMs,
}),

@@ -22,0 +23,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":";;AAkBA,gCAcC;AAhCD,qCAAiC;AAEjC,uCAAwC;AAUxC;;;;;GAKG;AACI,KAAK,UAAU,UAAU,CAC9B,MAAmB,EACnB,MAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;IAC5C,MAAM,IAAI,GAAG,IAAI,WAAI,CAAmB;QACtC,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,sBAAY,CAAC,MAAM,EAAE;YAChC,MAAM,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACpD,QAAQ;SACT,CAAC;KACH,CAAC,CAAA;IACF,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IACvB,OAAO,IAAI,CAAA;AACb,CAAC"}
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":";;AAoBA,gCAeC;AAnCD,qCAAiC;AAEjC,uCAAwC;AAYxC;;;;;GAKG;AACI,KAAK,UAAU,UAAU,CAC9B,MAAmB,EACnB,MAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;IAChE,MAAM,IAAI,GAAG,IAAI,WAAI,CAAmB;QACtC,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,sBAAY,CAAC,MAAM,EAAE;YAChC,MAAM,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACpD,QAAQ;YACR,kBAAkB;SACnB,CAAC;KACH,CAAC,CAAA;IACF,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IACvB,OAAO,IAAI,CAAA;AACb,CAAC"}
{
"name": "@valv/mysql",
"version": "0.2.1",
"version": "0.3.0",
"description": "MySQL adapter for valv — row-level security and access control for AI agents, over a runtime connection",

@@ -40,3 +40,3 @@ "keywords": [

"peerDependencies": {
"@valv/core": "^0.8.1",
"@valv/core": "^0.9.0",
"mysql2": "^3.0.0"

@@ -43,0 +43,0 @@ },