zenstack 1.0.16 → 1.1.1

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
@@ -1,14 +1,16 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ExpressionWriter = void 0;
3
+ exports.ExpressionWriter = exports.FALSE = exports.TRUE = void 0;
7
4
  const ast_1 = require("@zenstackhq/language/ast");
8
5
  const sdk_1 = require("@zenstackhq/sdk");
6
+ const lower_case_first_1 = require("lower-case-first");
7
+ const _1 = require(".");
9
8
  const ast_utils_1 = require("../../utils/ast-utils");
10
- const typescript_expression_transformer_1 = __importDefault(require("./typescript-expression-transformer"));
11
- const utils_1 = require("./utils");
9
+ const typescript_expression_transformer_1 = require("../../utils/typescript-expression-transformer");
10
+ // { OR: [] } filters to nothing, { AND: [] } includes everything
11
+ // https://www.prisma.io/docs/concepts/components/prisma-client/null-and-undefined#the-effect-of-null-and-undefined-on-conditionals
12
+ exports.TRUE = '{ AND: [] }';
13
+ exports.FALSE = '{ OR: [] }';
12
14
  /**
13
15
  * Utility for writing ZModel expression as Prisma query argument objects into a ts-morph writer
14
16
  */
@@ -21,14 +23,19 @@ class ExpressionWriter {
21
23
  constructor(writer, isPostGuard = false) {
22
24
  this.writer = writer;
23
25
  this.isPostGuard = isPostGuard;
24
- this.plainExprBuilder = new typescript_expression_transformer_1.default(this.isPostGuard);
26
+ this.plainExprBuilder = new typescript_expression_transformer_1.TypeScriptExpressionTransformer({
27
+ context: sdk_1.ExpressionContext.AccessPolicy,
28
+ isPostGuard: this.isPostGuard,
29
+ });
25
30
  }
26
31
  /**
27
32
  * Writes the given ZModel expression.
28
33
  */
29
34
  write(expr) {
30
35
  switch (expr.$type) {
31
- case ast_1.LiteralExpr:
36
+ case ast_1.StringLiteral:
37
+ case ast_1.NumberLiteral:
38
+ case ast_1.BooleanLiteral:
32
39
  this.writeLiteral(expr);
33
40
  break;
34
41
  case ast_1.UnaryExpr:
@@ -43,6 +50,9 @@ class ExpressionWriter {
43
50
  case ast_1.MemberAccessExpr:
44
51
  this.writeMemberAccess(expr);
45
52
  break;
53
+ case ast_1.InvocationExpr:
54
+ this.writeInvocation(expr);
55
+ break;
46
56
  default:
47
57
  throw new Error(`Not implemented: ${expr.$type}`);
48
58
  }
@@ -59,15 +69,21 @@ class ExpressionWriter {
59
69
  }
60
70
  }
61
71
  writeMemberAccess(expr) {
62
- this.block(() => {
63
- // must be a boolean member
64
- this.writeFieldCondition(expr.operand, () => {
65
- this.block(() => {
66
- var _a;
67
- this.writer.write(`${(_a = expr.member.ref) === null || _a === void 0 ? void 0 : _a.name}: true`);
72
+ if (this.isAuthOrAuthMemberAccess(expr)) {
73
+ // member access of `auth()`, generate plain expression
74
+ this.guard(() => this.plain(expr), true);
75
+ }
76
+ else {
77
+ this.block(() => {
78
+ // must be a boolean member
79
+ this.writeFieldCondition(expr.operand, () => {
80
+ this.block(() => {
81
+ var _a;
82
+ this.writer.write(`${(_a = expr.member.ref) === null || _a === void 0 ? void 0 : _a.name}: true`);
83
+ });
68
84
  });
69
- }, 'is');
70
- });
85
+ });
86
+ }
71
87
  }
72
88
  writeExprList(exprs) {
73
89
  this.writer.write('[');
@@ -93,6 +109,9 @@ class ExpressionWriter {
93
109
  case '<=':
94
110
  this.writeComparison(expr, expr.operator);
95
111
  break;
112
+ case 'in':
113
+ this.writeIn(expr);
114
+ break;
96
115
  case '?':
97
116
  case '!':
98
117
  case '^':
@@ -100,6 +119,43 @@ class ExpressionWriter {
100
119
  break;
101
120
  }
102
121
  }
122
+ writeIn(expr) {
123
+ const leftIsFieldAccess = this.isFieldAccess(expr.left);
124
+ const rightIsFieldAccess = this.isFieldAccess(expr.right);
125
+ if (!leftIsFieldAccess && !rightIsFieldAccess) {
126
+ // 'in' without referencing fields
127
+ this.guard(() => this.plain(expr));
128
+ }
129
+ else {
130
+ this.block(() => {
131
+ var _a, _b;
132
+ if (leftIsFieldAccess && !rightIsFieldAccess) {
133
+ // 'in' with left referencing a field, right is an array literal
134
+ this.writeFieldCondition(expr.left, () => {
135
+ this.plain(expr.right);
136
+ }, 'in');
137
+ }
138
+ else if (!leftIsFieldAccess && rightIsFieldAccess) {
139
+ // 'in' with right referencing an array field, left is a literal
140
+ // transform it into a 'has' filter
141
+ this.writeFieldCondition(expr.right, () => {
142
+ this.plain(expr.left);
143
+ }, 'has');
144
+ }
145
+ else if ((0, sdk_1.isDataModelFieldReference)(expr.left) &&
146
+ (0, sdk_1.isDataModelFieldReference)(expr.right) &&
147
+ ((_a = expr.left.target.ref) === null || _a === void 0 ? void 0 : _a.$container) === ((_b = expr.right.target.ref) === null || _b === void 0 ? void 0 : _b.$container)) {
148
+ // comparing two fields of the same model
149
+ this.writeFieldCondition(expr.left, () => {
150
+ this.writeFieldReference(expr.right);
151
+ }, 'in');
152
+ }
153
+ else {
154
+ throw new sdk_1.PluginError(_1.name, '"in" operator cannot be used with field references on both sides');
155
+ }
156
+ });
157
+ }
158
+ }
103
159
  writeCollectionPredicate(expr, operator) {
104
160
  this.block(() => {
105
161
  this.writeFieldCondition(expr.left, () => {
@@ -112,7 +168,7 @@ class ExpressionWriter {
112
168
  return true;
113
169
  }
114
170
  if ((0, ast_1.isMemberAccessExpr)(expr)) {
115
- if ((0, utils_1.isFutureExpr)(expr.operand) && this.isPostGuard) {
171
+ if ((0, sdk_1.isFutureExpr)(expr.operand) && this.isPostGuard) {
116
172
  // when writing for post-update, future().field.x is a field access
117
173
  return true;
118
174
  }
@@ -120,32 +176,42 @@ class ExpressionWriter {
120
176
  return this.isFieldAccess(expr.operand);
121
177
  }
122
178
  }
123
- if ((0, ast_1.isReferenceExpr)(expr) && (0, ast_1.isDataModelField)(expr.target.ref) && !this.isPostGuard) {
179
+ if ((0, sdk_1.isDataModelFieldReference)(expr) && !this.isPostGuard) {
124
180
  return true;
125
181
  }
126
182
  return false;
127
183
  }
128
- guard(write) {
129
- this.writer.write(`${sdk_1.GUARD_FIELD_NAME}: `);
130
- write();
184
+ guard(condition, cast = false) {
185
+ if (cast) {
186
+ this.writer.write('!!');
187
+ condition();
188
+ }
189
+ else {
190
+ condition();
191
+ }
192
+ this.writer.write(` ? ${exports.TRUE} : ${exports.FALSE}`);
131
193
  }
132
194
  plain(expr) {
133
- this.writer.write(this.plainExprBuilder.transform(expr));
195
+ try {
196
+ this.writer.write(this.plainExprBuilder.transform(expr));
197
+ }
198
+ catch (err) {
199
+ if (err instanceof typescript_expression_transformer_1.TypeScriptExpressionTransformerError) {
200
+ throw new sdk_1.PluginError(_1.name, err.message);
201
+ }
202
+ else {
203
+ throw err;
204
+ }
205
+ }
134
206
  }
135
207
  writeComparison(expr, operator) {
208
+ var _a;
136
209
  const leftIsFieldAccess = this.isFieldAccess(expr.left);
137
210
  const rightIsFieldAccess = this.isFieldAccess(expr.right);
138
- if (leftIsFieldAccess && rightIsFieldAccess) {
139
- throw new sdk_1.PluginError(`Comparison between fields are not supported yet`);
140
- }
141
211
  if (!leftIsFieldAccess && !rightIsFieldAccess) {
142
212
  // compile down to a plain expression
143
- this.block(() => {
144
- this.guard(() => {
145
- this.plain(expr.left);
146
- this.writer.write(' ' + operator + ' ');
147
- this.plain(expr.right);
148
- });
213
+ this.guard(() => {
214
+ this.plain(expr);
149
215
  });
150
216
  return;
151
217
  }
@@ -160,7 +226,7 @@ class ExpressionWriter {
160
226
  operand = expr.left;
161
227
  operator = this.negateOperator(operator);
162
228
  }
163
- if ((0, ast_1.isMemberAccessExpr)(fieldAccess) && (0, utils_1.isFutureExpr)(fieldAccess.operand)) {
229
+ if ((0, ast_1.isMemberAccessExpr)(fieldAccess) && (0, sdk_1.isFutureExpr)(fieldAccess.operand)) {
164
230
  // future().field should be treated as the "field" directly, so we
165
231
  // strip 'future().' and synthesize a reference expr
166
232
  fieldAccess = {
@@ -168,67 +234,156 @@ class ExpressionWriter {
168
234
  $container: fieldAccess.$container,
169
235
  target: fieldAccess.member,
170
236
  $resolvedType: fieldAccess.$resolvedType,
237
+ $future: true,
171
238
  };
172
239
  }
173
- // if the operand refers to auth(), need to build a guard to avoid
174
- // using undefined user as filter (which means no filter to Prisma)
175
- // if auth() evaluates falsy, just treat the condition as false
176
- if (this.isAuthOrAuthMemberAccess(operand)) {
177
- this.writer.write(`!user ? { ${sdk_1.GUARD_FIELD_NAME}: false } : `);
240
+ // guard member access of `auth()` with null check
241
+ if (this.isAuthOrAuthMemberAccess(operand) && !((_a = fieldAccess.$resolvedType) === null || _a === void 0 ? void 0 : _a.nullable)) {
242
+ try {
243
+ this.writer.write(`(${this.plainExprBuilder.transform(operand)} == null) ? ${
244
+ // auth().x != user.x is true when auth().x is null and user is not nullable
245
+ // other expressions are evaluated to false when null is involved
246
+ operator === '!=' ? exports.TRUE : exports.FALSE} : `);
247
+ }
248
+ catch (err) {
249
+ if (err instanceof typescript_expression_transformer_1.TypeScriptExpressionTransformerError) {
250
+ throw new sdk_1.PluginError(_1.name, err.message);
251
+ }
252
+ else {
253
+ throw err;
254
+ }
255
+ }
178
256
  }
179
257
  this.block(() => {
180
258
  this.writeFieldCondition(fieldAccess, () => {
181
259
  this.block(() => {
260
+ var _a;
182
261
  const dataModel = this.isModelTyped(fieldAccess);
183
- if (dataModel) {
184
- const idField = (0, ast_utils_1.getIdField)(dataModel);
185
- if (!idField) {
186
- throw new sdk_1.PluginError(`Data model ${dataModel.name} does not have an id field`);
262
+ if (dataModel && (0, ast_utils_1.isAuthInvocation)(operand)) {
263
+ // right now this branch only serves comparison with `auth`, like
264
+ // @@allow('all', owner == auth())
265
+ const idFields = this.requireIdFields(dataModel);
266
+ if (operator !== '==' && operator !== '!=') {
267
+ throw new sdk_1.PluginError(_1.name, 'Only == and != operators are allowed');
268
+ }
269
+ if (!(0, ast_1.isThisExpr)(fieldAccess)) {
270
+ this.writer.writeLine(operator === '==' ? 'is:' : 'isNot:');
271
+ const fieldIsNullable = !!((_a = fieldAccess.$resolvedType) === null || _a === void 0 ? void 0 : _a.nullable);
272
+ if (fieldIsNullable) {
273
+ // if field is nullable, we can generate "null" check condition
274
+ this.writer.write(`(user == null) ? null : `);
275
+ }
187
276
  }
188
- // comparing with an object, convert to "id" comparison instead
189
- this.writer.write(`${idField.name}: `);
190
277
  this.block(() => {
191
- this.writeOperator(operator, () => {
192
- // operand ? operand.field : null
193
- this.writer.write('(');
194
- this.plain(operand);
195
- this.writer.write(' ? ');
196
- this.plain(operand);
197
- this.writer.write(`.${idField.name}`);
198
- this.writer.write(' : null');
199
- this.writer.write(')');
278
+ idFields.forEach((idField, idx) => {
279
+ const writeIdsCheck = () => {
280
+ // id: user.id
281
+ this.writer.write(`${idField.name}:`);
282
+ this.plain(operand);
283
+ this.writer.write(`.${idField.name}`);
284
+ if (idx !== idFields.length - 1) {
285
+ this.writer.write(',');
286
+ }
287
+ };
288
+ if ((0, ast_1.isThisExpr)(fieldAccess) && operator === '!=') {
289
+ // wrap a not
290
+ this.writer.writeLine('NOT:');
291
+ this.block(() => writeIdsCheck());
292
+ }
293
+ else {
294
+ writeIdsCheck();
295
+ }
200
296
  });
201
297
  });
202
298
  }
203
299
  else {
204
- this.writeOperator(operator, () => {
205
- this.plain(operand);
206
- });
300
+ if (this.equivalentRefs(fieldAccess, operand)) {
301
+ // f == f or f != f
302
+ // this == this or this != this
303
+ this.writer.write(operator === '!=' ? exports.TRUE : exports.FALSE);
304
+ }
305
+ else {
306
+ this.writeOperator(operator, fieldAccess, () => {
307
+ if ((0, sdk_1.isDataModelFieldReference)(operand) && !this.isPostGuard) {
308
+ // if operand is a field reference and we're not generating for post-update guard,
309
+ // we should generate a field reference (comparing fields in the same model)
310
+ this.writeFieldReference(operand);
311
+ }
312
+ else {
313
+ this.plain(operand);
314
+ }
315
+ });
316
+ }
207
317
  }
208
- },
209
- // "this" expression is compiled away (to .id access), so we should
210
- // avoid generating a new layer
211
- !(0, ast_1.isThisExpr)(fieldAccess));
212
- }, 'is');
213
- });
318
+ }, !(0, ast_1.isThisExpr)(fieldAccess));
319
+ });
320
+ },
321
+ // "this" expression is compiled away (to .id access), so we should
322
+ // avoid generating a new layer
323
+ !(0, ast_1.isThisExpr)(fieldAccess));
324
+ }
325
+ requireIdFields(dataModel) {
326
+ const idFields = (0, ast_utils_1.getIdFields)(dataModel);
327
+ if (!idFields || idFields.length === 0) {
328
+ throw new sdk_1.PluginError(_1.name, `Data model ${dataModel.name} does not have an id field`);
329
+ }
330
+ return idFields;
331
+ }
332
+ equivalentRefs(expr1, expr2) {
333
+ if ((0, ast_1.isThisExpr)(expr1) && (0, ast_1.isThisExpr)(expr2)) {
334
+ return true;
335
+ }
336
+ if ((0, ast_1.isReferenceExpr)(expr1) &&
337
+ (0, ast_1.isReferenceExpr)(expr2) &&
338
+ expr1.target.ref === expr2.target.ref &&
339
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
340
+ expr1.$future === expr2.$future // either both future or both not
341
+ ) {
342
+ return true;
343
+ }
344
+ return false;
345
+ }
346
+ // https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#compare-columns-in-the-same-table
347
+ writeFieldReference(expr) {
348
+ if (!expr.target.ref) {
349
+ throw new sdk_1.PluginError(_1.name, `Unresolved reference "${expr.target.$refText}"`);
350
+ }
351
+ const containingModel = expr.target.ref.$container;
352
+ this.writer.write(`db.${(0, lower_case_first_1.lowerCaseFirst)(containingModel.name)}.fields.${expr.target.ref.name}`);
214
353
  }
215
354
  isAuthOrAuthMemberAccess(expr) {
216
355
  return (0, ast_utils_1.isAuthInvocation)(expr) || ((0, ast_1.isMemberAccessExpr)(expr) && (0, ast_utils_1.isAuthInvocation)(expr.operand));
217
356
  }
218
- writeOperator(operator, writeOperand) {
219
- if (operator === '!=') {
220
- // wrap a 'not'
221
- this.writer.write('not: ');
222
- this.block(() => {
223
- this.writeOperator('==', writeOperand);
224
- });
357
+ writeOperator(operator, fieldAccess, writeOperand) {
358
+ var _a;
359
+ if ((0, ast_1.isDataModel)((_a = fieldAccess.$resolvedType) === null || _a === void 0 ? void 0 : _a.decl)) {
360
+ if (operator === '==') {
361
+ this.writer.write('is: ');
362
+ }
363
+ else if (operator === '!=') {
364
+ this.writer.write('isNot: ');
365
+ }
366
+ else {
367
+ throw new sdk_1.PluginError(_1.name, 'Only == and != operators are allowed for data model comparison');
368
+ }
369
+ writeOperand();
225
370
  }
226
371
  else {
227
- this.writer.write(`${this.mapOperator(operator)}: `);
228
- writeOperand();
372
+ if (operator === '!=') {
373
+ // wrap a 'not'
374
+ this.writer.write('not: ');
375
+ this.block(() => {
376
+ this.writer.write(`${this.mapOperator('==')}: `);
377
+ writeOperand();
378
+ });
379
+ }
380
+ else {
381
+ this.writer.write(`${this.mapOperator(operator)}: `);
382
+ writeOperand();
383
+ }
229
384
  }
230
385
  }
231
- writeFieldCondition(fieldAccess, writeCondition, relationOp) {
386
+ writeFieldCondition(fieldAccess, writeCondition, filterOp, extraArgs) {
232
387
  var _a, _b, _c;
233
388
  let selector;
234
389
  let operand;
@@ -241,7 +396,7 @@ class ExpressionWriter {
241
396
  selector = (_a = fieldAccess.target.ref) === null || _a === void 0 ? void 0 : _a.name;
242
397
  }
243
398
  else if ((0, ast_1.isMemberAccessExpr)(fieldAccess)) {
244
- if ((0, utils_1.isFutureExpr)(fieldAccess.operand)) {
399
+ if ((0, sdk_1.isFutureExpr)(fieldAccess.operand)) {
245
400
  // future().field should be treated as the "field"
246
401
  selector = (_b = fieldAccess.member.ref) === null || _b === void 0 ? void 0 : _b.name;
247
402
  }
@@ -251,45 +406,40 @@ class ExpressionWriter {
251
406
  }
252
407
  }
253
408
  else {
254
- throw new sdk_1.PluginError(`Unsupported expression type: ${fieldAccess.$type}`);
409
+ throw new sdk_1.PluginError(_1.name, `Unsupported expression type: ${fieldAccess.$type}`);
255
410
  }
256
411
  if (!selector) {
257
- throw new sdk_1.PluginError(`Failed to write FieldAccess expression`);
412
+ throw new sdk_1.PluginError(_1.name, `Failed to write FieldAccess expression`);
258
413
  }
414
+ const writerFilterOutput = () => {
415
+ this.writer.write(selector + ': ');
416
+ if (filterOp) {
417
+ this.block(() => {
418
+ this.writer.write(`${filterOp}: `);
419
+ writeCondition();
420
+ if (extraArgs) {
421
+ for (const [k, v] of Object.entries(extraArgs)) {
422
+ this.writer.write(`,\n${k}: `);
423
+ this.plain(v);
424
+ }
425
+ }
426
+ });
427
+ }
428
+ else {
429
+ writeCondition();
430
+ }
431
+ };
259
432
  if (operand) {
260
433
  // member access expression
261
434
  this.writeFieldCondition(operand, () => {
262
- this.block(() => {
263
- this.writer.write(selector + ': ');
264
- if (this.isModelTyped(fieldAccess)) {
265
- // expression is resolved to a model, generate relation query
266
- this.block(() => {
267
- this.writer.write(`${relationOp}: `);
268
- writeCondition();
269
- });
270
- }
271
- else {
272
- // generate plain query
273
- writeCondition();
274
- }
275
- },
435
+ this.block(writerFilterOutput,
276
436
  // if operand is "this", it doesn't really generate a new layer of query,
277
437
  // so we should avoid generating a new block
278
438
  !(0, ast_1.isThisExpr)(operand));
279
- }, 'is');
280
- }
281
- else if (this.isModelTyped(fieldAccess)) {
282
- // reference resolved to a model, generate relation query
283
- this.writer.write(selector + ': ');
284
- this.block(() => {
285
- this.writer.write(`${relationOp}: `);
286
- writeCondition();
287
439
  });
288
440
  }
289
441
  else {
290
- // generate a plain query
291
- this.writer.write(selector + ': ');
292
- writeCondition();
442
+ writerFilterOutput();
293
443
  }
294
444
  }
295
445
  block(write, condition = true) {
@@ -335,14 +485,41 @@ class ExpressionWriter {
335
485
  }
336
486
  }
337
487
  writeLogical(expr, operator) {
338
- this.block(() => {
339
- this.writer.write(`${operator === '&&' ? 'AND' : 'OR'}: `);
340
- this.writeExprList([expr.left, expr.right]);
341
- });
488
+ // TODO: do we need short-circuit for logical operators?
489
+ if (operator === '&&') {
490
+ // // && short-circuit: left && right -> left ? right : FALSE
491
+ // if (!this.hasFieldAccess(expr.left)) {
492
+ // this.plain(expr.left);
493
+ // this.writer.write(' ? ');
494
+ // this.write(expr.right);
495
+ // this.writer.write(' : ');
496
+ // this.block(() => this.guard(() => this.writer.write('false')));
497
+ // } else {
498
+ this.block(() => {
499
+ this.writer.write('AND:');
500
+ this.writeExprList([expr.left, expr.right]);
501
+ });
502
+ // }
503
+ }
504
+ else {
505
+ // // || short-circuit: left || right -> left ? TRUE : right
506
+ // if (!this.hasFieldAccess(expr.left)) {
507
+ // this.plain(expr.left);
508
+ // this.writer.write(' ? ');
509
+ // this.block(() => this.guard(() => this.writer.write('true')));
510
+ // this.writer.write(' : ');
511
+ // this.write(expr.right);
512
+ // } else {
513
+ this.block(() => {
514
+ this.writer.write('OR:');
515
+ this.writeExprList([expr.left, expr.right]);
516
+ });
517
+ // }
518
+ }
342
519
  }
343
520
  writeUnary(expr) {
344
521
  if (expr.operator !== '!') {
345
- throw new sdk_1.PluginError(`Unary operator "${expr.operator}" is not supported`);
522
+ throw new sdk_1.PluginError(_1.name, `Unary operator "${expr.operator}" is not supported`);
346
523
  }
347
524
  this.block(() => {
348
525
  this.writer.write('NOT: ');
@@ -350,11 +527,53 @@ class ExpressionWriter {
350
527
  });
351
528
  }
352
529
  writeLiteral(expr) {
353
- this.block(() => {
530
+ if (expr.value === true) {
531
+ this.writer.write(exports.TRUE);
532
+ }
533
+ else if (expr.value === false) {
534
+ this.writer.write(exports.FALSE);
535
+ }
536
+ else {
354
537
  this.guard(() => {
355
538
  this.plain(expr);
356
539
  });
357
- });
540
+ }
541
+ }
542
+ writeInvocation(expr) {
543
+ var _a, _b;
544
+ const funcDecl = expr.function.ref;
545
+ if (!funcDecl) {
546
+ throw new sdk_1.PluginError(_1.name, `Failed to resolve function declaration`);
547
+ }
548
+ const functionAllowedContext = (0, sdk_1.getFunctionExpressionContext)(funcDecl);
549
+ if (functionAllowedContext.includes(sdk_1.ExpressionContext.AccessPolicy) ||
550
+ functionAllowedContext.includes(sdk_1.ExpressionContext.ValidationRule)) {
551
+ if (!expr.args.some((arg) => this.isFieldAccess(arg.value))) {
552
+ // filter functions without referencing fields
553
+ this.guard(() => this.plain(expr));
554
+ return;
555
+ }
556
+ let valueArg = (_a = expr.args[1]) === null || _a === void 0 ? void 0 : _a.value;
557
+ // isEmpty function is zero arity, it's mapped to a boolean literal
558
+ if (funcDecl.name === 'isEmpty') {
559
+ valueArg = { $type: ast_1.BooleanLiteral, value: true };
560
+ }
561
+ // contains function has a 3rd argument that indicates whether the comparison should be case-insensitive
562
+ let extraArgs = undefined;
563
+ if (funcDecl.name === 'contains') {
564
+ if ((0, sdk_1.getLiteral)((_b = expr.args[2]) === null || _b === void 0 ? void 0 : _b.value) === true) {
565
+ extraArgs = { mode: { $type: ast_1.StringLiteral, value: 'insensitive' } };
566
+ }
567
+ }
568
+ this.block(() => {
569
+ this.writeFieldCondition(expr.args[0].value, () => {
570
+ this.plain(valueArg);
571
+ }, funcDecl.name, extraArgs);
572
+ });
573
+ }
574
+ else {
575
+ throw new sdk_1.PluginError(_1.name, `Unsupported function ${funcDecl.name}`);
576
+ }
358
577
  }
359
578
  }
360
579
  exports.ExpressionWriter = ExpressionWriter;
@@ -1 +1 @@
1
- {"version":3,"file":"expression-writer.js","sourceRoot":"","sources":["../../../src/plugins/access-policy/expression-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression-writer.js","sourceRoot":"","sources":["../../../src/plugins/access-policy/expression-writer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Model } from '@zenstackhq/language/ast';
2
- import { PluginOptions } from '@zenstackhq/sdk';
1
+ import { PluginFunction } from '@zenstackhq/sdk';
3
2
  export declare const name = "Access Policy";
4
- export default function run(model: Model, options: PluginOptions): Promise<void>;
3
+ declare const run: PluginFunction;
4
+ export default run;