zenstack 0.1.42 → 0.1.46

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 (45) hide show
  1. package/out/cli/cli-util.js +1 -1
  2. package/out/cli/cli-util.js.map +1 -1
  3. package/out/cli/index.js +90 -12
  4. package/out/cli/index.js.map +1 -1
  5. package/out/generator/index.js +5 -5
  6. package/out/generator/index.js.map +1 -1
  7. package/out/generator/prisma/index.js +8 -2
  8. package/out/generator/prisma/index.js.map +1 -1
  9. package/out/generator/prisma/schema-generator.js +5 -1
  10. package/out/generator/prisma/schema-generator.js.map +1 -1
  11. package/out/language-server/constants.js +20 -0
  12. package/out/language-server/constants.js.map +1 -0
  13. package/out/language-server/generated/ast.js +3 -2
  14. package/out/language-server/generated/ast.js.map +1 -1
  15. package/out/language-server/generated/grammar.js +70 -54
  16. package/out/language-server/generated/grammar.js.map +1 -1
  17. package/out/language-server/generated/module.js +1 -1
  18. package/out/language-server/main.js +4 -3
  19. package/out/language-server/main.js.map +1 -1
  20. package/out/language-server/stdlib.zmodel +3 -0
  21. package/out/language-server/validator/datamodel-validator.js +41 -0
  22. package/out/language-server/validator/datamodel-validator.js.map +1 -0
  23. package/out/language-server/validator/datasource-validator copy.js +77 -0
  24. package/out/language-server/validator/datasource-validator copy.js.map +1 -0
  25. package/out/language-server/validator/datasource-validator.js +77 -0
  26. package/out/language-server/validator/datasource-validator.js.map +1 -0
  27. package/out/language-server/validator/model-validator.js +21 -0
  28. package/out/language-server/validator/model-validator.js.map +1 -0
  29. package/out/language-server/validator/schema-validator.js +21 -0
  30. package/out/language-server/validator/schema-validator.js.map +1 -0
  31. package/out/language-server/validator/utils.js +30 -0
  32. package/out/language-server/validator/utils.js.map +1 -0
  33. package/out/language-server/validator/zmodel-validator.js +42 -0
  34. package/out/language-server/validator/zmodel-validator.js.map +1 -0
  35. package/out/language-server/zmodel-index.js +0 -27
  36. package/out/language-server/zmodel-index.js.map +1 -1
  37. package/out/language-server/zmodel-module.js +1 -2
  38. package/out/language-server/zmodel-module.js.map +1 -1
  39. package/out/language-server/zmodel-scope.js +16 -5
  40. package/out/language-server/zmodel-scope.js.map +1 -1
  41. package/out/language-server/zmodel-validator.js +11 -1
  42. package/out/language-server/zmodel-validator.js.map +1 -1
  43. package/out/utils/exec-utils.js +9 -0
  44. package/out/utils/exec-utils.js.map +1 -0
  45. package/package.json +19 -18
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  /******************************************************************************
3
- * This file was generated by langium-cli 0.4.0.
3
+ * This file was generated by langium-cli 0.5.0.
4
4
  * DO NOT EDIT MANUALLY!
5
5
  ******************************************************************************/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.ZModelGrammar = void 0;
8
8
  const langium_1 = require("langium");
9
9
  let loadedZModelGrammar;
10
- const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, langium_1.loadGrammar)(`{
10
+ const ZModelGrammar = () => loadedZModelGrammar !== null && loadedZModelGrammar !== void 0 ? loadedZModelGrammar : (loadedZModelGrammar = (0, langium_1.loadGrammarFromJson)(`{
11
11
  "$type": "Grammar",
12
12
  "isDeclared": true,
13
13
  "name": "ZModel",
@@ -16,7 +16,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
16
16
  "$type": "ParserRule",
17
17
  "name": "Model",
18
18
  "entry": true,
19
- "alternatives": {
19
+ "definition": {
20
20
  "$type": "Assignment",
21
21
  "feature": "declarations",
22
22
  "operator": "+=",
@@ -38,7 +38,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
38
38
  {
39
39
  "$type": "ParserRule",
40
40
  "name": "AbstractDeclaration",
41
- "alternatives": {
41
+ "definition": {
42
42
  "$type": "Alternatives",
43
43
  "elements": [
44
44
  {
@@ -88,7 +88,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
88
88
  {
89
89
  "$type": "ParserRule",
90
90
  "name": "DataSource",
91
- "alternatives": {
91
+ "definition": {
92
92
  "$type": "Group",
93
93
  "elements": [
94
94
  {
@@ -122,7 +122,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
122
122
  },
123
123
  "arguments": []
124
124
  },
125
- "cardinality": "+"
125
+ "cardinality": "*"
126
126
  },
127
127
  {
128
128
  "$type": "Keyword",
@@ -140,7 +140,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
140
140
  {
141
141
  "$type": "ParserRule",
142
142
  "name": "DataSourceField",
143
- "alternatives": {
143
+ "definition": {
144
144
  "$type": "Group",
145
145
  "elements": [
146
146
  {
@@ -195,7 +195,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
195
195
  {
196
196
  "$type": "ParserRule",
197
197
  "name": "Expression",
198
- "alternatives": {
198
+ "definition": {
199
199
  "$type": "RuleCall",
200
200
  "rule": {
201
201
  "$refText": "LogicalExpr"
@@ -212,7 +212,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
212
212
  {
213
213
  "$type": "ParserRule",
214
214
  "name": "LiteralExpr",
215
- "alternatives": {
215
+ "definition": {
216
216
  "$type": "Assignment",
217
217
  "feature": "value",
218
218
  "operator": "=",
@@ -229,7 +229,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
229
229
  {
230
230
  "$type": "RuleCall",
231
231
  "rule": {
232
- "$refText": "INT"
232
+ "$refText": "NUMBER"
233
233
  },
234
234
  "arguments": []
235
235
  },
@@ -253,7 +253,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
253
253
  {
254
254
  "$type": "ParserRule",
255
255
  "name": "ArrayExpr",
256
- "alternatives": {
256
+ "definition": {
257
257
  "$type": "Group",
258
258
  "elements": [
259
259
  {
@@ -316,7 +316,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
316
316
  {
317
317
  "$type": "ParserRule",
318
318
  "name": "ThisExpr",
319
- "alternatives": {
319
+ "definition": {
320
320
  "$type": "Assignment",
321
321
  "feature": "value",
322
322
  "operator": "=",
@@ -338,7 +338,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
338
338
  {
339
339
  "$type": "ParserRule",
340
340
  "name": "NullExpr",
341
- "alternatives": {
341
+ "definition": {
342
342
  "$type": "Assignment",
343
343
  "feature": "value",
344
344
  "operator": "=",
@@ -360,7 +360,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
360
360
  {
361
361
  "$type": "ParserRule",
362
362
  "name": "ReferenceExpr",
363
- "alternatives": {
363
+ "definition": {
364
364
  "$type": "Group",
365
365
  "elements": [
366
366
  {
@@ -416,7 +416,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
416
416
  "$type": "ParserRule",
417
417
  "name": "ReferenceArgList",
418
418
  "fragment": true,
419
- "alternatives": {
419
+ "definition": {
420
420
  "$type": "Group",
421
421
  "elements": [
422
422
  {
@@ -464,7 +464,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
464
464
  {
465
465
  "$type": "ParserRule",
466
466
  "name": "ReferenceArg",
467
- "alternatives": {
467
+ "definition": {
468
468
  "$type": "Group",
469
469
  "elements": [
470
470
  {
@@ -510,7 +510,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
510
510
  {
511
511
  "$type": "ParserRule",
512
512
  "name": "InvocationExpr",
513
- "alternatives": {
513
+ "definition": {
514
514
  "$type": "Group",
515
515
  "elements": [
516
516
  {
@@ -553,7 +553,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
553
553
  {
554
554
  "$type": "ParserRule",
555
555
  "name": "UnaryExpr",
556
- "alternatives": {
556
+ "definition": {
557
557
  "$type": "Group",
558
558
  "elements": [
559
559
  {
@@ -593,7 +593,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
593
593
  "$type": "InferredType",
594
594
  "name": "Expression"
595
595
  },
596
- "alternatives": {
596
+ "definition": {
597
597
  "$type": "Group",
598
598
  "elements": [
599
599
  {
@@ -655,7 +655,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
655
655
  "$type": "InferredType",
656
656
  "name": "Expression"
657
657
  },
658
- "alternatives": {
658
+ "definition": {
659
659
  "$type": "Group",
660
660
  "elements": [
661
661
  {
@@ -738,7 +738,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
738
738
  "$type": "InferredType",
739
739
  "name": "Expression"
740
740
  },
741
- "alternatives": {
741
+ "definition": {
742
742
  "$type": "Group",
743
743
  "elements": [
744
744
  {
@@ -817,7 +817,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
817
817
  "$type": "InferredType",
818
818
  "name": "Expression"
819
819
  },
820
- "alternatives": {
820
+ "definition": {
821
821
  "$type": "Group",
822
822
  "elements": [
823
823
  {
@@ -888,7 +888,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
888
888
  "$type": "InferredType",
889
889
  "name": "Expression"
890
890
  },
891
- "alternatives": {
891
+ "definition": {
892
892
  "$type": "Group",
893
893
  "elements": [
894
894
  {
@@ -959,7 +959,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
959
959
  "$type": "InferredType",
960
960
  "name": "Expression"
961
961
  },
962
- "alternatives": {
962
+ "definition": {
963
963
  "$type": "Alternatives",
964
964
  "elements": [
965
965
  {
@@ -1044,7 +1044,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1044
1044
  "$type": "ParserRule",
1045
1045
  "name": "ArgumentList",
1046
1046
  "fragment": true,
1047
- "alternatives": {
1047
+ "definition": {
1048
1048
  "$type": "Group",
1049
1049
  "elements": [
1050
1050
  {
@@ -1092,7 +1092,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1092
1092
  {
1093
1093
  "$type": "ParserRule",
1094
1094
  "name": "Argument",
1095
- "alternatives": {
1095
+ "definition": {
1096
1096
  "$type": "Group",
1097
1097
  "elements": [
1098
1098
  {
@@ -1141,7 +1141,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1141
1141
  {
1142
1142
  "$type": "ParserRule",
1143
1143
  "name": "DataModel",
1144
- "alternatives": {
1144
+ "definition": {
1145
1145
  "$type": "Group",
1146
1146
  "elements": [
1147
1147
  {
@@ -1210,7 +1210,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1210
1210
  {
1211
1211
  "$type": "ParserRule",
1212
1212
  "name": "DataModelField",
1213
- "alternatives": {
1213
+ "definition": {
1214
1214
  "$type": "Group",
1215
1215
  "elements": [
1216
1216
  {
@@ -1262,7 +1262,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1262
1262
  {
1263
1263
  "$type": "ParserRule",
1264
1264
  "name": "DataModelFieldType",
1265
- "alternatives": {
1265
+ "definition": {
1266
1266
  "$type": "Group",
1267
1267
  "elements": [
1268
1268
  {
@@ -1328,7 +1328,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1328
1328
  {
1329
1329
  "$type": "ParserRule",
1330
1330
  "name": "Enum",
1331
- "alternatives": {
1331
+ "definition": {
1332
1332
  "$type": "Group",
1333
1333
  "elements": [
1334
1334
  {
@@ -1380,7 +1380,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1380
1380
  {
1381
1381
  "$type": "ParserRule",
1382
1382
  "name": "EnumField",
1383
- "alternatives": {
1383
+ "definition": {
1384
1384
  "$type": "Assignment",
1385
1385
  "feature": "name",
1386
1386
  "operator": "=",
@@ -1402,7 +1402,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1402
1402
  {
1403
1403
  "$type": "ParserRule",
1404
1404
  "name": "Function",
1405
- "alternatives": {
1405
+ "definition": {
1406
1406
  "$type": "Group",
1407
1407
  "elements": [
1408
1408
  {
@@ -1514,7 +1514,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1514
1514
  {
1515
1515
  "$type": "ParserRule",
1516
1516
  "name": "FunctionParam",
1517
- "alternatives": {
1517
+ "definition": {
1518
1518
  "$type": "Group",
1519
1519
  "elements": [
1520
1520
  {
@@ -1553,7 +1553,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1553
1553
  {
1554
1554
  "$type": "ParserRule",
1555
1555
  "name": "FunctionParamType",
1556
- "alternatives": {
1556
+ "definition": {
1557
1557
  "$type": "Group",
1558
1558
  "elements": [
1559
1559
  {
@@ -1602,7 +1602,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1602
1602
  {
1603
1603
  "$type": "ParserRule",
1604
1604
  "name": "Attribute",
1605
- "alternatives": {
1605
+ "definition": {
1606
1606
  "$type": "Group",
1607
1607
  "elements": [
1608
1608
  {
@@ -1681,7 +1681,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1681
1681
  {
1682
1682
  "$type": "ParserRule",
1683
1683
  "name": "AttributeParam",
1684
- "alternatives": {
1684
+ "definition": {
1685
1685
  "$type": "Group",
1686
1686
  "elements": [
1687
1687
  {
@@ -1729,7 +1729,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1729
1729
  {
1730
1730
  "$type": "ParserRule",
1731
1731
  "name": "AttributeParamType",
1732
- "alternatives": {
1732
+ "definition": {
1733
1733
  "$type": "Group",
1734
1734
  "elements": [
1735
1735
  {
@@ -1783,7 +1783,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1783
1783
  {
1784
1784
  "$type": "ParserRule",
1785
1785
  "name": "DataModelFieldAttribute",
1786
- "alternatives": {
1786
+ "definition": {
1787
1787
  "$type": "Group",
1788
1788
  "elements": [
1789
1789
  {
@@ -1836,7 +1836,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1836
1836
  {
1837
1837
  "$type": "ParserRule",
1838
1838
  "name": "DataModelAttribute",
1839
- "alternatives": {
1839
+ "definition": {
1840
1840
  "$type": "Group",
1841
1841
  "elements": [
1842
1842
  {
@@ -1890,7 +1890,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1890
1890
  "$type": "ParserRule",
1891
1891
  "name": "AttributeArgList",
1892
1892
  "fragment": true,
1893
- "alternatives": {
1893
+ "definition": {
1894
1894
  "$type": "Group",
1895
1895
  "elements": [
1896
1896
  {
@@ -1938,7 +1938,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1938
1938
  {
1939
1939
  "$type": "ParserRule",
1940
1940
  "name": "AttributeArg",
1941
- "alternatives": {
1941
+ "definition": {
1942
1942
  "$type": "Group",
1943
1943
  "elements": [
1944
1944
  {
@@ -1988,7 +1988,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
1988
1988
  "$type": "ParserRule",
1989
1989
  "name": "BuiltinType",
1990
1990
  "fragment": true,
1991
- "alternatives": {
1991
+ "definition": {
1992
1992
  "$type": "Assignment",
1993
1993
  "feature": "type",
1994
1994
  "operator": "=",
@@ -2007,13 +2007,29 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2007
2007
  "$type": "Keyword",
2008
2008
  "value": "Int"
2009
2009
  },
2010
+ {
2011
+ "$type": "Keyword",
2012
+ "value": "BigInt"
2013
+ },
2014
+ {
2015
+ "$type": "Keyword",
2016
+ "value": "Float"
2017
+ },
2018
+ {
2019
+ "$type": "Keyword",
2020
+ "value": "Decimal"
2021
+ },
2010
2022
  {
2011
2023
  "$type": "Keyword",
2012
2024
  "value": "DateTime"
2013
2025
  },
2014
2026
  {
2015
2027
  "$type": "Keyword",
2016
- "value": "JSON"
2028
+ "value": "Json"
2029
+ },
2030
+ {
2031
+ "$type": "Keyword",
2032
+ "value": "Bytes"
2017
2033
  }
2018
2034
  ]
2019
2035
  }
@@ -2028,7 +2044,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2028
2044
  "$type": "TerminalRule",
2029
2045
  "hidden": true,
2030
2046
  "name": "WS",
2031
- "terminal": {
2047
+ "definition": {
2032
2048
  "$type": "RegexToken",
2033
2049
  "regex": "\\\\s+"
2034
2050
  },
@@ -2041,7 +2057,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2041
2057
  "$type": "ReturnType",
2042
2058
  "name": "boolean"
2043
2059
  },
2044
- "terminal": {
2060
+ "definition": {
2045
2061
  "$type": "RegexToken",
2046
2062
  "regex": "true|false"
2047
2063
  },
@@ -2051,7 +2067,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2051
2067
  {
2052
2068
  "$type": "TerminalRule",
2053
2069
  "name": "NULL",
2054
- "terminal": {
2070
+ "definition": {
2055
2071
  "$type": "CharacterRange",
2056
2072
  "left": {
2057
2073
  "$type": "Keyword",
@@ -2064,7 +2080,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2064
2080
  {
2065
2081
  "$type": "TerminalRule",
2066
2082
  "name": "THIS",
2067
- "terminal": {
2083
+ "definition": {
2068
2084
  "$type": "CharacterRange",
2069
2085
  "left": {
2070
2086
  "$type": "Keyword",
@@ -2077,7 +2093,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2077
2093
  {
2078
2094
  "$type": "TerminalRule",
2079
2095
  "name": "ID",
2080
- "terminal": {
2096
+ "definition": {
2081
2097
  "$type": "RegexToken",
2082
2098
  "regex": "[_a-zA-Z][\\\\w_]*"
2083
2099
  },
@@ -2087,7 +2103,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2087
2103
  {
2088
2104
  "$type": "TerminalRule",
2089
2105
  "name": "STRING",
2090
- "terminal": {
2106
+ "definition": {
2091
2107
  "$type": "RegexToken",
2092
2108
  "regex": "\\"[^\\"]*\\"|'[^']*'"
2093
2109
  },
@@ -2096,14 +2112,14 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2096
2112
  },
2097
2113
  {
2098
2114
  "$type": "TerminalRule",
2099
- "name": "INT",
2115
+ "name": "NUMBER",
2100
2116
  "type": {
2101
2117
  "$type": "ReturnType",
2102
2118
  "name": "number"
2103
2119
  },
2104
- "terminal": {
2120
+ "definition": {
2105
2121
  "$type": "RegexToken",
2106
- "regex": "[+-]?[0-9]+"
2122
+ "regex": "[+-]?[0-9]+(\\\\.[0-9]+)?"
2107
2123
  },
2108
2124
  "fragment": false,
2109
2125
  "hidden": false
@@ -2112,7 +2128,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2112
2128
  "$type": "TerminalRule",
2113
2129
  "hidden": true,
2114
2130
  "name": "ML_COMMENT",
2115
- "terminal": {
2131
+ "definition": {
2116
2132
  "$type": "RegexToken",
2117
2133
  "regex": "\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/"
2118
2134
  },
@@ -2122,7 +2138,7 @@ const ZModelGrammar = () => loadedZModelGrammar || (loadedZModelGrammar = (0, la
2122
2138
  "$type": "TerminalRule",
2123
2139
  "hidden": true,
2124
2140
  "name": "SL_COMMENT",
2125
- "terminal": {
2141
+ "definition": {
2126
2142
  "$type": "RegexToken",
2127
2143
  "regex": "\\\\/\\\\/[^\\\\n\\\\r]*"
2128
2144
  },
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../src/language-server/generated/grammar.ts"],"names":[],"mappings":";AAAA;;;gFAGgF;;;AAEhF,qCAA+C;AAE/C,IAAI,mBAAwC,CAAC;AACtC,MAAM,aAAa,GAAG,GAAY,EAAE,CAAC,mBAAmB,IAAG,CAAC,mBAAmB,GAAG,IAAA,qBAAW,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqoEnG,CAAC,CAAC,CAAC;AAroEQ,QAAA,aAAa,iBAqoErB"}
1
+ {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../src/language-server/generated/grammar.ts"],"names":[],"mappings":";AAAA;;;gFAGgF;;;AAEhF,qCAAuD;AAEvD,IAAI,mBAAwC,CAAC;AACtC,MAAM,aAAa,GAAG,GAAY,EAAE,CAAC,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,CAAC,mBAAmB,GAAG,IAAA,6BAAmB,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqpE5G,CAAC,CAAC,CAAC;AArpEQ,QAAA,aAAa,iBAqpErB"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /******************************************************************************
3
- * This file was generated by langium-cli 0.4.0.
3
+ * This file was generated by langium-cli 0.5.0.
4
4
  * DO NOT EDIT MANUALLY!
5
5
  ******************************************************************************/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const langium_1 = require("langium");
4
- const node_1 = require("vscode-languageserver/node");
4
+ const node_1 = require("langium/node");
5
+ const node_2 = require("vscode-languageserver/node");
5
6
  const zmodel_module_1 = require("./zmodel-module");
6
7
  // Create a connection to the client
7
- const connection = (0, node_1.createConnection)(node_1.ProposedFeatures.all);
8
+ const connection = (0, node_2.createConnection)(node_2.ProposedFeatures.all);
8
9
  // Inject the shared services and language-specific services
9
- const { shared } = (0, zmodel_module_1.createZModelServices)({ connection });
10
+ const { shared } = (0, zmodel_module_1.createZModelServices)(Object.assign({ connection }, node_1.NodeFileSystem));
10
11
  // Start the language server with the shared services
11
12
  (0, langium_1.startLanguageServer)(shared);
12
13
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/language-server/main.ts"],"names":[],"mappings":";;AAAA,qCAA8C;AAC9C,qDAAgF;AAChF,mDAAuD;AAEvD,oCAAoC;AACpC,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,uBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1D,4DAA4D;AAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAoB,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AAExD,qDAAqD;AACrD,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/language-server/main.ts"],"names":[],"mappings":";;AAAA,qCAA8C;AAC9C,uCAA8C;AAC9C,qDAAgF;AAChF,mDAAuD;AAEvD,oCAAoC;AACpC,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,uBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1D,4DAA4D;AAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAoB,kBAAG,UAAU,IAAK,qBAAc,EAAG,CAAC;AAE3E,qDAAqD;AACrD,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAC"}
@@ -15,8 +15,11 @@ attribute relation()
15
15
  attribute default()
16
16
  attribute updatedAt()
17
17
  attribute unique()
18
+ attribute map()
19
+
18
20
  attribute allow()
19
21
  attribute deny()
22
+
20
23
  attribute email()
21
24
  attribute url()
22
25
  attribute length()
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants_1 = require("../constants");
4
+ const utils_1 = require("./utils");
5
+ class DataModelValidator {
6
+ validate(dm, accept) {
7
+ (0, utils_1.validateDuplicatedDeclarations)(dm.fields, accept);
8
+ this.validateFields(dm, accept);
9
+ }
10
+ validateFields(dm, accept) {
11
+ const idFields = dm.fields.filter((f) => f.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === 'id'; }));
12
+ if (idFields.length === 0) {
13
+ accept('error', 'Model must include a field with @id attribute', {
14
+ node: dm,
15
+ });
16
+ }
17
+ else if (idFields.length > 1) {
18
+ accept('error', 'Model can include at most one field with @id attribute', {
19
+ node: dm,
20
+ });
21
+ }
22
+ else {
23
+ if (idFields[0].type.optional) {
24
+ accept('error', 'Field with @id attribute must not be optional', { node: idFields[0] });
25
+ }
26
+ if (idFields[0].type.array ||
27
+ !idFields[0].type.type ||
28
+ !constants_1.SCALAR_TYPES.includes(idFields[0].type.type)) {
29
+ accept('error', 'Field with @id attribute must be of scalar type', { node: idFields[0] });
30
+ }
31
+ }
32
+ dm.fields.forEach((field) => this.validateField(field, accept));
33
+ }
34
+ validateField(field, accept) {
35
+ if (field.type.array && field.type.optional) {
36
+ accept('error', 'Optional lists are not supported. Use either `Type[]` or `Type?`', { node: field.type });
37
+ }
38
+ }
39
+ }
40
+ exports.default = DataModelValidator;
41
+ //# sourceMappingURL=datamodel-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datamodel-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/datamodel-validator.ts"],"names":[],"mappings":";;AAAA,+CAA+C;AAI/C,mCAAyD;AAEzD,MAAqB,kBAAkB;IACnC,QAAQ,CAAC,EAAa,EAAE,MAA0B;QAC9C,IAAA,sCAA8B,EAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,cAAc,CAAC,EAAa,EAAE,MAA0B;QAC5D,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACpC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,IAAI,CAAA,EAAA,CAAC,CAC5D,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,CAAC,OAAO,EAAE,+CAA+C,EAAE;gBAC7D,IAAI,EAAE,EAAE;aACX,CAAC,CAAC;SACN;aAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,MAAM,CACF,OAAO,EACP,wDAAwD,EACxD;gBACI,IAAI,EAAE,EAAE;aACX,CACJ,CAAC;SACL;aAAM;YACH,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC3B,MAAM,CACF,OAAO,EACP,+CAA+C,EAC/C,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CACxB,CAAC;aACL;YAED,IACI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;gBACtB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;gBACtB,CAAC,wBAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/C;gBACE,MAAM,CACF,OAAO,EACP,iDAAiD,EACjD,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CACxB,CAAC;aACL;SACJ;QAED,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAEO,aAAa,CACjB,KAAqB,EACrB,MAA0B;QAE1B,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzC,MAAM,CACF,OAAO,EACP,kEAAkE,EAClE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CACvB,CAAC;SACL;IACL,CAAC;CACJ;AA3DD,qCA2DC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ast_1 = require("../generated/ast");
4
+ const utils_1 = require("./utils");
5
+ const constants_1 = require("../constants");
6
+ const supportedFields = [
7
+ 'provider',
8
+ 'url',
9
+ 'shadowDatabaseUrl',
10
+ 'relationMode',
11
+ ];
12
+ class DataSourceValidator {
13
+ validate(ds, accept) {
14
+ (0, utils_1.validateDuplicatedDeclarations)(ds.fields, accept);
15
+ this.validateFields(ds, accept);
16
+ this.validateProvider(ds, accept);
17
+ this.validateUrl(ds, accept);
18
+ this.validateRelationMode(ds, accept);
19
+ }
20
+ validateFields(ds, accept) {
21
+ ds.fields.forEach((f) => {
22
+ if (!supportedFields.includes(f.name)) {
23
+ accept('error', `Unexpected field "${f.name}"`, { node: f });
24
+ }
25
+ });
26
+ }
27
+ validateProvider(ds, accept) {
28
+ const provider = ds.fields.find((f) => f.name === 'provider');
29
+ if (!provider) {
30
+ accept('error', 'datasource must include a "provider" field', {
31
+ node: ds,
32
+ });
33
+ return;
34
+ }
35
+ const value = (0, utils_1.getStringLiteral)(provider.value);
36
+ if (!value) {
37
+ accept('error', '"provider" must be set to a string literal', {
38
+ node: provider.value,
39
+ });
40
+ }
41
+ else if (!constants_1.SUPPORTED_PROVIDERS.includes(value)) {
42
+ accept('error', `Provider "${value}" is not supported. Choose from ${constants_1.SUPPORTED_PROVIDERS.map((p) => '"' + p + '"').join(' | ')}.`, { node: provider.value });
43
+ }
44
+ }
45
+ validateUrl(ds, accept) {
46
+ var _a;
47
+ const url = ds.fields.find((f) => f.name === 'url');
48
+ if (!url) {
49
+ accept('error', 'datasource must include a "url" field', {
50
+ node: ds,
51
+ });
52
+ }
53
+ for (const fieldName of ['url', 'shadowDatabaseUrl']) {
54
+ const field = ds.fields.find((f) => f.name === fieldName);
55
+ if (!field) {
56
+ continue;
57
+ }
58
+ const value = (0, utils_1.getStringLiteral)(field.value);
59
+ if (!value &&
60
+ !((0, ast_1.isInvocationExpr)(field.value) &&
61
+ ((_a = field.value.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'env')) {
62
+ accept('error', `"${fieldName}" must be set to a string literal or an invocation of "env" function`, { node: field.value });
63
+ }
64
+ }
65
+ }
66
+ validateRelationMode(ds, accept) {
67
+ const field = ds.fields.find((f) => f.name === 'relationMode');
68
+ if (field) {
69
+ const val = (0, utils_1.getStringLiteral)(field.value);
70
+ if (!val || !['foreignKeys', 'prisma'].includes(val)) {
71
+ accept('error', '"relationMode" must be set to "foreignKeys" or "prisma"', { node: field.value });
72
+ }
73
+ }
74
+ }
75
+ }
76
+ exports.default = DataSourceValidator;
77
+ //# sourceMappingURL=datasource-validator%20copy.js.map