Conversation
* feat(server): migrate next.js server adapter * address PR comments
Co-authored-by: ymc9 <104139426+ymc9@users.noreply.github.com>
* feat(server): migrate rest api handler * addressing PR comments * update lock file * fix pg string json handling * update
* feat(server): migrate fastify adapter * addressing pr comments
* feat(server): migrate elysia adapter * addressing pr comments
* feat(server): migrate hono adapter * fix test
* feat(server): migrate nuxt adapter * addressing PR comments * addressing PR comments * fix
* feat(server): migrate tanstack-start adapter * prettier format
|
Warning Rate limit exceeded@ymc9 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 17 minutes and 1 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (28)
WalkthroughRenames package imports from Changes
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Areas needing extra attention:
Possibly related PRs
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Claude finished @ymc9's task —— View job Code Review for ZenStack v3.0.0-beta.14Completed comprehensive review of this substantial PR that merges dev to main for v3.0.0-beta.14 (18,563 additions, 3,736 deletions across 100 files). Review Checklist
Review SummaryThis is a well-structured release with significant new functionality. The code quality is high, following TypeScript best practices and maintaining consistency across the codebase. ✅ StrengthsArchitecture & Design
New Server Adapters
ORM Enhancements
Package Management
|
There was a problem hiding this comment.
Pull Request Overview
This pull request renames the @zenstackhq/runtime package to @zenstackhq/orm across the codebase. This appears to be part of version 3.0.0-beta.14 release and includes:
- Package rename from
@zenstackhq/runtimeto@zenstackhq/orm - Import path updates across all test files, samples, and package dependencies
- Version bump from 3.0.0-beta.13 to 3.0.0-beta.14
- Some additional test cases added (duplicate sort fields handling)
- New adapter implementations for various frameworks (TanStack Start, SvelteKit, Hono, Fastify, Next.js)
- Refactoring of server adapter structure
Reviewed Changes
Copilot reviewed 145 out of 189 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/regression/package.json | Updated dependency from @zenstackhq/runtime to @zenstackhq/orm |
| tests/e2e/package.json | Updated dependency from @zenstackhq/runtime to @zenstackhq/orm |
| Multiple test files | Updated import statements from @zenstackhq/runtime to @zenstackhq/orm |
| Generated schema files | Updated import paths from @zenstackhq/runtime/schema to @zenstackhq/orm/schema |
| Package files | Updated dependencies and version numbers |
| Server adapter files | New adapter implementations and refactoring |
| tests/e2e/orm/client-api/find.test.ts | Added test cases for duplicate sort fields |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
packages/tanstack-query/src/react.ts (2)
45-45: Replaceanyreturn type with proper typing.The function returns
any, which defeats TypeScript's type safety. This should returnToModelHooks<Schema, Model>to ensure type correctness.Apply this diff:
-function toModelHooks<Schema extends SchemaDef, Model extends GetModels<Schema>>(schema: Schema, model: Model): any { +function toModelHooks<Schema extends SchemaDef, Model extends GetModels<Schema>>(schema: Schema, model: Model): ToModelHooks<Schema, Model> {
51-77: Stub implementations lack TanStack Query integration.The hook implementations return hardcoded mock data instead of using actual TanStack Query hooks (
useQuery,useMutation). This means the hooks won't provide real query/mutation functionality, caching, or state management.For a beta release being merged to main, consider:
- Implementing actual TanStack Query integration using
useQueryanduseMutationfrom@tanstack/react-query- Or clearly documenting that this is placeholder code if the functionality is intentionally deferred
Would you like me to generate a proper implementation using TanStack Query hooks, or should this be tracked as a follow-up issue?
🧹 Nitpick comments (1)
packages/server/src/adapter/next/pages-route-handler.ts (1)
36-36: Consider usingres.json()for consistency.Lines 36 and 39 use
res.send(), while line 18 usesres.json(). For consistency and to ensure proper Content-Type headers, consider usingres.json()throughout.- res.status(r.status).send(r.body); + res.status(r.status).json(r.body); } catch (err) { logInternalError(options.apiHandler.log, err); - res.status(500).send({ message: 'An internal server error occurred' }); + res.status(500).json({ message: 'An internal server error occurred' }); }Also applies to: 39-39
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (107)
BREAKINGCHANGES.md(1 hunks)CLAUDE.md(2 hunks)README.md(2 hunks)package.json(1 hunks)packages/cli/package.json(2 hunks)packages/cli/src/actions/generate.ts(1 hunks)packages/cli/src/actions/init.ts(1 hunks)packages/cli/src/actions/migrate.ts(1 hunks)packages/cli/src/actions/templates.ts(1 hunks)packages/cli/test/ts-schema-gen.test.ts(1 hunks)packages/common-helpers/package.json(1 hunks)packages/common-helpers/src/clone.ts(1 hunks)packages/common-helpers/src/index.ts(1 hunks)packages/config/eslint-config/package.json(1 hunks)packages/config/typescript-config/package.json(1 hunks)packages/config/vitest-config/package.json(1 hunks)packages/create-zenstack/package.json(1 hunks)packages/create-zenstack/src/index.ts(1 hunks)packages/dialects/sql.js/package.json(1 hunks)packages/language/package.json(1 hunks)packages/orm/package.json(1 hunks)packages/orm/src/client/crud/dialects/base-dialect.ts(3 hunks)packages/orm/src/client/crud/dialects/postgresql.ts(1 hunks)packages/orm/src/client/crud/operations/base.ts(1 hunks)packages/orm/src/client/crud/validator/index.ts(1 hunks)packages/plugins/policy/package.json(2 hunks)packages/plugins/policy/src/column-collector.ts(1 hunks)packages/plugins/policy/src/expression-evaluator.ts(1 hunks)packages/plugins/policy/src/expression-transformer.ts(2 hunks)packages/plugins/policy/src/functions.ts(1 hunks)packages/plugins/policy/src/plugin.ts(1 hunks)packages/plugins/policy/src/policy-handler.ts(2 hunks)packages/plugins/policy/src/types.ts(1 hunks)packages/plugins/policy/src/utils.ts(1 hunks)packages/sdk/package.json(1 hunks)packages/sdk/src/ts-schema-generator.ts(7 hunks)packages/server/package.json(3 hunks)packages/server/src/adapter/common.ts(1 hunks)packages/server/src/adapter/elysia/handler.ts(1 hunks)packages/server/src/adapter/elysia/index.ts(1 hunks)packages/server/src/adapter/express/index.ts(1 hunks)packages/server/src/adapter/express/middleware.ts(3 hunks)packages/server/src/adapter/fastify/index.ts(1 hunks)packages/server/src/adapter/fastify/plugin.ts(1 hunks)packages/server/src/adapter/hono/handler.ts(1 hunks)packages/server/src/adapter/hono/index.ts(1 hunks)packages/server/src/adapter/next/app-route-handler.ts(1 hunks)packages/server/src/adapter/next/index.ts(1 hunks)packages/server/src/adapter/next/pages-route-handler.ts(1 hunks)packages/server/src/adapter/nuxt/handler.ts(1 hunks)packages/server/src/adapter/nuxt/index.ts(1 hunks)packages/server/src/adapter/sveltekit/handler.ts(1 hunks)packages/server/src/adapter/sveltekit/index.ts(1 hunks)packages/server/src/adapter/tanstack-start/handler.ts(1 hunks)packages/server/src/adapter/tanstack-start/index.ts(1 hunks)packages/server/src/api/index.ts(1 hunks)packages/server/src/api/rest/index.ts(1 hunks)packages/server/src/api/rpc/index.ts(4 hunks)packages/server/src/api/utils.ts(2 hunks)packages/server/src/express/index.ts(0 hunks)packages/server/src/types.ts(2 hunks)packages/server/test/adapter/elysia.test.ts(1 hunks)packages/server/test/adapter/express.test.ts(2 hunks)packages/server/test/adapter/fastify.test.ts(1 hunks)packages/server/test/adapter/hono.test.ts(1 hunks)packages/server/test/adapter/next.test.ts(1 hunks)packages/server/test/adapter/sveltekit.test.ts(1 hunks)packages/server/test/adapter/tanstack-start.test.ts(1 hunks)packages/server/test/api/rpc.test.ts(1 hunks)packages/server/tsup.config.ts(1 hunks)packages/tanstack-query/package.json(2 hunks)packages/tanstack-query/src/react.ts(1 hunks)packages/testtools/package.json(2 hunks)packages/testtools/src/client.ts(1 hunks)packages/testtools/src/project.ts(1 hunks)packages/testtools/src/vitest-ext.ts(1 hunks)packages/zod/package.json(2 hunks)packages/zod/src/index.ts(1 hunks)packages/zod/src/types.ts(1 hunks)samples/blog/README.md(2 hunks)samples/blog/main.ts(1 hunks)samples/blog/package.json(2 hunks)samples/blog/zenstack/input.ts(1 hunks)samples/blog/zenstack/models.ts(1 hunks)samples/blog/zenstack/schema.ts(1 hunks)tests/e2e/orm/client-api/aggregate.test.ts(1 hunks)tests/e2e/orm/client-api/computed-fields.test.ts(2 hunks)tests/e2e/orm/client-api/count.test.ts(1 hunks)tests/e2e/orm/client-api/create-many-and-return.test.ts(1 hunks)tests/e2e/orm/client-api/create-many.test.ts(1 hunks)tests/e2e/orm/client-api/create.test.ts(1 hunks)tests/e2e/orm/client-api/default-values.test.ts(1 hunks)tests/e2e/orm/client-api/delegate.test.ts(1 hunks)tests/e2e/orm/client-api/delete-many.test.ts(1 hunks)tests/e2e/orm/client-api/delete.test.ts(1 hunks)tests/e2e/orm/client-api/filter.test.ts(1 hunks)tests/e2e/orm/client-api/find.test.ts(4 hunks)tests/e2e/orm/client-api/group-by.test.ts(1 hunks)tests/e2e/orm/client-api/name-mapping.test.ts(1 hunks)tests/e2e/orm/client-api/raw-query.test.ts(1 hunks)tests/e2e/orm/client-api/transaction.test.ts(1 hunks)tests/e2e/orm/client-api/undefined-values.test.ts(1 hunks)tests/e2e/orm/client-api/update-many.test.ts(1 hunks)tests/e2e/orm/client-api/update.test.ts(1 hunks)tests/e2e/orm/client-api/upsert.test.ts(1 hunks)tests/e2e/orm/client-api/utils.ts(1 hunks)tests/e2e/orm/plugin-infra/entity-mutation-hooks.test.ts(1 hunks)
⛔ Files not processed due to max files limit (38)
- tests/e2e/orm/plugin-infra/on-kysely-query.test.ts
- tests/e2e/orm/plugin-infra/on-query-hooks.test.ts
- tests/e2e/orm/policy/basic-schema-read.test.ts
- tests/e2e/orm/policy/crud/create.test.ts
- tests/e2e/orm/policy/migrated/client-extensions.test.ts
- tests/e2e/orm/policy/migrated/multi-field-unique.test.ts
- tests/e2e/orm/policy/migrated/todo-sample.test.ts
- tests/e2e/orm/schemas/basic/input.ts
- tests/e2e/orm/schemas/basic/models.ts
- tests/e2e/orm/schemas/basic/schema.ts
- tests/e2e/orm/schemas/delegate/input.ts
- tests/e2e/orm/schemas/delegate/models.ts
- tests/e2e/orm/schemas/delegate/schema.ts
- tests/e2e/orm/schemas/delegate/typecheck.ts
- tests/e2e/orm/schemas/name-mapping/input.ts
- tests/e2e/orm/schemas/name-mapping/models.ts
- tests/e2e/orm/schemas/name-mapping/schema.ts
- tests/e2e/orm/schemas/petstore/input.ts
- tests/e2e/orm/schemas/petstore/models.ts
- tests/e2e/orm/schemas/petstore/schema.ts
- tests/e2e/orm/schemas/todo/input.ts
- tests/e2e/orm/schemas/todo/models.ts
- tests/e2e/orm/schemas/todo/schema.ts
- tests/e2e/orm/schemas/typing/input.ts
- tests/e2e/orm/schemas/typing/models.ts
- tests/e2e/orm/schemas/typing/schema.ts
- tests/e2e/orm/schemas/typing/typecheck.ts
- tests/e2e/package.json
- tests/regression/package.json
- tests/regression/test/issue-204/input.ts
- tests/regression/test/issue-204/models.ts
- tests/regression/test/issue-204/schema.ts
- tests/regression/test/v2-migrated/issue-1135.test.ts
- tests/regression/test/v2-migrated/issue-1763.test.ts
- tests/regression/test/v2-migrated/issue-1857.test.ts
- tests/regression/test/v2-migrated/issue-1894.test.ts
- tests/regression/test/v2-migrated/issue-1991.test.ts
- tests/regression/test/v2-migrated/issue-1994.test.ts
💤 Files with no reviewable changes (1)
- packages/server/src/express/index.ts
🧰 Additional context used
📓 Path-based instructions (4)
{packages,samples,tests}/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place packages only under
packages/,samples/, ortests/
Files:
packages/cli/src/actions/migrate.tstests/e2e/orm/client-api/create-many-and-return.test.tspackages/language/package.jsonpackages/testtools/src/vitest-ext.tstests/e2e/orm/client-api/upsert.test.tspackages/server/tsup.config.tstests/e2e/orm/client-api/delete.test.tspackages/orm/src/client/crud/validator/index.tstests/e2e/orm/client-api/update-many.test.tspackages/server/test/api/rpc.test.tspackages/config/typescript-config/package.jsontests/e2e/orm/client-api/delete-many.test.tstests/e2e/orm/client-api/create-many.test.tspackages/plugins/policy/package.jsonpackages/testtools/src/project.tspackages/server/src/adapter/hono/index.tspackages/sdk/package.jsonpackages/tanstack-query/package.jsonsamples/blog/zenstack/models.tspackages/plugins/policy/src/policy-handler.tstests/e2e/orm/client-api/raw-query.test.tssamples/blog/main.tspackages/server/src/adapter/next/pages-route-handler.tspackages/plugins/policy/src/expression-transformer.tspackages/tanstack-query/src/react.tspackages/plugins/policy/src/plugin.tspackages/common-helpers/src/clone.tssamples/blog/package.jsontests/e2e/orm/client-api/utils.tstests/e2e/orm/client-api/undefined-values.test.tspackages/plugins/policy/src/column-collector.tspackages/server/src/adapter/tanstack-start/index.tspackages/server/src/adapter/hono/handler.tstests/e2e/orm/client-api/filter.test.tstests/e2e/orm/client-api/count.test.tspackages/sdk/src/ts-schema-generator.tspackages/server/test/adapter/next.test.tspackages/cli/test/ts-schema-gen.test.tspackages/zod/package.jsonpackages/server/src/adapter/nuxt/index.tspackages/plugins/policy/src/types.tssamples/blog/README.mdpackages/server/src/types.tstests/e2e/orm/client-api/update.test.tspackages/testtools/package.jsonpackages/server/src/adapter/next/index.tspackages/create-zenstack/package.jsonpackages/zod/src/types.tspackages/orm/src/client/crud/dialects/postgresql.tspackages/orm/package.jsontests/e2e/orm/client-api/delegate.test.tspackages/config/eslint-config/package.jsonpackages/orm/src/client/crud/operations/base.tspackages/server/src/api/rpc/index.tspackages/server/src/adapter/elysia/handler.tspackages/server/src/adapter/next/app-route-handler.tstests/e2e/orm/client-api/aggregate.test.tspackages/plugins/policy/src/expression-evaluator.tspackages/server/test/adapter/fastify.test.tspackages/server/src/adapter/nuxt/handler.tspackages/server/src/adapter/common.tstests/e2e/orm/client-api/default-values.test.tspackages/zod/src/index.tspackages/server/test/adapter/elysia.test.tspackages/cli/src/actions/generate.tspackages/server/test/adapter/hono.test.tstests/e2e/orm/client-api/name-mapping.test.tspackages/server/src/adapter/express/middleware.tspackages/server/src/adapter/sveltekit/index.tspackages/common-helpers/src/index.tspackages/config/vitest-config/package.jsonpackages/server/test/adapter/express.test.tspackages/server/package.jsontests/e2e/orm/client-api/computed-fields.test.tspackages/server/src/adapter/fastify/index.tstests/e2e/orm/plugin-infra/entity-mutation-hooks.test.tstests/e2e/orm/client-api/group-by.test.tstests/e2e/orm/client-api/create.test.tspackages/dialects/sql.js/package.jsonpackages/testtools/src/client.tspackages/plugins/policy/src/utils.tspackages/server/test/adapter/sveltekit.test.tstests/e2e/orm/client-api/find.test.tstests/e2e/orm/client-api/transaction.test.tssamples/blog/zenstack/schema.tspackages/common-helpers/package.jsonpackages/server/src/adapter/elysia/index.tspackages/server/src/api/rest/index.tspackages/server/src/api/index.tspackages/server/src/adapter/tanstack-start/handler.tspackages/server/src/adapter/express/index.tspackages/plugins/policy/src/functions.tspackages/server/test/adapter/tanstack-start.test.tssamples/blog/zenstack/input.tspackages/server/src/adapter/fastify/plugin.tspackages/cli/src/actions/init.tspackages/create-zenstack/src/index.tspackages/cli/package.jsonpackages/orm/src/client/crud/dialects/base-dialect.tspackages/server/src/adapter/sveltekit/handler.tspackages/server/src/api/utils.tspackages/cli/src/actions/templates.ts
tests/e2e/**
📄 CodeRabbit inference engine (CLAUDE.md)
End-to-end tests must live under
tests/e2e/
Files:
tests/e2e/orm/client-api/create-many-and-return.test.tstests/e2e/orm/client-api/upsert.test.tstests/e2e/orm/client-api/delete.test.tstests/e2e/orm/client-api/update-many.test.tstests/e2e/orm/client-api/delete-many.test.tstests/e2e/orm/client-api/create-many.test.tstests/e2e/orm/client-api/raw-query.test.tstests/e2e/orm/client-api/utils.tstests/e2e/orm/client-api/undefined-values.test.tstests/e2e/orm/client-api/filter.test.tstests/e2e/orm/client-api/count.test.tstests/e2e/orm/client-api/update.test.tstests/e2e/orm/client-api/delegate.test.tstests/e2e/orm/client-api/aggregate.test.tstests/e2e/orm/client-api/default-values.test.tstests/e2e/orm/client-api/name-mapping.test.tstests/e2e/orm/client-api/computed-fields.test.tstests/e2e/orm/plugin-infra/entity-mutation-hooks.test.tstests/e2e/orm/client-api/group-by.test.tstests/e2e/orm/client-api/create.test.tstests/e2e/orm/client-api/find.test.tstests/e2e/orm/client-api/transaction.test.ts
package.json
📄 CodeRabbit inference engine (CLAUDE.md)
Pin the repository package manager to
pnpm@10.12.1via thepackageManagerfield
Files:
package.json
**/schema.ts
📄 CodeRabbit inference engine (CLAUDE.md)
The generated TypeScript schema should be named
schema.ts
Files:
samples/blog/zenstack/schema.ts
🧠 Learnings (9)
📚 Learning: 2025-09-04T12:38:14.150Z
Learnt from: CR
Repo: zenstackhq/zenstack-v3 PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-04T12:38:14.150Z
Learning: Database migrations use Prisma CLI under the hood
Applied to files:
packages/cli/src/actions/migrate.tsREADME.md
📚 Learning: 2025-09-04T12:38:14.150Z
Learnt from: CR
Repo: zenstackhq/zenstack-v3 PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-04T12:38:14.150Z
Learning: Applies to **/schema.zmodel : Name ZModel schema files `schema.zmodel`
Applied to files:
packages/language/package.jsonpackages/orm/src/client/crud/validator/index.tspackages/zod/src/types.tspackages/zod/src/index.ts
📚 Learning: 2025-10-21T16:09:31.218Z
Learnt from: ymc9
Repo: zenstackhq/zenstack-v3 PR: 319
File: packages/runtime/src/client/executor/zenstack-query-executor.ts:63-72
Timestamp: 2025-10-21T16:09:31.218Z
Learning: In ZenStack, TypeDefs can be inherited by models. When a TypeDef contains fields with `map` attributes, those mapped field names need to be processed by the QueryNameMapper since they become part of the inheriting model's schema. Therefore, when checking if a schema has mapped names (e.g., in `schemaHasMappedNames`), both `schema.models` and `schema.typeDefs` must be inspected for `@map` and `map` attributes.
Applied to files:
packages/orm/src/client/crud/validator/index.tssamples/blog/zenstack/models.tspackages/plugins/policy/src/policy-handler.tspackages/tanstack-query/src/react.tspackages/zod/src/types.tspackages/zod/src/index.tssamples/blog/zenstack/schema.ts
📚 Learning: 2025-09-04T12:38:14.150Z
Learnt from: CR
Repo: zenstackhq/zenstack-v3 PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-04T12:38:14.150Z
Learning: Always run `zenstack generate` after modifying ZModel schemas
Applied to files:
README.mdsamples/blog/zenstack/models.tspackages/sdk/src/ts-schema-generator.tspackages/cli/src/actions/generate.ts
📚 Learning: 2025-09-04T12:38:14.150Z
Learnt from: CR
Repo: zenstackhq/zenstack-v3 PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-04T12:38:14.150Z
Learning: Applies to **/schema.ts : The generated TypeScript schema should be named `schema.ts`
Applied to files:
packages/sdk/src/ts-schema-generator.tspackages/cli/test/ts-schema-gen.test.tspackages/zod/src/types.tspackages/zod/src/index.tssamples/blog/zenstack/schema.ts
📚 Learning: 2025-09-04T12:38:14.150Z
Learnt from: CR
Repo: zenstackhq/zenstack-v3 PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-04T12:38:14.150Z
Learning: Applies to tests/e2e/** : End-to-end tests must live under `tests/e2e/`
Applied to files:
CLAUDE.md
📚 Learning: 2025-09-04T12:38:14.150Z
Learnt from: CR
Repo: zenstackhq/zenstack-v3 PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-04T12:38:14.150Z
Learning: Applies to package.json : Pin the repository package manager to `pnpm10.12.1` via the `packageManager` field
Applied to files:
package.json
📚 Learning: 2025-09-04T12:38:14.150Z
Learnt from: CR
Repo: zenstackhq/zenstack-v3 PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-04T12:38:14.150Z
Learning: Applies to pnpm-workspace.yaml : Use pnpm workspaces for the monorepo
Applied to files:
packages/cli/package.json
📚 Learning: 2025-10-21T16:04:56.292Z
Learnt from: ymc9
Repo: zenstackhq/zenstack-v3 PR: 319
File: packages/runtime/src/client/crud/dialects/base-dialect.ts:745-747
Timestamp: 2025-10-21T16:04:56.292Z
Learning: In packages/runtime/src/client/crud/dialects/base-dialect.ts, it's intentional that buildCursorFilter applies default ordering (via makeDefaultOrderBy fallback) while buildOrderBy does not. This ensures cursor-based pagination always has stable ordering for correctness, while regular queries remain unordered unless explicitly specified. This design is to be consistent with Prisma's pagination requirements.
Applied to files:
packages/orm/src/client/crud/dialects/base-dialect.ts
🧬 Code graph analysis (24)
packages/server/src/adapter/next/pages-route-handler.ts (4)
packages/server/src/adapter/next/app-route-handler.ts (1)
factory(14-66)packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/next/index.ts (1)
PageRouteRequestHandlerOptions(12-22)packages/server/src/adapter/common.ts (1)
logInternalError(15-21)
packages/server/src/adapter/tanstack-start/index.ts (3)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/common.ts (1)
CommonAdapterOptions(8-13)packages/orm/src/client/contract.ts (1)
ClientContract(50-170)
packages/server/src/adapter/hono/handler.ts (3)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/common.ts (2)
CommonAdapterOptions(8-13)logInternalError(15-21)packages/orm/src/client/contract.ts (1)
ClientContract(50-170)
packages/server/test/adapter/next.test.ts (4)
packages/server/src/adapter/next/index.ts (2)
PageRouteRequestHandlerOptions(12-22)NextRequestHandler(48-56)packages/testtools/src/client.ts (2)
createTestClient(52-169)createPolicyTestClient(179-190)packages/server/src/api/rpc/index.ts (1)
RPCApiHandler(34-259)packages/server/src/api/rest/index.ts (1)
RestApiHandler(125-2079)
packages/server/src/adapter/next/index.ts (3)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/common.ts (1)
CommonAdapterOptions(8-13)packages/orm/src/client/contract.ts (1)
ClientContract(50-170)
packages/server/src/api/rpc/index.ts (4)
packages/server/src/types.ts (1)
LogConfig(17-17)packages/server/src/api/rest/index.ts (1)
log(288-290)packages/server/src/api/utils.ts (1)
log(9-27)packages/common-helpers/src/safe-json-stringify.ts (1)
safeJSONStringify(4-12)
packages/server/src/adapter/elysia/handler.ts (3)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/common.ts (2)
CommonAdapterOptions(8-13)logInternalError(15-21)packages/orm/src/client/contract.ts (1)
ClientContract(50-170)
packages/server/src/adapter/next/app-route-handler.ts (4)
packages/server/src/adapter/next/pages-route-handler.ts (1)
factory(12-42)packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/next/index.ts (1)
AppRouteRequestHandlerOptions(27-37)packages/server/src/adapter/common.ts (1)
logInternalError(15-21)
packages/server/test/adapter/fastify.test.ts (2)
packages/testtools/src/client.ts (1)
createTestClient(52-169)packages/server/test/utils.ts (1)
makeUrl(31-33)
packages/server/src/adapter/nuxt/handler.ts (3)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/common.ts (2)
CommonAdapterOptions(8-13)logInternalError(15-21)packages/orm/src/client/contract.ts (1)
ClientContract(50-170)
packages/server/src/adapter/common.ts (2)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/types.ts (2)
ApiHandler(67-82)LogConfig(17-17)
packages/server/test/adapter/elysia.test.ts (6)
packages/testtools/src/client.ts (1)
createTestClient(52-169)packages/server/src/api/rest/index.ts (1)
schema(284-286)packages/server/src/api/rpc/index.ts (1)
schema(37-39)packages/server/src/adapter/elysia/handler.ts (1)
createElysiaHandler(25-77)packages/server/test/utils.ts (1)
makeUrl(31-33)packages/server/src/types.ts (1)
Response(52-62)
packages/server/test/adapter/hono.test.ts (4)
packages/testtools/src/client.ts (1)
createTestClient(52-169)packages/server/src/adapter/hono/handler.ts (1)
createHonoHandler(17-55)packages/server/test/utils.ts (1)
makeUrl(31-33)packages/server/src/types.ts (1)
Response(52-62)
packages/server/src/adapter/express/middleware.ts (4)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/common.ts (2)
CommonAdapterOptions(8-13)logInternalError(15-21)packages/server/src/adapter/next/app-route-handler.ts (1)
factory(14-66)packages/server/src/adapter/next/pages-route-handler.ts (1)
factory(12-42)
packages/server/test/adapter/express.test.ts (3)
packages/testtools/src/client.ts (1)
createPolicyTestClient(179-190)packages/server/src/api/rest/index.ts (2)
schema(284-286)RestApiHandler(125-2079)packages/server/test/utils.ts (2)
schema(3-29)makeUrl(31-33)
packages/server/test/adapter/sveltekit.test.ts (2)
packages/testtools/src/client.ts (1)
createTestClient(52-169)packages/server/test/utils.ts (1)
makeUrl(31-33)
packages/server/src/api/rest/index.ts (9)
packages/sdk/src/schema/schema.ts (3)
SchemaDef(10-18)FieldDef(60-75)ModelDef(20-37)packages/server/src/types.ts (4)
LogConfig(17-17)ApiHandler(67-82)RequestContext(22-47)Response(52-62)packages/server/src/api/utils.ts (3)
registerCustomSerializers(32-53)getZodErrorMessage(58-64)log(9-27)packages/common-helpers/src/lower-case-first.ts (1)
lowerCaseFirst(1-3)packages/orm/src/client/errors.ts (5)
ZenStackError(4-4)InputValidationError(9-17)RejectedByPolicyError(68-76)NotFoundError(36-43)QueryError(22-26)packages/orm/src/client/contract.ts (1)
ClientContract(50-170)packages/common-helpers/src/enumerable.ts (1)
enumerate(9-17)packages/common-helpers/src/clone.ts (1)
clone(6-24)packages/common-helpers/src/param-case.ts (1)
paramCase(5-22)
packages/server/src/adapter/tanstack-start/handler.ts (4)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/tanstack-start/index.ts (1)
TanStackStartOptions(9-17)packages/server/src/types.ts (1)
Response(52-62)packages/server/src/adapter/common.ts (1)
logInternalError(15-21)
packages/server/test/adapter/tanstack-start.test.ts (3)
packages/server/src/adapter/tanstack-start/index.ts (2)
TanStackStartOptions(9-17)TanStackStartHandler(23-27)packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/testtools/src/client.ts (2)
createTestClient(52-169)createPolicyTestClient(179-190)
packages/server/src/adapter/fastify/plugin.ts (3)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/common.ts (2)
CommonAdapterOptions(8-13)logInternalError(15-21)packages/orm/src/client/contract.ts (1)
ClientContract(50-170)
packages/orm/src/client/crud/dialects/base-dialect.ts (2)
packages/common-helpers/src/enumerable.ts (1)
enumerate(9-17)packages/orm/src/client/query-utils.ts (1)
buildJoinPairs(193-211)
packages/server/src/adapter/sveltekit/handler.ts (4)
packages/sdk/src/schema/schema.ts (1)
SchemaDef(10-18)packages/server/src/adapter/common.ts (2)
CommonAdapterOptions(8-13)logInternalError(15-21)packages/orm/src/client/contract.ts (1)
ClientContract(50-170)packages/server/src/types.ts (1)
Response(52-62)
packages/server/src/api/utils.ts (1)
packages/orm/src/client/executor/zenstack-driver.ts (1)
error(172-179)
packages/cli/src/actions/templates.ts (1)
packages/create-zenstack/src/templates.ts (1)
STARTER_MAIN_TS(29-58)
🪛 GitHub Check: CodeQL
packages/server/test/adapter/express.test.ts
[failure] 103-106: Missing rate limiting
This route handler performs authorization, but is not rate-limited.
[failure] 158-162: Missing rate limiting
This route handler performs authorization, but is not rate-limited.
packages/server/src/adapter/fastify/plugin.ts
[failure] 31-53: Missing rate limiting
This route handler performs authorization, but is not rate-limited.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
- GitHub Check: Upload results
- GitHub Check: GitGuardian Security Checks
- GitHub Check: build-test (20.x, sqlite)
- GitHub Check: build-test (20.x, postgresql)
- GitHub Check: claude-review
* chore: several server adapter improvements * update
|
Claude finished @ymc9's task —— View job Code Review for ZenStack v3.0.0-beta.14Completed comprehensive review of this substantial PR that merges dev to main for v3.0.0-beta.14 (18,563 additions, 3,736 deletions across 100 files). Review Checklist
Review SummaryThis is a well-structured release with significant new functionality. The code quality is high, following TypeScript best practices and maintaining consistency across the codebase. ✅ StrengthsArchitecture & Design
New Server Adapters
ORM Enhancements
Package Management
|
* chore: require zod4 or above * update * update
|
Claude finished @ymc9's task —— View job Code Review for ZenStack v3.0.0-beta.14Completed comprehensive review of this substantial PR that merges dev to main for v3.0.0-beta.14 (18,563 additions, 3,736 deletions across 100 files). Review Checklist
Review SummaryThis is a well-structured release with significant new functionality. The code quality is high, following TypeScript best practices and maintaining consistency across the codebase. ✅ StrengthsArchitecture & Design
New Server Adapters
ORM Enhancements
Package Management
|
Summary by CodeRabbit
New Features
Breaking Changes
Chores