# @azmr/db

> Release history for @azmr/db.

Source: https://platform.azmara.io/docs/changelog/db

## 1.2.0

### Minor Changes

- 66baf1e: Requires Node.js 22 or later, up from 18, because better-sqlite3 (its SQLite driver) is now on 13.

  better-sqlite3 13 runs on Node's stable N-API, so its prebuilt binaries ship inside the package and work across Node versions without a rebuild. It needs Node 22+. Node 18 and 20 are past end of life, so this is a minor release rather than a major one. If you are still on Node 20, stay on `@azmr/db` 1.1.x until you upgrade Node.

## 1.1.2

### Patch Changes

- ea59e9b: Package metadata: `homepage` now points at each package's page on platform.azmara.io (docs.azmara.io never resolved), `bugs` links to the GitHub issues, and README doc links follow. `@azmr/ui` gets a description that matches the design system it now is.
- Updated dependencies \[ea59e9b]
  - @azmr/db-core-interface\@0.1.1
  - @azmr/security\@0.3.2

## 1.1.1

### Patch Changes

- 9e4ee63: Move the `DbAdapter` contract (the interface, its filter and schema types, and `DbAdapterError`) into a new dependency-free package, `@azmr/db-core-interface`.

  `@azmr/db-supabase` now depends on it instead of on `@azmr/db`, so installing `@azmr/db-supabase` no longer installs `better-sqlite3`. `@azmr/db` re-exports everything from the package root and from `@azmr/db/interface`, so existing imports keep working and `DbAdapterError` is the same class from every entry point.

- Updated dependencies \[9e4ee63]
  - @azmr/db-core-interface\@0.1.0

## 1.1.0

### Minor Changes

- 221ef3b: Add a `./interface` subpath export (`DbAdapter`, `DbAdapterError`, `Filter`,
  `FilterCondition`, `FilterOperator`, `ColumnSchema`, `ColumnType`) that never
  imports `SQLiteAdapter`, so consumers who only need the storage-agnostic
  interface — like `@azmr/db-supabase` — no longer pull in `better-sqlite3` (a
  native, node-gyp-built module) transitively. The root `.` export is
  unchanged and still includes `SQLiteAdapter`.

  Also declares `"sideEffects": false` and corrects the `.` export's condition
  order (`types` before `import`), so bundlers can tree-shake the SQLite
  adapter out of any build that only imports from `.` for its types/errors.

  Non-breaking: purely additive. Consumers on the root `@azmr/db` import are
  unaffected; new code (or `@azmr/db-supabase`) can switch to
  `@azmr/db/interface` to drop the native-module dependency entirely.

### Patch Changes

- Updated dependencies \[a5a2134]
- Updated dependencies \[c8712c6]
- Updated dependencies \[7e2bf0e]
  - @azmr/security\@0.3.1

## 1.0.0

### Major Changes

- c4f2c02: `SQLiteAdapter`'s methods are now all `async` (previously synchronous) — a
  breaking change to every existing call site. This aligns `@azmr/db` with a
  new, extracted `DbAdapter` interface that a cloud-backed adapter
  (`@azmr/db-supabase`) also implements, so callers can swap SQLite for
  Supabase behind the same shape.

  - `deleteWhere`'s signature changed from `(name, condition: string, params)`
    to `(name, filter: Filter)` — a structured, backend-portable filter shape
    (`{column, operator, value}[]`) replacing raw SQL fragments, since a
    cloud/PostgREST-backed adapter can't accept arbitrary SQL strings.
  - New `findWhere(name, filter)` method, using the same `Filter` shape.
  - `rawSelect` and the `path` getter remain SQLite-only escape hatches, not
    part of the shared `DbAdapter` interface.
  - New exports: `DbAdapter`, `Filter`, `FilterCondition`, `FilterOperator`,
    `DbAdapterError`.

  Existing callers need to add `await` at every `SQLiteAdapter` call site.

### Patch Changes

- Updated dependencies \[c4f2c02]
  - @azmr/security\@0.3.0

## 0.2.0

### Minor Changes

- d70fccb: Upgrade workspace dependencies across the monorepo (pnpm 10 -> 11 tooling
  migration): React 18.3 -> 19.2 (`@azmr/ui`), Zod 3.24 -> 4.4 (`@azmr/security`),
  better-sqlite3 11.7 -> 12.11 (`@azmr/db`), plus vitest, tsup, and `@types/node`
  bumped to latest across all packages. `typescript` stays pinned at `^5.7.3`
  (TypeScript 7 currently breaks `tsup`'s `.d.ts` bundling via
  `rollup-plugin-dts`).

### Patch Changes

- 5bf56bb: Fix package metadata: mojibake in the description field (encoding
  mismatch, was showing garbled text on npm) and a missing LICENSE file
  in the published tarball despite being listed in `files`.

  `@azmr/ai` got the same fixes plus missing `homepage`/`repository`/
  `author`/`keywords`, but isn't included in this changeset - it's on
  changesets' ignore list and doesn't take version bumps this way.

- Updated dependencies \[5bf56bb]

- Updated dependencies \[d70fccb]

- Updated dependencies \[8b4512b]
  - @azmr/security\@0.2.0

## 0.1.0

### Minor Changes

- 0a51a60: Phase 3 security hardening

  - `@azmr/security`: add `createRateLimiter` — sliding-window in-memory rate limiter with per-key tracking
  - `@azmr/security`: add `createJWT` — HMAC-SHA256 JWT using Node built-in crypto, timing-safe verification, 15-min default expiry
  - `@azmr/db`: add `createColumnEncryption` — AES-256-GCM column-level encryption with scrypt key derivation and GCM auth tag tamper detection
  - `@azmr/cli`: add `audit:verify` command — recomputes SHA-256 hashes and validates prevHash chain integrity of audit log files

### Patch Changes

- Updated dependencies \[0a51a60]
  - @azmr/security\@0.1.0
