zenstack 0.5.0 → 0.6.0-pre.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 (62) hide show
  1. package/{LICENSE.md → LICENSE} +0 -0
  2. package/bin/cli +1 -1
  3. package/package.json +17 -13
  4. package/bin/post-install.js +0 -0
  5. package/bundle/asset/logo-256-bg.png +0 -0
  6. package/bundle/asset/logo-dark-256.png +0 -0
  7. package/bundle/asset/logo-light-256.png +0 -0
  8. package/bundle/cli/index.js +0 -6952
  9. package/bundle/extension.js +0 -39
  10. package/bundle/language-server/main.js +0 -6208
  11. package/bundle/res/package.template.json +0 -9
  12. package/bundle/res/prism-zmodel.js +0 -22
  13. package/bundle/res/stdlib.zmodel +0 -218
  14. package/bundle/res/tsconfig.template.json +0 -17
  15. package/src/cli/cli-error.ts +0 -4
  16. package/src/cli/cli-util.ts +0 -214
  17. package/src/cli/index.ts +0 -246
  18. package/src/extension.ts +0 -76
  19. package/src/generator/ast-utils.ts +0 -18
  20. package/src/generator/constants.ts +0 -6
  21. package/src/generator/field-constraint/index.ts +0 -304
  22. package/src/generator/index.ts +0 -86
  23. package/src/generator/prisma/expression-writer.ts +0 -360
  24. package/src/generator/prisma/index.ts +0 -44
  25. package/src/generator/prisma/prisma-builder.ts +0 -370
  26. package/src/generator/prisma/query-guard-generator.ts +0 -249
  27. package/src/generator/prisma/schema-generator.ts +0 -313
  28. package/src/generator/prisma/typescript-expression-transformer.ts +0 -108
  29. package/src/generator/react-hooks/index.ts +0 -273
  30. package/src/generator/service/index.ts +0 -113
  31. package/src/generator/tsc/index.ts +0 -59
  32. package/src/generator/types.ts +0 -20
  33. package/src/global.d.ts +0 -3
  34. package/src/language-server/constants.ts +0 -29
  35. package/src/language-server/generated/ast.ts +0 -643
  36. package/src/language-server/generated/grammar.ts +0 -2492
  37. package/src/language-server/generated/module.ts +0 -24
  38. package/src/language-server/langium-ext.d.ts +0 -22
  39. package/src/language-server/main.ts +0 -13
  40. package/src/language-server/types.ts +0 -25
  41. package/src/language-server/utils.ts +0 -21
  42. package/src/language-server/validator/attribute-validator.ts +0 -11
  43. package/src/language-server/validator/datamodel-validator.ts +0 -426
  44. package/src/language-server/validator/datasource-validator.ts +0 -102
  45. package/src/language-server/validator/enum-validator.ts +0 -14
  46. package/src/language-server/validator/expression-validator.ts +0 -48
  47. package/src/language-server/validator/schema-validator.ts +0 -31
  48. package/src/language-server/validator/utils.ts +0 -158
  49. package/src/language-server/validator/zmodel-validator.ts +0 -91
  50. package/src/language-server/zmodel-linker.ts +0 -453
  51. package/src/language-server/zmodel-module.ts +0 -131
  52. package/src/language-server/zmodel-scope.ts +0 -45
  53. package/src/language-server/zmodel-workspace-manager.ts +0 -23
  54. package/src/language-server/zmodel.langium +0 -207
  55. package/src/res/package.template.json +0 -9
  56. package/src/res/prism-zmodel.js +0 -22
  57. package/src/res/stdlib.zmodel +0 -218
  58. package/src/res/tsconfig.template.json +0 -17
  59. package/src/telemetry.ts +0 -119
  60. package/src/utils/exec-utils.ts +0 -8
  61. package/src/utils/indent-string.ts +0 -9
  62. package/src/utils/pkg-utils.ts +0 -63
@@ -1,453 +0,0 @@
1
- import {
2
- AstNode,
3
- AstNodeDescription,
4
- AstNodeDescriptionProvider,
5
- DefaultLinker,
6
- DocumentState,
7
- interruptAndCheck,
8
- isReference,
9
- LangiumDocument,
10
- LangiumServices,
11
- LinkingError,
12
- Reference,
13
- streamContents,
14
- } from 'langium';
15
- import { CancellationToken } from 'vscode-jsonrpc';
16
- import {
17
- ArrayExpr,
18
- AttributeArg,
19
- BinaryExpr,
20
- DataModel,
21
- DataModelField,
22
- DataModelFieldType,
23
- EnumField,
24
- Function,
25
- FunctionParam,
26
- FunctionParamType,
27
- InvocationExpr,
28
- isDataModel,
29
- LiteralExpr,
30
- MemberAccessExpr,
31
- NullExpr,
32
- ReferenceExpr,
33
- ReferenceTarget,
34
- ThisExpr,
35
- UnaryExpr,
36
- } from './generated/ast';
37
- import { ResolvedShape } from './types';
38
- import { getContainingModel, isFromStdlib } from './utils';
39
- import { mapBuiltinTypeToExpressionType } from './validator/utils';
40
-
41
- interface DefaultReference extends Reference {
42
- _ref?: AstNode | LinkingError;
43
- _nodeDescription?: AstNodeDescription;
44
- }
45
-
46
- type ScopeProvider = (name: string) => ReferenceTarget | undefined;
47
-
48
- /**
49
- * Langium linker implementation which links references and resolves expression types
50
- */
51
- export class ZModelLinker extends DefaultLinker {
52
- private readonly descriptions: AstNodeDescriptionProvider;
53
-
54
- constructor(services: LangiumServices) {
55
- super(services);
56
- this.descriptions = services.workspace.AstNodeDescriptionProvider;
57
- }
58
-
59
- //#region Reference linking
60
-
61
- async link(
62
- document: LangiumDocument,
63
- cancelToken = CancellationToken.None
64
- ): Promise<void> {
65
- if (
66
- document.parseResult.lexerErrors?.length > 0 ||
67
- document.parseResult.parserErrors?.length > 0
68
- ) {
69
- return;
70
- }
71
-
72
- for (const node of streamContents(document.parseResult.value)) {
73
- await interruptAndCheck(cancelToken);
74
- this.resolve(node, document);
75
- }
76
- document.state = DocumentState.Linked;
77
- }
78
-
79
- private linkReference(
80
- container: AstNode,
81
- property: string,
82
- document: LangiumDocument,
83
- extraScopes: ScopeProvider[]
84
- ) {
85
- if (
86
- !this.resolveFromScopeProviders(
87
- container,
88
- property,
89
- document,
90
- extraScopes
91
- )
92
- ) {
93
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
- const reference: Reference<AstNode> = (container as any)[property];
95
- this.doLink({ reference, container, property }, document);
96
- }
97
- }
98
-
99
- //#endregion
100
-
101
- //#region Expression type resolving
102
-
103
- private resolveFromScopeProviders(
104
- node: AstNode,
105
- property: string,
106
- document: LangiumDocument,
107
- providers: ScopeProvider[]
108
- ) {
109
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
110
- const reference: DefaultReference = (node as any)[property];
111
- for (const provider of providers) {
112
- const target = provider(reference.$refText);
113
- if (target) {
114
- reference._ref = target;
115
- reference._nodeDescription =
116
- this.descriptions.createDescription(
117
- target,
118
- target.name,
119
- document
120
- );
121
- return target;
122
- }
123
- }
124
- return null;
125
- }
126
-
127
- private resolve(
128
- node: AstNode,
129
- document: LangiumDocument,
130
- extraScopes: ScopeProvider[] = []
131
- ) {
132
- switch (node.$type) {
133
- case LiteralExpr:
134
- this.resolveLiteral(node as LiteralExpr);
135
- break;
136
-
137
- case InvocationExpr:
138
- this.resolveInvocation(
139
- node as InvocationExpr,
140
- document,
141
- extraScopes
142
- );
143
- break;
144
-
145
- case ArrayExpr:
146
- this.resolveArray(node as ArrayExpr, document, extraScopes);
147
- break;
148
-
149
- case ReferenceExpr:
150
- this.resolveReference(
151
- node as ReferenceExpr,
152
- document,
153
- extraScopes
154
- );
155
- break;
156
-
157
- case MemberAccessExpr:
158
- this.resolveMemberAccess(
159
- node as MemberAccessExpr,
160
- document,
161
- extraScopes
162
- );
163
- break;
164
-
165
- case UnaryExpr:
166
- this.resolveUnary(node as UnaryExpr, document, extraScopes);
167
- break;
168
-
169
- case BinaryExpr:
170
- this.resolveBinary(node as BinaryExpr, document, extraScopes);
171
- break;
172
-
173
- case ThisExpr:
174
- this.resolveThis(node as ThisExpr, document, extraScopes);
175
- break;
176
-
177
- case NullExpr:
178
- this.resolveNull(node as NullExpr, document, extraScopes);
179
- break;
180
-
181
- case AttributeArg:
182
- this.resolveAttributeArg(
183
- node as AttributeArg,
184
- document,
185
- extraScopes
186
- );
187
- break;
188
-
189
- default:
190
- this.resolveDefault(node, document, extraScopes);
191
- break;
192
- }
193
- }
194
-
195
- private resolveBinary(
196
- node: BinaryExpr,
197
- document: LangiumDocument<AstNode>,
198
- extraScopes: ScopeProvider[]
199
- ) {
200
- switch (node.operator) {
201
- // TODO: support arithmetics?
202
- // case '+':
203
- // case '-':
204
- // case '*':
205
- // case '/':
206
- // this.resolve(node.left, document, extraScopes);
207
- // this.resolve(node.right, document, extraScopes);
208
- // this.resolveToBuiltinTypeOrDecl(node, 'Int');
209
- // break;
210
-
211
- case '>':
212
- case '>=':
213
- case '<':
214
- case '<=':
215
- case '==':
216
- case '!=':
217
- case '&&':
218
- case '||':
219
- this.resolve(node.left, document, extraScopes);
220
- this.resolve(node.right, document, extraScopes);
221
- this.resolveToBuiltinTypeOrDecl(node, 'Boolean');
222
- break;
223
-
224
- case '?':
225
- case '!':
226
- case '^':
227
- this.resolveCollectionPredicate(node, document, extraScopes);
228
- break;
229
-
230
- default:
231
- throw Error(`Unsupported binary operator: ${node.operator}`);
232
- }
233
- }
234
-
235
- private resolveUnary(
236
- node: UnaryExpr,
237
- document: LangiumDocument<AstNode>,
238
- extraScopes: ScopeProvider[]
239
- ) {
240
- this.resolve(node.operand, document, extraScopes);
241
- node.$resolvedType = node.operand.$resolvedType;
242
- }
243
-
244
- private resolveReference(
245
- node: ReferenceExpr,
246
- document: LangiumDocument<AstNode>,
247
- extraScopes: ScopeProvider[]
248
- ) {
249
- this.linkReference(node, 'target', document, extraScopes);
250
- node.args.forEach((arg) => this.resolve(arg, document, extraScopes));
251
-
252
- if (node.target.ref) {
253
- // resolve type
254
- if (node.target.ref.$type === EnumField) {
255
- this.resolveToBuiltinTypeOrDecl(
256
- node,
257
- node.target.ref.$container
258
- );
259
- } else {
260
- this.resolveToDeclaredType(
261
- node,
262
- (node.target.ref as DataModelField | FunctionParam).type
263
- );
264
- }
265
- }
266
- }
267
-
268
- private resolveArray(
269
- node: ArrayExpr,
270
- document: LangiumDocument<AstNode>,
271
- extraScopes: ScopeProvider[]
272
- ) {
273
- node.items.forEach((item) => this.resolve(item, document, extraScopes));
274
-
275
- const itemType = node.items[0].$resolvedType;
276
- if (itemType?.decl) {
277
- this.resolveToBuiltinTypeOrDecl(node, itemType.decl, true);
278
- }
279
- }
280
-
281
- private resolveInvocation(
282
- node: InvocationExpr,
283
- document: LangiumDocument,
284
- extraScopes: ScopeProvider[]
285
- ) {
286
- this.linkReference(node, 'function', document, extraScopes);
287
- node.args.forEach((arg) => this.resolve(arg, document, extraScopes));
288
- if (node.function.ref) {
289
- // eslint-disable-next-line @typescript-eslint/ban-types
290
- const funcDecl = node.function.ref as Function;
291
- if (funcDecl.name === 'auth' && isFromStdlib(funcDecl)) {
292
- // auth() function is resolved to User model in the current document
293
- const model = getContainingModel(node);
294
- const userModel = model?.declarations.find(
295
- (d) => isDataModel(d) && d.name === 'User'
296
- );
297
- if (userModel) {
298
- node.$resolvedType = { decl: userModel };
299
- }
300
- } else {
301
- this.resolveToDeclaredType(node, funcDecl.returnType);
302
- }
303
- }
304
- }
305
-
306
- private resolveLiteral(node: LiteralExpr) {
307
- const type =
308
- typeof node.value === 'string'
309
- ? 'String'
310
- : typeof node.value === 'boolean'
311
- ? 'Boolean'
312
- : typeof node.value === 'number'
313
- ? 'Int'
314
- : undefined;
315
-
316
- if (type) {
317
- this.resolveToBuiltinTypeOrDecl(node, type);
318
- }
319
- }
320
-
321
- private resolveMemberAccess(
322
- node: MemberAccessExpr,
323
- document: LangiumDocument<AstNode>,
324
- extraScopes: ScopeProvider[]
325
- ) {
326
- this.resolve(node.operand, document, extraScopes);
327
- const operandResolved = node.operand.$resolvedType;
328
-
329
- if (
330
- operandResolved &&
331
- !operandResolved.array &&
332
- isDataModel(operandResolved.decl)
333
- ) {
334
- const modelDecl = operandResolved.decl as DataModel;
335
- const provider = (name: string) =>
336
- modelDecl.fields.find((f) => f.name === name);
337
- extraScopes = [provider, ...extraScopes];
338
- }
339
-
340
- this.linkReference(node, 'member', document, extraScopes);
341
- if (node.member.ref) {
342
- this.resolveToDeclaredType(node, node.member.ref.type);
343
- }
344
- }
345
-
346
- private resolveCollectionPredicate(
347
- node: BinaryExpr,
348
- document: LangiumDocument,
349
- extraScopes: ScopeProvider[]
350
- ) {
351
- this.resolve(node.left, document, extraScopes);
352
-
353
- const resolvedType = node.left.$resolvedType;
354
- if (
355
- resolvedType &&
356
- isDataModel(resolvedType.decl) &&
357
- resolvedType.array
358
- ) {
359
- const dataModelDecl = resolvedType.decl;
360
- const provider = (name: string) =>
361
- dataModelDecl.fields.find((f) => f.name === name);
362
- extraScopes = [provider, ...extraScopes];
363
- this.resolve(node.right, document, extraScopes);
364
- this.resolveToBuiltinTypeOrDecl(node, 'Boolean');
365
- } else {
366
- // error is reported in validation pass
367
- }
368
- }
369
-
370
- private resolveThis(
371
- node: ThisExpr,
372
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
373
- document: LangiumDocument<AstNode>,
374
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
375
- extraScopes: ScopeProvider[]
376
- ) {
377
- let decl: AstNode | undefined = node.$container;
378
-
379
- while (decl && !isDataModel(decl)) {
380
- decl = decl.$container;
381
- }
382
-
383
- if (decl) {
384
- this.resolveToBuiltinTypeOrDecl(node, decl);
385
- }
386
- }
387
-
388
- private resolveNull(
389
- node: NullExpr,
390
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
391
- document: LangiumDocument<AstNode>,
392
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
393
- extraScopes: ScopeProvider[]
394
- ) {
395
- // TODO: how to really resolve null?
396
- this.resolveToBuiltinTypeOrDecl(node, 'Null');
397
- }
398
-
399
- private resolveAttributeArg(
400
- node: AttributeArg,
401
- document: LangiumDocument<AstNode>,
402
- extraScopes: ScopeProvider[]
403
- ) {
404
- this.resolve(node.value, document, extraScopes);
405
- node.$resolvedType = node.value.$resolvedType;
406
- }
407
-
408
- private resolveDefault(
409
- node: AstNode,
410
- document: LangiumDocument<AstNode>,
411
- extraScopes: ScopeProvider[]
412
- ) {
413
- for (const [property, value] of Object.entries(node)) {
414
- if (!property.startsWith('$')) {
415
- if (isReference(value)) {
416
- this.linkReference(node, property, document, extraScopes);
417
- }
418
- }
419
- }
420
- for (const child of streamContents(node)) {
421
- this.resolve(child, document, extraScopes);
422
- }
423
- }
424
-
425
- //#endregion
426
-
427
- //#region Utils
428
-
429
- private resolveToDeclaredType(
430
- node: AstNode,
431
- type: FunctionParamType | DataModelFieldType
432
- ) {
433
- if (type.type) {
434
- const mappedType = mapBuiltinTypeToExpressionType(type.type);
435
- node.$resolvedType = { decl: mappedType, array: type.array };
436
- } else if (type.reference) {
437
- node.$resolvedType = {
438
- decl: type.reference.ref,
439
- array: type.array,
440
- };
441
- }
442
- }
443
-
444
- private resolveToBuiltinTypeOrDecl(
445
- node: AstNode,
446
- type: ResolvedShape,
447
- array = false
448
- ) {
449
- node.$resolvedType = { decl: type, array };
450
- }
451
-
452
- //#endregion
453
- }
@@ -1,131 +0,0 @@
1
- import {
2
- createDefaultModule,
3
- DefaultConfigurationProvider,
4
- DefaultDocumentBuilder,
5
- DefaultIndexManager,
6
- DefaultLangiumDocumentFactory,
7
- DefaultLangiumDocuments,
8
- DefaultLanguageServer,
9
- DefaultServiceRegistry,
10
- DefaultSharedModuleContext,
11
- DefaultTextDocumentFactory,
12
- inject,
13
- LangiumDefaultSharedServices,
14
- LangiumServices,
15
- LangiumSharedServices,
16
- Module,
17
- MutexLock,
18
- PartialLangiumServices,
19
- } from 'langium';
20
- import {
21
- ZModelGeneratedModule,
22
- ZModelGeneratedSharedModule,
23
- } from './generated/module';
24
- import { ZModelLinker } from './zmodel-linker';
25
- import { ZModelScopeComputation } from './zmodel-scope';
26
- import {
27
- ZModelValidationRegistry,
28
- ZModelValidator,
29
- } from './validator/zmodel-validator';
30
- import { TextDocuments } from 'vscode-languageserver';
31
- import { TextDocument } from 'vscode-languageserver-textdocument';
32
- import ZModelWorkspaceManager from './zmodel-workspace-manager';
33
-
34
- /**
35
- * Declaration of custom services - add your own service classes here.
36
- */
37
- export type ZModelAddedServices = {
38
- validation: {
39
- ZModelValidator: ZModelValidator;
40
- };
41
- };
42
-
43
- /**
44
- * Union of Langium default services and your custom services - use this as constructor parameter
45
- * of custom service classes.
46
- */
47
- export type ZModelServices = LangiumServices & ZModelAddedServices;
48
-
49
- /**
50
- * Dependency injection module that overrides Langium default services and contributes the
51
- * declared custom services. The Langium defaults can be partially specified to override only
52
- * selected services, while the custom services must be fully specified.
53
- */
54
- export const ZModelModule: Module<
55
- ZModelServices,
56
- PartialLangiumServices & ZModelAddedServices
57
- > = {
58
- references: {
59
- ScopeComputation: (services) => new ZModelScopeComputation(services),
60
- Linker: (services) => new ZModelLinker(services),
61
- },
62
- validation: {
63
- ValidationRegistry: (services) =>
64
- new ZModelValidationRegistry(services),
65
- ZModelValidator: () => new ZModelValidator(),
66
- },
67
- };
68
-
69
- // this duplicates createDefaultSharedModule except that a custom WorkspaceManager is used
70
- export function createSharedModule(
71
- context: DefaultSharedModuleContext
72
- ): Module<LangiumSharedServices, LangiumDefaultSharedServices> {
73
- return {
74
- ServiceRegistry: () => new DefaultServiceRegistry(),
75
- lsp: {
76
- Connection: () => context.connection,
77
- LanguageServer: (services) => new DefaultLanguageServer(services),
78
- },
79
- workspace: {
80
- LangiumDocuments: (services) =>
81
- new DefaultLangiumDocuments(services),
82
- LangiumDocumentFactory: (services) =>
83
- new DefaultLangiumDocumentFactory(services),
84
- DocumentBuilder: (services) => new DefaultDocumentBuilder(services),
85
- TextDocuments: () => new TextDocuments(TextDocument),
86
- TextDocumentFactory: (services) =>
87
- new DefaultTextDocumentFactory(services),
88
- IndexManager: (services) => new DefaultIndexManager(services),
89
- WorkspaceManager: (services) =>
90
- new ZModelWorkspaceManager(services),
91
- FileSystemProvider: (services) =>
92
- context.fileSystemProvider(services),
93
- MutexLock: () => new MutexLock(),
94
- ConfigurationProvider: (services) =>
95
- new DefaultConfigurationProvider(services),
96
- },
97
- };
98
- }
99
-
100
- /**
101
- * Create the full set of services required by Langium.
102
- *
103
- * First inject the shared services by merging two modules:
104
- * - Langium default shared services
105
- * - Services generated by langium-cli
106
- *
107
- * Then inject the language-specific services by merging three modules:
108
- * - Langium default language-specific services
109
- * - Services generated by langium-cli
110
- * - Services specified in this file
111
- *
112
- * @param context Optional module context with the LSP connection
113
- * @returns An object wrapping the shared services and the language-specific services
114
- */
115
- export function createZModelServices(context: DefaultSharedModuleContext): {
116
- shared: LangiumSharedServices;
117
- ZModel: ZModelServices;
118
- } {
119
- const shared = inject(
120
- createSharedModule(context),
121
- ZModelGeneratedSharedModule
122
- );
123
-
124
- const ZModel = inject(
125
- createDefaultModule({ shared }),
126
- ZModelGeneratedModule,
127
- ZModelModule
128
- );
129
- shared.ServiceRegistry.register(ZModel);
130
- return { shared, ZModel };
131
- }
@@ -1,45 +0,0 @@
1
- import {
2
- AstNode,
3
- AstNodeDescription,
4
- DefaultScopeComputation,
5
- interruptAndCheck,
6
- LangiumDocument,
7
- LangiumServices,
8
- streamAllContents,
9
- } from 'langium';
10
- import { CancellationToken } from 'vscode-jsonrpc';
11
- import { isEnumField } from './generated/ast';
12
-
13
- /**
14
- * Custom Langium ScopeComputation implementation which adds enum fields into global scope
15
- */
16
- export class ZModelScopeComputation extends DefaultScopeComputation {
17
- constructor(private readonly services: LangiumServices) {
18
- super(services);
19
- }
20
-
21
- async computeExports(
22
- document: LangiumDocument<AstNode>,
23
- cancelToken?: CancellationToken | undefined
24
- ): Promise<AstNodeDescription[]> {
25
- const result = await super.computeExports(document, cancelToken);
26
-
27
- // add enum fields so they can be globally resolved across modules
28
- for (const node of streamAllContents(document.parseResult.value)) {
29
- if (cancelToken) {
30
- await interruptAndCheck(cancelToken);
31
- }
32
- if (isEnumField(node)) {
33
- const desc =
34
- this.services.workspace.AstNodeDescriptionProvider.createDescription(
35
- node,
36
- node.name,
37
- document
38
- );
39
- result.push(desc);
40
- }
41
- }
42
-
43
- return result;
44
- }
45
- }
@@ -1,23 +0,0 @@
1
- import { DefaultWorkspaceManager, LangiumDocument } from 'langium';
2
- import path from 'path';
3
- import { WorkspaceFolder } from 'vscode-languageserver';
4
- import { URI } from 'vscode-uri';
5
- import { STD_LIB_MODULE_NAME } from './constants';
6
-
7
- /**
8
- * Custom Langium WorkspaceManager implementation which automatically loads stdlib.zmodel
9
- */
10
- export default class ZModelWorkspaceManager extends DefaultWorkspaceManager {
11
- protected async loadAdditionalDocuments(
12
- _folders: WorkspaceFolder[],
13
- _collector: (document: LangiumDocument) => void
14
- ): Promise<void> {
15
- await super.loadAdditionalDocuments(_folders, _collector);
16
- const stdLibUri = URI.file(
17
- path.join(__dirname, '../res', STD_LIB_MODULE_NAME)
18
- );
19
- console.log(`Adding stdlib document from ${stdLibUri}`);
20
- const stdlib = this.langiumDocuments.getOrCreateDocument(stdLibUri);
21
- _collector(stdlib);
22
- }
23
- }