Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "zenstack-monorepo",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"description": "",
"scripts": {
"build": "pnpm -r build",
Expand Down
2 changes: 1 addition & 1 deletion packages/language/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zenstackhq/language",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"displayName": "ZenStack modeling language compiler",
"description": "ZenStack modeling language compiler",
"homepage": "https://zenstack.dev",
Expand Down
2 changes: 1 addition & 1 deletion packages/plugins/openapi/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zenstackhq/openapi",
"displayName": "ZenStack Plugin and Runtime for OpenAPI",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"description": "ZenStack plugin and runtime supporting OpenAPI",
"main": "index.js",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/plugins/swr/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zenstackhq/swr",
"displayName": "ZenStack plugin for generating SWR hooks",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"description": "ZenStack plugin for generating SWR hooks",
"main": "index.js",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/plugins/tanstack-query/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zenstackhq/tanstack-query",
"displayName": "ZenStack plugin for generating tanstack-query hooks",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"description": "ZenStack plugin for generating tanstack-query hooks",
"main": "index.js",
"exports": {
Expand Down
2 changes: 1 addition & 1 deletion packages/plugins/trpc/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zenstackhq/trpc",
"displayName": "ZenStack plugin for tRPC",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"description": "ZenStack plugin for tRPC",
"main": "index.js",
"repository": {
Expand Down
33 changes: 18 additions & 15 deletions packages/plugins/trpc/src/generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { name } from '.';
import {
generateHelperImport,
generateProcedure,
generateRouterSchemaImports,
generateRouterSchemaImport,
generateRouterTyping,
generateRouterTypingImports,
getInputSchemaByOpName,
Expand Down Expand Up @@ -89,21 +89,22 @@ function createAppRouter(
const prismaImport = getPrismaClientImportSpec(zmodel, path.dirname(indexFile));
appRouter.addImportDeclarations([
{
namedImports: ['type AnyRootConfig', 'type Procedure', 'type ProcedureParams', 'type ProcedureType'],
namedImports: [
'type AnyRouter',
'type AnyRootConfig',
'type CreateRouterInner',
'type Procedure',
'type ProcedureBuilder',
'type ProcedureParams',
'type ProcedureRouterRecord',
'type ProcedureType',
],
moduleSpecifier: '@trpc/server',
},
{
namedImports: ['type PrismaClient', 'type Prisma'],
moduleSpecifier: prismaImport,
},
{
namedImports: ['type createRouterFactory', 'AnyRouter'],
moduleSpecifier: '@trpc/server/dist/core/router',
},
{
namedImports: ['type ProcedureBuilder'],
moduleSpecifier: '@trpc/server/dist/core/internals/procedureBuilder',
},
{ defaultImport: 'z', moduleSpecifier: 'zod', isTypeOnly: true },
]);

Expand All @@ -113,10 +114,12 @@ function createAppRouter(

export type BaseConfig = AnyRootConfig;

export type RouterFactory<Config extends BaseConfig> = ReturnType<
typeof createRouterFactory<Config>
>;

export type RouterFactory<Config extends BaseConfig> = <
ProcRouterRecord extends ProcedureRouterRecord
>(
procedures: ProcRouterRecord
) => CreateRouterInner<Config, ProcRouterRecord>;

${
/** this is needed in order to prevent type errors between a procedure and a middleware-extended procedure */ ''
}
Expand Down Expand Up @@ -299,7 +302,7 @@ function generateModelCreateRouter(
},
]);

generateRouterSchemaImports(modelRouter, upperCaseFirst(model), zodSchemasImport);
generateRouterSchemaImport(modelRouter, zodSchemasImport);
generateHelperImport(modelRouter);
if (generateClientHelpers) {
generateRouterTypingImports(modelRouter, zmodel);
Expand Down
41 changes: 21 additions & 20 deletions packages/plugins/trpc/src/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export function generateProcedure(
)}.${prismaMethod}(input as any))) as ProcReturns<
"query",
Proc,
(typeof ${upperCaseFirst(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
(typeof $Schema.${upperCaseFirst(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
ReturnType<PrismaClient["${lowerCaseFirst(modelName)}"]["${opType}"]>
>,
`);
Expand All @@ -36,7 +36,7 @@ export function generateProcedure(
)}.${prismaMethod}(input as any))) as ProcReturns<
"mutation",
Proc,
(typeof ${upperCaseFirst(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
(typeof $Schema.${upperCaseFirst(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
ReturnType<PrismaClient["${lowerCaseFirst(modelName)}"]["${opType}"]>
>,
`);
Expand Down Expand Up @@ -247,8 +247,8 @@ export function generateRouterTypingImports(sourceFile: SourceFile, model: Model
}

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

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

export const getInputSchemaByOpName = (opName: string, modelName: string) => {
let inputType;
const capModelName = upperCaseFirst(modelName);
switch (opName) {
case 'findUnique':
inputType = `${modelName}InputSchema.findUnique`;
inputType = `$Schema.${capModelName}InputSchema.findUnique`;
break;
case 'findFirst':
inputType = `${modelName}InputSchema.findFirst`;
inputType = `$Schema.${capModelName}InputSchema.findFirst`;
break;
case 'findMany':
inputType = `${modelName}InputSchema.findMany`;
inputType = `$Schema.${capModelName}InputSchema.findMany`;
break;
case 'findRaw':
inputType = `${modelName}InputSchema.findRawObject`;
inputType = `$Schema.${capModelName}InputSchema.findRawObject`;
break;
case 'createOne':
inputType = `${modelName}InputSchema.create`;
inputType = `$Schema.${capModelName}InputSchema.create`;
break;
case 'createMany':
inputType = `${modelName}InputSchema.createMany`;
inputType = `$Schema.${capModelName}InputSchema.createMany`;
break;
case 'deleteOne':
inputType = `${modelName}InputSchema.delete`;
inputType = `$Schema.${capModelName}InputSchema.delete`;
break;
case 'updateOne':
inputType = `${modelName}InputSchema.update`;
inputType = `$Schema.${capModelName}InputSchema.update`;
break;
case 'deleteMany':
inputType = `${modelName}InputSchema.deleteMany`;
inputType = `$Schema.${capModelName}InputSchema.deleteMany`;
break;
case 'updateMany':
inputType = `${modelName}InputSchema.updateMany`;
inputType = `$Schema.${capModelName}InputSchema.updateMany`;
break;
case 'upsertOne':
inputType = `${modelName}InputSchema.upsert`;
inputType = `$Schema.${capModelName}InputSchema.upsert`;
break;
case 'aggregate':
inputType = `${modelName}InputSchema.aggregate`;
inputType = `$Schema.${capModelName}InputSchema.aggregate`;
break;
case 'aggregateRaw':
inputType = `${modelName}InputSchema.aggregateRawObject`;
inputType = `$Schema.${capModelName}InputSchema.aggregateRawObject`;
break;
case 'groupBy':
inputType = `${modelName}InputSchema.groupBy`;
inputType = `$Schema.${capModelName}InputSchema.groupBy`;
break;
case 'count':
inputType = `${modelName}InputSchema.count`;
inputType = `$Schema.${capModelName}InputSchema.count`;
break;
default:
console.log('getInputTypeByOpName: ', { opName, modelName });
break;
}
return inputType;
};
Expand Down
2 changes: 1 addition & 1 deletion packages/runtime/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zenstackhq/runtime",
"displayName": "ZenStack Runtime Library",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"description": "Runtime of ZenStack for both client-side and server-side environments.",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/schema/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"publisher": "zenstack",
"displayName": "ZenStack Language Tools",
"description": "A toolkit for building secure CRUD apps with Next.js + Typescript",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"author": {
"name": "ZenStack Team"
},
Expand Down
12 changes: 11 additions & 1 deletion packages/schema/src/plugins/plugin-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,18 @@ export function getNodeModulesFolder(startPath?: string): string | undefined {
export function ensureDefaultOutputFolder() {
const output = getDefaultOutputFolder();
if (output && !fs.existsSync(output)) {
const pkgJson = {
name: '.zenstack',
version: '1.0.0',
exports: {
'./zod': {
default: './zod/index.js',
types: './zod/index.d.ts',
},
},
};
fs.mkdirSync(output, { recursive: true });
fs.writeFileSync(path.join(output, 'package.json'), JSON.stringify({ name: '.zenstack', version: '1.0.0' }));
fs.writeFileSync(path.join(output, 'package.json'), JSON.stringify(pkgJson, undefined, 4));
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zenstackhq/sdk",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"description": "ZenStack plugin development SDK",
"main": "index.js",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion packages/server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zenstackhq/server",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"displayName": "ZenStack Server-side Adapters",
"description": "ZenStack server-side adapters",
"homepage": "https://zenstack.dev",
Expand Down
2 changes: 1 addition & 1 deletion packages/testtools/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zenstackhq/testtools",
"version": "1.0.0-beta.21",
"version": "1.0.0-beta.22",
"description": "ZenStack Test Tools",
"main": "index.js",
"publishConfig": {
Expand Down