zenstack-trpc 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -133,13 +133,102 @@ const appRouter = createZenStackRouter(schema, t);
133
133
 
134
134
  ### `TypedRouterCaller<SchemaType>`
135
135
 
136
- Type helper for server-side caller with full type inference.
136
+ Type helper for server-side caller with full type inference, including dynamic `include`/`select` result typing.
137
137
 
138
138
  ```typescript
139
139
  import type { TypedRouterCaller } from "zenstack-trpc";
140
140
  import type { SchemaType } from "./zenstack/schema.js";
141
141
 
142
142
  const caller = appRouter.createCaller({ db }) as TypedRouterCaller<SchemaType>;
143
+
144
+ // Return type dynamically includes the posts relation!
145
+ const usersWithPosts = await caller.user.findMany({ include: { posts: true } });
146
+ // Type: (User & { posts: Post[] })[]
147
+ ```
148
+
149
+ ### `withZenStackTypes<SchemaType>()`
150
+
151
+ Utility function that adds full `include`/`select` type inference to any tRPC client. This solves tRPC's limitation where generic type information is lost during type inference.
152
+
153
+ Works with both vanilla tRPC clients and React hooks:
154
+
155
+ ```typescript
156
+ import { createTRPCClient, httpBatchLink } from "@trpc/client";
157
+ import { createTRPCReact } from "@trpc/react-query";
158
+ import { withZenStackTypes } from "zenstack-trpc";
159
+ import type { AppRouter } from "./server/trpc.js";
160
+ import type { SchemaType } from "./zenstack/schema.js";
161
+
162
+ // For vanilla tRPC client:
163
+ const client = withZenStackTypes<SchemaType>()(
164
+ createTRPCClient<AppRouter>({
165
+ links: [httpBatchLink({ url: "http://localhost:3000/trpc" })],
166
+ })
167
+ );
168
+
169
+ // Now includes are fully typed!
170
+ const usersWithPosts = await client.user.findMany.query({
171
+ include: { posts: true }
172
+ });
173
+ // Type: (User & { posts: Post[] })[]
174
+
175
+ // For tRPC React hooks:
176
+ const trpc = withZenStackTypes<SchemaType>()(
177
+ createTRPCReact<AppRouter>()
178
+ );
179
+
180
+ // In your component:
181
+ const { data } = trpc.user.findMany.useQuery({
182
+ include: { posts: true }
183
+ });
184
+ // data is typed as (User & { posts: Post[] })[] | undefined
185
+ ```
186
+
187
+ You can also use the type helpers directly if you prefer manual casting:
188
+
189
+ ```typescript
190
+ import type { TypedTRPCClient, TypedTRPCReact } from "zenstack-trpc";
191
+
192
+ const client = _client as unknown as TypedTRPCClient<SchemaType>;
193
+ const trpc = _trpc as unknown as TypedTRPCReact<SchemaType>;
194
+ ```
195
+
196
+ ### Nested Namespaces (Merged Routers)
197
+
198
+ When your ZenStack router is merged under a namespace in your main router, use `WithZenStackTypes` or `withNestedZenStackTypes()`:
199
+
200
+ ```typescript
201
+ // If your router structure is:
202
+ // appRouter = t.router({
203
+ // db: zenStackRouter, // ZenStack models under 'db' namespace
204
+ // auth: authRouter,
205
+ // })
206
+
207
+ import { createTRPCReact } from "@trpc/react-query";
208
+ import type { AppRouter } from "./server/trpc.js";
209
+ import type { SchemaType } from "./zenstack/schema.js";
210
+ import type { WithZenStackTypes } from "zenstack-trpc";
211
+
212
+ const _trpc = createTRPCReact<AppRouter>();
213
+
214
+ // Option 1: Type helper for manual casting
215
+ type TypedTRPC = Omit<typeof _trpc, 'db'> & {
216
+ db: WithZenStackTypes<SchemaType, 'react'>
217
+ };
218
+ export const trpc = _trpc as unknown as TypedTRPC;
219
+
220
+ // Option 2: Use the helper functions
221
+ import { withNestedZenStackReact, withNestedZenStackClient } from "zenstack-trpc";
222
+
223
+ // For React hooks:
224
+ export const trpc = withNestedZenStackReact<SchemaType, typeof _trpc, 'db'>('db')(_trpc);
225
+
226
+ // For vanilla tRPC client:
227
+ // export const client = withNestedZenStackClient<SchemaType, typeof _client, 'db'>('db')(_client);
228
+
229
+ // Now you can use:
230
+ // trpc.db.user.findMany.useQuery({ include: { posts: true } }) // fully typed
231
+ // trpc.auth.login.useMutation() // other routers unaffected
143
232
  ```
144
233
 
145
234
  ### Zod Schema Access
package/dist/index.d.ts CHANGED
@@ -27,5 +27,6 @@
27
27
  * @packageDocumentation
28
28
  */
29
29
  export { createZenStackRouter, type ZenStackRouter, type ZenStackRouterRecord, type TRPCModelProcedures, type TypedRouterCaller, type TypedModelProcedures, type TRPCInstance, } from "./router-generator.js";
30
+ export { withZenStackTypes, withNestedZenStackReact, withNestedZenStackClient, type WithZenStackTypes, type TypedTRPCClient, type TypedClientModelProcedures, type TypedTRPCReact, type TypedReactModelHooks, } from "./typed-client.js";
30
31
  export { createModelSchemas, createWhereSchema, createCreateDataSchema, createUpdateDataSchema, createUniqueWhereSchema, createSelectSchema, createIncludeSchema, createOrderBySchema, } from "./zod-schemas.js";
31
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAEL,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EAExB,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAE/B,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -28,5 +28,9 @@
28
28
  */
29
29
  // Router generator and types
30
30
  export { createZenStackRouter, } from "./router-generator.js";
31
+ // Typed client helpers for full include/select inference
32
+ export {
33
+ // Converter utilities
34
+ withZenStackTypes, withNestedZenStackReact, withNestedZenStackClient, } from "./typed-client.js";
31
35
  // Zod schema generators (for advanced usage)
32
36
  export { createModelSchemas, createWhereSchema, createCreateDataSchema, createUpdateDataSchema, createUniqueWhereSchema, createSelectSchema, createIncludeSchema, createOrderBySchema, } from "./zod-schemas.js";
@@ -158,7 +158,7 @@ type TypedQueryProcedure<TInput, TOutput> = {
158
158
  type: 'query';
159
159
  meta: unknown;
160
160
  experimental_caller: boolean;
161
- inputs: unknown[];
161
+ inputs: any[];
162
162
  };
163
163
  meta: unknown;
164
164
  (opts: unknown): Promise<TOutput>;
@@ -177,7 +177,7 @@ type TypedMutationProcedure<TInput, TOutput> = {
177
177
  type: 'mutation';
178
178
  meta: unknown;
179
179
  experimental_caller: boolean;
180
- inputs: unknown[];
180
+ inputs: any[];
181
181
  };
182
182
  meta: unknown;
183
183
  (opts: unknown): Promise<TOutput>;
@@ -186,7 +186,7 @@ type TypedMutationProcedure<TInput, TOutput> = {
186
186
  * Type for a single model's tRPC procedures (for client inference)
187
187
  * This maps each operation to its tRPC procedure type with proper input/output
188
188
  */
189
- export type TRPCModelProcedures<Schema extends SchemaDef, Model extends GetModels<Schema>, TContext> = {
189
+ export type TRPCModelProcedures<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
190
190
  findMany: TypedQueryProcedure<FindManyArgs<Schema, Model> | undefined, SimplifiedPlainResult<Schema, Model, {}>[]>;
191
191
  findUnique: TypedQueryProcedure<FindUniqueArgs<Schema, Model>, SimplifiedPlainResult<Schema, Model, {}> | null>;
192
192
  findFirst: TypedQueryProcedure<FindFirstArgs<Schema, Model> | undefined, SimplifiedPlainResult<Schema, Model, {}> | null>;
@@ -210,8 +210,8 @@ export type TRPCModelProcedures<Schema extends SchemaDef, Model extends GetModel
210
210
  /**
211
211
  * Type for the full router record that tRPC uses for inference
212
212
  */
213
- export type ZenStackRouterRecord<Schema extends SchemaDef, TContext> = {
214
- [K in GetModels<Schema> as Uncapitalize<K>]: TRPCModelProcedures<Schema, K, TContext>;
213
+ export type ZenStackRouterRecord<Schema extends SchemaDef> = {
214
+ [K in GetModels<Schema> as Uncapitalize<K>]: TRPCModelProcedures<Schema, K>;
215
215
  };
216
216
  /**
217
217
  * The typed router type that clients can use for proper inference
@@ -225,10 +225,18 @@ export type ZenStackRouter<Schema extends SchemaDef, TContext = any> = {
225
225
  errorShape: any;
226
226
  transformer: false;
227
227
  };
228
+ transformer: any;
229
+ errorFormatter: any;
230
+ allowOutsideOfServer: boolean;
231
+ isServer: boolean;
232
+ isDev: boolean;
228
233
  };
229
- record: ZenStackRouterRecord<Schema, TContext>;
234
+ record: ZenStackRouterRecord<Schema>;
235
+ router: true;
236
+ procedures: ZenStackRouterRecord<Schema>;
237
+ lazy: {};
230
238
  };
231
239
  createCaller: (ctx: TContext) => TypedRouterCaller<Schema>;
232
- };
240
+ } & ZenStackRouterRecord<Schema>;
233
241
  export {};
234
242
  //# sourceMappingURL=router-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router-generator.d.ts","sourceRoot":"","sources":["../src/router-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,WAAW,EACX,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,GACzE,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,GAC5B,CAAC,CAAC;AAEN;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CACnC,MAAM,SAAS,SAAS,EACxB,KAAK,SAAS,SAAS,CAAC,MAAM,CAAC;IAE/B;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5C,KAAK,CAAC,EAAE,CAAC,GACR,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAEtD;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAChD,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE3D;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,EAC9C,KAAK,CAAC,EAAE,CAAC,GACR,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE3D;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACxC,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD;;OAEG;IACH,UAAU,CACR,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9B;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACxC,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD;;OAEG;IACH,UAAU,CACR,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9B;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACxC,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACxC,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD;;OAEG;IACH,UAAU,CACR,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9B;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE7D;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,SAAS,IAAI;KACvD,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7E,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE;QACT,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,KAAK;YAC5B,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;gBAAE,GAAG,EAAE,GAAG,CAAC;gBAAC,KAAK,EAAE,GAAG,CAAA;aAAE,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;YAC1E,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;gBAAE,GAAG,EAAE,GAAG,CAAC;gBAAC,KAAK,EAAE,GAAG,CAAA;aAAE,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;SAC9E,CAAC;KACH,CAAC;IACF,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;CAClD;AAqDD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,SAAS,SAAS,EACxB,QAAQ,SAAS;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,EAE5B,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,YAAY,GACd,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAYlC;AAED;;;GAGG;AACH,KAAK,mBAAmB,CAAC,MAAM,EAAE,OAAO,IAAI;IAC1C,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,OAAO,CAAC;SACjB,CAAC;QACF,SAAS,EAAE,IAAI,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,IAAI,EAAE,OAAO,CAAC;QACd,mBAAmB,EAAE,OAAO,CAAC;QAC7B,MAAM,EAAE,OAAO,EAAE,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,KAAK,sBAAsB,CAAC,MAAM,EAAE,OAAO,IAAI;IAC7C,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,OAAO,CAAC;SACjB,CAAC;QACF,SAAS,EAAE,IAAI,CAAC;QAChB,IAAI,EAAE,UAAU,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,mBAAmB,EAAE,OAAO,CAAC;QAC7B,MAAM,EAAE,OAAO,EAAE,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAC7B,MAAM,SAAS,SAAS,EACxB,KAAK,SAAS,SAAS,CAAC,MAAM,CAAC,EAC/B,QAAQ,IACN;IACF,QAAQ,EAAE,mBAAmB,CAC3B,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,EACvC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAC3C,CAAC;IACF,UAAU,EAAE,mBAAmB,CAC7B,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAChD,CAAC;IACF,SAAS,EAAE,mBAAmB,CAC5B,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,EACxC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAChD,CAAC;IACF,MAAM,EAAE,sBAAsB,CAC5B,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACzB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,CAAC;IACF,UAAU,EAAE,sBAAsB,CAChC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAClB,CAAC;IACF,MAAM,EAAE,sBAAsB,CAC5B,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACzB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,CAAC;IACF,UAAU,EAAE,sBAAsB,CAChC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAClB,CAAC;IACF,MAAM,EAAE,sBAAsB,CAC5B,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACzB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,CAAC;IACF,MAAM,EAAE,sBAAsB,CAC5B,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACzB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,CAAC;IACF,UAAU,EAAE,sBAAsB,CAChC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAClB,CAAC;IACF,KAAK,EAAE,mBAAmB,CACxB,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,EACpC,MAAM,CACP,CAAC;IACF,SAAS,EAAE,mBAAmB,CAC5B,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5B,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,mBAAmB,CAC1B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAC1B,GAAG,EAAE,CACN,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,MAAM,SAAS,SAAS,EAAE,QAAQ,IAAI;KACpE,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC;CACtF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,SAAS,EAAE,QAAQ,GAAG,GAAG,IAAI;IACrE,IAAI,EAAE;QACJ,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,GAAG,EAAE,QAAQ,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC;gBACb,UAAU,EAAE,GAAG,CAAC;gBAChB,WAAW,EAAE,KAAK,CAAC;aACpB,CAAC;SACH,CAAC;QACF,MAAM,EAAE,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KAChD,CAAC;IACF,YAAY,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC;CAC5D,CAAC"}
1
+ {"version":3,"file":"router-generator.d.ts","sourceRoot":"","sources":["../src/router-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Typed tRPC client helpers for full include/select type inference.
3
+ *
4
+ * tRPC's standard type inference loses generic type information for procedure
5
+ * input/output types. This module provides type utilities that restore full
6
+ * dynamic typing based on include/select options.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { createTRPCClient } from "@trpc/client";
11
+ * import { createTRPCReact } from "@trpc/react-query";
12
+ * import { withZenStackTypes } from "zenstack-trpc";
13
+ * import type { AppRouter } from "./server/trpc.js";
14
+ * import type { SchemaType } from "./zenstack/schema.js";
15
+ *
16
+ * // Vanilla client
17
+ * const client = withZenStackTypes<SchemaType>()(
18
+ * createTRPCClient<AppRouter>({ links: [...] })
19
+ * );
20
+ *
21
+ * // React hooks
22
+ * const trpc = withZenStackTypes<SchemaType>()(
23
+ * createTRPCReact<AppRouter>()
24
+ * );
25
+ * ```
26
+ */
27
+ import type { SchemaDef, GetModels } from "@zenstackhq/orm/schema";
28
+ import type { FindManyArgs, FindUniqueArgs, FindFirstArgs, CreateArgs, CreateManyArgs, UpdateArgs, UpdateManyArgs, UpsertArgs, DeleteArgs, DeleteManyArgs, CountArgs, AggregateArgs, GroupByArgs, SimplifiedPlainResult } from "@zenstackhq/orm";
29
+ /** Convert model names to lowercase */
30
+ type Uncapitalize<S extends string> = S extends `${infer F}${infer R}` ? `${Lowercase<F>}${R}` : S;
31
+ /** Infer result type with optional array wrapping */
32
+ type Result<S extends SchemaDef, M extends GetModels<S>, T, D, Arr extends boolean = false> = Arr extends true ? (SimplifiedPlainResult<S, M, T> extends never ? D : SimplifiedPlainResult<S, M, T>[]) : (SimplifiedPlainResult<S, M, T> extends never ? D : SimplifiedPlainResult<S, M, T>);
33
+ /** Default result type for a model */
34
+ type DefaultResult<S extends SchemaDef, M extends GetModels<S>> = SimplifiedPlainResult<S, M, {}>;
35
+ /** Maps operation names to their ZenStack Args types */
36
+ type OperationArgs<S extends SchemaDef, M extends GetModels<S>> = {
37
+ findMany: FindManyArgs<S, M>;
38
+ findUnique: FindUniqueArgs<S, M>;
39
+ findFirst: FindFirstArgs<S, M>;
40
+ create: CreateArgs<S, M>;
41
+ createMany: CreateManyArgs<S, M>;
42
+ update: UpdateArgs<S, M>;
43
+ updateMany: UpdateManyArgs<S, M>;
44
+ upsert: UpsertArgs<S, M>;
45
+ delete: DeleteArgs<S, M>;
46
+ deleteMany: DeleteManyArgs<S, M>;
47
+ count: CountArgs<S, M>;
48
+ aggregate: AggregateArgs<S, M>;
49
+ groupBy: GroupByArgs<S, M>;
50
+ };
51
+ /** Operations that return arrays */
52
+ type ArrayOps = 'findMany' | 'groupBy';
53
+ /** Operations that return { count: number } */
54
+ type CountResultOps = 'createMany' | 'updateMany' | 'deleteMany';
55
+ /** Operations that return number */
56
+ type NumberResultOps = 'count';
57
+ /** Operations that return any */
58
+ type AnyResultOps = 'aggregate';
59
+ /** Operations that return nullable results */
60
+ type NullableOps = 'findUnique' | 'findFirst';
61
+ /** Mutations (vs queries) */
62
+ type MutationOps = 'create' | 'createMany' | 'update' | 'updateMany' | 'upsert' | 'delete' | 'deleteMany';
63
+ /** Query procedure - infers result from input */
64
+ interface DynamicQuery<S extends SchemaDef, M extends GetModels<S>, Args, Default, Arr extends boolean> {
65
+ query<T extends Args>(input: T): Promise<Result<S, M, T, Default, Arr>>;
66
+ query(input?: undefined): Promise<Default>;
67
+ }
68
+ /** Simple query - fixed result type */
69
+ interface SimpleQuery<Args, R> {
70
+ query(input?: Args): Promise<R>;
71
+ }
72
+ /** Mutation procedure - infers result from input */
73
+ interface DynamicMutation<S extends SchemaDef, M extends GetModels<S>, Args, Default> {
74
+ mutate<T extends Args>(input: T): Promise<Result<S, M, T, Default>>;
75
+ }
76
+ /** Simple mutation - fixed result type */
77
+ interface SimpleMutation<Args, R> {
78
+ mutate(input: Args): Promise<R>;
79
+ }
80
+ /** Build client procedure type for an operation */
81
+ type ClientProcedure<S extends SchemaDef, M extends GetModels<S>, Op extends keyof OperationArgs<S, M>> = Op extends MutationOps ? Op extends CountResultOps ? SimpleMutation<OperationArgs<S, M>[Op], {
82
+ count: number;
83
+ }> : DynamicMutation<S, M, OperationArgs<S, M>[Op], DefaultResult<S, M>> : Op extends NumberResultOps ? SimpleQuery<OperationArgs<S, M>[Op], number> : Op extends AnyResultOps ? SimpleQuery<OperationArgs<S, M>[Op], any> : Op extends 'groupBy' ? SimpleQuery<OperationArgs<S, M>[Op], any[]> : DynamicQuery<S, M, OperationArgs<S, M>[Op], Op extends NullableOps ? DefaultResult<S, M> | null : Op extends ArrayOps ? DefaultResult<S, M>[] : DefaultResult<S, M>, Op extends ArrayOps ? true : false>;
84
+ /** All client procedures for a model */
85
+ export type TypedClientModelProcedures<S extends SchemaDef, M extends GetModels<S>> = {
86
+ [Op in keyof OperationArgs<S, M>]: ClientProcedure<S, M, Op>;
87
+ };
88
+ /** Base query result shape */
89
+ type QueryResult<T> = {
90
+ data: T | undefined;
91
+ error: Error | null;
92
+ isLoading: boolean;
93
+ isPending: boolean;
94
+ isError: boolean;
95
+ isSuccess: boolean;
96
+ refetch: () => Promise<unknown>;
97
+ [k: string]: unknown;
98
+ };
99
+ /** Base mutation result shape */
100
+ type MutationResult<T, V> = {
101
+ data: T | undefined;
102
+ error: Error | null;
103
+ isLoading: boolean;
104
+ isPending: boolean;
105
+ isError: boolean;
106
+ isSuccess: boolean;
107
+ mutate: (v: V, o?: {
108
+ onSuccess?: (d: T) => void;
109
+ onError?: (e: Error) => void;
110
+ onSettled?: () => void;
111
+ }) => void;
112
+ mutateAsync: (v: V, o?: {
113
+ onSuccess?: (d: T) => void;
114
+ onError?: (e: Error) => void;
115
+ onSettled?: () => void;
116
+ }) => Promise<T>;
117
+ [k: string]: unknown;
118
+ };
119
+ /** Query hook - infers result from input */
120
+ interface DynamicQueryHook<S extends SchemaDef, M extends GetModels<S>, Args, Default, Arr extends boolean> {
121
+ useQuery<T extends Args>(input: T, opts?: {
122
+ enabled?: boolean;
123
+ [k: string]: unknown;
124
+ }): QueryResult<Result<S, M, T, Default, Arr>>;
125
+ useQuery(input?: undefined, opts?: {
126
+ enabled?: boolean;
127
+ [k: string]: unknown;
128
+ }): QueryResult<Default>;
129
+ }
130
+ /** Simple query hook - fixed result type */
131
+ interface SimpleQueryHook<Args, R> {
132
+ useQuery(input?: Args, opts?: {
133
+ enabled?: boolean;
134
+ [k: string]: unknown;
135
+ }): QueryResult<R>;
136
+ }
137
+ /** Mutation hook - infers result from input */
138
+ interface DynamicMutationHook<S extends SchemaDef, M extends GetModels<S>, Args, Default> {
139
+ useMutation(opts?: {
140
+ onSuccess?: (d: any) => void;
141
+ onError?: (e: Error) => void;
142
+ onSettled?: () => void;
143
+ [k: string]: unknown;
144
+ }): {
145
+ mutate: <T extends Args>(input: T, o?: {
146
+ onSuccess?: (d: Result<S, M, T, Default>) => void;
147
+ onError?: (e: Error) => void;
148
+ onSettled?: () => void;
149
+ }) => void;
150
+ mutateAsync: <T extends Args>(input: T, o?: {
151
+ onSuccess?: (d: Result<S, M, T, Default>) => void;
152
+ onError?: (e: Error) => void;
153
+ onSettled?: () => void;
154
+ }) => Promise<Result<S, M, T, Default>>;
155
+ data: Default | undefined;
156
+ error: Error | null;
157
+ isLoading: boolean;
158
+ isPending: boolean;
159
+ isError: boolean;
160
+ isSuccess: boolean;
161
+ [k: string]: unknown;
162
+ };
163
+ }
164
+ /** Simple mutation hook - fixed result type */
165
+ interface SimpleMutationHook<Args, R> {
166
+ useMutation(opts?: {
167
+ onSuccess?: (d: R) => void;
168
+ onError?: (e: Error) => void;
169
+ onSettled?: () => void;
170
+ [k: string]: unknown;
171
+ }): MutationResult<R, Args>;
172
+ }
173
+ /** Build React hook type for an operation */
174
+ type ReactHook<S extends SchemaDef, M extends GetModels<S>, Op extends keyof OperationArgs<S, M>> = Op extends MutationOps ? Op extends CountResultOps ? SimpleMutationHook<OperationArgs<S, M>[Op], {
175
+ count: number;
176
+ }> : DynamicMutationHook<S, M, OperationArgs<S, M>[Op], DefaultResult<S, M>> : Op extends NumberResultOps ? SimpleQueryHook<OperationArgs<S, M>[Op], number> : Op extends AnyResultOps ? SimpleQueryHook<OperationArgs<S, M>[Op], any> : Op extends 'groupBy' ? SimpleQueryHook<OperationArgs<S, M>[Op], any[]> : DynamicQueryHook<S, M, OperationArgs<S, M>[Op], Op extends NullableOps ? DefaultResult<S, M> | null : Op extends ArrayOps ? DefaultResult<S, M>[] : DefaultResult<S, M>, Op extends ArrayOps ? true : false>;
177
+ /** All React hooks for a model */
178
+ export type TypedReactModelHooks<S extends SchemaDef, M extends GetModels<S>> = {
179
+ [Op in keyof OperationArgs<S, M>]: ReactHook<S, M, Op>;
180
+ };
181
+ /** Typed vanilla tRPC client with full include/select type inference */
182
+ export type TypedTRPCClient<S extends SchemaDef> = {
183
+ [K in GetModels<S> as Uncapitalize<K>]: TypedClientModelProcedures<S, K>;
184
+ };
185
+ /** Typed tRPC React hooks with full include/select type inference */
186
+ export type TypedTRPCReact<S extends SchemaDef> = {
187
+ [K in GetModels<S> as Uncapitalize<K>]: TypedReactModelHooks<S, K>;
188
+ };
189
+ /**
190
+ * Converts a tRPC client or React hooks instance to a fully typed version
191
+ * with include/select inference. This is a type-only transformation.
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * // For vanilla tRPC client:
196
+ * const client = withZenStackTypes<SchemaType>()(createTRPCClient<AppRouter>({ links: [...] }));
197
+ *
198
+ * // For tRPC React hooks:
199
+ * const trpc = withZenStackTypes<SchemaType>()(createTRPCReact<AppRouter>());
200
+ * ```
201
+ */
202
+ export declare function withZenStackTypes<S extends SchemaDef>(): <T>(client: T) => T extends {
203
+ useQuery: any;
204
+ } | {
205
+ useMutation: any;
206
+ } ? TypedTRPCReact<S> : T extends {
207
+ query: any;
208
+ } | {
209
+ mutate: any;
210
+ } ? TypedTRPCClient<S> : TypedTRPCClient<S> & TypedTRPCReact<S>;
211
+ /**
212
+ * Type utility to add ZenStack types to a nested namespace within a tRPC client.
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * type TypedTRPC = Omit<typeof _trpc, 'db'> & { db: WithZenStackTypes<SchemaType, 'react'> };
217
+ * export const trpc = _trpc as unknown as TypedTRPC;
218
+ * ```
219
+ */
220
+ export type WithZenStackTypes<S extends SchemaDef, Mode extends 'client' | 'react' = 'react'> = Mode extends 'react' ? TypedTRPCReact<S> : TypedTRPCClient<S>;
221
+ /**
222
+ * Helper function to type a nested namespace within your tRPC React hooks.
223
+ *
224
+ * @example
225
+ * ```typescript
226
+ * export const trpc = withNestedZenStackReact<SchemaType, typeof _trpc, 'db'>('db')(_trpc);
227
+ * ```
228
+ */
229
+ export declare function withNestedZenStackReact<S extends SchemaDef, TClient, TKey extends string>(_namespace: TKey): (client: TClient) => Omit<TClient, TKey> & { [K in TKey]: TypedTRPCReact<S>; };
230
+ /**
231
+ * Helper function to type a nested namespace within your vanilla tRPC client.
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * export const client = withNestedZenStackClient<SchemaType, typeof _client, 'db'>('db')(_client);
236
+ * ```
237
+ */
238
+ export declare function withNestedZenStackClient<S extends SchemaDef, TClient, TKey extends string>(_namespace: TKey): (client: TClient) => Omit<TClient, TKey> & { [K in TKey]: TypedTRPCClient<S>; };
239
+ export {};
240
+ //# sourceMappingURL=typed-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-client.d.ts","sourceRoot":"","sources":["../src/typed-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,WAAW,EACX,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,uCAAuC;AACvC,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAEnG,qDAAqD;AACrD,KAAK,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,OAAO,GAAG,KAAK,IACxF,GAAG,SAAS,IAAI,GACZ,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GACrF,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE1F,sCAAsC;AACtC,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAMlG,wDAAwD;AACxD,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,IAAI;IAChE,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5B,CAAC;AAEF,oCAAoC;AACpC,KAAK,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEvC,+CAA+C;AAC/C,KAAK,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;AAEjE,oCAAoC;AACpC,KAAK,eAAe,GAAG,OAAO,CAAC;AAE/B,iCAAiC;AACjC,KAAK,YAAY,GAAG,WAAW,CAAC;AAEhC,8CAA8C;AAC9C,KAAK,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9C,6BAA6B;AAC7B,KAAK,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AAM1G,iDAAiD;AACjD,UAAU,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,OAAO;IACpG,KAAK,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACxE,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED,uCAAuC;AACvC,UAAU,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACjC;AAED,oDAAoD;AACpD,UAAU,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO;IAClF,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;CACrE;AAED,0CAA0C;AAC1C,UAAU,cAAc,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACjC;AAED,mDAAmD;AACnD,KAAK,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,IACpG,EAAE,SAAS,WAAW,GAClB,EAAE,SAAS,cAAc,GACvB,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1D,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACrE,EAAE,SAAS,eAAe,GACxB,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAC5C,EAAE,SAAS,YAAY,GACrB,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GACzC,EAAE,SAAS,SAAS,GAClB,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAC3C,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACxC,EAAE,SAAS,WAAW,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,SAAS,QAAQ,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EACvH,EAAE,SAAS,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AAElD,wCAAwC;AACxC,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,IAAI;KACnF,EAAE,IAAI,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;CAC7D,CAAC;AAMF,8BAA8B;AAC9B,KAAK,WAAW,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAExM,iCAAiC;AACjC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE5Z,4CAA4C;AAC5C,UAAU,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,OAAO;IACxG,QAAQ,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACnI,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;CACvG;AAED,4CAA4C;AAC5C,UAAU,eAAe,CAAC,IAAI,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CAC5F;AAED,+CAA+C;AAC/C,UAAU,mBAAmB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO;IACtF,WAAW,CAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG;QAChI,MAAM,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,KAAK,IAAI,CAAC;QAC5J,WAAW,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9L,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KACpJ,CAAC;CACH;AAED,+CAA+C;AAC/C,UAAU,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAClC,WAAW,CAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;CACzJ;AAED,6CAA6C;AAC7C,KAAK,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,IAC9F,EAAE,SAAS,WAAW,GAClB,EAAE,SAAS,cAAc,GACvB,kBAAkB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9D,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACzE,EAAE,SAAS,eAAe,GACxB,eAAe,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAChD,EAAE,SAAS,YAAY,GACrB,eAAe,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAC7C,EAAE,SAAS,SAAS,GAClB,eAAe,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAC/C,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5C,EAAE,SAAS,WAAW,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,SAAS,QAAQ,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EACvH,EAAE,SAAS,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AAElD,kCAAkC;AAClC,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,IAAI;KAC7E,EAAE,IAAI,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;CACvD,CAAC;AAMF,wEAAwE;AACxE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,SAAS,IAAI;KAChD,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC;CACzE,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,IAAI;KAC/C,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;CACnE,CAAC;AAMF;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,SAAS,MAC3C,CAAC,EAAE,QAAQ,CAAC,KAAG,CAAC,SAAS;IAAE,QAAQ,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,GAAG,CAAA;CAAE,GACrE,cAAc,CAAC,CAAC,CAAC,GACjB,CAAC,SAAS;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GAC1C,eAAe,CAAC,CAAC,CAAC,GAClB,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAG3C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,SAAS,QAAQ,GAAG,OAAO,GAAG,OAAO,IAC1F,IAAI,SAAS,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,EAAE,IAAI,SAAS,MAAM,EAAE,UAAU,EAAE,IAAI,IACjG,QAAQ,OAAO,KAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,GAAE,CACnF;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,EAAE,IAAI,SAAS,MAAM,EAAE,UAAU,EAAE,IAAI,IAClG,QAAQ,OAAO,KAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,GAAE,CACpF"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Typed tRPC client helpers for full include/select type inference.
3
+ *
4
+ * tRPC's standard type inference loses generic type information for procedure
5
+ * input/output types. This module provides type utilities that restore full
6
+ * dynamic typing based on include/select options.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { createTRPCClient } from "@trpc/client";
11
+ * import { createTRPCReact } from "@trpc/react-query";
12
+ * import { withZenStackTypes } from "zenstack-trpc";
13
+ * import type { AppRouter } from "./server/trpc.js";
14
+ * import type { SchemaType } from "./zenstack/schema.js";
15
+ *
16
+ * // Vanilla client
17
+ * const client = withZenStackTypes<SchemaType>()(
18
+ * createTRPCClient<AppRouter>({ links: [...] })
19
+ * );
20
+ *
21
+ * // React hooks
22
+ * const trpc = withZenStackTypes<SchemaType>()(
23
+ * createTRPCReact<AppRouter>()
24
+ * );
25
+ * ```
26
+ */
27
+ // =============================================================================
28
+ // Type Converter Utilities
29
+ // =============================================================================
30
+ /**
31
+ * Converts a tRPC client or React hooks instance to a fully typed version
32
+ * with include/select inference. This is a type-only transformation.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * // For vanilla tRPC client:
37
+ * const client = withZenStackTypes<SchemaType>()(createTRPCClient<AppRouter>({ links: [...] }));
38
+ *
39
+ * // For tRPC React hooks:
40
+ * const trpc = withZenStackTypes<SchemaType>()(createTRPCReact<AppRouter>());
41
+ * ```
42
+ */
43
+ export function withZenStackTypes() {
44
+ return (client) => {
45
+ return client;
46
+ };
47
+ }
48
+ /**
49
+ * Helper function to type a nested namespace within your tRPC React hooks.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * export const trpc = withNestedZenStackReact<SchemaType, typeof _trpc, 'db'>('db')(_trpc);
54
+ * ```
55
+ */
56
+ export function withNestedZenStackReact(_namespace) {
57
+ return (client) => client;
58
+ }
59
+ /**
60
+ * Helper function to type a nested namespace within your vanilla tRPC client.
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * export const client = withNestedZenStackClient<SchemaType, typeof _client, 'db'>('db')(_client);
65
+ * ```
66
+ */
67
+ export function withNestedZenStackClient(_namespace) {
68
+ return (client) => client;
69
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zenstack-trpc",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Auto-generate type-safe tRPC routers from ZenStack V3 schemas",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -8,8 +8,10 @@
8
8
  "types": "./dist/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
+ "types": "./dist/index.d.ts",
11
12
  "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
13
+ "require": "./dist/index.js",
14
+ "default": "./dist/index.js"
13
15
  }
14
16
  },
15
17
  "files": [