@opra/elastic 1.7.4 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -27,12 +27,7 @@ function prepareFilterAst(ast, negative) {
27
27
  if (!ast)
28
28
  return;
29
29
  if (ast instanceof common_1.OpraFilter.QualifiedIdentifier ||
30
- ast instanceof common_1.OpraFilter.NumberLiteral ||
31
- ast instanceof common_1.OpraFilter.StringLiteral ||
32
- ast instanceof common_1.OpraFilter.BooleanLiteral ||
33
- ast instanceof common_1.OpraFilter.NullLiteral ||
34
- ast instanceof common_1.OpraFilter.DateLiteral ||
35
- ast instanceof common_1.OpraFilter.TimeLiteral) {
30
+ ast instanceof common_1.OpraFilter.Literal) {
36
31
  return ast.value;
37
32
  }
38
33
  if (ast instanceof common_1.OpraFilter.ArrayExpression) {
@@ -65,52 +60,59 @@ function prepareFilterAst(ast, negative) {
65
60
  out = { exists: { field: left } };
66
61
  }
67
62
  else {
68
- switch (ast.op) {
69
- case '!=':
70
- case '=':
71
- case 'in':
72
- case '!in': {
73
- out = { match: { [left]: right } };
74
- break;
75
- }
76
- case '>': {
77
- out = { range: { [left]: { gt: right } } };
78
- break;
79
- }
80
- case '>=': {
81
- out = { range: { [left]: { gte: right } } };
82
- break;
83
- }
84
- case '<': {
85
- out = { range: { [left]: { lt: right } } };
86
- break;
87
- }
88
- case '<=': {
89
- out = { range: { [left]: { lte: right } } };
90
- break;
91
- }
92
- case '!like':
93
- case 'like': {
94
- out = {
95
- wildcard: { [left]: { value: String(right).replace(/%/g, '*') } },
96
- };
97
- break;
98
- }
99
- case '!ilike':
100
- case 'ilike': {
101
- out = {
102
- wildcard: {
103
- [left]: {
104
- value: String(right).replace(/%/g, '*'),
105
- case_insensitive: true,
63
+ if (ast.prepare) {
64
+ out = ast.prepare(right, ast.op);
65
+ }
66
+ if (!out) {
67
+ switch (ast.op) {
68
+ case '!=':
69
+ case '=':
70
+ case 'in':
71
+ case '!in': {
72
+ out = Array.isArray(right)
73
+ ? { terms: { [left]: right } }
74
+ : { match: { [left]: right } };
75
+ break;
76
+ }
77
+ case '>': {
78
+ out = { range: { [left]: { gt: right } } };
79
+ break;
80
+ }
81
+ case '>=': {
82
+ out = { range: { [left]: { gte: right } } };
83
+ break;
84
+ }
85
+ case '<': {
86
+ out = { range: { [left]: { lt: right } } };
87
+ break;
88
+ }
89
+ case '<=': {
90
+ out = { range: { [left]: { lte: right } } };
91
+ break;
92
+ }
93
+ case '!like':
94
+ case 'like': {
95
+ out = {
96
+ wildcard: { [left]: { value: String(right).replace(/%/g, '*') } },
97
+ };
98
+ break;
99
+ }
100
+ case '!ilike':
101
+ case 'ilike': {
102
+ out = {
103
+ wildcard: {
104
+ [left]: {
105
+ value: String(right).replace(/%/g, '*'),
106
+ case_insensitive: true,
107
+ },
106
108
  },
107
- },
108
- };
109
- break;
109
+ };
110
+ break;
111
+ }
112
+ default:
113
+ /* istanbul ignore next */
114
+ throw new TypeError(`Unknown ComparisonExpression operation (${ast.op})`);
110
115
  }
111
- default:
112
- /* istanbul ignore next */
113
- throw new TypeError(`Unknown ComparisonExpression operation (${ast.op})`);
114
116
  }
115
117
  }
116
118
  if ((ast.op.startsWith('!') && !negative) ||
@@ -24,12 +24,7 @@ function prepareFilterAst(ast, negative) {
24
24
  if (!ast)
25
25
  return;
26
26
  if (ast instanceof OpraFilter.QualifiedIdentifier ||
27
- ast instanceof OpraFilter.NumberLiteral ||
28
- ast instanceof OpraFilter.StringLiteral ||
29
- ast instanceof OpraFilter.BooleanLiteral ||
30
- ast instanceof OpraFilter.NullLiteral ||
31
- ast instanceof OpraFilter.DateLiteral ||
32
- ast instanceof OpraFilter.TimeLiteral) {
27
+ ast instanceof OpraFilter.Literal) {
33
28
  return ast.value;
34
29
  }
35
30
  if (ast instanceof OpraFilter.ArrayExpression) {
@@ -62,52 +57,59 @@ function prepareFilterAst(ast, negative) {
62
57
  out = { exists: { field: left } };
63
58
  }
64
59
  else {
65
- switch (ast.op) {
66
- case '!=':
67
- case '=':
68
- case 'in':
69
- case '!in': {
70
- out = { match: { [left]: right } };
71
- break;
72
- }
73
- case '>': {
74
- out = { range: { [left]: { gt: right } } };
75
- break;
76
- }
77
- case '>=': {
78
- out = { range: { [left]: { gte: right } } };
79
- break;
80
- }
81
- case '<': {
82
- out = { range: { [left]: { lt: right } } };
83
- break;
84
- }
85
- case '<=': {
86
- out = { range: { [left]: { lte: right } } };
87
- break;
88
- }
89
- case '!like':
90
- case 'like': {
91
- out = {
92
- wildcard: { [left]: { value: String(right).replace(/%/g, '*') } },
93
- };
94
- break;
95
- }
96
- case '!ilike':
97
- case 'ilike': {
98
- out = {
99
- wildcard: {
100
- [left]: {
101
- value: String(right).replace(/%/g, '*'),
102
- case_insensitive: true,
60
+ if (ast.prepare) {
61
+ out = ast.prepare(right, ast.op);
62
+ }
63
+ if (!out) {
64
+ switch (ast.op) {
65
+ case '!=':
66
+ case '=':
67
+ case 'in':
68
+ case '!in': {
69
+ out = Array.isArray(right)
70
+ ? { terms: { [left]: right } }
71
+ : { match: { [left]: right } };
72
+ break;
73
+ }
74
+ case '>': {
75
+ out = { range: { [left]: { gt: right } } };
76
+ break;
77
+ }
78
+ case '>=': {
79
+ out = { range: { [left]: { gte: right } } };
80
+ break;
81
+ }
82
+ case '<': {
83
+ out = { range: { [left]: { lt: right } } };
84
+ break;
85
+ }
86
+ case '<=': {
87
+ out = { range: { [left]: { lte: right } } };
88
+ break;
89
+ }
90
+ case '!like':
91
+ case 'like': {
92
+ out = {
93
+ wildcard: { [left]: { value: String(right).replace(/%/g, '*') } },
94
+ };
95
+ break;
96
+ }
97
+ case '!ilike':
98
+ case 'ilike': {
99
+ out = {
100
+ wildcard: {
101
+ [left]: {
102
+ value: String(right).replace(/%/g, '*'),
103
+ case_insensitive: true,
104
+ },
103
105
  },
104
- },
105
- };
106
- break;
106
+ };
107
+ break;
108
+ }
109
+ default:
110
+ /* istanbul ignore next */
111
+ throw new TypeError(`Unknown ComparisonExpression operation (${ast.op})`);
107
112
  }
108
- default:
109
- /* istanbul ignore next */
110
- throw new TypeError(`Unknown ComparisonExpression operation (${ast.op})`);
111
113
  }
112
114
  }
113
115
  if ((ast.op.startsWith('!') && !negative) ||
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/elastic",
3
- "version": "1.7.4",
3
+ "version": "1.9.0",
4
4
  "description": "Opra Elastic Search adapter package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -11,8 +11,8 @@
11
11
  },
12
12
  "peerDependencies": {
13
13
  "@elastic/elasticsearch": ">=8.7.0 <9",
14
- "@opra/common": "^1.7.4",
15
- "@opra/core": "^1.7.4"
14
+ "@opra/common": "^1.9.0",
15
+ "@opra/core": "^1.9.0"
16
16
  },
17
17
  "type": "module",
18
18
  "exports": {