zenstack 1.0.0-beta.2 → 1.0.0-beta.20

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.
Files changed (86) hide show
  1. package/README.md +16 -8
  2. package/cli/cli-util.js +1 -1
  3. package/cli/cli-util.js.map +1 -1
  4. package/cli/plugin-runner.d.ts +2 -1
  5. package/cli/plugin-runner.js +101 -47
  6. package/cli/plugin-runner.js.map +1 -1
  7. package/language-server/constants.d.ts +0 -4
  8. package/language-server/constants.js +1 -14
  9. package/language-server/constants.js.map +1 -1
  10. package/language-server/utils.d.ts +1 -10
  11. package/language-server/utils.js +1 -20
  12. package/language-server/utils.js.map +1 -1
  13. package/language-server/validator/attribute-application-validator.d.ts +15 -0
  14. package/language-server/validator/attribute-application-validator.js +246 -0
  15. package/language-server/validator/attribute-application-validator.js.map +1 -0
  16. package/language-server/validator/attribute-validator.d.ts +1 -1
  17. package/language-server/validator/attribute-validator.js +4 -1
  18. package/language-server/validator/attribute-validator.js.map +1 -1
  19. package/language-server/validator/datamodel-validator.js +11 -7
  20. package/language-server/validator/datamodel-validator.js.map +1 -1
  21. package/language-server/validator/enum-validator.js +3 -6
  22. package/language-server/validator/enum-validator.js.map +1 -1
  23. package/language-server/validator/expression-validator.js +38 -1
  24. package/language-server/validator/expression-validator.js.map +1 -1
  25. package/language-server/validator/function-decl-validator.d.ts +9 -0
  26. package/language-server/validator/function-decl-validator.js +13 -0
  27. package/language-server/validator/function-decl-validator.js.map +1 -0
  28. package/language-server/validator/function-invocation-validator.js +34 -9
  29. package/language-server/validator/function-invocation-validator.js.map +1 -1
  30. package/language-server/validator/utils.d.ts +2 -3
  31. package/language-server/validator/utils.js +1 -112
  32. package/language-server/validator/utils.js.map +1 -1
  33. package/language-server/validator/zmodel-validator.d.ts +2 -1
  34. package/language-server/validator/zmodel-validator.js +8 -3
  35. package/language-server/validator/zmodel-validator.js.map +1 -1
  36. package/language-server/zmodel-linker.d.ts +1 -0
  37. package/language-server/zmodel-linker.js +49 -7
  38. package/language-server/zmodel-linker.js.map +1 -1
  39. package/package.json +8 -15
  40. package/plugins/access-policy/expression-writer.d.ts +3 -0
  41. package/plugins/access-policy/expression-writer.js +125 -63
  42. package/plugins/access-policy/expression-writer.js.map +1 -1
  43. package/plugins/access-policy/policy-guard-generator.d.ts +8 -1
  44. package/plugins/access-policy/policy-guard-generator.js +286 -73
  45. package/plugins/access-policy/policy-guard-generator.js.map +1 -1
  46. package/plugins/model-meta/index.js +55 -3
  47. package/plugins/model-meta/index.js.map +1 -1
  48. package/plugins/plugin-utils.d.ts +4 -0
  49. package/plugins/plugin-utils.js +16 -1
  50. package/plugins/plugin-utils.js.map +1 -1
  51. package/plugins/prisma/prisma-builder.d.ts +3 -1
  52. package/plugins/prisma/prisma-builder.js +9 -3
  53. package/plugins/prisma/prisma-builder.js.map +1 -1
  54. package/plugins/prisma/schema-generator.js +51 -6
  55. package/plugins/prisma/schema-generator.js.map +1 -1
  56. package/plugins/zod/generator.js +161 -19
  57. package/plugins/zod/generator.js.map +1 -1
  58. package/plugins/zod/index.d.ts +1 -1
  59. package/plugins/zod/transformer.d.ts +5 -5
  60. package/plugins/zod/transformer.js +154 -103
  61. package/plugins/zod/transformer.js.map +1 -1
  62. package/plugins/zod/types.d.ts +2 -0
  63. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  64. package/plugins/zod/utils/schema-gen.js +178 -0
  65. package/plugins/zod/utils/schema-gen.js.map +1 -0
  66. package/res/stdlib.zmodel +113 -30
  67. package/telemetry.d.ts +1 -0
  68. package/telemetry.js +3 -1
  69. package/telemetry.js.map +1 -1
  70. package/utils/ast-utils.d.ts +1 -14
  71. package/utils/ast-utils.js +2 -72
  72. package/utils/ast-utils.js.map +1 -1
  73. package/utils/pkg-utils.js +1 -1
  74. package/utils/pkg-utils.js.map +1 -1
  75. package/utils/typescript-expression-transformer.d.ts +53 -0
  76. package/utils/typescript-expression-transformer.js +293 -0
  77. package/utils/typescript-expression-transformer.js.map +1 -0
  78. package/plugins/access-policy/typescript-expression-transformer.d.ts +0 -28
  79. package/plugins/access-policy/typescript-expression-transformer.js +0 -180
  80. package/plugins/access-policy/typescript-expression-transformer.js.map +0 -1
  81. package/plugins/access-policy/utils.d.ts +0 -5
  82. package/plugins/access-policy/utils.js +0 -14
  83. package/plugins/access-policy/utils.js.map +0 -1
  84. package/plugins/access-policy/zod-schema-generator.d.ts +0 -12
  85. package/plugins/access-policy/zod-schema-generator.js +0 -160
  86. package/plugins/access-policy/zod-schema-generator.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/plugins/zod/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/plugins/zod/generator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DMMF } from '@prisma/generator-helper';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  import { PluginOptions } from '@zenstackhq/sdk';
3
3
  import { Model } from '@zenstackhq/sdk/ast';
4
4
  export declare const name = "Zod";
@@ -2,6 +2,7 @@ import type { DMMF as PrismaDMMF } from '@prisma/generator-helper';
2
2
  import { AggregateOperationSupport, TransformerParams } from './types';
3
3
  export default class Transformer {
4
4
  name: string;
5
+ originalName: string;
5
6
  fields: PrismaDMMF.SchemaArg[];
6
7
  schemaImports: Set<string>;
7
8
  models: PrismaDMMF.Model[];
@@ -15,13 +16,12 @@ export default class Transformer {
15
16
  static provider: string;
16
17
  private static outputPath;
17
18
  private hasJson;
18
- private static prismaClientOutputPath;
19
- private static isCustomPrismaClientOutputPath;
19
+ private hasDecimal;
20
20
  private project;
21
+ private zmodel;
21
22
  constructor(params: TransformerParams);
22
23
  static setOutputPath(outPath: string): void;
23
24
  static getOutputPath(): string;
24
- static setPrismaClientOutputPath(prismaClientCustomPath: string): void;
25
25
  generateEnumSchemas(): Promise<void>;
26
26
  generateImportZodStatement(): string;
27
27
  generateExportSchemaStatement(name: string, schema: string): string;
@@ -41,6 +41,7 @@ export default class Transformer {
41
41
  generateJsonSchemaImplementation(): string;
42
42
  generateObjectSchemaImportStatements(): string;
43
43
  generateSchemaImports(): string;
44
+ private generateCommonImport;
44
45
  checkIsModelQueryType(type: string): {
45
46
  isModelQueryType: boolean;
46
47
  modelName: string;
@@ -53,8 +54,7 @@ export default class Transformer {
53
54
  resolveModelQuerySchemaName(modelName: string, queryName: string): string;
54
55
  wrapWithZodUnion(zodStringFields: string[]): string;
55
56
  wrapWithZodObject(zodStringFields: string | string[]): string;
56
- resolveObjectSchemaName(): string;
57
- generateModelSchemas(): Promise<void>;
57
+ generateInputSchemas(): Promise<void>;
58
58
  generateImportStatements(imports: (string | undefined)[]): string;
59
59
  resolveSelectIncludeImportAndZodSchemaLine(model: PrismaDMMF.Model): {
60
60
  selectImport: string;
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -15,20 +38,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
38
  const sdk_1 = require("@zenstackhq/sdk");
16
39
  const dmmf_helpers_1 = require("@zenstackhq/sdk/dmmf-helpers");
17
40
  const utils_1 = __importDefault(require("@zenstackhq/sdk/utils"));
18
- const upper_case_first_1 = require("upper-case-first");
19
41
  const path_1 = __importDefault(require("path"));
42
+ const semver = __importStar(require("semver"));
43
+ const upper_case_first_1 = require("upper-case-first");
20
44
  class Transformer {
21
45
  constructor(params) {
22
46
  var _a, _b, _c, _d, _e, _f;
23
47
  this.schemaImports = new Set();
24
48
  this.hasJson = false;
25
- this.name = (_a = params.name) !== null && _a !== void 0 ? _a : '';
49
+ this.hasDecimal = false;
50
+ this.originalName = (_a = params.name) !== null && _a !== void 0 ? _a : '';
51
+ this.name = params.name ? (0, upper_case_first_1.upperCaseFirst)(params.name) : '';
26
52
  this.fields = (_b = params.fields) !== null && _b !== void 0 ? _b : [];
27
53
  this.models = (_c = params.models) !== null && _c !== void 0 ? _c : [];
28
54
  this.modelOperations = (_d = params.modelOperations) !== null && _d !== void 0 ? _d : [];
29
55
  this.aggregateOperationSupport = (_e = params.aggregateOperationSupport) !== null && _e !== void 0 ? _e : {};
30
56
  this.enumTypes = (_f = params.enumTypes) !== null && _f !== void 0 ? _f : [];
31
57
  this.project = params.project;
58
+ this.zmodel = params.zmodel;
32
59
  }
33
60
  static setOutputPath(outPath) {
34
61
  this.outputPath = outPath;
@@ -36,20 +63,16 @@ class Transformer {
36
63
  static getOutputPath() {
37
64
  return this.outputPath;
38
65
  }
39
- static setPrismaClientOutputPath(prismaClientCustomPath) {
40
- this.prismaClientOutputPath = prismaClientCustomPath;
41
- this.isCustomPrismaClientOutputPath = prismaClientCustomPath !== '@prisma/client';
42
- }
43
66
  generateEnumSchemas() {
44
67
  return __awaiter(this, void 0, void 0, function* () {
45
68
  for (const enumType of this.enumTypes) {
46
- const { name, values } = enumType;
47
- const filteredValues = values.filter((v) => !sdk_1.AUXILIARY_FIELDS.includes(v));
69
+ const name = (0, upper_case_first_1.upperCaseFirst)(enumType.name);
70
+ const filteredValues = enumType.values.filter((v) => !sdk_1.AUXILIARY_FIELDS.includes(v));
48
71
  const filePath = path_1.default.join(Transformer.outputPath, `enums/${name}.schema.ts`);
49
72
  const content = `/* eslint-disable */\n${this.generateImportZodStatement()}\n${this.generateExportSchemaStatement(`${name}`, `z.enum(${JSON.stringify(filteredValues)})`)}`;
50
73
  this.project.createSourceFile(filePath, content, { overwrite: true });
51
74
  }
52
- this.project.createSourceFile(path_1.default.join(Transformer.outputPath, `enums/index.ts`), this.enumTypes.map((enumType) => `export * from './${enumType.name}.schema';`).join('\n'), { overwrite: true });
75
+ this.project.createSourceFile(path_1.default.join(Transformer.outputPath, `enums/index.ts`), this.enumTypes.map((enumType) => `export * from './${(0, upper_case_first_1.upperCaseFirst)(enumType.name)}.schema';`).join('\n'), { overwrite: true });
53
76
  });
54
77
  }
55
78
  generateImportZodStatement() {
@@ -61,11 +84,10 @@ class Transformer {
61
84
  generateObjectSchema() {
62
85
  const zodObjectSchemaFields = this.generateObjectSchemaFields();
63
86
  const objectSchema = this.prepareObjectSchema(zodObjectSchemaFields);
64
- const objectSchemaName = this.resolveObjectSchemaName();
65
- const filePath = path_1.default.join(Transformer.outputPath, `objects/${objectSchemaName}.schema.ts`);
87
+ const filePath = path_1.default.join(Transformer.outputPath, `objects/${this.name}.schema.ts`);
66
88
  const content = '/* eslint-disable */\n' + objectSchema;
67
89
  this.project.createSourceFile(filePath, content, { overwrite: true });
68
- return `${objectSchemaName}.schema`;
90
+ return `${this.name}.schema`;
69
91
  }
70
92
  generateObjectSchemaFields() {
71
93
  const zodObjectSchemaFields = this.fields
@@ -90,9 +112,13 @@ class Transformer {
90
112
  if (inputType.type === 'String') {
91
113
  result.push(this.wrapWithZodValidators('z.string()', field, inputType));
92
114
  }
93
- else if (inputType.type === 'Int' || inputType.type === 'Float' || inputType.type === 'Decimal') {
115
+ else if (inputType.type === 'Int' || inputType.type === 'Float') {
94
116
  result.push(this.wrapWithZodValidators('z.number()', field, inputType));
95
117
  }
118
+ else if (inputType.type === 'Decimal') {
119
+ this.hasDecimal = true;
120
+ result.push(this.wrapWithZodValidators('DecimalSchema', field, inputType));
121
+ }
96
122
  else if (inputType.type === 'BigInt') {
97
123
  result.push(this.wrapWithZodValidators('z.bigint()', field, inputType));
98
124
  }
@@ -103,7 +129,7 @@ class Transformer {
103
129
  result.push(this.wrapWithZodValidators(['z.date()', 'z.string().datetime()'], field, inputType));
104
130
  }
105
131
  else if (inputType.type === 'Bytes') {
106
- result.push(this.wrapWithZodValidators('z.number().array()', field, inputType));
132
+ result.push(this.wrapWithZodValidators(`z.instanceof(Uint8Array)`, field, inputType));
107
133
  }
108
134
  else if (inputType.type === 'Json') {
109
135
  this.hasJson = true;
@@ -112,10 +138,17 @@ class Transformer {
112
138
  else if (inputType.type === 'True') {
113
139
  result.push(this.wrapWithZodValidators('z.literal(true)', field, inputType));
114
140
  }
141
+ else if (inputType.type === 'Null') {
142
+ result.push(this.wrapWithZodValidators('z.null()', field, inputType));
143
+ }
115
144
  else {
116
145
  const isEnum = inputType.location === 'enumTypes';
117
- if (inputType.namespace === 'prisma' || isEnum) {
118
- if (inputType.type !== this.name && typeof inputType.type === 'string') {
146
+ const isFieldRef = inputType.location === 'fieldRefTypes';
147
+ if (
148
+ // fieldRefTypes refer to other fields in the model and don't need to be generated as part of schema
149
+ !isFieldRef &&
150
+ ('prisma' || isEnum)) {
151
+ if (inputType.type !== this.originalName && typeof inputType.type === 'string') {
119
152
  this.addSchemaImport(inputType.type);
120
153
  }
121
154
  result.push(this.generatePrismaStringLine(field, inputType, lines.length));
@@ -158,7 +191,7 @@ class Transformer {
158
191
  return line;
159
192
  }
160
193
  addSchemaImport(name) {
161
- this.schemaImports.add(name);
194
+ this.schemaImports.add((0, upper_case_first_1.upperCaseFirst)(name));
162
195
  }
163
196
  generatePrismaStringLine(field, inputType, inputsLength) {
164
197
  const isEnum = inputType.location === 'enumTypes';
@@ -166,8 +199,8 @@ class Transformer {
166
199
  const objectSchemaLine = isModelQueryType
167
200
  ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
168
201
  this.resolveModelQuerySchemaName(modelName, queryName)
169
- : `${inputType.type}ObjectSchema`;
170
- const enumSchemaLine = `${inputType.type}Schema`;
202
+ : `${(0, upper_case_first_1.upperCaseFirst)(inputType.type.toString())}ObjectSchema`;
203
+ const enumSchemaLine = `${(0, upper_case_first_1.upperCaseFirst)(inputType.type.toString())}Schema`;
171
204
  const schema = inputType.type === this.name ? objectSchemaLine : isEnum ? enumSchemaLine : objectSchemaLine;
172
205
  const arr = inputType.isList ? '.array()' : '';
173
206
  const opt = !field.isRequired ? '.optional()' : '';
@@ -193,39 +226,21 @@ class Transformer {
193
226
  }
194
227
  generateExportObjectSchemaStatement(schema) {
195
228
  let name = this.name;
229
+ let origName = this.originalName;
196
230
  if ((0, dmmf_helpers_1.isAggregateInputType)(name)) {
197
231
  name = `${name}Type`;
232
+ origName = `${origName}Type`;
198
233
  }
199
- const end = `export const ${this.name}ObjectSchema = Schema`;
200
- return `const Schema: z.ZodType<Omit<Prisma.${name}, ${sdk_1.AUXILIARY_FIELDS.map((f) => "'" + f + "'").join('|')}>> = ${schema};\n\n ${end}`;
234
+ const outType = `z.ZodType<Purge<Prisma.${origName}>>`;
235
+ return `type SchemaType = ${outType};
236
+ export const ${this.name}ObjectSchema: SchemaType = ${schema} as SchemaType;`;
201
237
  }
202
238
  addFinalWrappers({ zodStringFields }) {
203
239
  const fields = [...zodStringFields];
204
240
  return this.wrapWithZodObject(fields) + '.strict()';
205
241
  }
206
242
  generateImportPrismaStatement() {
207
- let prismaClientImportPath;
208
- if (Transformer.isCustomPrismaClientOutputPath) {
209
- /**
210
- * If a custom location was designated for the prisma client, we need to figure out the
211
- * relative path from {outputPath}/objects to {prismaClientCustomPath}
212
- */
213
- const fromPath = path_1.default.join(Transformer.outputPath, 'objects');
214
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
215
- const toPath = Transformer.prismaClientOutputPath;
216
- const relativePathFromOutputToPrismaClient = path_1.default
217
- .relative(fromPath, toPath)
218
- .split(path_1.default.sep)
219
- .join(path_1.default.posix.sep);
220
- prismaClientImportPath = relativePathFromOutputToPrismaClient;
221
- }
222
- else {
223
- /**
224
- * If the default output path for prisma client (@prisma/client) is being used, we can import from it directly
225
- * without having to resolve a relative path
226
- */
227
- prismaClientImportPath = Transformer.prismaClientOutputPath;
228
- }
243
+ const prismaClientImportPath = (0, sdk_1.getPrismaClientImportSpec)(this.zmodel, path_1.default.resolve(Transformer.outputPath, './objects'));
229
244
  return `import type { Prisma } from '${prismaClientImportPath}';\n\n`;
230
245
  }
231
246
  generateJsonSchemaImplementation() {
@@ -242,6 +257,7 @@ class Transformer {
242
257
  generateObjectSchemaImportStatements() {
243
258
  let generatedImports = this.generateImportZodStatement();
244
259
  generatedImports += this.generateSchemaImports();
260
+ generatedImports += this.generateCommonImport();
245
261
  generatedImports += '\n\n';
246
262
  return generatedImports;
247
263
  }
@@ -250,16 +266,24 @@ class Transformer {
250
266
  .map((name) => {
251
267
  const { isModelQueryType, modelName } = this.checkIsModelQueryType(name);
252
268
  if (isModelQueryType) {
253
- return `import { ${modelName}Schema } from '../${modelName}.schema'`;
269
+ return `import { ${modelName}InputSchema } from '../input/${modelName}Input.schema';`;
254
270
  }
255
271
  else if (Transformer.enumNames.includes(name)) {
256
- return `import { ${name}Schema } from '../enums/${name}.schema'`;
272
+ return `import { ${name}Schema } from '../enums/${name}.schema';`;
257
273
  }
258
274
  else {
259
- return `import { ${name}ObjectSchema } from './${name}.schema'`;
275
+ return `import { ${name}ObjectSchema } from './${name}.schema';`;
260
276
  }
261
277
  })
262
- .join(';\r\n');
278
+ .join('\n');
279
+ }
280
+ generateCommonImport() {
281
+ let r = `import type { Purge } from '../common';\n`;
282
+ if (this.hasDecimal) {
283
+ r += `import { DecimalSchema } from '../common';\n`;
284
+ }
285
+ r += '\n';
286
+ return r;
263
287
  }
264
288
  checkIsModelQueryType(type) {
265
289
  const modelQueryTypeSuffixToQueryName = {
@@ -270,7 +294,7 @@ class Transformer {
270
294
  const modelQueryTypeSuffixIndex = type.indexOf(modelQueryType);
271
295
  return {
272
296
  isModelQueryType: true,
273
- modelName: type.substring(0, modelQueryTypeSuffixIndex),
297
+ modelName: (0, upper_case_first_1.upperCaseFirst)(type.substring(0, modelQueryTypeSuffixIndex)),
274
298
  queryName: modelQueryTypeSuffixToQueryName[modelQueryType],
275
299
  };
276
300
  }
@@ -278,8 +302,7 @@ class Transformer {
278
302
  return { isModelQueryType: false };
279
303
  }
280
304
  resolveModelQuerySchemaName(modelName, queryName) {
281
- const modelNameCapitalized = modelName.charAt(0).toUpperCase() + modelName.slice(1);
282
- return `${modelNameCapitalized}Schema.${queryName}`;
305
+ return `${modelName}InputSchema.${queryName}`;
283
306
  }
284
307
  wrapWithZodUnion(zodStringFields) {
285
308
  let wrapped = '';
@@ -299,15 +322,12 @@ class Transformer {
299
322
  wrapped += '})';
300
323
  return wrapped;
301
324
  }
302
- resolveObjectSchemaName() {
303
- return this.name;
304
- }
305
- generateModelSchemas() {
325
+ generateInputSchemas() {
306
326
  var _a, _b, _c, _d, _e;
307
327
  return __awaiter(this, void 0, void 0, function* () {
308
328
  const globalExports = [];
309
329
  for (const modelOperation of this.modelOperations) {
310
- const { model: modelName, findUnique, findFirst, findMany,
330
+ const { model: origModelName, findUnique, findFirst, findMany,
311
331
  // @ts-expect-error
312
332
  createOne, createMany,
313
333
  // @ts-expect-error
@@ -318,96 +338,128 @@ class Transformer {
318
338
  upsertOne, aggregate, groupBy,
319
339
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
320
340
  } = modelOperation;
321
- globalExports.push(`export { ${modelName}Schema as ${modelName} } from './${modelName}.schema'`);
341
+ const modelName = (0, upper_case_first_1.upperCaseFirst)(origModelName);
342
+ globalExports.push(`export * from './${modelName}Input.schema'`);
322
343
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
323
- const model = (0, dmmf_helpers_1.findModelByName)(this.models, modelName);
344
+ const model = (0, dmmf_helpers_1.findModelByName)(this.models, origModelName);
324
345
  const { selectImport, includeImport, selectZodSchemaLineLazy, includeZodSchemaLineLazy } = this.resolveSelectIncludeImportAndZodSchemaLine(model);
325
- let imports = [`import { z } from 'zod'`, selectImport, includeImport];
346
+ let imports = [
347
+ `import { z } from 'zod'`,
348
+ this.generateImportPrismaStatement(),
349
+ selectImport,
350
+ includeImport,
351
+ ];
326
352
  let codeBody = '';
353
+ const operations = [];
327
354
  if (findUnique) {
328
- imports.push(`import { ${modelName}WhereUniqueInputObjectSchema } from './objects/${modelName}WhereUniqueInput.schema'`);
355
+ imports.push(`import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`);
329
356
  codeBody += `findUnique: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereUniqueInputObjectSchema }),`;
357
+ operations.push(['findUnique', origModelName]);
330
358
  }
331
359
  if (findFirst) {
332
- imports.push(`import { ${modelName}WhereInputObjectSchema } from './objects/${modelName}WhereInput.schema'`, `import { ${modelName}OrderByWithRelationInputObjectSchema } from './objects/${modelName}OrderByWithRelationInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from './objects/${modelName}WhereUniqueInput.schema'`, `import { ${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnumSchema } from './enums/${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnum.schema'`);
333
- codeBody += `findFirst: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${modelName}OrderByWithRelationInputObjectSchema, ${modelName}OrderByWithRelationInputObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.array(${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnumSchema).optional() }),`;
360
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`, `import { ${modelName}OrderByWithRelationInputObjectSchema } from '../objects/${modelName}OrderByWithRelationInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`, `import { ${modelName}ScalarFieldEnumSchema } from '../enums/${modelName}ScalarFieldEnum.schema'`);
361
+ codeBody += `findFirst: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${modelName}OrderByWithRelationInputObjectSchema, ${modelName}OrderByWithRelationInputObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.array(${modelName}ScalarFieldEnumSchema).optional() }),`;
362
+ operations.push(['findFirst', origModelName]);
334
363
  }
335
364
  if (findMany) {
336
- imports.push(`import { ${modelName}WhereInputObjectSchema } from './objects/${modelName}WhereInput.schema'`, `import { ${modelName}OrderByWithRelationInputObjectSchema } from './objects/${modelName}OrderByWithRelationInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from './objects/${modelName}WhereUniqueInput.schema'`, `import { ${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnumSchema } from './enums/${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnum.schema'`);
337
- codeBody += `findMany: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${modelName}OrderByWithRelationInputObjectSchema, ${modelName}OrderByWithRelationInputObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.array(${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnumSchema).optional() }),`;
365
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`, `import { ${modelName}OrderByWithRelationInputObjectSchema } from '../objects/${modelName}OrderByWithRelationInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`, `import { ${modelName}ScalarFieldEnumSchema } from '../enums/${modelName}ScalarFieldEnum.schema'`);
366
+ codeBody += `findMany: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${modelName}OrderByWithRelationInputObjectSchema, ${modelName}OrderByWithRelationInputObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.array(${modelName}ScalarFieldEnumSchema).optional() }),`;
367
+ operations.push(['findMany', origModelName]);
338
368
  }
339
369
  if (createOne) {
340
- imports.push(`import { ${modelName}CreateInputObjectSchema } from './objects/${modelName}CreateInput.schema'`);
341
- codeBody += `create: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} data: ${modelName}CreateInputObjectSchema }),`;
370
+ imports.push(`import { ${modelName}CreateInputObjectSchema } from '../objects/${modelName}CreateInput.schema'`, `import { ${modelName}UncheckedCreateInputObjectSchema } from '../objects/${modelName}UncheckedCreateInput.schema'`);
371
+ codeBody += `create: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} data: z.union([${modelName}CreateInputObjectSchema, ${modelName}UncheckedCreateInputObjectSchema]) }),`;
372
+ operations.push(['create', origModelName]);
342
373
  }
343
374
  if (createMany) {
344
- imports.push(`import { ${modelName}CreateManyInputObjectSchema } from './objects/${modelName}CreateManyInput.schema'`);
345
- codeBody += `createMany: z.object({ data: ${modelName}CreateManyInputObjectSchema }),`;
375
+ imports.push(`import { ${modelName}CreateManyInputObjectSchema } from '../objects/${modelName}CreateManyInput.schema'`);
376
+ codeBody += `createMany: z.object({ data: z.union([${modelName}CreateManyInputObjectSchema, z.array(${modelName}CreateManyInputObjectSchema)]) }),`;
377
+ operations.push(['createMany', origModelName]);
346
378
  }
347
379
  if (deleteOne) {
348
- imports.push(`import { ${modelName}WhereUniqueInputObjectSchema } from './objects/${modelName}WhereUniqueInput.schema'`);
380
+ imports.push(`import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`);
349
381
  codeBody += `'delete': z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereUniqueInputObjectSchema }),`;
382
+ operations.push(['delete', origModelName]);
350
383
  }
351
384
  if (deleteMany) {
352
- imports.push(`import { ${modelName}WhereInputObjectSchema } from './objects/${modelName}WhereInput.schema'`);
385
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`);
353
386
  codeBody += `deleteMany: z.object({ where: ${modelName}WhereInputObjectSchema.optional() }),`;
387
+ operations.push(['deleteMany', origModelName]);
354
388
  }
355
389
  if (updateOne) {
356
- imports.push(`import { ${modelName}UpdateInputObjectSchema } from './objects/${modelName}UpdateInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from './objects/${modelName}WhereUniqueInput.schema'`);
357
- codeBody += `update: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} data: ${modelName}UpdateInputObjectSchema, where: ${modelName}WhereUniqueInputObjectSchema }),`;
390
+ imports.push(`import { ${modelName}UpdateInputObjectSchema } from '../objects/${modelName}UpdateInput.schema'`, `import { ${modelName}UncheckedUpdateInputObjectSchema } from '../objects/${modelName}UncheckedUpdateInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`);
391
+ codeBody += `update: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} data: z.union([${modelName}UpdateInputObjectSchema, ${modelName}UncheckedUpdateInputObjectSchema]), where: ${modelName}WhereUniqueInputObjectSchema }),`;
392
+ operations.push(['update', origModelName]);
358
393
  }
359
394
  if (updateMany) {
360
- imports.push(`import { ${modelName}UpdateManyMutationInputObjectSchema } from './objects/${modelName}UpdateManyMutationInput.schema'`, `import { ${modelName}WhereInputObjectSchema } from './objects/${modelName}WhereInput.schema'`);
361
- codeBody += `updateMany: z.object({ data: ${modelName}UpdateManyMutationInputObjectSchema, where: ${modelName}WhereInputObjectSchema.optional() }),`;
395
+ imports.push(`import { ${modelName}UpdateManyMutationInputObjectSchema } from '../objects/${modelName}UpdateManyMutationInput.schema'`, `import { ${modelName}UncheckedUpdateManyInputObjectSchema } from '../objects/${modelName}UncheckedUpdateManyInput.schema'`, `import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`);
396
+ codeBody += `updateMany: z.object({ data: z.union([${modelName}UpdateManyMutationInputObjectSchema, ${modelName}UncheckedUpdateManyInputObjectSchema]), where: ${modelName}WhereInputObjectSchema.optional() }),`;
397
+ operations.push(['updateMany', origModelName]);
362
398
  }
363
399
  if (upsertOne) {
364
- imports.push(`import { ${modelName}WhereUniqueInputObjectSchema } from './objects/${modelName}WhereUniqueInput.schema'`, `import { ${modelName}CreateInputObjectSchema } from './objects/${modelName}CreateInput.schema'`, `import { ${modelName}UpdateInputObjectSchema } from './objects/${modelName}UpdateInput.schema'`);
365
- codeBody += `upsert: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereUniqueInputObjectSchema, create: ${modelName}CreateInputObjectSchema, update: ${modelName}UpdateInputObjectSchema }),`;
400
+ imports.push(`import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`, `import { ${modelName}CreateInputObjectSchema } from '../objects/${modelName}CreateInput.schema'`, `import { ${modelName}UncheckedCreateInputObjectSchema } from '../objects/${modelName}UncheckedCreateInput.schema'`, `import { ${modelName}UpdateInputObjectSchema } from '../objects/${modelName}UpdateInput.schema'`, `import { ${modelName}UncheckedUpdateInputObjectSchema } from '../objects/${modelName}UncheckedUpdateInput.schema'`);
401
+ codeBody += `upsert: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereUniqueInputObjectSchema, create: z.union([${modelName}CreateInputObjectSchema, ${modelName}UncheckedCreateInputObjectSchema]), update: z.union([${modelName}UpdateInputObjectSchema, ${modelName}UncheckedUpdateInputObjectSchema]) }),`;
402
+ operations.push(['upsert', origModelName]);
366
403
  }
367
404
  const aggregateOperations = [];
368
405
  // DMMF messed up the model name casing used in the aggregate operations,
369
- const modelNameVar = (0, upper_case_first_1.upperCaseFirst)(modelName);
370
- if ((_a = this.aggregateOperationSupport[modelNameVar]) === null || _a === void 0 ? void 0 : _a.count) {
371
- imports.push(`import { ${modelNameVar}CountAggregateInputObjectSchema } from './objects/${modelNameVar}CountAggregateInput.schema'`);
372
- aggregateOperations.push(`_count: z.union([ z.literal(true), ${modelNameVar}CountAggregateInputObjectSchema ]).optional()`);
406
+ // AND the casing behavior varies from version to version -_-||
407
+ const prismaVersion = (0, sdk_1.getPrismaVersion)();
408
+ if ((_a = this.aggregateOperationSupport[modelName]) === null || _a === void 0 ? void 0 : _a.count) {
409
+ imports.push(`import { ${modelName}CountAggregateInputObjectSchema } from '../objects/${modelName}CountAggregateInput.schema'`);
410
+ aggregateOperations.push(`_count: z.union([ z.literal(true), ${modelName}CountAggregateInputObjectSchema ]).optional()`);
373
411
  }
374
- if ((_b = this.aggregateOperationSupport[modelNameVar]) === null || _b === void 0 ? void 0 : _b.min) {
375
- imports.push(`import { ${modelNameVar}MinAggregateInputObjectSchema } from './objects/${modelNameVar}MinAggregateInput.schema'`);
376
- aggregateOperations.push(`_min: ${modelNameVar}MinAggregateInputObjectSchema.optional()`);
412
+ if ((_b = this.aggregateOperationSupport[modelName]) === null || _b === void 0 ? void 0 : _b.min) {
413
+ imports.push(`import { ${modelName}MinAggregateInputObjectSchema } from '../objects/${modelName}MinAggregateInput.schema'`);
414
+ aggregateOperations.push(`_min: ${modelName}MinAggregateInputObjectSchema.optional()`);
377
415
  }
378
- if ((_c = this.aggregateOperationSupport[modelNameVar]) === null || _c === void 0 ? void 0 : _c.max) {
379
- imports.push(`import { ${modelNameVar}MaxAggregateInputObjectSchema } from './objects/${modelNameVar}MaxAggregateInput.schema'`);
380
- aggregateOperations.push(`_max: ${modelNameVar}MaxAggregateInputObjectSchema.optional()`);
416
+ if ((_c = this.aggregateOperationSupport[modelName]) === null || _c === void 0 ? void 0 : _c.max) {
417
+ imports.push(`import { ${modelName}MaxAggregateInputObjectSchema } from '../objects/${modelName}MaxAggregateInput.schema'`);
418
+ aggregateOperations.push(`_max: ${modelName}MaxAggregateInputObjectSchema.optional()`);
381
419
  }
382
- if ((_d = this.aggregateOperationSupport[modelNameVar]) === null || _d === void 0 ? void 0 : _d.avg) {
383
- imports.push(`import { ${modelNameVar}AvgAggregateInputObjectSchema } from './objects/${modelNameVar}AvgAggregateInput.schema'`);
384
- aggregateOperations.push(`_avg: ${modelNameVar}AvgAggregateInputObjectSchema.optional()`);
420
+ if ((_d = this.aggregateOperationSupport[modelName]) === null || _d === void 0 ? void 0 : _d.avg) {
421
+ imports.push(`import { ${modelName}AvgAggregateInputObjectSchema } from '../objects/${modelName}AvgAggregateInput.schema'`);
422
+ aggregateOperations.push(`_avg: ${modelName}AvgAggregateInputObjectSchema.optional()`);
385
423
  }
386
- if ((_e = this.aggregateOperationSupport[modelNameVar]) === null || _e === void 0 ? void 0 : _e.sum) {
387
- imports.push(`import { ${modelNameVar}SumAggregateInputObjectSchema } from './objects/${modelNameVar}SumAggregateInput.schema'`);
388
- aggregateOperations.push(`_sum: ${modelNameVar}SumAggregateInputObjectSchema.optional()`);
424
+ if ((_e = this.aggregateOperationSupport[modelName]) === null || _e === void 0 ? void 0 : _e.sum) {
425
+ imports.push(`import { ${modelName}SumAggregateInputObjectSchema } from '../objects/${modelName}SumAggregateInput.schema'`);
426
+ aggregateOperations.push(`_sum: ${modelName}SumAggregateInputObjectSchema.optional()`);
389
427
  }
390
428
  if (aggregate) {
391
- imports.push(`import { ${modelName}WhereInputObjectSchema } from './objects/${modelName}WhereInput.schema'`, `import { ${modelName}OrderByWithRelationInputObjectSchema } from './objects/${modelName}OrderByWithRelationInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from './objects/${modelName}WhereUniqueInput.schema'`);
429
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`, `import { ${modelName}OrderByWithRelationInputObjectSchema } from '../objects/${modelName}OrderByWithRelationInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`);
392
430
  codeBody += `aggregate: z.object({ where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${modelName}OrderByWithRelationInputObjectSchema, ${modelName}OrderByWithRelationInputObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), ${aggregateOperations.join(', ')} }),`;
431
+ operations.push(['aggregate', modelName]);
393
432
  }
394
433
  if (groupBy) {
395
- imports.push(`import { ${modelName}WhereInputObjectSchema } from './objects/${modelName}WhereInput.schema'`, `import { ${modelName}OrderByWithAggregationInputObjectSchema } from './objects/${modelName}OrderByWithAggregationInput.schema'`, `import { ${modelName}ScalarWhereWithAggregatesInputObjectSchema } from './objects/${modelName}ScalarWhereWithAggregatesInput.schema'`, `import { ${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnumSchema } from './enums/${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnum.schema'`);
396
- codeBody += `groupBy: z.object({ where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${modelName}OrderByWithAggregationInputObjectSchema, ${modelName}OrderByWithAggregationInputObjectSchema.array()]).optional(), having: ${modelName}ScalarWhereWithAggregatesInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), by: z.array(${(0, upper_case_first_1.upperCaseFirst)(modelName)}ScalarFieldEnumSchema), ${aggregateOperations.join(', ')} }),`;
434
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`, `import { ${modelName}OrderByWithAggregationInputObjectSchema } from '../objects/${modelName}OrderByWithAggregationInput.schema'`, `import { ${modelName}ScalarWhereWithAggregatesInputObjectSchema } from '../objects/${modelName}ScalarWhereWithAggregatesInput.schema'`, `import { ${modelName}ScalarFieldEnumSchema } from '../enums/${modelName}ScalarFieldEnum.schema'`);
435
+ codeBody += `groupBy: z.object({ where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${modelName}OrderByWithAggregationInputObjectSchema, ${modelName}OrderByWithAggregationInputObjectSchema.array()]).optional(), having: ${modelName}ScalarWhereWithAggregatesInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), by: z.array(${modelName}ScalarFieldEnumSchema), ${aggregateOperations.join(', ')} }),`;
436
+ // prisma 4 and 5 different typing for "groupBy" and we have to deal with it separately
437
+ if (prismaVersion && semver.gte(prismaVersion, '5.0.0')) {
438
+ operations.push(['groupBy', origModelName]);
439
+ }
440
+ else {
441
+ operations.push(['groupBy', modelName]);
442
+ }
397
443
  }
398
444
  imports = [...new Set(imports)];
399
- const filePath = path_1.default.join(Transformer.outputPath, `${modelName}.schema.ts`);
445
+ const filePath = path_1.default.join(Transformer.outputPath, `input/${modelName}Input.schema.ts`);
400
446
  const content = `
401
447
  /* eslint-disable */
402
448
  ${imports.join(';\n')}
403
449
 
404
- export const ${modelName}Schema = {
450
+ type ${modelName}InputSchemaType = {
451
+ ${operations
452
+ .map(([operation, typeName]) => (0, utils_1.default)(`${operation}: z.ZodType<Prisma.${typeName}${(0, upper_case_first_1.upperCaseFirst)(operation)}Args>`, 4))
453
+ .join(',\n')}
454
+ }
455
+
456
+ export const ${modelName}InputSchema = {
405
457
  ${(0, utils_1.default)(codeBody, 4)}
406
- };
458
+ } as ${modelName}InputSchemaType;
407
459
  `;
408
460
  this.project.createSourceFile(filePath, content, { overwrite: true });
409
461
  }
410
- const indexFilePath = path_1.default.join(Transformer.outputPath, 'index.ts');
462
+ const indexFilePath = path_1.default.join(Transformer.outputPath, 'input/index.ts');
411
463
  const indexContent = `
412
464
  /* eslint-disable */
413
465
  ${globalExports.join(';\n')}
@@ -423,11 +475,12 @@ ${globalExports.join(';\n')}
423
475
  return generatedImports;
424
476
  }
425
477
  resolveSelectIncludeImportAndZodSchemaLine(model) {
426
- const { name: modelName } = model;
478
+ const { name } = model;
479
+ const modelName = (0, upper_case_first_1.upperCaseFirst)(name);
427
480
  const hasRelationToAnotherModel = (0, dmmf_helpers_1.checkModelHasModelRelation)(model);
428
- const selectImport = `import { ${modelName}SelectObjectSchema } from './objects/${modelName}Select.schema'`;
481
+ const selectImport = `import { ${modelName}SelectObjectSchema } from '../objects/${modelName}Select.schema'`;
429
482
  const includeImport = hasRelationToAnotherModel
430
- ? `import { ${modelName}IncludeObjectSchema } from './objects/${modelName}Include.schema'`
483
+ ? `import { ${modelName}IncludeObjectSchema } from '../objects/${modelName}Include.schema'`
431
484
  : '';
432
485
  let selectZodSchemaLine = '';
433
486
  let includeZodSchemaLine = '';
@@ -455,6 +508,4 @@ exports.default = Transformer;
455
508
  Transformer.enumNames = [];
456
509
  Transformer.rawOpsMap = {};
457
510
  Transformer.outputPath = './generated';
458
- Transformer.prismaClientOutputPath = '@prisma/client';
459
- Transformer.isCustomPrismaClientOutputPath = false;
460
511
  //# sourceMappingURL=transformer.js.map