@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
@@ -11,7 +11,6 @@ const omittedAlternateBefore = new Set([
11
11
  'comma',
12
12
  'semicolon'
13
13
  ]);
14
- export { JexlSyntaxError } from "../errors.js";
15
14
  /**
16
15
  * Converts the tokens from the {@link Lexer} into an Abstract Syntax Tree, for
17
16
  * {@link compileAst} to lower to closures. A Pratt parser: each level of the
@@ -87,8 +86,7 @@ class Parser {
87
86
  return this._lambda();
88
87
  }
89
88
  const left = this._ternary();
90
- const token = this._peek();
91
- if (token?.type !== 'binaryOp' || token.value !== '=') {
89
+ if (this._peek()?.type !== 'assign') {
92
90
  return left;
93
91
  }
94
92
  if (left.type !== 'Identifier' || left.from) {
@@ -170,7 +168,7 @@ class Parser {
170
168
  let left = this._unary();
171
169
  for (;;) {
172
170
  const token = this._peek();
173
- if (token?.type !== 'binaryOp' || token.value === '=') {
171
+ if (token?.type !== 'binaryOp') {
174
172
  return left;
175
173
  }
176
174
  const operator = token.value;
@@ -202,12 +200,10 @@ class Parser {
202
200
  return this._postfix(this._primary());
203
201
  }
204
202
  this._pos++;
205
- const operator = token.value;
206
- const op = this._grammar.elements[operator];
207
203
  return {
208
204
  type: 'UnaryExpression',
209
- operator,
210
- right: this._binary(op?.type === 'unaryOp' ? op.precedence : Infinity)
205
+ operator: token.value,
206
+ right: this._unary()
211
207
  };
212
208
  }
213
209
  _postfix(subject) {
@@ -1 +1 @@
1
- {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/parser/Parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/parser/Parser.ts"],"names":[],"mappings":"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"}
package/esm/print.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { AstNode } from './types.ts';
2
+ export declare function isName(text: string): boolean;
3
+ export declare function key(name: string): string;
4
+ export declare function quote(text: string): string;
5
+ /**
6
+ * Renders a tree back to expression text, for messages and suggestions. The
7
+ * text parses back to the same tree.
8
+ */
9
+ export declare function print(node: AstNode): string;
package/esm/print.js ADDED
@@ -0,0 +1,177 @@
1
+ /*
2
+ * Jexl
3
+ * Copyright 2020 Tom Shawver
4
+ */
5
+ import { identRegex } from "./Lexer.js";
6
+ import { getGrammar } from "./grammar.js";
7
+ const { elements } = getGrammar();
8
+ // print knows where only the built-in operators bind, so a host's own ones
9
+ // print with their operands parenthesized
10
+ function builtIn(operator) {
11
+ const element = elements[operator];
12
+ return element?.type === 'binaryOp' ? element : undefined;
13
+ }
14
+ const LOGICAL = new Set(['||', '&&']);
15
+ // how tightly each form binds, mirroring the Parser's levels: `;`, then `=`
16
+ // and lambdas, then `?:`, then binary operators, then prefix operators
17
+ const SEQUENCE = 0;
18
+ const ASSIGNMENT = 1;
19
+ const CONDITIONAL = 2;
20
+ const CUSTOM_BINARY = 3;
21
+ const UNARY = 100;
22
+ const WORDS = new Set([
23
+ 'true',
24
+ 'false',
25
+ 'null',
26
+ ...Object.keys(elements).filter((word) => identRegex.test(word))
27
+ ]);
28
+ export function isName(text) {
29
+ return identRegex.test(text) && !WORDS.has(text);
30
+ }
31
+ export function key(name) {
32
+ return isName(name) ? `.${name}` : `[${quote(name)}]`;
33
+ }
34
+ export function quote(text) {
35
+ return `'${text.replaceAll('\\', '\\\\').replaceAll("'", String.raw `\'`)}'`;
36
+ }
37
+ function precedenceOf(node) {
38
+ switch (node.type) {
39
+ case 'SequenceExpression': {
40
+ return SEQUENCE;
41
+ }
42
+ case 'AssignmentExpression':
43
+ case 'Lambda': {
44
+ return ASSIGNMENT;
45
+ }
46
+ case 'ConditionalExpression': {
47
+ // with no alternate, it ends only before `)`, `]`, `}`, `,`, `;` or the end
48
+ return node.alternate ? CONDITIONAL : SEQUENCE;
49
+ }
50
+ case 'BinaryExpression': {
51
+ return builtIn(node.operator)?.precedence ?? CUSTOM_BINARY;
52
+ }
53
+ case 'UnaryExpression': {
54
+ return UNARY;
55
+ }
56
+ default: {
57
+ return Infinity;
58
+ }
59
+ }
60
+ }
61
+ function within(node, least) {
62
+ const text = print(node);
63
+ return precedenceOf(node) < least ? `(${text})` : text;
64
+ }
65
+ function binaryOperand(parent, child, left) {
66
+ const op = builtIn(parent.operator);
67
+ if (!op) {
68
+ return within(child, UNARY);
69
+ }
70
+ const own = op.precedence;
71
+ const theirs = precedenceOf(child);
72
+ const chained = child.type === 'BinaryExpression' &&
73
+ !!op.rightAssociative &&
74
+ !!builtIn(child.operator)?.rightAssociative;
75
+ const mixesNullish = child.type === 'BinaryExpression' &&
76
+ ((parent.operator === '??' && LOGICAL.has(child.operator)) ||
77
+ (child.operator === '??' && LOGICAL.has(parent.operator)));
78
+ const text = print(child);
79
+ return theirs < own || (theirs === own && left === chained) || mixesNullish
80
+ ? `(${text})`
81
+ : text;
82
+ }
83
+ /**
84
+ * Renders a tree back to expression text, for messages and suggestions. The
85
+ * text parses back to the same tree.
86
+ */
87
+ export function print(node) {
88
+ switch (node.type) {
89
+ case 'Literal': {
90
+ const { value } = node;
91
+ if (typeof value === 'string') {
92
+ return quote(value);
93
+ }
94
+ // a number too large for a double reads as Infinity, which is a name
95
+ return Object.is(value, -0)
96
+ ? '-0'
97
+ : value === Infinity
98
+ ? '1e999'
99
+ : value === -Infinity
100
+ ? '-1e999'
101
+ : String(value);
102
+ }
103
+ case 'Identifier': {
104
+ return node.from
105
+ ? within(node.from, Infinity) + key(node.value)
106
+ : node.value;
107
+ }
108
+ case 'FilterExpression': {
109
+ return `${within(node.subject, Infinity)}[${within(node.expr, ASSIGNMENT)}]`;
110
+ }
111
+ case 'BinaryExpression': {
112
+ return `${binaryOperand(node, node.left, true)} ${node.operator} ${binaryOperand(node, node.right, false)}`;
113
+ }
114
+ case 'UnaryExpression': {
115
+ const { operator } = node;
116
+ const right = within(node.right, UNARY);
117
+ // the Lexer folds a minus before a digit into the number
118
+ if (operator === '-' && /^\d/.test(right)) {
119
+ return `-(${right})`;
120
+ }
121
+ return identRegex.test(operator)
122
+ ? `${operator} ${right}`
123
+ : operator + right;
124
+ }
125
+ case 'ConditionalExpression': {
126
+ const test = within(node.test, CUSTOM_BINARY);
127
+ const consequent = node.consequent
128
+ ? ` ${within(node.consequent, ASSIGNMENT)} `
129
+ : '';
130
+ const alternate = node.alternate
131
+ ? ` ${within(node.alternate, ASSIGNMENT)}`
132
+ : '';
133
+ return `${test} ?${consequent}:${alternate}`;
134
+ }
135
+ case 'FunctionCall': {
136
+ const args = node.args.map((arg) => within(arg, ASSIGNMENT));
137
+ return `${node.name}(${args.join(', ')})`;
138
+ }
139
+ case 'ArrayLiteral': {
140
+ const items = node.value.map((item) => within(item, ASSIGNMENT));
141
+ return `[${items.join(', ')}]`;
142
+ }
143
+ case 'ObjectLiteral': {
144
+ const entries = Object.entries(node.value).map(([name, value]) => `${isName(name) ? name : quote(name)}: ${within(value, ASSIGNMENT)}`);
145
+ return `{${entries.join(', ')}}`;
146
+ }
147
+ case 'TemplateLiteral': {
148
+ const parts = node.parts.map((part) => part.type === 'static'
149
+ ? part.value
150
+ .replaceAll('\\', '\\\\')
151
+ .replaceAll('`', '\\`')
152
+ .replaceAll('${', '\\${')
153
+ : `\${${print(part.value)}}`);
154
+ return `\`${parts.join('')}\``;
155
+ }
156
+ case 'SequenceExpression': {
157
+ const { expressions } = node;
158
+ const text = expressions
159
+ .map((expr) => within(expr, ASSIGNMENT))
160
+ .join('; ');
161
+ return expressions.length === 1 ? `${text};` : text;
162
+ }
163
+ case 'AssignmentExpression': {
164
+ return `${node.left.value} = ${within(node.right, ASSIGNMENT)}`;
165
+ }
166
+ case 'Lambda': {
167
+ const params = node.params.length === 1
168
+ ? node.params[0]
169
+ : `(${node.params.join(', ')})`;
170
+ return `${params} => ${within(node.body, ASSIGNMENT)}`;
171
+ }
172
+ default: {
173
+ return '?';
174
+ }
175
+ }
176
+ }
177
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../src/print.ts"],"names":[],"mappings":"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"}
package/esm/types.d.ts CHANGED
@@ -12,35 +12,31 @@ export interface Token {
12
12
  value: string | number | boolean | null | TemplatePart[];
13
13
  raw: string;
14
14
  }
15
- export interface AstNode {
16
- type: string;
17
- right?: AstNode;
18
- }
19
- export interface Literal extends AstNode {
15
+ export interface Literal {
20
16
  type: 'Literal';
21
17
  value: string | number | boolean | null;
22
18
  }
23
- export interface Identifier extends AstNode {
19
+ export interface Identifier {
24
20
  type: 'Identifier';
25
21
  value: string;
26
22
  from?: AstNode;
27
23
  }
28
- export interface BinaryExpression extends AstNode {
24
+ export interface BinaryExpression {
29
25
  type: 'BinaryExpression';
30
26
  operator: string;
31
27
  left: AstNode;
32
- right?: AstNode;
28
+ right: AstNode;
33
29
  }
34
- export interface UnaryExpression extends AstNode {
30
+ export interface UnaryExpression {
35
31
  type: 'UnaryExpression';
36
32
  operator: string;
37
- right?: AstNode;
33
+ right: AstNode;
38
34
  }
39
- export interface ArrayLiteral extends AstNode {
35
+ export interface ArrayLiteral {
40
36
  type: 'ArrayLiteral';
41
37
  value: AstNode[];
42
38
  }
43
- export interface ObjectLiteral extends AstNode {
39
+ export interface ObjectLiteral {
44
40
  type: 'ObjectLiteral';
45
41
  value: Record<string, AstNode>;
46
42
  }
@@ -51,41 +47,42 @@ export type TemplateLiteralPart = {
51
47
  type: 'expression';
52
48
  value: AstNode;
53
49
  };
54
- export interface TemplateLiteral extends AstNode {
50
+ export interface TemplateLiteral {
55
51
  type: 'TemplateLiteral';
56
52
  parts: TemplateLiteralPart[];
57
53
  }
58
- export interface FunctionCall extends AstNode {
54
+ export interface FunctionCall {
59
55
  type: 'FunctionCall';
60
56
  name: string;
61
57
  args: AstNode[];
62
58
  }
63
- export interface FilterExpression extends AstNode {
59
+ export interface FilterExpression {
64
60
  type: 'FilterExpression';
65
61
  expr: AstNode;
66
62
  subject: AstNode;
67
63
  }
68
- export interface ConditionalExpression extends AstNode {
64
+ export interface ConditionalExpression {
69
65
  type: 'ConditionalExpression';
70
66
  test: AstNode;
71
67
  consequent?: AstNode;
72
68
  alternate?: AstNode;
73
69
  }
74
- export interface SequenceExpression extends AstNode {
70
+ export interface SequenceExpression {
75
71
  type: 'SequenceExpression';
76
72
  expressions: AstNode[];
77
73
  }
78
- export interface AssignmentExpression extends AstNode {
74
+ export interface AssignmentExpression {
79
75
  type: 'AssignmentExpression';
80
76
  operator: '=';
81
77
  left: Identifier;
78
+ right: AstNode;
82
79
  }
83
- export interface Lambda extends AstNode {
80
+ export interface Lambda {
84
81
  type: 'Lambda';
85
82
  params: string[];
86
83
  body: AstNode;
87
84
  }
88
- export type AstNodeUnion = Literal | Identifier | BinaryExpression | UnaryExpression | ArrayLiteral | ObjectLiteral | TemplateLiteral | FunctionCall | FilterExpression | ConditionalExpression | SequenceExpression | AssignmentExpression | Lambda;
89
- export type NodeByType<T extends AstNodeUnion['type']> = Extract<AstNodeUnion, {
85
+ export type AstNode = Literal | Identifier | BinaryExpression | UnaryExpression | ArrayLiteral | ObjectLiteral | TemplateLiteral | FunctionCall | FilterExpression | ConditionalExpression | SequenceExpression | AssignmentExpression | Lambda;
86
+ export type NodeByType<T extends AstNode['type']> = Extract<AstNode, {
90
87
  type: T;
91
88
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/jexl",
3
- "version": "5.0.1",
3
+ "version": "6.0.0",
4
4
  "description": "A fork of the jexl lang for jbrowse",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,6 +8,7 @@
8
8
  "import": "./esm/index.js",
9
9
  "require": "./dist/index.js"
10
10
  },
11
+ "sideEffects": false,
11
12
  "files": [
12
13
  "dist",
13
14
  "esm",
package/src/Expression.ts CHANGED
@@ -4,13 +4,9 @@
4
4
  */
5
5
 
6
6
  import Lexer from './Lexer.ts'
7
- import { analyze } from './analyze.ts'
8
- import { check } from './check.ts'
9
7
  import { compileAst } from './evaluator/compile.ts'
10
8
  import Parser from './parser/Parser.ts'
11
9
 
12
- import type { AnalyzeOptions } from './analyze.ts'
13
- import type { CheckOptions } from './check.ts'
14
10
  import type { CompiledNode } from './evaluator/compile.ts'
15
11
  import type { Grammar } from './grammar.ts'
16
12
  import type { AstNode } from './types.ts'
@@ -86,22 +82,6 @@ class Expression {
86
82
  }
87
83
  return this._ast
88
84
  }
89
-
90
- /**
91
- * Lists what the expression reads from its context, without evaluating it.
92
- * See {@link analyze}.
93
- */
94
- analyze(options?: AnalyzeOptions) {
95
- return analyze(this.ast, options)
96
- }
97
-
98
- /**
99
- * Checks the expression against a host's fields and functions, without
100
- * evaluating it. See {@link check}.
101
- */
102
- check(options?: CheckOptions) {
103
- return check(this.ast, options)
104
- }
105
85
  }
106
86
 
107
87
  export default Expression
package/src/Jexl.ts CHANGED
@@ -89,28 +89,22 @@ class Jexl {
89
89
  fn: UncheckedFn | BinaryOpEvalOnDemand,
90
90
  manualEval?: boolean
91
91
  ) {
92
- // replacing `-` keeps its prefix form, which is a separate operation
92
+ // a replacement keeps how the operator parses: `-` its prefix form, `^`
93
+ // its grouping from the right
93
94
  const previous = this._grammar.elements[operator]
94
- const unaryEval =
95
- previous?.type === 'binaryOp' ? previous.unaryEval : undefined
95
+ const { unaryEval, rightAssociative } =
96
+ previous?.type === 'binaryOp' ? previous : {}
96
97
  // the overloads above pair `fn` with `manualEval`; the implementation
97
98
  // signature can't express that correlation, hence the assertions
98
- this._addGrammarElement(
99
- operator,
100
- manualEval
101
- ? {
102
- type: 'binaryOp',
103
- precedence,
104
- evalOnDemand: fn as BinaryOpEvalOnDemand,
105
- unaryEval
106
- }
107
- : {
108
- type: 'binaryOp',
109
- precedence,
110
- eval: fn as unknown as BinaryOpEval,
111
- unaryEval
112
- }
113
- )
99
+ this._addGrammarElement(operator, {
100
+ type: 'binaryOp',
101
+ precedence,
102
+ unaryEval,
103
+ rightAssociative,
104
+ ...(manualEval
105
+ ? { evalOnDemand: fn as BinaryOpEvalOnDemand }
106
+ : { eval: fn as unknown as BinaryOpEval })
107
+ })
114
108
  }
115
109
 
116
110
  /**
@@ -148,7 +142,6 @@ class Jexl {
148
142
  addUnaryOp(operator: string, fn: UncheckedFn) {
149
143
  this._addGrammarElement(operator, {
150
144
  type: 'unaryOp',
151
- precedence: Infinity,
152
145
  eval: fn as unknown as UnaryOpEval
153
146
  })
154
147
  }