@multisystemsuite/shared

v2.1.0

Published

Shared types and utilities for Database Reliability Toolkit

Readme

@multisystemsuite/shared

Shared types, utilities, and plugin contracts used across the Database Reliability Toolkit monorepo.

Version: 1.0.1 · License: MIT

npm readme: @multisystemsuite/shared on npm


Installation

pnpm add @multisystemsuite/shared
npm install @multisystemsuite/shared

Quick start

import {
  fingerprintQuery,
  checksumContent,
  createConsoleLogger,
  type QueryTrackInput,
} from '@multisystemsuite/shared';

const fp = fingerprintQuery("SELECT * FROM users WHERE id = 1");
const hash = checksumContent('migration-sql-content');

const logger = createConsoleLogger('my-app');
logger.info('Database toolkit ready');

Exports

Types

| Type | Description | |------|-------------| | DatabaseDialect | mysql | postgresql | sqlserver | mongodb | sqlite | | Severity | low | medium | high | critical | | HealthStatus | healthy | degraded | unhealthy | | QueryTrackInput | Query string, execution time, optional row stats | | QueryAnalysisResult | Severity, score, issue, recommendation | | IndexRecommendation | Table, columns, migration SQL, priority | | HealthReport / HealthCheckResult | Health scoring structures | | MigrationRecord | Applied migration metadata | | Plugin / PluginContext | Extension plugin API | | Logger | debug / info / warn / error | | MetricPoint | Prometheus-style metric point | | SecurityFinding | Security scan result | | TransactionOptions | Isolation, timeout, retries | | DeadlockGuardOptions | Retry and callback options | | CacheOptions | TTL, prefix, max size |

Utilities

| Function | Description | |----------|-------------| | fingerprintQuery(query) | Normalize SQL and return SHA-256 fingerprint (16 chars) | | normalizeSql(query) | Collapse whitespace | | checksumContent(content) | SHA-256 hex checksum for migrations | | scoreToSeverity(score) | Map 0–100 score to severity band | | clamp(value, min, max) | Bound numeric value | | sleep(ms) | Promise-based delay | | extractTableNames(query) | Parse FROM / JOIN table names | | extractWhereColumns(query) | Parse column names used in WHERE | | createConsoleLogger(prefix?) | Simple prefixed console logger |


Plugin interface

import type { Plugin, PluginContext, QueryTrackInput } from '@multisystemsuite/shared';

const plugin: Plugin = {
  name: 'metrics-exporter',
  version: '1.0.0',
  async initialize(ctx: PluginContext) {
    ctx.logger.info('Plugin loaded', { config: ctx.config });
  },
  onQuery(input: QueryTrackInput) {
    // called when toolkit tracks a query
  },
};

Register via @multisystemsuite/core:

toolkit.use(plugin);

Related packages

See the @multisystemsuite org on npm.

npm