Skip to content

chore(deps): update zenstack#76

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/zenstack
Open

chore(deps): update zenstack#76
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/zenstack

Conversation

@renovate

@renovate renovate Bot commented May 14, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@zenstackhq/orm (source) 3.6.43.8.0 age confidence

Release Notes

zenstackhq/zenstack (@​zenstackhq/orm)

v3.8.0: ZenStack Release v3.8.0

Compare Source

New Features

A solid batch of additions in this release 🥳 !

Soft-Delete Plugin

A new @zenstackhq/plugin-soft-delete package (preview) implements soft delete by intercepting Kysely queries. Instead of physically removing rows, delete operations mark them with a timestamp, and reads automatically exclude the marked rows. doc

Declare the plugin and mark a nullable DateTime field with @deletedAt:

plugin softDelete {
    provider = '@​zenstackhq/plugin-soft-delete'
}

model User {
    id        Int       @​id @​default(autoincrement())
    email     String    @​unique
    deletedAt DateTime? @​deletedAt
}

Install it on your client at runtime:

import { ZenStackClient } from '@​zenstackhq/orm';
import { SoftDeletePlugin } from '@​zenstackhq/plugin-soft-delete';

const db = new ZenStackClient(schema, { ... }).$use(new SoftDeletePlugin());

// rewritten to set `deletedAt` — the row is kept in the database
await db.user.delete({ where: { id: user.id } });

// returns `null` — soft-deleted rows are hidden from reads
await db.user.findUnique({ where: { id: user.id } });
Date and Time Validation

You can now validate string fields as ISO date and time values with the new @date and @time attributes (backed by zod.iso.date() and zod.iso.time() ). Contributed by @​sanny-io.

model Event {
  id        Int    @​id @​default(autoincrement())
  startDate String @​date
  startTime String @​time(3)
}
Auto-Detect Import File Extension

The CLI now auto-detects the import file extension (e.g. .js vs extensionless) from your tsconfig.json when generating code, so generated imports match your module setup out of the box.

Faster Type Checking

We sped up type checking by short-circuiting some of the most expensive tsc traversals and type comparisons. We're seeing 70% speed-up and 70% fewer type instantiations with complex schemas.

For AI Coding Agents

We've published official ZenStack skills to skills.sh.

npx skills add zenstackhq/skills --all

See Setting Up AI Agents for more details.

Fixes and Improvements
  • [policy] Fixed the in operator against enum lists with native enums #​2718
  • [tanstack-query] Fixed pageParam in infinite queries for Vue by @​caiotarifa #​2713
  • [orm] Fixed _count when nested inside an include #​2669
  • [deps] Upgraded Langium to 4.2 to drop vulnerable lodash-es #​2704
  • [orm] Forbid selecting @omit fields when allowQueryTimeOmitOverride is false #​2671
  • [server] Omit relations to sliced-away models from the OpenAPI spec #​2628
  • [orm] Fixed the isEmpty function when using the postgresql dialect by @​sanny-io
  • [language] Forbid duplicate @default applications by @​sanny-io

Full Changelog: zenstackhq/zenstack@v3.7.2...v3.8.0

v3.7.2: ZenStack Release v3.7.2

Compare Source

What's Changed

Full Changelog: zenstackhq/zenstack@v3.7.1...v3.7.2

v3.7.1: ZenStack Release v3.7.1

Compare Source

What's Changed
  • [orm] You can now use the @@​delegateMap attribute to control the value used for discriminator field values in polymorphic models by @​wolflu05 doc.
  • [orm] Fixed an invalid Prisma schema generation issue when using ID formatting by @​sanny-io

Full Changelog: zenstackhq/zenstack@v3.7.0...v3.7.1

v3.7.0: ZenStack Release v3.7.0

Compare Source

New Features

Several cool additions landed in this release 🥳 !

Full-Text Search (Postgres Only)

You can now use the fts and _ftsRelevance query fields to do full-text queries against Postgres database doc. Mark fields you want to search with the @fullText attribute and enjoy effortless queries.

model Article {
  id       Int     @​id @​default(autoincrement())
  title    String  @​fullText
  body     String  @​fullText
  subtitle String? @​fullText
  notes    String? // not full-text-searchable
}
await db.article.findMany({
  where: { title: { fts: { search: 'cat & dog' } } },
});

await db.article.findMany({
  orderBy: {
    _ftsRelevance: { fields: ['body'], search: 'cat & dog', sort: 'desc' },
  },
});
Fuzzy Search (Postgres Only)

You can now use the fuzzy and _fuzzyRelevance query fields to do fuzzy search against Postgres database doc. Mark fields you want to search with the @fuzzy attribute and enjoy effortless queries. This feature requires the pg_trgm extension. Read the docs for more details.

This awesome feature is contributed by @​docloulou .

model Flavor {
  id          Int     @​id @​default(autoincrement())
  name        String? @​fuzzy
  description String  @​fuzzy
  notes       String? // not fuzzy-searchable
}
await db.flavor.findMany({
  where: { name: { fuzzy: { search: 'Aple' } } },
});

await db.flavor.findMany({
  orderBy: {
    _fuzzyRelevance: { fields: ['name'], search: 'Apple', sort: 'desc' },
  },
});
Fetch-Based API Client

A new @zenstackhq/fetch-client package is added to provide a simple fetch-based client for consuming the automated CRUD services (RPC-style only). Think of it as the sibling of the @zenstackhq/tanstack-query package, but without framework dependency and complexity of reactive state management. Ideal when you just need a simple, promise-based client. doc

import { createClient } from '@​zenstackhq/fetch-client';
import { schema } from '~/zenstack/schema-lite';

const client = createClient(schema, {
  endpoint: 'https://example.com/api/model',
});

const users = await client.user.findMany({ include: { posts: true } });
const post = await client.post.create({ data: { title: 'Hello' } });
TanStack Query Sequential Transactions

You can now use the $transaction.useSequential hook to execute sequential transactions from the frontend doc.

const client = useClientQueries(schema);
const tx = client.$transaction.useSequential();

function onSubmit() {
  tx.mutate([
    { model: 'User', op: 'create', args: { data: { email: 'foo@bar.com' } } },
    { model: 'Post', op: 'create', args: { data: { title: 'Hello' } } },
  ]);
}
Kysely Version Bumped to v0.29.x

We've bumped Kysely dependency version to its latest. Please note that the new version appears to be ESM-only. Please double-check compatibility after the upgrade.

Fixes and Improvements
  • [tanstack-query] You can now use DbNull/JsonNull/AnyNull to filter JSON fields with the query hooks doc
  • [zod] Fixed a JSON field typing inconsistency between zod schemas and ORM types by @​Azzerty23 #​2639
  • [orm] Fixed several issues related to using @db.Time/@db.TimeZ fields by @​erwan-joly #​2633 #​2631
  • [orm] Fixed an infinite recursion issue when validating cyclic strongly-typed JSON #​2654
  • [better-auth] Fixed adapter loading issues when targeting CJS #​2646
  • [policy] Fixed policy plugin detection issue with certain bundlers by @​Albatrosso #​2662
  • [cli] Fixed db pull issue with multiple FK fields targeting the same model by @​svetch
  • Upgraded to TypeScript 6

Full Changelog: zenstackhq/zenstack@v3.6.4...v3.7.0


Welcome @​docloulou and @​Albatrosso as our new contributors ❤️ !


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot force-pushed the renovate/zenstack branch 2 times, most recently from 5298729 to f90df61 Compare May 23, 2026 21:34
@renovate renovate Bot changed the title chore(deps): update dependency @zenstackhq/orm to v3.7.0 chore(deps): update dependency @zenstackhq/orm to v3.7.1 May 23, 2026
@renovate renovate Bot force-pushed the renovate/zenstack branch from f90df61 to 50bc8ab Compare May 31, 2026 05:46
@renovate renovate Bot changed the title chore(deps): update dependency @zenstackhq/orm to v3.7.1 chore(deps): update dependency @zenstackhq/orm to v3.7.2 May 31, 2026
@renovate renovate Bot changed the title chore(deps): update dependency @zenstackhq/orm to v3.7.2 chore(deps): update zenstack to v3.7.2 Jun 2, 2026
@renovate renovate Bot force-pushed the renovate/zenstack branch from 50bc8ab to 573dac5 Compare June 11, 2026 16:56
@renovate renovate Bot force-pushed the renovate/zenstack branch from 573dac5 to c669311 Compare June 18, 2026 13:11
@renovate renovate Bot changed the title chore(deps): update zenstack to v3.7.2 chore(deps): update zenstack to v3.8.0 Jun 18, 2026
@renovate renovate Bot changed the title chore(deps): update zenstack to v3.8.0 chore(deps): update zenstack Jun 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants