@jbrowse/jexl 2.3.1 → 3.0.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/CHANGELOG.md +27 -0
  2. package/LICENSE.txt +1 -0
  3. package/README.md +77 -85
  4. package/dist/Expression.d.ts +2 -12
  5. package/dist/Expression.js +5 -27
  6. package/dist/Expression.js.map +1 -1
  7. package/dist/Jexl.d.ts +6 -40
  8. package/dist/Jexl.js +7 -49
  9. package/dist/Jexl.js.map +1 -1
  10. package/dist/Lexer.js +3 -1
  11. package/dist/Lexer.js.map +1 -1
  12. package/dist/evaluator/Evaluator.d.ts +14 -55
  13. package/dist/evaluator/Evaluator.js +14 -73
  14. package/dist/evaluator/Evaluator.js.map +1 -1
  15. package/dist/evaluator/handlers.d.ts +19 -18
  16. package/dist/evaluator/handlers.js +54 -62
  17. package/dist/evaluator/handlers.js.map +1 -1
  18. package/dist/grammar.d.ts +3 -4
  19. package/dist/grammar.js +16 -39
  20. package/dist/grammar.js.map +1 -1
  21. package/dist/parser/Parser.js +16 -3
  22. package/dist/parser/Parser.js.map +1 -1
  23. package/dist/parser/states.js +7 -3
  24. package/dist/parser/states.js.map +1 -1
  25. package/esm/Expression.d.ts +2 -12
  26. package/esm/Expression.js +5 -27
  27. package/esm/Expression.js.map +1 -1
  28. package/esm/Jexl.d.ts +6 -40
  29. package/esm/Jexl.js +7 -49
  30. package/esm/Jexl.js.map +1 -1
  31. package/esm/Lexer.js +3 -1
  32. package/esm/Lexer.js.map +1 -1
  33. package/esm/evaluator/Evaluator.d.ts +14 -55
  34. package/esm/evaluator/Evaluator.js +14 -73
  35. package/esm/evaluator/Evaluator.js.map +1 -1
  36. package/esm/evaluator/handlers.d.ts +19 -18
  37. package/esm/evaluator/handlers.js +54 -62
  38. package/esm/evaluator/handlers.js.map +1 -1
  39. package/esm/grammar.d.ts +3 -4
  40. package/esm/grammar.js +16 -39
  41. package/esm/grammar.js.map +1 -1
  42. package/esm/parser/Parser.js +16 -3
  43. package/esm/parser/Parser.js.map +1 -1
  44. package/esm/parser/states.js +7 -3
  45. package/esm/parser/states.js.map +1 -1
  46. package/package.json +10 -8
  47. package/src/Expression.ts +5 -36
  48. package/src/Jexl.ts +7 -54
  49. package/src/Lexer.ts +3 -1
  50. package/src/evaluator/Evaluator.ts +14 -92
  51. package/src/evaluator/handlers.ts +54 -68
  52. package/src/grammar.ts +17 -38
  53. package/src/parser/Parser.ts +13 -3
  54. package/src/parser/states.ts +7 -3
  55. package/src/types.ts +4 -1
  56. package/dist/PromiseSync.d.ts +0 -13
  57. package/dist/PromiseSync.js +0 -80
  58. package/dist/PromiseSync.js.map +0 -1
  59. package/esm/PromiseSync.d.ts +0 -13
  60. package/esm/PromiseSync.js +0 -78
  61. package/esm/PromiseSync.js.map +0 -1
  62. package/src/PromiseSync.ts +0 -86
package/CHANGELOG.md CHANGED
@@ -6,6 +6,33 @@ This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
7
  Nothing yet!
8
8
 
9
+ ## [v3.0.0]
10
+
11
+ ### BREAKING CHANGES
12
+
13
+ - **Removed async evaluation support**: Jexl now only supports synchronous evaluation
14
+ - **Renamed methods**: `evalSync()` has been renamed to `eval()`. The async `eval()` method has been removed.
15
+ - **Removed PromiseSync class**: Internal implementation detail removed
16
+ - **Removed transforms**: The transform/pipe operator (`|`) has been completely removed. Use functions instead.
17
+ - **Removed array filtering**: Relative filter expressions (e.g., `array[.property == value]`) have been removed. Bracket notation for array/object access (e.g., `array[0]`, `object["key"]`) still works.
18
+ - **Removed transform methods**: `addTransform()`, `addTransforms()`, and `getTransform()` have been removed.
19
+
20
+ ### Changed
21
+
22
+ - Simplified codebase by removing Promise/PromiseSync abstraction layer
23
+ - All evaluation is now synchronous, improving performance and simplifying error handling
24
+ - Errors are now thrown directly rather than being rejected Promises
25
+ - Removed pipe operator (`|`) from grammar
26
+ - Removed filter bracket syntax for relative filtering
27
+
28
+ ### Migration Guide
29
+
30
+ - Replace `await jexl.eval(expr)` with `jexl.eval(expr)` (remove await)
31
+ - Replace `jexl.evalSync(expr)` with `jexl.eval(expr)` (remove Sync suffix)
32
+ - Replace transforms with functions: change `value|transform(arg)` to `transform(value, arg)`
33
+ - Remove uses of relative filtering syntax `array[.prop == value]` (note: direct indexing like `array[0]` still works)
34
+ - Replace `.catch()` error handling with `try/catch` blocks
35
+
9
36
  ## [v2.3.0]
10
37
 
11
38
  ### Added
package/LICENSE.txt CHANGED
@@ -1,3 +1,4 @@
1
+ Copyright (c) 2025 Colin Diesh
1
2
  Copyright (c) 2020 Tom Shawver
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
package/README.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # @jbrowse/jexl
2
2
 
3
- A fork of the jexl lang for jbrowse
3
+ A fork of the TomFrost/jexl minimal expression lang for jbrowse
4
+
5
+ Major changes include
6
+
7
+ - Removing async
8
+ - Remove 'transforms' (use functions instead)
9
+ - Remove array filtering expressions
10
+ - Added template strings
11
+ - Added multiple expression evaluation
4
12
 
5
13
  ## Quick Examples
6
14
 
@@ -16,30 +24,26 @@ const context = {
16
24
  }
17
25
 
18
26
  // Template strings with interpolation
19
- jexl.evalSync('`Hello ${name.first} ${name.last}`', context)
27
+ jexl.eval('`Hello ${name.first} ${name.last}`', context)
20
28
  // "Hello Sterling Archer"
21
29
 
22
- jexl.evalSync('`Age in 5 years: ${age + 5}`', context)
30
+ jexl.eval('`Age in 5 years: ${age + 5}`', context)
23
31
  // "Age in 5 years: 41"
24
32
 
25
- // Filter arrays
26
- jexl.evalSync('assoc[.first == "Lana"].last', context)
27
- // "Kane"
28
-
29
33
  // Math operations
30
- jexl.evalSync('age * (3 - 1)', context)
34
+ jexl.eval('age * (3 - 1)', context)
31
35
  // 72
32
36
 
33
37
  // String concatenation
34
- jexl.evalSync('name.first + " " + name.last', context)
38
+ jexl.eval('name.first + " " + name.last', context)
35
39
  // "Sterling Archer"
36
40
 
37
41
  // Conditional logic
38
- jexl.evalSync('age > 62 ? "retired" : "working"', context)
42
+ jexl.eval('age > 62 ? "retired" : "working"', context)
39
43
  // "working"
40
44
 
41
45
  // Array indexes
42
- jexl.evalSync('assoc[1].first', context)
46
+ jexl.eval('assoc[1].first', context)
43
47
  // "Cyril"
44
48
  ```
45
49
 
@@ -63,17 +67,17 @@ Template strings use backticks and support expression interpolation with `${}`:
63
67
  ```javascript
64
68
  const context = { name: 'World', price: 10, qty: 3 }
65
69
 
66
- jexl.evalSync('`Hello ${name}!`', context)
70
+ jexl.eval('`Hello ${name}!`', context)
67
71
  // "Hello World!"
68
72
 
69
- jexl.evalSync('`Total: $${price * qty}`', context)
73
+ jexl.eval('`Total: $${price * qty}`', context)
70
74
  // "Total: $30"
71
75
 
72
76
  // Escape backticks and dollar signs with backslash
73
- jexl.evalSync('`Code: \\`example\\``')
77
+ jexl.eval('`Code: \\`example\\``')
74
78
  // "Code: `example`"
75
79
 
76
- jexl.evalSync('`Price: \\$100`')
80
+ jexl.eval('`Price: \\$100`')
77
81
  // "Price: $100"
78
82
  ```
79
83
 
@@ -103,49 +107,10 @@ const context = {
103
107
  lastEx: 2
104
108
  }
105
109
 
106
- jexl.evalSync('name.first', context) // "Malory"
107
- jexl.evalSync('name["last"]', context) // "Archer"
108
- jexl.evalSync('exes[2]', context) // "Burt"
109
- jexl.evalSync('exes[lastEx - 1]', context) // "Len"
110
- ```
111
-
112
- ### Filtering Collections
113
-
114
- Filter arrays using expressions in brackets. Reference properties with a leading dot:
115
-
116
- ```javascript
117
- const context = {
118
- employees: [
119
- { first: 'Sterling', last: 'Archer', age: 36 },
120
- { first: 'Malory', last: 'Archer', age: 75 },
121
- { first: 'Lana', last: 'Kane', age: 33 },
122
- { first: 'Cyril', last: 'Figgis', age: 45 }
123
- ]
124
- }
125
-
126
- jexl.evalSync('employees[.first == "Sterling"]', context)
127
- // [{ first: 'Sterling', last: 'Archer', age: 36 }]
128
-
129
- jexl.evalSync('employees[.age >= 30 && .age < 40]', context)
130
- // [{ first: 'Sterling', ... }, { first: 'Lana', ... }]
131
-
132
- jexl.evalSync('employees[.last == "Kane"].first', context)
133
- // "Lana"
134
- ```
135
-
136
- ### Transforms
137
-
138
- Apply transforms to values using the pipe operator:
139
-
140
- ```javascript
141
- jexl.addTransform('upper', (val) => val.toUpperCase())
142
- jexl.addTransform('split', (val, char) => val.split(char))
143
-
144
- jexl.evalSync('"hello"|upper')
145
- // "HELLO"
146
-
147
- jexl.evalSync('"firstName lastName"|split(" ")[0]')
148
- // "firstName"
110
+ jexl.eval('name.first', context) // "Malory"
111
+ jexl.eval('name["last"]', context) // "Archer"
112
+ jexl.eval('exes[2]', context) // "Burt"
113
+ jexl.eval('exes[lastEx - 1]', context) // "Len"
149
114
  ```
150
115
 
151
116
  ### Functions
@@ -156,61 +121,88 @@ Call functions in expressions:
156
121
  jexl.addFunction('min', Math.min)
157
122
  jexl.addFunction('max', Math.max)
158
123
 
159
- jexl.evalSync('min(5, 2, 9)')
124
+ jexl.eval('min(5, 2, 9)')
160
125
  // 2
161
126
 
162
- jexl.evalSync('max(temperature, threshold)')
127
+ jexl.eval('max(temperature, threshold)')
163
128
  // evaluates with context
164
129
  ```
165
130
 
166
- ### Multiple Expressions
167
-
168
- Separate multiple expressions with semicolons. The result is the value of the last expression:
169
-
170
- ```javascript
171
- jexl.evalSync('5; 10; 15')
172
- // 15
173
-
174
- jexl.evalSync('1 + 1; 2 + 2; 3 + 3')
175
- // 6
176
- ```
177
-
178
131
  ### Variable Assignment
179
132
 
180
133
  Assign values to variables using `=` (no `let`, `var`, or `const` needed). Assignments mutate the context and return the assigned value:
181
134
 
182
135
  ```javascript
183
- jexl.evalSync('x = 5')
136
+ jexl.eval('x = 5')
184
137
  // 5
185
138
 
186
- jexl.evalSync('x = 5; x * 2')
139
+ jexl.eval('x = 5; x * 2')
187
140
  // 10
188
141
 
189
- jexl.evalSync('x = 5; y = 10; x + y')
142
+ jexl.eval('x = 5; y = 10; x + y')
190
143
  // 15
191
144
 
192
145
  const context = {}
193
- jexl.evalSync('x = 5; y = x * 2; y', context)
146
+ jexl.eval('x = 5; y = x * 2; y', context)
194
147
  // 10
195
148
  // context is now { x: 5, y: 10 }
196
149
  ```
197
150
 
198
- ## Usage
151
+ Separate multiple expressions with semicolons. The result is the value of the last expression:
199
152
 
200
- ```javascript
201
- import jexl from 'jexl'
153
+ ## API
202
154
 
203
- // Synchronous evaluation
204
- const result = jexl.evalSync('expression', context)
155
+ ### Evaluation
205
156
 
206
- // Asynchronous evaluation (supports async transforms/functions)
207
- const result = await jexl.eval('expression', context)
157
+ ```javascript
158
+ import jexl from '@jbrowse/jexl'
159
+
160
+ // Evaluate an expression
161
+ const result = jexl.eval('expression', context)
208
162
 
209
163
  // Compile once, evaluate many times
210
164
  const expr = jexl.compile('name.first + " " + name.last')
211
- expr.evalSync({ name: { first: 'John', last: 'Doe' } })
165
+ const result = expr.eval({ name: { first: 'John', last: 'Doe' } })
166
+ ```
167
+
168
+ ### Adding Custom Functions
169
+
170
+ ```javascript
171
+ // Add a single function
172
+ jexl.addFunction('round', Math.round)
173
+ jexl.addFunction('lower', (str) => str.toLowerCase())
174
+
175
+ // Add multiple functions
176
+ jexl.addFunctions({
177
+ min: Math.min,
178
+ max: Math.max,
179
+ abs: Math.abs
180
+ })
181
+
182
+ // Use in expressions
183
+ jexl.eval('round(3.7)') // 4
184
+ jexl.eval('lower(name)', { name: 'HELLO' }) // "hello"
185
+ jexl.eval('max(1, 5, 3)') // 5
186
+ ```
187
+
188
+ ### Adding Custom Operators
189
+
190
+ ```javascript
191
+ // Add a binary operator
192
+ jexl.addBinaryOp(
193
+ '~=',
194
+ 20,
195
+ (left, right) => left.toLowerCase() === right.toLowerCase()
196
+ )
197
+
198
+ jexl.eval('"Hello" ~= "hello"') // true
199
+
200
+ // Add a unary operator
201
+ jexl.addUnaryOp('~', (right) => Math.floor(right))
202
+
203
+ jexl.eval('~3.7') // 3
212
204
  ```
213
205
 
214
206
  ## License
215
207
 
216
- MIT License - see LICENSE.txt for details
208
+ MIT License, same as TomFrost/Jexl
@@ -1,10 +1,8 @@
1
- import PromiseSync from './PromiseSync.ts';
2
1
  import type { AstNode } from './types.ts';
3
2
  interface Grammar {
4
3
  elements: Record<string, any>;
5
4
  [key: string]: any;
6
5
  }
7
- type PromiseConstructor = typeof Promise | typeof PromiseSync;
8
6
  declare class Expression {
9
7
  _grammar: Grammar;
10
8
  _exprStr: string;
@@ -18,21 +16,13 @@ declare class Expression {
18
16
  */
19
17
  compile(): this;
20
18
  /**
21
- * Asynchronously evaluates the expression within an optional context.
22
- * @param {Object} [context] A mapping of variables to values, which will be
23
- * made accessible to the Jexl expression when evaluating it
24
- * @returns {Promise<*>} resolves with the result of the evaluation.
25
- */
26
- eval(context?: {}): Promise<any> | PromiseSync<any>;
27
- /**
28
- * Synchronously evaluates the expression within an optional context.
19
+ * Evaluates the expression within an optional context.
29
20
  * @param {Object} [context] A mapping of variables to values, which will be
30
21
  * made accessible to the Jexl expression when evaluating it
31
22
  * @returns {*} the result of the evaluation.
32
23
  * @throws {*} on error
33
24
  */
34
- evalSync(context?: {}): unknown;
35
- _eval(context: any, promise: PromiseConstructor): Promise<any> | PromiseSync<any>;
25
+ eval(context?: {}): any;
36
26
  _getAst(): AstNode | null;
37
27
  }
38
28
  export default Expression;
@@ -8,7 +8,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
8
8
  };
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  const Lexer_ts_1 = __importDefault(require("./Lexer.js"));
11
- const PromiseSync_ts_1 = __importDefault(require("./PromiseSync.js"));
12
11
  const Evaluator_ts_1 = __importDefault(require("./evaluator/Evaluator.js"));
13
12
  const Parser_ts_1 = __importDefault(require("./parser/Parser.js"));
14
13
  class Expression {
@@ -32,37 +31,16 @@ class Expression {
32
31
  return this;
33
32
  }
34
33
  /**
35
- * Asynchronously evaluates the expression within an optional context.
36
- * @param {Object} [context] A mapping of variables to values, which will be
37
- * made accessible to the Jexl expression when evaluating it
38
- * @returns {Promise<*>} resolves with the result of the evaluation.
39
- */
40
- eval(context = {}) {
41
- return this._eval(context, Promise);
42
- }
43
- /**
44
- * Synchronously evaluates the expression within an optional context.
34
+ * Evaluates the expression within an optional context.
45
35
  * @param {Object} [context] A mapping of variables to values, which will be
46
36
  * made accessible to the Jexl expression when evaluating it
47
37
  * @returns {*} the result of the evaluation.
48
38
  * @throws {*} on error
49
39
  */
50
- evalSync(context = {}) {
51
- const res = this._eval(context, PromiseSync_ts_1.default);
52
- if (res.error) {
53
- if (res.error instanceof Error) {
54
- throw res.error;
55
- }
56
- throw new Error(typeof res.error === 'string' ? res.error : JSON.stringify(res.error));
57
- }
58
- return res.value;
59
- }
60
- _eval(context, promise) {
61
- return promise.resolve().then(() => {
62
- const ast = this._getAst();
63
- const evaluator = new Evaluator_ts_1.default(this._grammar, context, undefined, promise);
64
- return evaluator.eval(ast);
65
- });
40
+ eval(context = {}) {
41
+ const ast = this._getAst();
42
+ const evaluator = new Evaluator_ts_1.default(this._grammar, context);
43
+ return evaluator.eval(ast);
66
44
  }
67
45
  _getAst() {
68
46
  if (!this._ast) {
@@ -1 +1 @@
1
- {"version":3,"file":"Expression.js","sourceRoot":"","sources":["../src/Expression.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAEH,0DAA8B;AAC9B,sEAA0C;AAC1C,4EAAgD;AAChD,mEAAuC;AAWvC,MAAM,UAAU;IAKd,YAAY,OAAgB,EAAE,OAAe;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED;;;;;OAKG;IACH,OAAO;QACL,MAAM,KAAK,GAAG,IAAI,kBAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,OAAO,GAAG,EAAE;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,GAAG,EAAE;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,wBAAkB,CAAgB,CAAA;QAClE,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,GAAG,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC/B,MAAM,GAAG,CAAC,KAAK,CAAA;YACjB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QACxF,CAAC;QACD,OAAO,GAAG,CAAC,KAAK,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,OAAY,EAAE,OAA2B;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;YAC1B,MAAM,SAAS,GAAG,IAAI,sBAAS,CAC7B,IAAI,CAAC,QAAQ,EACb,OAAO,EACP,SAAS,EACT,OAAO,CACR,CAAA;YACD,OAAO,SAAS,CAAC,IAAI,CAAC,GAAI,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CACF;AAED,kBAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"Expression.js","sourceRoot":"","sources":["../src/Expression.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAEH,0DAA8B;AAC9B,4EAAgD;AAChD,mEAAuC;AASvC,MAAM,UAAU;IAKd,YAAY,OAAgB,EAAE,OAAe;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED;;;;;OAKG;IACH,OAAO;QACL,MAAM,KAAK,GAAG,IAAI,kBAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,GAAG,EAAE;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC1B,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACvD,OAAO,SAAS,CAAC,IAAI,CAAC,GAAI,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CACF;AAED,kBAAe,UAAU,CAAA"}
package/dist/Jexl.d.ts CHANGED
@@ -2,7 +2,6 @@ import Expression from './Expression.ts';
2
2
  interface Grammar {
3
3
  elements: Record<string, any>;
4
4
  functions: Record<string, (...args: any[]) => any>;
5
- transforms: Record<string, (val: any, ...args: any[]) => any>;
6
5
  }
7
6
  /**
8
7
  * Jexl is the Javascript Expression Language, capable of parsing and
@@ -26,13 +25,11 @@ declare class Jexl {
26
25
  * @param {number} precedence The operator's precedence
27
26
  * @param {function} fn A function to run to calculate the result. The function
28
27
  * will be called with two arguments: left and right, denoting the values
29
- * on either side of the operator. It should return either the resulting
30
- * value, or a Promise that resolves with the resulting value.
28
+ * on either side of the operator. It should return the resulting value.
31
29
  * @param {boolean} [manualEval] If true, the `left` and `right` arguments
32
30
  * will be wrapped in objects with an `eval` function. Calling
33
- * left.eval() or right.eval() will return a promise that resolves to
34
- * that operand's actual value. This is useful to conditionally evaluate
35
- * operands.
31
+ * left.eval() or right.eval() will return that operand's actual value.
32
+ * This is useful to conditionally evaluate operands.
36
33
  */
37
34
  addBinaryOp(operator: string, precedence: number, fn: (left: any, right: any) => any, manualEval?: boolean): void;
38
35
  /**
@@ -57,26 +54,9 @@ declare class Jexl {
57
54
  * @param {string} operator The operator string to be added
58
55
  * @param {function} fn A function to run to calculate the result. The function
59
56
  * will be called with one argument: the literal value to the right of the
60
- * operator. It should return either the resulting value, or a Promise
61
- * that resolves with the resulting value.
57
+ * operator. It should return the resulting value.
62
58
  */
63
59
  addUnaryOp(operator: string, fn: (right: any) => any): void;
64
- /**
65
- * Adds or replaces a transform function in this Jexl instance.
66
- * @param {string} name The name of the transform function, as it will be used
67
- * within Jexl expressions
68
- * @param {function} fn The function to be executed when this transform is
69
- * invoked. It will be provided with at least one argument:
70
- * - {*} value: The value to be transformed
71
- * - {...*} args: The arguments for this transform
72
- */
73
- addTransform(name: string, fn: (val: any, ...args: any[]) => any): void;
74
- /**
75
- * Syntactic sugar for calling {@link #addTransform} repeatedly. This function
76
- * accepts a map of one or more transform names to their transform function.
77
- * @param {{}} map A map of transform names to transform functions
78
- */
79
- addTransforms(map: Record<string, (val: any, ...args: any[]) => any>): void;
80
60
  /**
81
61
  * Creates an Expression object from the given Jexl expression string, and
82
62
  * immediately compiles it. The returned Expression object can then be
@@ -100,28 +80,14 @@ declare class Jexl {
100
80
  */
101
81
  getFunction(name: string): (...args: any[]) => any;
102
82
  /**
103
- * Retrieves a previously set transform function.
104
- * @param {string} name The name of the transform function
105
- * @returns {function} The transform function
106
- */
107
- getTransform(name: string): (val: any, ...args: any[]) => any;
108
- /**
109
- * Asynchronously evaluates a Jexl string within an optional context.
110
- * @param {string} expression The Jexl expression to be evaluated
111
- * @param {Object} [context] A mapping of variables to values, which will be
112
- * made accessible to the Jexl expression when evaluating it
113
- * @returns {Promise<*>} resolves with the result of the evaluation.
114
- */
115
- eval(expression: string, context?: {}): Promise<any> | import("./PromiseSync.ts").default<any>;
116
- /**
117
- * Synchronously evaluates a Jexl string within an optional context.
83
+ * Evaluates a Jexl string within an optional context.
118
84
  * @param {string} expression The Jexl expression to be evaluated
119
85
  * @param {Object} [context] A mapping of variables to values, which will be
120
86
  * made accessible to the Jexl expression when evaluating it
121
87
  * @returns {*} the result of the evaluation.
122
88
  * @throws {*} on error
123
89
  */
124
- evalSync(expression: string, context?: {}): unknown;
90
+ eval(expression: string, context?: {}): any;
125
91
  /**
126
92
  * A JavaScript template literal to allow expressions to be defined by the
127
93
  * syntax: expr`40 + 2`
package/dist/Jexl.js CHANGED
@@ -34,13 +34,11 @@ class Jexl {
34
34
  * @param {number} precedence The operator's precedence
35
35
  * @param {function} fn A function to run to calculate the result. The function
36
36
  * will be called with two arguments: left and right, denoting the values
37
- * on either side of the operator. It should return either the resulting
38
- * value, or a Promise that resolves with the resulting value.
37
+ * on either side of the operator. It should return the resulting value.
39
38
  * @param {boolean} [manualEval] If true, the `left` and `right` arguments
40
39
  * will be wrapped in objects with an `eval` function. Calling
41
- * left.eval() or right.eval() will return a promise that resolves to
42
- * that operand's actual value. This is useful to conditionally evaluate
43
- * operands.
40
+ * left.eval() or right.eval() will return that operand's actual value.
41
+ * This is useful to conditionally evaluate operands.
44
42
  */
45
43
  addBinaryOp(operator, precedence, fn, manualEval) {
46
44
  this._addGrammarElement(operator, {
@@ -75,8 +73,7 @@ class Jexl {
75
73
  * @param {string} operator The operator string to be added
76
74
  * @param {function} fn A function to run to calculate the result. The function
77
75
  * will be called with one argument: the literal value to the right of the
78
- * operator. It should return either the resulting value, or a Promise
79
- * that resolves with the resulting value.
76
+ * operator. It should return the resulting value.
80
77
  */
81
78
  addUnaryOp(operator, fn) {
82
79
  this._addGrammarElement(operator, {
@@ -85,26 +82,6 @@ class Jexl {
85
82
  eval: fn
86
83
  });
87
84
  }
88
- /**
89
- * Adds or replaces a transform function in this Jexl instance.
90
- * @param {string} name The name of the transform function, as it will be used
91
- * within Jexl expressions
92
- * @param {function} fn The function to be executed when this transform is
93
- * invoked. It will be provided with at least one argument:
94
- * - {*} value: The value to be transformed
95
- * - {...*} args: The arguments for this transform
96
- */
97
- addTransform(name, fn) {
98
- this._grammar.transforms[name] = fn;
99
- }
100
- /**
101
- * Syntactic sugar for calling {@link #addTransform} repeatedly. This function
102
- * accepts a map of one or more transform names to their transform function.
103
- * @param {{}} map A map of transform names to transform functions
104
- */
105
- addTransforms(map) {
106
- Object.assign(this._grammar.transforms, map);
107
- }
108
85
  /**
109
86
  * Creates an Expression object from the given Jexl expression string, and
110
87
  * immediately compiles it. The returned Expression object can then be
@@ -135,35 +112,16 @@ class Jexl {
135
112
  return this._grammar.functions[name];
136
113
  }
137
114
  /**
138
- * Retrieves a previously set transform function.
139
- * @param {string} name The name of the transform function
140
- * @returns {function} The transform function
141
- */
142
- getTransform(name) {
143
- return this._grammar.transforms[name];
144
- }
145
- /**
146
- * Asynchronously evaluates a Jexl string within an optional context.
147
- * @param {string} expression The Jexl expression to be evaluated
148
- * @param {Object} [context] A mapping of variables to values, which will be
149
- * made accessible to the Jexl expression when evaluating it
150
- * @returns {Promise<*>} resolves with the result of the evaluation.
151
- */
152
- eval(expression, context = {}) {
153
- const exprObj = this.createExpression(expression);
154
- return exprObj.eval(context);
155
- }
156
- /**
157
- * Synchronously evaluates a Jexl string within an optional context.
115
+ * Evaluates a Jexl string within an optional context.
158
116
  * @param {string} expression The Jexl expression to be evaluated
159
117
  * @param {Object} [context] A mapping of variables to values, which will be
160
118
  * made accessible to the Jexl expression when evaluating it
161
119
  * @returns {*} the result of the evaluation.
162
120
  * @throws {*} on error
163
121
  */
164
- evalSync(expression, context = {}) {
122
+ eval(expression, context = {}) {
165
123
  const exprObj = this.createExpression(expression);
166
- return exprObj.evalSync(context);
124
+ return exprObj.eval(context);
167
125
  }
168
126
  /**
169
127
  * A JavaScript template literal to allow expressions to be defined by the
package/dist/Jexl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Jexl.js","sourceRoot":"","sources":["../src/Jexl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Jexl.js","sourceRoot":"","sources":["../src/Jexl.ts"],"names":[],"mappings":"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"}
package/dist/Lexer.js CHANGED
@@ -32,7 +32,9 @@ const minusNegatesAfter = new Set([
32
32
  'openParen',
33
33
  'openBracket',
34
34
  'question',
35
- 'colon'
35
+ 'colon',
36
+ 'comma',
37
+ 'semicolon'
36
38
  ]);
37
39
  /**
38
40
  * Lexer is a collection of stateless, statically-accessed functions for the
package/dist/Lexer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Lexer.js","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Lexer.js","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"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"}