zenstack 1.0.16 → 1.1.0

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 (154) hide show
  1. package/README.md +93 -24
  2. package/bin/post-install.js +1 -1
  3. package/cli/actions/generate.d.ts +13 -0
  4. package/cli/actions/generate.js +71 -0
  5. package/cli/actions/generate.js.map +1 -0
  6. package/cli/actions/index.d.ts +3 -0
  7. package/cli/actions/index.js +20 -0
  8. package/cli/actions/index.js.map +1 -0
  9. package/cli/actions/info.d.ts +4 -0
  10. package/cli/actions/info.js +63 -0
  11. package/cli/actions/info.js.map +1 -0
  12. package/cli/actions/init.d.ts +12 -0
  13. package/cli/actions/init.js +83 -0
  14. package/cli/actions/init.js.map +1 -0
  15. package/cli/cli-util.d.ts +14 -11
  16. package/cli/cli-util.js +150 -82
  17. package/cli/cli-util.js.map +1 -1
  18. package/cli/config.d.ts +10 -0
  19. package/cli/config.js +62 -0
  20. package/cli/config.js.map +1 -0
  21. package/cli/index.d.ts +4 -12
  22. package/cli/index.js +36 -29
  23. package/cli/index.js.map +1 -1
  24. package/cli/plugin-runner.d.ts +13 -3
  25. package/cli/plugin-runner.js +165 -59
  26. package/cli/plugin-runner.js.map +1 -1
  27. package/constants.js +1 -1
  28. package/language-server/constants.d.ts +7 -0
  29. package/language-server/constants.js +8 -1
  30. package/language-server/constants.js.map +1 -1
  31. package/language-server/utils.d.ts +1 -14
  32. package/language-server/utils.js +2 -38
  33. package/language-server/utils.js.map +1 -1
  34. package/language-server/validator/attribute-application-validator.d.ts +15 -0
  35. package/language-server/validator/attribute-application-validator.js +246 -0
  36. package/language-server/validator/attribute-application-validator.js.map +1 -0
  37. package/language-server/validator/attribute-validator.d.ts +1 -1
  38. package/language-server/validator/attribute-validator.js +4 -1
  39. package/language-server/validator/attribute-validator.js.map +1 -1
  40. package/language-server/validator/datamodel-validator.d.ts +7 -0
  41. package/language-server/validator/datamodel-validator.js +84 -33
  42. package/language-server/validator/datamodel-validator.js.map +1 -1
  43. package/language-server/validator/enum-validator.js +3 -6
  44. package/language-server/validator/enum-validator.js.map +1 -1
  45. package/language-server/validator/expression-validator.d.ts +1 -1
  46. package/language-server/validator/expression-validator.js +108 -3
  47. package/language-server/validator/expression-validator.js.map +1 -1
  48. package/language-server/validator/function-decl-validator.d.ts +9 -0
  49. package/language-server/validator/function-decl-validator.js +13 -0
  50. package/language-server/validator/function-decl-validator.js.map +1 -0
  51. package/language-server/validator/function-invocation-validator.d.ts +11 -0
  52. package/language-server/validator/function-invocation-validator.js +135 -0
  53. package/language-server/validator/function-invocation-validator.js.map +1 -0
  54. package/language-server/validator/schema-validator.d.ts +4 -1
  55. package/language-server/validator/schema-validator.js +28 -7
  56. package/language-server/validator/schema-validator.js.map +1 -1
  57. package/language-server/validator/utils.d.ts +3 -4
  58. package/language-server/validator/utils.js +20 -123
  59. package/language-server/validator/utils.js.map +1 -1
  60. package/language-server/validator/zmodel-validator.d.ts +5 -1
  61. package/language-server/validator/zmodel-validator.js +18 -4
  62. package/language-server/validator/zmodel-validator.js.map +1 -1
  63. package/language-server/zmodel-code-action.d.ts +2 -1
  64. package/language-server/zmodel-code-action.js +46 -21
  65. package/language-server/zmodel-code-action.js.map +1 -1
  66. package/language-server/zmodel-definition.d.ts +7 -0
  67. package/language-server/zmodel-definition.js +31 -0
  68. package/language-server/zmodel-definition.js.map +1 -0
  69. package/language-server/zmodel-formatter.js +2 -2
  70. package/language-server/zmodel-formatter.js.map +1 -1
  71. package/language-server/zmodel-linker.d.ts +3 -0
  72. package/language-server/zmodel-linker.js +122 -41
  73. package/language-server/zmodel-linker.js.map +1 -1
  74. package/language-server/zmodel-module.js +4 -1
  75. package/language-server/zmodel-module.js.map +1 -1
  76. package/language-server/zmodel-scope.d.ts +7 -1
  77. package/language-server/zmodel-scope.js +57 -1
  78. package/language-server/zmodel-scope.js.map +1 -1
  79. package/language-server/zmodel-workspace-manager.d.ts +5 -1
  80. package/language-server/zmodel-workspace-manager.js +101 -0
  81. package/language-server/zmodel-workspace-manager.js.map +1 -1
  82. package/package.json +27 -20
  83. package/plugins/access-policy/expression-writer.d.ts +7 -0
  84. package/plugins/access-policy/expression-writer.js +325 -106
  85. package/plugins/access-policy/expression-writer.js.map +1 -1
  86. package/plugins/access-policy/index.d.ts +3 -3
  87. package/plugins/access-policy/index.js +3 -5
  88. package/plugins/access-policy/index.js.map +1 -1
  89. package/plugins/access-policy/policy-guard-generator.d.ts +10 -3
  90. package/plugins/access-policy/policy-guard-generator.js +406 -121
  91. package/plugins/access-policy/policy-guard-generator.js.map +1 -1
  92. package/plugins/model-meta/index.d.ts +3 -3
  93. package/plugins/model-meta/index.js +110 -46
  94. package/plugins/model-meta/index.js.map +1 -1
  95. package/plugins/plugin-utils.d.ts +8 -7
  96. package/plugins/plugin-utils.js +55 -21
  97. package/plugins/plugin-utils.js.map +1 -1
  98. package/plugins/prisma/index.d.ts +3 -3
  99. package/plugins/prisma/index.js +3 -5
  100. package/plugins/prisma/index.js.map +1 -1
  101. package/plugins/prisma/prisma-builder.d.ts +7 -14
  102. package/plugins/prisma/prisma-builder.js +29 -34
  103. package/plugins/prisma/prisma-builder.js.map +1 -1
  104. package/plugins/prisma/schema-generator.d.ts +7 -3
  105. package/plugins/prisma/schema-generator.js +146 -102
  106. package/plugins/prisma/schema-generator.js.map +1 -1
  107. package/plugins/prisma/zmodel-code-generator.d.ts +3 -1
  108. package/plugins/prisma/zmodel-code-generator.js +12 -2
  109. package/plugins/prisma/zmodel-code-generator.js.map +1 -1
  110. package/plugins/zod/generator.d.ts +4 -0
  111. package/plugins/zod/generator.js +298 -0
  112. package/plugins/zod/generator.js.map +1 -0
  113. package/plugins/zod/index.d.ts +4 -0
  114. package/plugins/zod/index.js +24 -0
  115. package/plugins/zod/index.js.map +1 -0
  116. package/plugins/zod/transformer.d.ts +68 -0
  117. package/plugins/zod/transformer.js +554 -0
  118. package/plugins/zod/transformer.js.map +1 -0
  119. package/plugins/zod/types.d.ts +25 -0
  120. package/plugins/zod/types.js.map +1 -0
  121. package/plugins/zod/utils/removeDir.d.ts +1 -0
  122. package/plugins/zod/utils/removeDir.js +30 -0
  123. package/plugins/zod/utils/removeDir.js.map +1 -0
  124. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  125. package/plugins/zod/utils/schema-gen.js +188 -0
  126. package/plugins/zod/utils/schema-gen.js.map +1 -0
  127. package/res/starter.zmodel +6 -8
  128. package/res/stdlib.zmodel +238 -74
  129. package/telemetry.d.ts +2 -1
  130. package/telemetry.js +21 -11
  131. package/telemetry.js.map +1 -1
  132. package/utils/ast-utils.d.ts +12 -15
  133. package/utils/ast-utils.js +117 -66
  134. package/utils/ast-utils.js.map +1 -1
  135. package/utils/pkg-utils.d.ts +2 -2
  136. package/utils/pkg-utils.js +34 -16
  137. package/utils/pkg-utils.js.map +1 -1
  138. package/utils/typescript-expression-transformer.d.ts +54 -0
  139. package/utils/typescript-expression-transformer.js +326 -0
  140. package/utils/typescript-expression-transformer.js.map +1 -0
  141. package/utils/version-utils.js +7 -1
  142. package/utils/version-utils.js.map +1 -1
  143. package/plugins/access-policy/typescript-expression-transformer.d.ts +0 -26
  144. package/plugins/access-policy/typescript-expression-transformer.js +0 -111
  145. package/plugins/access-policy/typescript-expression-transformer.js.map +0 -1
  146. package/plugins/access-policy/utils.d.ts +0 -5
  147. package/plugins/access-policy/utils.js +0 -14
  148. package/plugins/access-policy/utils.js.map +0 -1
  149. package/plugins/access-policy/zod-schema-generator.d.ts +0 -12
  150. package/plugins/access-policy/zod-schema-generator.js +0 -158
  151. package/plugins/access-policy/zod-schema-generator.js.map +0 -1
  152. package/types.d.ts +0 -12
  153. package/types.js.map +0 -1
  154. /package/{types.js → plugins/zod/types.js} +0 -0
@@ -0,0 +1,554 @@
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
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const sdk_1 = require("@zenstackhq/sdk");
39
+ const dmmf_helpers_1 = require("@zenstackhq/sdk/dmmf-helpers");
40
+ const utils_1 = require("@zenstackhq/sdk/utils");
41
+ const path_1 = __importDefault(require("path"));
42
+ const semver = __importStar(require("semver"));
43
+ const upper_case_first_1 = require("upper-case-first");
44
+ class Transformer {
45
+ constructor(params) {
46
+ var _a, _b, _c, _d, _e, _f;
47
+ this.schemaImports = new Set();
48
+ this.hasJson = false;
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) : '';
52
+ this.fields = (_b = params.fields) !== null && _b !== void 0 ? _b : [];
53
+ this.models = (_c = params.models) !== null && _c !== void 0 ? _c : [];
54
+ this.modelOperations = (_d = params.modelOperations) !== null && _d !== void 0 ? _d : [];
55
+ this.aggregateOperationSupport = (_e = params.aggregateOperationSupport) !== null && _e !== void 0 ? _e : {};
56
+ this.enumTypes = (_f = params.enumTypes) !== null && _f !== void 0 ? _f : [];
57
+ this.project = params.project;
58
+ this.zmodel = params.zmodel;
59
+ this.inputObjectTypes = params.inputObjectTypes;
60
+ }
61
+ static setOutputPath(outPath) {
62
+ this.outputPath = outPath;
63
+ }
64
+ static getOutputPath() {
65
+ return this.outputPath;
66
+ }
67
+ generateEnumSchemas() {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ for (const enumType of this.enumTypes) {
70
+ const name = (0, upper_case_first_1.upperCaseFirst)(enumType.name);
71
+ const filePath = path_1.default.join(Transformer.outputPath, `enums/${name}.schema.ts`);
72
+ const content = `/* eslint-disable */\n${this.generateImportZodStatement()}\n${this.generateExportSchemaStatement(`${name}`, `z.enum(${JSON.stringify(enumType.values)})`)}`;
73
+ this.project.createSourceFile(filePath, content, { overwrite: true });
74
+ }
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 });
76
+ });
77
+ }
78
+ generateImportZodStatement() {
79
+ return "import { z } from 'zod';\n";
80
+ }
81
+ generateExportSchemaStatement(name, schema) {
82
+ return `export const ${name}Schema = ${schema}`;
83
+ }
84
+ generateObjectSchema(generateUnchecked) {
85
+ const zodObjectSchemaFields = this.generateObjectSchemaFields(generateUnchecked);
86
+ const objectSchema = this.prepareObjectSchema(zodObjectSchemaFields);
87
+ const filePath = path_1.default.join(Transformer.outputPath, `objects/${this.name}.schema.ts`);
88
+ const content = '/* eslint-disable */\n' + objectSchema;
89
+ this.project.createSourceFile(filePath, content, { overwrite: true });
90
+ return `${this.name}.schema`;
91
+ }
92
+ generateObjectSchemaFields(generateUnchecked) {
93
+ const zodObjectSchemaFields = this.fields
94
+ .map((field) => this.generateObjectSchemaField(field, generateUnchecked))
95
+ .flatMap((item) => item)
96
+ .map((item) => {
97
+ const [zodStringWithMainType, field, skipValidators] = item;
98
+ const value = skipValidators
99
+ ? zodStringWithMainType
100
+ : this.generateFieldValidators(zodStringWithMainType, field);
101
+ return value.trim();
102
+ });
103
+ return zodObjectSchemaFields;
104
+ }
105
+ generateObjectSchemaField(field, generateUnchecked) {
106
+ const lines = field.inputTypes;
107
+ if (lines.length === 0) {
108
+ return [];
109
+ }
110
+ let alternatives = lines.reduce((result, inputType) => {
111
+ if (!generateUnchecked && typeof inputType.type === 'string' && inputType.type.includes('Unchecked')) {
112
+ return result;
113
+ }
114
+ if (inputType.type === 'String') {
115
+ result.push(this.wrapWithZodValidators('z.string()', field, inputType));
116
+ }
117
+ else if (inputType.type === 'Int' || inputType.type === 'Float') {
118
+ result.push(this.wrapWithZodValidators('z.number()', field, inputType));
119
+ }
120
+ else if (inputType.type === 'Decimal') {
121
+ this.hasDecimal = true;
122
+ result.push(this.wrapWithZodValidators('DecimalSchema', field, inputType));
123
+ }
124
+ else if (inputType.type === 'BigInt') {
125
+ result.push(this.wrapWithZodValidators('z.bigint()', field, inputType));
126
+ }
127
+ else if (inputType.type === 'Boolean') {
128
+ result.push(this.wrapWithZodValidators('z.boolean()', field, inputType));
129
+ }
130
+ else if (inputType.type === 'DateTime') {
131
+ result.push(this.wrapWithZodValidators(['z.date()', 'z.string().datetime()'], field, inputType));
132
+ }
133
+ else if (inputType.type === 'Bytes') {
134
+ result.push(this.wrapWithZodValidators(`z.instanceof(Uint8Array)`, field, inputType));
135
+ }
136
+ else if (inputType.type === 'Json') {
137
+ this.hasJson = true;
138
+ result.push(this.wrapWithZodValidators('jsonSchema', field, inputType));
139
+ }
140
+ else if (inputType.type === 'True') {
141
+ result.push(this.wrapWithZodValidators('z.literal(true)', field, inputType));
142
+ }
143
+ else if (inputType.type === 'Null') {
144
+ result.push(this.wrapWithZodValidators('z.null()', field, inputType));
145
+ }
146
+ else {
147
+ const isEnum = inputType.location === 'enumTypes';
148
+ const isFieldRef = inputType.location === 'fieldRefTypes';
149
+ if (
150
+ // fieldRefTypes refer to other fields in the model and don't need to be generated as part of schema
151
+ !isFieldRef &&
152
+ ('prisma' || isEnum)) {
153
+ if (inputType.type !== this.originalName && typeof inputType.type === 'string') {
154
+ this.addSchemaImport(inputType.type);
155
+ }
156
+ result.push(this.generatePrismaStringLine(field, inputType, lines.length));
157
+ }
158
+ }
159
+ return result;
160
+ }, []);
161
+ if (alternatives.length === 0) {
162
+ return [];
163
+ }
164
+ if (alternatives.length > 1) {
165
+ alternatives = alternatives.map((alter) => alter.replace('.optional()', ''));
166
+ }
167
+ const fieldName = alternatives.some((alt) => alt.includes(':')) ? '' : ` ${field.name}:`;
168
+ const opt = !field.isRequired ? '.optional()' : '';
169
+ let resString = alternatives.length === 1 ? alternatives.join(',\r\n') : `z.union([${alternatives.join(',\r\n')}])${opt}`;
170
+ if (field.isNullable) {
171
+ resString += '.nullable()';
172
+ }
173
+ return [[` ${fieldName} ${resString} `, field, true]];
174
+ }
175
+ wrapWithZodValidators(mainValidators, field, inputType) {
176
+ let line = '';
177
+ const base = Array.isArray(mainValidators) ? mainValidators : [mainValidators];
178
+ line += base
179
+ .map((validator) => {
180
+ let r = validator;
181
+ if (inputType.isList) {
182
+ r += '.array()';
183
+ }
184
+ if (!field.isRequired) {
185
+ r += '.optional()';
186
+ }
187
+ return r;
188
+ })
189
+ .join(', ');
190
+ if (base.length > 1) {
191
+ line = `z.union([${line}])`;
192
+ }
193
+ return line;
194
+ }
195
+ addSchemaImport(name) {
196
+ this.schemaImports.add((0, upper_case_first_1.upperCaseFirst)(name));
197
+ }
198
+ generatePrismaStringLine(field, inputType, inputsLength) {
199
+ const isEnum = inputType.location === 'enumTypes';
200
+ const { isModelQueryType, modelName, queryName } = this.checkIsModelQueryType(inputType.type);
201
+ const objectSchemaLine = isModelQueryType
202
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
203
+ this.resolveModelQuerySchemaName(modelName, queryName)
204
+ : `${(0, upper_case_first_1.upperCaseFirst)(inputType.type.toString())}ObjectSchema`;
205
+ const enumSchemaLine = `${(0, upper_case_first_1.upperCaseFirst)(inputType.type.toString())}Schema`;
206
+ const schema = inputType.type === this.name ? objectSchemaLine : isEnum ? enumSchemaLine : objectSchemaLine;
207
+ const arr = inputType.isList ? '.array()' : '';
208
+ const opt = !field.isRequired ? '.optional()' : '';
209
+ return inputsLength === 1
210
+ ? ` ${field.name}: z.lazy(() => ${schema})${arr}${opt}`
211
+ : `z.lazy(() => ${schema})${arr}${opt}`;
212
+ }
213
+ generateFieldValidators(zodStringWithMainType, field) {
214
+ const { isRequired, isNullable } = field;
215
+ if (!isRequired) {
216
+ zodStringWithMainType += '.optional()';
217
+ }
218
+ if (isNullable) {
219
+ zodStringWithMainType += '.nullable()';
220
+ }
221
+ return zodStringWithMainType;
222
+ }
223
+ prepareObjectSchema(zodObjectSchemaFields) {
224
+ const objectSchema = `${this.generateExportObjectSchemaStatement(this.addFinalWrappers({ zodStringFields: zodObjectSchemaFields }))}\n`;
225
+ const prismaImportStatement = this.generateImportPrismaStatement();
226
+ const json = this.generateJsonSchemaImplementation();
227
+ return `${this.generateObjectSchemaImportStatements()}${prismaImportStatement}${json}${objectSchema}`;
228
+ }
229
+ generateExportObjectSchemaStatement(schema) {
230
+ let name = this.name;
231
+ let origName = this.originalName;
232
+ if ((0, dmmf_helpers_1.isAggregateInputType)(name)) {
233
+ name = `${name}Type`;
234
+ origName = `${origName}Type`;
235
+ }
236
+ const outType = `z.ZodType<Prisma.${origName}>`;
237
+ return `type SchemaType = ${outType};
238
+ export const ${this.name}ObjectSchema: SchemaType = ${schema} as SchemaType;`;
239
+ }
240
+ addFinalWrappers({ zodStringFields }) {
241
+ const fields = [...zodStringFields];
242
+ return this.wrapWithZodObject(fields) + '.strict()';
243
+ }
244
+ generateImportPrismaStatement() {
245
+ const prismaClientImportPath = (0, sdk_1.getPrismaClientImportSpec)(this.zmodel, path_1.default.resolve(Transformer.outputPath, './objects'));
246
+ return `import type { Prisma } from '${prismaClientImportPath}';\n\n`;
247
+ }
248
+ generateJsonSchemaImplementation() {
249
+ let jsonSchemaImplementation = '';
250
+ if (this.hasJson) {
251
+ jsonSchemaImplementation += `\n`;
252
+ jsonSchemaImplementation += `const literalSchema = z.union([z.string(), z.number(), z.boolean()]);\n`;
253
+ jsonSchemaImplementation += `const jsonSchema: z.ZodType<Prisma.InputJsonValue> = z.lazy(() =>\n`;
254
+ jsonSchemaImplementation += ` z.union([literalSchema, z.array(jsonSchema.nullable()), z.record(jsonSchema.nullable())])\n`;
255
+ jsonSchemaImplementation += `);\n\n`;
256
+ }
257
+ return jsonSchemaImplementation;
258
+ }
259
+ generateObjectSchemaImportStatements() {
260
+ let generatedImports = this.generateImportZodStatement();
261
+ generatedImports += this.generateSchemaImports();
262
+ generatedImports += this.generateCommonImport();
263
+ generatedImports += '\n\n';
264
+ return generatedImports;
265
+ }
266
+ generateSchemaImports() {
267
+ return [...this.schemaImports]
268
+ .map((name) => {
269
+ const { isModelQueryType, modelName } = this.checkIsModelQueryType(name);
270
+ if (isModelQueryType) {
271
+ return `import { ${modelName}InputSchema } from '../input/${modelName}Input.schema';`;
272
+ }
273
+ else if (Transformer.enumNames.includes(name)) {
274
+ return `import { ${name}Schema } from '../enums/${name}.schema';`;
275
+ }
276
+ else {
277
+ return `import { ${name}ObjectSchema } from './${name}.schema';`;
278
+ }
279
+ })
280
+ .join('\n');
281
+ }
282
+ generateCommonImport() {
283
+ let r = '';
284
+ if (this.hasDecimal) {
285
+ r += `import { DecimalSchema } from '../common';\n`;
286
+ }
287
+ if (r) {
288
+ r += '\n';
289
+ }
290
+ return r;
291
+ }
292
+ checkIsModelQueryType(type) {
293
+ const modelQueryTypeSuffixToQueryName = {
294
+ FindManyArgs: 'findMany',
295
+ };
296
+ for (const modelQueryType of ['FindManyArgs']) {
297
+ if (type.includes(modelQueryType)) {
298
+ const modelQueryTypeSuffixIndex = type.indexOf(modelQueryType);
299
+ return {
300
+ isModelQueryType: true,
301
+ modelName: (0, upper_case_first_1.upperCaseFirst)(type.substring(0, modelQueryTypeSuffixIndex)),
302
+ queryName: modelQueryTypeSuffixToQueryName[modelQueryType],
303
+ };
304
+ }
305
+ }
306
+ return { isModelQueryType: false };
307
+ }
308
+ resolveModelQuerySchemaName(modelName, queryName) {
309
+ return `${modelName}InputSchema.${queryName}`;
310
+ }
311
+ wrapWithZodUnion(zodStringFields) {
312
+ let wrapped = '';
313
+ wrapped += 'z.union([';
314
+ wrapped += '\n';
315
+ wrapped += ' ' + zodStringFields.join(',');
316
+ wrapped += '\n';
317
+ wrapped += '])';
318
+ return wrapped;
319
+ }
320
+ wrapWithZodObject(zodStringFields) {
321
+ let wrapped = '';
322
+ wrapped += 'z.object({';
323
+ wrapped += '\n';
324
+ wrapped += ' ' + zodStringFields;
325
+ wrapped += '\n';
326
+ wrapped += '})';
327
+ return wrapped;
328
+ }
329
+ generateInputSchemas(generateUnchecked) {
330
+ var _a, _b, _c, _d, _e;
331
+ return __awaiter(this, void 0, void 0, function* () {
332
+ const globalExports = [];
333
+ for (const modelOperation of this.modelOperations) {
334
+ const { model: origModelName, findUnique, findFirst, findMany,
335
+ // @ts-expect-error
336
+ createOne, createMany,
337
+ // @ts-expect-error
338
+ deleteOne,
339
+ // @ts-expect-error
340
+ updateOne, deleteMany, updateMany,
341
+ // @ts-expect-error
342
+ upsertOne, aggregate, groupBy,
343
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
344
+ } = modelOperation;
345
+ const modelName = (0, upper_case_first_1.upperCaseFirst)(origModelName);
346
+ globalExports.push(`export * from './${modelName}Input.schema'`);
347
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
348
+ const model = (0, dmmf_helpers_1.findModelByName)(this.models, origModelName);
349
+ const { selectImport, includeImport, selectZodSchemaLineLazy, includeZodSchemaLineLazy } = this.resolveSelectIncludeImportAndZodSchemaLine(model);
350
+ let imports = [
351
+ `import { z } from 'zod'`,
352
+ this.generateImportPrismaStatement(),
353
+ selectImport,
354
+ includeImport,
355
+ ];
356
+ let codeBody = '';
357
+ const operations = [];
358
+ // OrderByWithRelationInput's name is different when "fullTextSearch" is enabled
359
+ const orderByWithRelationInput = this.inputObjectTypes
360
+ .map((o) => (0, upper_case_first_1.upperCaseFirst)(o.name))
361
+ .includes(`${modelName}OrderByWithRelationInput`)
362
+ ? `${modelName}OrderByWithRelationInput`
363
+ : `${modelName}OrderByWithRelationAndSearchRelevanceInput`;
364
+ if (findUnique) {
365
+ imports.push(`import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`);
366
+ codeBody += `findUnique: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereUniqueInputObjectSchema }),`;
367
+ operations.push(['findUnique', origModelName]);
368
+ }
369
+ if (findFirst) {
370
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`, `import { ${orderByWithRelationInput}ObjectSchema } from '../objects/${orderByWithRelationInput}.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`, `import { ${modelName}ScalarFieldEnumSchema } from '../enums/${modelName}ScalarFieldEnum.schema'`);
371
+ codeBody += `findFirst: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${orderByWithRelationInput}ObjectSchema, ${orderByWithRelationInput}ObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.array(${modelName}ScalarFieldEnumSchema).optional() }),`;
372
+ operations.push(['findFirst', origModelName]);
373
+ }
374
+ if (findMany) {
375
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`, `import { ${orderByWithRelationInput}ObjectSchema } from '../objects/${orderByWithRelationInput}.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`, `import { ${modelName}ScalarFieldEnumSchema } from '../enums/${modelName}ScalarFieldEnum.schema'`);
376
+ codeBody += `findMany: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${orderByWithRelationInput}ObjectSchema, ${orderByWithRelationInput}ObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.array(${modelName}ScalarFieldEnumSchema).optional() }),`;
377
+ operations.push(['findMany', origModelName]);
378
+ }
379
+ if (createOne) {
380
+ imports.push(`import { ${modelName}CreateInputObjectSchema } from '../objects/${modelName}CreateInput.schema'`);
381
+ if (generateUnchecked) {
382
+ imports.push(`import { ${modelName}UncheckedCreateInputObjectSchema } from '../objects/${modelName}UncheckedCreateInput.schema'`);
383
+ }
384
+ const dataSchema = generateUnchecked
385
+ ? `z.union([${modelName}CreateInputObjectSchema, ${modelName}UncheckedCreateInputObjectSchema])`
386
+ : `${modelName}CreateInputObjectSchema`;
387
+ codeBody += `create: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} data: ${dataSchema} }),`;
388
+ operations.push(['create', origModelName]);
389
+ }
390
+ if (createMany) {
391
+ imports.push(`import { ${modelName}CreateManyInputObjectSchema } from '../objects/${modelName}CreateManyInput.schema'`);
392
+ codeBody += `createMany: z.object({ data: z.union([${modelName}CreateManyInputObjectSchema, z.array(${modelName}CreateManyInputObjectSchema)]) }),`;
393
+ operations.push(['createMany', origModelName]);
394
+ }
395
+ if (deleteOne) {
396
+ imports.push(`import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`);
397
+ codeBody += `'delete': z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereUniqueInputObjectSchema }),`;
398
+ operations.push(['delete', origModelName]);
399
+ }
400
+ if (deleteMany) {
401
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`);
402
+ codeBody += `deleteMany: z.object({ where: ${modelName}WhereInputObjectSchema.optional() }),`;
403
+ operations.push(['deleteMany', origModelName]);
404
+ }
405
+ if (updateOne) {
406
+ imports.push(`import { ${modelName}UpdateInputObjectSchema } from '../objects/${modelName}UpdateInput.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`);
407
+ if (generateUnchecked) {
408
+ imports.push(`import { ${modelName}UncheckedUpdateInputObjectSchema } from '../objects/${modelName}UncheckedUpdateInput.schema'`);
409
+ }
410
+ const dataSchema = generateUnchecked
411
+ ? `z.union([${modelName}UpdateInputObjectSchema, ${modelName}UncheckedUpdateInputObjectSchema])`
412
+ : `${modelName}UpdateInputObjectSchema`;
413
+ codeBody += `update: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} data: ${dataSchema}, where: ${modelName}WhereUniqueInputObjectSchema }),`;
414
+ operations.push(['update', origModelName]);
415
+ }
416
+ if (updateMany) {
417
+ imports.push(`import { ${modelName}UpdateManyMutationInputObjectSchema } from '../objects/${modelName}UpdateManyMutationInput.schema'`, `import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`);
418
+ if (generateUnchecked) {
419
+ imports.push(`import { ${modelName}UncheckedUpdateManyInputObjectSchema } from '../objects/${modelName}UncheckedUpdateManyInput.schema'`);
420
+ }
421
+ const dataSchema = generateUnchecked
422
+ ? `z.union([${modelName}UpdateManyMutationInputObjectSchema, ${modelName}UncheckedUpdateManyInputObjectSchema])`
423
+ : `${modelName}UpdateManyMutationInputObjectSchema`;
424
+ codeBody += `updateMany: z.object({ data: ${dataSchema}, where: ${modelName}WhereInputObjectSchema.optional() }),`;
425
+ operations.push(['updateMany', origModelName]);
426
+ }
427
+ if (upsertOne) {
428
+ 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'`);
429
+ if (generateUnchecked) {
430
+ imports.push(`import { ${modelName}UncheckedCreateInputObjectSchema } from '../objects/${modelName}UncheckedCreateInput.schema'`, `import { ${modelName}UncheckedUpdateInputObjectSchema } from '../objects/${modelName}UncheckedUpdateInput.schema'`);
431
+ }
432
+ const createSchema = generateUnchecked
433
+ ? `z.union([${modelName}CreateInputObjectSchema, ${modelName}UncheckedCreateInputObjectSchema])`
434
+ : `${modelName}CreateInputObjectSchema`;
435
+ const updateSchema = generateUnchecked
436
+ ? `z.union([${modelName}UpdateInputObjectSchema, ${modelName}UncheckedUpdateInputObjectSchema])`
437
+ : `${modelName}UpdateInputObjectSchema`;
438
+ codeBody += `upsert: z.object({ ${selectZodSchemaLineLazy} ${includeZodSchemaLineLazy} where: ${modelName}WhereUniqueInputObjectSchema, create: ${createSchema}, update: ${updateSchema} }),`;
439
+ operations.push(['upsert', origModelName]);
440
+ }
441
+ const aggregateOperations = [];
442
+ // DMMF messed up the model name casing used in the aggregate operations,
443
+ // AND the casing behavior varies from version to version -_-||
444
+ const prismaVersion = (0, sdk_1.getPrismaVersion)();
445
+ if ((_a = this.aggregateOperationSupport[modelName]) === null || _a === void 0 ? void 0 : _a.count) {
446
+ imports.push(`import { ${modelName}CountAggregateInputObjectSchema } from '../objects/${modelName}CountAggregateInput.schema'`);
447
+ aggregateOperations.push(`_count: z.union([ z.literal(true), ${modelName}CountAggregateInputObjectSchema ]).optional()`);
448
+ }
449
+ if ((_b = this.aggregateOperationSupport[modelName]) === null || _b === void 0 ? void 0 : _b.min) {
450
+ imports.push(`import { ${modelName}MinAggregateInputObjectSchema } from '../objects/${modelName}MinAggregateInput.schema'`);
451
+ aggregateOperations.push(`_min: ${modelName}MinAggregateInputObjectSchema.optional()`);
452
+ }
453
+ if ((_c = this.aggregateOperationSupport[modelName]) === null || _c === void 0 ? void 0 : _c.max) {
454
+ imports.push(`import { ${modelName}MaxAggregateInputObjectSchema } from '../objects/${modelName}MaxAggregateInput.schema'`);
455
+ aggregateOperations.push(`_max: ${modelName}MaxAggregateInputObjectSchema.optional()`);
456
+ }
457
+ if ((_d = this.aggregateOperationSupport[modelName]) === null || _d === void 0 ? void 0 : _d.avg) {
458
+ imports.push(`import { ${modelName}AvgAggregateInputObjectSchema } from '../objects/${modelName}AvgAggregateInput.schema'`);
459
+ aggregateOperations.push(`_avg: ${modelName}AvgAggregateInputObjectSchema.optional()`);
460
+ }
461
+ if ((_e = this.aggregateOperationSupport[modelName]) === null || _e === void 0 ? void 0 : _e.sum) {
462
+ imports.push(`import { ${modelName}SumAggregateInputObjectSchema } from '../objects/${modelName}SumAggregateInput.schema'`);
463
+ aggregateOperations.push(`_sum: ${modelName}SumAggregateInputObjectSchema.optional()`);
464
+ }
465
+ if (aggregate) {
466
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`, `import { ${orderByWithRelationInput}ObjectSchema } from '../objects/${orderByWithRelationInput}.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`);
467
+ codeBody += `aggregate: z.object({ where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${orderByWithRelationInput}ObjectSchema, ${orderByWithRelationInput}ObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), ${aggregateOperations.join(', ')} }),`;
468
+ operations.push(['aggregate', modelName]);
469
+ }
470
+ if (groupBy) {
471
+ 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'`);
472
+ 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(', ')} }),`;
473
+ // prisma 4 and 5 different typing for "groupBy" and we have to deal with it separately
474
+ if (prismaVersion && semver.gte(prismaVersion, '5.0.0')) {
475
+ operations.push(['groupBy', origModelName]);
476
+ }
477
+ else {
478
+ operations.push(['groupBy', modelName]);
479
+ }
480
+ }
481
+ // count
482
+ {
483
+ imports.push(`import { ${modelName}WhereInputObjectSchema } from '../objects/${modelName}WhereInput.schema'`, `import { ${orderByWithRelationInput}ObjectSchema } from '../objects/${orderByWithRelationInput}.schema'`, `import { ${modelName}WhereUniqueInputObjectSchema } from '../objects/${modelName}WhereUniqueInput.schema'`, `import { ${modelName}ScalarFieldEnumSchema } from '../enums/${modelName}ScalarFieldEnum.schema'`, `import { ${modelName}CountAggregateInputObjectSchema } from '../objects/${modelName}CountAggregateInput.schema'`);
484
+ codeBody += `count: z.object({ where: ${modelName}WhereInputObjectSchema.optional(), orderBy: z.union([${orderByWithRelationInput}ObjectSchema, ${orderByWithRelationInput}ObjectSchema.array()]).optional(), cursor: ${modelName}WhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.array(${modelName}ScalarFieldEnumSchema).optional(), select: z.union([ z.literal(true), ${modelName}CountAggregateInputObjectSchema ]).optional() })`;
485
+ operations.push(['count', origModelName]);
486
+ }
487
+ imports = [...new Set(imports)];
488
+ const filePath = path_1.default.join(Transformer.outputPath, `input/${modelName}Input.schema.ts`);
489
+ const content = `
490
+ /* eslint-disable */
491
+ ${imports.join(';\n')}
492
+
493
+ type ${modelName}InputSchemaType = {
494
+ ${operations
495
+ .map(([operation, typeName]) => (0, utils_1.indentString)(`${operation}: z.ZodType<Prisma.${typeName}${(0, upper_case_first_1.upperCaseFirst)(operation)}Args>`, 4))
496
+ .join(',\n')}
497
+ }
498
+
499
+ export const ${modelName}InputSchema = {
500
+ ${(0, utils_1.indentString)(codeBody, 4)}
501
+ } as ${modelName}InputSchemaType;
502
+ `;
503
+ this.project.createSourceFile(filePath, content, { overwrite: true });
504
+ }
505
+ const indexFilePath = path_1.default.join(Transformer.outputPath, 'input/index.ts');
506
+ const indexContent = `
507
+ /* eslint-disable */
508
+ ${globalExports.join(';\n')}
509
+ `;
510
+ this.project.createSourceFile(indexFilePath, indexContent, { overwrite: true });
511
+ });
512
+ }
513
+ generateImportStatements(imports) {
514
+ var _a;
515
+ let generatedImports = this.generateImportZodStatement();
516
+ generatedImports += (_a = imports === null || imports === void 0 ? void 0 : imports.filter((importItem) => !!importItem).join(';\r\n')) !== null && _a !== void 0 ? _a : '';
517
+ generatedImports += '\n\n';
518
+ return generatedImports;
519
+ }
520
+ resolveSelectIncludeImportAndZodSchemaLine(model) {
521
+ const { name } = model;
522
+ const modelName = (0, upper_case_first_1.upperCaseFirst)(name);
523
+ const hasRelationToAnotherModel = (0, dmmf_helpers_1.checkModelHasModelRelation)(model);
524
+ const selectImport = `import { ${modelName}SelectObjectSchema } from '../objects/${modelName}Select.schema'`;
525
+ const includeImport = hasRelationToAnotherModel
526
+ ? `import { ${modelName}IncludeObjectSchema } from '../objects/${modelName}Include.schema'`
527
+ : '';
528
+ let selectZodSchemaLine = '';
529
+ let includeZodSchemaLine = '';
530
+ let selectZodSchemaLineLazy = '';
531
+ let includeZodSchemaLineLazy = '';
532
+ const zodSelectObjectSchema = `${modelName}SelectObjectSchema.optional()`;
533
+ selectZodSchemaLine = `select: ${zodSelectObjectSchema},`;
534
+ selectZodSchemaLineLazy = `select: z.lazy(() => ${zodSelectObjectSchema}),`;
535
+ if (hasRelationToAnotherModel) {
536
+ const zodIncludeObjectSchema = `${modelName}IncludeObjectSchema.optional()`;
537
+ includeZodSchemaLine = `include: ${zodIncludeObjectSchema},`;
538
+ includeZodSchemaLineLazy = `include: z.lazy(() => ${zodIncludeObjectSchema}),`;
539
+ }
540
+ return {
541
+ selectImport,
542
+ includeImport,
543
+ selectZodSchemaLine,
544
+ includeZodSchemaLine,
545
+ selectZodSchemaLineLazy,
546
+ includeZodSchemaLineLazy,
547
+ };
548
+ }
549
+ }
550
+ exports.default = Transformer;
551
+ Transformer.enumNames = [];
552
+ Transformer.rawOpsMap = {};
553
+ Transformer.outputPath = './generated';
554
+ //# sourceMappingURL=transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../../src/plugins/zod/transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { DMMF, DMMF as PrismaDMMF } from '@prisma/generator-helper';
2
+ import { Model } from '@zenstackhq/language/ast';
3
+ import { Project } from 'ts-morph';
4
+ export declare type TransformerParams = {
5
+ enumTypes?: PrismaDMMF.SchemaEnum[];
6
+ fields?: PrismaDMMF.SchemaArg[];
7
+ name?: string;
8
+ models?: PrismaDMMF.Model[];
9
+ modelOperations?: PrismaDMMF.ModelMapping[];
10
+ aggregateOperationSupport?: AggregateOperationSupport;
11
+ isDefaultPrismaClientOutput?: boolean;
12
+ prismaClientOutputPath?: string;
13
+ project: Project;
14
+ zmodel: Model;
15
+ inputObjectTypes: DMMF.InputType[];
16
+ };
17
+ export declare type AggregateOperationSupport = {
18
+ [model: string]: {
19
+ count?: boolean;
20
+ min?: boolean;
21
+ max?: boolean;
22
+ sum?: boolean;
23
+ avg?: boolean;
24
+ };
25
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/zod/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export default function removeDir(dirPath: string, onlyContent: boolean): Promise<void>;