Skip to content

Commit 5f639de

Browse files
authored
Merge pull request #272 from zenstackhq/dev
merge dev to main (v3.0.0-beta.7)
2 parents 1770b12 + 4837cf5 commit 5f639de

File tree

23 files changed

+75
-61
lines changed

23 files changed

+75
-61
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zenstack-v3",
3-
"version": "3.0.0-beta.6",
3+
"version": "3.0.0-beta.7",
44
"description": "ZenStack",
55
"packageManager": "[email protected]",
66
"scripts": {

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"publisher": "zenstack",
44
"displayName": "ZenStack CLI",
55
"description": "FullStack database toolkit with built-in access control and automatic API generation.",
6-
"version": "3.0.0-beta.6",
6+
"version": "3.0.0-beta.7",
77
"type": "module",
88
"author": {
99
"name": "ZenStack Team"

packages/common-helpers/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/common-helpers",
3-
"version": "3.0.0-beta.6",
3+
"version": "3.0.0-beta.7",
44
"description": "ZenStack Common Helpers",
55
"type": "module",
66
"scripts": {

packages/create-zenstack/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "create-zenstack",
3-
"version": "3.0.0-beta.6",
3+
"version": "3.0.0-beta.7",
44
"description": "Create a new ZenStack project",
55
"type": "module",
66
"scripts": {

packages/dialects/sql.js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/kysely-sql-js",
3-
"version": "3.0.0-beta.6",
3+
"version": "3.0.0-beta.7",
44
"description": "Kysely dialect for sql.js",
55
"type": "module",
66
"scripts": {

packages/eslint-config/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/eslint-config",
3-
"version": "3.0.0-beta.6",
3+
"version": "3.0.0-beta.7",
44
"type": "module",
55
"private": true,
66
"license": "MIT"

packages/ide/vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "zenstack-v3",
33
"publisher": "zenstack",
4-
"version": "3.0.6",
4+
"version": "3.0.8",
55
"displayName": "ZenStack V3 Language Tools",
66
"description": "VSCode extension for ZenStack (v3) ZModel language",
77
"private": true,

packages/language/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/language",
33
"description": "ZenStack ZModel language specification",
4-
"version": "3.0.0-beta.6",
4+
"version": "3.0.0-beta.7",
55
"license": "MIT",
66
"author": "ZenStack Team",
77
"files": [

packages/language/src/module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
} from 'langium/lsp';
1010
import { ZModelGeneratedModule, ZModelGeneratedSharedModule, ZModelLanguageMetaData } from './generated/module';
1111
import { ZModelValidator, registerValidationChecks } from './validator';
12+
import { ZModelDocumentBuilder } from './zmodel-document-builder';
1213
import { ZModelLinker } from './zmodel-linker';
1314
import { ZModelScopeComputation, ZModelScopeProvider } from './zmodel-scope';
1415
import { ZModelWorkspaceManager } from './zmodel-workspace-manager';
@@ -49,6 +50,7 @@ export type ZModelSharedServices = LangiumSharedServices;
4950

5051
export const ZModelSharedModule: Module<ZModelSharedServices, DeepPartial<ZModelSharedServices>> = {
5152
workspace: {
53+
DocumentBuilder: (services) => new ZModelDocumentBuilder(services),
5254
WorkspaceManager: (services) => new ZModelWorkspaceManager(services),
5355
},
5456
};

packages/language/src/utils.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { invariant } from '@zenstackhq/common-helpers';
21
import { AstUtils, URI, type AstNode, type LangiumDocument, type LangiumDocuments, type Reference } from 'langium';
32
import fs from 'node:fs';
43
import path from 'path';
@@ -172,7 +171,10 @@ export function getRecursiveBases(
172171
}
173172
seen.add(decl);
174173
decl.mixins.forEach((mixin) => {
175-
const baseDecl = mixin.ref;
174+
// avoid using mixin.ref since this function can be called before linking
175+
const baseDecl = decl.$container.declarations.find(
176+
(d): d is TypeDef => isTypeDef(d) && d.name === mixin.$refText,
177+
);
176178
if (baseDecl) {
177179
if (!includeDelegate && isDelegateModel(baseDecl)) {
178180
return;
@@ -517,13 +519,15 @@ export function getAllFields(
517519

518520
const fields: DataField[] = [];
519521
for (const mixin of decl.mixins) {
520-
invariant(mixin.ref, `Mixin ${mixin.$refText} is not resolved`);
521-
fields.push(...getAllFields(mixin.ref, includeIgnored, seen));
522+
if (mixin.ref) {
523+
fields.push(...getAllFields(mixin.ref, includeIgnored, seen));
524+
}
522525
}
523526

524527
if (isDataModel(decl) && decl.baseModel) {
525-
invariant(decl.baseModel.ref, `Base model ${decl.baseModel.$refText} is not resolved`);
526-
fields.push(...getAllFields(decl.baseModel.ref, includeIgnored, seen));
528+
if (decl.baseModel.ref) {
529+
fields.push(...getAllFields(decl.baseModel.ref, includeIgnored, seen));
530+
}
527531
}
528532

529533
fields.push(...decl.fields.filter((f) => includeIgnored || !hasAttribute(f, '@ignore')));
@@ -541,13 +545,15 @@ export function getAllAttributes(
541545

542546
const attributes: DataModelAttribute[] = [];
543547
for (const mixin of decl.mixins) {
544-
invariant(mixin.ref, `Mixin ${mixin.$refText} is not resolved`);
545-
attributes.push(...getAllAttributes(mixin.ref, seen));
548+
if (mixin.ref) {
549+
attributes.push(...getAllAttributes(mixin.ref, seen));
550+
}
546551
}
547552

548553
if (isDataModel(decl) && decl.baseModel) {
549-
invariant(decl.baseModel.ref, `Base model ${decl.baseModel.$refText} is not resolved`);
550-
attributes.push(...getAllAttributes(decl.baseModel.ref, seen));
554+
if (decl.baseModel.ref) {
555+
attributes.push(...getAllAttributes(decl.baseModel.ref, seen));
556+
}
551557
}
552558

553559
attributes.push(...decl.attributes);

0 commit comments

Comments
 (0)