Skip to content

Commit 19253ca

Browse files
authored
merge dev to main (#255)
2 parents bf9f4cb + b7548d1 commit 19253ca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+3954
-640
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,16 @@ labels: ''
66
assignees: ''
77
---
88

9-
**Describe the bug**
10-
A clear and concise description of what the bug is.
11-
12-
**To Reproduce**
13-
Steps to reproduce the behavior:
14-
15-
1.
16-
2.
17-
3.
18-
19-
**Expected behavior**
20-
A clear and concise description of what you expected to happen.
9+
**Description and expected behavior**
10+
A clear and concise description of what the bug is and what's the expected behavior.
2111

2212
**Screenshots**
2313
If applicable, add screenshots to help explain your problem.
2414

2515
**Environment (please complete the following information):**
2616

27-
- OS: [e.g. Mac OS 13.0]
28-
- Node version: [e.g. 16.15.0]
29-
- NPM version: [e.g. 8.19.2]
17+
- ZenStack version: [e.g., 1.0.0-alpha.50]
18+
- Prisma version: [e.g., 4.10.0]
3019
- Database type: [e.g. Postgresql]
3120

3221
**Additional context**

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zenstack-monorepo",
3-
"version": "1.0.0-alpha.62",
3+
"version": "1.0.0-alpha.73",
44
"description": "",
55
"scripts": {
66
"build": "pnpm -r build",

packages/language/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/language",
3-
"version": "1.0.0-alpha.62",
3+
"version": "1.0.0-alpha.73",
44
"displayName": "ZenStack modeling language compiler",
55
"description": "ZenStack modeling language compiler",
66
"homepage": "https://zenstack.dev",

packages/language/src/generated/ast.ts

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ export type DataModelAttributeName = string;
2424

2525
export type DataModelFieldAttributeName = string;
2626

27-
export type Expression = ArrayExpr | BinaryExpr | InvocationExpr | LiteralExpr | MemberAccessExpr | NullExpr | ReferenceExpr | ThisExpr | UnaryExpr;
27+
export type Expression = ArrayExpr | BinaryExpr | InvocationExpr | LiteralExpr | MemberAccessExpr | NullExpr | ObjectExpr | ReferenceExpr | ThisExpr | UnaryExpr;
2828

2929
export const Expression = 'Expression';
3030

3131
export function isExpression(item: unknown): item is Expression {
3232
return reflection.isInstance(item, Expression);
3333
}
3434

35-
export type ExpressionType = 'Any' | 'Boolean' | 'DateTime' | 'Float' | 'Int' | 'Null' | 'String';
35+
export type ExpressionType = 'Any' | 'Boolean' | 'DateTime' | 'Float' | 'Int' | 'Null' | 'Object' | 'String';
3636

3737
export type QualifiedName = string;
3838

@@ -66,7 +66,7 @@ export function isArgument(item: unknown): item is Argument {
6666
}
6767

6868
export interface ArrayExpr extends AstNode {
69-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
69+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
7070
readonly $type: 'ArrayExpr';
7171
items: Array<Expression>
7272
}
@@ -147,7 +147,7 @@ export function isAttributeParamType(item: unknown): item is AttributeParamType
147147
}
148148

149149
export interface BinaryExpr extends AstNode {
150-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
150+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
151151
readonly $type: 'BinaryExpr';
152152
left: Expression
153153
operator: '!' | '!=' | '&&' | '<' | '<=' | '==' | '>' | '>=' | '?' | '^' | '||'
@@ -286,6 +286,19 @@ export function isEnumField(item: unknown): item is EnumField {
286286
return reflection.isInstance(item, EnumField);
287287
}
288288

289+
export interface FieldInitializer extends AstNode {
290+
readonly $container: ObjectExpr;
291+
readonly $type: 'FieldInitializer';
292+
name: string
293+
value: Expression
294+
}
295+
296+
export const FieldInitializer = 'FieldInitializer';
297+
298+
export function isFieldInitializer(item: unknown): item is FieldInitializer {
299+
return reflection.isInstance(item, FieldInitializer);
300+
}
301+
289302
export interface FunctionDecl extends AstNode {
290303
readonly $container: Model;
291304
readonly $type: 'FunctionDecl';
@@ -355,7 +368,7 @@ export function isGeneratorField(item: unknown): item is GeneratorField {
355368
}
356369

357370
export interface InvocationExpr extends AstNode {
358-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
371+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
359372
readonly $type: 'InvocationExpr';
360373
args: Array<Argument>
361374
function: Reference<FunctionDecl>
@@ -368,7 +381,7 @@ export function isInvocationExpr(item: unknown): item is InvocationExpr {
368381
}
369382

370383
export interface LiteralExpr extends AstNode {
371-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
384+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
372385
readonly $type: 'LiteralExpr';
373386
value: boolean | number | string
374387
}
@@ -380,7 +393,7 @@ export function isLiteralExpr(item: unknown): item is LiteralExpr {
380393
}
381394

382395
export interface MemberAccessExpr extends AstNode {
383-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
396+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
384397
readonly $type: 'MemberAccessExpr';
385398
member: Reference<DataModelField>
386399
operand: Expression
@@ -404,7 +417,7 @@ export function isModel(item: unknown): item is Model {
404417
}
405418

406419
export interface NullExpr extends AstNode {
407-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
420+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
408421
readonly $type: 'NullExpr';
409422
value: string
410423
}
@@ -415,6 +428,18 @@ export function isNullExpr(item: unknown): item is NullExpr {
415428
return reflection.isInstance(item, NullExpr);
416429
}
417430

431+
export interface ObjectExpr extends AstNode {
432+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
433+
readonly $type: 'ObjectExpr';
434+
fields: Array<FieldInitializer>
435+
}
436+
437+
export const ObjectExpr = 'ObjectExpr';
438+
439+
export function isObjectExpr(item: unknown): item is ObjectExpr {
440+
return reflection.isInstance(item, ObjectExpr);
441+
}
442+
418443
export interface Plugin extends AstNode {
419444
readonly $container: Model;
420445
readonly $type: 'Plugin';
@@ -455,7 +480,7 @@ export function isReferenceArg(item: unknown): item is ReferenceArg {
455480
}
456481

457482
export interface ReferenceExpr extends AstNode {
458-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
483+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
459484
readonly $type: 'ReferenceExpr';
460485
args: Array<ReferenceArg>
461486
target: Reference<ReferenceTarget>
@@ -468,7 +493,7 @@ export function isReferenceExpr(item: unknown): item is ReferenceExpr {
468493
}
469494

470495
export interface ThisExpr extends AstNode {
471-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
496+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
472497
readonly $type: 'ThisExpr';
473498
value: string
474499
}
@@ -480,7 +505,7 @@ export function isThisExpr(item: unknown): item is ThisExpr {
480505
}
481506

482507
export interface UnaryExpr extends AstNode {
483-
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
508+
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr;
484509
readonly $type: 'UnaryExpr';
485510
operand: Expression
486511
operator: '!'
@@ -512,6 +537,7 @@ export interface ZModelAstType {
512537
Enum: Enum
513538
EnumField: EnumField
514539
Expression: Expression
540+
FieldInitializer: FieldInitializer
515541
FunctionDecl: FunctionDecl
516542
FunctionParam: FunctionParam
517543
FunctionParamType: FunctionParamType
@@ -522,6 +548,7 @@ export interface ZModelAstType {
522548
MemberAccessExpr: MemberAccessExpr
523549
Model: Model
524550
NullExpr: NullExpr
551+
ObjectExpr: ObjectExpr
525552
Plugin: Plugin
526553
PluginField: PluginField
527554
ReferenceArg: ReferenceArg
@@ -535,7 +562,7 @@ export interface ZModelAstType {
535562
export class ZModelAstReflection extends AbstractAstReflection {
536563

537564
getAllTypes(): string[] {
538-
return ['AbstractDeclaration', 'Argument', 'ArrayExpr', 'Attribute', 'AttributeArg', 'AttributeAttribute', 'AttributeParam', 'AttributeParamType', 'BinaryExpr', 'DataModel', 'DataModelAttribute', 'DataModelField', 'DataModelFieldAttribute', 'DataModelFieldType', 'DataSource', 'DataSourceField', 'Enum', 'EnumField', 'Expression', 'FunctionDecl', 'FunctionParam', 'FunctionParamType', 'GeneratorDecl', 'GeneratorField', 'InvocationExpr', 'LiteralExpr', 'MemberAccessExpr', 'Model', 'NullExpr', 'Plugin', 'PluginField', 'ReferenceArg', 'ReferenceExpr', 'ReferenceTarget', 'ThisExpr', 'TypeDeclaration', 'UnaryExpr'];
565+
return ['AbstractDeclaration', 'Argument', 'ArrayExpr', 'Attribute', 'AttributeArg', 'AttributeAttribute', 'AttributeParam', 'AttributeParamType', 'BinaryExpr', 'DataModel', 'DataModelAttribute', 'DataModelField', 'DataModelFieldAttribute', 'DataModelFieldType', 'DataSource', 'DataSourceField', 'Enum', 'EnumField', 'Expression', 'FieldInitializer', 'FunctionDecl', 'FunctionParam', 'FunctionParamType', 'GeneratorDecl', 'GeneratorField', 'InvocationExpr', 'LiteralExpr', 'MemberAccessExpr', 'Model', 'NullExpr', 'ObjectExpr', 'Plugin', 'PluginField', 'ReferenceArg', 'ReferenceExpr', 'ReferenceTarget', 'ThisExpr', 'TypeDeclaration', 'UnaryExpr'];
539566
}
540567

541568
protected override computeIsSubtype(subtype: string, supertype: string): boolean {
@@ -546,6 +573,7 @@ export class ZModelAstReflection extends AbstractAstReflection {
546573
case LiteralExpr:
547574
case MemberAccessExpr:
548575
case NullExpr:
576+
case ObjectExpr:
549577
case ReferenceExpr:
550578
case ThisExpr:
551579
case UnaryExpr: {
@@ -756,6 +784,14 @@ export class ZModelAstReflection extends AbstractAstReflection {
756784
]
757785
};
758786
}
787+
case 'ObjectExpr': {
788+
return {
789+
name: 'ObjectExpr',
790+
mandatory: [
791+
{ name: 'fields', type: 'array' }
792+
]
793+
};
794+
}
759795
case 'Plugin': {
760796
return {
761797
name: 'Plugin',

0 commit comments

Comments
 (0)