@react-querybuilder/core 8.14.0 → 8.14.1

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 (100) hide show
  1. package/dist/{basic-Dxm6jWFu.d.ts → basic-BXJVfD0P.d.ts} +68 -50
  2. package/dist/{basic-GFsWfi0Z.d.mts → basic-CNIjb6rI.d.mts} +68 -50
  3. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +178 -127
  4. package/dist/cjs/react-querybuilder_core.cjs.development.js +299 -251
  5. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  6. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +178 -127
  7. package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
  8. package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
  9. package/dist/{convertQuery-DAj92cbM.mjs → convertQuery-B5Qm_6ut.mjs} +30 -22
  10. package/dist/convertQuery-B5Qm_6ut.mjs.map +1 -0
  11. package/dist/convertQuery-DfZehtnd.js +94 -0
  12. package/dist/convertQuery-DfZehtnd.js.map +1 -0
  13. package/dist/{export-_wipiqJZ.d.mts → export-6x7MilFR.d.mts} +2 -3
  14. package/dist/{export-6VbkhCrf.d.ts → export-CpJOQuZv.d.ts} +2 -3
  15. package/dist/formatQuery.d.mts +4 -3
  16. package/dist/formatQuery.d.ts +4 -3
  17. package/dist/formatQuery.js +18 -50
  18. package/dist/formatQuery.js.map +1 -1
  19. package/dist/formatQuery.mjs +17 -49
  20. package/dist/formatQuery.mjs.map +1 -1
  21. package/dist/{import-D8M7awTx.d.ts → import-B5Iq8XmL.d.ts} +2 -3
  22. package/dist/{import-DRmutNSr.d.mts → import-Bltb2mT4.d.mts} +2 -3
  23. package/dist/{isRuleGroup-Cjk1Q2mj.js → isRuleGroup-BCwaLzDj.js} +38 -40
  24. package/dist/isRuleGroup-BCwaLzDj.js.map +1 -0
  25. package/dist/{isRuleGroup-DztIOOKa.mjs → isRuleGroup-LzP0HCKh.mjs} +2 -4
  26. package/dist/isRuleGroup-LzP0HCKh.mjs.map +1 -0
  27. package/dist/parseCEL.d.mts +2 -2
  28. package/dist/parseCEL.d.ts +2 -2
  29. package/dist/parseCEL.js +9 -11
  30. package/dist/parseCEL.js.map +1 -1
  31. package/dist/parseCEL.mjs +7 -10
  32. package/dist/parseCEL.mjs.map +1 -1
  33. package/dist/parseJSONata.d.mts +2 -3
  34. package/dist/parseJSONata.d.ts +2 -3
  35. package/dist/parseJSONata.js +37 -5611
  36. package/dist/parseJSONata.js.map +1 -1
  37. package/dist/parseJSONata.mjs +11 -13
  38. package/dist/parseJSONata.mjs.map +1 -1
  39. package/dist/parseJsonLogic.d.mts +3 -4
  40. package/dist/parseJsonLogic.d.ts +3 -4
  41. package/dist/parseJsonLogic.js +20 -21
  42. package/dist/parseJsonLogic.js.map +1 -1
  43. package/dist/parseJsonLogic.mjs +19 -21
  44. package/dist/parseJsonLogic.mjs.map +1 -1
  45. package/dist/parseMongoDB.d.mts +2 -3
  46. package/dist/parseMongoDB.d.ts +2 -3
  47. package/dist/parseMongoDB.js +7 -8
  48. package/dist/parseMongoDB.js.map +1 -1
  49. package/dist/parseMongoDB.mjs +6 -8
  50. package/dist/parseMongoDB.mjs.map +1 -1
  51. package/dist/parseSQL.d.mts +2 -3
  52. package/dist/parseSQL.d.ts +2 -3
  53. package/dist/parseSQL.js +9 -11
  54. package/dist/parseSQL.js.map +1 -1
  55. package/dist/parseSQL.mjs +7 -10
  56. package/dist/parseSQL.mjs.map +1 -1
  57. package/dist/parseSpEL.d.mts +2 -3
  58. package/dist/parseSpEL.d.ts +2 -3
  59. package/dist/parseSpEL.js +11 -2700
  60. package/dist/parseSpEL.js.map +1 -1
  61. package/dist/parseSpEL.mjs +7 -9
  62. package/dist/parseSpEL.mjs.map +1 -1
  63. package/dist/{prepareQueryObjects-BxWvIPI4.js → prepareQueryObjects-Dc8rqsYM.js} +49 -34
  64. package/dist/prepareQueryObjects-Dc8rqsYM.js.map +1 -0
  65. package/dist/{prepareQueryObjects-BBayjIn2.mjs → prepareQueryObjects-tMukQHT9.mjs} +34 -18
  66. package/dist/prepareQueryObjects-tMukQHT9.mjs.map +1 -0
  67. package/dist/react-querybuilder_core.d.mts +178 -127
  68. package/dist/react-querybuilder_core.legacy-esm.d.ts +178 -127
  69. package/dist/react-querybuilder_core.legacy-esm.js +296 -279
  70. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  71. package/dist/react-querybuilder_core.mjs +288 -247
  72. package/dist/react-querybuilder_core.mjs.map +1 -1
  73. package/dist/react-querybuilder_core.production.d.mts +178 -127
  74. package/dist/react-querybuilder_core.production.mjs +1 -1
  75. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  76. package/dist/transformQuery.d.mts +1 -2
  77. package/dist/transformQuery.d.ts +1 -2
  78. package/dist/transformQuery.js +44 -2
  79. package/dist/transformQuery.js.map +1 -0
  80. package/dist/transformQuery.mjs +43 -2
  81. package/dist/transformQuery.mjs.map +1 -0
  82. package/dist/{utils-nQU7WCM9.mjs → utils-DQoYnxpa.mjs} +32 -84
  83. package/dist/utils-DQoYnxpa.mjs.map +1 -0
  84. package/dist/{utils-CR1ToTMW.js → utils-EsYRkPtf.js} +182 -246
  85. package/dist/utils-EsYRkPtf.js.map +1 -0
  86. package/package.json +25 -17
  87. package/dist/chunk-U64pC571.js +0 -41
  88. package/dist/convertQuery-DAj92cbM.mjs.map +0 -1
  89. package/dist/convertQuery-DRldbzhZ.js +0 -87
  90. package/dist/convertQuery-DRldbzhZ.js.map +0 -1
  91. package/dist/isRuleGroup-Cjk1Q2mj.js.map +0 -1
  92. package/dist/isRuleGroup-DztIOOKa.mjs.map +0 -1
  93. package/dist/prepareQueryObjects-BBayjIn2.mjs.map +0 -1
  94. package/dist/prepareQueryObjects-BxWvIPI4.js.map +0 -1
  95. package/dist/transformQuery-ClBRfnFg.js +0 -54
  96. package/dist/transformQuery-ClBRfnFg.js.map +0 -1
  97. package/dist/transformQuery-DUpbpqjX.mjs +0 -48
  98. package/dist/transformQuery-DUpbpqjX.mjs.map +0 -1
  99. package/dist/utils-CR1ToTMW.js.map +0 -1
  100. package/dist/utils-nQU7WCM9.mjs.map +0 -1
package/dist/parseSpEL.js CHANGED
@@ -1,2698 +1,10 @@
1
- const require_chunk = require('./chunk-U64pC571.js');
2
- const require_utils = require('./utils-CR1ToTMW.js');
3
- const require_isRuleGroup = require('./isRuleGroup-Cjk1Q2mj.js');
4
- const require_prepareQueryObjects = require('./prepareQueryObjects-BxWvIPI4.js');
5
-
6
- //#region ../../node_modules/spel2js/dist/spel2js.js
7
- var require_spel2js = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
8
- (function webpackUniversalModuleDefinition(root, factory) {
9
- if (typeof exports === "object" && typeof module === "object") module.exports = factory();
10
- else if (typeof define === "function" && define.amd) define([], factory);
11
- else if (typeof exports === "object") exports["spel2js"] = factory();
12
- else root["spel2js"] = factory();
13
- })(exports, function() {
14
- return (function(modules) {
15
- var installedModules = {};
16
- function __webpack_require__(moduleId) {
17
- if (installedModules[moduleId]) return installedModules[moduleId].exports;
18
- var module$1 = installedModules[moduleId] = {
19
- i: moduleId,
20
- l: false,
21
- exports: {}
22
- };
23
- modules[moduleId].call(module$1.exports, module$1, module$1.exports, __webpack_require__);
24
- module$1.l = true;
25
- return module$1.exports;
26
- }
27
- __webpack_require__.m = modules;
28
- __webpack_require__.c = installedModules;
29
- __webpack_require__.d = function(exports$1, name, getter) {
30
- if (!__webpack_require__.o(exports$1, name)) Object.defineProperty(exports$1, name, {
31
- configurable: false,
32
- enumerable: true,
33
- get: getter
34
- });
35
- };
36
- __webpack_require__.n = function(module$1) {
37
- var getter = module$1 && module$1.__esModule ? function getDefault() {
38
- return module$1["default"];
39
- } : function getModuleExports() {
40
- return module$1;
41
- };
42
- __webpack_require__.d(getter, "a", getter);
43
- return getter;
44
- };
45
- __webpack_require__.o = function(object, property) {
46
- return Object.prototype.hasOwnProperty.call(object, property);
47
- };
48
- __webpack_require__.p = "";
49
- return __webpack_require__(__webpack_require__.s = 3);
50
- })([
51
- (function(module$1, exports$1, __webpack_require__) {
52
- "use strict";
53
- Object.defineProperty(exports$1, "__esModule", { value: true });
54
- /**
55
- * The common supertype of all AST nodes in a parsed Spring Expression Language
56
- * format expression.
57
- *
58
- * @author Andy Clement
59
- * @author Ben March
60
- * @since 0.2.0
61
- */
62
- function createSpelNode(nodeType, position) {
63
- var node = {}, type = nodeType || "Abstract", children = [], parent = null, activeContext;
64
- node._type = type;
65
- node.getType = function() {
66
- return type;
67
- };
68
- node.setType = function(nodeType$1) {
69
- type = nodeType$1;
70
- };
71
- node.getChildren = function() {
72
- return children;
73
- };
74
- node.addChild = function(childNode) {
75
- if (!childNode) return;
76
- if (!childNode.setParent) throw {
77
- name: "Error",
78
- message: "Trying to add a child which is not a node: " + JSON.stringify(childNode)
79
- };
80
- childNode.setParent(node);
81
- children.push(childNode);
82
- };
83
- node.getParent = function() {
84
- return parent;
85
- };
86
- node.setParent = function(parentNode) {
87
- parent = parentNode;
88
- };
89
- node.getContext = function(state) {
90
- return activeContext || state.activeContext.peek();
91
- };
92
- node.setContext = function(nodeContext) {
93
- activeContext = nodeContext;
94
- };
95
- node.getStartPosition = function() {
96
- return position >> 16;
97
- };
98
- node.getEndPosition = function() {
99
- return position & 65535;
100
- };
101
- node.getValue = function() {
102
- throw {
103
- name: "MethodNotImplementedException",
104
- message: "SpelNode#getValue() must be overridden."
105
- };
106
- };
107
- node.toString = function() {
108
- var s = "Kind: " + node.getType();
109
- s += ", Children: [";
110
- for (var i = 0, l = node.getChildren().length; i < l; i += 1) s += "{" + node.getChildren()[i] + "}, ";
111
- s += "]";
112
- return s;
113
- };
114
- if (position === 0) throw {
115
- name: "Error",
116
- message: "Position cannot be 0"
117
- };
118
- for (var _len = arguments.length, operands = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) operands[_key - 2] = arguments[_key];
119
- if (operands) operands.forEach(function(operand) {
120
- node.addChild(operand);
121
- });
122
- return node;
123
- }
124
- exports$1.SpelNode = { create: createSpelNode };
125
- }),
126
- (function(module$1, exports$1, __webpack_require__) {
127
- "use strict";
128
- Object.defineProperty(exports$1, "__esModule", { value: true });
129
- exports$1.Stack = Stack;
130
- /**
131
- * @author Ben March
132
- * @since 0.2.0
133
- */
134
- function Stack(startingElements) {
135
- this.elements = startingElements || [];
136
- }
137
- Stack.prototype.push = function(el) {
138
- this.elements.push(el);
139
- return el;
140
- };
141
- Stack.prototype.pop = function() {
142
- return this.elements.pop();
143
- };
144
- Stack.prototype.peek = function() {
145
- return this.elements[this.elements.length - 1];
146
- };
147
- Stack.prototype.empty = function() {
148
- return this.elements.length > 0;
149
- };
150
- Stack.prototype.search = function(el) {
151
- return this.elements.length - this.elements.indexOf(el);
152
- };
153
- }),
154
- (function(module$1, exports$1, __webpack_require__) {
155
- "use strict";
156
- Object.defineProperty(exports$1, "__esModule", { value: true });
157
- /**
158
- * @author Andy Clement
159
- * @author Ben March
160
- * @since 0.2.0
161
- */
162
- var types = {
163
- LITERAL_INT: 1,
164
- LITERAL_LONG: 2,
165
- LITERAL_HEXINT: 3,
166
- LITERAL_HEXLONG: 4,
167
- LITERAL_STRING: 5,
168
- LITERAL_REAL: 6,
169
- LITERAL_REAL_FLOAT: 7,
170
- LPAREN: "(",
171
- RPAREN: ")",
172
- COMMA: ",",
173
- IDENTIFIER: 0,
174
- COLON: ":",
175
- HASH: "#",
176
- RSQUARE: "]",
177
- LSQUARE: "[",
178
- LCURLY: "{",
179
- RCURLY: "}",
180
- DOT: ".",
181
- PLUS: "+",
182
- STAR: "*",
183
- MINUS: "-",
184
- SELECT_FIRST: "^[",
185
- SELECT_LAST: "$[",
186
- QMARK: "?",
187
- PROJECT: "![",
188
- DIV: "/",
189
- GE: ">=",
190
- GT: ">",
191
- LE: "<=",
192
- LT: "<",
193
- EQ: "==",
194
- NE: "!=",
195
- MOD: "%",
196
- NOT: "!",
197
- ASSIGN: "=",
198
- INSTANCEOF: "instanceof",
199
- MATCHES: "matches",
200
- BETWEEN: "between",
201
- SELECT: "?[",
202
- POWER: "^",
203
- ELVIS: "?:",
204
- SAFE_NAVI: "?.",
205
- BEAN_REF: "@",
206
- SYMBOLIC_OR: "||",
207
- SYMBOLIC_AND: "&&",
208
- INC: "++",
209
- DEC: "--"
210
- };
211
- function TokenKind(type) {
212
- this.type = type;
213
- this.tokenChars = types[type];
214
- this._hasPayload = typeof types[type] !== "string";
215
- if (typeof types[type] === "number") this._ordinal = types[type];
216
- }
217
- for (var t in types) if (types.hasOwnProperty(t)) TokenKind[t] = new TokenKind(t);
218
- TokenKind.prototype.toString = function() {
219
- return this.type + (this.tokenChars.length !== 0 ? "(" + this.tokenChars + ")" : "");
220
- };
221
- TokenKind.prototype.getLength = function() {
222
- return this.tokenChars.length;
223
- };
224
- TokenKind.prototype.hasPayload = function() {
225
- return this._hasPayload;
226
- };
227
- TokenKind.prototype.valueOf = function(id) {
228
- for (var t$1 in types) if (types.hasOwnProperty(t$1) && types[t$1] === id) return TokenKind[t$1];
229
- };
230
- TokenKind.prototype.ordinal = function() {
231
- return this._ordinal;
232
- };
233
- exports$1.TokenKind = TokenKind;
234
- }),
235
- (function(module$1, exports$1, __webpack_require__) {
236
- "use strict";
237
- Object.defineProperty(exports$1, "__esModule", { value: true });
238
- exports$1.StandardContext = exports$1.SpelExpressionEvaluator = void 0;
239
- var _SpelExpressionEvaluator = __webpack_require__(4);
240
- var _StandardContext = __webpack_require__(50);
241
- /**
242
- * @author Ben March
243
- * @since 0.2.0
244
- */
245
- exports$1.SpelExpressionEvaluator = _SpelExpressionEvaluator.SpelExpressionEvaluator;
246
- exports$1.StandardContext = _StandardContext.StandardContext;
247
- }),
248
- (function(module$1, exports$1, __webpack_require__) {
249
- "use strict";
250
- Object.defineProperty(exports$1, "__esModule", { value: true });
251
- exports$1.SpelExpressionEvaluator = void 0;
252
- var _SpelExpressionParser = __webpack_require__(5);
253
- var _Stack = __webpack_require__(1);
254
- /**
255
- * @author Ben March
256
- * @since 0.2.0
257
- */
258
- var spelExpressionEvaluator = {};
259
- function evalCompiled(compiledExpression, context, locals) {
260
- var activeContext = new _Stack.Stack(), state;
261
- if (!context) context = {};
262
- activeContext.push(context);
263
- state = {
264
- rootContext: context,
265
- activeContext,
266
- locals
267
- };
268
- return compiledExpression.getValue(state);
269
- }
270
- spelExpressionEvaluator.compile = function(expression) {
271
- var compiledExpression = (0, _SpelExpressionParser.SpelExpressionParser)().parse(expression);
272
- return {
273
- eval: function _eval(context, locals) {
274
- return evalCompiled(compiledExpression, context, locals);
275
- },
276
- _compiledExpression: compiledExpression
277
- };
278
- };
279
- spelExpressionEvaluator.eval = function(expression, context, locals) {
280
- return spelExpressionEvaluator.compile(expression).eval(context, locals);
281
- };
282
- exports$1.SpelExpressionEvaluator = spelExpressionEvaluator;
283
- }),
284
- (function(module$1, exports$1, __webpack_require__) {
285
- "use strict";
286
- Object.defineProperty(exports$1, "__esModule", { value: true });
287
- exports$1.SpelExpressionParser = void 0;
288
- var _TokenKind = __webpack_require__(2);
289
- var _Tokenizer = __webpack_require__(6);
290
- var _BooleanLiteral = __webpack_require__(8);
291
- var _NumberLiteral = __webpack_require__(9);
292
- var _StringLiteral = __webpack_require__(10);
293
- var _NullLiteral = __webpack_require__(11);
294
- var _FunctionReference = __webpack_require__(12);
295
- var _MethodReference = __webpack_require__(13);
296
- var _PropertyReference = __webpack_require__(14);
297
- var _VariableReference = __webpack_require__(15);
298
- var _CompoundExpression = __webpack_require__(16);
299
- var _Indexer = __webpack_require__(17);
300
- var _Assign = __webpack_require__(18);
301
- var _OpEQ = __webpack_require__(19);
302
- var _OpNE = __webpack_require__(20);
303
- var _OpGE = __webpack_require__(21);
304
- var _OpGT = __webpack_require__(22);
305
- var _OpLE = __webpack_require__(23);
306
- var _OpLT = __webpack_require__(24);
307
- var _OpPlus = __webpack_require__(25);
308
- var _OpMinus = __webpack_require__(26);
309
- var _OpMultiply = __webpack_require__(27);
310
- var _OpDivide = __webpack_require__(28);
311
- var _OpModulus = __webpack_require__(29);
312
- var _OpPower = __webpack_require__(30);
313
- var _OpInc = __webpack_require__(31);
314
- var _OpDec = __webpack_require__(32);
315
- var _OpNot = __webpack_require__(33);
316
- var _OpAnd = __webpack_require__(34);
317
- var _OpOr = __webpack_require__(35);
318
- var _OpMatches = __webpack_require__(36);
319
- var _Ternary = __webpack_require__(37);
320
- var _Elvis = __webpack_require__(38);
321
- var _InlineList = __webpack_require__(39);
322
- var _InlineMap = __webpack_require__(40);
323
- var _Selection = __webpack_require__(41);
324
- var _Projection = __webpack_require__(42);
325
- var _OpInstanceof = __webpack_require__(43);
326
- var _OpBetween = __webpack_require__(44);
327
- var _TypeReference = __webpack_require__(45);
328
- var _BeanReference = __webpack_require__(46);
329
- var _Identifier = __webpack_require__(47);
330
- var _QualifiedIdentifier = __webpack_require__(48);
331
- var _ConstructorReference = __webpack_require__(49);
332
- exports$1.SpelExpressionParser = function SpelExpressionParser() {
333
- var VALID_QUALIFIED_ID_PATTERN = /* @__PURE__ */ new RegExp("[\\p{L}\\p{N}_$]+");
334
- var constructedNodes = [];
335
- var expressionString;
336
- var tokenStream;
337
- var tokenStreamLength;
338
- var tokenStreamPointer;
339
- /**
340
- * Create a parser with some configured behavior.
341
- * @param config custom configuration options
342
- */
343
- function setConfiguration(config) {}
344
- function parse(expression, context) {
345
- try {
346
- expressionString = expression;
347
- tokenStream = _Tokenizer.Tokenizer.tokenize(expression);
348
- tokenStreamLength = tokenStream.length;
349
- tokenStreamPointer = 0;
350
- constructedNodes = [];
351
- var ast = eatExpression();
352
- if (moreTokens()) raiseInternalException(peekToken().startPos, "MORE_INPUT", nextToken().toString());
353
- return ast;
354
- } catch (e) {
355
- throw e.message;
356
- }
357
- }
358
- function eatExpression() {
359
- var expr = eatLogicalOrExpression();
360
- if (moreTokens()) {
361
- var token = peekToken();
362
- if (token.getKind() === _TokenKind.TokenKind.ASSIGN) {
363
- if (expr === null) expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));
364
- nextToken();
365
- var assignedValue = eatLogicalOrExpression();
366
- return _Assign.Assign.create(toPosToken(token), expr, assignedValue);
367
- }
368
- if (token.getKind() === _TokenKind.TokenKind.ELVIS) {
369
- if (expr === null) expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 2));
370
- nextToken();
371
- var valueIfNull = eatExpression();
372
- if (valueIfNull === null) valueIfNull = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos + 1, token.endPos + 1));
373
- return _Elvis.Elvis.create(toPosToken(token), expr, valueIfNull);
374
- }
375
- if (token.getKind() === _TokenKind.TokenKind.QMARK) {
376
- if (expr === null) expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));
377
- nextToken();
378
- var ifTrueExprValue = eatExpression();
379
- eatToken(_TokenKind.TokenKind.COLON);
380
- var ifFalseExprValue = eatExpression();
381
- return _Ternary.Ternary.create(toPosToken(token), expr, ifTrueExprValue, ifFalseExprValue);
382
- }
383
- }
384
- return expr;
385
- }
386
- function eatLogicalOrExpression() {
387
- var expr = eatLogicalAndExpression();
388
- while (peekIdentifierToken("or") || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_OR)) {
389
- var token = nextToken();
390
- var rhExpr = eatLogicalAndExpression();
391
- checkOperands(token, expr, rhExpr);
392
- expr = _OpOr.OpOr.create(toPosToken(token), expr, rhExpr);
393
- }
394
- return expr;
395
- }
396
- function eatLogicalAndExpression() {
397
- var expr = eatRelationalExpression();
398
- while (peekIdentifierToken("and") || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_AND)) {
399
- var token = nextToken();
400
- var rhExpr = eatRelationalExpression();
401
- checkOperands(token, expr, rhExpr);
402
- expr = _OpAnd.OpAnd.create(toPosToken(token), expr, rhExpr);
403
- }
404
- return expr;
405
- }
406
- function eatRelationalExpression() {
407
- var expr = eatSumExpression();
408
- var relationalOperatorToken = maybeEatRelationalOperator();
409
- if (relationalOperatorToken !== null) {
410
- var token = nextToken();
411
- var rhExpr = eatSumExpression();
412
- checkOperands(token, expr, rhExpr);
413
- var tk = relationalOperatorToken.kind;
414
- if (relationalOperatorToken.isNumericRelationalOperator()) {
415
- var pos = toPosToken(token);
416
- if (tk === _TokenKind.TokenKind.GT) return _OpGT.OpGT.create(pos, expr, rhExpr);
417
- if (tk === _TokenKind.TokenKind.LT) return _OpLT.OpLT.create(pos, expr, rhExpr);
418
- if (tk === _TokenKind.TokenKind.LE) return _OpLE.OpLE.create(pos, expr, rhExpr);
419
- if (tk === _TokenKind.TokenKind.GE) return _OpGE.OpGE.create(pos, expr, rhExpr);
420
- if (tk === _TokenKind.TokenKind.EQ) return _OpEQ.OpEQ.create(pos, expr, rhExpr);
421
- return _OpNE.OpNE.create(pos, expr, rhExpr);
422
- }
423
- if (tk === _TokenKind.TokenKind.INSTANCEOF) return _OpInstanceof.OpInstanceof.create(toPosToken(token), expr, rhExpr);
424
- if (tk === _TokenKind.TokenKind.MATCHES) return _OpMatches.OpMatches.create(toPosToken(token), expr, rhExpr);
425
- return _OpBetween.OpBetween.create(toPosToken(token), expr, rhExpr);
426
- }
427
- return expr;
428
- }
429
- function eatSumExpression() {
430
- var expr = eatProductExpression();
431
- while (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.INC)) {
432
- var token = nextToken();
433
- var rhExpr = eatProductExpression();
434
- checkRightOperand(token, rhExpr);
435
- if (token.getKind() === _TokenKind.TokenKind.PLUS) expr = _OpPlus.OpPlus.create(toPosToken(token), expr, rhExpr);
436
- else if (token.getKind() === _TokenKind.TokenKind.MINUS) expr = _OpMinus.OpMinus.create(toPosToken(token), expr, rhExpr);
437
- }
438
- return expr;
439
- }
440
- function eatProductExpression() {
441
- var expr = eatPowerIncDecExpression();
442
- while (peekTokenAny(_TokenKind.TokenKind.STAR, _TokenKind.TokenKind.DIV, _TokenKind.TokenKind.MOD)) {
443
- var token = nextToken();
444
- var rhExpr = eatPowerIncDecExpression();
445
- checkOperands(token, expr, rhExpr);
446
- if (token.getKind() === _TokenKind.TokenKind.STAR) expr = _OpMultiply.OpMultiply.create(toPosToken(token), expr, rhExpr);
447
- else if (token.getKind() === _TokenKind.TokenKind.DIV) expr = _OpDivide.OpDivide.create(toPosToken(token), expr, rhExpr);
448
- else expr = _OpModulus.OpModulus.create(toPosToken(token), expr, rhExpr);
449
- }
450
- return expr;
451
- }
452
- function eatPowerIncDecExpression() {
453
- var expr = eatUnaryExpression(), token;
454
- if (peekTokenOne(_TokenKind.TokenKind.POWER)) {
455
- token = nextToken();
456
- var rhExpr = eatUnaryExpression();
457
- checkRightOperand(token, rhExpr);
458
- return _OpPower.OpPower.create(toPosToken(token), expr, rhExpr);
459
- }
460
- if (expr !== null && peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {
461
- token = nextToken();
462
- if (token.getKind() === _TokenKind.TokenKind.INC) return _OpInc.OpInc.create(toPosToken(token), true, expr);
463
- return _OpDec.OpDec.create(toPosToken(token), true, expr);
464
- }
465
- return expr;
466
- }
467
- function eatUnaryExpression() {
468
- var token, expr;
469
- if (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.NOT)) {
470
- token = nextToken();
471
- expr = eatUnaryExpression();
472
- if (token.getKind() === _TokenKind.TokenKind.NOT) return _OpNot.OpNot.create(toPosToken(token), expr);
473
- if (token.getKind() === _TokenKind.TokenKind.PLUS) return _OpPlus.OpPlus.create(toPosToken(token), expr);
474
- return _OpMinus.OpMinus.create(toPosToken(token), expr);
475
- }
476
- if (peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {
477
- token = nextToken();
478
- expr = eatUnaryExpression();
479
- if (token.getKind() === _TokenKind.TokenKind.INC) return _OpInc.OpInc.create(toPosToken(token), false, expr);
480
- return _OpDec.OpDec.create(toPosToken(token), false, expr);
481
- }
482
- return eatPrimaryExpression();
483
- }
484
- function eatPrimaryExpression() {
485
- var nodes = [];
486
- var start = eatStartNode();
487
- nodes.push(start);
488
- while (maybeEatNode()) nodes.push(pop());
489
- if (nodes.length === 1) return nodes[0];
490
- return _CompoundExpression.CompoundExpression.create(toPosBounds(start.getStartPosition(), nodes[nodes.length - 1].getEndPosition()), nodes);
491
- }
492
- function maybeEatNode() {
493
- var expr = null;
494
- if (peekTokenAny(_TokenKind.TokenKind.DOT, _TokenKind.TokenKind.SAFE_NAVI)) expr = eatDottedNode();
495
- else expr = maybeEatNonDottedNode();
496
- if (expr === null) return false;
497
- else {
498
- push(expr);
499
- return true;
500
- }
501
- }
502
- function maybeEatNonDottedNode() {
503
- if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {
504
- if (maybeEatIndexer()) return pop();
505
- }
506
- return null;
507
- }
508
- function eatDottedNode() {
509
- var token = nextToken();
510
- var nullSafeNavigation = token.getKind() === _TokenKind.TokenKind.SAFE_NAVI;
511
- if (maybeEatMethodOrProperty(nullSafeNavigation) || maybeEatFunctionOrVar() || maybeEatProjection(nullSafeNavigation) || maybeEatSelection(nullSafeNavigation)) return pop();
512
- if (peekToken() === null) raiseInternalException(token.startPos, "OOD");
513
- else raiseInternalException(token.startPos, "UNEXPECTED_DATA_AFTER_DOT", toString(peekToken()));
514
- return null;
515
- }
516
- function maybeEatFunctionOrVar() {
517
- if (!peekTokenOne(_TokenKind.TokenKind.HASH)) return false;
518
- var token = nextToken();
519
- var functionOrVariableName = eatToken(_TokenKind.TokenKind.IDENTIFIER);
520
- var args = maybeEatMethodArgs();
521
- if (args === null) {
522
- push(_VariableReference.VariableReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos)));
523
- return true;
524
- }
525
- push(_FunctionReference.FunctionReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos), args));
526
- return true;
527
- }
528
- function maybeEatMethodArgs() {
529
- if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) return null;
530
- var args = [];
531
- consumeArguments(args);
532
- eatToken(_TokenKind.TokenKind.RPAREN);
533
- return args;
534
- }
535
- function eatConstructorArgs(accumulatedArguments) {
536
- if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) raiseInternalException(toPosToken(peekToken()), "MISSING_CONSTRUCTOR_ARGS");
537
- consumeArguments(accumulatedArguments);
538
- eatToken(_TokenKind.TokenKind.RPAREN);
539
- }
540
- /**
541
- * Used for consuming arguments for either a method or a constructor call
542
- */
543
- function consumeArguments(accumulatedArguments) {
544
- var pos = peekToken().startPos;
545
- var next;
546
- do {
547
- nextToken();
548
- var token = peekToken();
549
- if (token === null) raiseInternalException(pos, "RUN_OUT_OF_ARGUMENTS");
550
- if (token.getKind() !== _TokenKind.TokenKind.RPAREN) accumulatedArguments.push(eatExpression());
551
- next = peekToken();
552
- } while (next !== null && next.kind === _TokenKind.TokenKind.COMMA);
553
- if (next === null) raiseInternalException(pos, "RUN_OUT_OF_ARGUMENTS");
554
- }
555
- function eatStartNode() {
556
- if (maybeEatLiteral()) return pop();
557
- else if (maybeEatParenExpression()) return pop();
558
- else if (maybeEatTypeReference() || maybeEatNullReference() || maybeEatConstructorReference() || maybeEatMethodOrProperty(false) || maybeEatFunctionOrVar()) return pop();
559
- else if (maybeEatBeanReference()) return pop();
560
- else if (maybeEatProjection(false) || maybeEatSelection(false) || maybeEatIndexer()) return pop();
561
- else if (maybeEatInlineListOrMap()) return pop();
562
- else return null;
563
- }
564
- function maybeEatBeanReference() {
565
- if (peekTokenOne(_TokenKind.TokenKind.BEAN_REF)) {
566
- var beanRefToken = nextToken();
567
- var beanNameToken = null;
568
- var beanName = null;
569
- if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {
570
- beanNameToken = eatToken(_TokenKind.TokenKind.IDENTIFIER);
571
- beanName = beanNameToken.data;
572
- } else if (peekTokenOne(_TokenKind.TokenKind.LITERAL_STRING)) {
573
- beanNameToken = eatToken(_TokenKind.TokenKind.LITERAL_STRING);
574
- beanName = beanNameToken.stringValue();
575
- beanName = beanName.substring(1, beanName.length() - 1);
576
- } else raiseInternalException(beanRefToken.startPos, "INVALID_BEAN_REFERENCE");
577
- push(_BeanReference.BeanReference.create(toPosToken(beanNameToken), beanName));
578
- return true;
579
- }
580
- return false;
581
- }
582
- function maybeEatTypeReference() {
583
- if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {
584
- var typeName = peekToken();
585
- if (typeName.stringValue() !== "T") return false;
586
- var token = nextToken();
587
- if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {
588
- push(_PropertyReference.PropertyReference.create(token.stringValue(), toPosToken(token)));
589
- return true;
590
- }
591
- eatToken(_TokenKind.TokenKind.LPAREN);
592
- var node = eatPossiblyQualifiedId();
593
- var dims = 0;
594
- while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {
595
- eatToken(_TokenKind.TokenKind.RSQUARE);
596
- dims++;
597
- }
598
- eatToken(_TokenKind.TokenKind.RPAREN);
599
- push(_TypeReference.TypeReference.create(toPosToken(typeName), node, dims));
600
- return true;
601
- }
602
- return false;
603
- }
604
- function maybeEatNullReference() {
605
- if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {
606
- var nullToken = peekToken();
607
- if (nullToken.stringValue().toLowerCase() !== "null") return false;
608
- nextToken();
609
- push(_NullLiteral.NullLiteral.create(toPosToken(nullToken)));
610
- return true;
611
- }
612
- return false;
613
- }
614
- function maybeEatProjection(nullSafeNavigation) {
615
- var token = peekToken();
616
- if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.PROJECT, true)) return false;
617
- var expr = eatExpression();
618
- eatToken(_TokenKind.TokenKind.RSQUARE);
619
- push(_Projection.Projection.create(nullSafeNavigation, toPosToken(token), expr));
620
- return true;
621
- }
622
- function maybeEatInlineListOrMap() {
623
- var token = peekToken(), listElements = [];
624
- if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LCURLY, true)) return false;
625
- var expr = null;
626
- var closingCurly = peekToken();
627
- if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.RCURLY, true)) expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos));
628
- else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {
629
- closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);
630
- expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos));
631
- } else {
632
- var firstExpression = eatExpression();
633
- if (peekTokenOne(_TokenKind.TokenKind.RCURLY)) {
634
- listElements.push(firstExpression);
635
- closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);
636
- expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos), listElements);
637
- } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {
638
- listElements.push(firstExpression);
639
- do
640
- listElements.push(eatExpression());
641
- while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true));
642
- closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);
643
- expr = _InlineList.InlineList.create(toPosToken(token.startPos, closingCurly.endPos), listElements);
644
- } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {
645
- var mapElements = [];
646
- mapElements.push(firstExpression);
647
- mapElements.push(eatExpression());
648
- while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {
649
- mapElements.push(eatExpression());
650
- eatToken(_TokenKind.TokenKind.COLON);
651
- mapElements.push(eatExpression());
652
- }
653
- closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);
654
- expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos), mapElements);
655
- } else raiseInternalException(token.startPos, "OOD");
656
- }
657
- push(expr);
658
- return true;
659
- }
660
- function maybeEatIndexer() {
661
- var token = peekToken();
662
- if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) return false;
663
- var expr = eatExpression();
664
- eatToken(_TokenKind.TokenKind.RSQUARE);
665
- push(_Indexer.Indexer.create(toPosToken(token), expr));
666
- return true;
667
- }
668
- function maybeEatSelection(nullSafeNavigation) {
669
- var token = peekToken();
670
- if (!peekSelectToken()) return false;
671
- nextToken();
672
- var expr = eatExpression();
673
- if (expr === null) raiseInternalException(toPosToken(token), "MISSING_SELECTION_EXPRESSION");
674
- eatToken(_TokenKind.TokenKind.RSQUARE);
675
- if (token.getKind() === _TokenKind.TokenKind.SELECT_FIRST) push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.FIRST, toPosToken(token), expr));
676
- else if (token.getKind() === _TokenKind.TokenKind.SELECT_LAST) push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.LAST, toPosToken(token), expr));
677
- else push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.ALL, toPosToken(token), expr));
678
- return true;
679
- }
680
- /**
681
- * Eat an identifier, possibly qualified (meaning that it is dotted).
682
- * TODO AndyC Could create complete identifiers (a.b.c) here rather than a sequence of them? (a, b, c)
683
- */
684
- function eatPossiblyQualifiedId() {
685
- var qualifiedIdPieces = [];
686
- var node = peekToken();
687
- while (isValidQualifiedId(node)) {
688
- nextToken();
689
- if (node.kind !== _TokenKind.TokenKind.DOT) qualifiedIdPieces.push(_Identifier.Identifier.create(node.stringValue(), toPosToken(node)));
690
- node = peekToken();
691
- }
692
- if (!qualifiedIdPieces.length) {
693
- if (node === null) raiseInternalException(expressionString.length(), "OOD");
694
- raiseInternalException(node.startPos, "NOT_EXPECTED_TOKEN", "qualified ID", node.getKind().toString().toLowerCase());
695
- }
696
- var pos = toPosBounds(qualifiedIdPieces[0].getStartPosition(), qualifiedIdPieces[qualifiedIdPieces.length - 1].getEndPosition());
697
- return _QualifiedIdentifier.QualifiedIdentifier.create(pos, qualifiedIdPieces);
698
- }
699
- function isValidQualifiedId(node) {
700
- if (node === null || node.kind === _TokenKind.TokenKind.LITERAL_STRING) return false;
701
- if (node.kind === _TokenKind.TokenKind.DOT || node.kind === _TokenKind.TokenKind.IDENTIFIER) return true;
702
- var value = node.stringValue();
703
- return value && value.length && VALID_QUALIFIED_ID_PATTERN.test(value);
704
- }
705
- function maybeEatMethodOrProperty(nullSafeNavigation) {
706
- if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {
707
- var methodOrPropertyName = nextToken();
708
- var args = maybeEatMethodArgs();
709
- if (args === null) {
710
- push(_PropertyReference.PropertyReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName)));
711
- return true;
712
- }
713
- push(_MethodReference.MethodReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName), args));
714
- return true;
715
- }
716
- return false;
717
- }
718
- function maybeEatConstructorReference() {
719
- if (peekIdentifierToken("new")) {
720
- var newToken = nextToken();
721
- if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {
722
- push(_PropertyReference.PropertyReference.create(newToken.stringValue(), toPosToken(newToken)));
723
- return true;
724
- }
725
- var possiblyQualifiedConstructorName = eatPossiblyQualifiedId();
726
- var nodes = [];
727
- nodes.push(possiblyQualifiedConstructorName);
728
- if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {
729
- var dimensions = [];
730
- while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {
731
- if (!peekTokenOne(_TokenKind.TokenKind.RSQUARE)) dimensions.push(eatExpression());
732
- else dimensions.push(null);
733
- eatToken(_TokenKind.TokenKind.RSQUARE);
734
- }
735
- if (maybeEatInlineListOrMap()) nodes.push(pop());
736
- push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), dimensions, nodes));
737
- } else {
738
- eatConstructorArgs(nodes);
739
- push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), nodes));
740
- }
741
- return true;
742
- }
743
- return false;
744
- }
745
- function push(newNode) {
746
- constructedNodes.push(newNode);
747
- }
748
- function pop() {
749
- return constructedNodes.pop();
750
- }
751
- function maybeEatLiteral() {
752
- var token = peekToken();
753
- if (token === null) return false;
754
- if (token.getKind() === _TokenKind.TokenKind.LITERAL_INT || token.getKind() === _TokenKind.TokenKind.LITERAL_LONG) push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 10), toPosToken(token)));
755
- else if (token.getKind() === _TokenKind.TokenKind.LITERAL_REAL || token.getKind() === _TokenKind.TokenKind.LITERAL_REAL_FLOAT) push(_NumberLiteral.NumberLiteral.create(parseFloat(token.stringValue()), toPosToken(token)));
756
- else if (token.getKind() === _TokenKind.TokenKind.LITERAL_HEXINT || token.getKind() === _TokenKind.TokenKind.LITERAL_HEXLONG) push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 16), toPosToken(token)));
757
- else if (peekIdentifierToken("true")) push(_BooleanLiteral.BooleanLiteral.create(true, toPosToken(token)));
758
- else if (peekIdentifierToken("false")) push(_BooleanLiteral.BooleanLiteral.create(false, toPosToken(token)));
759
- else if (token.getKind() === _TokenKind.TokenKind.LITERAL_STRING) push(_StringLiteral.StringLiteral.create(token.stringValue(), toPosToken(token)));
760
- else return false;
761
- nextToken();
762
- return true;
763
- }
764
- function maybeEatParenExpression() {
765
- if (peekTokenOne(_TokenKind.TokenKind.LPAREN)) {
766
- nextToken();
767
- var expr = eatExpression();
768
- eatToken(_TokenKind.TokenKind.RPAREN);
769
- push(expr);
770
- return true;
771
- } else return false;
772
- }
773
- function maybeEatRelationalOperator() {
774
- var token = peekToken();
775
- if (token === null) return null;
776
- if (token.isNumericRelationalOperator()) return token;
777
- if (token.isIdentifier()) {
778
- var idString = token.stringValue();
779
- if (idString.toLowerCase() === "instanceof") return token.asInstanceOfToken();
780
- if (idString.toLowerCase() === "matches") return token.asMatchesToken();
781
- if (idString.toLowerCase() === "between") return token.asBetweenToken();
782
- }
783
- return null;
784
- }
785
- function eatToken(expectedKind) {
786
- var token = nextToken();
787
- if (token === null) raiseInternalException(expressionString.length, "OOD");
788
- if (token.getKind() !== expectedKind) raiseInternalException(token.startPos, "NOT_EXPECTED_TOKEN", expectedKind.toString().toLowerCase(), token.getKind().toString().toLowerCase());
789
- return token;
790
- }
791
- function peekTokenOne(desiredTokenKind) {
792
- return peekTokenConsumeIfMatched(desiredTokenKind, false);
793
- }
794
- function peekTokenConsumeIfMatched(desiredTokenKind, consumeIfMatched) {
795
- if (!moreTokens()) return false;
796
- var token = peekToken();
797
- if (token.getKind() === desiredTokenKind) {
798
- if (consumeIfMatched) tokenStreamPointer++;
799
- return true;
800
- }
801
- if (desiredTokenKind === _TokenKind.TokenKind.IDENTIFIER) {
802
- if (token.getKind().ordinal() >= _TokenKind.TokenKind.DIV.ordinal() && token.getKind().ordinal() <= _TokenKind.TokenKind.NOT.ordinal() && token.data !== null) return true;
803
- }
804
- return false;
805
- }
806
- function peekTokenAny() {
807
- if (!moreTokens()) return false;
808
- var token = peekToken();
809
- var args = Array.prototype.slice.call(arguments);
810
- for (var i = 0, l = args.length; i < l; i += 1) if (token.getKind() === args[i]) return true;
811
- return false;
812
- }
813
- function peekIdentifierToken(identifierString) {
814
- if (!moreTokens()) return false;
815
- var token = peekToken();
816
- return token.getKind() === _TokenKind.TokenKind.IDENTIFIER && token.stringValue().toLowerCase() === identifierString.toLowerCase();
817
- }
818
- function peekSelectToken() {
819
- if (!moreTokens()) return false;
820
- var token = peekToken();
821
- return token.getKind() === _TokenKind.TokenKind.SELECT || token.getKind() === _TokenKind.TokenKind.SELECT_FIRST || token.getKind() === _TokenKind.TokenKind.SELECT_LAST;
822
- }
823
- function moreTokens() {
824
- return tokenStreamPointer < tokenStream.length;
825
- }
826
- function nextToken() {
827
- if (tokenStreamPointer >= tokenStreamLength) return null;
828
- return tokenStream[tokenStreamPointer++];
829
- }
830
- function peekToken() {
831
- if (tokenStreamPointer >= tokenStreamLength) return null;
832
- return tokenStream[tokenStreamPointer];
833
- }
834
- function raiseInternalException(pos, message, expected, actual) {
835
- if (expected) message += "\nExpected: " + expected;
836
- if (actual) message += "\nActual: " + actual;
837
- throw {
838
- name: "InternalParseException",
839
- message: "Error occurred while attempting to parse expression '" + expressionString + "' at position " + pos + ". Message: " + message
840
- };
841
- }
842
- function toString(token) {
843
- if (token.getKind().hasPayload()) return token.stringValue();
844
- return token.getKind().toString().toLowerCase();
845
- }
846
- function checkOperands(token, left, right) {
847
- checkLeftOperand(token, left);
848
- checkRightOperand(token, right);
849
- }
850
- function checkLeftOperand(token, operandExpression) {
851
- if (operandExpression === null) raiseInternalException(token.startPos, "LEFT_OPERAND_PROBLEM");
852
- }
853
- function checkRightOperand(token, operandExpression) {
854
- if (operandExpression === null) raiseInternalException(token.startPos, "RIGHT_OPERAND_PROBLEM");
855
- }
856
- /**
857
- * Compress the start and end of a token into a single int.
858
- */
859
- function toPosToken(token) {
860
- return (token.startPos << 16) + token.endPos;
861
- }
862
- function toPosBounds(start, end) {
863
- return (start << 16) + end;
864
- }
865
- return {
866
- setConfiguration,
867
- parse
868
- };
869
- };
870
- }),
871
- (function(module$1, exports$1, __webpack_require__) {
872
- "use strict";
873
- Object.defineProperty(exports$1, "__esModule", { value: true });
874
- exports$1.Tokenizer = void 0;
875
- var _Token = __webpack_require__(7);
876
- var _TokenKind = __webpack_require__(2);
877
- /**
878
- * @author Andy Clement
879
- * @author Phillip Webb
880
- * @author Ben March
881
- * @since 0.2.0
882
- */
883
- var ALTERNATIVE_OPERATOR_NAMES = [
884
- "DIV",
885
- "EQ",
886
- "GE",
887
- "GT",
888
- "LE",
889
- "LT",
890
- "MOD",
891
- "NE",
892
- "NOT"
893
- ], FLAGS = [], IS_DIGIT = 1, IS_HEXDIGIT = 2, IS_ALPHA = 4;
894
- function init() {
895
- var ch;
896
- for (ch = "0".charCodeAt(0); ch <= "9".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_DIGIT | IS_HEXDIGIT;
897
- for (ch = "A".charCodeAt(0); ch <= "F".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_HEXDIGIT;
898
- for (ch = "a".charCodeAt(0); ch <= "f".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_HEXDIGIT;
899
- for (ch = "A".charCodeAt(0); ch <= "Z".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_ALPHA;
900
- for (ch = "a".charCodeAt(0); ch <= "z".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_ALPHA;
901
- }
902
- init();
903
- function tokenize(inputData) {
904
- var expressionString = inputData, toProcess = inputData + "\0", max = toProcess.length, pos = 0, tokens = [];
905
- function process() {
906
- var ch;
907
- while (pos < max) {
908
- ch = toProcess[pos];
909
- if (isAlphabetic(ch)) lexIdentifier();
910
- else switch (ch) {
911
- case "+":
912
- if (isTwoCharToken(_TokenKind.TokenKind.INC)) pushPairToken(_TokenKind.TokenKind.INC);
913
- else pushCharToken(_TokenKind.TokenKind.PLUS);
914
- break;
915
- case "_":
916
- lexIdentifier();
917
- break;
918
- case "-":
919
- if (isTwoCharToken(_TokenKind.TokenKind.DEC)) pushPairToken(_TokenKind.TokenKind.DEC);
920
- else pushCharToken(_TokenKind.TokenKind.MINUS);
921
- break;
922
- case ":":
923
- pushCharToken(_TokenKind.TokenKind.COLON);
924
- break;
925
- case ".":
926
- pushCharToken(_TokenKind.TokenKind.DOT);
927
- break;
928
- case ",":
929
- pushCharToken(_TokenKind.TokenKind.COMMA);
930
- break;
931
- case "*":
932
- pushCharToken(_TokenKind.TokenKind.STAR);
933
- break;
934
- case "/":
935
- pushCharToken(_TokenKind.TokenKind.DIV);
936
- break;
937
- case "%":
938
- pushCharToken(_TokenKind.TokenKind.MOD);
939
- break;
940
- case "(":
941
- pushCharToken(_TokenKind.TokenKind.LPAREN);
942
- break;
943
- case ")":
944
- pushCharToken(_TokenKind.TokenKind.RPAREN);
945
- break;
946
- case "[":
947
- pushCharToken(_TokenKind.TokenKind.LSQUARE);
948
- break;
949
- case "#":
950
- pushCharToken(_TokenKind.TokenKind.HASH);
951
- break;
952
- case "]":
953
- pushCharToken(_TokenKind.TokenKind.RSQUARE);
954
- break;
955
- case "{":
956
- pushCharToken(_TokenKind.TokenKind.LCURLY);
957
- break;
958
- case "}":
959
- pushCharToken(_TokenKind.TokenKind.RCURLY);
960
- break;
961
- case "@":
962
- pushCharToken(_TokenKind.TokenKind.BEAN_REF);
963
- break;
964
- case "^":
965
- if (isTwoCharToken(_TokenKind.TokenKind.SELECT_FIRST)) pushPairToken(_TokenKind.TokenKind.SELECT_FIRST);
966
- else pushCharToken(_TokenKind.TokenKind.POWER);
967
- break;
968
- case "!":
969
- if (isTwoCharToken(_TokenKind.TokenKind.NE)) pushPairToken(_TokenKind.TokenKind.NE);
970
- else if (isTwoCharToken(_TokenKind.TokenKind.PROJECT)) pushPairToken(_TokenKind.TokenKind.PROJECT);
971
- else pushCharToken(_TokenKind.TokenKind.NOT);
972
- break;
973
- case "=":
974
- if (isTwoCharToken(_TokenKind.TokenKind.EQ)) pushPairToken(_TokenKind.TokenKind.EQ);
975
- else pushCharToken(_TokenKind.TokenKind.ASSIGN);
976
- break;
977
- case "&":
978
- if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_AND)) throw {
979
- name: "SpelParseException",
980
- message: "Missing character '&' in expression (" + expressionString + ") at position " + pos
981
- };
982
- pushPairToken(_TokenKind.TokenKind.SYMBOLIC_AND);
983
- break;
984
- case "|":
985
- if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_OR)) throw {
986
- name: "SpelParseException",
987
- message: "Missing character '|' in expression (" + expressionString + ") at position " + pos
988
- };
989
- pushPairToken(_TokenKind.TokenKind.SYMBOLIC_OR);
990
- break;
991
- case "?":
992
- if (isTwoCharToken(_TokenKind.TokenKind.SELECT)) pushPairToken(_TokenKind.TokenKind.SELECT);
993
- else if (isTwoCharToken(_TokenKind.TokenKind.ELVIS)) pushPairToken(_TokenKind.TokenKind.ELVIS);
994
- else if (isTwoCharToken(_TokenKind.TokenKind.SAFE_NAVI)) pushPairToken(_TokenKind.TokenKind.SAFE_NAVI);
995
- else pushCharToken(_TokenKind.TokenKind.QMARK);
996
- break;
997
- case "$":
998
- if (isTwoCharToken(_TokenKind.TokenKind.SELECT_LAST)) pushPairToken(_TokenKind.TokenKind.SELECT_LAST);
999
- else lexIdentifier();
1000
- break;
1001
- case ">":
1002
- if (isTwoCharToken(_TokenKind.TokenKind.GE)) pushPairToken(_TokenKind.TokenKind.GE);
1003
- else pushCharToken(_TokenKind.TokenKind.GT);
1004
- break;
1005
- case "<":
1006
- if (isTwoCharToken(_TokenKind.TokenKind.LE)) pushPairToken(_TokenKind.TokenKind.LE);
1007
- else pushCharToken(_TokenKind.TokenKind.LT);
1008
- break;
1009
- case "0":
1010
- case "1":
1011
- case "2":
1012
- case "3":
1013
- case "4":
1014
- case "5":
1015
- case "6":
1016
- case "7":
1017
- case "8":
1018
- case "9":
1019
- lexNumericLiteral(ch === "0");
1020
- break;
1021
- case " ":
1022
- case " ":
1023
- case "\r":
1024
- case "\n":
1025
- pos += 1;
1026
- break;
1027
- case "'":
1028
- lexQuotedStringLiteral();
1029
- break;
1030
- case "\"":
1031
- lexDoubleQuotedStringLiteral();
1032
- break;
1033
- case "\0":
1034
- pos += 1;
1035
- break;
1036
- case "\\": throw {
1037
- name: "SpelParseException",
1038
- message: "Unexpected escape character in expression (" + expressionString + ") at position " + pos
1039
- };
1040
- default: throw {
1041
- name: "SpelParseException",
1042
- message: "Cannot handle character '" + ch + "' in expression (" + expressionString + ") at position " + pos
1043
- };
1044
- }
1045
- }
1046
- }
1047
- function lexQuotedStringLiteral() {
1048
- var start = pos, terminated = false, ch;
1049
- while (!terminated) {
1050
- pos += 1;
1051
- ch = toProcess[pos];
1052
- if (ch === "'") if (toProcess[pos + 1] === "'") pos += 1;
1053
- else terminated = true;
1054
- if (ch.charCodeAt(0) === 0) throw {
1055
- name: "SpelParseException",
1056
- message: "Non-terminating quoted string in expression (" + expressionString + ") at position " + pos
1057
- };
1058
- }
1059
- pos += 1;
1060
- tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));
1061
- }
1062
- function lexDoubleQuotedStringLiteral() {
1063
- var start = pos, terminated = false, ch;
1064
- while (!terminated) {
1065
- pos += 1;
1066
- ch = toProcess[pos];
1067
- if (ch === "\"") if (toProcess[pos + 1] === "\"") pos += 1;
1068
- else terminated = true;
1069
- if (ch.charCodeAt(0) === 0) throw {
1070
- name: "SpelParseException",
1071
- message: "Non-terminating double-quoted string in expression (" + expressionString + ") at position " + pos
1072
- };
1073
- }
1074
- pos += 1;
1075
- tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));
1076
- }
1077
- function lexNumericLiteral(firstCharIsZero) {
1078
- var isReal = false, start = pos, ch = toProcess[pos + 1], isHex = ch === "x" || ch === "X", dotpos, endOfNumber, possibleSign, isFloat;
1079
- if (firstCharIsZero && isHex) {
1080
- pos = pos + 1;
1081
- do
1082
- pos += 1;
1083
- while (isHexadecimalDigit(toProcess[pos]));
1084
- if (isChar("L", "l")) {
1085
- pushHexIntToken(subarray(start + 2, pos), true, start, pos);
1086
- pos += 1;
1087
- } else pushHexIntToken(subarray(start + 2, pos), false, start, pos);
1088
- return;
1089
- }
1090
- do
1091
- pos += 1;
1092
- while (isDigit(toProcess[pos]));
1093
- ch = toProcess[pos];
1094
- if (ch === ".") {
1095
- isReal = true;
1096
- dotpos = pos;
1097
- do
1098
- pos += 1;
1099
- while (isDigit(toProcess[pos]));
1100
- if (pos === dotpos + 1) {
1101
- pos = dotpos;
1102
- pushIntToken(subarray(start, pos), false, start, pos);
1103
- return;
1104
- }
1105
- }
1106
- endOfNumber = pos;
1107
- if (isChar("L", "l")) {
1108
- if (isReal) throw {
1109
- name: "SpelParseException",
1110
- message: "Real cannot be long in expression (" + expressionString + ") at position " + pos
1111
- };
1112
- pushIntToken(subarray(start, endOfNumber), true, start, endOfNumber);
1113
- pos += 1;
1114
- } else if (isExponentChar(toProcess[pos])) {
1115
- isReal = true;
1116
- pos += 1;
1117
- possibleSign = toProcess[pos];
1118
- if (isSign(possibleSign)) pos += 1;
1119
- do
1120
- pos += 1;
1121
- while (isDigit(toProcess[pos]));
1122
- isFloat = false;
1123
- if (isFloatSuffix(toProcess[pos])) {
1124
- isFloat = true;
1125
- pos += 1;
1126
- endOfNumber = pos;
1127
- } else if (isDoubleSuffix(toProcess[pos])) {
1128
- pos += 1;
1129
- endOfNumber = pos;
1130
- }
1131
- pushRealToken(subarray(start, pos), isFloat, start, pos);
1132
- } else {
1133
- ch = toProcess[pos];
1134
- isFloat = false;
1135
- if (isFloatSuffix(ch)) {
1136
- isReal = true;
1137
- isFloat = true;
1138
- pos += 1;
1139
- endOfNumber = pos;
1140
- } else if (isDoubleSuffix(ch)) {
1141
- isReal = true;
1142
- pos += 1;
1143
- endOfNumber = pos;
1144
- }
1145
- if (isReal) pushRealToken(subarray(start, endOfNumber), isFloat, start, endOfNumber);
1146
- else pushIntToken(subarray(start, endOfNumber), false, start, endOfNumber);
1147
- }
1148
- }
1149
- function lexIdentifier() {
1150
- var start = pos, substring, asString, idx;
1151
- do
1152
- pos += 1;
1153
- while (isIdentifier(toProcess[pos]));
1154
- substring = subarray(start, pos);
1155
- if (pos - start === 2 || pos - start === 3) {
1156
- asString = substring.toUpperCase();
1157
- idx = ALTERNATIVE_OPERATOR_NAMES.indexOf(asString);
1158
- if (idx >= 0) {
1159
- pushOneCharOrTwoCharToken(_TokenKind.TokenKind.valueOf(asString), start, substring);
1160
- return;
1161
- }
1162
- }
1163
- tokens.push(new _Token.Token(_TokenKind.TokenKind.IDENTIFIER, substring.replace("\0", ""), start, pos));
1164
- }
1165
- function pushIntToken(data, isLong, start, end) {
1166
- if (isLong) tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_LONG, data, start, end));
1167
- else tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_INT, data, start, end));
1168
- }
1169
- function pushHexIntToken(data, isLong, start, end) {
1170
- if (data.length === 0) if (isLong) throw {
1171
- name: "SpelParseException",
1172
- message: "Not a long in expression (" + expressionString + ") at position " + pos
1173
- };
1174
- else throw {
1175
- name: "SpelParseException",
1176
- message: "Not an int in expression (" + expressionString + ") at position " + pos
1177
- };
1178
- if (isLong) tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXLONG, data, start, end));
1179
- else tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXINT, data, start, end));
1180
- }
1181
- function pushRealToken(data, isFloat, start, end) {
1182
- if (isFloat) tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL_FLOAT, data, start, end));
1183
- else tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL, data, start, end));
1184
- }
1185
- function subarray(start, end) {
1186
- return toProcess.substring(start, end);
1187
- }
1188
- /**
1189
- * Check if this might be a two character token.
1190
- */
1191
- function isTwoCharToken(kind) {
1192
- if (kind.tokenChars.length === 2 && toProcess[pos] === kind.tokenChars[0]) return toProcess[pos + 1] === kind.tokenChars[1];
1193
- return false;
1194
- }
1195
- /**
1196
- * Push a token of just one character in length.
1197
- */
1198
- function pushCharToken(kind) {
1199
- tokens.push(new _Token.Token(kind, null, pos, pos + 1));
1200
- pos += 1;
1201
- }
1202
- /**
1203
- * Push a token of two characters in length.
1204
- */
1205
- function pushPairToken(kind) {
1206
- tokens.push(new _Token.Token(kind, null, pos, pos + 2));
1207
- pos += 2;
1208
- }
1209
- function pushOneCharOrTwoCharToken(kind, pos$1, data) {
1210
- tokens.push(new _Token.Token(kind, data, pos$1, pos$1 + kind.getLength()));
1211
- }
1212
- function isIdentifier(ch) {
1213
- return isAlphabetic(ch) || isDigit(ch) || ch === "_" || ch === "$";
1214
- }
1215
- function isChar(a, b) {
1216
- var ch = toProcess[pos];
1217
- return ch === a || ch === b;
1218
- }
1219
- function isExponentChar(ch) {
1220
- return ch === "e" || ch === "E";
1221
- }
1222
- function isFloatSuffix(ch) {
1223
- return ch === "f" || ch === "F";
1224
- }
1225
- function isDoubleSuffix(ch) {
1226
- return ch === "d" || ch === "D";
1227
- }
1228
- function isSign(ch) {
1229
- return ch === "+" || ch === "-";
1230
- }
1231
- function isDigit(ch) {
1232
- if (ch.charCodeAt(0) > 255) return false;
1233
- return (FLAGS[ch.charCodeAt(0)] & IS_DIGIT) !== 0;
1234
- }
1235
- function isAlphabetic(ch) {
1236
- if (ch.charCodeAt(0) > 255) return false;
1237
- return (FLAGS[ch.charCodeAt(0)] & IS_ALPHA) !== 0;
1238
- }
1239
- function isHexadecimalDigit(ch) {
1240
- if (ch.charCodeAt(0) > 255) return false;
1241
- return (FLAGS[ch.charCodeAt(0)] & IS_HEXDIGIT) !== 0;
1242
- }
1243
- process();
1244
- return tokens;
1245
- }
1246
- exports$1.Tokenizer = { tokenize };
1247
- }),
1248
- (function(module$1, exports$1, __webpack_require__) {
1249
- "use strict";
1250
- Object.defineProperty(exports$1, "__esModule", { value: true });
1251
- exports$1.Token = void 0;
1252
- var _TokenKind = __webpack_require__(2);
1253
- function Token(tokenKind, tokenData, startPos, endPos) {
1254
- this.kind = tokenKind;
1255
- this.startPos = startPos;
1256
- this.endPos = endPos;
1257
- if (tokenData) this.data = tokenData;
1258
- }
1259
- /**
1260
- * @author Andy Clement
1261
- * @author Ben March
1262
- * @since 0.2.0
1263
- */
1264
- Token.prototype.getKind = function() {
1265
- return this.kind;
1266
- };
1267
- Token.prototype.toString = function() {
1268
- var s = "[";
1269
- s += this.kind.toString();
1270
- if (this.kind.hasPayload()) s += ":" + this.data;
1271
- s += "]";
1272
- s += "(" + this.startPos + "," + this.endPos + ")";
1273
- return s;
1274
- };
1275
- Token.prototype.isIdentifier = function() {
1276
- return this.kind === _TokenKind.TokenKind.IDENTIFIER;
1277
- };
1278
- Token.prototype.isNumericRelationalOperator = function() {
1279
- return this.kind === _TokenKind.TokenKind.GT || this.kind === _TokenKind.TokenKind.GE || this.kind === _TokenKind.TokenKind.LT || this.kind === _TokenKind.TokenKind.LE || this.kind === _TokenKind.TokenKind.EQ || this.kind === _TokenKind.TokenKind.NE;
1280
- };
1281
- Token.prototype.stringValue = function() {
1282
- return this.data;
1283
- };
1284
- Token.prototype.asInstanceOfToken = function() {
1285
- return new Token(_TokenKind.TokenKind.INSTANCEOF, this.startPos, this.endPos);
1286
- };
1287
- Token.prototype.asMatchesToken = function() {
1288
- return new Token(_TokenKind.TokenKind.MATCHES, this.startPos, this.endPos);
1289
- };
1290
- Token.prototype.asBetweenToken = function() {
1291
- return new Token(_TokenKind.TokenKind.BETWEEN, this.startPos, this.endPos);
1292
- };
1293
- Token.prototype.getStartPosition = function() {
1294
- return this.startPos;
1295
- };
1296
- Token.prototype.getEndPosition = function() {
1297
- return this.endPos;
1298
- };
1299
- exports$1.Token = Token;
1300
- }),
1301
- (function(module$1, exports$1, __webpack_require__) {
1302
- "use strict";
1303
- Object.defineProperty(exports$1, "__esModule", { value: true });
1304
- exports$1.BooleanLiteral = void 0;
1305
- var _SpelNode = __webpack_require__(0);
1306
- /**
1307
- * Represents the literal values TRUE and FALSE.
1308
- *
1309
- * @author Andy Clement
1310
- * @author Ben March
1311
- * @since 0.2.0
1312
- */
1313
- function createNode(value, position) {
1314
- var node = _SpelNode.SpelNode.create("boolean", position);
1315
- node.getValue = function() {
1316
- return value;
1317
- };
1318
- node.setValue = function(newValue) {
1319
- return value = newValue;
1320
- };
1321
- return node;
1322
- }
1323
- exports$1.BooleanLiteral = { create: createNode };
1324
- }),
1325
- (function(module$1, exports$1, __webpack_require__) {
1326
- "use strict";
1327
- Object.defineProperty(exports$1, "__esModule", { value: true });
1328
- exports$1.NumberLiteral = void 0;
1329
- var _SpelNode = __webpack_require__(0);
1330
- /**
1331
- * Expression language AST node that represents a literal number of any kind (since JavaScript only supports doubles anyway)
1332
- *
1333
- * @author Andy Clement
1334
- * @author Ben March
1335
- * @since 0.2.0
1336
- */
1337
- function createNode(value, position) {
1338
- var node = _SpelNode.SpelNode.create("number", position);
1339
- node.getValue = function() {
1340
- return value;
1341
- };
1342
- node.setValue = function(newValue) {
1343
- return value = newValue;
1344
- };
1345
- return node;
1346
- }
1347
- exports$1.NumberLiteral = { create: createNode };
1348
- }),
1349
- (function(module$1, exports$1, __webpack_require__) {
1350
- "use strict";
1351
- Object.defineProperty(exports$1, "__esModule", { value: true });
1352
- exports$1.StringLiteral = void 0;
1353
- var _SpelNode = __webpack_require__(0);
1354
- /**
1355
- * Expression language AST node that represents a string literal.
1356
- *
1357
- * @author Andy Clement
1358
- * @author Juergen Hoeller
1359
- * @author Ben March
1360
- * @since 0.2.0
1361
- */
1362
- function createNode(value, position) {
1363
- var node = _SpelNode.SpelNode.create("string", position);
1364
- function stripQuotes(value$1) {
1365
- if (value$1[0] === "'" && value$1[value$1.length - 1] === "'" || value$1[0] === "\"" && value$1[value$1.length - 1] === "\"") value$1 = value$1.substring(1, value$1.length - 1);
1366
- return value$1.replace(/''/g, "'").replace(/""/g, "\"");
1367
- }
1368
- value = stripQuotes(value);
1369
- node.getValue = function() {
1370
- return value;
1371
- };
1372
- node.setValue = function(newValue) {
1373
- return value = newValue;
1374
- };
1375
- return node;
1376
- }
1377
- exports$1.StringLiteral = { create: createNode };
1378
- }),
1379
- (function(module$1, exports$1, __webpack_require__) {
1380
- "use strict";
1381
- Object.defineProperty(exports$1, "__esModule", { value: true });
1382
- exports$1.NullLiteral = void 0;
1383
- var _SpelNode = __webpack_require__(0);
1384
- /**
1385
- * Expression language AST node that represents null.
1386
- *
1387
- * @author Andy Clement
1388
- * @author Ben March
1389
- * @since 0.2.0
1390
- */
1391
- function createNode(value, position) {
1392
- var node = _SpelNode.SpelNode.create("null", position);
1393
- node.getValue = function() {
1394
- return null;
1395
- };
1396
- return node;
1397
- }
1398
- exports$1.NullLiteral = { create: createNode };
1399
- }),
1400
- (function(module$1, exports$1, __webpack_require__) {
1401
- "use strict";
1402
- Object.defineProperty(exports$1, "__esModule", { value: true });
1403
- exports$1.FunctionReference = void 0;
1404
- var _SpelNode = __webpack_require__(0);
1405
- var _Stack = __webpack_require__(1);
1406
- /**
1407
- * A function reference is of the form "#someFunction(a,b,c)". Functions may be defined in
1408
- * the context prior to the expression being evaluated or within the expression itself
1409
- * using a lambda function definition. For example: Lambda function definition in an
1410
- * expression: "(#max = {|x,y|$x>$y?$x:$y};max(2,3))" Calling context defined function:
1411
- * "#isEven(37)". Functions may also be static java methods, registered in the context
1412
- * prior to invocation of the expression.
1413
- *
1414
- * <p>Functions are very simplistic, the arguments are not part of the definition (right
1415
- * now), so the names must be unique.
1416
- *
1417
- * @author Andy Clement
1418
- * @author Ben March
1419
- * @since 0.2.0
1420
- */
1421
- function createNode(functionName, position, args) {
1422
- var node = _SpelNode.SpelNode.create("function", position);
1423
- node.getRaw = function() {
1424
- return {
1425
- functionName,
1426
- args
1427
- };
1428
- };
1429
- node.getValue = function(state) {
1430
- var locals = state.locals || {}, context = state.rootContext, compiledArgs = [];
1431
- args.forEach(function(arg) {
1432
- var currentActiveContext = state.activeContext;
1433
- state.activeContext = new _Stack.Stack();
1434
- state.activeContext.push(state.rootContext);
1435
- compiledArgs.push(arg.getValue(state));
1436
- state.activeContext = currentActiveContext;
1437
- });
1438
- if (locals[functionName]) return locals[functionName].apply(context, compiledArgs);
1439
- throw {
1440
- name: "FunctionDoesNotExistException",
1441
- message: "Function '" + functionName + "' does not exist."
1442
- };
1443
- };
1444
- return node;
1445
- }
1446
- exports$1.FunctionReference = { create: createNode };
1447
- }),
1448
- (function(module$1, exports$1, __webpack_require__) {
1449
- "use strict";
1450
- Object.defineProperty(exports$1, "__esModule", { value: true });
1451
- exports$1.MethodReference = void 0;
1452
- var _SpelNode = __webpack_require__(0);
1453
- var _Stack = __webpack_require__(1);
1454
- /**
1455
- * Expression language AST node that represents a method reference.
1456
- *
1457
- * @author Andy Clement
1458
- * @author Juergen Hoeller
1459
- * @author Ben March
1460
- * @since 0.2.0
1461
- */
1462
- function createNode(nullSafeNavigation, methodName, position, args) {
1463
- var node = _SpelNode.SpelNode.create("method", position);
1464
- node.getRaw = function() {
1465
- return {
1466
- methodName,
1467
- args
1468
- };
1469
- };
1470
- node.getValue = function(state) {
1471
- var context = state.activeContext.peek(), compiledArgs = [], method;
1472
- if (context === null || context === void 0) throw {
1473
- name: "ContextDoesNotExistException",
1474
- message: "Attempting to look up property '" + methodName + "' for an undefined context."
1475
- };
1476
- function maybeHandleNullSafeNavigation(member) {
1477
- if (member === void 0 || member === null) {
1478
- if (nullSafeNavigation) return null;
1479
- throw {
1480
- name: "NullPointerException",
1481
- message: "Method " + methodName + " does not exist."
1482
- };
1483
- }
1484
- return member;
1485
- }
1486
- args.forEach(function(arg) {
1487
- var currentActiveContext = state.activeContext;
1488
- state.activeContext = new _Stack.Stack();
1489
- state.activeContext.push(state.rootContext);
1490
- compiledArgs.push(arg.getValue(state));
1491
- state.activeContext = currentActiveContext;
1492
- });
1493
- if (methodName.substr(0, 3) === "get" && !context[methodName]) return maybeHandleNullSafeNavigation(context[methodName.charAt(3).toLowerCase() + methodName.substring(4)]);
1494
- if (methodName.substr(0, 3) === "set" && !context[methodName]) return context[methodName.charAt(3).toLowerCase() + methodName.substring(4)] = compiledArgs[0];
1495
- if (Array.isArray(context)) {
1496
- if (methodName === "size") return context.length;
1497
- if (methodName === "contains") return context.includes(compiledArgs[0]);
1498
- }
1499
- method = maybeHandleNullSafeNavigation(context[methodName]);
1500
- if (method) return method.apply(context, compiledArgs);
1501
- return null;
1502
- };
1503
- return node;
1504
- }
1505
- exports$1.MethodReference = { create: createNode };
1506
- }),
1507
- (function(module$1, exports$1, __webpack_require__) {
1508
- "use strict";
1509
- Object.defineProperty(exports$1, "__esModule", { value: true });
1510
- exports$1.PropertyReference = void 0;
1511
- var _SpelNode = __webpack_require__(0);
1512
- /**
1513
- * Represents a simple property or field reference.
1514
- *
1515
- * @author Andy Clement
1516
- * @author Juergen Hoeller
1517
- * @author Clark Duplichien
1518
- * @author Ben March
1519
- * @since 0.2.0
1520
- */
1521
- function createNode(nullSafeNavigation, propertyName, position) {
1522
- var node = _SpelNode.SpelNode.create("property", position);
1523
- node.getRaw = function() {
1524
- return propertyName;
1525
- };
1526
- node.getValue = function(state) {
1527
- var context = state.activeContext.peek();
1528
- if (!context) {
1529
- if (nullSafeNavigation) return null;
1530
- throw {
1531
- name: "ContextDoesNotExistException",
1532
- message: "Attempting to look up property '" + propertyName + "' for an undefined context."
1533
- };
1534
- }
1535
- if (context[propertyName] === void 0 || context[propertyName] === null) {
1536
- if (nullSafeNavigation) return null;
1537
- if (propertyName === "size" && Array.isArray(context)) return context.length;
1538
- throw {
1539
- name: "NullPointerException",
1540
- message: "Property '" + propertyName + "' does not exist."
1541
- };
1542
- }
1543
- return context[propertyName];
1544
- };
1545
- node.setValue = function(value, state) {
1546
- var context = state.activeContext.peek();
1547
- if (!context) throw {
1548
- name: "ContextDoesNotExistException",
1549
- message: "Attempting to assign property '" + propertyName + "' for an undefined context."
1550
- };
1551
- return context[propertyName] = value;
1552
- };
1553
- node.getName = function() {
1554
- return propertyName;
1555
- };
1556
- return node;
1557
- }
1558
- exports$1.PropertyReference = { create: createNode };
1559
- }),
1560
- (function(module$1, exports$1, __webpack_require__) {
1561
- "use strict";
1562
- Object.defineProperty(exports$1, "__esModule", { value: true });
1563
- exports$1.VariableReference = void 0;
1564
- var _SpelNode = __webpack_require__(0);
1565
- /**
1566
- * Represents a variable reference, eg. #someVar. Note this is different to a *local*
1567
- * variable like $someVar
1568
- *
1569
- * @author Andy Clement
1570
- * @author Ben March
1571
- * @since 0.2.0
1572
- */
1573
- function createNode(variableName, position) {
1574
- var node = _SpelNode.SpelNode.create("variable", position);
1575
- node.getRaw = function() {
1576
- return variableName;
1577
- };
1578
- node.getValue = function(state) {
1579
- var context = state.activeContext.peek(), locals = state.locals;
1580
- if (!context) throw {
1581
- name: "ContextDoesNotExistException",
1582
- message: "Attempting to look up variable '" + variableName + "' for an undefined context."
1583
- };
1584
- if (variableName === "this") return context;
1585
- if (variableName === "root") return state.rootContext;
1586
- return locals[variableName];
1587
- };
1588
- node.setValue = function(value, state) {
1589
- var locals = state.locals;
1590
- return locals[variableName] = value;
1591
- };
1592
- return node;
1593
- }
1594
- exports$1.VariableReference = { create: createNode };
1595
- }),
1596
- (function(module$1, exports$1, __webpack_require__) {
1597
- "use strict";
1598
- Object.defineProperty(exports$1, "__esModule", { value: true });
1599
- exports$1.CompoundExpression = void 0;
1600
- var _SpelNode = __webpack_require__(0);
1601
- /**
1602
- * Represents a DOT separated expression sequence, such as 'property1.property2.methodOne()'
1603
- *
1604
- * @author Andy Clement
1605
- * @author Ben March
1606
- * @since 0.2.0
1607
- */
1608
- function createNode(position, expressionComponents) {
1609
- var node = _SpelNode.SpelNode.create.apply(null, ["compound", position].concat(expressionComponents));
1610
- function buildContextStack(state) {
1611
- var childrenCount = node.getChildren().length, i;
1612
- for (i = 0; i < childrenCount; i += 1) if (node.getChildren()[i].getType() === "indexer") state.activeContext.push(state.activeContext.peek()[node.getChildren()[i].getValue(state)]);
1613
- else state.activeContext.push(node.getChildren()[i].getValue(state));
1614
- return function unbuildContextStack() {
1615
- for (i = 0; i < childrenCount; i += 1) state.activeContext.pop();
1616
- };
1617
- }
1618
- node.getValue = function(state) {
1619
- var context = state.activeContext.peek(), value;
1620
- if (!context) throw {
1621
- name: "ContextDoesNotExistException",
1622
- message: "Attempting to evaluate compound expression with an undefined context."
1623
- };
1624
- var unbuildContextStack = buildContextStack(state);
1625
- value = state.activeContext.peek();
1626
- unbuildContextStack();
1627
- return value;
1628
- };
1629
- node.setValue = function(value, state) {
1630
- var unbuildContextStack = buildContextStack(state), childCount = node.getChildren().length;
1631
- state.activeContext.pop();
1632
- value = node.getChildren()[childCount - 1].setValue(value, state);
1633
- state.activeContext.push(null);
1634
- unbuildContextStack();
1635
- return value;
1636
- };
1637
- return node;
1638
- }
1639
- exports$1.CompoundExpression = { create: createNode };
1640
- }),
1641
- (function(module$1, exports$1, __webpack_require__) {
1642
- "use strict";
1643
- Object.defineProperty(exports$1, "__esModule", { value: true });
1644
- exports$1.Indexer = void 0;
1645
- var _SpelNode = __webpack_require__(0);
1646
- var _Stack = __webpack_require__(1);
1647
- /**
1648
- * An Indexer can index into some proceeding structure to access a particular piece of it.
1649
- * Supported structures are: strings / collections (lists/sets) / arrays.
1650
- *
1651
- * @author Andy Clement
1652
- * @author Phillip Webb
1653
- * @author Stephane Nicoll
1654
- * @author Ben March
1655
- * @since 0.2.0
1656
- */
1657
- function createNode(position, expressionComponents) {
1658
- var node = _SpelNode.SpelNode.create.apply(null, ["indexer", position].concat(expressionComponents));
1659
- node.getValue = function(state) {
1660
- var activeContext = state.activeContext, context, childrenCount = node.getChildren().length, i, value;
1661
- state.activeContext = new _Stack.Stack();
1662
- state.activeContext.push(state.rootContext);
1663
- context = state.activeContext.peek();
1664
- if (!context) throw {
1665
- name: "ContextDoesNotExistException",
1666
- message: "Attempting to evaluate compound expression with an undefined context."
1667
- };
1668
- for (i = 0; i < childrenCount; i += 1) state.activeContext.push(node.getChildren()[i].getValue(state));
1669
- value = state.activeContext.peek();
1670
- for (i = 0; i < childrenCount; i += 1) state.activeContext.pop();
1671
- state.activeContext = activeContext;
1672
- return value;
1673
- };
1674
- return node;
1675
- }
1676
- exports$1.Indexer = { create: createNode };
1677
- }),
1678
- (function(module$1, exports$1, __webpack_require__) {
1679
- "use strict";
1680
- Object.defineProperty(exports$1, "__esModule", { value: true });
1681
- exports$1.Assign = void 0;
1682
- var _SpelNode = __webpack_require__(0);
1683
- /**
1684
- * Represents assignment. An alternative to calling setValue() for an expression is to use
1685
- * an assign.
1686
- *
1687
- * <p>Example: 'someNumberProperty=42'
1688
- *
1689
- * @author Andy Clement
1690
- * @author Ben March
1691
- * @since 0.2.0
1692
- */
1693
- function createNode(position, property, assignedValue) {
1694
- var node = _SpelNode.SpelNode.create("assign", position, property, assignedValue);
1695
- node.getValue = function(state) {
1696
- if (!state.activeContext.peek()) throw {
1697
- name: "ContextDoesNotExistException",
1698
- message: "Attempting to assign property '" + property.getValue(state) + "' for an undefined context."
1699
- };
1700
- return property.setValue(assignedValue.getValue(state), state);
1701
- };
1702
- return node;
1703
- }
1704
- exports$1.Assign = { create: createNode };
1705
- }),
1706
- (function(module$1, exports$1, __webpack_require__) {
1707
- "use strict";
1708
- Object.defineProperty(exports$1, "__esModule", { value: true });
1709
- exports$1.OpEQ = void 0;
1710
- var _SpelNode = __webpack_require__(0);
1711
- /**
1712
- * Implements the equality operator.
1713
- *
1714
- * @author Andy Clement
1715
- * @author Ben March
1716
- * @since 0.2.0
1717
- */
1718
- function createNode(position, left, right) {
1719
- var node = _SpelNode.SpelNode.create("op-eq", position, left, right);
1720
- node.getValue = function(state) {
1721
- return left.getValue(state) === right.getValue(state);
1722
- };
1723
- return node;
1724
- }
1725
- exports$1.OpEQ = { create: createNode };
1726
- }),
1727
- (function(module$1, exports$1, __webpack_require__) {
1728
- "use strict";
1729
- Object.defineProperty(exports$1, "__esModule", { value: true });
1730
- exports$1.OpNE = void 0;
1731
- var _SpelNode = __webpack_require__(0);
1732
- /**
1733
- * Implements the not-equal operator.
1734
- *
1735
- * @author Andy Clement
1736
- * @author Ben March
1737
- * @since 0.2.0
1738
- */
1739
- function createNode(position, left, right) {
1740
- var node = _SpelNode.SpelNode.create("op-ne", position, left, right);
1741
- node.getValue = function(state) {
1742
- return left.getValue(state) !== right.getValue(state);
1743
- };
1744
- return node;
1745
- }
1746
- exports$1.OpNE = { create: createNode };
1747
- }),
1748
- (function(module$1, exports$1, __webpack_require__) {
1749
- "use strict";
1750
- Object.defineProperty(exports$1, "__esModule", { value: true });
1751
- exports$1.OpGE = void 0;
1752
- var _SpelNode = __webpack_require__(0);
1753
- /**
1754
- * Implements greater-than-or-equal operator.
1755
- *
1756
- * @author Andy Clement
1757
- * @author Juergen Hoeller
1758
- * @author Giovanni Dall'Oglio Risso
1759
- * @author Ben March
1760
- * @since 0.2.0
1761
- */
1762
- function createNode(position, left, right) {
1763
- var node = _SpelNode.SpelNode.create("op-ge", position, left, right);
1764
- node.getValue = function(state) {
1765
- return left.getValue(state) >= right.getValue(state);
1766
- };
1767
- return node;
1768
- }
1769
- exports$1.OpGE = { create: createNode };
1770
- }),
1771
- (function(module$1, exports$1, __webpack_require__) {
1772
- "use strict";
1773
- Object.defineProperty(exports$1, "__esModule", { value: true });
1774
- exports$1.OpGT = void 0;
1775
- var _SpelNode = __webpack_require__(0);
1776
- /**
1777
- * Implements the greater-than operator.
1778
- *
1779
- * @author Andy Clement
1780
- * @author Juergen Hoeller
1781
- * @author Giovanni Dall'Oglio Risso
1782
- * @author Ben March
1783
- * @since 0.2.0
1784
- */
1785
- function createNode(position, left, right) {
1786
- var node = _SpelNode.SpelNode.create("op-gt", position, left, right);
1787
- node.getValue = function(state) {
1788
- return left.getValue(state) > right.getValue(state);
1789
- };
1790
- return node;
1791
- }
1792
- exports$1.OpGT = { create: createNode };
1793
- }),
1794
- (function(module$1, exports$1, __webpack_require__) {
1795
- "use strict";
1796
- Object.defineProperty(exports$1, "__esModule", { value: true });
1797
- exports$1.OpLE = void 0;
1798
- var _SpelNode = __webpack_require__(0);
1799
- /**
1800
- * Implements the less-than-or-equal operator.
1801
- *
1802
- * @author Andy Clement
1803
- * @author Juergen Hoeller
1804
- * @author Giovanni Dall'Oglio Risso
1805
- * @author Ben March
1806
- * @since 0.2.0
1807
- */
1808
- function createNode(position, left, right) {
1809
- var node = _SpelNode.SpelNode.create("op-le", position, left, right);
1810
- node.getValue = function(state) {
1811
- return left.getValue(state) <= right.getValue(state);
1812
- };
1813
- return node;
1814
- }
1815
- exports$1.OpLE = { create: createNode };
1816
- }),
1817
- (function(module$1, exports$1, __webpack_require__) {
1818
- "use strict";
1819
- Object.defineProperty(exports$1, "__esModule", { value: true });
1820
- exports$1.OpLT = void 0;
1821
- var _SpelNode = __webpack_require__(0);
1822
- /**
1823
- * Implements the less-than operator.
1824
- *
1825
- * @author Andy Clement
1826
- * @author Juergen Hoeller
1827
- * @author Giovanni Dall'Oglio Risso
1828
- * @author Ben March
1829
- * @since 0.2.0
1830
- */
1831
- function createNode(position, left, right) {
1832
- var node = _SpelNode.SpelNode.create("op-lt", position, left, right);
1833
- node.getValue = function(state) {
1834
- return left.getValue(state) < right.getValue(state);
1835
- };
1836
- return node;
1837
- }
1838
- exports$1.OpLT = { create: createNode };
1839
- }),
1840
- (function(module$1, exports$1, __webpack_require__) {
1841
- "use strict";
1842
- Object.defineProperty(exports$1, "__esModule", { value: true });
1843
- exports$1.OpPlus = void 0;
1844
- var _SpelNode = __webpack_require__(0);
1845
- /**
1846
- * The plus operator will:
1847
- * <ul>
1848
- * <li>add numbers
1849
- * <li>concatenate strings
1850
- * </ul>
1851
- *
1852
- * <p>It can be used as a unary operator for numbers.
1853
- * The standard promotions are performed when the operand types vary (double+int=double).
1854
- * For other options it defers to the registered overloader.
1855
- *
1856
- * @author Andy Clement
1857
- * @author Juergen Hoeller
1858
- * @author Ivo Smid
1859
- * @author Giovanni Dall'Oglio Risso
1860
- * @author Ben March
1861
- * @since 0.2.0
1862
- */
1863
- function createNode(position, left, right) {
1864
- var node = _SpelNode.SpelNode.create("op-plus", position, left, right);
1865
- node.getValue = function(state) {
1866
- if (!right) return +left.getValue(state);
1867
- return left.getValue(state) + right.getValue(state);
1868
- };
1869
- return node;
1870
- }
1871
- exports$1.OpPlus = { create: createNode };
1872
- }),
1873
- (function(module$1, exports$1, __webpack_require__) {
1874
- "use strict";
1875
- Object.defineProperty(exports$1, "__esModule", { value: true });
1876
- exports$1.OpMinus = void 0;
1877
- var _SpelNode = __webpack_require__(0);
1878
- /**
1879
- * The minus operator supports:
1880
- * <ul>
1881
- * <li>subtraction of numbers
1882
- * <li>subtraction of an int from a string of one character
1883
- * (effectively decreasing that character), so 'd'-3='a'
1884
- * </ul>
1885
- *
1886
- * <p>It can be used as a unary operator for numbers.
1887
- * The standard promotions are performed when the operand types vary (double-int=double).
1888
- * For other options it defers to the registered overloader.
1889
- *
1890
- * @author Andy Clement
1891
- * @author Juergen Hoeller
1892
- * @author Giovanni Dall'Oglio Risso
1893
- * @author Ben March
1894
- * @since 0.2.0
1895
- */
1896
- function createNode(position, left, right) {
1897
- var node = _SpelNode.SpelNode.create("op-minus", position, left, right);
1898
- node.getValue = function(state) {
1899
- if (!right) return -left.getValue(state);
1900
- return left.getValue(state) - right.getValue(state);
1901
- };
1902
- return node;
1903
- }
1904
- exports$1.OpMinus = { create: createNode };
1905
- }),
1906
- (function(module$1, exports$1, __webpack_require__) {
1907
- "use strict";
1908
- Object.defineProperty(exports$1, "__esModule", { value: true });
1909
- exports$1.OpMultiply = void 0;
1910
- var _SpelNode = __webpack_require__(0);
1911
- /**
1912
- * Implements the {@code multiply} operator.
1913
- *
1914
- * <p>Conversions and promotions are handled as defined in
1915
- * <a href="http://java.sun.com/docs/books/jls/third_edition/html/conversions.html">Section 5.6.2 of the
1916
- * Java Language Specification</a>, with the addiction of {@code BigDecimal}/{@code BigInteger} management:
1917
- *
1918
- * <p>If any of the operands is of a reference type, unboxing conversion (Section 5.1.8)
1919
- * is performed. Then:<br>
1920
- * If either operand is of type {@code BigDecimal}, the other is converted to {@code BigDecimal}.<br>
1921
- * If either operand is of type double, the other is converted to double.<br>
1922
- * Otherwise, if either operand is of type float, the other is converted to float.<br>
1923
- * If either operand is of type {@code BigInteger}, the other is converted to {@code BigInteger}.<br>
1924
- * Otherwise, if either operand is of type long, the other is converted to long.<br>
1925
- * Otherwise, both operands are converted to type int.
1926
- *
1927
- * @author Andy Clement
1928
- * @author Juergen Hoeller
1929
- * @author Sam Brannen
1930
- * @author Giovanni Dall'Oglio Risso
1931
- * @author Ben March
1932
- * @since 0.2.0
1933
- */
1934
- function createNode(position, left, right) {
1935
- var node = _SpelNode.SpelNode.create("op-multiply", position, left, right);
1936
- node.getValue = function(state) {
1937
- var leftValue = left.getValue(state), rightValue = right.getValue(state);
1938
- if (typeof leftValue === "number" && typeof rightValue === "number") return leftValue * rightValue;
1939
- if (typeof leftValue === "string" && typeof rightValue === "number") {
1940
- var s = "", i = 0;
1941
- for (; i < rightValue; i += 1) s += leftValue;
1942
- return s;
1943
- }
1944
- return null;
1945
- };
1946
- return node;
1947
- }
1948
- exports$1.OpMultiply = { create: createNode };
1949
- }),
1950
- (function(module$1, exports$1, __webpack_require__) {
1951
- "use strict";
1952
- Object.defineProperty(exports$1, "__esModule", { value: true });
1953
- exports$1.OpDivide = void 0;
1954
- var _SpelNode = __webpack_require__(0);
1955
- /**
1956
- * Implements division operator.
1957
- *
1958
- * @author Andy Clement
1959
- * @author Juergen Hoeller
1960
- * @author Giovanni Dall'Oglio Risso
1961
- * @author Ben March
1962
- * @since 0.2.0
1963
- */
1964
- function createNode(position, left, right) {
1965
- var node = _SpelNode.SpelNode.create("op-divide", position, left, right);
1966
- node.getValue = function(state) {
1967
- return left.getValue(state) / right.getValue(state);
1968
- };
1969
- return node;
1970
- }
1971
- exports$1.OpDivide = { create: createNode };
1972
- }),
1973
- (function(module$1, exports$1, __webpack_require__) {
1974
- "use strict";
1975
- Object.defineProperty(exports$1, "__esModule", { value: true });
1976
- exports$1.OpModulus = void 0;
1977
- var _SpelNode = __webpack_require__(0);
1978
- /**
1979
- * Implements the modulus operator.
1980
- *
1981
- * @author Andy Clement
1982
- * @author Juergen Hoeller
1983
- * @author Giovanni Dall'Oglio Risso
1984
- * @author Ben March
1985
- * @since 0.2.0
1986
- */
1987
- function createNode(position, left, right) {
1988
- var node = _SpelNode.SpelNode.create("op-modulus", position, left, right);
1989
- node.getValue = function(state) {
1990
- return left.getValue(state) % right.getValue(state);
1991
- };
1992
- return node;
1993
- }
1994
- exports$1.OpModulus = { create: createNode };
1995
- }),
1996
- (function(module$1, exports$1, __webpack_require__) {
1997
- "use strict";
1998
- Object.defineProperty(exports$1, "__esModule", { value: true });
1999
- exports$1.OpPower = void 0;
2000
- var _SpelNode = __webpack_require__(0);
2001
- /**
2002
- * The power operator.
2003
- *
2004
- * @author Andy Clement
2005
- * @author Giovanni Dall'Oglio Risso
2006
- * @author Ben March
2007
- * @since 0.2.0
2008
- */
2009
- function createNode(position, base, exp) {
2010
- var node = _SpelNode.SpelNode.create("op-power", position, base, exp);
2011
- node.getValue = function(state) {
2012
- return Math.pow(base.getValue(state), exp.getValue(state));
2013
- };
2014
- return node;
2015
- }
2016
- exports$1.OpPower = { create: createNode };
2017
- }),
2018
- (function(module$1, exports$1, __webpack_require__) {
2019
- "use strict";
2020
- Object.defineProperty(exports$1, "__esModule", { value: true });
2021
- exports$1.OpInc = void 0;
2022
- var _SpelNode = __webpack_require__(0);
2023
- /**
2024
- * Increment operator. Can be used in a prefix or postfix form. This will throw
2025
- * appropriate exceptions if the operand in question does not support increment.
2026
- *
2027
- * @author Andy Clement
2028
- * @author Juergen Hoeller
2029
- * @author Giovanni Dall'Oglio Risso
2030
- * @author Ben March
2031
- * @since 0.2.0
2032
- */
2033
- function createNode(position, postfix, int) {
2034
- var node = _SpelNode.SpelNode.create("op-inc", position, int);
2035
- node.getValue = function(state) {
2036
- var cur = int.getValue(state);
2037
- int.setValue(cur + 1, state);
2038
- if (postfix) return cur;
2039
- return cur + 1;
2040
- };
2041
- return node;
2042
- }
2043
- exports$1.OpInc = { create: createNode };
2044
- }),
2045
- (function(module$1, exports$1, __webpack_require__) {
2046
- "use strict";
2047
- Object.defineProperty(exports$1, "__esModule", { value: true });
2048
- exports$1.OpDec = void 0;
2049
- var _SpelNode = __webpack_require__(0);
2050
- /**
2051
- * Decrement operator. Can be used in a prefix or postfix form. This will throw
2052
- * appropriate exceptions if the operand in question does not support decrement.
2053
- *
2054
- * @author Andy Clement
2055
- * @author Juergen Hoeller
2056
- * @author Giovanni Dall'Oglio Risso
2057
- * @author Ben March
2058
- * @since 0.2.0
2059
- */
2060
- function createNode(position, postfix, int) {
2061
- var node = _SpelNode.SpelNode.create("op-dec", position, int);
2062
- node.getValue = function(state) {
2063
- var cur = int.getValue(state);
2064
- int.setValue(cur - 1, state);
2065
- if (postfix) return cur;
2066
- return cur - 1;
2067
- };
2068
- return node;
2069
- }
2070
- exports$1.OpDec = { create: createNode };
2071
- }),
2072
- (function(module$1, exports$1, __webpack_require__) {
2073
- "use strict";
2074
- Object.defineProperty(exports$1, "__esModule", { value: true });
2075
- exports$1.OpNot = void 0;
2076
- var _SpelNode = __webpack_require__(0);
2077
- /**
2078
- * Represents a NOT operation.
2079
- *
2080
- * @author Andy Clement
2081
- * @author Mark Fisher
2082
- * @author Oliver Becker
2083
- * @author Ben March
2084
- * @since 0.2.0
2085
- */
2086
- function createNode(position, expr) {
2087
- var node = _SpelNode.SpelNode.create("op-not", position, expr);
2088
- node.getValue = function(state) {
2089
- return !expr.getValue(state);
2090
- };
2091
- return node;
2092
- }
2093
- exports$1.OpNot = { create: createNode };
2094
- }),
2095
- (function(module$1, exports$1, __webpack_require__) {
2096
- "use strict";
2097
- Object.defineProperty(exports$1, "__esModule", { value: true });
2098
- exports$1.OpAnd = void 0;
2099
- var _SpelNode = __webpack_require__(0);
2100
- /**
2101
- * Represents the boolean AND operation.
2102
- *
2103
- * @author Andy Clement
2104
- * @author Mark Fisher
2105
- * @author Oliver Becker
2106
- * @author Ben March
2107
- * @since 0.2.0
2108
- */
2109
- function createNode(position, left, right) {
2110
- var node = _SpelNode.SpelNode.create("op-and", position, left, right);
2111
- node.getValue = function(state) {
2112
- return !!left.getValue(state) && !!right.getValue(state);
2113
- };
2114
- return node;
2115
- }
2116
- exports$1.OpAnd = { create: createNode };
2117
- }),
2118
- (function(module$1, exports$1, __webpack_require__) {
2119
- "use strict";
2120
- Object.defineProperty(exports$1, "__esModule", { value: true });
2121
- exports$1.OpOr = void 0;
2122
- var _SpelNode = __webpack_require__(0);
2123
- /**
2124
- * Represents the boolean OR operation.
2125
- *
2126
- * @author Andy Clement
2127
- * @author Mark Fisher
2128
- * @author Oliver Becker
2129
- * @author Ben March
2130
- * @since 0.2.0
2131
- */
2132
- function createNode(position, left, right) {
2133
- var node = _SpelNode.SpelNode.create("op-or", position, left, right);
2134
- node.getValue = function(state) {
2135
- return !!left.getValue(state) || !!right.getValue(state);
2136
- };
2137
- return node;
2138
- }
2139
- exports$1.OpOr = { create: createNode };
2140
- }),
2141
- (function(module$1, exports$1, __webpack_require__) {
2142
- "use strict";
2143
- Object.defineProperty(exports$1, "__esModule", { value: true });
2144
- exports$1.OpMatches = void 0;
2145
- var _SpelNode = __webpack_require__(0);
2146
- /**
2147
- * Implements the matches operator. Matches takes two operands:
2148
- * The first is a String and the second is a Java regex.
2149
- * It will return {@code true} when {@link #getValue} is called
2150
- * if the first operand matches the regex.
2151
- *
2152
- * @author Andy Clement
2153
- * @author Juergen Hoeller
2154
- * @author Chris Thielen
2155
- * @since 3.0
2156
- */
2157
- function createNode(position, left, right) {
2158
- var node = _SpelNode.SpelNode.create("matches", position, left, right);
2159
- /**
2160
- * Check the first operand matches the regex specified as the second operand.
2161
- * @param state the expression state
2162
- * @return {@code true} if the first operand matches the regex specified as the
2163
- * second operand, otherwise {@code false}
2164
- * @throws EvaluationException if there is a problem evaluating the expression
2165
- * (e.g. the regex is invalid)
2166
- */
2167
- node.getValue = function(state) {
2168
- var data = left.getValue(state);
2169
- var regexpString = right.getValue(state);
2170
- try {
2171
- return !!new RegExp(regexpString).exec(data);
2172
- } catch (error) {
2173
- throw {
2174
- name: "EvaluationException",
2175
- message: error.toString()
2176
- };
2177
- }
2178
- };
2179
- return node;
2180
- }
2181
- exports$1.OpMatches = { create: createNode };
2182
- }),
2183
- (function(module$1, exports$1, __webpack_require__) {
2184
- "use strict";
2185
- Object.defineProperty(exports$1, "__esModule", { value: true });
2186
- exports$1.Ternary = void 0;
2187
- var _SpelNode = __webpack_require__(0);
2188
- /**
2189
- * Represents a ternary expression, for example: "someCheck()?true:false".
2190
- *
2191
- * @author Andy Clement
2192
- * @author Juergen Hoeller
2193
- * @author Ben March
2194
- * @since 0.2.0
2195
- */
2196
- function createNode(position, expression, ifTrue, ifFalse) {
2197
- var node = _SpelNode.SpelNode.create("ternary", position, expression, ifTrue, ifFalse);
2198
- node.getValue = function(state) {
2199
- return expression.getValue(state) ? ifTrue.getValue(state) : ifFalse.getValue(state);
2200
- };
2201
- return node;
2202
- }
2203
- exports$1.Ternary = { create: createNode };
2204
- }),
2205
- (function(module$1, exports$1, __webpack_require__) {
2206
- "use strict";
2207
- Object.defineProperty(exports$1, "__esModule", { value: true });
2208
- exports$1.Elvis = void 0;
2209
- var _SpelNode = __webpack_require__(0);
2210
- /**
2211
- * Represents the elvis operator ?:. For an expression "a?:b" if a is not null, the value
2212
- * of the expression is "a", if a is null then the value of the expression is "b".
2213
- *
2214
- * @author Andy Clement
2215
- * @author Juergen Hoeller
2216
- * @author Ben March
2217
- * @since 0.2.0
2218
- */
2219
- function createNode(position, expression, ifFalse) {
2220
- var node = _SpelNode.SpelNode.create("elvis", position, expression, ifFalse);
2221
- node.getValue = function(state) {
2222
- return expression.getValue(state) !== null ? expression.getValue(state) : ifFalse.getValue(state);
2223
- };
2224
- return node;
2225
- }
2226
- exports$1.Elvis = { create: createNode };
2227
- }),
2228
- (function(module$1, exports$1, __webpack_require__) {
2229
- "use strict";
2230
- Object.defineProperty(exports$1, "__esModule", { value: true });
2231
- exports$1.InlineList = void 0;
2232
- var _SpelNode = __webpack_require__(0);
2233
- /**
2234
- * Represent a list in an expression, e.g. '{1,2,3}'
2235
- *
2236
- * @author Andy Clement
2237
- * @author Ben March
2238
- * @since 0.2.0
2239
- */
2240
- function createNode(position, elements) {
2241
- var node = _SpelNode.SpelNode.create("list", position), list = [].concat(elements || []);
2242
- node.getRaw = function() {
2243
- return list;
2244
- };
2245
- node.getValue = function(state) {
2246
- return list.map(function(element) {
2247
- return element.getValue(state);
2248
- });
2249
- };
2250
- return node;
2251
- }
2252
- exports$1.InlineList = { create: createNode };
2253
- }),
2254
- (function(module$1, exports$1, __webpack_require__) {
2255
- "use strict";
2256
- Object.defineProperty(exports$1, "__esModule", { value: true });
2257
- exports$1.InlineMap = void 0;
2258
- var _SpelNode = __webpack_require__(0);
2259
- /**
2260
- * Represent a map in an expression, e.g. '{name:'foo',age:12}'
2261
- *
2262
- * @author Andy Clement
2263
- * @author Ben March
2264
- * @since 0.2.0
2265
- */
2266
- function createNode(position, elements) {
2267
- var node = _SpelNode.SpelNode.create("map", position), mapPieces = [].concat(elements || []);
2268
- node.getValue = function(state) {
2269
- var key = true, keyValue = null, map = {};
2270
- mapPieces.forEach(function(piece) {
2271
- if (key) if (piece.getType() === "property") keyValue = piece.getName();
2272
- else keyValue = piece.getValue(state);
2273
- else map[keyValue] = piece.getValue(state);
2274
- key = !key;
2275
- });
2276
- return map;
2277
- };
2278
- return node;
2279
- }
2280
- exports$1.InlineMap = { create: createNode };
2281
- }),
2282
- (function(module$1, exports$1, __webpack_require__) {
2283
- "use strict";
2284
- Object.defineProperty(exports$1, "__esModule", { value: true });
2285
- exports$1.Selection = void 0;
2286
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
2287
- return typeof obj;
2288
- } : function(obj) {
2289
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
2290
- };
2291
- var _SpelNode = __webpack_require__(0);
2292
- /**
2293
- * Represents selection over a map or collection.
2294
- * For example: {1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'} returns [2, 4, 6, 8, 10]
2295
- *
2296
- * <p>Basically a subset of the input data is returned based on the
2297
- * evaluation of the expression supplied as selection criteria.
2298
- *
2299
- * @author Andy Clement
2300
- * @author Mark Fisher
2301
- * @author Sam Brannen
2302
- * @author Ben March
2303
- * @since 0.2.0
2304
- */
2305
- function matches(element, expr, state) {
2306
- var doesMatch = false;
2307
- state.activeContext.push(element);
2308
- doesMatch = expr.getValue(state);
2309
- state.activeContext.pop();
2310
- return doesMatch;
2311
- }
2312
- function selectFromArray(collection, whichElement, expr, state) {
2313
- var newCollection = collection.filter(function(element) {
2314
- return matches(element, expr, state);
2315
- });
2316
- switch (whichElement) {
2317
- case "ALL": return newCollection;
2318
- case "FIRST": return newCollection[0] || null;
2319
- case "LAST":
2320
- if (newCollection.length) return newCollection[newCollection.length - 1];
2321
- return null;
2322
- }
2323
- }
2324
- function selectFromMap(collection, whichElement, expr, state) {
2325
- var newCollection = {}, entry, key, entries = [], returnValue = {};
2326
- for (key in collection) if (collection.hasOwnProperty(key)) {
2327
- entry = {
2328
- key,
2329
- value: collection[key]
2330
- };
2331
- if (matches(entry, expr, state)) entries.push(entry);
2332
- }
2333
- switch (whichElement) {
2334
- case "ALL":
2335
- entries.forEach(function(entry$1) {
2336
- newCollection[entry$1.key] = entry$1.value;
2337
- });
2338
- return newCollection;
2339
- case "FIRST":
2340
- if (entries.length) {
2341
- returnValue[entries[0].key] = entries[0].value;
2342
- return returnValue;
2343
- }
2344
- return null;
2345
- case "LAST":
2346
- if (entries.length) {
2347
- returnValue[entries[entries.length - 1].key] = entries[entries.length - 1].value;
2348
- return returnValue;
2349
- }
2350
- return null;
2351
- }
2352
- entries.forEach(function(entry$1) {
2353
- newCollection[entry$1.key] = entry$1.value;
2354
- });
2355
- }
2356
- function createNode(nullSafeNavigation, whichElement, position, expr) {
2357
- var node = _SpelNode.SpelNode.create("selection", position, expr);
2358
- node.getValue = function(state) {
2359
- var collection = state.activeContext.peek();
2360
- if (collection) {
2361
- if (Array.isArray(collection)) return selectFromArray(collection, whichElement, expr, state);
2362
- else if ((typeof collection === "undefined" ? "undefined" : _typeof(collection)) === "object") return selectFromMap(collection, whichElement, expr, state);
2363
- }
2364
- return null;
2365
- };
2366
- return node;
2367
- }
2368
- exports$1.Selection = {
2369
- create: createNode,
2370
- FIRST: "FIRST",
2371
- LAST: "LAST",
2372
- ALL: "ALL"
2373
- };
2374
- }),
2375
- (function(module$1, exports$1, __webpack_require__) {
2376
- "use strict";
2377
- Object.defineProperty(exports$1, "__esModule", { value: true });
2378
- exports$1.Projection = void 0;
2379
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
2380
- return typeof obj;
2381
- } : function(obj) {
2382
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
2383
- };
2384
- var _SpelNode = __webpack_require__(0);
2385
- /**
2386
- * Represents projection, where a given operation is performed on all elements in some
2387
- * input sequence, returning a new sequence of the same size. For example:
2388
- * "{1,2,3,4,5,6,7,8,9,10}.!{#isEven(#this)}" returns "[n, y, n, y, n, y, n, y, n, y]"
2389
- *
2390
- * @author Andy Clement
2391
- * @author Mark Fisher
2392
- * @author Ben March
2393
- * @since 0.2.0
2394
- */
2395
- function projectCollection(collection, expr, state) {
2396
- return collection.map(function(element) {
2397
- var matches;
2398
- state.activeContext.push(element);
2399
- matches = expr.getValue(state);
2400
- state.activeContext.pop();
2401
- return matches;
2402
- });
2403
- }
2404
- function createNode(nullSafeNavigation, position, expr) {
2405
- var node = _SpelNode.SpelNode.create("projection", position, expr);
2406
- node.getValue = function(state) {
2407
- var collection = state.activeContext.peek(), entries = [], key;
2408
- if (Array.isArray(collection)) return projectCollection(collection, expr, state);
2409
- else if ((typeof collection === "undefined" ? "undefined" : _typeof(collection)) === "object") {
2410
- for (key in collection) if (collection.hasOwnProperty(key)) entries.push(collection[key]);
2411
- return projectCollection(entries, expr, state);
2412
- }
2413
- return null;
2414
- };
2415
- return node;
2416
- }
2417
- exports$1.Projection = { create: createNode };
2418
- }),
2419
- (function(module$1, exports$1, __webpack_require__) {
2420
- "use strict";
2421
- Object.defineProperty(exports$1, "__esModule", { value: true });
2422
- exports$1.OpInstanceof = void 0;
2423
- var _SpelNode = __webpack_require__(0);
2424
- /**
2425
- * The operator 'instanceof' checks if an object is of the class specified in the right
2426
- * hand operand, in the same way that {@code instanceof} does in Java.
2427
- *
2428
- * THIS OPERATOR IS NOT IMPLEMENTED AND WILL THROW AN EXCEPTION
2429
- *
2430
- * @author Andy Clement
2431
- * @since 3.0
2432
- */
2433
- function createNode(position, left, right) {
2434
- var node = _SpelNode.SpelNode.create("instanceof", position, left, right);
2435
- /**
2436
- * Compare the left operand to see it is an instance of the type specified as the
2437
- * right operand. The right operand must be a class.
2438
- * @param state the expression state
2439
- * @return {@code true} if the left operand is an instanceof of the right operand,
2440
- * otherwise {@code false}
2441
- * @throws EvaluationException if there is a problem evaluating the expression
2442
- */
2443
- node.getValue = function(state) {
2444
- throw {
2445
- name: "MethodNotImplementedException",
2446
- message: "OpInstanceOf: Not implemented"
2447
- };
2448
- };
2449
- return node;
2450
- }
2451
- exports$1.OpInstanceof = { create: createNode };
2452
- }),
2453
- (function(module$1, exports$1, __webpack_require__) {
2454
- "use strict";
2455
- Object.defineProperty(exports$1, "__esModule", { value: true });
2456
- exports$1.OpBetween = void 0;
2457
- var _SpelNode = __webpack_require__(0);
2458
- /**
2459
- * Represents the between operator. The left operand to between must be a single value and
2460
- * the right operand must be a list - this operator returns true if the left operand is
2461
- * between (using the registered comparator) the two elements in the list. The definition
2462
- * of between being inclusive follows the SQL BETWEEN definition.
2463
- *
2464
- * @author Andy Clement
2465
- * @since 3.0
2466
- */
2467
- function createNode(position, left, right) {
2468
- var node = _SpelNode.SpelNode.create("between", position, left, right);
2469
- /**
2470
- * Returns a boolean based on whether a value is in the range expressed. The first
2471
- * operand is any value whilst the second is a list of two values - those two values
2472
- * being the bounds allowed for the first operand (inclusive).
2473
- * @param state the expression state
2474
- * @return true if the left operand is in the range specified, false otherwise
2475
- * @throws EvaluationException if there is a problem evaluating the expression
2476
- */
2477
- node.getValue = function(state) {
2478
- throw {
2479
- name: "MethodNotImplementedException",
2480
- message: "OpBetween: Not implemented"
2481
- };
2482
- };
2483
- return node;
2484
- }
2485
- exports$1.OpBetween = { create: createNode };
2486
- }),
2487
- (function(module$1, exports$1, __webpack_require__) {
2488
- "use strict";
2489
- Object.defineProperty(exports$1, "__esModule", { value: true });
2490
- exports$1.TypeReference = void 0;
2491
- var _SpelNode = __webpack_require__(0);
2492
- /**
2493
- * Represents a reference to a type, for example
2494
- * {@code "T(String)" or "T(com.somewhere.Foo)"}.
2495
- *
2496
- * @author Andy Clement
2497
- */
2498
- function createNode(position, node, _dims) {
2499
- var node = _SpelNode.SpelNode.create("typeref", position, node);
2500
- node.getValue = function(state) {
2501
- throw {
2502
- name: "MethodNotImplementedException",
2503
- message: "TypeReference: Not implemented"
2504
- };
2505
- };
2506
- return node;
2507
- }
2508
- exports$1.TypeReference = { create: createNode };
2509
- }),
2510
- (function(module$1, exports$1, __webpack_require__) {
2511
- "use strict";
2512
- Object.defineProperty(exports$1, "__esModule", { value: true });
2513
- exports$1.BeanReference = void 0;
2514
- var _SpelNode = __webpack_require__(0);
2515
- /**
2516
- * Represents a bean reference to a type, for example <tt>@foo</tt> or <tt>@'foo.bar'</tt>.
2517
- * For a FactoryBean the syntax <tt>&foo</tt> can be used to access the factory itself.
2518
- *
2519
- * @author Andy Clement
2520
- */
2521
- function createNode(position, beanName) {
2522
- var node = _SpelNode.SpelNode.create("beanref", position);
2523
- node.getValue = function(state) {
2524
- throw {
2525
- name: "MethodNotImplementedException",
2526
- message: "BeanReference: Not implemented"
2527
- };
2528
- };
2529
- return node;
2530
- }
2531
- exports$1.BeanReference = { create: createNode };
2532
- }),
2533
- (function(module$1, exports$1, __webpack_require__) {
2534
- "use strict";
2535
- Object.defineProperty(exports$1, "__esModule", { value: true });
2536
- exports$1.Identifier = void 0;
2537
- var _SpelNode = __webpack_require__(0);
2538
- /**
2539
- * An 'identifier' {@link SpelNode}.
2540
- *
2541
- * @author Andy Clement
2542
- * @since 3.0
2543
- */
2544
- function createNode(identifierName, position) {
2545
- var node = _SpelNode.SpelNode.create("identifier", position);
2546
- node.getRaw = function() {
2547
- return identifierName;
2548
- };
2549
- node.getValue = function(state) {
2550
- throw {
2551
- name: "MethodNotImplementedException",
2552
- message: "Identifier: Not implemented"
2553
- };
2554
- };
2555
- return node;
2556
- }
2557
- exports$1.Identifier = { create: createNode };
2558
- }),
2559
- (function(module$1, exports$1, __webpack_require__) {
2560
- "use strict";
2561
- Object.defineProperty(exports$1, "__esModule", { value: true });
2562
- exports$1.QualifiedIdentifier = void 0;
2563
- var _SpelNode = __webpack_require__(0);
2564
- function _toConsumableArray(arr) {
2565
- if (Array.isArray(arr)) {
2566
- for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
2567
- return arr2;
2568
- } else return Array.from(arr);
2569
- }
2570
- /**
2571
- * Represents a dot separated sequence of strings that indicate a package qualified type
2572
- * reference.
2573
- *
2574
- * <p>Example: "java.lang.String" as in the expression "new java.lang.String('hello')"
2575
- *
2576
- * @author Andy Clement
2577
- * @since 3.0
2578
- */
2579
- function createNode(position, pieces) {
2580
- var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ["qualifiedidentifier", position].concat(_toConsumableArray(pieces)));
2581
- node.getRaw = function() {
2582
- return pieces.map(function(p) {
2583
- return p.getRaw();
2584
- });
2585
- };
2586
- node.getValue = function(state) {
2587
- throw {
2588
- name: "MethodNotImplementedException",
2589
- message: "QualifiedIdentifier: Not implemented"
2590
- };
2591
- };
2592
- return node;
2593
- }
2594
- exports$1.QualifiedIdentifier = { create: createNode };
2595
- }),
2596
- (function(module$1, exports$1, __webpack_require__) {
2597
- "use strict";
2598
- Object.defineProperty(exports$1, "__esModule", { value: true });
2599
- exports$1.ConstructorReference = void 0;
2600
- var _SpelNode = __webpack_require__(0);
2601
- var _Stack = __webpack_require__(1);
2602
- function _toConsumableArray(arr) {
2603
- if (Array.isArray(arr)) {
2604
- for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
2605
- return arr2;
2606
- } else return Array.from(arr);
2607
- }
2608
- function _toArray(arr) {
2609
- return Array.isArray(arr) ? arr : Array.from(arr);
2610
- }
2611
- /**
2612
- * Represents the invocation of a constructor. Either a constructor on a regular type or
2613
- * construction of an array. When an array is constructed, an initializer can be specified.
2614
- *
2615
- * <p>Examples:<br>
2616
- * new String('hello world')<br>
2617
- * new int[]{1,2,3,4}<br>
2618
- * new int[3] new int[3]{1,2,3}
2619
- *
2620
- * @author Andy Clement
2621
- * @author Juergen Hoeller
2622
- * @since 3.0
2623
- */
2624
- function createNode(position, dimensions, nodes) {
2625
- var isArray = nodes !== void 0;
2626
- var dimension;
2627
- if (isArray) dimension = dimensions.length && dimensions[0] && dimensions[0].getType() === "number" ? dimensions[0].getValue() : null;
2628
- else {
2629
- nodes = dimensions;
2630
- dimensions = void 0;
2631
- }
2632
- var _nodes2 = _toArray(nodes);
2633
- _nodes2[0];
2634
- var args = _nodes2.slice(1);
2635
- var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ["constructorref", position].concat(_toConsumableArray(nodes)));
2636
- node.getRaw = function() {
2637
- return dimension;
2638
- };
2639
- node.getValue = function(state) {
2640
- if (isArray && args.length <= 1) {
2641
- var compiledArgs = [];
2642
- args.forEach(function(arg) {
2643
- var currentActiveContext = state.activeContext;
2644
- state.activeContext = new _Stack.Stack();
2645
- state.activeContext.push(state.rootContext);
2646
- compiledArgs.push(arg.getValue(state));
2647
- state.activeContext = currentActiveContext;
2648
- });
2649
- if (args.length === 1) return compiledArgs[0];
2650
- else return dimension ? new Array(dimension) : [];
2651
- }
2652
- throw {
2653
- name: "MethodNotImplementedException",
2654
- message: "ConstructorReference: Not implemented"
2655
- };
2656
- };
2657
- return node;
2658
- }
2659
- exports$1.ConstructorReference = { create: createNode };
2660
- }),
2661
- (function(module$1, exports$1, __webpack_require__) {
2662
- "use strict";
2663
- Object.defineProperty(exports$1, "__esModule", { value: true });
2664
- /**
2665
- * @author Ben March
2666
- * @since 0.2.0
2667
- */
2668
- function create(authentication, principal) {
2669
- var context = {};
2670
- context.authentication = authentication || {};
2671
- context.principal = principal || {};
2672
- context.hasRole = function(role) {
2673
- var hasRole = false;
2674
- if (!role) return false;
2675
- if (!context.authentication && !Array.isArray(context.authentication.authorities)) return false;
2676
- context.authentication.authorities.forEach(function(grantedAuthority) {
2677
- if (grantedAuthority.authority.toLowerCase() === role.toLowerCase()) hasRole = true;
2678
- });
2679
- return hasRole;
2680
- };
2681
- context.hasPermission = function() {
2682
- var args = Array.prototype.slice.call(arguments);
2683
- if (args.length === 1) return context.hasRole(args[0]);
2684
- };
2685
- return context;
2686
- }
2687
- exports$1.StandardContext = { create };
2688
- })
2689
- ]);
2690
- });
2691
- }));
2692
-
2693
- //#endregion
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_utils = require("./utils-EsYRkPtf.js");
3
+ const require_isRuleGroup = require("./isRuleGroup-BCwaLzDj.js");
4
+ const require_prepareQueryObjects = require("./prepareQueryObjects-Dc8rqsYM.js");
5
+ require("./parseJSONata.js");
6
+ let spel2js = require("spel2js");
2694
7
  //#region src/utils/parseSpEL/utils.ts
2695
- var import_spel2js = require_spel2js();
2696
8
  const isSpELPropertyNode = (expr) => {
2697
9
  return expr.getType() === "property" || expr.getType() === "variable";
2698
10
  };
@@ -2783,7 +95,6 @@ const generateMixedAndOrList = (expr) => {
2783
95
  if (returnArray.length === 1 && Array.isArray(returnArray[0])) return returnArray[0];
2784
96
  return returnArray;
2785
97
  };
2786
-
2787
98
  //#endregion
2788
99
  //#region src/utils/parseSpEL/parseSpEL.ts
2789
100
  function parseSpEL(spel, options = {}) {
@@ -2822,12 +133,12 @@ function parseSpEL(spel, options = {}) {
2822
133
  }
2823
134
  } else if (isSpELOpAnd(expr) || isSpELOpOr(expr)) {
2824
135
  if (ic) {
2825
- const rules$1 = generateFlatAndOrList(expr).map((v) => {
136
+ const rules = generateFlatAndOrList(expr).map((v) => {
2826
137
  if (typeof v === "string") return v;
2827
138
  return parseProcessedSpEL(v);
2828
139
  });
2829
- if (!rules$1.every(Boolean)) return null;
2830
- return { rules: rules$1 };
140
+ if (!rules.every(Boolean)) return null;
141
+ return { rules };
2831
142
  }
2832
143
  const andOrList = generateMixedAndOrList(expr);
2833
144
  const combinator = andOrList[1];
@@ -2940,7 +251,7 @@ function parseSpEL(spel, options = {}) {
2940
251
  const prepare = options.generateIDs ? require_prepareQueryObjects.prepareRuleGroup : (g) => g;
2941
252
  let compiledSpEL;
2942
253
  try {
2943
- compiledSpEL = import_spel2js.SpelExpressionEvaluator.compile(spel)._compiledExpression;
254
+ compiledSpEL = spel2js.SpelExpressionEvaluator.compile(spel)._compiledExpression;
2944
255
  } catch {
2945
256
  return prepare(emptyQuery);
2946
257
  }
@@ -2954,7 +265,7 @@ function parseSpEL(spel, options = {}) {
2954
265
  }
2955
266
  return prepare(emptyQuery);
2956
267
  }
2957
-
2958
268
  //#endregion
2959
269
  exports.parseSpEL = parseSpEL;
270
+
2960
271
  //# sourceMappingURL=parseSpEL.js.map