@surrealdb/lezer 1.0.5 → 1.0.8

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.
@@ -32,6 +32,7 @@
32
32
  filter
33
33
  for
34
34
  clause
35
+ flexibleAfter
35
36
  }
36
37
 
37
38
  expressions {
@@ -63,6 +64,7 @@ anyKeyword {
63
64
  asc |
64
65
  assert |
65
66
  at |
67
+ async |
66
68
  authenticate |
67
69
  auto |
68
70
  begin |
@@ -336,6 +338,7 @@ defineEventOptions {
336
338
  value
337
339
  } |
338
340
  ThenClause {
341
+ async?
339
342
  then
340
343
  commaSep<(SubQuery | Block)>
341
344
  } |
@@ -872,7 +875,12 @@ Range[since=2_0_0] {
872
875
  }
873
876
 
874
877
  Idiom {
875
- Ident ( "." Ident )*
878
+ Ident idiomPart*
879
+ }
880
+
881
+ idiomPart {
882
+ "." ( Ident | AnyStar ) |
883
+ "[" AnyStar "]"
876
884
  }
877
885
 
878
886
  Path {
@@ -1096,7 +1104,7 @@ FieldAssignment {
1096
1104
  // Clauses
1097
1105
 
1098
1106
  MergeClause {
1099
- merge Object
1107
+ merge value
1100
1108
  }
1101
1109
 
1102
1110
  PatchClause {
@@ -1384,9 +1392,9 @@ FunctionClause {
1384
1392
  }
1385
1393
 
1386
1394
  TypeClause {
1387
- flexible?
1388
- typeKeyword
1389
- type
1395
+ ( flexible typeKeyword type ) |
1396
+ ( typeKeyword type !flexibleAfter flexible ) |
1397
+ ( typeKeyword type )
1390
1398
  }
1391
1399
 
1392
1400
  ReadonlyClause[since=1_2_0] {
@@ -1593,12 +1601,13 @@ Operator {
1593
1601
  CommentResult[@name=Comment,closedBy=CommentResultClose] { "-------- Query" ![\n]* }
1594
1602
 
1595
1603
  // Numbers
1596
- Int { @digit+ }
1597
- frac { '.' @digit+ }
1598
- exp { $[eE] $[+\-]? @digit+ }
1599
- Float { (@digit+ (frac exp? | exp) "f"?) | "Infinity" | "NaN" }
1600
- Decimal { @digit+ frac? exp? "dec" }
1601
- VersionNumber { @digit+ ("." @digit+ ("." @digit+)?)? }
1604
+ digitSeq { @digit+ ("_" @digit+)* }
1605
+ Int { digitSeq }
1606
+ frac { '.' digitSeq }
1607
+ exp { $[eE] $[+\-]? digitSeq }
1608
+ Float { (digitSeq "f") | (digitSeq (frac exp? | exp) "f"?) | "Infinity" | "NaN" }
1609
+ Decimal { digitSeq frac? exp? "dec" }
1610
+ VersionNumber { digitSeq ("." digitSeq ("." digitSeq)?)? }
1602
1611
 
1603
1612
  String { "'" (!['\\] | "\\" _)* "'" | '"' (!["\\] | "\\" _)* '"' }
1604
1613
  prefixedString[@name=String] { $[rudbf] String }
@@ -1631,7 +1640,7 @@ Operator {
1631
1640
  Regex { "/" (![/\\\n[] | "\\" ![\n] | "[" (![\n\\\]] | "\\" ![\n])* "]")+ ("/" $[dgimsuvy]*)? }
1632
1641
 
1633
1642
  durationUnit { "ns" | "us" | "µs" | "ms" | "s" | "m" | "h" | "d" | "w" | "y"}
1634
- DurationPart { @digit+ " "* durationUnit }
1643
+ DurationPart { digitSeq " "* durationUnit }
1635
1644
 
1636
1645
  @precedence { CommentResult Comment Int "-" }
1637
1646
  @precedence { Comment binaryOperator }
@@ -1693,6 +1702,7 @@ piped<content> {
1693
1702
  asc [@name=Keyword],
1694
1703
  assert [@name=Keyword],
1695
1704
  at [@name=Keyword],
1705
+ async [@name=Keyword],
1696
1706
  authenticate [@name=Keyword],
1697
1707
  auto [@name=Keyword],
1698
1708
  backend [@name=Keyword],
package/src/tokens.js CHANGED
@@ -25,6 +25,7 @@ import {
25
25
  asc,
26
26
  assert,
27
27
  at,
28
+ async,
28
29
  authenticate,
29
30
  auto,
30
31
  backend,
@@ -222,6 +223,7 @@ const tokenMap = {
222
223
  asc,
223
224
  assert,
224
225
  at,
226
+ async,
225
227
  authenticate,
226
228
  auto,
227
229
  backend,
@@ -46,6 +46,14 @@ DEFINE EVENT myevent ON TABLE person WHEN $event = "CREATE" THEN (CREATE log)
46
46
 
47
47
  SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),WhenClause(Keyword,BinaryExpression(VariableName,Operator,String)),ThenClause(Keyword,SubQuery(CreateStatement(Keyword,Ident)))))
48
48
 
49
+ # Define event with async
50
+
51
+ DEFINE EVENT e ON TABLE file WHEN $event = 'DELETE' ASYNC THEN { };
52
+
53
+ ==>
54
+
55
+ SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),WhenClause(Keyword,BinaryExpression(VariableName,Operator,String)),ThenClause(Keyword,Keyword,Block(BraceOpen,BraceClose))))
56
+
49
57
  # Define field
50
58
 
51
59
  DEFINE FIELD name ON TABLE person TYPE string
@@ -86,6 +94,22 @@ DEFINE FIELD data ON TABLE person FLEXIBLE TYPE object
86
94
 
87
95
  SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,Keyword,TypeName)))
88
96
 
97
+ # Define field with flexible after type clause
98
+
99
+ DEFINE FIELD metadata ON TABLE user TYPE object FLEXIBLE
100
+
101
+ ==>
102
+
103
+ SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName,Keyword)))
104
+
105
+ # Define field flexible after parameterized object type
106
+
107
+ DEFINE FIELD alternatives ON file TYPE option<object> FLEXIBLE
108
+
109
+ ==>
110
+
111
+ SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Ident),TypeClause(Keyword,ParameterizedType(TypeName,"<",TypeName,">"),Keyword)))
112
+
89
113
  # Define field with permissions
90
114
 
91
115
  DEFINE FIELD secret ON TABLE person TYPE string PERMISSIONS FOR select, create WHERE $auth.admin = true
@@ -110,6 +134,30 @@ DEFINE FIELD fullname ON TABLE person COMPUTED $value.first + " " + $value.last
110
134
 
111
135
  SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),ComputedClause(Keyword,BinaryExpression(BinaryExpression(Path(VariableName,Subscript(Ident)),Operator,String),Operator,Path(VariableName,Subscript(Ident))))))
112
136
 
137
+ # Define field on array items
138
+
139
+ DEFINE FIELD children.* ON parent TYPE record<child> PERMISSIONS FULL
140
+
141
+ ==>
142
+
143
+ SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident,Any),OnTableClause(Keyword,Ident),TypeClause(Keyword,ParameterizedType(TypeName,"<",TypeName,">")),PermissionsForClause(Keyword,Literal)))
144
+
145
+ # Define field on array items with bracket wildcard
146
+
147
+ DEFINE FIELD tags[*] ON TABLE person TYPE string
148
+
149
+ ==>
150
+
151
+ SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident,"[",Any,"]"),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName)))
152
+
153
+ # Define field nested below array items
154
+
155
+ DEFINE FIELD comments.*.title ON TABLE post TYPE string
156
+
157
+ ==>
158
+
159
+ SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident,Any,Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName)))
160
+
113
161
  # Define index unique
114
162
 
115
163
  DEFINE INDEX idx_email ON TABLE person FIELDS email UNIQUE
@@ -118,6 +166,14 @@ DEFINE INDEX idx_email ON TABLE person FIELDS email UNIQUE
118
166
 
119
167
  SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(UniqueClause(Keyword))))
120
168
 
169
+ # Define index on array items
170
+
171
+ DEFINE INDEX idx_tags ON TABLE person FIELDS tags.* UNIQUE
172
+
173
+ ==>
174
+
175
+ SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident,Any)),IndexClause(UniqueClause(Keyword))))
176
+
121
177
  # Define index search analyzer
122
178
 
123
179
  DEFINE INDEX idx_search ON TABLE person FIELDS name SEARCH ANALYZER my_analyzer BM25
@@ -38,6 +38,14 @@ UPDATE person MERGE {age: 31}
38
38
 
39
39
  SurrealQL(UpdateStatement(Keyword,Ident,MergeClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,Number(Int))),BraceClose))))
40
40
 
41
+ # Update path target with MERGE expression
42
+
43
+ UPDATE $object.id MERGE ($object + {updatedBy: $user});
44
+
45
+ ==>
46
+
47
+ SurrealQL(UpdateStatement(Keyword,Path(VariableName,Subscript(Ident)),MergeClause(Keyword,SubQuery(BinaryExpression(VariableName,Operator,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,VariableName)),BraceClose))))))
48
+
41
49
  # Update with REPLACE
42
50
 
43
51
  UPDATE person REPLACE {name: "Tobie"}
@@ -32,11 +32,23 @@ SurrealQL(Number(Float),Number(Float),Number(Float),Number(Float))
32
32
  # Float with f suffix
33
33
 
34
34
  2e4f;
35
- 3.14f
35
+ 3.14f;
36
+ 100f
36
37
 
37
38
  ==>
38
39
 
39
- SurrealQL(Number(Float),Number(Float))
40
+ SurrealQL(Number(Float),Number(Float),Number(Float))
41
+
42
+ # Underscore separators
43
+
44
+ 1_000_000;
45
+ 1_000_000.99;
46
+ 1_000.5f;
47
+ 2_000_000dec
48
+
49
+ ==>
50
+
51
+ SurrealQL(Number(Int),Number(Float),Number(Float),Number(Decimal))
40
52
 
41
53
  # Float special values
42
54