@jbrowse/jexl 5.0.1 → 6.0.0

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 (99) hide show
  1. package/README.md +8 -3
  2. package/dist/Expression.d.ts +0 -12
  3. package/dist/Expression.js +0 -16
  4. package/dist/Expression.js.map +1 -1
  5. package/dist/Jexl.js +12 -16
  6. package/dist/Jexl.js.map +1 -1
  7. package/dist/Lexer.d.ts +12 -94
  8. package/dist/Lexer.js +41 -142
  9. package/dist/Lexer.js.map +1 -1
  10. package/dist/analyze.d.ts +2 -0
  11. package/dist/analyze.js +7 -7
  12. package/dist/analyze.js.map +1 -1
  13. package/dist/check.d.ts +0 -5
  14. package/dist/check.js +62 -240
  15. package/dist/check.js.map +1 -1
  16. package/dist/collections.d.ts +7 -0
  17. package/dist/collections.js +9 -2
  18. package/dist/collections.js.map +1 -1
  19. package/dist/conditions.d.ts +1 -1
  20. package/dist/conditions.js +28 -50
  21. package/dist/conditions.js.map +1 -1
  22. package/dist/errors.d.ts +5 -0
  23. package/dist/errors.js +8 -0
  24. package/dist/errors.js.map +1 -1
  25. package/dist/evaluator/compile.js +37 -24
  26. package/dist/evaluator/compile.js.map +1 -1
  27. package/dist/grammar.d.ts +2 -2
  28. package/dist/grammar.js +1 -8
  29. package/dist/grammar.js.map +1 -1
  30. package/dist/index.d.ts +2 -1
  31. package/dist/index.js +3 -2
  32. package/dist/index.js.map +1 -1
  33. package/dist/operators.d.ts +5 -0
  34. package/dist/operators.js +9 -5
  35. package/dist/operators.js.map +1 -1
  36. package/dist/parser/Parser.d.ts +11 -12
  37. package/dist/parser/Parser.js +4 -10
  38. package/dist/parser/Parser.js.map +1 -1
  39. package/dist/print.d.ts +9 -0
  40. package/dist/print.js +183 -0
  41. package/dist/print.js.map +1 -0
  42. package/dist/types.d.ts +18 -21
  43. package/esm/Expression.d.ts +0 -12
  44. package/esm/Expression.js +0 -16
  45. package/esm/Expression.js.map +1 -1
  46. package/esm/Jexl.js +12 -16
  47. package/esm/Jexl.js.map +1 -1
  48. package/esm/Lexer.d.ts +12 -94
  49. package/esm/Lexer.js +40 -142
  50. package/esm/Lexer.js.map +1 -1
  51. package/esm/analyze.d.ts +2 -0
  52. package/esm/analyze.js +6 -7
  53. package/esm/analyze.js.map +1 -1
  54. package/esm/check.d.ts +0 -5
  55. package/esm/check.js +29 -206
  56. package/esm/check.js.map +1 -1
  57. package/esm/collections.d.ts +7 -0
  58. package/esm/collections.js +8 -1
  59. package/esm/collections.js.map +1 -1
  60. package/esm/conditions.d.ts +1 -1
  61. package/esm/conditions.js +27 -49
  62. package/esm/conditions.js.map +1 -1
  63. package/esm/errors.d.ts +5 -0
  64. package/esm/errors.js +7 -0
  65. package/esm/errors.js.map +1 -1
  66. package/esm/evaluator/compile.js +37 -24
  67. package/esm/evaluator/compile.js.map +1 -1
  68. package/esm/grammar.d.ts +2 -2
  69. package/esm/grammar.js +1 -8
  70. package/esm/grammar.js.map +1 -1
  71. package/esm/index.d.ts +2 -1
  72. package/esm/index.js +2 -1
  73. package/esm/index.js.map +1 -1
  74. package/esm/operators.d.ts +5 -0
  75. package/esm/operators.js +8 -5
  76. package/esm/operators.js.map +1 -1
  77. package/esm/parser/Parser.d.ts +11 -12
  78. package/esm/parser/Parser.js +4 -8
  79. package/esm/parser/Parser.js.map +1 -1
  80. package/esm/print.d.ts +9 -0
  81. package/esm/print.js +177 -0
  82. package/esm/print.js.map +1 -0
  83. package/esm/types.d.ts +18 -21
  84. package/package.json +2 -1
  85. package/src/Expression.ts +0 -20
  86. package/src/Jexl.ts +13 -20
  87. package/src/Lexer.ts +42 -144
  88. package/src/analyze.ts +10 -10
  89. package/src/check.ts +48 -250
  90. package/src/collections.ts +11 -1
  91. package/src/conditions.ts +39 -62
  92. package/src/errors.ts +10 -0
  93. package/src/evaluator/compile.ts +49 -36
  94. package/src/grammar.ts +3 -9
  95. package/src/index.ts +2 -1
  96. package/src/operators.ts +10 -6
  97. package/src/parser/Parser.ts +13 -19
  98. package/src/print.ts +203 -0
  99. package/src/types.ts +19 -23
package/src/types.ts CHANGED
@@ -27,41 +27,36 @@ export interface Token {
27
27
  raw: string
28
28
  }
29
29
 
30
- export interface AstNode {
31
- type: string
32
- right?: AstNode
33
- }
34
-
35
- export interface Literal extends AstNode {
30
+ export interface Literal {
36
31
  type: 'Literal'
37
32
  value: string | number | boolean | null
38
33
  }
39
34
 
40
- export interface Identifier extends AstNode {
35
+ export interface Identifier {
41
36
  type: 'Identifier'
42
37
  value: string
43
38
  from?: AstNode
44
39
  }
45
40
 
46
- export interface BinaryExpression extends AstNode {
41
+ export interface BinaryExpression {
47
42
  type: 'BinaryExpression'
48
43
  operator: string
49
44
  left: AstNode
50
- right?: AstNode
45
+ right: AstNode
51
46
  }
52
47
 
53
- export interface UnaryExpression extends AstNode {
48
+ export interface UnaryExpression {
54
49
  type: 'UnaryExpression'
55
50
  operator: string
56
- right?: AstNode
51
+ right: AstNode
57
52
  }
58
53
 
59
- export interface ArrayLiteral extends AstNode {
54
+ export interface ArrayLiteral {
60
55
  type: 'ArrayLiteral'
61
56
  value: AstNode[]
62
57
  }
63
58
 
64
- export interface ObjectLiteral extends AstNode {
59
+ export interface ObjectLiteral {
65
60
  type: 'ObjectLiteral'
66
61
  value: Record<string, AstNode>
67
62
  }
@@ -70,48 +65,49 @@ export type TemplateLiteralPart =
70
65
  | { type: 'static'; value: string }
71
66
  | { type: 'expression'; value: AstNode }
72
67
 
73
- export interface TemplateLiteral extends AstNode {
68
+ export interface TemplateLiteral {
74
69
  type: 'TemplateLiteral'
75
70
  parts: TemplateLiteralPart[]
76
71
  }
77
72
 
78
- export interface FunctionCall extends AstNode {
73
+ export interface FunctionCall {
79
74
  type: 'FunctionCall'
80
75
  name: string
81
76
  args: AstNode[]
82
77
  }
83
78
 
84
- export interface FilterExpression extends AstNode {
79
+ export interface FilterExpression {
85
80
  type: 'FilterExpression'
86
81
  expr: AstNode
87
82
  subject: AstNode
88
83
  }
89
84
 
90
- export interface ConditionalExpression extends AstNode {
85
+ export interface ConditionalExpression {
91
86
  type: 'ConditionalExpression'
92
87
  test: AstNode
93
88
  consequent?: AstNode
94
89
  alternate?: AstNode
95
90
  }
96
91
 
97
- export interface SequenceExpression extends AstNode {
92
+ export interface SequenceExpression {
98
93
  type: 'SequenceExpression'
99
94
  expressions: AstNode[]
100
95
  }
101
96
 
102
- export interface AssignmentExpression extends AstNode {
97
+ export interface AssignmentExpression {
103
98
  type: 'AssignmentExpression'
104
99
  operator: '='
105
100
  left: Identifier
101
+ right: AstNode
106
102
  }
107
103
 
108
- export interface Lambda extends AstNode {
104
+ export interface Lambda {
109
105
  type: 'Lambda'
110
106
  params: string[]
111
107
  body: AstNode
112
108
  }
113
109
 
114
- export type AstNodeUnion =
110
+ export type AstNode =
115
111
  | Literal
116
112
  | Identifier
117
113
  | BinaryExpression
@@ -126,7 +122,7 @@ export type AstNodeUnion =
126
122
  | AssignmentExpression
127
123
  | Lambda
128
124
 
129
- export type NodeByType<T extends AstNodeUnion['type']> = Extract<
130
- AstNodeUnion,
125
+ export type NodeByType<T extends AstNode['type']> = Extract<
126
+ AstNode,
131
127
  { type: T }
132
128
  >