zenstack-trpc 0.1.1 → 0.1.4

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/dist/index.d.ts CHANGED
@@ -26,6 +26,6 @@
26
26
  *
27
27
  * @packageDocumentation
28
28
  */
29
- export { createZenStackRouter, type ZenStackRouter, type TypedRouterCaller, type TypedModelProcedures, type TRPCInstance, } from "./router-generator.js";
29
+ export { createZenStackRouter, type ZenStackRouter, type ZenStackRouterRecord, type TRPCModelProcedures, type TypedRouterCaller, type TypedModelProcedures, type TRPCInstance, } from "./router-generator.js";
30
30
  export { createModelSchemas, createWhereSchema, createCreateDataSchema, createUpdateDataSchema, createUniqueWhereSchema, createSelectSchema, createIncludeSchema, createOrderBySchema, } from "./zod-schemas.js";
31
31
  //# 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,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,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
@@ -121,34 +121,114 @@ export interface TRPCInstance {
121
121
  * The router follows the pattern: router.modelName.operation
122
122
  * Example: router.user.findMany(), router.post.create()
123
123
  *
124
- * For proper typing on the caller, use the TypedRouterCaller type:
125
- *
126
124
  * @example
127
125
  * ```ts
128
- * import { createZenStackRouter, TypedRouterCaller } from 'zenstack-trpc';
126
+ * import { createZenStackRouter, ZenStackRouter } from 'zenstack-trpc';
129
127
  * import { initTRPC } from '@trpc/server';
130
128
  * import { schema, SchemaType } from './zenstack/schema';
131
129
  *
132
130
  * // Create your own tRPC instance with your context
133
- * const t = initTRPC.context<{ db: any }>().create();
131
+ * const t = initTRPC.context<{ db: typeof dbClient }>().create();
134
132
  *
135
- * // Generate the router
133
+ * // Generate the router with full type inference
136
134
  * const appRouter = createZenStackRouter(schema, t);
137
135
  *
138
- * // Create a typed caller with FULL type inference
139
- * const caller = appRouter.createCaller({ db }) as TypedRouterCaller<SchemaType>;
140
- *
141
- * // Types are fully inferred based on your query!
142
- * const users = await caller.user.findMany();
143
- * // ^? { id: string, email: string, name: string | null, ... }[]
144
- *
136
+ * // Export the typed router for clients
145
137
  * export type AppRouter = typeof appRouter;
138
+ *
139
+ * // Client usage (with full type inference):
140
+ * // const client = createTRPCClient<AppRouter>({ ... });
141
+ * // const users = await client.user.findMany.query(); // Fully typed!
146
142
  * ```
147
143
  */
148
- export declare function createZenStackRouter<Schema extends SchemaDef>(schema: Schema, t: TRPCInstance): any;
144
+ export declare function createZenStackRouter<Schema extends SchemaDef, TContext extends {
145
+ db: any;
146
+ }>(schema: Schema, t: TRPCInstance): ZenStackRouter<Schema, TContext>;
147
+ /**
148
+ * Type for a query procedure with proper input/output typing
149
+ * Matches tRPC's internal Procedure interface for type inference
150
+ */
151
+ type TypedQueryProcedure<TInput, TOutput> = {
152
+ _def: {
153
+ $types: {
154
+ input: TInput;
155
+ output: TOutput;
156
+ };
157
+ procedure: true;
158
+ type: 'query';
159
+ meta: unknown;
160
+ experimental_caller: boolean;
161
+ inputs: unknown[];
162
+ };
163
+ meta: unknown;
164
+ (opts: unknown): Promise<TOutput>;
165
+ };
166
+ /**
167
+ * Type for a mutation procedure with proper input/output typing
168
+ * Matches tRPC's internal Procedure interface for type inference
169
+ */
170
+ type TypedMutationProcedure<TInput, TOutput> = {
171
+ _def: {
172
+ $types: {
173
+ input: TInput;
174
+ output: TOutput;
175
+ };
176
+ procedure: true;
177
+ type: 'mutation';
178
+ meta: unknown;
179
+ experimental_caller: boolean;
180
+ inputs: unknown[];
181
+ };
182
+ meta: unknown;
183
+ (opts: unknown): Promise<TOutput>;
184
+ };
149
185
  /**
150
- * Type helper to extract the router type for a given schema
186
+ * Type for a single model's tRPC procedures (for client inference)
187
+ * This maps each operation to its tRPC procedure type with proper input/output
151
188
  */
152
- export type ZenStackRouter<Schema extends SchemaDef> = ReturnType<typeof createZenStackRouter<Schema>>;
189
+ export type TRPCModelProcedures<Schema extends SchemaDef, Model extends GetModels<Schema>, TContext> = {
190
+ findMany: TypedQueryProcedure<FindManyArgs<Schema, Model> | undefined, SimplifiedPlainResult<Schema, Model, {}>[]>;
191
+ findUnique: TypedQueryProcedure<FindUniqueArgs<Schema, Model>, SimplifiedPlainResult<Schema, Model, {}> | null>;
192
+ findFirst: TypedQueryProcedure<FindFirstArgs<Schema, Model> | undefined, SimplifiedPlainResult<Schema, Model, {}> | null>;
193
+ create: TypedMutationProcedure<CreateArgs<Schema, Model>, SimplifiedPlainResult<Schema, Model, {}>>;
194
+ createMany: TypedMutationProcedure<CreateManyArgs<Schema, Model>, {
195
+ count: number;
196
+ }>;
197
+ update: TypedMutationProcedure<UpdateArgs<Schema, Model>, SimplifiedPlainResult<Schema, Model, {}>>;
198
+ updateMany: TypedMutationProcedure<UpdateManyArgs<Schema, Model>, {
199
+ count: number;
200
+ }>;
201
+ upsert: TypedMutationProcedure<UpsertArgs<Schema, Model>, SimplifiedPlainResult<Schema, Model, {}>>;
202
+ delete: TypedMutationProcedure<DeleteArgs<Schema, Model>, SimplifiedPlainResult<Schema, Model, {}>>;
203
+ deleteMany: TypedMutationProcedure<DeleteManyArgs<Schema, Model>, {
204
+ count: number;
205
+ }>;
206
+ count: TypedQueryProcedure<CountArgs<Schema, Model> | undefined, number>;
207
+ aggregate: TypedQueryProcedure<AggregateArgs<Schema, Model>, any>;
208
+ groupBy: TypedQueryProcedure<GroupByArgs<Schema, Model>, any[]>;
209
+ };
210
+ /**
211
+ * Type for the full router record that tRPC uses for inference
212
+ */
213
+ export type ZenStackRouterRecord<Schema extends SchemaDef, TContext> = {
214
+ [K in GetModels<Schema> as Uncapitalize<K>]: TRPCModelProcedures<Schema, K, TContext>;
215
+ };
216
+ /**
217
+ * The typed router type that clients can use for proper inference
218
+ */
219
+ export type ZenStackRouter<Schema extends SchemaDef, TContext = any> = {
220
+ _def: {
221
+ _config: {
222
+ $types: {
223
+ ctx: TContext;
224
+ meta: object;
225
+ errorShape: any;
226
+ transformer: false;
227
+ };
228
+ };
229
+ record: ZenStackRouterRecord<Schema, TContext>;
230
+ };
231
+ createCaller: (ctx: TContext) => TypedRouterCaller<Schema>;
232
+ };
153
233
  export {};
154
234
  //# sourceMappingURL=router-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router-generator.d.ts","sourceRoot":"","sources":["../src/router-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router-generator.d.ts","sourceRoot":"","sources":["../src/router-generator.ts"],"names":[],"mappings":"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"}
@@ -49,28 +49,24 @@ function createModelProcedures(schema, modelName, t) {
49
49
  * The router follows the pattern: router.modelName.operation
50
50
  * Example: router.user.findMany(), router.post.create()
51
51
  *
52
- * For proper typing on the caller, use the TypedRouterCaller type:
53
- *
54
52
  * @example
55
53
  * ```ts
56
- * import { createZenStackRouter, TypedRouterCaller } from 'zenstack-trpc';
54
+ * import { createZenStackRouter, ZenStackRouter } from 'zenstack-trpc';
57
55
  * import { initTRPC } from '@trpc/server';
58
56
  * import { schema, SchemaType } from './zenstack/schema';
59
57
  *
60
58
  * // Create your own tRPC instance with your context
61
- * const t = initTRPC.context<{ db: any }>().create();
59
+ * const t = initTRPC.context<{ db: typeof dbClient }>().create();
62
60
  *
63
- * // Generate the router
61
+ * // Generate the router with full type inference
64
62
  * const appRouter = createZenStackRouter(schema, t);
65
63
  *
66
- * // Create a typed caller with FULL type inference
67
- * const caller = appRouter.createCaller({ db }) as TypedRouterCaller<SchemaType>;
68
- *
69
- * // Types are fully inferred based on your query!
70
- * const users = await caller.user.findMany();
71
- * // ^? { id: string, email: string, name: string | null, ... }[]
72
- *
64
+ * // Export the typed router for clients
73
65
  * export type AppRouter = typeof appRouter;
66
+ *
67
+ * // Client usage (with full type inference):
68
+ * // const client = createTRPCClient<AppRouter>({ ... });
69
+ * // const users = await client.user.findMany.query(); // Fully typed!
74
70
  * ```
75
71
  */
76
72
  export function createZenStackRouter(schema, t) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zenstack-trpc",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
4
4
  "description": "Auto-generate type-safe tRPC routers from ZenStack V3 schemas",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,13 +17,6 @@
17
17
  "README.md",
18
18
  "LICENSE"
19
19
  ],
20
- "scripts": {
21
- "build": "tsc -p tsconfig.build.json",
22
- "prepublishOnly": "pnpm run build",
23
- "test": "vitest run",
24
- "test:watch": "vitest",
25
- "typecheck": "tsc --noEmit"
26
- },
27
20
  "keywords": [
28
21
  "zenstack",
29
22
  "trpc",
@@ -55,6 +48,7 @@
55
48
  "zod": ">=3.0.0 || >=4.0.0"
56
49
  },
57
50
  "devDependencies": {
51
+ "@trpc/client": "^11.8.1",
58
52
  "@trpc/server": "^11.8.1",
59
53
  "@types/better-sqlite3": "^7.6.13",
60
54
  "@types/node": "^25.0.3",
@@ -67,5 +61,11 @@
67
61
  "typescript": "^5.9.3",
68
62
  "vitest": "^4.0.16",
69
63
  "zod": "^4.3.5"
64
+ },
65
+ "scripts": {
66
+ "build": "tsc -p tsconfig.build.json",
67
+ "test": "vitest run",
68
+ "test:watch": "vitest",
69
+ "typecheck": "tsc --noEmit"
70
70
  }
71
- }
71
+ }