zenstack 1.0.0-alpha.99 → 1.0.0-beta.10

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 (103) hide show
  1. package/README.md +65 -24
  2. package/cli/cli-util.d.ts +4 -1
  3. package/cli/cli-util.js +63 -9
  4. package/cli/cli-util.js.map +1 -1
  5. package/cli/config.js +39 -13
  6. package/cli/config.js.map +1 -1
  7. package/cli/index.js +1 -6
  8. package/cli/index.js.map +1 -1
  9. package/cli/plugin-runner.d.ts +2 -1
  10. package/cli/plugin-runner.js +106 -48
  11. package/cli/plugin-runner.js.map +1 -1
  12. package/language-server/constants.d.ts +0 -4
  13. package/language-server/constants.js +1 -14
  14. package/language-server/constants.js.map +1 -1
  15. package/language-server/utils.d.ts +1 -5
  16. package/language-server/utils.js +3 -20
  17. package/language-server/utils.js.map +1 -1
  18. package/language-server/validator/datamodel-validator.d.ts +7 -0
  19. package/language-server/validator/datamodel-validator.js +71 -21
  20. package/language-server/validator/datamodel-validator.js.map +1 -1
  21. package/language-server/validator/expression-validator.js +44 -7
  22. package/language-server/validator/expression-validator.js.map +1 -1
  23. package/language-server/validator/function-decl-validator.d.ts +9 -0
  24. package/language-server/validator/function-decl-validator.js +15 -0
  25. package/language-server/validator/function-decl-validator.js.map +1 -0
  26. package/language-server/validator/function-invocation-validator.js +31 -5
  27. package/language-server/validator/function-invocation-validator.js.map +1 -1
  28. package/language-server/validator/schema-validator.d.ts +4 -1
  29. package/language-server/validator/schema-validator.js +25 -5
  30. package/language-server/validator/schema-validator.js.map +1 -1
  31. package/language-server/validator/utils.d.ts +4 -4
  32. package/language-server/validator/utils.js +10 -1
  33. package/language-server/validator/utils.js.map +1 -1
  34. package/language-server/validator/zmodel-validator.d.ts +4 -1
  35. package/language-server/validator/zmodel-validator.js +13 -4
  36. package/language-server/validator/zmodel-validator.js.map +1 -1
  37. package/language-server/zmodel-code-action.d.ts +2 -1
  38. package/language-server/zmodel-code-action.js +19 -10
  39. package/language-server/zmodel-code-action.js.map +1 -1
  40. package/language-server/zmodel-definition.d.ts +7 -0
  41. package/language-server/zmodel-definition.js +31 -0
  42. package/language-server/zmodel-definition.js.map +1 -0
  43. package/language-server/zmodel-formatter.js +2 -2
  44. package/language-server/zmodel-formatter.js.map +1 -1
  45. package/language-server/zmodel-linker.d.ts +2 -0
  46. package/language-server/zmodel-linker.js +71 -7
  47. package/language-server/zmodel-linker.js.map +1 -1
  48. package/language-server/zmodel-module.js +4 -1
  49. package/language-server/zmodel-module.js.map +1 -1
  50. package/language-server/zmodel-scope.d.ts +7 -1
  51. package/language-server/zmodel-scope.js +57 -1
  52. package/language-server/zmodel-scope.js.map +1 -1
  53. package/package.json +19 -21
  54. package/plugins/access-policy/expression-writer.js +71 -25
  55. package/plugins/access-policy/expression-writer.js.map +1 -1
  56. package/plugins/access-policy/policy-guard-generator.js +107 -73
  57. package/plugins/access-policy/policy-guard-generator.js.map +1 -1
  58. package/plugins/access-policy/utils.d.ts +2 -2
  59. package/plugins/access-policy/utils.js +2 -2
  60. package/plugins/access-policy/utils.js.map +1 -1
  61. package/plugins/model-meta/index.js +35 -31
  62. package/plugins/model-meta/index.js.map +1 -1
  63. package/plugins/plugin-utils.d.ts +4 -4
  64. package/plugins/plugin-utils.js +28 -18
  65. package/plugins/plugin-utils.js.map +1 -1
  66. package/plugins/prisma/index.d.ts +1 -1
  67. package/plugins/prisma/prisma-builder.d.ts +6 -3
  68. package/plugins/prisma/prisma-builder.js +29 -8
  69. package/plugins/prisma/prisma-builder.js.map +1 -1
  70. package/plugins/prisma/schema-generator.d.ts +4 -1
  71. package/plugins/prisma/schema-generator.js +149 -32
  72. package/plugins/prisma/schema-generator.js.map +1 -1
  73. package/plugins/zod/generator.js +171 -22
  74. package/plugins/zod/generator.js.map +1 -1
  75. package/plugins/zod/index.d.ts +1 -1
  76. package/plugins/zod/transformer.d.ts +6 -6
  77. package/plugins/zod/transformer.js +168 -108
  78. package/plugins/zod/transformer.js.map +1 -1
  79. package/plugins/zod/types.d.ts +2 -0
  80. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  81. package/plugins/zod/utils/schema-gen.js +178 -0
  82. package/plugins/zod/utils/schema-gen.js.map +1 -0
  83. package/res/starter.zmodel +4 -4
  84. package/res/stdlib.zmodel +176 -90
  85. package/telemetry.d.ts +2 -1
  86. package/telemetry.js +5 -3
  87. package/telemetry.js.map +1 -1
  88. package/utils/ast-utils.d.ts +10 -3
  89. package/utils/ast-utils.js +91 -8
  90. package/utils/ast-utils.js.map +1 -1
  91. package/utils/pkg-utils.js +1 -1
  92. package/utils/pkg-utils.js.map +1 -1
  93. package/utils/typescript-expression-transformer.d.ts +53 -0
  94. package/utils/typescript-expression-transformer.js +295 -0
  95. package/utils/typescript-expression-transformer.js.map +1 -0
  96. package/utils/version-utils.js +1 -0
  97. package/utils/version-utils.js.map +1 -1
  98. package/plugins/access-policy/typescript-expression-transformer.d.ts +0 -28
  99. package/plugins/access-policy/typescript-expression-transformer.js +0 -121
  100. package/plugins/access-policy/typescript-expression-transformer.js.map +0 -1
  101. package/plugins/access-policy/zod-schema-generator.d.ts +0 -12
  102. package/plugins/access-policy/zod-schema-generator.js +0 -157
  103. package/plugins/access-policy/zod-schema-generator.js.map +0 -1
@@ -17,6 +17,11 @@ const sdk_1 = require("@zenstackhq/sdk");
17
17
  const fs_1 = __importDefault(require("fs"));
18
18
  const promises_1 = require("fs/promises");
19
19
  const path_1 = __importDefault(require("path"));
20
+ const semver_1 = __importDefault(require("semver"));
21
+ const strip_color_1 = __importDefault(require("strip-color"));
22
+ const _1 = require(".");
23
+ const utils_1 = require("../../language-server/validator/utils");
24
+ const telemetry_1 = __importDefault(require("../../telemetry"));
20
25
  const exec_utils_1 = require("../../utils/exec-utils");
21
26
  const prisma_builder_1 = require("./prisma-builder");
22
27
  const zmodel_code_generator_1 = __importDefault(require("./zmodel-code-generator"));
@@ -39,6 +44,7 @@ class PrismaSchemaGenerator {
39
44
  var _a;
40
45
  return __awaiter(this, void 0, void 0, function* () {
41
46
  const prisma = new prisma_builder_1.PrismaModel();
47
+ const warnings = [];
42
48
  for (const decl of model.declarations) {
43
49
  switch (decl.$type) {
44
50
  case ast_1.DataSource:
@@ -55,21 +61,59 @@ class PrismaSchemaGenerator {
55
61
  break;
56
62
  }
57
63
  }
58
- const outFile = (_a = options.output) !== null && _a !== void 0 ? _a : './prisma/schema.prisma';
64
+ let outFile = (_a = options.output) !== null && _a !== void 0 ? _a : './prisma/schema.prisma';
65
+ outFile = (0, sdk_1.resolvePath)(outFile, options);
59
66
  if (!fs_1.default.existsSync(path_1.default.dirname(outFile))) {
60
67
  fs_1.default.mkdirSync(path_1.default.dirname(outFile), { recursive: true });
61
68
  }
62
69
  yield (0, promises_1.writeFile)(outFile, this.PRELUDE + prisma.toString());
70
+ if (options.format === true) {
71
+ try {
72
+ // run 'prisma format'
73
+ yield (0, exec_utils_1.execSync)(`npx prisma format --schema ${outFile}`);
74
+ }
75
+ catch (_b) {
76
+ warnings.push(`Failed to format Prisma schema file`);
77
+ }
78
+ }
63
79
  const generateClient = options.generateClient !== false;
64
80
  if (generateClient) {
65
- // run 'prisma generate'
66
- yield (0, exec_utils_1.execSync)(`npx prisma generate --schema ${outFile}`);
81
+ try {
82
+ // run 'prisma generate'
83
+ yield (0, exec_utils_1.execSync)(`npx prisma generate --schema ${outFile}`, 'ignore');
84
+ }
85
+ catch (_c) {
86
+ yield this.trackPrismaSchemaError(outFile);
87
+ try {
88
+ // run 'prisma generate' again with output to the console
89
+ yield (0, exec_utils_1.execSync)(`npx prisma generate --schema ${outFile}`);
90
+ }
91
+ catch (_d) {
92
+ // noop
93
+ }
94
+ throw new sdk_1.PluginError(_1.name, `Failed to run "prisma generate"`);
95
+ }
96
+ }
97
+ return warnings;
98
+ });
99
+ }
100
+ trackPrismaSchemaError(schema) {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ try {
103
+ yield (0, sdk_1.getDMMF)({ datamodel: fs_1.default.readFileSync(schema, 'utf-8') });
104
+ }
105
+ catch (err) {
106
+ if (err instanceof Error) {
107
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
108
+ telemetry_1.default.track('prisma:error', { command: 'generate', message: (0, strip_color_1.default)(err.message) });
109
+ }
67
110
  }
68
111
  });
69
112
  }
70
113
  generateDataSource(prisma, dataSource) {
71
114
  let provider = undefined;
72
115
  let url = undefined;
116
+ let directUrl = undefined;
73
117
  let shadowDatabaseUrl = undefined;
74
118
  const restFields = [];
75
119
  for (const f of dataSource.fields) {
@@ -79,22 +123,30 @@ class PrismaSchemaGenerator {
79
123
  provider = f.value.value;
80
124
  }
81
125
  else {
82
- throw new sdk_1.PluginError('Datasource provider must be set to a string');
126
+ throw new sdk_1.PluginError(_1.name, 'Datasource provider must be set to a string');
83
127
  }
84
128
  break;
85
129
  }
86
130
  case 'url': {
87
131
  const r = this.extractDataSourceUrl(f.value);
88
132
  if (!r) {
89
- throw new sdk_1.PluginError('Invalid value for datasource url');
133
+ throw new sdk_1.PluginError(_1.name, 'Invalid value for datasource url');
90
134
  }
91
135
  url = r;
92
136
  break;
93
137
  }
138
+ case 'directUrl': {
139
+ const r = this.extractDataSourceUrl(f.value);
140
+ if (!r) {
141
+ throw new sdk_1.PluginError(_1.name, 'Invalid value for directUrl');
142
+ }
143
+ directUrl = r;
144
+ break;
145
+ }
94
146
  case 'shadowDatabaseUrl': {
95
147
  const r = this.extractDataSourceUrl(f.value);
96
148
  if (!r) {
97
- throw new sdk_1.PluginError('Invalid value for datasource url');
149
+ throw new sdk_1.PluginError(_1.name, 'Invalid value for shadowDatabaseUrl');
98
150
  }
99
151
  shadowDatabaseUrl = r;
100
152
  break;
@@ -103,7 +155,7 @@ class PrismaSchemaGenerator {
103
155
  // rest fields
104
156
  const value = (0, ast_1.isArrayExpr)(f.value) ? (0, sdk_1.getLiteralArray)(f.value) : (0, sdk_1.getLiteral)(f.value);
105
157
  if (value === undefined) {
106
- throw new sdk_1.PluginError(`Invalid value for datasource field ${f.name}: value must be a string or an array of strings`);
158
+ throw new sdk_1.PluginError(_1.name, `Invalid value for datasource field ${f.name}: value must be a string or an array of strings`);
107
159
  }
108
160
  else {
109
161
  restFields.push({ name: f.name, value });
@@ -113,12 +165,12 @@ class PrismaSchemaGenerator {
113
165
  }
114
166
  }
115
167
  if (!provider) {
116
- throw new sdk_1.PluginError('Datasource is missing "provider" field');
168
+ throw new sdk_1.PluginError(_1.name, 'Datasource is missing "provider" field');
117
169
  }
118
170
  if (!url) {
119
- throw new sdk_1.PluginError('Datasource is missing "url" field');
171
+ throw new sdk_1.PluginError(_1.name, 'Datasource is missing "url" field');
120
172
  }
121
- prisma.addDataSource(dataSource.name, provider, url, shadowDatabaseUrl, restFields);
173
+ prisma.addDataSource(dataSource.name, provider, url, directUrl, shadowDatabaseUrl, restFields);
122
174
  }
123
175
  extractDataSourceUrl(fieldValue) {
124
176
  var _a;
@@ -136,31 +188,49 @@ class PrismaSchemaGenerator {
136
188
  }
137
189
  }
138
190
  generateGenerator(prisma, decl) {
139
- prisma.addGenerator(decl.name, decl.fields.map((f) => {
191
+ const generator = prisma.addGenerator(decl.name, decl.fields.map((f) => {
140
192
  const value = (0, ast_1.isArrayExpr)(f.value) ? (0, sdk_1.getLiteralArray)(f.value) : (0, sdk_1.getLiteral)(f.value);
141
193
  return { name: f.name, value };
142
194
  }));
195
+ // deal with configuring PrismaClient preview features
196
+ const provider = generator.fields.find((f) => f.name === 'provider');
197
+ if ((provider === null || provider === void 0 ? void 0 : provider.value) === 'prisma-client-js') {
198
+ const prismaVersion = (0, sdk_1.getPrismaVersion)();
199
+ if (prismaVersion && semver_1.default.lt(prismaVersion, '4.7.0')) {
200
+ // insert interactiveTransactions preview feature
201
+ let previewFeatures = generator.fields.find((f) => f.name === 'previewFeatures');
202
+ if (!previewFeatures) {
203
+ previewFeatures = { name: 'previewFeatures', value: [] };
204
+ generator.fields.push(previewFeatures);
205
+ }
206
+ if (!Array.isArray(previewFeatures.value)) {
207
+ throw new sdk_1.PluginError(_1.name, 'option "previewFeatures" must be an array');
208
+ }
209
+ if (!previewFeatures.value.includes('interactiveTransactions')) {
210
+ previewFeatures.value.push('interactiveTransactions');
211
+ }
212
+ }
213
+ }
143
214
  }
144
215
  generateModel(prisma, decl, config) {
145
- const model = prisma.addModel(decl.name);
216
+ const model = decl.isView ? prisma.addView(decl.name) : prisma.addModel(decl.name);
146
217
  for (const field of decl.fields) {
147
218
  this.generateModelField(model, field);
148
219
  }
149
- // add an "zenstack_guard" field for dealing with boolean conditions
150
- const guardField = model.addField(sdk_1.GUARD_FIELD_NAME, 'Boolean', [
151
- new prisma_builder_1.FieldAttribute('@default', [
152
- new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('Boolean', true)),
153
- ]),
154
- ]);
155
- if ((config === null || config === void 0 ? void 0 : config.guardFieldName) && (config === null || config === void 0 ? void 0 : config.guardFieldName) !== sdk_1.GUARD_FIELD_NAME) {
156
- // generate a @map to rename field in the database
157
- guardField.addAttribute('@map', [
158
- new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('String', config.guardFieldName)),
159
- ]);
160
- }
161
- const { allowAll, denyAll, hasFieldValidation } = (0, sdk_1.analyzePolicies)(decl);
162
- if ((!allowAll && !denyAll) || hasFieldValidation) {
220
+ if (this.shouldGenerateAuxFields(decl)) {
163
221
  // generate auxiliary fields for policy check
222
+ // add an "zenstack_guard" field for dealing with boolean conditions
223
+ const guardField = model.addField(sdk_1.GUARD_FIELD_NAME, 'Boolean', [
224
+ new prisma_builder_1.FieldAttribute('@default', [
225
+ new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('Boolean', true)),
226
+ ]),
227
+ ]);
228
+ if ((config === null || config === void 0 ? void 0 : config.guardFieldName) && (config === null || config === void 0 ? void 0 : config.guardFieldName) !== sdk_1.GUARD_FIELD_NAME) {
229
+ // generate a @map to rename field in the database
230
+ guardField.addAttribute('@map', [
231
+ new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('String', config.guardFieldName)),
232
+ ]);
233
+ }
164
234
  // add an "zenstack_transaction" field for tracking records created/updated with nested writes
165
235
  const transactionField = model.addField(sdk_1.TRANSACTION_FIELD_NAME, 'String?');
166
236
  // create an index for "zenstack_transaction" field
@@ -185,6 +255,39 @@ class PrismaSchemaGenerator {
185
255
  // user defined comments pass-through
186
256
  decl.comments.forEach((c) => model.addComment(c));
187
257
  }
258
+ shouldGenerateAuxFields(decl) {
259
+ var _a;
260
+ if (decl.isView) {
261
+ return false;
262
+ }
263
+ const { allowAll, denyAll, hasFieldValidation } = (0, sdk_1.analyzePolicies)(decl);
264
+ if (!allowAll && !denyAll) {
265
+ // has policy conditions
266
+ return true;
267
+ }
268
+ if (hasFieldValidation) {
269
+ return true;
270
+ }
271
+ // check if the model is related by other models, if so
272
+ // aux fields are needed for nested queries
273
+ const root = decl.$container;
274
+ for (const model of (0, sdk_1.getDataModels)(root)) {
275
+ if (model === decl) {
276
+ continue;
277
+ }
278
+ for (const field of model.fields) {
279
+ if (((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) === decl) {
280
+ // found a relation with policies
281
+ const otherPolicies = (0, sdk_1.analyzePolicies)(model);
282
+ if ((!otherPolicies.allowAll && !otherPolicies.denyAll) || otherPolicies.hasFieldValidation) {
283
+ // the relating side has policies
284
+ return true;
285
+ }
286
+ }
287
+ }
288
+ }
289
+ return false;
290
+ }
188
291
  isPrismaAttribute(attr) {
189
292
  if (!attr.decl.ref) {
190
293
  return false;
@@ -195,11 +298,25 @@ class PrismaSchemaGenerator {
195
298
  attrDecl.name === MODEL_PASSTHROUGH_ATTR ||
196
299
  attrDecl.name === FIELD_PASSTHROUGH_ATTR);
197
300
  }
301
+ getUnsupportedFieldType(fieldType) {
302
+ if (fieldType.unsupported) {
303
+ const value = (0, utils_1.getStringLiteral)(fieldType.unsupported.value);
304
+ if (value) {
305
+ return `Unsupported("${value}")`;
306
+ }
307
+ else {
308
+ return undefined;
309
+ }
310
+ }
311
+ else {
312
+ return undefined;
313
+ }
314
+ }
198
315
  generateModelField(model, field) {
199
316
  var _a, _b;
200
- const fieldType = field.type.type || ((_b = (_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) === null || _b === void 0 ? void 0 : _b.name);
317
+ const fieldType = field.type.type || ((_b = (_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) === null || _b === void 0 ? void 0 : _b.name) || this.getUnsupportedFieldType(field.type);
201
318
  if (!fieldType) {
202
- throw new sdk_1.PluginError(`Field type is not resolved: ${field.$container.name}.${field.name}`);
319
+ throw new sdk_1.PluginError(_1.name, `Field type is not resolved: ${field.$container.name}.${field.name}`);
203
320
  }
204
321
  const type = new prisma_builder_1.ModelFieldType(fieldType, field.type.array, field.type.optional);
205
322
  const attributes = field.attributes
@@ -219,7 +336,7 @@ class PrismaSchemaGenerator {
219
336
  return new prisma_builder_1.PassThroughAttribute(text);
220
337
  }
221
338
  else {
222
- throw new sdk_1.PluginError(`Invalid arguments for ${FIELD_PASSTHROUGH_ATTR} attribute`);
339
+ throw new sdk_1.PluginError(_1.name, `Invalid arguments for ${FIELD_PASSTHROUGH_ATTR} attribute`);
223
340
  }
224
341
  }
225
342
  else {
@@ -239,7 +356,7 @@ class PrismaSchemaGenerator {
239
356
  case 'boolean':
240
357
  return new prisma_builder_1.AttributeArgValue('Boolean', node.value);
241
358
  default:
242
- throw new sdk_1.PluginError(`Unexpected literal type: ${typeof node.value}`);
359
+ throw new sdk_1.PluginError(_1.name, `Unexpected literal type: ${typeof node.value}`);
243
360
  }
244
361
  }
245
362
  else if ((0, ast_1.isArrayExpr)(node)) {
@@ -253,13 +370,13 @@ class PrismaSchemaGenerator {
253
370
  return new prisma_builder_1.AttributeArgValue('FunctionCall', this.makeFunctionCall(node));
254
371
  }
255
372
  else {
256
- throw new sdk_1.PluginError(`Unsupported attribute argument expression type: ${node.$type}`);
373
+ throw new sdk_1.PluginError(_1.name, `Unsupported attribute argument expression type: ${node.$type}`);
257
374
  }
258
375
  }
259
376
  makeFunctionCall(node) {
260
377
  return new prisma_builder_1.FunctionCall((0, sdk_1.resolved)(node.function).name, node.args.map((arg) => {
261
378
  if (!(0, ast_1.isLiteralExpr)(arg.value)) {
262
- throw new sdk_1.PluginError('Function call argument must be literal');
379
+ throw new sdk_1.PluginError(_1.name, 'Function call argument must be literal');
263
380
  }
264
381
  return new prisma_builder_1.FunctionCallArg(arg.name, arg.value.value);
265
382
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../../src/plugins/prisma/schema-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../../src/plugins/prisma/schema-generator.ts"],"names":[],"mappings":"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"}
@@ -17,11 +17,14 @@ const sdk_1 = require("@zenstackhq/sdk");
17
17
  const ast_1 = require("@zenstackhq/sdk/ast");
18
18
  const dmmf_helpers_1 = require("@zenstackhq/sdk/dmmf-helpers");
19
19
  const fs_1 = require("fs");
20
+ const langium_1 = require("langium");
20
21
  const path_1 = __importDefault(require("path"));
21
- const ts_morph_1 = require("ts-morph");
22
+ const upper_case_first_1 = require("upper-case-first");
23
+ const utils_1 = require("../../language-server/utils");
22
24
  const plugin_utils_1 = require("../plugin-utils");
23
25
  const transformer_1 = __importDefault(require("./transformer"));
24
26
  const removeDir_1 = __importDefault(require("./utils/removeDir"));
27
+ const schema_gen_1 = require("./utils/schema-gen");
25
28
  function generate(model, options, dmmf) {
26
29
  var _a, _b;
27
30
  return __awaiter(this, void 0, void 0, function* () {
@@ -35,24 +38,52 @@ function generate(model, options, dmmf) {
35
38
  output = './generated/zod';
36
39
  }
37
40
  }
41
+ output = (0, sdk_1.resolvePath)(output, options);
38
42
  yield handleGeneratorOutputValue(output);
39
43
  const prismaClientDmmf = dmmf;
40
44
  const modelOperations = prismaClientDmmf.mappings.modelOperations;
41
45
  const inputObjectTypes = prismaClientDmmf.schema.inputObjectTypes.prisma;
42
46
  const outputObjectTypes = prismaClientDmmf.schema.outputObjectTypes.prisma;
43
47
  const models = prismaClientDmmf.datamodel.models;
44
- const project = new ts_morph_1.Project();
45
- yield generateEnumSchemas(prismaClientDmmf.schema.enumTypes.prisma, (_a = prismaClientDmmf.schema.enumTypes.model) !== null && _a !== void 0 ? _a : [], project);
48
+ const project = (0, sdk_1.createProject)();
49
+ // common schemas
50
+ yield generateCommonSchemas(project, output);
51
+ // enums
52
+ yield generateEnumSchemas(prismaClientDmmf.schema.enumTypes.prisma, (_a = prismaClientDmmf.schema.enumTypes.model) !== null && _a !== void 0 ? _a : [], project, model);
46
53
  const dataSource = model.declarations.find((d) => (0, ast_1.isDataSource)(d));
47
54
  const dataSourceProvider = (0, sdk_1.getLiteral)((_b = dataSource === null || dataSource === void 0 ? void 0 : dataSource.fields.find((f) => f.name === 'provider')) === null || _b === void 0 ? void 0 : _b.value);
48
- transformer_1.default.provider = dataSourceProvider;
49
- const generatorConfigOptions = {};
50
- Object.entries(options).forEach(([k, v]) => (generatorConfigOptions[k] = v));
51
- (0, dmmf_helpers_1.addMissingInputObjectTypes)(inputObjectTypes, outputObjectTypes, models);
52
- const aggregateOperationSupport = (0, dmmf_helpers_1.resolveAggregateOperationSupport)(inputObjectTypes);
53
- yield generateObjectSchemas(inputObjectTypes, project);
54
- yield generateModelSchemas(models, modelOperations, aggregateOperationSupport, project);
55
- yield (0, sdk_1.emitProject)(project);
55
+ yield generateModelSchemas(project, model, output);
56
+ if (options.modelOnly !== true) {
57
+ // detailed object schemas referenced from input schemas
58
+ transformer_1.default.provider = dataSourceProvider;
59
+ (0, dmmf_helpers_1.addMissingInputObjectTypes)(inputObjectTypes, outputObjectTypes, models);
60
+ const aggregateOperationSupport = (0, dmmf_helpers_1.resolveAggregateOperationSupport)(inputObjectTypes);
61
+ yield generateObjectSchemas(inputObjectTypes, project, output, model);
62
+ // input schemas
63
+ const transformer = new transformer_1.default({
64
+ models,
65
+ modelOperations,
66
+ aggregateOperationSupport,
67
+ project,
68
+ zmodel: model,
69
+ });
70
+ yield transformer.generateInputSchemas();
71
+ }
72
+ // create barrel file
73
+ const exports = [`export * as models from './models'`, `export * as enums from './enums'`];
74
+ if (options.modelOnly !== true) {
75
+ exports.push(`export * as input from './input'`, `export * as objects from './objects'`);
76
+ }
77
+ project.createSourceFile(path_1.default.join(output, 'index.ts'), exports.join(';\n'), { overwrite: true });
78
+ // emit
79
+ const shouldCompile = options.compile !== false;
80
+ if (!shouldCompile || options.preserveTsFiles === true) {
81
+ // save ts files
82
+ yield (0, sdk_1.saveProject)(project);
83
+ }
84
+ if (shouldCompile) {
85
+ yield (0, sdk_1.emitProject)(project);
86
+ }
56
87
  });
57
88
  }
58
89
  exports.generate = generate;
@@ -65,7 +96,28 @@ function handleGeneratorOutputValue(output) {
65
96
  transformer_1.default.setOutputPath(output);
66
97
  });
67
98
  }
68
- function generateEnumSchemas(prismaSchemaEnum, modelSchemaEnum, project) {
99
+ function generateCommonSchemas(project, output) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ // Decimal
102
+ project.createSourceFile(path_1.default.join(output, 'common', 'index.ts'), `
103
+ import { z } from 'zod';
104
+ export const DecimalSchema = z.union([z.number(), z.string(), z.object({d: z.number().array(), e: z.number(), s: z.number()})]);
105
+
106
+ // https://stackoverflow.com/a/54487392/20415796
107
+ type OmitDistributive<T, K extends PropertyKey> = T extends any ? (T extends object ? OmitRecursively<T, K> : T) : never;
108
+ type OmitRecursively<T extends any, K extends PropertyKey> = Omit<
109
+ { [P in keyof T]: OmitDistributive<T[P], K> },
110
+ K
111
+ >;
112
+
113
+ /**
114
+ * Strips auxiliary fields recursively
115
+ */
116
+ export type Purge<T> = OmitRecursively<T, ${sdk_1.AUXILIARY_FIELDS.map((f) => "'" + f + "'").join('|')}>;
117
+ `, { overwrite: true });
118
+ });
119
+ }
120
+ function generateEnumSchemas(prismaSchemaEnum, modelSchemaEnum, project, zmodel) {
69
121
  return __awaiter(this, void 0, void 0, function* () {
70
122
  const enumTypes = [...prismaSchemaEnum, ...modelSchemaEnum];
71
123
  const enumNames = enumTypes.map((enumItem) => enumItem.name);
@@ -73,30 +125,127 @@ function generateEnumSchemas(prismaSchemaEnum, modelSchemaEnum, project) {
73
125
  const transformer = new transformer_1.default({
74
126
  enumTypes,
75
127
  project,
128
+ zmodel,
76
129
  });
77
130
  yield transformer.generateEnumSchemas();
78
131
  });
79
132
  }
80
- function generateObjectSchemas(inputObjectTypes, project) {
133
+ function generateObjectSchemas(inputObjectTypes, project, output, zmodel) {
81
134
  var _a, _b;
82
135
  return __awaiter(this, void 0, void 0, function* () {
136
+ const moduleNames = [];
83
137
  for (let i = 0; i < inputObjectTypes.length; i += 1) {
84
138
  const fields = (_a = inputObjectTypes[i]) === null || _a === void 0 ? void 0 : _a.fields;
85
139
  const name = (_b = inputObjectTypes[i]) === null || _b === void 0 ? void 0 : _b.name;
86
- const transformer = new transformer_1.default({ name, fields, project });
87
- yield transformer.generateObjectSchema();
140
+ const transformer = new transformer_1.default({ name, fields, project, zmodel });
141
+ const moduleName = transformer.generateObjectSchema();
142
+ moduleNames.push(moduleName);
88
143
  }
144
+ project.createSourceFile(path_1.default.join(output, 'objects/index.ts'), moduleNames.map((name) => `export * from './${name}';`).join('\n'), { overwrite: true });
89
145
  });
90
146
  }
91
- function generateModelSchemas(models, modelOperations, aggregateOperationSupport, project) {
147
+ function generateModelSchemas(project, zmodel, output) {
92
148
  return __awaiter(this, void 0, void 0, function* () {
93
- const transformer = new transformer_1.default({
94
- models,
95
- modelOperations,
96
- aggregateOperationSupport,
97
- project,
149
+ const schemaNames = [];
150
+ for (const dm of (0, sdk_1.getDataModels)(zmodel)) {
151
+ schemaNames.push(yield generateModelSchema(dm, project, output));
152
+ }
153
+ project.createSourceFile(path_1.default.join(output, 'models', 'index.ts'), schemaNames.map((name) => `export * from './${name}';`).join('\n'), { overwrite: true });
154
+ });
155
+ }
156
+ function generateModelSchema(model, project, output) {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ const schemaName = `${(0, upper_case_first_1.upperCaseFirst)(model.name)}.schema`;
159
+ const sf = project.createSourceFile(path_1.default.join(output, 'models', `${schemaName}.ts`), undefined, {
160
+ overwrite: true,
98
161
  });
99
- yield transformer.generateModelSchemas();
162
+ sf.replaceWithText((writer) => {
163
+ var _a, _b, _c;
164
+ const fields = model.fields.filter((field) => {
165
+ var _a;
166
+ return !sdk_1.AUXILIARY_FIELDS.includes(field.name) &&
167
+ // scalar fields only
168
+ !(0, ast_1.isDataModel)((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) &&
169
+ !(0, sdk_1.isForeignKeyField)(field);
170
+ });
171
+ writer.writeLine('/* eslint-disable */');
172
+ writer.writeLine(`import { z } from 'zod';`);
173
+ // import user-defined enums from Prisma as they might be referenced in the expressions
174
+ const importEnums = new Set();
175
+ for (const node of (0, langium_1.streamAllContents)(model)) {
176
+ if ((0, sdk_1.isEnumFieldReference)(node)) {
177
+ const field = node.target.ref;
178
+ if (!(0, utils_1.isFromStdlib)(field.$container)) {
179
+ importEnums.add(field.$container.name);
180
+ }
181
+ }
182
+ }
183
+ if (importEnums.size > 0) {
184
+ const prismaImport = (0, sdk_1.getPrismaClientImportSpec)(model.$container, path_1.default.join(output, 'models'));
185
+ writer.writeLine(`import { ${[...importEnums].join(', ')} } from '${prismaImport}';`);
186
+ }
187
+ // import enum schemas
188
+ for (const field of fields) {
189
+ if (((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) && (0, ast_1.isEnum)((_b = field.type.reference) === null || _b === void 0 ? void 0 : _b.ref)) {
190
+ const name = (0, upper_case_first_1.upperCaseFirst)((_c = field.type.reference) === null || _c === void 0 ? void 0 : _c.ref.name);
191
+ writer.writeLine(`import { ${name}Schema } from '../enums/${name}.schema';`);
192
+ }
193
+ }
194
+ // import Decimal
195
+ if (fields.some((field) => field.type.type === 'Decimal')) {
196
+ writer.writeLine(`import { DecimalSchema } from '../common';`);
197
+ }
198
+ // create base schema
199
+ writer.write(`const baseSchema = z.object(`);
200
+ writer.inlineBlock(() => {
201
+ fields.forEach((field) => {
202
+ writer.writeLine(`${field.name}: ${(0, schema_gen_1.makeFieldSchema)(field)},`);
203
+ });
204
+ });
205
+ writer.writeLine(');');
206
+ // compile "@@validate" to ".refine"
207
+ const refinements = (0, schema_gen_1.makeValidationRefinements)(model);
208
+ if (refinements.length > 0) {
209
+ writer.writeLine(`function refine(schema: z.ZodType) { return schema${refinements.join('\n')}; }`);
210
+ }
211
+ // model schema
212
+ let modelSchema = 'baseSchema';
213
+ const fieldsToOmit = fields.filter((field) => (0, sdk_1.hasAttribute)(field, '@omit'));
214
+ if (fieldsToOmit.length > 0) {
215
+ modelSchema = makeOmit(modelSchema, fieldsToOmit.map((f) => f.name));
216
+ }
217
+ if (refinements.length > 0) {
218
+ modelSchema = `refine(${modelSchema})`;
219
+ }
220
+ writer.writeLine(`export const ${(0, upper_case_first_1.upperCaseFirst)(model.name)}Schema = ${modelSchema};`);
221
+ // create schema
222
+ let createSchema = 'baseSchema';
223
+ const fieldsWithDefault = fields.filter((field) => (0, sdk_1.hasAttribute)(field, '@default') || (0, sdk_1.hasAttribute)(field, '@updatedAt') || field.type.array);
224
+ if (fieldsWithDefault.length > 0) {
225
+ createSchema = makePartial(createSchema, fieldsWithDefault.map((f) => f.name));
226
+ }
227
+ if (refinements.length > 0) {
228
+ createSchema = `refine(${createSchema})`;
229
+ }
230
+ writer.writeLine(`export const ${(0, upper_case_first_1.upperCaseFirst)(model.name)}CreateSchema = ${createSchema};`);
231
+ // update schema
232
+ let updateSchema = 'baseSchema.partial()';
233
+ if (refinements.length > 0) {
234
+ updateSchema = `refine(${updateSchema})`;
235
+ }
236
+ writer.writeLine(`export const ${(0, upper_case_first_1.upperCaseFirst)(model.name)}UpdateSchema = ${updateSchema};`);
237
+ });
238
+ return schemaName;
100
239
  });
101
240
  }
241
+ function makePartial(schema, fields) {
242
+ return `${schema}.partial({
243
+ ${fields.map((f) => `${f}: true`).join(', ')},
244
+ })`;
245
+ }
246
+ function makeOmit(schema, fields) {
247
+ return `${schema}.omit({
248
+ ${fields.map((f) => `${f}: true`).join(', ')},
249
+ })`;
250
+ }
102
251
  //# sourceMappingURL=generator.js.map