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

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 (84) hide show
  1. package/README.md +53 -20
  2. package/cli/cli-util.d.ts +4 -1
  3. package/cli/cli-util.js +62 -8
  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.js +22 -18
  10. package/cli/plugin-runner.js.map +1 -1
  11. package/language-server/utils.d.ts +1 -5
  12. package/language-server/utils.js +3 -20
  13. package/language-server/utils.js.map +1 -1
  14. package/language-server/validator/datamodel-validator.d.ts +7 -0
  15. package/language-server/validator/datamodel-validator.js +64 -19
  16. package/language-server/validator/datamodel-validator.js.map +1 -1
  17. package/language-server/validator/expression-validator.js +7 -7
  18. package/language-server/validator/expression-validator.js.map +1 -1
  19. package/language-server/validator/schema-validator.d.ts +4 -1
  20. package/language-server/validator/schema-validator.js +25 -5
  21. package/language-server/validator/schema-validator.js.map +1 -1
  22. package/language-server/validator/utils.d.ts +1 -1
  23. package/language-server/validator/utils.js +10 -1
  24. package/language-server/validator/utils.js.map +1 -1
  25. package/language-server/validator/zmodel-validator.d.ts +2 -0
  26. package/language-server/validator/zmodel-validator.js +5 -1
  27. package/language-server/validator/zmodel-validator.js.map +1 -1
  28. package/language-server/zmodel-code-action.d.ts +2 -1
  29. package/language-server/zmodel-code-action.js +19 -10
  30. package/language-server/zmodel-code-action.js.map +1 -1
  31. package/language-server/zmodel-definition.d.ts +7 -0
  32. package/language-server/zmodel-definition.js +31 -0
  33. package/language-server/zmodel-definition.js.map +1 -0
  34. package/language-server/zmodel-formatter.js +2 -2
  35. package/language-server/zmodel-formatter.js.map +1 -1
  36. package/language-server/zmodel-linker.d.ts +1 -0
  37. package/language-server/zmodel-linker.js +28 -6
  38. package/language-server/zmodel-linker.js.map +1 -1
  39. package/language-server/zmodel-module.js +4 -1
  40. package/language-server/zmodel-module.js.map +1 -1
  41. package/language-server/zmodel-scope.d.ts +7 -1
  42. package/language-server/zmodel-scope.js +57 -1
  43. package/language-server/zmodel-scope.js.map +1 -1
  44. package/package.json +18 -13
  45. package/plugins/access-policy/expression-writer.js +37 -12
  46. package/plugins/access-policy/expression-writer.js.map +1 -1
  47. package/plugins/access-policy/policy-guard-generator.js +92 -69
  48. package/plugins/access-policy/policy-guard-generator.js.map +1 -1
  49. package/plugins/access-policy/typescript-expression-transformer.d.ts +3 -3
  50. package/plugins/access-policy/typescript-expression-transformer.js +84 -25
  51. package/plugins/access-policy/typescript-expression-transformer.js.map +1 -1
  52. package/plugins/access-policy/utils.d.ts +2 -2
  53. package/plugins/access-policy/utils.js +2 -2
  54. package/plugins/access-policy/utils.js.map +1 -1
  55. package/plugins/access-policy/zod-schema-generator.d.ts +1 -1
  56. package/plugins/access-policy/zod-schema-generator.js +5 -2
  57. package/plugins/access-policy/zod-schema-generator.js.map +1 -1
  58. package/plugins/model-meta/index.js +17 -28
  59. package/plugins/model-meta/index.js.map +1 -1
  60. package/plugins/plugin-utils.d.ts +0 -4
  61. package/plugins/plugin-utils.js +13 -18
  62. package/plugins/plugin-utils.js.map +1 -1
  63. package/plugins/prisma/index.d.ts +1 -1
  64. package/plugins/prisma/prisma-builder.d.ts +3 -2
  65. package/plugins/prisma/prisma-builder.js +20 -5
  66. package/plugins/prisma/prisma-builder.js.map +1 -1
  67. package/plugins/prisma/schema-generator.d.ts +4 -1
  68. package/plugins/prisma/schema-generator.js +118 -30
  69. package/plugins/prisma/schema-generator.js.map +1 -1
  70. package/plugins/zod/generator.js +16 -6
  71. package/plugins/zod/generator.js.map +1 -1
  72. package/plugins/zod/transformer.d.ts +2 -2
  73. package/plugins/zod/transformer.js +56 -48
  74. package/plugins/zod/transformer.js.map +1 -1
  75. package/res/starter.zmodel +4 -4
  76. package/res/stdlib.zmodel +74 -61
  77. package/telemetry.d.ts +1 -1
  78. package/telemetry.js +2 -2
  79. package/telemetry.js.map +1 -1
  80. package/utils/ast-utils.d.ts +22 -2
  81. package/utils/ast-utils.js +157 -4
  82. package/utils/ast-utils.js.map +1 -1
  83. package/utils/version-utils.js +1 -0
  84. package/utils/version-utils.js.map +1 -1
package/res/stdlib.zmodel CHANGED
@@ -1,39 +1,39 @@
1
- /*
1
+ /**
2
2
  * Enum representing referential integrity related actions
3
3
  */
4
4
  enum ReferentialAction {
5
- /*
5
+ /**
6
6
  * Used with "onDelete": deleting a referenced record will trigger the deletion of referencing record.
7
7
  * Used with "onUpdate": updates the relation scalar fields if the referenced scalar fields of the dependent record are updated.
8
8
  */
9
9
  Cascade
10
10
 
11
- /*
11
+ /**
12
12
  * Used with "onDelete": prevents the deletion if any referencing records exist.
13
13
  * Used with "onUpdate": prevents the identifier of a referenced record from being changed.
14
14
  */
15
15
  Restrict
16
16
 
17
- /*
17
+ /**
18
18
  * Similar to 'Restrict', the difference between the two is dependent on the database being used.
19
19
  * See details: https://www.prisma.io/docs/concepts/components/prisma-schema/relations/referential-actions#noaction
20
20
  */
21
21
  NoAction
22
22
 
23
- /*
23
+ /**
24
24
  * Used with "onDelete": the scalar field of the referencing object will be set to NULL.
25
25
  * Used with "onUpdate": when updating the identifier of a referenced object, the scalar fields of the referencing objects will be set to NULL.
26
26
  */
27
27
  SetNull
28
28
 
29
- /*
29
+ /**
30
30
  * Used with "onDelete": the scalar field of the referencing object will be set to the fields default value.
31
31
  * Used with "onUpdate": the scalar field of the referencing object will be set to the fields default value.
32
32
  */
33
33
  SetDefault
34
34
  }
35
35
 
36
- /*
36
+ /**
37
37
  * Enum representing all possible field types
38
38
  */
39
39
  enum AttributeTargetField {
@@ -49,44 +49,44 @@ enum AttributeTargetField {
49
49
  ModelField
50
50
  }
51
51
 
52
- /*
52
+ /**
53
53
  * Reads value from an environment variable.
54
54
  */
55
55
  function env(name: String): String {
56
56
  }
57
57
 
58
- /*
58
+ /**
59
59
  * Gets the current login user.
60
60
  */
61
61
  function auth(): Any {
62
62
  }
63
63
 
64
- /*
64
+ /**
65
65
  * Gets current date-time (as DateTime type).
66
66
  */
67
67
  function now(): DateTime {
68
68
  }
69
69
 
70
- /*
70
+ /**
71
71
  * Generates a globally unique identifier based on the UUID specs.
72
72
  */
73
73
  function uuid(): String {
74
74
  }
75
75
 
76
- /*
76
+ /**
77
77
  * Generates a globally unique identifier based on the CUID spec.
78
78
  */
79
79
  function cuid(): String {
80
80
  }
81
81
 
82
- /*
82
+ /**
83
83
  * Creates a sequence of integers in the underlying database and assign the incremented
84
84
  * values to the ID values of the created records based on the sequence.
85
85
  */
86
86
  function autoincrement(): Int {
87
87
  }
88
88
 
89
- /*
89
+ /**
90
90
  * Represents default values that cannot be expressed in the Prisma schema (such as random()).
91
91
  */
92
92
  function dbgenerated(expr: String): Any {
@@ -98,49 +98,50 @@ function dbgenerated(expr: String): Any {
98
98
  function future(): Any {
99
99
  }
100
100
 
101
- /*
102
- * If the field value contains the search string
101
+ /**
102
+ * If the field value contains the search string. By default, the search is case-sensitive,
103
+ * but you can override the behavior with the "caseInSensitive" argument.
103
104
  */
104
- function contains(field: String, search: String, caseSensitive: Boolean?): Boolean {
105
+ function contains(field: String, search: String, caseInSensitive: Boolean?): Boolean {
105
106
  }
106
107
 
107
- /*
108
+ /**
108
109
  * If the field value matches the search condition with [full-text-search](https://www.prisma.io/docs/concepts/components/prisma-client/full-text-search). Need to enable "fullTextSearch" preview feature to use.
109
110
  */
110
111
  function search(field: String, search: String): Boolean {
111
112
  }
112
113
 
113
- /*
114
+ /**
114
115
  * If the field value starts with the search string
115
116
  */
116
117
  function startsWith(field: String, search: String): Boolean {
117
118
  }
118
119
 
119
- /*
120
+ /**
120
121
  * If the field value ends with the search string
121
122
  */
122
123
  function endsWith(field: String, search: String): Boolean {
123
124
  }
124
125
 
125
- /*
126
+ /**
126
127
  * If the field value (a list) has the given search value
127
128
  */
128
129
  function has(field: Any[], search: Any): Boolean {
129
130
  }
130
131
 
131
- /*
132
+ /**
132
133
  * If the field value (a list) has every element of the search list
133
134
  */
134
135
  function hasEvery(field: Any[], search: Any[]): Boolean {
135
136
  }
136
137
 
137
- /*
138
+ /**
138
139
  * If the field value (a list) has at least one element of the search list
139
140
  */
140
141
  function hasSome(field: Any[], search: Any[]): Boolean {
141
142
  }
142
143
 
143
- /*
144
+ /**
144
145
  * If the field value (a list) is empty
145
146
  */
146
147
  function isEmpty(field: Any[]): Boolean {
@@ -156,62 +157,74 @@ attribute @@@targetField(targetField: AttributeTargetField[])
156
157
  */
157
158
  attribute @@@prisma()
158
159
 
159
- /*
160
+ /**
160
161
  * Defines an ID on the model.
161
162
  */
162
- attribute @id(map: String?) @@@prisma
163
+ attribute @id(map: String?, length: Int?, sort: String?, clustered: Boolean?) @@@prisma
163
164
 
164
- /*
165
+ /**
165
166
  * Defines a default value for a field.
166
167
  */
167
168
  attribute @default(_ value: ContextType) @@@prisma
168
169
 
169
- /*
170
+ /**
170
171
  * Defines a unique constraint for this field.
171
172
  */
172
- attribute @unique(map: String?) @@@prisma
173
+ attribute @unique(map: String?, length: Int?, sort: String?, clustered: Boolean?) @@@prisma
173
174
 
174
- /*
175
+ /**
175
176
  * Defines a multi-field ID (composite ID) on the model.
176
177
  */
177
- attribute @@id(_ fields: FieldReference[], name: String?, map: String?) @@@prisma
178
+ attribute @@id(_ fields: FieldReference[], name: String?, map: String?, length: Int?, sort: String?, clustered: Boolean?) @@@prisma
178
179
 
179
- /*
180
+ /**
180
181
  * Defines a compound unique constraint for the specified fields.
181
182
  */
182
- attribute @@unique(_ fields: FieldReference[], name: String?, map: String?) @@@prisma
183
+ attribute @@unique(_ fields: FieldReference[], name: String?, map: String?, length: Int?, sort: String?, clustered: Boolean?) @@@prisma
184
+
185
+ /**
186
+ * Index types
187
+ */
188
+ enum IndexType {
189
+ BTree
190
+ Hash
191
+ Gist
192
+ Gin
193
+ SpGist
194
+ Brin
195
+ }
183
196
 
184
- /*
197
+ /**
185
198
  * Defines an index in the database.
186
199
  */
187
- attribute @@index(_ fields: FieldReference[], map: String?) @@@prisma
200
+ attribute @@index(_ fields: FieldReference[], name: String?, map: String?, length: Int?, sort: String?, clustered: Boolean?, type: IndexType?) @@@prisma
188
201
 
189
- /*
202
+ /**
190
203
  * Defines meta information about the relation.
191
204
  */
192
205
  attribute @relation(_ name: String?, fields: FieldReference[]?, references: TransitiveFieldReference[]?, onDelete: ReferentialAction?, onUpdate: ReferentialAction?, map: String?) @@@prisma
193
206
 
194
- /*
207
+ /**
195
208
  * Maps a field name or enum value from the schema to a column with a different name in the database.
196
209
  */
197
210
  attribute @map(_ name: String) @@@prisma
198
211
 
199
- /*
212
+ /**
200
213
  * Maps the schema model name to a table with a different name, or an enum name to a different underlying enum in the database.
201
214
  */
202
215
  attribute @@map(_ name: String) @@@prisma
203
216
 
204
- /*
217
+ /**
205
218
  * Exclude a field from the Prisma Client (for example, a field that you do not want Prisma users to update).
206
219
  */
207
220
  attribute @ignore() @@@prisma
208
221
 
209
- /*
222
+ /**
210
223
  * Exclude a model from the Prisma Client (for example, a model that you do not want Prisma users to update).
211
224
  */
212
225
  attribute @@ignore() @@@prisma
213
226
 
214
- /*
227
+ /**
215
228
  * Automatically stores the time when a record was last updated.
216
229
  */
217
230
  attribute @updatedAt() @@@targetField([DateTimeField]) @@@prisma
@@ -268,7 +281,7 @@ attribute @db.Int8() @@@targetField([BigIntField]) @@@prisma
268
281
  attribute @db.DoublePrecision() @@@targetField([FloatField, DecimalField]) @@@prisma
269
282
  attribute @db.Real() @@@targetField([FloatField, DecimalField]) @@@prisma
270
283
  attribute @db.Float() @@@targetField([FloatField, DecimalField]) @@@prisma
271
- attribute @db.Decimal() @@@targetField([FloatField, DecimalField]) @@@prisma
284
+ attribute @db.Decimal(_ p: Int?, _ s: Int?) @@@targetField([FloatField, DecimalField]) @@@prisma
272
285
  attribute @db.Double() @@@targetField([FloatField, DecimalField]) @@@prisma
273
286
  attribute @db.Money() @@@targetField([FloatField, DecimalField]) @@@prisma
274
287
  attribute @db.SmallMoney() @@@targetField([FloatField, DecimalField]) @@@prisma
@@ -277,7 +290,7 @@ attribute @db.Float4() @@@targetField([FloatField, DecimalField]) @@@prisma
277
290
 
278
291
  // DateTime type modifiers
279
292
 
280
- attribute @db.DateTime(x: Int?) @@@targetField([DateTimeField]) @@@prisma
293
+ attribute @db.DateTime(_ x: Int?) @@@targetField([DateTimeField]) @@@prisma
281
294
  attribute @db.DateTime2() @@@targetField([DateTimeField]) @@@prisma
282
295
  attribute @db.SmallDateTime() @@@targetField([DateTimeField]) @@@prisma
283
296
  attribute @db.DateTimeOffset() @@@targetField([DateTimeField]) @@@prisma
@@ -304,22 +317,22 @@ attribute @db.Blob() @@@targetField([BytesField]) @@@prisma
304
317
  attribute @db.MediumBlob() @@@targetField([BytesField]) @@@prisma
305
318
  attribute @db.Image() @@@targetField([BytesField]) @@@prisma
306
319
 
307
- /*
320
+ /**
308
321
  * Specifies the schema to use in a multi-schema database. https://www.prisma.io/docs/guides/database/multi-schema.
309
322
  */
310
323
  attribute @@schema(_ name: String) @@@prisma
311
324
 
312
- /*
325
+ /**
313
326
  * Defines an access policy that allows a set of operations when the given condition is true.
314
327
  */
315
328
  attribute @@allow(_ operation: String, _ condition: Boolean)
316
329
 
317
- /*
330
+ /**
318
331
  * Defines an access policy that denies a set of operations when the given condition is true.
319
332
  */
320
333
  attribute @@deny(_ operation: String, _ condition: Boolean)
321
334
 
322
- /*
335
+ /**
323
336
  * Indicates that the field is a password field and needs to be hashed before persistence.
324
337
  *
325
338
  * ZenStack uses `bcryptjs` library to hash password. You can use the `saltLength` parameter
@@ -333,72 +346,72 @@ attribute @@deny(_ operation: String, _ condition: Boolean)
333
346
  */
334
347
  attribute @password(saltLength: Int?, salt: String?) @@@targetField([StringField])
335
348
 
336
- /*
349
+ /**
337
350
  * Indicates that the field should be omitted when read from the generated services.
338
351
  */
339
352
  attribute @omit()
340
353
 
341
- /*
354
+ /**
342
355
  * Validates length of a string field.
343
356
  */
344
357
  attribute @length(_ min: Int?, _ max: Int?) @@@targetField([StringField])
345
358
 
346
- /*
359
+ /**
347
360
  * Validates a string field value matches a regex.
348
361
  */
349
362
  attribute @regex(_ regex: String) @@@targetField([StringField])
350
363
 
351
- /*
364
+ /**
352
365
  * Validates a string field value starts with the given text.
353
366
  */
354
367
  attribute @startsWith(_ text: String) @@@targetField([StringField])
355
368
 
356
- /*
369
+ /**
357
370
  * Validates a string field value ends with the given text.
358
371
  */
359
372
  attribute @endsWith(_ text: String) @@@targetField([StringField])
360
373
 
361
- /*
374
+ /**
362
375
  * Validates a string field value is a valid email address.
363
376
  */
364
377
  attribute @email() @@@targetField([StringField])
365
378
 
366
- /*
379
+ /**
367
380
  * Validates a string field value is a valid ISO datetime.
368
381
  */
369
382
  attribute @datetime() @@@targetField([StringField])
370
383
 
371
- /*
384
+ /**
372
385
  * Validates a string field value is a valid url.
373
386
  */
374
387
  attribute @url() @@@targetField([StringField])
375
388
 
376
- /*
389
+ /**
377
390
  * Validates a number field is greater than the given value.
378
391
  */
379
392
  attribute @gt(_ value: Int) @@@targetField([IntField, FloatField, DecimalField])
380
393
 
381
- /*
394
+ /**
382
395
  * Validates a number field is greater than or equal to the given value.
383
396
  */
384
397
  attribute @gte(_ value: Int) @@@targetField([IntField, FloatField, DecimalField])
385
398
 
386
- /*
399
+ /**
387
400
  * Validates a number field is less than the given value.
388
401
  */
389
402
  attribute @lt(_ value: Int) @@@targetField([IntField, FloatField, DecimalField])
390
403
 
391
- /*
404
+ /**
392
405
  * Validates a number field is less than or equal to the given value.
393
406
  */
394
407
  attribute @lte(_ value: Int) @@@targetField([IntField, FloatField, DecimalField])
395
408
 
396
- /*
409
+ /**
397
410
  * A utility attribute to allow passthrough of arbitrary attribute text to the generated Prisma schema.
398
411
  */
399
412
  attribute @prisma.passthrough(_ text: String)
400
413
 
401
- /*
414
+ /**
402
415
  * A utility attribute to allow passthrough of arbitrary attribute text to the generated Prisma schema.
403
416
  */
404
417
  attribute @@prisma.passthrough(_ text: String)
package/telemetry.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Telemetry events
3
3
  */
4
- export declare type TelemetryEvents = 'cli:start' | 'cli:complete' | 'cli:error' | 'cli:crash' | 'cli:command:start' | 'cli:command:complete' | 'cli:command:error' | 'cli:plugin:start' | 'cli:plugin:complete' | 'cli:plugin:error';
4
+ export declare type TelemetryEvents = 'cli:start' | 'cli:complete' | 'cli:error' | 'cli:crash' | 'cli:command:start' | 'cli:command:complete' | 'cli:command:error' | 'cli:plugin:start' | 'cli:plugin:complete' | 'cli:plugin:error' | 'prisma:error';
5
5
  /**
6
6
  * Utility class for sending telemetry
7
7
  */
package/telemetry.js CHANGED
@@ -36,9 +36,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.Telemetry = void 0;
39
+ const cuid2_1 = require("@paralleldrive/cuid2");
39
40
  const async_exit_hook_1 = __importDefault(require("async-exit-hook"));
40
41
  const commander_1 = require("commander");
41
- const cuid_1 = __importDefault(require("cuid"));
42
42
  const mixpanel_1 = require("mixpanel");
43
43
  const node_machine_id_1 = require("node-machine-id");
44
44
  const os = __importStar(require("os"));
@@ -52,7 +52,7 @@ const version_utils_1 = require("./utils/version-utils");
52
52
  class Telemetry {
53
53
  constructor() {
54
54
  this.hostId = (0, node_machine_id_1.machineIdSync)();
55
- this.sessionid = (0, cuid_1.default)();
55
+ this.sessionid = (0, cuid2_1.createId)();
56
56
  this._os = os.platform();
57
57
  this.version = (0, version_utils_1.getVersion)();
58
58
  this.exitWait = 200;
package/telemetry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,25 @@
1
- import { DataModel, DataModelField, Expression } from '@zenstackhq/language/ast';
1
+ import { DataModel, DataModelAttribute, DataModelField, Expression, Model, ModelImport } from '@zenstackhq/language/ast';
2
+ import { AstNode, LangiumDocuments } from 'langium';
3
+ import { URI } from 'vscode-uri';
4
+ export declare function extractDataModelsWithAllowRules(model: Model): DataModel[];
5
+ export declare function analyzePolicies(dataModel: DataModel): {
6
+ allows: DataModelAttribute[];
7
+ denies: DataModelAttribute[];
8
+ create: boolean | undefined;
9
+ read: boolean | undefined;
10
+ update: boolean | undefined;
11
+ delete: boolean | undefined;
12
+ allowAll: boolean;
13
+ denyAll: boolean;
14
+ hasFieldValidation: boolean;
15
+ };
16
+ export declare function mergeBaseModel(model: Model): void;
17
+ export declare const VALIDATION_ATTRIBUTES: string[];
2
18
  export declare function getIdFields(dataModel: DataModel): DataModelField[];
3
- export declare function isAuthInvocation(expr: Expression): boolean;
19
+ export declare function isAuthInvocation(node: AstNode): boolean;
4
20
  export declare function isEnumFieldReference(expr: Expression): boolean;
5
21
  export declare function getDataModelFieldReference(expr: Expression): DataModelField | undefined;
22
+ export declare function resolveImportUri(imp: ModelImport): URI | undefined;
23
+ export declare function resolveTransitiveImports(documents: LangiumDocuments, model: Model): Model[];
24
+ export declare function resolveImport(documents: LangiumDocuments, imp: ModelImport): Model | undefined;
25
+ export declare function getAllDeclarationsFromImports(documents: LangiumDocuments, model: Model): import("@zenstackhq/language/ast").AbstractDeclaration[];
@@ -1,10 +1,109 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDataModelFieldReference = exports.isEnumFieldReference = exports.isAuthInvocation = exports.getIdFields = void 0;
3
+ exports.getAllDeclarationsFromImports = exports.resolveImport = exports.resolveTransitiveImports = exports.resolveImportUri = exports.getDataModelFieldReference = exports.isEnumFieldReference = exports.isAuthInvocation = exports.getIdFields = exports.VALIDATION_ATTRIBUTES = exports.mergeBaseModel = exports.analyzePolicies = exports.extractDataModelsWithAllowRules = void 0;
4
4
  const ast_1 = require("@zenstackhq/language/ast");
5
+ const sdk_1 = require("@zenstackhq/sdk");
6
+ const langium_1 = require("langium");
7
+ const vscode_uri_1 = require("vscode-uri");
5
8
  const utils_1 = require("../language-server/utils");
9
+ function extractDataModelsWithAllowRules(model) {
10
+ return model.declarations.filter((d) => (0, ast_1.isDataModel)(d) && d.attributes.some((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@allow'; }));
11
+ }
12
+ exports.extractDataModelsWithAllowRules = extractDataModelsWithAllowRules;
13
+ function analyzePolicies(dataModel) {
14
+ const allows = dataModel.attributes.filter((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@allow'; });
15
+ const denies = dataModel.attributes.filter((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@deny'; });
16
+ const create = toStaticPolicy('create', allows, denies);
17
+ const read = toStaticPolicy('read', allows, denies);
18
+ const update = toStaticPolicy('update', allows, denies);
19
+ const del = toStaticPolicy('delete', allows, denies);
20
+ const hasFieldValidation = dataModel.$resolvedFields.some((field) => field.attributes.some((attr) => exports.VALIDATION_ATTRIBUTES.includes(attr.decl.$refText)));
21
+ return {
22
+ allows,
23
+ denies,
24
+ create,
25
+ read,
26
+ update,
27
+ delete: del,
28
+ allowAll: create === true && read === true && update === true && del === true,
29
+ denyAll: create === false && read === false && update === false && del === false,
30
+ hasFieldValidation,
31
+ };
32
+ }
33
+ exports.analyzePolicies = analyzePolicies;
34
+ function mergeBaseModel(model) {
35
+ model.declarations
36
+ .filter((x) => x.$type === 'DataModel')
37
+ .forEach((decl) => {
38
+ const dataModel = decl;
39
+ dataModel.fields = dataModel.superTypes
40
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
41
+ .flatMap((superType) => updateContainer(superType.ref.fields, dataModel))
42
+ .concat(dataModel.fields);
43
+ dataModel.attributes = dataModel.superTypes
44
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
45
+ .flatMap((superType) => updateContainer(superType.ref.attributes, dataModel))
46
+ .concat(dataModel.attributes);
47
+ });
48
+ // remove abstract models
49
+ model.declarations = model.declarations.filter((x) => !(x.$type == 'DataModel' && x.isAbstract));
50
+ }
51
+ exports.mergeBaseModel = mergeBaseModel;
52
+ function updateContainer(nodes, container) {
53
+ return nodes.map((node) => {
54
+ const cloneField = Object.assign({}, node);
55
+ const mutable = cloneField;
56
+ // update container
57
+ mutable.$container = container;
58
+ return mutable;
59
+ });
60
+ }
61
+ function toStaticPolicy(operation, allows, denies) {
62
+ const filteredDenies = forOperation(operation, denies);
63
+ if (filteredDenies.some((rule) => (0, sdk_1.getLiteral)(rule.args[1].value) === true)) {
64
+ // any constant true deny rule
65
+ return false;
66
+ }
67
+ const filteredAllows = forOperation(operation, allows);
68
+ if (filteredAllows.length === 0) {
69
+ // no allow rule
70
+ return false;
71
+ }
72
+ if (filteredDenies.length === 0 &&
73
+ filteredAllows.some((rule) => (0, sdk_1.getLiteral)(rule.args[1].value) === true)) {
74
+ // any constant true allow rule
75
+ return true;
76
+ }
77
+ return undefined;
78
+ }
79
+ function forOperation(operation, rules) {
80
+ return rules.filter((rule) => {
81
+ const ops = (0, sdk_1.getLiteral)(rule.args[0].value);
82
+ if (!ops) {
83
+ return false;
84
+ }
85
+ if (ops === 'all') {
86
+ return true;
87
+ }
88
+ const splitOps = ops.split(',').map((p) => p.trim());
89
+ return splitOps.includes(operation);
90
+ });
91
+ }
92
+ exports.VALIDATION_ATTRIBUTES = [
93
+ '@length',
94
+ '@regex',
95
+ '@startsWith',
96
+ '@endsWith',
97
+ '@email',
98
+ '@url',
99
+ '@datetime',
100
+ '@gt',
101
+ '@gte',
102
+ '@lt',
103
+ '@lte',
104
+ ];
6
105
  function getIdFields(dataModel) {
7
- const fieldLevelId = dataModel.fields.find((f) => f.attributes.some((attr) => attr.decl.$refText === '@id'));
106
+ const fieldLevelId = dataModel.$resolvedFields.find((f) => f.attributes.some((attr) => attr.decl.$refText === '@id'));
8
107
  if (fieldLevelId) {
9
108
  return [fieldLevelId];
10
109
  }
@@ -25,9 +124,9 @@ function getIdFields(dataModel) {
25
124
  return [];
26
125
  }
27
126
  exports.getIdFields = getIdFields;
28
- function isAuthInvocation(expr) {
127
+ function isAuthInvocation(node) {
29
128
  var _a;
30
- return (0, ast_1.isInvocationExpr)(expr) && ((_a = expr.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'auth' && (0, utils_1.isFromStdlib)(expr.function.ref);
129
+ return (0, ast_1.isInvocationExpr)(node) && ((_a = node.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'auth' && (0, utils_1.isFromStdlib)(node.function.ref);
31
130
  }
32
131
  exports.isAuthInvocation = isAuthInvocation;
33
132
  function isEnumFieldReference(expr) {
@@ -46,4 +145,58 @@ function getDataModelFieldReference(expr) {
46
145
  }
47
146
  }
48
147
  exports.getDataModelFieldReference = getDataModelFieldReference;
148
+ function resolveImportUri(imp) {
149
+ if (imp.path === undefined || imp.path.length === 0) {
150
+ return undefined;
151
+ }
152
+ const dirUri = vscode_uri_1.Utils.dirname((0, langium_1.getDocument)(imp).uri);
153
+ let grammarPath = imp.path;
154
+ if (!grammarPath.endsWith('.zmodel')) {
155
+ grammarPath += '.zmodel';
156
+ }
157
+ return vscode_uri_1.Utils.resolvePath(dirUri, grammarPath);
158
+ }
159
+ exports.resolveImportUri = resolveImportUri;
160
+ function resolveTransitiveImports(documents, model) {
161
+ return resolveTransitiveImportsInternal(documents, model);
162
+ }
163
+ exports.resolveTransitiveImports = resolveTransitiveImports;
164
+ function resolveTransitiveImportsInternal(documents, model, initialModel = model, visited = new Set(), models = new Set()) {
165
+ const doc = (0, langium_1.getDocument)(model);
166
+ if (initialModel !== model) {
167
+ models.add(model);
168
+ }
169
+ if (!visited.has(doc.uri)) {
170
+ visited.add(doc.uri);
171
+ for (const imp of model.imports) {
172
+ const importedModel = resolveImport(documents, imp);
173
+ if (importedModel) {
174
+ resolveTransitiveImportsInternal(documents, importedModel, initialModel, visited, models);
175
+ }
176
+ }
177
+ }
178
+ return Array.from(models);
179
+ }
180
+ function resolveImport(documents, imp) {
181
+ const resolvedUri = resolveImportUri(imp);
182
+ try {
183
+ if (resolvedUri) {
184
+ const resolvedDocument = documents.getOrCreateDocument(resolvedUri);
185
+ const node = resolvedDocument.parseResult.value;
186
+ if ((0, ast_1.isModel)(node)) {
187
+ return node;
188
+ }
189
+ }
190
+ }
191
+ catch (_a) {
192
+ // NOOP
193
+ }
194
+ return undefined;
195
+ }
196
+ exports.resolveImport = resolveImport;
197
+ function getAllDeclarationsFromImports(documents, model) {
198
+ const imports = resolveTransitiveImports(documents, model);
199
+ return model.declarations.concat(...imports.map((imp) => imp.declarations));
200
+ }
201
+ exports.getAllDeclarationsFromImports = getAllDeclarationsFromImports;
49
202
  //# sourceMappingURL=ast-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../src/utils/ast-utils.ts"],"names":[],"mappings":";;;AAAA,kDAWkC;AAClC,oDAAwD;AAExD,SAAgB,WAAW,CAAC,SAAoB;IAC5C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC;IAC7G,IAAI,YAAY,EAAE;QACd,OAAO,CAAC,YAAY,CAAC,CAAC;KACzB;SAAM;QACH,iCAAiC;QACjC,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,eAAC,OAAA,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG,0CAAE,IAAI,MAAK,MAAM,CAAA,EAAA,CAAC,CAAC;QACzF,IAAI,WAAW,EAAE;YACb,kEAAkE;YAClE,IAAI,CAAC,IAAA,iBAAW,EAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBACzC,OAAO,EAAE,CAAC;aACb;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3C,OAAO,QAAQ,CAAC,KAAK;iBAChB,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAA,qBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;iBACpG,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAqB,CAAC,CAAC;SACzD;KACJ;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAnBD,kCAmBC;AAED,SAAgB,gBAAgB,CAAC,IAAgB;;IAC7C,OAAO,IAAA,sBAAgB,EAAC,IAAI,CAAC,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,0CAAE,IAAI,MAAK,MAAM,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3G,CAAC;AAFD,4CAEC;AAED,SAAgB,oBAAoB,CAAC,IAAgB;IACjD,OAAO,IAAA,qBAAe,EAAC,IAAI,CAAC,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC;AAFD,oDAEC;AAED,SAAgB,0BAA0B,CAAC,IAAgB;IACvD,IAAI,IAAA,qBAAe,EAAC,IAAI,CAAC,IAAI,IAAA,sBAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;KAC1B;SAAM,IAAI,IAAA,wBAAkB,EAAC,IAAI,CAAC,IAAI,IAAA,sBAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACtE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;KAC1B;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AARD,gEAQC"}
1
+ {"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../src/utils/ast-utils.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ function getVersion() {
7
7
  return require('../package.json').version;
8
8
  }
9
9
  catch (_a) {
10
+ // dev environment
10
11
  return require('../../package.json').version;
11
12
  }
12
13
  }