Tracevault no tiene dependencias runtime más allá de pg. Este sitio documenta v1.0.1 en npm.
npm install tracevault pgPor defecto, startTracevault ejecuta DDL idempotente para cada tabla física listada en scopes — la misma forma que generateInitSql. Seteá bootstrap: { ensureSchema: false } cuando tu pipeline de migraciones maneja el schema.
import { startTracevault } from "tracevault"
const audit = await startTracevault({
driver: "postgres",
connectionString: process.env.DATABASE_URL_WRITE!,
readConnectionString: process.env.DATABASE_URL_READ,
defaultScope: "default",
scopes: {
default: { tableName: "audit_logs" },
users: { tableName: "audit_user_events" },
},
bootstrap: { ensureSchema: true },
maskFields: ["password", "token", "pin"],
defaultMode: "sync",
environment: process.env.NODE_ENV,
})
// Write URL: INSERT (+ DDL when ensureSchema). Read URL: SELECT-only role recommended.SQL incluido en node_modules/tracevault/sql/: 001 crea la tabla; 002 agrega outcome y error_code generados; 003 agrega severity generado.
# Optional — when bootstrap.ensureSchema is false:
psql "$DATABASE_URL" -f node_modules/tracevault/sql/001_init_audit_logs.sql
psql "$DATABASE_URL" -f node_modules/tracevault/sql/002_audit_logs_outcome_error_code.sql
psql "$DATABASE_URL" -f node_modules/tracevault/sql/003_audit_logs_severity.sqlDevuelve DDL combinado 001 + 002 + 003 para un nombre de tabla. Valida el nombre, usa IF NOT EXISTS, y nunca ejecuta.
import { generateInitSql } from "tracevault"
// Same DDL startTracevault runs per table. Does not execute.
const ddl = generateInitSql("audit_user_events")
console.log(ddl)node -e 'console.log(require("tracevault").generateInitSql("audit_user_events"))' \
| psql "$DATABASE_URL"