Skip to content

Commit df67f30

Browse files
authored
fix: add "exports" to generated package.json, make trpc code-gen compatible with vite (#677)
1 parent 2bbe1d8 commit df67f30

File tree

14 files changed

+61
-47
lines changed

14 files changed

+61
-47
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zenstack-monorepo",
3-
"version": "1.0.0-beta.21",
3+
"version": "1.0.0-beta.22",
44
"description": "",
55
"scripts": {
66
"build": "pnpm -r build",

packages/language/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/language",
3-
"version": "1.0.0-beta.21",
3+
"version": "1.0.0-beta.22",
44
"displayName": "ZenStack modeling language compiler",
55
"description": "ZenStack modeling language compiler",
66
"homepage": "https://zenstack.dev",

packages/plugins/openapi/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/openapi",
33
"displayName": "ZenStack Plugin and Runtime for OpenAPI",
4-
"version": "1.0.0-beta.21",
4+
"version": "1.0.0-beta.22",
55
"description": "ZenStack plugin and runtime supporting OpenAPI",
66
"main": "index.js",
77
"repository": {

packages/plugins/swr/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/swr",
33
"displayName": "ZenStack plugin for generating SWR hooks",
4-
"version": "1.0.0-beta.21",
4+
"version": "1.0.0-beta.22",
55
"description": "ZenStack plugin for generating SWR hooks",
66
"main": "index.js",
77
"repository": {

packages/plugins/tanstack-query/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/tanstack-query",
33
"displayName": "ZenStack plugin for generating tanstack-query hooks",
4-
"version": "1.0.0-beta.21",
4+
"version": "1.0.0-beta.22",
55
"description": "ZenStack plugin for generating tanstack-query hooks",
66
"main": "index.js",
77
"exports": {

packages/plugins/trpc/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/trpc",
33
"displayName": "ZenStack plugin for tRPC",
4-
"version": "1.0.0-beta.21",
4+
"version": "1.0.0-beta.22",
55
"description": "ZenStack plugin for tRPC",
66
"main": "index.js",
77
"repository": {

packages/plugins/trpc/src/generator.ts

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { name } from '.';
1919
import {
2020
generateHelperImport,
2121
generateProcedure,
22-
generateRouterSchemaImports,
22+
generateRouterSchemaImport,
2323
generateRouterTyping,
2424
generateRouterTypingImports,
2525
getInputSchemaByOpName,
@@ -89,21 +89,22 @@ function createAppRouter(
8989
const prismaImport = getPrismaClientImportSpec(zmodel, path.dirname(indexFile));
9090
appRouter.addImportDeclarations([
9191
{
92-
namedImports: ['type AnyRootConfig', 'type Procedure', 'type ProcedureParams', 'type ProcedureType'],
92+
namedImports: [
93+
'type AnyRouter',
94+
'type AnyRootConfig',
95+
'type CreateRouterInner',
96+
'type Procedure',
97+
'type ProcedureBuilder',
98+
'type ProcedureParams',
99+
'type ProcedureRouterRecord',
100+
'type ProcedureType',
101+
],
93102
moduleSpecifier: '@trpc/server',
94103
},
95104
{
96105
namedImports: ['type PrismaClient', 'type Prisma'],
97106
moduleSpecifier: prismaImport,
98107
},
99-
{
100-
namedImports: ['type createRouterFactory', 'AnyRouter'],
101-
moduleSpecifier: '@trpc/server/dist/core/router',
102-
},
103-
{
104-
namedImports: ['type ProcedureBuilder'],
105-
moduleSpecifier: '@trpc/server/dist/core/internals/procedureBuilder',
106-
},
107108
{ defaultImport: 'z', moduleSpecifier: 'zod', isTypeOnly: true },
108109
]);
109110

@@ -113,10 +114,12 @@ function createAppRouter(
113114
114115
export type BaseConfig = AnyRootConfig;
115116
116-
export type RouterFactory<Config extends BaseConfig> = ReturnType<
117-
typeof createRouterFactory<Config>
118-
>;
119-
117+
export type RouterFactory<Config extends BaseConfig> = <
118+
ProcRouterRecord extends ProcedureRouterRecord
119+
>(
120+
procedures: ProcRouterRecord
121+
) => CreateRouterInner<Config, ProcRouterRecord>;
122+
120123
${
121124
/** this is needed in order to prevent type errors between a procedure and a middleware-extended procedure */ ''
122125
}
@@ -299,7 +302,7 @@ function generateModelCreateRouter(
299302
},
300303
]);
301304

302-
generateRouterSchemaImports(modelRouter, upperCaseFirst(model), zodSchemasImport);
305+
generateRouterSchemaImport(modelRouter, zodSchemasImport);
303306
generateHelperImport(modelRouter);
304307
if (generateClientHelpers) {
305308
generateRouterTypingImports(modelRouter, zmodel);

packages/plugins/trpc/src/helpers.ts

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function generateProcedure(
2424
)}.${prismaMethod}(input as any))) as ProcReturns<
2525
"query",
2626
Proc,
27-
(typeof ${upperCaseFirst(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
27+
(typeof $Schema.${upperCaseFirst(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
2828
ReturnType<PrismaClient["${lowerCaseFirst(modelName)}"]["${opType}"]>
2929
>,
3030
`);
@@ -36,7 +36,7 @@ export function generateProcedure(
3636
)}.${prismaMethod}(input as any))) as ProcReturns<
3737
"mutation",
3838
Proc,
39-
(typeof ${upperCaseFirst(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
39+
(typeof $Schema.${upperCaseFirst(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
4040
ReturnType<PrismaClient["${lowerCaseFirst(modelName)}"]["${opType}"]>
4141
>,
4242
`);
@@ -247,8 +247,8 @@ export function generateRouterTypingImports(sourceFile: SourceFile, model: Model
247247
}
248248

249249
// eslint-disable-next-line @typescript-eslint/no-unused-vars
250-
export function generateRouterSchemaImports(sourceFile: SourceFile, name: string, zodSchemasImport: string) {
251-
sourceFile.addStatements(`import { ${name}InputSchema } from '${zodSchemasImport}/input';`);
250+
export function generateRouterSchemaImport(sourceFile: SourceFile, zodSchemasImport: string) {
251+
sourceFile.addStatements(`import $Schema from '${zodSchemasImport}/input';`);
252252
}
253253

254254
export function generateHelperImport(sourceFile: SourceFile) {
@@ -257,54 +257,55 @@ export function generateHelperImport(sourceFile: SourceFile) {
257257

258258
export const getInputSchemaByOpName = (opName: string, modelName: string) => {
259259
let inputType;
260+
const capModelName = upperCaseFirst(modelName);
260261
switch (opName) {
261262
case 'findUnique':
262-
inputType = `${modelName}InputSchema.findUnique`;
263+
inputType = `$Schema.${capModelName}InputSchema.findUnique`;
263264
break;
264265
case 'findFirst':
265-
inputType = `${modelName}InputSchema.findFirst`;
266+
inputType = `$Schema.${capModelName}InputSchema.findFirst`;
266267
break;
267268
case 'findMany':
268-
inputType = `${modelName}InputSchema.findMany`;
269+
inputType = `$Schema.${capModelName}InputSchema.findMany`;
269270
break;
270271
case 'findRaw':
271-
inputType = `${modelName}InputSchema.findRawObject`;
272+
inputType = `$Schema.${capModelName}InputSchema.findRawObject`;
272273
break;
273274
case 'createOne':
274-
inputType = `${modelName}InputSchema.create`;
275+
inputType = `$Schema.${capModelName}InputSchema.create`;
275276
break;
276277
case 'createMany':
277-
inputType = `${modelName}InputSchema.createMany`;
278+
inputType = `$Schema.${capModelName}InputSchema.createMany`;
278279
break;
279280
case 'deleteOne':
280-
inputType = `${modelName}InputSchema.delete`;
281+
inputType = `$Schema.${capModelName}InputSchema.delete`;
281282
break;
282283
case 'updateOne':
283-
inputType = `${modelName}InputSchema.update`;
284+
inputType = `$Schema.${capModelName}InputSchema.update`;
284285
break;
285286
case 'deleteMany':
286-
inputType = `${modelName}InputSchema.deleteMany`;
287+
inputType = `$Schema.${capModelName}InputSchema.deleteMany`;
287288
break;
288289
case 'updateMany':
289-
inputType = `${modelName}InputSchema.updateMany`;
290+
inputType = `$Schema.${capModelName}InputSchema.updateMany`;
290291
break;
291292
case 'upsertOne':
292-
inputType = `${modelName}InputSchema.upsert`;
293+
inputType = `$Schema.${capModelName}InputSchema.upsert`;
293294
break;
294295
case 'aggregate':
295-
inputType = `${modelName}InputSchema.aggregate`;
296+
inputType = `$Schema.${capModelName}InputSchema.aggregate`;
296297
break;
297298
case 'aggregateRaw':
298-
inputType = `${modelName}InputSchema.aggregateRawObject`;
299+
inputType = `$Schema.${capModelName}InputSchema.aggregateRawObject`;
299300
break;
300301
case 'groupBy':
301-
inputType = `${modelName}InputSchema.groupBy`;
302+
inputType = `$Schema.${capModelName}InputSchema.groupBy`;
302303
break;
303304
case 'count':
304-
inputType = `${modelName}InputSchema.count`;
305+
inputType = `$Schema.${capModelName}InputSchema.count`;
305306
break;
306307
default:
307-
console.log('getInputTypeByOpName: ', { opName, modelName });
308+
break;
308309
}
309310
return inputType;
310311
};

packages/runtime/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/runtime",
33
"displayName": "ZenStack Runtime Library",
4-
"version": "1.0.0-beta.21",
4+
"version": "1.0.0-beta.22",
55
"description": "Runtime of ZenStack for both client-side and server-side environments.",
66
"repository": {
77
"type": "git",

packages/schema/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"publisher": "zenstack",
44
"displayName": "ZenStack Language Tools",
55
"description": "A toolkit for building secure CRUD apps with Next.js + Typescript",
6-
"version": "1.0.0-beta.21",
6+
"version": "1.0.0-beta.22",
77
"author": {
88
"name": "ZenStack Team"
99
},

packages/schema/src/plugins/plugin-utils.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,18 @@ export function getNodeModulesFolder(startPath?: string): string | undefined {
2727
export function ensureDefaultOutputFolder() {
2828
const output = getDefaultOutputFolder();
2929
if (output && !fs.existsSync(output)) {
30+
const pkgJson = {
31+
name: '.zenstack',
32+
version: '1.0.0',
33+
exports: {
34+
'./zod': {
35+
default: './zod/index.js',
36+
types: './zod/index.d.ts',
37+
},
38+
},
39+
};
3040
fs.mkdirSync(output, { recursive: true });
31-
fs.writeFileSync(path.join(output, 'package.json'), JSON.stringify({ name: '.zenstack', version: '1.0.0' }));
41+
fs.writeFileSync(path.join(output, 'package.json'), JSON.stringify(pkgJson, undefined, 4));
3242
}
3343
}
3444

packages/sdk/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/sdk",
3-
"version": "1.0.0-beta.21",
3+
"version": "1.0.0-beta.22",
44
"description": "ZenStack plugin development SDK",
55
"main": "index.js",
66
"scripts": {

packages/server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/server",
3-
"version": "1.0.0-beta.21",
3+
"version": "1.0.0-beta.22",
44
"displayName": "ZenStack Server-side Adapters",
55
"description": "ZenStack server-side adapters",
66
"homepage": "https://zenstack.dev",

packages/testtools/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/testtools",
3-
"version": "1.0.0-beta.21",
3+
"version": "1.0.0-beta.22",
44
"description": "ZenStack Test Tools",
55
"main": "index.js",
66
"publishConfig": {

0 commit comments

Comments
 (0)