zenstack 1.0.0 → 1.0.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 (300) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +194 -1
  3. package/bin/cli +3 -0
  4. package/bin/post-install.js +24 -0
  5. package/cli/actions/generate.d.ts +13 -0
  6. package/cli/actions/generate.js +71 -0
  7. package/cli/actions/generate.js.map +1 -0
  8. package/cli/actions/index.d.ts +3 -0
  9. package/cli/actions/index.js +20 -0
  10. package/cli/actions/index.js.map +1 -0
  11. package/cli/actions/info.d.ts +4 -0
  12. package/cli/actions/info.js +63 -0
  13. package/cli/actions/info.js.map +1 -0
  14. package/cli/actions/init.d.ts +12 -0
  15. package/cli/actions/init.js +83 -0
  16. package/cli/actions/init.js.map +1 -0
  17. package/cli/cli-error.d.ts +5 -0
  18. package/cli/cli-error.js +10 -0
  19. package/cli/cli-error.js.map +1 -0
  20. package/cli/cli-util.d.ts +21 -0
  21. package/cli/cli-util.js +211 -0
  22. package/cli/cli-util.js.map +1 -0
  23. package/cli/config.d.ts +10 -0
  24. package/cli/config.js +62 -0
  25. package/cli/config.js.map +1 -0
  26. package/cli/index.d.ts +7 -0
  27. package/cli/index.js +128 -0
  28. package/cli/index.js.map +1 -0
  29. package/cli/plugin-runner.d.ts +24 -0
  30. package/cli/plugin-runner.js +229 -0
  31. package/cli/plugin-runner.js.map +1 -0
  32. package/constants.d.ts +1 -0
  33. package/constants.js +6 -0
  34. package/constants.js.map +1 -0
  35. package/language-server/constants.d.ts +22 -0
  36. package/language-server/constants.js +27 -0
  37. package/language-server/constants.js.map +1 -0
  38. package/language-server/main.d.ts +1 -0
  39. package/language-server/main.js +13 -0
  40. package/language-server/main.js.map +1 -0
  41. package/language-server/types.d.ts +10 -0
  42. package/language-server/types.js +3 -0
  43. package/language-server/types.js.map +1 -0
  44. package/language-server/utils.d.ts +5 -0
  45. package/language-server/utils.js +22 -0
  46. package/language-server/utils.js.map +1 -0
  47. package/language-server/validator/attribute-application-validator.d.ts +15 -0
  48. package/language-server/validator/attribute-application-validator.js +246 -0
  49. package/language-server/validator/attribute-application-validator.js.map +1 -0
  50. package/language-server/validator/attribute-validator.d.ts +9 -0
  51. package/language-server/validator/attribute-validator.js +14 -0
  52. package/language-server/validator/attribute-validator.js.map +1 -0
  53. package/language-server/validator/datamodel-validator.d.ts +22 -0
  54. package/language-server/validator/datamodel-validator.js +329 -0
  55. package/language-server/validator/datamodel-validator.js.map +1 -0
  56. package/language-server/validator/datasource-validator.d.ts +12 -0
  57. package/language-server/validator/datasource-validator.js +66 -0
  58. package/language-server/validator/datasource-validator.js.map +1 -0
  59. package/language-server/validator/enum-validator.d.ts +11 -0
  60. package/language-server/validator/enum-validator.js +25 -0
  61. package/language-server/validator/enum-validator.js.map +1 -0
  62. package/language-server/validator/expression-validator.d.ts +10 -0
  63. package/language-server/validator/expression-validator.js +135 -0
  64. package/language-server/validator/expression-validator.js.map +1 -0
  65. package/language-server/validator/function-decl-validator.d.ts +9 -0
  66. package/language-server/validator/function-decl-validator.js +13 -0
  67. package/language-server/validator/function-decl-validator.js.map +1 -0
  68. package/language-server/validator/function-invocation-validator.d.ts +11 -0
  69. package/language-server/validator/function-invocation-validator.js +135 -0
  70. package/language-server/validator/function-invocation-validator.js.map +1 -0
  71. package/language-server/validator/schema-validator.d.ts +13 -0
  72. package/language-server/validator/schema-validator.js +49 -0
  73. package/language-server/validator/schema-validator.js.map +1 -0
  74. package/language-server/validator/utils.d.ts +24 -0
  75. package/language-server/validator/utils.js +154 -0
  76. package/language-server/validator/utils.js.map +1 -0
  77. package/language-server/validator/zmodel-validator.d.ts +25 -0
  78. package/language-server/validator/zmodel-validator.js +83 -0
  79. package/language-server/validator/zmodel-validator.js.map +1 -0
  80. package/language-server/zmodel-code-action.d.ts +15 -0
  81. package/language-server/zmodel-code-action.js +118 -0
  82. package/language-server/zmodel-code-action.js.map +1 -0
  83. package/language-server/zmodel-definition.d.ts +7 -0
  84. package/language-server/zmodel-definition.js +31 -0
  85. package/language-server/zmodel-definition.js.map +1 -0
  86. package/language-server/zmodel-formatter.d.ts +9 -0
  87. package/language-server/zmodel-formatter.js +76 -0
  88. package/language-server/zmodel-formatter.js.map +1 -0
  89. package/language-server/zmodel-linker.d.ts +32 -0
  90. package/language-server/zmodel-linker.js +447 -0
  91. package/language-server/zmodel-linker.js.map +1 -0
  92. package/language-server/zmodel-module.d.ts +41 -0
  93. package/language-server/zmodel-module.js +83 -0
  94. package/language-server/zmodel-module.js.map +1 -0
  95. package/language-server/zmodel-scope.d.ts +16 -0
  96. package/language-server/zmodel-scope.js +100 -0
  97. package/language-server/zmodel-scope.js.map +1 -0
  98. package/language-server/zmodel-workspace-manager.d.ts +12 -0
  99. package/language-server/zmodel-workspace-manager.js +138 -0
  100. package/language-server/zmodel-workspace-manager.js.map +1 -0
  101. package/package.json +140 -8
  102. package/plugins/access-policy/expression-writer.d.ts +46 -0
  103. package/plugins/access-policy/expression-writer.js +580 -0
  104. package/plugins/access-policy/expression-writer.js.map +1 -0
  105. package/plugins/access-policy/index.d.ts +4 -0
  106. package/plugins/access-policy/index.js +22 -0
  107. package/plugins/access-policy/index.js.map +1 -0
  108. package/plugins/access-policy/policy-guard-generator.d.ts +22 -0
  109. package/plugins/access-policy/policy-guard-generator.js +634 -0
  110. package/plugins/access-policy/policy-guard-generator.js.map +1 -0
  111. package/plugins/model-meta/index.d.ts +4 -0
  112. package/plugins/model-meta/index.js +232 -0
  113. package/plugins/model-meta/index.js.map +1 -0
  114. package/plugins/plugin-utils.d.ts +17 -0
  115. package/plugins/plugin-utils.js +80 -0
  116. package/plugins/plugin-utils.js.map +1 -0
  117. package/plugins/prisma/indent-string.d.ts +4 -0
  118. package/plugins/prisma/indent-string.js +12 -0
  119. package/plugins/prisma/indent-string.js.map +1 -0
  120. package/plugins/prisma/index.d.ts +4 -0
  121. package/plugins/prisma/index.js +22 -0
  122. package/plugins/prisma/index.js.map +1 -0
  123. package/plugins/prisma/prisma-builder.d.ts +145 -0
  124. package/plugins/prisma/prisma-builder.js +358 -0
  125. package/plugins/prisma/prisma-builder.js.map +1 -0
  126. package/plugins/prisma/schema-generator.d.ts +29 -0
  127. package/plugins/prisma/schema-generator.js +336 -0
  128. package/plugins/prisma/schema-generator.js.map +1 -0
  129. package/plugins/prisma/zmodel-code-generator.d.ts +30 -0
  130. package/plugins/prisma/zmodel-code-generator.js +124 -0
  131. package/plugins/prisma/zmodel-code-generator.js.map +1 -0
  132. package/plugins/zod/generator.d.ts +4 -0
  133. package/plugins/zod/generator.js +254 -0
  134. package/plugins/zod/generator.js.map +1 -0
  135. package/plugins/zod/index.d.ts +4 -0
  136. package/plugins/zod/index.js +24 -0
  137. package/plugins/zod/index.js.map +1 -0
  138. package/plugins/zod/transformer.d.ts +68 -0
  139. package/plugins/zod/transformer.js +554 -0
  140. package/plugins/zod/transformer.js.map +1 -0
  141. package/plugins/zod/types.d.ts +25 -0
  142. package/plugins/zod/types.js +3 -0
  143. package/plugins/zod/types.js.map +1 -0
  144. package/plugins/zod/utils/removeDir.d.ts +1 -0
  145. package/plugins/zod/utils/removeDir.js +30 -0
  146. package/plugins/zod/utils/removeDir.js.map +1 -0
  147. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  148. package/plugins/zod/utils/schema-gen.js +188 -0
  149. package/plugins/zod/utils/schema-gen.js.map +1 -0
  150. package/res/prism-zmodel.js +20 -0
  151. package/res/starter.zmodel +51 -0
  152. package/res/stdlib.zmodel +506 -0
  153. package/telemetry.d.ts +21 -0
  154. package/telemetry.js +129 -0
  155. package/telemetry.js.map +1 -0
  156. package/utils/ast-utils.d.ts +13 -0
  157. package/utils/ast-utils.js +136 -0
  158. package/utils/ast-utils.js.map +1 -0
  159. package/utils/exec-utils.d.ts +6 -0
  160. package/utils/exec-utils.js +13 -0
  161. package/utils/exec-utils.js.map +1 -0
  162. package/utils/pkg-utils.d.ts +3 -0
  163. package/utils/pkg-utils.js +64 -0
  164. package/utils/pkg-utils.js.map +1 -0
  165. package/utils/typescript-expression-transformer.d.ts +54 -0
  166. package/utils/typescript-expression-transformer.js +326 -0
  167. package/utils/typescript-expression-transformer.js.map +1 -0
  168. package/utils/version-utils.d.ts +1 -0
  169. package/utils/version-utils.js +20 -0
  170. package/utils/version-utils.js.map +1 -0
  171. package/.vscode/extensions.json +0 -7
  172. package/.vscode/launch.json +0 -49
  173. package/.vscode/settings.json +0 -4
  174. package/packages/internal/jest.config.ts +0 -32
  175. package/packages/internal/package.json +0 -42
  176. package/packages/internal/src/constants.ts +0 -1
  177. package/packages/internal/src/handler/data/guard-utils.ts +0 -7
  178. package/packages/internal/src/handler/data/handler.ts +0 -415
  179. package/packages/internal/src/handler/data/query-processor.ts +0 -504
  180. package/packages/internal/src/handler/index.ts +0 -1
  181. package/packages/internal/src/handler/types.ts +0 -20
  182. package/packages/internal/src/index.ts +0 -3
  183. package/packages/internal/src/request-handler.ts +0 -27
  184. package/packages/internal/src/request.ts +0 -101
  185. package/packages/internal/src/types.ts +0 -40
  186. package/packages/internal/tests/query-processor.test.ts +0 -172
  187. package/packages/internal/tsconfig.json +0 -21
  188. package/packages/runtime/auth.d.ts +0 -1
  189. package/packages/runtime/auth.js +0 -3
  190. package/packages/runtime/hooks.d.ts +0 -10
  191. package/packages/runtime/hooks.js +0 -3
  192. package/packages/runtime/index.d.ts +0 -3
  193. package/packages/runtime/index.js +0 -1
  194. package/packages/runtime/package-lock.json +0 -512
  195. package/packages/runtime/package.json +0 -16
  196. package/packages/runtime/server.d.ts +0 -1
  197. package/packages/runtime/server.js +0 -3
  198. package/packages/runtime/types.d.ts +0 -1
  199. package/packages/runtime/types.js +0 -3
  200. package/packages/schema/.eslintrc.json +0 -13
  201. package/packages/schema/.vscodeignore +0 -4
  202. package/packages/schema/asset/logo-dark.png +0 -0
  203. package/packages/schema/asset/logo-light.png +0 -0
  204. package/packages/schema/bin/cli +0 -3
  205. package/packages/schema/jest.config.ts +0 -32
  206. package/packages/schema/langium-config.json +0 -14
  207. package/packages/schema/langium-quickstart.md +0 -41
  208. package/packages/schema/language-configuration.json +0 -30
  209. package/packages/schema/package.json +0 -96
  210. package/packages/schema/src/cli/cli-util.ts +0 -80
  211. package/packages/schema/src/cli/index.ts +0 -64
  212. package/packages/schema/src/extension.ts +0 -76
  213. package/packages/schema/src/generator/constants.ts +0 -5
  214. package/packages/schema/src/generator/index.ts +0 -92
  215. package/packages/schema/src/generator/next-auth/index.ts +0 -197
  216. package/packages/schema/src/generator/package.template.json +0 -9
  217. package/packages/schema/src/generator/prisma/expression-writer.ts +0 -352
  218. package/packages/schema/src/generator/prisma/index.ts +0 -32
  219. package/packages/schema/src/generator/prisma/plain-expression-builder.ts +0 -91
  220. package/packages/schema/src/generator/prisma/prisma-builder.ts +0 -366
  221. package/packages/schema/src/generator/prisma/query-gard-generator.ts +0 -208
  222. package/packages/schema/src/generator/prisma/schema-generator.ts +0 -300
  223. package/packages/schema/src/generator/react-hooks/index.ts +0 -181
  224. package/packages/schema/src/generator/service/index.ts +0 -107
  225. package/packages/schema/src/generator/tsconfig.template.json +0 -17
  226. package/packages/schema/src/generator/types.ts +0 -17
  227. package/packages/schema/src/generator/utils.ts +0 -9
  228. package/packages/schema/src/language-server/generated/ast.ts +0 -603
  229. package/packages/schema/src/language-server/generated/grammar.ts +0 -2190
  230. package/packages/schema/src/language-server/generated/module.ts +0 -24
  231. package/packages/schema/src/language-server/main.ts +0 -12
  232. package/packages/schema/src/language-server/stdlib.zmodel +0 -22
  233. package/packages/schema/src/language-server/types.ts +0 -9
  234. package/packages/schema/src/language-server/zmodel-index.ts +0 -33
  235. package/packages/schema/src/language-server/zmodel-linker.ts +0 -409
  236. package/packages/schema/src/language-server/zmodel-module.ts +0 -90
  237. package/packages/schema/src/language-server/zmodel-scope.ts +0 -21
  238. package/packages/schema/src/language-server/zmodel-validator.ts +0 -35
  239. package/packages/schema/src/language-server/zmodel.langium +0 -186
  240. package/packages/schema/src/utils/exec-utils.ts +0 -5
  241. package/packages/schema/src/utils/indent-string.ts +0 -6
  242. package/packages/schema/syntaxes/zmodel.json +0 -57
  243. package/packages/schema/syntaxes/zmodel.tmLanguage.json +0 -57
  244. package/packages/schema/tests/generator/expression-writer.test.ts +0 -676
  245. package/packages/schema/tests/generator/prisma-builder.test.ts +0 -138
  246. package/packages/schema/tests/schema/parser.test.ts +0 -423
  247. package/packages/schema/tests/schema/sample-todo.test.ts +0 -14
  248. package/packages/schema/tests/utils.ts +0 -38
  249. package/packages/schema/tsconfig.json +0 -23
  250. package/pnpm-workspace.yaml +0 -3
  251. package/samples/todo/.env +0 -2
  252. package/samples/todo/.eslintrc.json +0 -3
  253. package/samples/todo/.vscode/launch.json +0 -11
  254. package/samples/todo/README.md +0 -34
  255. package/samples/todo/components/AuthGuard.tsx +0 -17
  256. package/samples/todo/components/Avatar.tsx +0 -22
  257. package/samples/todo/components/BreadCrumb.tsx +0 -44
  258. package/samples/todo/components/ManageMembers.tsx +0 -134
  259. package/samples/todo/components/NavBar.tsx +0 -57
  260. package/samples/todo/components/SpaceMembers.tsx +0 -76
  261. package/samples/todo/components/Spaces.tsx +0 -28
  262. package/samples/todo/components/TimeInfo.tsx +0 -17
  263. package/samples/todo/components/Todo.tsx +0 -72
  264. package/samples/todo/components/TodoList.tsx +0 -77
  265. package/samples/todo/lib/context.ts +0 -31
  266. package/samples/todo/next.config.js +0 -10
  267. package/samples/todo/package-lock.json +0 -7527
  268. package/samples/todo/package.json +0 -45
  269. package/samples/todo/pages/_app.tsx +0 -50
  270. package/samples/todo/pages/api/auth/[...nextauth].ts +0 -83
  271. package/samples/todo/pages/api/zenstack/[...path].ts +0 -16
  272. package/samples/todo/pages/create-space.tsx +0 -114
  273. package/samples/todo/pages/index.tsx +0 -32
  274. package/samples/todo/pages/space/[slug]/[listId]/index.tsx +0 -88
  275. package/samples/todo/pages/space/[slug]/index.tsx +0 -169
  276. package/samples/todo/postcss.config.js +0 -6
  277. package/samples/todo/public/avatar.jpg +0 -0
  278. package/samples/todo/public/favicon.ico +0 -0
  279. package/samples/todo/public/logo.png +0 -0
  280. package/samples/todo/public/vercel.svg +0 -4
  281. package/samples/todo/styles/globals.css +0 -7
  282. package/samples/todo/tailwind.config.js +0 -11
  283. package/samples/todo/tsconfig.json +0 -28
  284. package/samples/todo/types/next-auth.d.ts +0 -14
  285. package/samples/todo/types/next.d.ts +0 -16
  286. package/samples/todo/zenstack/migrations/20221014084317_init/migration.sql +0 -153
  287. package/samples/todo/zenstack/migrations/20221020094651_upate_cli/migration.sql +0 -23
  288. package/samples/todo/zenstack/migrations/migration_lock.toml +0 -3
  289. package/samples/todo/zenstack/schema.prisma +0 -126
  290. package/samples/todo/zenstack/schema.zmodel +0 -161
  291. package/tests/integration/jest.config.ts +0 -16
  292. package/tests/integration/package-lock.json +0 -1081
  293. package/tests/integration/package.json +0 -27
  294. package/tests/integration/tests/operation-coverate.test.ts +0 -563
  295. package/tests/integration/tests/operations.zmodel +0 -69
  296. package/tests/integration/tests/todo-e2e.test.ts +0 -577
  297. package/tests/integration/tests/todo.zmodel +0 -123
  298. package/tests/integration/tests/tsconfig.template.json +0 -10
  299. package/tests/integration/tests/utils.ts +0 -133
  300. package/tests/integration/tsconfig.json +0 -10
@@ -0,0 +1,447 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ZModelLinker = void 0;
13
+ const ast_1 = require("@zenstackhq/language/ast");
14
+ const sdk_1 = require("@zenstackhq/sdk");
15
+ const langium_1 = require("langium");
16
+ const ts_pattern_1 = require("ts-pattern");
17
+ const vscode_jsonrpc_1 = require("vscode-jsonrpc");
18
+ const ast_utils_1 = require("../utils/ast-utils");
19
+ const utils_1 = require("./validator/utils");
20
+ /**
21
+ * Langium linker implementation which links references and resolves expression types
22
+ */
23
+ class ZModelLinker extends langium_1.DefaultLinker {
24
+ constructor(services) {
25
+ super(services);
26
+ this.descriptions = services.workspace.AstNodeDescriptionProvider;
27
+ }
28
+ //#region Reference linking
29
+ link(document, cancelToken = vscode_jsonrpc_1.CancellationToken.None) {
30
+ var _a, _b;
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ if (((_a = document.parseResult.lexerErrors) === null || _a === void 0 ? void 0 : _a.length) > 0 || ((_b = document.parseResult.parserErrors) === null || _b === void 0 ? void 0 : _b.length) > 0) {
33
+ return;
34
+ }
35
+ for (const node of (0, langium_1.streamContents)(document.parseResult.value)) {
36
+ yield (0, langium_1.interruptAndCheck)(cancelToken);
37
+ this.resolve(node, document);
38
+ }
39
+ document.state = langium_1.DocumentState.Linked;
40
+ });
41
+ }
42
+ linkReference(container, property, document, extraScopes) {
43
+ if (!this.resolveFromScopeProviders(container, property, document, extraScopes)) {
44
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
+ const reference = container[property];
46
+ this.doLink({ reference, container, property }, document);
47
+ }
48
+ }
49
+ //#endregion
50
+ //#region Expression type resolving
51
+ resolveFromScopeProviders(node, property, document, providers) {
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ const reference = node[property];
54
+ for (const provider of providers) {
55
+ const target = provider(reference.$refText);
56
+ if (target) {
57
+ reference._ref = target;
58
+ reference._nodeDescription = this.descriptions.createDescription(target, target.name, document);
59
+ return target;
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ resolve(node, document, extraScopes = []) {
65
+ switch (node.$type) {
66
+ case ast_1.StringLiteral:
67
+ case ast_1.NumberLiteral:
68
+ case ast_1.BooleanLiteral:
69
+ this.resolveLiteral(node);
70
+ break;
71
+ case ast_1.InvocationExpr:
72
+ this.resolveInvocation(node, document, extraScopes);
73
+ break;
74
+ case ast_1.ArrayExpr:
75
+ this.resolveArray(node, document, extraScopes);
76
+ break;
77
+ case ast_1.ReferenceExpr:
78
+ this.resolveReference(node, document, extraScopes);
79
+ break;
80
+ case ast_1.MemberAccessExpr:
81
+ this.resolveMemberAccess(node, document, extraScopes);
82
+ break;
83
+ case ast_1.UnaryExpr:
84
+ this.resolveUnary(node, document, extraScopes);
85
+ break;
86
+ case ast_1.BinaryExpr:
87
+ this.resolveBinary(node, document, extraScopes);
88
+ break;
89
+ case ast_1.ObjectExpr:
90
+ this.resolveObject(node, document, extraScopes);
91
+ break;
92
+ case ast_1.ThisExpr:
93
+ this.resolveThis(node, document, extraScopes);
94
+ break;
95
+ case ast_1.NullExpr:
96
+ this.resolveNull(node, document, extraScopes);
97
+ break;
98
+ case ast_1.AttributeArg:
99
+ this.resolveAttributeArg(node, document, extraScopes);
100
+ break;
101
+ case ast_1.DataModel:
102
+ this.resolveDataModel(node, document, extraScopes);
103
+ break;
104
+ case ast_1.DataModelField:
105
+ this.resolveDataModelField(node, document, extraScopes);
106
+ break;
107
+ default:
108
+ this.resolveDefault(node, document, extraScopes);
109
+ break;
110
+ }
111
+ }
112
+ resolveBinary(node, document, extraScopes) {
113
+ switch (node.operator) {
114
+ // TODO: support arithmetics?
115
+ // case '+':
116
+ // case '-':
117
+ // case '*':
118
+ // case '/':
119
+ // this.resolve(node.left, document, extraScopes);
120
+ // this.resolve(node.right, document, extraScopes);
121
+ // this.resolveToBuiltinTypeOrDecl(node, 'Int');
122
+ // break;
123
+ case '>':
124
+ case '>=':
125
+ case '<':
126
+ case '<=':
127
+ case '==':
128
+ case '!=':
129
+ case '&&':
130
+ case '||':
131
+ case 'in':
132
+ this.resolve(node.left, document, extraScopes);
133
+ this.resolve(node.right, document, extraScopes);
134
+ this.resolveToBuiltinTypeOrDecl(node, 'Boolean');
135
+ break;
136
+ case '?':
137
+ case '!':
138
+ case '^':
139
+ this.resolveCollectionPredicate(node, document, extraScopes);
140
+ break;
141
+ default:
142
+ throw Error(`Unsupported binary operator: ${node.operator}`);
143
+ }
144
+ }
145
+ resolveUnary(node, document, extraScopes) {
146
+ this.resolve(node.operand, document, extraScopes);
147
+ switch (node.operator) {
148
+ case '!':
149
+ this.resolveToBuiltinTypeOrDecl(node, 'Boolean');
150
+ break;
151
+ default:
152
+ throw Error(`Unsupported unary operator: ${node.operator}`);
153
+ }
154
+ }
155
+ resolveObject(node, document, extraScopes) {
156
+ node.fields.forEach((field) => this.resolve(field.value, document, extraScopes));
157
+ this.resolveToBuiltinTypeOrDecl(node, 'Object');
158
+ }
159
+ resolveReference(node, document, extraScopes) {
160
+ this.linkReference(node, 'target', document, extraScopes);
161
+ node.args.forEach((arg) => this.resolve(arg, document, extraScopes));
162
+ if (node.target.ref) {
163
+ // resolve type
164
+ if (node.target.ref.$type === ast_1.EnumField) {
165
+ this.resolveToBuiltinTypeOrDecl(node, node.target.ref.$container);
166
+ }
167
+ else {
168
+ this.resolveToDeclaredType(node, node.target.ref.type);
169
+ }
170
+ }
171
+ }
172
+ resolveArray(node, document, extraScopes) {
173
+ node.items.forEach((item) => this.resolve(item, document, extraScopes));
174
+ if (node.items.length > 0) {
175
+ const itemType = node.items[0].$resolvedType;
176
+ if (itemType === null || itemType === void 0 ? void 0 : itemType.decl) {
177
+ this.resolveToBuiltinTypeOrDecl(node, itemType.decl, true);
178
+ }
179
+ }
180
+ else {
181
+ this.resolveToBuiltinTypeOrDecl(node, 'Any', true);
182
+ }
183
+ }
184
+ resolveInvocation(node, document, extraScopes) {
185
+ this.linkReference(node, 'function', document, extraScopes);
186
+ node.args.forEach((arg) => this.resolve(arg, document, extraScopes));
187
+ if (node.function.ref) {
188
+ // eslint-disable-next-line @typescript-eslint/ban-types
189
+ const funcDecl = node.function.ref;
190
+ if (funcDecl.name === 'auth' && (0, sdk_1.isFromStdlib)(funcDecl)) {
191
+ // auth() function is resolved to User model in the current document
192
+ const model = (0, sdk_1.getContainingModel)(node);
193
+ if (model) {
194
+ const userModel = (0, ast_utils_1.getAllDeclarationsFromImports)(this.langiumDocuments(), model).find((d) => (0, ast_1.isDataModel)(d) && d.name === 'User');
195
+ if (userModel) {
196
+ node.$resolvedType = { decl: userModel, nullable: true };
197
+ }
198
+ }
199
+ }
200
+ else if (funcDecl.name === 'future' && (0, sdk_1.isFromStdlib)(funcDecl)) {
201
+ // future() function is resolved to current model
202
+ node.$resolvedType = { decl: this.getContainingDataModel(node) };
203
+ }
204
+ else {
205
+ this.resolveToDeclaredType(node, funcDecl.returnType);
206
+ }
207
+ }
208
+ }
209
+ getContainingDataModel(node) {
210
+ let curr = node.$container;
211
+ while (curr) {
212
+ if ((0, ast_1.isDataModel)(curr)) {
213
+ return curr;
214
+ }
215
+ curr = curr.$container;
216
+ }
217
+ return undefined;
218
+ }
219
+ resolveLiteral(node) {
220
+ const type = (0, ts_pattern_1.match)(node)
221
+ .when(ast_1.isStringLiteral, () => 'String')
222
+ .when(ast_1.isBooleanLiteral, () => 'Boolean')
223
+ .when(ast_1.isNumberLiteral, () => 'Int')
224
+ .exhaustive();
225
+ if (type) {
226
+ this.resolveToBuiltinTypeOrDecl(node, type);
227
+ }
228
+ }
229
+ resolveMemberAccess(node, document, extraScopes) {
230
+ this.resolve(node.operand, document, extraScopes);
231
+ const operandResolved = node.operand.$resolvedType;
232
+ if (operandResolved && !operandResolved.array && (0, ast_1.isDataModel)(operandResolved.decl)) {
233
+ const modelDecl = operandResolved.decl;
234
+ const provider = (name) => modelDecl.$resolvedFields.find((f) => f.name === name);
235
+ extraScopes = [provider, ...extraScopes];
236
+ }
237
+ this.linkReference(node, 'member', document, extraScopes);
238
+ if (node.member.ref) {
239
+ this.resolveToDeclaredType(node, node.member.ref.type);
240
+ }
241
+ }
242
+ resolveCollectionPredicate(node, document, extraScopes) {
243
+ this.resolve(node.left, document, extraScopes);
244
+ const resolvedType = node.left.$resolvedType;
245
+ if (resolvedType && (0, ast_1.isDataModel)(resolvedType.decl) && resolvedType.array) {
246
+ const dataModelDecl = resolvedType.decl;
247
+ const provider = (name) => {
248
+ if (name === 'this') {
249
+ return dataModelDecl;
250
+ }
251
+ else {
252
+ return dataModelDecl.$resolvedFields.find((f) => f.name === name);
253
+ }
254
+ };
255
+ extraScopes = [provider, ...extraScopes];
256
+ this.resolve(node.right, document, extraScopes);
257
+ this.resolveToBuiltinTypeOrDecl(node, 'Boolean');
258
+ }
259
+ else {
260
+ // error is reported in validation pass
261
+ }
262
+ }
263
+ resolveThis(node, _document, extraScopes) {
264
+ // resolve from scopes first
265
+ for (const scope of extraScopes) {
266
+ const r = scope('this');
267
+ if ((0, ast_1.isDataModel)(r)) {
268
+ this.resolveToBuiltinTypeOrDecl(node, r);
269
+ return;
270
+ }
271
+ }
272
+ let decl = node.$container;
273
+ while (decl && !(0, ast_1.isDataModel)(decl)) {
274
+ decl = decl.$container;
275
+ }
276
+ if (decl) {
277
+ this.resolveToBuiltinTypeOrDecl(node, decl);
278
+ }
279
+ }
280
+ resolveNull(node, _document, _extraScopes) {
281
+ // TODO: how to really resolve null?
282
+ this.resolveToBuiltinTypeOrDecl(node, 'Null');
283
+ }
284
+ resolveAttributeArg(node, document, extraScopes) {
285
+ var _a, _b, _c;
286
+ const attrParam = this.findAttrParamForArg(node);
287
+ const attrAppliedOn = node.$container.$container;
288
+ if ((attrParam === null || attrParam === void 0 ? void 0 : attrParam.type.type) === 'TransitiveFieldReference' && (0, ast_1.isDataModelField)(attrAppliedOn)) {
289
+ // "TransitiveFieldReference" is resolved in the context of the containing model of the field
290
+ // where the attribute is applied
291
+ //
292
+ // E.g.:
293
+ //
294
+ // model A {
295
+ // myId @id String
296
+ // }
297
+ //
298
+ // model B {
299
+ // id @id String
300
+ // a A @relation(fields: [id], references: [myId])
301
+ // }
302
+ //
303
+ // In model B, the attribute argument "myId" is resolved to the field "myId" in model A
304
+ const transtiveDataModel = (_a = attrAppliedOn.type.reference) === null || _a === void 0 ? void 0 : _a.ref;
305
+ if (transtiveDataModel) {
306
+ // resolve references in the context of the transitive data model
307
+ const scopeProvider = (name) => transtiveDataModel.$resolvedFields.find((f) => f.name === name);
308
+ if ((0, ast_1.isArrayExpr)(node.value)) {
309
+ node.value.items.forEach((item) => {
310
+ if ((0, ast_1.isReferenceExpr)(item)) {
311
+ const resolved = this.resolveFromScopeProviders(item, 'target', document, [scopeProvider]);
312
+ if (resolved) {
313
+ this.resolveToDeclaredType(item, resolved.type);
314
+ }
315
+ else {
316
+ // need to clear linked reference, because it's resolved in default scope by default
317
+ const ref = item.target;
318
+ ref._ref = this.createLinkingError({
319
+ reference: ref,
320
+ container: item,
321
+ property: 'target',
322
+ });
323
+ }
324
+ }
325
+ });
326
+ if ((_c = (_b = node.value.items[0]) === null || _b === void 0 ? void 0 : _b.$resolvedType) === null || _c === void 0 ? void 0 : _c.decl) {
327
+ this.resolveToBuiltinTypeOrDecl(node.value, node.value.items[0].$resolvedType.decl, true);
328
+ }
329
+ }
330
+ else if ((0, ast_1.isReferenceExpr)(node.value)) {
331
+ const resolved = this.resolveFromScopeProviders(node.value, 'target', document, [scopeProvider]);
332
+ if (resolved) {
333
+ this.resolveToDeclaredType(node.value, resolved.type);
334
+ }
335
+ else {
336
+ // need to clear linked reference, because it's resolved in default scope by default
337
+ const ref = node.value.target;
338
+ ref._ref = this.createLinkingError({
339
+ reference: ref,
340
+ container: node.value,
341
+ property: 'target',
342
+ });
343
+ }
344
+ }
345
+ }
346
+ }
347
+ else {
348
+ this.resolve(node.value, document, extraScopes);
349
+ }
350
+ node.$resolvedType = node.value.$resolvedType;
351
+ }
352
+ findAttrParamForArg(arg) {
353
+ var _a;
354
+ const attr = arg.$container.decl.ref;
355
+ if (!attr) {
356
+ return undefined;
357
+ }
358
+ if (arg.name) {
359
+ return (_a = attr.params) === null || _a === void 0 ? void 0 : _a.find((p) => p.name === arg.name);
360
+ }
361
+ else {
362
+ const index = arg.$container.args.findIndex((a) => a === arg);
363
+ return attr.params[index];
364
+ }
365
+ }
366
+ resolveDataModel(node, document, extraScopes) {
367
+ if (node.superTypes.length > 0) {
368
+ const providers = node.superTypes.map((superType) => (name) => { var _a; return (_a = superType.ref) === null || _a === void 0 ? void 0 : _a.fields.find((f) => f.name === name); });
369
+ extraScopes = [...providers, ...extraScopes];
370
+ }
371
+ return this.resolveDefault(node, document, extraScopes);
372
+ }
373
+ resolveDataModelField(node, document, extraScopes) {
374
+ // Field declaration may contain enum references, and enum fields are pushed to the global
375
+ // scope, so if there're enums with fields with the same name, an arbitrary one will be
376
+ // used as resolution target. The correct behavior is to resolve to the enum that's used
377
+ // as the declaration type of the field:
378
+ //
379
+ // enum FirstEnum {
380
+ // E1
381
+ // E2
382
+ // }
383
+ var _a;
384
+ // enum SecondEnum {
385
+ // E1
386
+ // E3
387
+ // E4
388
+ // }
389
+ // model M {
390
+ // id Int @id
391
+ // first SecondEnum @default(E1) <- should resolve to SecondEnum
392
+ // second FirstEnum @default(E1) <- should resolve to FirstEnum
393
+ // }
394
+ //
395
+ // make sure type is resolved first
396
+ this.resolve(node.type, document, extraScopes);
397
+ let scopes = extraScopes;
398
+ // if the field has enum declaration type, resolve the rest with that enum's fields on top of the scopes
399
+ if (((_a = node.type.reference) === null || _a === void 0 ? void 0 : _a.ref) && (0, ast_1.isEnum)(node.type.reference.ref)) {
400
+ const contextEnum = node.type.reference.ref;
401
+ const enumScope = (name) => contextEnum.fields.find((f) => f.name === name);
402
+ scopes = [enumScope, ...scopes];
403
+ }
404
+ this.resolveDefault(node, document, scopes);
405
+ }
406
+ resolveDefault(node, document, extraScopes) {
407
+ for (const [property, value] of Object.entries(node)) {
408
+ if (!property.startsWith('$')) {
409
+ if ((0, langium_1.isReference)(value)) {
410
+ this.linkReference(node, property, document, extraScopes);
411
+ }
412
+ }
413
+ }
414
+ for (const child of (0, langium_1.streamContents)(node)) {
415
+ this.resolve(child, document, extraScopes);
416
+ }
417
+ }
418
+ //#endregion
419
+ //#region Utils
420
+ resolveToDeclaredType(node, type) {
421
+ let nullable = false;
422
+ if ((0, ast_1.isDataModelFieldType)(type)) {
423
+ nullable = type.optional;
424
+ // referencing a field of 'Unsupported' type
425
+ if (type.unsupported) {
426
+ node.$resolvedType = { decl: 'Unsupported', array: type.array, nullable };
427
+ return;
428
+ }
429
+ }
430
+ if (type.type) {
431
+ const mappedType = (0, utils_1.mapBuiltinTypeToExpressionType)(type.type);
432
+ node.$resolvedType = { decl: mappedType, array: type.array, nullable: nullable };
433
+ }
434
+ else if (type.reference) {
435
+ node.$resolvedType = {
436
+ decl: type.reference.ref,
437
+ array: type.array,
438
+ nullable: nullable,
439
+ };
440
+ }
441
+ }
442
+ resolveToBuiltinTypeOrDecl(node, type, array = false, nullable = false) {
443
+ node.$resolvedType = { decl: type, array, nullable };
444
+ }
445
+ }
446
+ exports.ZModelLinker = ZModelLinker;
447
+ //# sourceMappingURL=zmodel-linker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zmodel-linker.js","sourceRoot":"","sources":["../../src/language-server/zmodel-linker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAqCkC;AAClC,yCAAmE;AACnE,qCAaiB;AACjB,2CAAmC;AACnC,mDAAmD;AACnD,kDAAmE;AACnE,6CAAmE;AASnE;;GAEG;AACH,MAAa,YAAa,SAAQ,uBAAa;IAG3C,YAAY,QAAyB;QACjC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,0BAA0B,CAAC;IACtE,CAAC;IAED,2BAA2B;IAErB,IAAI,CAAC,QAAyB,EAAE,WAAW,GAAG,kCAAiB,CAAC,IAAI;;;YACtE,IAAI,CAAA,MAAA,QAAQ,CAAC,WAAW,CAAC,WAAW,0CAAE,MAAM,IAAG,CAAC,IAAI,CAAA,MAAA,QAAQ,CAAC,WAAW,CAAC,YAAY,0CAAE,MAAM,IAAG,CAAC,EAAE;gBAC/F,OAAO;aACV;YAED,KAAK,MAAM,IAAI,IAAI,IAAA,wBAAc,EAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;gBAC3D,MAAM,IAAA,2BAAiB,EAAC,WAAW,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAChC;YACD,QAAQ,CAAC,KAAK,GAAG,uBAAa,CAAC,MAAM,CAAC;;KACzC;IAEO,aAAa,CACjB,SAAkB,EAClB,QAAgB,EAChB,QAAyB,EACzB,WAA4B;QAE5B,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE;YAC7E,8DAA8D;YAC9D,MAAM,SAAS,GAAwB,SAAiB,CAAC,QAAQ,CAAC,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;SAC7D;IACL,CAAC;IAED,YAAY;IAEZ,mCAAmC;IAE3B,yBAAyB,CAC7B,IAAa,EACb,QAAgB,EAChB,QAAyB,EACzB,SAA0B;QAE1B,8DAA8D;QAC9D,MAAM,SAAS,GAAsB,IAAY,CAAC,QAAQ,CAAC,CAAC;QAC5D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,MAAM,EAAE;gBACR,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;gBACxB,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAChG,OAAO,MAAM,CAAC;aACjB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,OAAO,CAAC,IAAa,EAAE,QAAyB,EAAE,cAA+B,EAAE;QACvF,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,mBAAa,CAAC;YACnB,KAAK,mBAAa,CAAC;YACnB,KAAK,oBAAc;gBACf,IAAI,CAAC,cAAc,CAAC,IAAmB,CAAC,CAAC;gBACzC,MAAM;YAEV,KAAK,oBAAc;gBACf,IAAI,CAAC,iBAAiB,CAAC,IAAsB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACtE,MAAM;YAEV,KAAK,eAAS;gBACV,IAAI,CAAC,YAAY,CAAC,IAAiB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC5D,MAAM;YAEV,KAAK,mBAAa;gBACd,IAAI,CAAC,gBAAgB,CAAC,IAAqB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACpE,MAAM;YAEV,KAAK,sBAAgB;gBACjB,IAAI,CAAC,mBAAmB,CAAC,IAAwB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC1E,MAAM;YAEV,KAAK,eAAS;gBACV,IAAI,CAAC,YAAY,CAAC,IAAiB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC5D,MAAM;YAEV,KAAK,gBAAU;gBACX,IAAI,CAAC,aAAa,CAAC,IAAkB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC9D,MAAM;YAEV,KAAK,gBAAU;gBACX,IAAI,CAAC,aAAa,CAAC,IAAkB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC9D,MAAM;YAEV,KAAK,cAAQ;gBACT,IAAI,CAAC,WAAW,CAAC,IAAgB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC1D,MAAM;YAEV,KAAK,cAAQ;gBACT,IAAI,CAAC,WAAW,CAAC,IAAgB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC1D,MAAM;YAEV,KAAK,kBAAY;gBACb,IAAI,CAAC,mBAAmB,CAAC,IAAoB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACtE,MAAM;YAEV,KAAK,eAAS;gBACV,IAAI,CAAC,gBAAgB,CAAC,IAAiB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAChE,MAAM;YAEV,KAAK,oBAAc;gBACf,IAAI,CAAC,qBAAqB,CAAC,IAAsB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC1E,MAAM;YAEV;gBACI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACjD,MAAM;SACb;IACL,CAAC;IAEO,aAAa,CAAC,IAAgB,EAAE,QAAkC,EAAE,WAA4B;QACpG,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACnB,6BAA6B;YAC7B,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,sDAAsD;YACtD,uDAAuD;YACvD,oDAAoD;YACpD,aAAa;YAEb,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,CAAC;YACV,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAChD,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM;YAEV,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACJ,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC7D,MAAM;YAEV;gBACI,MAAM,KAAK,CAAC,gCAAgC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACpE;IACL,CAAC;IAEO,YAAY,CAAC,IAAe,EAAE,QAAkC,EAAE,WAA4B;QAClG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAClD,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACnB,KAAK,GAAG;gBACJ,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM;YACV;gBACI,MAAM,KAAK,CAAC,+BAA+B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACnE;IACL,CAAC;IAEO,aAAa,CAAC,IAAgB,EAAE,QAAkC,EAAE,WAA4B;QACpG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEO,gBAAgB,CAAC,IAAmB,EAAE,QAAkC,EAAE,WAA4B;QAC1G,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,eAAe;YACf,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,eAAS,EAAE;gBACrC,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aACrE;iBAAM;gBACH,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAG,IAAI,CAAC,MAAM,CAAC,GAAsC,CAAC,IAAI,CAAC,CAAC;aAC9F;SACJ;IACL,CAAC;IAEO,YAAY,CAAC,IAAe,EAAE,QAAkC,EAAE,WAA4B;QAClG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QAExE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC7C,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE;gBAChB,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAC9D;SACJ;aAAM;YACH,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACtD;IACL,CAAC;IAEO,iBAAiB,CAAC,IAAoB,EAAE,QAAyB,EAAE,WAA4B;QACnG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACnB,wDAAwD;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAmB,CAAC;YACnD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,IAAA,kBAAY,EAAC,QAAQ,CAAC,EAAE;gBACpD,oEAAoE;gBACpE,MAAM,KAAK,GAAG,IAAA,wBAAkB,EAAC,IAAI,CAAC,CAAC;gBAEvC,IAAI,KAAK,EAAE;oBACP,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CAChF,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iBAAW,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAC7C,CAAC;oBACF,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,aAAa,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBAC5D;iBACJ;aACJ;iBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAA,kBAAY,EAAC,QAAQ,CAAC,EAAE;gBAC7D,iDAAiD;gBACjD,IAAI,CAAC,aAAa,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;aACpE;iBAAM;gBACH,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;aACzD;SACJ;IACL,CAAC;IAEO,sBAAsB,CAAC,IAAgB;QAC3C,IAAI,IAAI,GAAwB,IAAI,CAAC,UAAU,CAAC;QAChD,OAAO,IAAI,EAAE;YACT,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,EAAE;gBACnB,OAAO,IAAI,CAAC;aACf;YACD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,cAAc,CAAC,IAAiB;QACpC,MAAM,IAAI,GAAG,IAAA,kBAAK,EAA8B,IAAI,CAAC;aAChD,IAAI,CAAC,qBAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;aACrC,IAAI,CAAC,sBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;aACvC,IAAI,CAAC,qBAAe,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;aAClC,UAAU,EAAE,CAAC;QAElB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC/C;IACL,CAAC;IAEO,mBAAmB,CACvB,IAAsB,EACtB,QAAkC,EAClC,WAA4B;QAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAEnD,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAA,iBAAW,EAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YAChF,MAAM,SAAS,GAAG,eAAe,CAAC,IAAiB,CAAC;YACpD,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC1F,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,CAAC;SAC5C;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC1D;IACL,CAAC;IAEO,0BAA0B,CAAC,IAAgB,EAAE,QAAyB,EAAE,WAA4B;QACxG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE/C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC7C,IAAI,YAAY,IAAI,IAAA,iBAAW,EAAC,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE;YACtE,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC;YACxC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;gBAC9B,IAAI,IAAI,KAAK,MAAM,EAAE;oBACjB,OAAO,aAAa,CAAC;iBACxB;qBAAM;oBACH,OAAO,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;iBACrE;YACL,CAAC,CAAC;YACF,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAChD,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SACpD;aAAM;YACH,uCAAuC;SAC1C;IACL,CAAC;IAEO,WAAW,CAAC,IAAc,EAAE,SAAmC,EAAE,WAA4B;QACjG,4BAA4B;QAC5B,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;YAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,IAAA,iBAAW,EAAC,CAAC,CAAC,EAAE;gBAChB,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzC,OAAO;aACV;SACJ;QAED,IAAI,IAAI,GAAwB,IAAI,CAAC,UAAU,CAAC;QAEhD,OAAO,IAAI,IAAI,CAAC,IAAA,iBAAW,EAAC,IAAI,CAAC,EAAE;YAC/B,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;SAC1B;QAED,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC/C;IACL,CAAC;IAEO,WAAW,CAAC,IAAc,EAAE,SAAmC,EAAE,YAA6B;QAClG,oCAAoC;QACpC,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAEO,mBAAmB,CAAC,IAAkB,EAAE,QAAkC,EAAE,WAA4B;;QAC5G,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAEjD,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,IAAI,MAAK,0BAA0B,IAAI,IAAA,sBAAgB,EAAC,aAAa,CAAC,EAAE;YACxF,6FAA6F;YAC7F,iCAAiC;YACjC,EAAE;YACF,QAAQ;YACR,EAAE;YACF,YAAY;YACZ,oBAAoB;YACpB,IAAI;YACJ,EAAE;YACF,YAAY;YACZ,kBAAkB;YAClB,oDAAoD;YACpD,IAAI;YACJ,EAAE;YACF,uFAAuF;YAEvF,MAAM,kBAAkB,GAAG,MAAA,aAAa,CAAC,IAAI,CAAC,SAAS,0CAAE,GAAgB,CAAC;YAC1E,IAAI,kBAAkB,EAAE;gBACpB,iEAAiE;gBACjE,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBACxG,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC9B,IAAI,IAAA,qBAAe,EAAC,IAAI,CAAC,EAAE;4BACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;4BAC3F,IAAI,QAAQ,EAAE;gCACV,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAG,QAA2B,CAAC,IAAI,CAAC,CAAC;6BACvE;iCAAM;gCACH,oFAAoF;gCACpF,MAAM,GAAG,GAAG,IAAI,CAAC,MAA0B,CAAC;gCAC5C,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;oCAC/B,SAAS,EAAE,GAAG;oCACd,SAAS,EAAE,IAAI;oCACf,QAAQ,EAAE,QAAQ;iCACrB,CAAC,CAAC;6BACN;yBACJ;oBACL,CAAC,CAAC,CAAC;oBACH,IAAI,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,aAAa,0CAAE,IAAI,EAAE;wBAC1C,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBAC7F;iBACJ;qBAAM,IAAI,IAAA,qBAAe,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;oBACjG,IAAI,QAAQ,EAAE;wBACV,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAG,QAA2B,CAAC,IAAI,CAAC,CAAC;qBAC7E;yBAAM;wBACH,oFAAoF;wBACpF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAA0B,CAAC;wBAClD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;4BAC/B,SAAS,EAAE,GAAG;4BACd,SAAS,EAAE,IAAI,CAAC,KAAK;4BACrB,QAAQ,EAAE,QAAQ;yBACrB,CAAC,CAAC;qBACN;iBACJ;aACJ;SACJ;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IAClD,CAAC;IAEO,mBAAmB,CAAC,GAAiB;;QACzC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,SAAS,CAAC;SACpB;QACD,IAAI,GAAG,CAAC,IAAI,EAAE;YACV,OAAO,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;SACxD;aAAM;YACH,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC7B;IACL,CAAC;IAEO,gBAAgB,CAAC,IAAe,EAAE,QAAkC,EAAE,WAA4B;QACtG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CACjC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE,WAAC,OAAA,MAAA,SAAS,CAAC,GAAG,0CAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA,EAAA,CACtF,CAAC;YACF,WAAW,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC;SAChD;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAEO,qBAAqB,CACzB,IAAoB,EACpB,QAAkC,EAClC,WAA4B;QAE5B,0FAA0F;QAC1F,uFAAuF;QACvF,wFAAwF;QACxF,wCAAwC;QACxC,EAAE;QACF,mBAAmB;QACnB,SAAS;QACT,SAAS;QACT,IAAI;;QAEJ,qBAAqB;QACrB,SAAS;QACT,SAAS;QACT,SAAS;QACT,IAAI;QAEJ,YAAY;QACZ,iBAAiB;QACjB,qEAAqE;QACrE,mEAAmE;QACnE,IAAI;QACJ,EAAE;QAEF,mCAAmC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE/C,IAAI,MAAM,GAAG,WAAW,CAAC;QAEzB,wGAAwG;QACxG,IAAI,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,SAAS,0CAAE,GAAG,KAAI,IAAA,YAAM,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAW,CAAC;YACpD,MAAM,SAAS,GAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC3F,MAAM,GAAG,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAEO,cAAc,CAAC,IAAa,EAAE,QAAkC,EAAE,WAA4B;QAClG,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC3B,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,EAAE;oBACpB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;iBAC7D;aACJ;SACJ;QACD,KAAK,MAAM,KAAK,IAAI,IAAA,wBAAc,EAAC,IAAI,CAAC,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;SAC9C;IACL,CAAC;IAED,YAAY;IAEZ,eAAe;IAEP,qBAAqB,CAAC,IAAa,EAAE,IAA4C;QACrF,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAA,0BAAoB,EAAC,IAAI,CAAC,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEzB,4CAA4C;YAC5C,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,aAAa,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAC1E,OAAO;aACV;SACJ;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,MAAM,UAAU,GAAG,IAAA,sCAA8B,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;SACpF;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG;gBACjB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG;gBACxB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,QAAQ;aACrB,CAAC;SACL;IACL,CAAC;IAEO,0BAA0B,CAAC,IAAa,EAAE,IAAmB,EAAE,KAAK,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK;QAClG,IAAI,CAAC,aAAa,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACzD,CAAC;CAGJ;AAhfD,oCAgfC"}
@@ -0,0 +1,41 @@
1
+ import { DefaultSharedModuleContext, LangiumDefaultSharedServices, LangiumServices, LangiumSharedServices, Module, PartialLangiumServices } from 'langium';
2
+ import { ZModelValidator } from './validator/zmodel-validator';
3
+ /**
4
+ * Declaration of custom services - add your own service classes here.
5
+ */
6
+ export declare type ZModelAddedServices = {
7
+ validation: {
8
+ ZModelValidator: ZModelValidator;
9
+ };
10
+ };
11
+ /**
12
+ * Union of Langium default services and your custom services - use this as constructor parameter
13
+ * of custom service classes.
14
+ */
15
+ export declare type ZModelServices = LangiumServices & ZModelAddedServices;
16
+ /**
17
+ * Dependency injection module that overrides Langium default services and contributes the
18
+ * declared custom services. The Langium defaults can be partially specified to override only
19
+ * selected services, while the custom services must be fully specified.
20
+ */
21
+ export declare const ZModelModule: Module<ZModelServices, PartialLangiumServices & ZModelAddedServices>;
22
+ export declare function createSharedModule(context: DefaultSharedModuleContext): Module<LangiumSharedServices, LangiumDefaultSharedServices>;
23
+ /**
24
+ * Create the full set of services required by Langium.
25
+ *
26
+ * First inject the shared services by merging two modules:
27
+ * - Langium default shared services
28
+ * - Services generated by langium-cli
29
+ *
30
+ * Then inject the language-specific services by merging three modules:
31
+ * - Langium default language-specific services
32
+ * - Services generated by langium-cli
33
+ * - Services specified in this file
34
+ *
35
+ * @param context Optional module context with the LSP connection
36
+ * @returns An object wrapping the shared services and the language-specific services
37
+ */
38
+ export declare function createZModelServices(context: DefaultSharedModuleContext): {
39
+ shared: LangiumSharedServices;
40
+ ZModel: ZModelServices;
41
+ };
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createZModelServices = exports.createSharedModule = exports.ZModelModule = void 0;
7
+ const module_1 = require("@zenstackhq/language/module");
8
+ const langium_1 = require("langium");
9
+ const vscode_languageserver_1 = require("vscode-languageserver");
10
+ const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
11
+ const zmodel_validator_1 = require("./validator/zmodel-validator");
12
+ const zmodel_code_action_1 = require("./zmodel-code-action");
13
+ const zmodel_formatter_1 = require("./zmodel-formatter");
14
+ const zmodel_linker_1 = require("./zmodel-linker");
15
+ const zmodel_scope_1 = require("./zmodel-scope");
16
+ const zmodel_workspace_manager_1 = __importDefault(require("./zmodel-workspace-manager"));
17
+ const zmodel_definition_1 = require("./zmodel-definition");
18
+ /**
19
+ * Dependency injection module that overrides Langium default services and contributes the
20
+ * declared custom services. The Langium defaults can be partially specified to override only
21
+ * selected services, while the custom services must be fully specified.
22
+ */
23
+ exports.ZModelModule = {
24
+ references: {
25
+ ScopeComputation: (services) => new zmodel_scope_1.ZModelScopeComputation(services),
26
+ Linker: (services) => new zmodel_linker_1.ZModelLinker(services),
27
+ ScopeProvider: (services) => new zmodel_scope_1.ZModelScopeProvider(services),
28
+ },
29
+ validation: {
30
+ ValidationRegistry: (services) => new zmodel_validator_1.ZModelValidationRegistry(services),
31
+ ZModelValidator: (services) => new zmodel_validator_1.ZModelValidator(services),
32
+ },
33
+ lsp: {
34
+ Formatter: () => new zmodel_formatter_1.ZModelFormatter(),
35
+ CodeActionProvider: (services) => new zmodel_code_action_1.ZModelCodeActionProvider(services),
36
+ DefinitionProvider: (services) => new zmodel_definition_1.ZModelDefinitionProvider(services),
37
+ },
38
+ };
39
+ // this duplicates createDefaultSharedModule except that a custom WorkspaceManager is used
40
+ function createSharedModule(context) {
41
+ return {
42
+ ServiceRegistry: () => new langium_1.DefaultServiceRegistry(),
43
+ lsp: {
44
+ Connection: () => context.connection,
45
+ LanguageServer: (services) => new langium_1.DefaultLanguageServer(services),
46
+ },
47
+ workspace: {
48
+ LangiumDocuments: (services) => new langium_1.DefaultLangiumDocuments(services),
49
+ LangiumDocumentFactory: (services) => new langium_1.DefaultLangiumDocumentFactory(services),
50
+ DocumentBuilder: (services) => new langium_1.DefaultDocumentBuilder(services),
51
+ TextDocuments: () => new vscode_languageserver_1.TextDocuments(vscode_languageserver_textdocument_1.TextDocument),
52
+ IndexManager: (services) => new langium_1.DefaultIndexManager(services),
53
+ WorkspaceManager: (services) => new zmodel_workspace_manager_1.default(services),
54
+ FileSystemProvider: (services) => context.fileSystemProvider(services),
55
+ MutexLock: () => new langium_1.MutexLock(),
56
+ ConfigurationProvider: (services) => new langium_1.DefaultConfigurationProvider(services),
57
+ },
58
+ };
59
+ }
60
+ exports.createSharedModule = createSharedModule;
61
+ /**
62
+ * Create the full set of services required by Langium.
63
+ *
64
+ * First inject the shared services by merging two modules:
65
+ * - Langium default shared services
66
+ * - Services generated by langium-cli
67
+ *
68
+ * Then inject the language-specific services by merging three modules:
69
+ * - Langium default language-specific services
70
+ * - Services generated by langium-cli
71
+ * - Services specified in this file
72
+ *
73
+ * @param context Optional module context with the LSP connection
74
+ * @returns An object wrapping the shared services and the language-specific services
75
+ */
76
+ function createZModelServices(context) {
77
+ const shared = (0, langium_1.inject)(createSharedModule(context), module_1.ZModelGeneratedSharedModule);
78
+ const ZModel = (0, langium_1.inject)((0, langium_1.createDefaultModule)({ shared }), module_1.ZModelGeneratedModule, exports.ZModelModule);
79
+ shared.ServiceRegistry.register(ZModel);
80
+ return { shared, ZModel };
81
+ }
82
+ exports.createZModelServices = createZModelServices;
83
+ //# sourceMappingURL=zmodel-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zmodel-module.js","sourceRoot":"","sources":["../../src/language-server/zmodel-module.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiG;AACjG,qCAiBiB;AACjB,iEAAsD;AACtD,2FAAkE;AAClE,mEAAyF;AACzF,6DAAgE;AAChE,yDAAqD;AACrD,mDAA+C;AAC/C,iDAA6E;AAC7E,0FAAgE;AAChE,2DAA+D;AAiB/D;;;;GAIG;AACU,QAAA,YAAY,GAAyE;IAC9F,UAAU,EAAE;QACR,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,qCAAsB,CAAC,QAAQ,CAAC;QACpE,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,4BAAY,CAAC,QAAQ,CAAC;QAChD,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,kCAAmB,CAAC,QAAQ,CAAC;KACjE;IACD,UAAU,EAAE;QACR,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,2CAAwB,CAAC,QAAQ,CAAC;QACxE,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,kCAAe,CAAC,QAAQ,CAAC;KAC/D;IACD,GAAG,EAAE;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAe,EAAE;QACtC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,6CAAwB,CAAC,QAAQ,CAAC;QACxE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,4CAAwB,CAAC,QAAQ,CAAC;KAC3E;CACJ,CAAC;AAEF,0FAA0F;AAC1F,SAAgB,kBAAkB,CAC9B,OAAmC;IAEnC,OAAO;QACH,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,gCAAsB,EAAE;QACnD,GAAG,EAAE;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU;YACpC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,+BAAqB,CAAC,QAAQ,CAAC;SACpE;QACD,SAAS,EAAE;YACP,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,iCAAuB,CAAC,QAAQ,CAAC;YACrE,sBAAsB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,uCAA6B,CAAC,QAAQ,CAAC;YACjF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,gCAAsB,CAAC,QAAQ,CAAC;YACnE,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,qCAAa,CAAC,iDAAY,CAAC;YACpD,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,6BAAmB,CAAC,QAAQ,CAAC;YAC7D,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,kCAAsB,CAAC,QAAQ,CAAC;YACpE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACtE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAS,EAAE;YAChC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,sCAA4B,CAAC,QAAQ,CAAC;SAClF;KACJ,CAAC;AACN,CAAC;AArBD,gDAqBC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,oBAAoB,CAAC,OAAmC;IAIpE,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,oCAA2B,CAAC,CAAC;IAEhF,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,IAAA,6BAAmB,EAAC,EAAE,MAAM,EAAE,CAAC,EAAE,8BAAqB,EAAE,oBAAY,CAAC,CAAC;IAC5F,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AATD,oDASC"}
@@ -0,0 +1,16 @@
1
+ import { AstNode, AstNodeDescription, DefaultScopeComputation, DefaultScopeProvider, LangiumDocument, LangiumServices, PrecomputedScopes, ReferenceInfo, Scope } from 'langium';
2
+ import { CancellationToken } from 'vscode-jsonrpc';
3
+ /**
4
+ * Custom Langium ScopeComputation implementation which adds enum fields into global scope
5
+ */
6
+ export declare class ZModelScopeComputation extends DefaultScopeComputation {
7
+ private readonly services;
8
+ constructor(services: LangiumServices);
9
+ computeExports(document: LangiumDocument<AstNode>, cancelToken?: CancellationToken | undefined): Promise<AstNodeDescription[]>;
10
+ computeLocalScopes(document: LangiumDocument<AstNode>, cancelToken?: CancellationToken | undefined): Promise<PrecomputedScopes>;
11
+ private resolveBaseModels;
12
+ }
13
+ export declare class ZModelScopeProvider extends DefaultScopeProvider {
14
+ constructor(services: LangiumServices);
15
+ protected getGlobalScope(referenceType: string, context: ReferenceInfo): Scope;
16
+ }