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

@valv/clickhouse

Package Overview
Dependencies
Maintainers
2
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@valv/clickhouse - npm Package Compare versions

Comparing version
0.4.0
to
0.5.0
+3
dist/emit.d.ts
import type { Dialect } from "@valv/core";
export declare const clickhouseDialect: Dialect;
//# sourceMappingURL=emit.d.ts.map
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../src/emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAUzC,eAAO,MAAM,iBAAiB,EAAE,OAqC/B,CAAA"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.clickhouseDialect = void 0;
const INTERVAL_UNITS = ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
// ClickHouse uses backtick identifiers (escaping `\` then `` ` ``) and typed
// named placeholders `{pN:Type}`. The type is the one schema-derived string that
// reaches SQL, so its characters are allowlisted — a malformed hand-defined type
// can't break out of the placeholder.
const SAFE_TYPE = /^[A-Za-z0-9_(), '=]+$/;
exports.clickhouseDialect = {
quoteId(id) {
return "`" + id.replace(/\\/g, "\\\\").replace(/`/g, "``") + "`";
},
placeholder(index, type) {
if (!SAFE_TYPE.test(type)) {
throw new Error(`[valv/clickhouse] unsafe column type "${type}"`);
}
return `{p${index}:${type}}`;
},
functions: {
// Parametric aggregate: quantileTiming(level)(column). `level` is a finite
// number in [0, 1], so inlining it can't carry SQL.
quantileTiming: {
args: [{ kind: "number", range: [0, 1] }, { kind: "column" }],
render: ([level, c]) => `quantileTiming(${level})(${c})`,
},
// Time bucketing for series — fixed grains.
toDate: { args: [{ kind: "column" }], render: ([c]) => `toDate(${c})` },
toStartOfHour: { args: [{ kind: "column" }], render: ([c]) => `toStartOfHour(${c})` },
toStartOfDay: { args: [{ kind: "column" }], render: ([c]) => `toStartOfDay(${c})` },
// Arbitrary-grain bucketing: toStartOfInterval(ts, INTERVAL n unit). The unit
// is membership-checked, the magnitude is a finite number — both safe inlined.
toStartOfInterval: {
args: [{ kind: "column" }, { kind: "number" }, { kind: "enum", values: INTERVAL_UNITS }],
render: ([c, n, unit]) => `toStartOfInterval(${c}, INTERVAL ${n} ${unit.toUpperCase()})`,
},
// Distinct counts.
uniqExact: { args: [{ kind: "column" }], render: ([c]) => `uniqExact(${c})` },
uniq: { args: [{ kind: "column" }], render: ([c]) => `uniq(${c})` },
// Conditional aggregation — the predicate's literals become bound params.
countIf: { args: [{ kind: "predicate" }], render: ([p]) => `countIf(${p})` },
sumIf: {
args: [{ kind: "column" }, { kind: "predicate" }],
render: ([c, p]) => `sumIf(${c}, ${p})`,
},
},
};
//# sourceMappingURL=emit.js.map
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../src/emit.ts"],"names":[],"mappings":"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"}
+1
-1

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

{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOvC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAiCrD,CAAA"}
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAgBvC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAyCrD,CAAA"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.clickhouseFunctions = void 0;
const INTERVAL_UNITS = ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
const INTERVAL_UNITS = [
"second",
"minute",
"hour",
"day",
"week",
"month",
"quarter",
"year",
];
// ClickHouse-specific functions, merged over the standard aggregates in core's

@@ -18,4 +27,12 @@ // BASE_FUNCTIONS at emit time. This is the list that grows as analytics needs

toDate: { args: [{ kind: "column" }], returns: "date", render: ([c]) => `toDate(${c})` },
toStartOfHour: { args: [{ kind: "column" }], returns: "date", render: ([c]) => `toStartOfHour(${c})` },
toStartOfDay: { args: [{ kind: "column" }], returns: "date", render: ([c]) => `toStartOfDay(${c})` },
toStartOfHour: {
args: [{ kind: "column" }],
returns: "date",
render: ([c]) => `toStartOfHour(${c})`,
},
toStartOfDay: {
args: [{ kind: "column" }],
returns: "date",
render: ([c]) => `toStartOfDay(${c})`,
},
// Arbitrary-grain bucketing toStartOfInterval(ts, INTERVAL n unit); unit is

@@ -22,0 +39,0 @@ // membership-checked and n is finite, so both are safe inlined.

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

{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":";;;AAEA,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAU,CAAA;AAEvG,+EAA+E;AAC/E,8EAA8E;AAC9E,0EAA0E;AAC7D,QAAA,mBAAmB,GAA0B;IACxD,+EAA+E;IAC/E,6BAA6B;IAC7B,cAAc,EAAE;QACd,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC7D,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,KAAK,KAAK,CAAC,GAAG;KACzD;IAED,8BAA8B;IAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE;IACxF,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE;IACtG,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE;IAEpG,4EAA4E;IAC5E,gEAAgE;IAChE,iBAAiB,EAAE;QACjB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACxF,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,IAAK,CAAC,WAAW,EAAE,GAAG;KAC1F;IAED,mBAAmB;IACnB,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE;IAChG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE;IAEtF,yEAAyE;IACzE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;IAC/F,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACjD,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;KACxC;CACF,CAAA"}
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":";;;AAEA,MAAM,cAAc,GAAG;IACrB,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,SAAS;IACT,MAAM;CACE,CAAA;AAEV,+EAA+E;AAC/E,8EAA8E;AAC9E,0EAA0E;AAC7D,QAAA,mBAAmB,GAA0B;IACxD,+EAA+E;IAC/E,6BAA6B;IAC7B,cAAc,EAAE;QACd,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC7D,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,KAAK,KAAK,CAAC,GAAG;KACzD;IAED,8BAA8B;IAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE;IACxF,aAAa,EAAE;QACb,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG;KACvC;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG;KACtC;IAED,4EAA4E;IAC5E,gEAAgE;IAChE,iBAAiB,EAAE;QACjB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACxF,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,IAAK,CAAC,WAAW,EAAE,GAAG;KAC1F;IAED,mBAAmB;IACnB,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE;IAChG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE;IAEtF,yEAAyE;IACzE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;IAC/F,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACjD,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;KACxC;CACF,CAAA"}
{
"name": "@valv/clickhouse",
"version": "0.4.0",
"version": "0.5.0",
"description": "ClickHouse adapter for valv — row-level security and access control for AI agents",

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

"@clickhouse/client": "^1.0.0",
"@valv/core": "^0.5.0"
"@valv/core": "^0.6.0"
},

@@ -46,0 +46,0 @@ "publishConfig": {

import type { FilterNode } from "@valv/core";
export declare function quoteIdent(name: string): string;
export declare function escapeString(s: string): string;
export declare function escapeLikePattern(s: string): string;
export declare function formatValue(v: unknown): string;
export declare function compileFilter(node: FilterNode): string;
//# sourceMappingURL=sql.d.ts.map
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAmB9C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAkDtD"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.quoteIdent = quoteIdent;
exports.escapeString = escapeString;
exports.escapeLikePattern = escapeLikePattern;
exports.formatValue = formatValue;
exports.compileFilter = compileFilter;
function quoteIdent(name) {
return "`" + name.replace(/`/g, "``") + "`";
}
function escapeString(s) {
return s.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
}
function escapeLikePattern(s) {
return s.replace(/\\/g, "\\\\").replace(/%/g, "\\%").replace(/_/g, "\\_");
}
function formatValue(v) {
if (v === null || v === undefined)
return "NULL";
if (typeof v === "boolean")
return v ? "1" : "0";
if (typeof v === "number") {
if (!isFinite(v))
throw new Error(`Non-finite number value not allowed in query: ${v}`);
return String(v);
}
if (v instanceof Date) {
const pad = (n) => String(n).padStart(2, "0");
const y = v.getUTCFullYear();
const mo = pad(v.getUTCMonth() + 1);
const d = pad(v.getUTCDate());
const h = pad(v.getUTCHours());
const mi = pad(v.getUTCMinutes());
const s = pad(v.getUTCSeconds());
return `'${y}-${mo}-${d} ${h}:${mi}:${s}'`;
}
if (typeof v === "string")
return `'${escapeString(v)}'`;
return `'${escapeString(JSON.stringify(v))}'`;
}
function compileFilter(node) {
switch (node.type) {
case "eq":
if (node.value === null || node.value === undefined) {
return `${quoteIdent(node.field)} IS NULL`;
}
return `${quoteIdent(node.field)} = ${formatValue(node.value)}`;
case "in": {
if (node.values.length === 0)
return "1 = 0";
const list = node.values.map(formatValue).join(", ");
return `${quoteIdent(node.field)} IN (${list})`;
}
case "range": {
const parts = [];
if (node.gte !== undefined)
parts.push(`${quoteIdent(node.field)} >= ${formatValue(node.gte)}`);
if (node.lte !== undefined)
parts.push(`${quoteIdent(node.field)} <= ${formatValue(node.lte)}`);
if (node.gt !== undefined)
parts.push(`${quoteIdent(node.field)} > ${formatValue(node.gt)}`);
if (node.lt !== undefined)
parts.push(`${quoteIdent(node.field)} < ${formatValue(node.lt)}`);
return parts.join(" AND ");
}
case "like": {
const escaped = escapeLikePattern(node.value);
let pattern;
if (node.mode === "startsWith")
pattern = `${escaped}%`;
else if (node.mode === "endsWith")
pattern = `%${escaped}`;
else
pattern = `%${escaped}%`;
return `${quoteIdent(node.field)} ILIKE '${escapeString(pattern)}'`;
}
case "null":
return node.isNull
? `${quoteIdent(node.field)} IS NULL`
: `${quoteIdent(node.field)} IS NOT NULL`;
case "and":
if (node.filters.length === 0)
return "1 = 1";
return "(" + node.filters.map(compileFilter).join(" AND ") + ")";
case "or":
if (node.filters.length === 0)
return "1 = 0";
return "(" + node.filters.map(compileFilter).join(" OR ") + ")";
case "not":
return `NOT (${compileFilter(node.filter)})`;
}
}
//# sourceMappingURL=sql.js.map
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"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"}