@webiny/api-elasticsearch 5.33.5 → 5.34.0-beta.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.
- package/client.js +5 -11
- package/client.js.map +1 -1
- package/cursors.d.ts +2 -1
- package/cursors.js +7 -1
- package/cursors.js.map +1 -1
- package/index.js +1 -1
- package/indices.js +1 -1
- package/normalize.js +3 -6
- package/normalize.js.map +1 -1
- package/package.json +10 -10
- package/plugins/definition/CompressionPlugin.js +1 -1
- package/plugins/definition/ElasticsearchBodyModifierPlugin.js +1 -1
- package/plugins/definition/ElasticsearchFieldPlugin.js +4 -6
- package/plugins/definition/ElasticsearchFieldPlugin.js.map +1 -1
- package/plugins/definition/ElasticsearchIndexPlugin.js +4 -6
- package/plugins/definition/ElasticsearchIndexPlugin.js.map +1 -1
- package/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin.js +1 -1
- package/plugins/definition/ElasticsearchQueryModifierPlugin.js +1 -1
- package/plugins/definition/ElasticsearchSortModifierPlugin.js +1 -1
- package/plugins/operator/andIn.js +2 -2
- package/plugins/operator/andIn.js.map +1 -1
- package/plugins/operator/between.js +6 -5
- package/plugins/operator/between.js.map +1 -1
- package/plugins/operator/contains.js +1 -1
- package/plugins/operator/equal.js +24 -5
- package/plugins/operator/equal.js.map +1 -1
- package/plugins/operator/gt.js +2 -2
- package/plugins/operator/gt.js.map +1 -1
- package/plugins/operator/gte.js +2 -2
- package/plugins/operator/gte.js.map +1 -1
- package/plugins/operator/in.js +7 -13
- package/plugins/operator/in.js.map +1 -1
- package/plugins/operator/japanese/contains.js +1 -1
- package/plugins/operator/lt.js +2 -2
- package/plugins/operator/lt.js.map +1 -1
- package/plugins/operator/lte.js +2 -2
- package/plugins/operator/lte.js.map +1 -1
- package/plugins/operator/not.js +16 -4
- package/plugins/operator/not.js.map +1 -1
- package/plugins/operator/notBetween.js +5 -4
- package/plugins/operator/notBetween.js.map +1 -1
- package/plugins/operator/notContains.js +1 -1
- package/plugins/operator/notIn.js +4 -3
- package/plugins/operator/notIn.js.map +1 -1
- package/plugins/operator/notStartsWith.js +1 -1
- package/plugins/operator/startsWith.js +2 -2
- package/plugins/operator/startsWith.js.map +1 -1
- package/sort.d.ts +2 -6
- package/sort.js +1 -3
- package/sort.js.map +1 -1
- package/types.d.ts +6 -3
- package/types.js +2 -2
- package/types.js.map +1 -1
- package/where.js +2 -1
- package/where.js.map +1 -1
package/client.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.createElasticsearchClient = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
11
|
|
|
12
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
13
|
|
|
@@ -21,18 +21,13 @@ var _awsElasticsearchConnector = _interopRequireDefault(require("aws-elasticsear
|
|
|
21
21
|
|
|
22
22
|
const _excluded = ["endpoint", "node"];
|
|
23
23
|
|
|
24
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
-
|
|
26
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
27
|
-
|
|
28
24
|
const createElasticsearchClient = options => {
|
|
29
25
|
const {
|
|
30
26
|
endpoint,
|
|
31
27
|
node
|
|
32
28
|
} = options,
|
|
33
29
|
rest = (0, _objectWithoutProperties2.default)(options, _excluded);
|
|
34
|
-
|
|
35
|
-
const clientOptions = _objectSpread({
|
|
30
|
+
const clientOptions = (0, _objectSpread2.default)({
|
|
36
31
|
node: endpoint || node
|
|
37
32
|
}, rest);
|
|
38
33
|
|
|
@@ -46,14 +41,13 @@ const createElasticsearchClient = options => {
|
|
|
46
41
|
try {
|
|
47
42
|
return new _elasticsearch.Client(clientOptions);
|
|
48
43
|
} catch (ex) {
|
|
49
|
-
const data =
|
|
44
|
+
const data = (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
50
45
|
error: ex,
|
|
51
46
|
node: endpoint || node
|
|
52
47
|
}, rest), {}, {
|
|
53
48
|
auth: undefined
|
|
54
49
|
});
|
|
55
|
-
|
|
56
|
-
console.log(_objectSpread({}, data));
|
|
50
|
+
console.log((0, _objectSpread2.default)({}, data));
|
|
57
51
|
throw new _error.default("Could not connect to Elasticsearch.", "ELASTICSEARCH_CLIENT_ERROR", data);
|
|
58
52
|
}
|
|
59
53
|
};
|
package/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createElasticsearchClient","options","endpoint","node","rest","clientOptions","auth","Object","assign","createAwsElasticsearchConnector","AWS","config","Client","ex","data","error","undefined","console","log","WebinyError"],"sources":["client.ts"],"sourcesContent":["import { Client, ClientOptions } from \"@elastic/elasticsearch\";\nimport AWS from \"aws-sdk\";\nimport WebinyError from \"@webiny/error\";\n/**\n * Package aws-elasticsearch-connector does not have types.\n */\n// @ts-ignore\nimport createAwsElasticsearchConnector from \"aws-elasticsearch-connector\";\n\nexport interface ElasticsearchClientOptions extends ClientOptions {\n endpoint?: string;\n}\n\nexport const createElasticsearchClient = (options: ElasticsearchClientOptions) => {\n const { endpoint, node, ...rest } = options;\n\n const clientOptions: ClientOptions = {\n node: endpoint || node,\n ...rest\n };\n\n if (!clientOptions.auth) {\n /**\n * If no `auth` configuration is present, we setup AWS connector.\n */\n Object.assign(clientOptions, createAwsElasticsearchConnector(AWS.config));\n }\n\n try {\n return new Client(clientOptions);\n } catch (ex) {\n const data = {\n error: ex,\n node: endpoint || node,\n ...rest,\n auth: undefined\n };\n console.log({\n ...data\n });\n throw new WebinyError(\n \"Could not connect to Elasticsearch.\",\n \"ELASTICSEARCH_CLIENT_ERROR\",\n data\n );\n }\n};\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA
|
|
1
|
+
{"version":3,"names":["createElasticsearchClient","options","endpoint","node","rest","clientOptions","auth","Object","assign","createAwsElasticsearchConnector","AWS","config","Client","ex","data","error","undefined","console","log","WebinyError"],"sources":["client.ts"],"sourcesContent":["import { Client, ClientOptions } from \"@elastic/elasticsearch\";\nimport AWS from \"aws-sdk\";\nimport WebinyError from \"@webiny/error\";\n/**\n * Package aws-elasticsearch-connector does not have types.\n */\n// @ts-ignore\nimport createAwsElasticsearchConnector from \"aws-elasticsearch-connector\";\n\nexport interface ElasticsearchClientOptions extends ClientOptions {\n endpoint?: string;\n}\n\nexport const createElasticsearchClient = (options: ElasticsearchClientOptions) => {\n const { endpoint, node, ...rest } = options;\n\n const clientOptions: ClientOptions = {\n node: endpoint || node,\n ...rest\n };\n\n if (!clientOptions.auth) {\n /**\n * If no `auth` configuration is present, we setup AWS connector.\n */\n Object.assign(clientOptions, createAwsElasticsearchConnector(AWS.config));\n }\n\n try {\n return new Client(clientOptions);\n } catch (ex) {\n const data = {\n error: ex,\n node: endpoint || node,\n ...rest,\n auth: undefined\n };\n console.log({\n ...data\n });\n throw new WebinyError(\n \"Could not connect to Elasticsearch.\",\n \"ELASTICSEARCH_CLIENT_ERROR\",\n data\n );\n }\n};\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA;;;;AAMO,MAAMA,yBAAyB,GAAIC,OAAD,IAAyC;EAC9E,MAAM;IAAEC,QAAF;IAAYC;EAAZ,IAA8BF,OAApC;EAAA,MAA2BG,IAA3B,0CAAoCH,OAApC;EAEA,MAAMI,aAA4B;IAC9BF,IAAI,EAAED,QAAQ,IAAIC;EADY,GAE3BC,IAF2B,CAAlC;;EAKA,IAAI,CAACC,aAAa,CAACC,IAAnB,EAAyB;IACrB;AACR;AACA;IACQC,MAAM,CAACC,MAAP,CAAcH,aAAd,EAA6B,IAAAI,kCAAA,EAAgCC,eAAA,CAAIC,MAApC,CAA7B;EACH;;EAED,IAAI;IACA,OAAO,IAAIC,qBAAJ,CAAWP,aAAX,CAAP;EACH,CAFD,CAEE,OAAOQ,EAAP,EAAW;IACT,MAAMC,IAAI;MACNC,KAAK,EAAEF,EADD;MAENV,IAAI,EAAED,QAAQ,IAAIC;IAFZ,GAGHC,IAHG;MAINE,IAAI,EAAEU;IAJA,EAAV;IAMAC,OAAO,CAACC,GAAR,iCACOJ,IADP;IAGA,MAAM,IAAIK,cAAJ,CACF,qCADE,EAEF,4BAFE,EAGFL,IAHE,CAAN;EAKH;AACJ,CAjCM"}
|
package/cursors.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PrimitiveValue } from "./types";
|
|
1
2
|
/**
|
|
2
3
|
* Encode a received cursor value into something that can be passed on to the user.
|
|
3
4
|
*/
|
|
@@ -6,4 +7,4 @@ export declare const encodeCursor: (cursor?: string | string[] | null) => string
|
|
|
6
7
|
* Decode a received value into a Elasticsearch cursor.
|
|
7
8
|
* If no value is received or is not decodable, return undefined.
|
|
8
9
|
*/
|
|
9
|
-
export declare const decodeCursor: (cursor?: string | null) =>
|
|
10
|
+
export declare const decodeCursor: (cursor?: string | null) => PrimitiveValue[] | undefined;
|
package/cursors.js
CHANGED
|
@@ -38,7 +38,13 @@ const decodeCursor = cursor => {
|
|
|
38
38
|
|
|
39
39
|
try {
|
|
40
40
|
const value = JSON.parse(Buffer.from(cursor, "base64").toString("ascii"));
|
|
41
|
-
|
|
41
|
+
|
|
42
|
+
if (Array.isArray(value)) {
|
|
43
|
+
return value.map(decodeURIComponent);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const decoded = decodeURIComponent(value);
|
|
47
|
+
return decoded ? [decoded] : undefined;
|
|
42
48
|
} catch (ex) {
|
|
43
49
|
console.error(ex.message);
|
|
44
50
|
}
|
package/cursors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["encodeCursor","cursor","undefined","Array","isArray","map","encodeURIComponent","Buffer","from","JSON","stringify","toString","ex","console","error","message","decodeCursor","value","parse","decodeURIComponent"],"sources":["cursors.ts"],"sourcesContent":["/**\n * Encode a received cursor value into something that can be passed on to the user.\n */\nexport const encodeCursor = (cursor?: string | string[] | null): string | undefined => {\n if (!cursor) {\n return undefined;\n }\n\n cursor = Array.isArray(cursor) ? cursor.map(encodeURIComponent) : encodeURIComponent(cursor);\n\n try {\n return Buffer.from(JSON.stringify(cursor)).toString(\"base64\");\n } catch (ex) {\n console.error(ex.message);\n }\n return undefined;\n};\n/**\n * Decode a received value into a Elasticsearch cursor.\n * If no value is received or is not decodable, return undefined.\n */\nexport const decodeCursor = (cursor?: string | null):
|
|
1
|
+
{"version":3,"names":["encodeCursor","cursor","undefined","Array","isArray","map","encodeURIComponent","Buffer","from","JSON","stringify","toString","ex","console","error","message","decodeCursor","value","parse","decodeURIComponent","decoded"],"sources":["cursors.ts"],"sourcesContent":["import { PrimitiveValue } from \"~/types\";\n\n/**\n * Encode a received cursor value into something that can be passed on to the user.\n */\nexport const encodeCursor = (cursor?: string | string[] | null): string | undefined => {\n if (!cursor) {\n return undefined;\n }\n\n cursor = Array.isArray(cursor) ? cursor.map(encodeURIComponent) : encodeURIComponent(cursor);\n\n try {\n return Buffer.from(JSON.stringify(cursor)).toString(\"base64\");\n } catch (ex) {\n console.error(ex.message);\n }\n return undefined;\n};\n/**\n * Decode a received value into a Elasticsearch cursor.\n * If no value is received or is not decodable, return undefined.\n */\nexport const decodeCursor = (cursor?: string | null): PrimitiveValue[] | undefined => {\n if (!cursor) {\n return undefined;\n }\n try {\n const value = JSON.parse(Buffer.from(cursor, \"base64\").toString(\"ascii\"));\n if (Array.isArray(value)) {\n return value.map(decodeURIComponent);\n }\n const decoded = decodeURIComponent(value);\n return decoded ? [decoded] : undefined;\n } catch (ex) {\n console.error(ex.message);\n }\n return undefined;\n};\n"],"mappings":";;;;;;;AAEA;AACA;AACA;AACO,MAAMA,YAAY,GAAIC,MAAD,IAA2D;EACnF,IAAI,CAACA,MAAL,EAAa;IACT,OAAOC,SAAP;EACH;;EAEDD,MAAM,GAAGE,KAAK,CAACC,OAAN,CAAcH,MAAd,IAAwBA,MAAM,CAACI,GAAP,CAAWC,kBAAX,CAAxB,GAAyDA,kBAAkB,CAACL,MAAD,CAApF;;EAEA,IAAI;IACA,OAAOM,MAAM,CAACC,IAAP,CAAYC,IAAI,CAACC,SAAL,CAAeT,MAAf,CAAZ,EAAoCU,QAApC,CAA6C,QAA7C,CAAP;EACH,CAFD,CAEE,OAAOC,EAAP,EAAW;IACTC,OAAO,CAACC,KAAR,CAAcF,EAAE,CAACG,OAAjB;EACH;;EACD,OAAOb,SAAP;AACH,CAbM;AAcP;AACA;AACA;AACA;;;;;AACO,MAAMc,YAAY,GAAIf,MAAD,IAA0D;EAClF,IAAI,CAACA,MAAL,EAAa;IACT,OAAOC,SAAP;EACH;;EACD,IAAI;IACA,MAAMe,KAAK,GAAGR,IAAI,CAACS,KAAL,CAAWX,MAAM,CAACC,IAAP,CAAYP,MAAZ,EAAoB,QAApB,EAA8BU,QAA9B,CAAuC,OAAvC,CAAX,CAAd;;IACA,IAAIR,KAAK,CAACC,OAAN,CAAca,KAAd,CAAJ,EAA0B;MACtB,OAAOA,KAAK,CAACZ,GAAN,CAAUc,kBAAV,CAAP;IACH;;IACD,MAAMC,OAAO,GAAGD,kBAAkB,CAACF,KAAD,CAAlC;IACA,OAAOG,OAAO,GAAG,CAACA,OAAD,CAAH,GAAelB,SAA7B;EACH,CAPD,CAOE,OAAOU,EAAP,EAAW;IACTC,OAAO,CAACC,KAAR,CAAcF,EAAE,CAACG,OAAjB;EACH;;EACD,OAAOb,SAAP;AACH,CAfM"}
|
package/index.js
CHANGED
package/indices.js
CHANGED
package/normalize.js
CHANGED
|
@@ -9,16 +9,13 @@ exports.normalizeValue = void 0;
|
|
|
9
9
|
* Before performing the query, we need to escape all special characters.
|
|
10
10
|
* @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_reserved_characters
|
|
11
11
|
*/
|
|
12
|
-
const
|
|
13
|
-
// These characters need to be escaped with backslash ("\").
|
|
14
|
-
escape: ["\\\\", "\\/", "\\+", "\\-", "\\=", "\\&\\&", "\\|\\|", "\\!", "\\(", "\\)", "\\{", "\\}", "\\[", "\\]", "\\^", '\\"', "\\~", "\\*", "\\?", "\\:", "\\>", "\\<"]
|
|
15
|
-
};
|
|
12
|
+
const specialCharacters = ["\\+", "\\-", "\\=", "\\&\\&", "\\|\\|", ">", "<", "\\!", "\\(", "\\)", "\\{", "\\}", "\\[", "\\]", "\\^", '\\"', "\\~", "\\*", "\\?", "\\:", "\\\\", "\\/", "\\#"];
|
|
16
13
|
|
|
17
14
|
const normalizeValue = value => {
|
|
18
15
|
let result = value;
|
|
19
16
|
|
|
20
|
-
for (const character of
|
|
21
|
-
result = result.replace(new RegExp(
|
|
17
|
+
for (const character of specialCharacters) {
|
|
18
|
+
result = result.replace(new RegExp(character, "g"), `\\${character}`);
|
|
22
19
|
}
|
|
23
20
|
|
|
24
21
|
return result ? `*${result}*` : "";
|
package/normalize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["specialCharacters","normalizeValue","value","result","character","replace","RegExp"],"sources":["normalize.ts"],"sourcesContent":["/**\n * Before performing the query, we need to escape all special characters.\n * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_reserved_characters\n */\n\nconst specialCharacters = [\n \"\\\\+\",\n \"\\\\-\",\n \"\\\\=\",\n \"\\\\&\\\\&\",\n \"\\\\|\\\\|\",\n \">\",\n \"<\",\n \"\\\\!\",\n \"\\\\(\",\n \"\\\\)\",\n \"\\\\{\",\n \"\\\\}\",\n \"\\\\[\",\n \"\\\\]\",\n \"\\\\^\",\n '\\\\\"',\n \"\\\\~\",\n \"\\\\*\",\n \"\\\\?\",\n \"\\\\:\",\n \"\\\\\\\\\",\n \"\\\\/\",\n \"\\\\#\"\n];\n\nexport const normalizeValue = (value: string) => {\n let result = value;\n for (const character of specialCharacters) {\n result = result.replace(new RegExp(character, \"g\"), `\\\\${character}`);\n }\n\n return result ? `*${result}*` : \"\";\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAEA,MAAMA,iBAAiB,GAAG,CACtB,KADsB,EAEtB,KAFsB,EAGtB,KAHsB,EAItB,QAJsB,EAKtB,QALsB,EAMtB,GANsB,EAOtB,GAPsB,EAQtB,KARsB,EAStB,KATsB,EAUtB,KAVsB,EAWtB,KAXsB,EAYtB,KAZsB,EAatB,KAbsB,EActB,KAdsB,EAetB,KAfsB,EAgBtB,KAhBsB,EAiBtB,KAjBsB,EAkBtB,KAlBsB,EAmBtB,KAnBsB,EAoBtB,KApBsB,EAqBtB,MArBsB,EAsBtB,KAtBsB,EAuBtB,KAvBsB,CAA1B;;AA0BO,MAAMC,cAAc,GAAIC,KAAD,IAAmB;EAC7C,IAAIC,MAAM,GAAGD,KAAb;;EACA,KAAK,MAAME,SAAX,IAAwBJ,iBAAxB,EAA2C;IACvCG,MAAM,GAAGA,MAAM,CAACE,OAAP,CAAe,IAAIC,MAAJ,CAAWF,SAAX,EAAsB,GAAtB,CAAf,EAA4C,KAAIA,SAAU,EAA1D,CAAT;EACH;;EAED,OAAOD,MAAM,GAAI,IAAGA,MAAO,GAAd,GAAmB,EAAhC;AACH,CAPM"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-elasticsearch",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.34.0-beta.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/webiny/webiny-js.git",
|
|
@@ -13,19 +13,19 @@
|
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@elastic/elasticsearch": "7.12.0",
|
|
16
|
-
"@webiny/api": "5.
|
|
17
|
-
"@webiny/error": "5.
|
|
18
|
-
"@webiny/plugins": "5.
|
|
19
|
-
"@webiny/utils": "5.
|
|
16
|
+
"@webiny/api": "5.34.0-beta.0",
|
|
17
|
+
"@webiny/error": "5.34.0-beta.0",
|
|
18
|
+
"@webiny/plugins": "5.34.0-beta.0",
|
|
19
|
+
"@webiny/utils": "5.34.0-beta.0",
|
|
20
20
|
"aws-elasticsearch-connector": "9.2.0",
|
|
21
|
-
"aws-sdk": "2.
|
|
22
|
-
"elastic-ts": "0.
|
|
21
|
+
"aws-sdk": "2.1230.0",
|
|
22
|
+
"elastic-ts": "0.8.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@babel/cli": "^7.16.0",
|
|
26
26
|
"@babel/core": "^7.16.0",
|
|
27
|
-
"@webiny/cli": "^5.
|
|
28
|
-
"@webiny/project-utils": "^5.
|
|
27
|
+
"@webiny/cli": "^5.34.0-beta.0",
|
|
28
|
+
"@webiny/project-utils": "^5.34.0-beta.0",
|
|
29
29
|
"rimraf": "^3.0.2",
|
|
30
30
|
"ttypescript": "^1.5.12",
|
|
31
31
|
"typescript": "4.7.4"
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
]
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "9648454619a1bfb35040eb00f27a64ed75194e61"
|
|
49
49
|
}
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.ElasticsearchFieldPlugin = void 0;
|
|
9
9
|
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
10
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
13
|
|
|
12
14
|
var _plugins = require("@webiny/plugins");
|
|
13
15
|
|
|
14
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
-
|
|
16
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
|
-
|
|
18
16
|
const keywordLessUnmappedType = ["date", "long"];
|
|
19
17
|
|
|
20
18
|
const unmappedTypeHasKeyword = type => {
|
|
@@ -62,7 +60,7 @@ class ElasticsearchFieldPlugin extends _plugins.Plugin {
|
|
|
62
60
|
return options;
|
|
63
61
|
}
|
|
64
62
|
|
|
65
|
-
return
|
|
63
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, options), {}, {
|
|
66
64
|
unmapped_type: this.unmappedType
|
|
67
65
|
});
|
|
68
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["keywordLessUnmappedType","unmappedTypeHasKeyword","type","includes","ElasticsearchFieldPlugin","Plugin","constructor","params","field","path","keyword","undefined","unmappedType","sortable","searchable","getSortOptions","order","options","unmapped_type","getPath","getBasePath","ALL","toSearchValue","value"],"sources":["ElasticsearchFieldPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { FieldSortOptions, SortOrder } from \"elastic-ts\";\n\nexport type UnmappedTypes = \"date\" | \"long\" | string;\n\nconst keywordLessUnmappedType = [\"date\", \"long\"];\n\nconst unmappedTypeHasKeyword = (type?: string): boolean => {\n if (!type) {\n return true;\n } else if (keywordLessUnmappedType.includes(type)) {\n return false;\n }\n return true;\n};\n\nexport interface ToSearchValueParams {\n /**\n * The value to transform.\n */\n value: any;\n /**\n * When using toSearchValue() in our code we send a field.getPath() value here.\n */\n path: string;\n /**\n * When using toSearchValue() in our code we send a field.getBasePath() value here.\n */\n basePath: string;\n}\nexport interface ElasticsearchFieldPluginParams {\n /**\n * Which field is this plugin for.\n */\n field: string;\n /**\n * Some specific path of a field?\n * Example: createdBy is createdBy.id\n */\n path?: string;\n /**\n * Add a .keyword at the end of the field path?\n */\n keyword?: boolean;\n /**\n * Is the field of a specific type, but possibly not mapped?\n * Happens when inserting a date in string format.\n * You need to cast it as date when running the search/sort to work correctly.\n */\n unmappedType?: UnmappedTypes;\n /**\n * Is the field sortable?\n */\n sortable?: boolean;\n /**\n * Is the field searchable?\n */\n searchable?: boolean;\n /**\n * Used to transform the input value for the search.\n */\n toSearchValue?: (params: ToSearchValueParams) => any;\n}\n\nexport abstract class ElasticsearchFieldPlugin extends Plugin {\n public static override readonly type: string = \"elasticsearch.fieldDefinition\";\n public static readonly ALL: string = \"*\";\n\n public readonly field: string;\n public readonly path: string;\n public readonly keyword: boolean;\n public readonly unmappedType?: string;\n public readonly sortable: boolean;\n public readonly searchable: boolean;\n\n constructor(params: ElasticsearchFieldPluginParams) {\n super();\n this.field = params.field;\n this.path = params.path || params.field;\n this.keyword = params.keyword === undefined ? true : params.keyword;\n this.unmappedType = params.unmappedType;\n if (unmappedTypeHasKeyword(params.unmappedType) === false) {\n this.keyword = false;\n }\n this.sortable = params.sortable === undefined ? true : params.sortable;\n this.searchable = params.searchable === undefined ? true : params.searchable;\n }\n /**\n * The default sort options. Extend in your own plugin if you want to add more options.\n */\n public getSortOptions(order: SortOrder): FieldSortOptions {\n const options = {\n order\n };\n if (!this.unmappedType) {\n return options;\n }\n return {\n ...options,\n unmapped_type: this.unmappedType\n };\n }\n /**\n * The default path generator. Extend in your own plugin if you want to add more options.\n * Field parameter is here because there is a possibility that this is the ALL field plugin, so we need to know which field are we working on.\n */\n public getPath(field: string): string {\n return `${this.getBasePath(field)}${this.keyword ? \".keyword\" : \"\"}`;\n }\n /**\n * @see getPath\n *\n * This is the default base path generator. Basically it replaces ALL with given field name.\n */\n public getBasePath(field: string): string {\n if (this.path === ElasticsearchFieldPlugin.ALL) {\n return field;\n }\n return this.path;\n }\n /**\n * The default transformer. Just returns the value by default.\n * Override to implement what ever is required.\n */\n public toSearchValue(params: ToSearchValueParams): any {\n return params.value;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["keywordLessUnmappedType","unmappedTypeHasKeyword","type","includes","ElasticsearchFieldPlugin","Plugin","constructor","params","field","path","keyword","undefined","unmappedType","sortable","searchable","getSortOptions","order","options","unmapped_type","getPath","getBasePath","ALL","toSearchValue","value"],"sources":["ElasticsearchFieldPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { FieldSortOptions, SortOrder } from \"elastic-ts\";\n\nexport type UnmappedTypes = \"date\" | \"long\" | string;\n\nconst keywordLessUnmappedType = [\"date\", \"long\"];\n\nconst unmappedTypeHasKeyword = (type?: string): boolean => {\n if (!type) {\n return true;\n } else if (keywordLessUnmappedType.includes(type)) {\n return false;\n }\n return true;\n};\n\nexport interface ToSearchValueParams {\n /**\n * The value to transform.\n */\n value: any;\n /**\n * When using toSearchValue() in our code we send a field.getPath() value here.\n */\n path: string;\n /**\n * When using toSearchValue() in our code we send a field.getBasePath() value here.\n */\n basePath: string;\n}\nexport interface ElasticsearchFieldPluginParams {\n /**\n * Which field is this plugin for.\n */\n field: string;\n /**\n * Some specific path of a field?\n * Example: createdBy is createdBy.id\n */\n path?: string;\n /**\n * Add a .keyword at the end of the field path?\n */\n keyword?: boolean;\n /**\n * Is the field of a specific type, but possibly not mapped?\n * Happens when inserting a date in string format.\n * You need to cast it as date when running the search/sort to work correctly.\n */\n unmappedType?: UnmappedTypes;\n /**\n * Is the field sortable?\n */\n sortable?: boolean;\n /**\n * Is the field searchable?\n */\n searchable?: boolean;\n /**\n * Used to transform the input value for the search.\n */\n toSearchValue?: (params: ToSearchValueParams) => any;\n}\n\nexport abstract class ElasticsearchFieldPlugin extends Plugin {\n public static override readonly type: string = \"elasticsearch.fieldDefinition\";\n public static readonly ALL: string = \"*\";\n\n public readonly field: string;\n public readonly path: string;\n public readonly keyword: boolean;\n public readonly unmappedType?: string;\n public readonly sortable: boolean;\n public readonly searchable: boolean;\n\n constructor(params: ElasticsearchFieldPluginParams) {\n super();\n this.field = params.field;\n this.path = params.path || params.field;\n this.keyword = params.keyword === undefined ? true : params.keyword;\n this.unmappedType = params.unmappedType;\n if (unmappedTypeHasKeyword(params.unmappedType) === false) {\n this.keyword = false;\n }\n this.sortable = params.sortable === undefined ? true : params.sortable;\n this.searchable = params.searchable === undefined ? true : params.searchable;\n }\n /**\n * The default sort options. Extend in your own plugin if you want to add more options.\n */\n public getSortOptions(order: SortOrder): FieldSortOptions {\n const options = {\n order\n };\n if (!this.unmappedType) {\n return options;\n }\n return {\n ...options,\n unmapped_type: this.unmappedType\n };\n }\n /**\n * The default path generator. Extend in your own plugin if you want to add more options.\n * Field parameter is here because there is a possibility that this is the ALL field plugin, so we need to know which field are we working on.\n */\n public getPath(field: string): string {\n return `${this.getBasePath(field)}${this.keyword ? \".keyword\" : \"\"}`;\n }\n /**\n * @see getPath\n *\n * This is the default base path generator. Basically it replaces ALL with given field name.\n */\n public getBasePath(field: string): string {\n if (this.path === ElasticsearchFieldPlugin.ALL) {\n return field;\n }\n return this.path;\n }\n /**\n * The default transformer. Just returns the value by default.\n * Override to implement what ever is required.\n */\n public toSearchValue(params: ToSearchValueParams): any {\n return params.value;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAKA,MAAMA,uBAAuB,GAAG,CAAC,MAAD,EAAS,MAAT,CAAhC;;AAEA,MAAMC,sBAAsB,GAAIC,IAAD,IAA4B;EACvD,IAAI,CAACA,IAAL,EAAW;IACP,OAAO,IAAP;EACH,CAFD,MAEO,IAAIF,uBAAuB,CAACG,QAAxB,CAAiCD,IAAjC,CAAJ,EAA4C;IAC/C,OAAO,KAAP;EACH;;EACD,OAAO,IAAP;AACH,CAPD;;AAyDO,MAAeE,wBAAf,SAAgDC,eAAhD,CAAuD;EAW1DC,WAAW,CAACC,MAAD,EAAyC;IAChD;IADgD;IAAA;IAAA;IAAA;IAAA;IAAA;IAEhD,KAAKC,KAAL,GAAaD,MAAM,CAACC,KAApB;IACA,KAAKC,IAAL,GAAYF,MAAM,CAACE,IAAP,IAAeF,MAAM,CAACC,KAAlC;IACA,KAAKE,OAAL,GAAeH,MAAM,CAACG,OAAP,KAAmBC,SAAnB,GAA+B,IAA/B,GAAsCJ,MAAM,CAACG,OAA5D;IACA,KAAKE,YAAL,GAAoBL,MAAM,CAACK,YAA3B;;IACA,IAAIX,sBAAsB,CAACM,MAAM,CAACK,YAAR,CAAtB,KAAgD,KAApD,EAA2D;MACvD,KAAKF,OAAL,GAAe,KAAf;IACH;;IACD,KAAKG,QAAL,GAAgBN,MAAM,CAACM,QAAP,KAAoBF,SAApB,GAAgC,IAAhC,GAAuCJ,MAAM,CAACM,QAA9D;IACA,KAAKC,UAAL,GAAkBP,MAAM,CAACO,UAAP,KAAsBH,SAAtB,GAAkC,IAAlC,GAAyCJ,MAAM,CAACO,UAAlE;EACH;EACD;AACJ;AACA;;;EACWC,cAAc,CAACC,KAAD,EAAqC;IACtD,MAAMC,OAAO,GAAG;MACZD;IADY,CAAhB;;IAGA,IAAI,CAAC,KAAKJ,YAAV,EAAwB;MACpB,OAAOK,OAAP;IACH;;IACD,mEACOA,OADP;MAEIC,aAAa,EAAE,KAAKN;IAFxB;EAIH;EACD;AACJ;AACA;AACA;;;EACWO,OAAO,CAACX,KAAD,EAAwB;IAClC,OAAQ,GAAE,KAAKY,WAAL,CAAiBZ,KAAjB,CAAwB,GAAE,KAAKE,OAAL,GAAe,UAAf,GAA4B,EAAG,EAAnE;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACWU,WAAW,CAACZ,KAAD,EAAwB;IACtC,IAAI,KAAKC,IAAL,KAAcL,wBAAwB,CAACiB,GAA3C,EAAgD;MAC5C,OAAOb,KAAP;IACH;;IACD,OAAO,KAAKC,IAAZ;EACH;EACD;AACJ;AACA;AACA;;;EACWa,aAAa,CAACf,MAAD,EAAmC;IACnD,OAAOA,MAAM,CAACgB,KAAd;EACH;;AA9DyD;;;8BAAxCnB,wB,UAC6B,+B;8BAD7BA,wB,SAEmB,G"}
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.ElasticsearchIndexPlugin = void 0;
|
|
9
9
|
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
10
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
13
|
|
|
12
14
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
15
|
|
|
14
16
|
var _plugins = require("@webiny/plugins");
|
|
15
17
|
|
|
16
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
-
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
-
|
|
20
18
|
class ElasticsearchIndexPlugin extends _plugins.Plugin {
|
|
21
19
|
constructor(params) {
|
|
22
20
|
super();
|
|
@@ -26,7 +24,7 @@ class ElasticsearchIndexPlugin extends _plugins.Plugin {
|
|
|
26
24
|
locales,
|
|
27
25
|
body
|
|
28
26
|
} = params;
|
|
29
|
-
this.body =
|
|
27
|
+
this.body = (0, _objectSpread2.default)({}, body);
|
|
30
28
|
this.locales = locales ? locales.map(locale => locale.toLowerCase()) : undefined;
|
|
31
29
|
}
|
|
32
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchIndexPlugin","Plugin","constructor","params","locales","body","map","locale","toLowerCase","undefined","canUse","length","WebinyError","includes"],"sources":["ElasticsearchIndexPlugin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport { ElasticsearchIndexRequestBody } from \"~/types\";\n\nexport interface ElasticsearchIndexPluginParams {\n /**\n * For which locales are we applying this plugin.\n * Options:\n * - locale codes to target specific locale\n * - null for all\n */\n locales?: string[];\n body: ElasticsearchIndexRequestBody;\n}\n\nexport abstract class ElasticsearchIndexPlugin extends Plugin {\n public readonly body: ElasticsearchIndexRequestBody;\n private readonly locales: string[] | undefined;\n\n public constructor(params: ElasticsearchIndexPluginParams) {\n super();\n const { locales, body } = params;\n this.body = {\n ...body\n };\n this.locales = locales ? locales.map(locale => locale.toLowerCase()) : undefined;\n }\n\n public canUse(locale: string): boolean {\n if (!this.locales) {\n return true;\n } else if (this.locales.length === 0) {\n throw new WebinyError(\n \"Cannot have Elasticsearch Index Template plugin with no locales defined.\",\n \"LOCALES_ERROR\",\n {\n body: this.body,\n locales: this.locales\n }\n );\n }\n return this.locales.includes(locale.toLowerCase());\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["ElasticsearchIndexPlugin","Plugin","constructor","params","locales","body","map","locale","toLowerCase","undefined","canUse","length","WebinyError","includes"],"sources":["ElasticsearchIndexPlugin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport { ElasticsearchIndexRequestBody } from \"~/types\";\n\nexport interface ElasticsearchIndexPluginParams {\n /**\n * For which locales are we applying this plugin.\n * Options:\n * - locale codes to target specific locale\n * - null for all\n */\n locales?: string[];\n body: ElasticsearchIndexRequestBody;\n}\n\nexport abstract class ElasticsearchIndexPlugin extends Plugin {\n public readonly body: ElasticsearchIndexRequestBody;\n private readonly locales: string[] | undefined;\n\n public constructor(params: ElasticsearchIndexPluginParams) {\n super();\n const { locales, body } = params;\n this.body = {\n ...body\n };\n this.locales = locales ? locales.map(locale => locale.toLowerCase()) : undefined;\n }\n\n public canUse(locale: string): boolean {\n if (!this.locales) {\n return true;\n } else if (this.locales.length === 0) {\n throw new WebinyError(\n \"Cannot have Elasticsearch Index Template plugin with no locales defined.\",\n \"LOCALES_ERROR\",\n {\n body: this.body,\n locales: this.locales\n }\n );\n }\n return this.locales.includes(locale.toLowerCase());\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAcO,MAAeA,wBAAf,SAAgDC,eAAhD,CAAuD;EAInDC,WAAW,CAACC,MAAD,EAAyC;IACvD;IADuD;IAAA;IAEvD,MAAM;MAAEC,OAAF;MAAWC;IAAX,IAAoBF,MAA1B;IACA,KAAKE,IAAL,mCACOA,IADP;IAGA,KAAKD,OAAL,GAAeA,OAAO,GAAGA,OAAO,CAACE,GAAR,CAAYC,MAAM,IAAIA,MAAM,CAACC,WAAP,EAAtB,CAAH,GAAiDC,SAAvE;EACH;;EAEMC,MAAM,CAACH,MAAD,EAA0B;IACnC,IAAI,CAAC,KAAKH,OAAV,EAAmB;MACf,OAAO,IAAP;IACH,CAFD,MAEO,IAAI,KAAKA,OAAL,CAAaO,MAAb,KAAwB,CAA5B,EAA+B;MAClC,MAAM,IAAIC,cAAJ,CACF,0EADE,EAEF,eAFE,EAGF;QACIP,IAAI,EAAE,KAAKA,IADf;QAEID,OAAO,EAAE,KAAKA;MAFlB,CAHE,CAAN;IAQH;;IACD,OAAO,KAAKA,OAAL,CAAaS,QAAb,CAAsBN,MAAM,CAACC,WAAP,EAAtB,CAAP;EACH;;AA3ByD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -43,7 +43,7 @@ class ElasticsearchQueryBuilderOperatorAndInPlugin extends _ElasticsearchQueryBu
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
for (const value of values) {
|
|
46
|
-
query.
|
|
46
|
+
query.filter.push({
|
|
47
47
|
term: {
|
|
48
48
|
[useBasePath ? basePath : path]: value
|
|
49
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorAndInPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","values","path","basePath","isArray","Array","length","Error","useBasePath","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorAndInPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","values","path","basePath","isArray","Array","length","Error","useBasePath","filter","push","term"],"sources":["andIn.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorAndInPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.andIn.default\";\n\n public getOperator(): string {\n return \"and_in\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value: values, path, basePath } = params;\n const isArray = Array.isArray(values);\n if (isArray === false || values.length === 0) {\n throw new Error(\n `You cannot filter field \"${path}\" with \"in\" operator and not send an array of values.`\n );\n }\n\n let useBasePath = false;\n // Only use \".keyword\" if all of the provided values are strings.\n for (const value of values) {\n if (typeof value !== \"string\") {\n useBasePath = true;\n break;\n }\n }\n\n for (const value of values) {\n query.filter.push({\n term: {\n [useBasePath ? basePath : path]: value\n }\n });\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,4CAAN,SAA2DC,gFAA3D,CAAmG;EAAA;IAAA;IAAA,4CAC/E,mDAD+E;EAAA;;EAG/FC,WAAW,GAAW;IACzB,OAAO,QAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAK,EAAEC,MAAT;MAAiBC,IAAjB;MAAuBC;IAAvB,IAAoCJ,MAA1C;IACA,MAAMK,OAAO,GAAGC,KAAK,CAACD,OAAN,CAAcH,MAAd,CAAhB;;IACA,IAAIG,OAAO,KAAK,KAAZ,IAAqBH,MAAM,CAACK,MAAP,KAAkB,CAA3C,EAA8C;MAC1C,MAAM,IAAIC,KAAJ,CACD,4BAA2BL,IAAK,uDAD/B,CAAN;IAGH;;IAED,IAAIM,WAAW,GAAG,KAAlB,CATI,CAUJ;;IACA,KAAK,MAAMR,KAAX,IAAoBC,MAApB,EAA4B;MACxB,IAAI,OAAOD,KAAP,KAAiB,QAArB,EAA+B;QAC3BQ,WAAW,GAAG,IAAd;QACA;MACH;IACJ;;IAED,KAAK,MAAMR,KAAX,IAAoBC,MAApB,EAA4B;MACxBH,KAAK,CAACW,MAAN,CAAaC,IAAb,CAAkB;QACdC,IAAI,EAAE;UACF,CAACH,WAAW,GAAGL,QAAH,GAAcD,IAA1B,GAAiCF;QAD/B;MADQ,CAAlB;IAKH;EACJ;;AAnCqG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -24,19 +24,20 @@ class ElasticsearchQueryBuilderOperatorBetweenPlugin extends _ElasticsearchQuery
|
|
|
24
24
|
apply(query, params) {
|
|
25
25
|
const {
|
|
26
26
|
value,
|
|
27
|
-
basePath
|
|
27
|
+
basePath,
|
|
28
|
+
name
|
|
28
29
|
} = params;
|
|
29
30
|
|
|
30
31
|
if (Array.isArray(value) === false) {
|
|
31
|
-
throw new Error(`You cannot filter field path "${
|
|
32
|
+
throw new Error(`You cannot filter field path "${name}" with between query and not send an array of values.`);
|
|
32
33
|
} else if (value.length !== 2) {
|
|
33
|
-
throw new Error(`You must pass 2 values in the array for field path "${
|
|
34
|
+
throw new Error(`You must pass 2 values in the array for field path "${name}" filtering.`);
|
|
34
35
|
} // we take gte first because it should be a lesser value than lte, eg [5, 10]
|
|
35
36
|
// 6 >= gte && 6 <= lte
|
|
36
37
|
|
|
37
38
|
|
|
38
39
|
const [gte, lte] = value;
|
|
39
|
-
query.
|
|
40
|
+
query.filter.push({
|
|
40
41
|
range: {
|
|
41
42
|
[basePath]: {
|
|
42
43
|
lte,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorBetweenPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","Array","isArray","Error","length","gte","lte","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorBetweenPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","name","Array","isArray","Error","length","gte","lte","filter","push","range"],"sources":["between.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorBetweenPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.between.default\";\n\n public getOperator(): string {\n return \"between\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, basePath, name } = params;\n if (Array.isArray(value) === false) {\n throw new Error(\n `You cannot filter field path \"${name}\" with between query and not send an array of values.`\n );\n } else if (value.length !== 2) {\n throw new Error(\n `You must pass 2 values in the array for field path \"${name}\" filtering.`\n );\n }\n // we take gte first because it should be a lesser value than lte, eg [5, 10]\n // 6 >= gte && 6 <= lte\n const [gte, lte] = value;\n query.filter.push({\n range: {\n [basePath]: {\n lte,\n gte\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,8CAAN,SAA6DC,gFAA7D,CAAqG;EAAA;IAAA;IAAA,4CACjF,qDADiF;EAAA;;EAGjGC,WAAW,GAAW;IACzB,OAAO,SAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC,QAAT;MAAmBC;IAAnB,IAA4BH,MAAlC;;IACA,IAAII,KAAK,CAACC,OAAN,CAAcJ,KAAd,MAAyB,KAA7B,EAAoC;MAChC,MAAM,IAAIK,KAAJ,CACD,iCAAgCH,IAAK,uDADpC,CAAN;IAGH,CAJD,MAIO,IAAIF,KAAK,CAACM,MAAN,KAAiB,CAArB,EAAwB;MAC3B,MAAM,IAAID,KAAJ,CACD,uDAAsDH,IAAK,cAD1D,CAAN;IAGH,CAVG,CAWJ;IACA;;;IACA,MAAM,CAACK,GAAD,EAAMC,GAAN,IAAaR,KAAnB;IACAF,KAAK,CAACW,MAAN,CAAaC,IAAb,CAAkB;MACdC,KAAK,EAAE;QACH,CAACV,QAAD,GAAY;UACRO,GADQ;UAERD;QAFQ;MADT;IADO,CAAlB;EAQH;;AAhCuG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -36,16 +36,35 @@ class ElasticsearchQueryBuilderOperatorEqualPlugin extends _ElasticsearchQueryBu
|
|
|
36
36
|
});
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
const typeOf = typeof value;
|
|
41
|
+
/**
|
|
42
|
+
* If value is a number or boolean, use filtering instead of must/term
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
if (typeOf === "number" || typeOf === "boolean") {
|
|
46
|
+
query.filter.push({
|
|
47
|
+
term: {
|
|
48
|
+
[basePath]: value
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
39
53
|
/**
|
|
40
54
|
* In case we are searching for a string, use regular path.
|
|
41
|
-
* Otherwise use base path
|
|
55
|
+
* Otherwise use base path.
|
|
42
56
|
*/
|
|
43
57
|
|
|
44
58
|
|
|
45
|
-
const useBasePath =
|
|
46
|
-
|
|
59
|
+
const useBasePath = typeOf !== "string";
|
|
60
|
+
const valuePath = useBasePath ? basePath : path;
|
|
61
|
+
/**
|
|
62
|
+
* String or something else.
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
query.filter.push({
|
|
47
66
|
term: {
|
|
48
|
-
[
|
|
67
|
+
[valuePath]: value
|
|
49
68
|
}
|
|
50
69
|
});
|
|
51
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorEqualPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","path","basePath","must_not","push","exists","field","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorEqualPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","path","basePath","must_not","push","exists","field","typeOf","filter","term","useBasePath","valuePath"],"sources":["equal.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorEqualPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.equal.default\";\n\n public getOperator(): string {\n return \"eq\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, path, basePath } = params;\n\n if (value === null) {\n query.must_not.push({\n exists: {\n field: path\n }\n });\n return;\n }\n const typeOf = typeof value;\n /**\n * If value is a number or boolean, use filtering instead of must/term\n */\n if (typeOf === \"number\" || typeOf === \"boolean\") {\n query.filter.push({\n term: {\n [basePath]: value\n }\n });\n return;\n }\n /**\n * In case we are searching for a string, use regular path.\n * Otherwise use base path.\n */\n const useBasePath = typeOf !== \"string\";\n const valuePath = useBasePath ? basePath : path;\n /**\n * String or something else.\n */\n query.filter.push({\n term: {\n [valuePath]: value\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,4CAAN,SAA2DC,gFAA3D,CAAmG;EAAA;IAAA;IAAA,4CAC/E,mDAD+E;EAAA;;EAG/FC,WAAW,GAAW;IACzB,OAAO,IAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC,IAAT;MAAeC;IAAf,IAA4BH,MAAlC;;IAEA,IAAIC,KAAK,KAAK,IAAd,EAAoB;MAChBF,KAAK,CAACK,QAAN,CAAeC,IAAf,CAAoB;QAChBC,MAAM,EAAE;UACJC,KAAK,EAAEL;QADH;MADQ,CAApB;MAKA;IACH;;IACD,MAAMM,MAAM,GAAG,OAAOP,KAAtB;IACA;AACR;AACA;;IACQ,IAAIO,MAAM,KAAK,QAAX,IAAuBA,MAAM,KAAK,SAAtC,EAAiD;MAC7CT,KAAK,CAACU,MAAN,CAAaJ,IAAb,CAAkB;QACdK,IAAI,EAAE;UACF,CAACP,QAAD,GAAYF;QADV;MADQ,CAAlB;MAKA;IACH;IACD;AACR;AACA;AACA;;;IACQ,MAAMU,WAAW,GAAGH,MAAM,KAAK,QAA/B;IACA,MAAMI,SAAS,GAAGD,WAAW,GAAGR,QAAH,GAAcD,IAA3C;IACA;AACR;AACA;;IACQH,KAAK,CAACU,MAAN,CAAaJ,IAAb,CAAkB;MACdK,IAAI,EAAE;QACF,CAACE,SAAD,GAAaX;MADX;IADQ,CAAlB;EAKH;;AA/CqG"}
|
package/plugins/operator/gt.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -26,7 +26,7 @@ class ElasticsearchQueryBuilderOperatorGreaterThanPlugin extends _ElasticsearchQ
|
|
|
26
26
|
value,
|
|
27
27
|
basePath
|
|
28
28
|
} = params;
|
|
29
|
-
query.
|
|
29
|
+
query.filter.push({
|
|
30
30
|
range: {
|
|
31
31
|
[basePath]: {
|
|
32
32
|
gt: value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorGreaterThanPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorGreaterThanPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","filter","push","range","gt"],"sources":["gt.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorGreaterThanPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.greaterThan.default\";\n\n public getOperator(): string {\n return \"gt\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, basePath } = params;\n query.filter.push({\n range: {\n [basePath]: {\n gt: value\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,kDAAN,SAAiEC,gFAAjE,CAAyG;EAAA;IAAA;IAAA,4CACrF,yDADqF;EAAA;;EAGrGC,WAAW,GAAW;IACzB,OAAO,IAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC;IAAT,IAAsBF,MAA5B;IACAD,KAAK,CAACI,MAAN,CAAaC,IAAb,CAAkB;MACdC,KAAK,EAAE;QACH,CAACH,QAAD,GAAY;UACRI,EAAE,EAAEL;QADI;MADT;IADO,CAAlB;EAOH;;AAnB2G"}
|
package/plugins/operator/gte.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -26,7 +26,7 @@ class ElasticsearchQueryBuilderOperatorGreaterThanOrEqualToPlugin extends _Elast
|
|
|
26
26
|
value,
|
|
27
27
|
basePath
|
|
28
28
|
} = params;
|
|
29
|
-
query.
|
|
29
|
+
query.filter.push({
|
|
30
30
|
range: {
|
|
31
31
|
[basePath]: {
|
|
32
32
|
gte: value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorGreaterThanOrEqualToPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorGreaterThanOrEqualToPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","filter","push","range","gte"],"sources":["gte.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorGreaterThanOrEqualToPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.greaterThanOrEqualTo.default\";\n\n public getOperator(): string {\n return \"gte\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, basePath } = params;\n query.filter.push({\n range: {\n [basePath]: {\n gte: value\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,2DAAN,SAA0EC,gFAA1E,CAAkH;EAAA;IAAA;IAAA,4CAC9F,kEAD8F;EAAA;;EAG9GC,WAAW,GAAW;IACzB,OAAO,KAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC;IAAT,IAAsBF,MAA5B;IACAD,KAAK,CAACI,MAAN,CAAaC,IAAb,CAAkB;MACdC,KAAK,EAAE;QACH,CAACH,QAAD,GAAY;UACRI,GAAG,EAAEL;QADG;MADT;IADO,CAAlB;EAOH;;AAnBoH"}
|
package/plugins/operator/in.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -25,24 +25,18 @@ class ElasticsearchQueryBuilderOperatorInPlugin extends _ElasticsearchQueryBuild
|
|
|
25
25
|
const {
|
|
26
26
|
value: values,
|
|
27
27
|
path,
|
|
28
|
-
basePath
|
|
28
|
+
basePath,
|
|
29
|
+
name
|
|
29
30
|
} = params;
|
|
30
31
|
const isArray = Array.isArray(values);
|
|
31
32
|
|
|
32
33
|
if (isArray === false || values.length === 0) {
|
|
33
|
-
throw new Error(`You cannot filter field "${
|
|
34
|
-
}
|
|
34
|
+
throw new Error(`You cannot filter field "${name}" with "in" operator and not send an array of values.`);
|
|
35
|
+
} // Only use ".keyword" if all of the provided values are strings.
|
|
35
36
|
|
|
36
|
-
let useBasePath = false; // Only use ".keyword" if all of the provided values are strings.
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
useBasePath = true;
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
query.must.push({
|
|
38
|
+
const useBasePath = values.some(value => typeof value !== "string");
|
|
39
|
+
query.filter.push({
|
|
46
40
|
terms: {
|
|
47
41
|
[useBasePath ? basePath : path]: values
|
|
48
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorInPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","values","path","basePath","isArray","Array","length","Error","useBasePath","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorInPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","values","path","basePath","name","isArray","Array","length","Error","useBasePath","some","filter","push","terms"],"sources":["in.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorInPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.in.default\";\n\n public getOperator(): string {\n return \"in\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value: values, path, basePath, name } = params;\n const isArray = Array.isArray(values);\n if (isArray === false || values.length === 0) {\n throw new Error(\n `You cannot filter field \"${name}\" with \"in\" operator and not send an array of values.`\n );\n }\n\n // Only use \".keyword\" if all of the provided values are strings.\n const useBasePath = values.some(\n (value: string | number | boolean | null | undefined) => typeof value !== \"string\"\n );\n\n query.filter.push({\n terms: {\n [useBasePath ? basePath : path]: values\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,yCAAN,SAAwDC,gFAAxD,CAAgG;EAAA;IAAA;IAAA,4CAC5E,gDAD4E;EAAA;;EAG5FC,WAAW,GAAW;IACzB,OAAO,IAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAK,EAAEC,MAAT;MAAiBC,IAAjB;MAAuBC,QAAvB;MAAiCC;IAAjC,IAA0CL,MAAhD;IACA,MAAMM,OAAO,GAAGC,KAAK,CAACD,OAAN,CAAcJ,MAAd,CAAhB;;IACA,IAAII,OAAO,KAAK,KAAZ,IAAqBJ,MAAM,CAACM,MAAP,KAAkB,CAA3C,EAA8C;MAC1C,MAAM,IAAIC,KAAJ,CACD,4BAA2BJ,IAAK,uDAD/B,CAAN;IAGH,CAPG,CASJ;;;IACA,MAAMK,WAAW,GAAGR,MAAM,CAACS,IAAP,CACfV,KAAD,IAAyD,OAAOA,KAAP,KAAiB,QAD1D,CAApB;IAIAF,KAAK,CAACa,MAAN,CAAaC,IAAb,CAAkB;MACdC,KAAK,EAAE;QACH,CAACJ,WAAW,GAAGN,QAAH,GAAcD,IAA1B,GAAiCD;MAD9B;IADO,CAAlB;EAKH;;AA7BkG"}
|
package/plugins/operator/lt.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -26,7 +26,7 @@ class ElasticsearchQueryBuilderOperatorLesserThanPlugin extends _ElasticsearchQu
|
|
|
26
26
|
value,
|
|
27
27
|
basePath
|
|
28
28
|
} = params;
|
|
29
|
-
query.
|
|
29
|
+
query.filter.push({
|
|
30
30
|
range: {
|
|
31
31
|
[basePath]: {
|
|
32
32
|
lt: value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorLesserThanPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorLesserThanPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","filter","push","range","lt"],"sources":["lt.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorLesserThanPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.lesserThan.default\";\n\n public getOperator(): string {\n return \"lt\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, basePath } = params;\n query.filter.push({\n range: {\n [basePath]: {\n lt: value\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,iDAAN,SAAgEC,gFAAhE,CAAwG;EAAA;IAAA;IAAA,4CACpF,wDADoF;EAAA;;EAGpGC,WAAW,GAAW;IACzB,OAAO,IAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC;IAAT,IAAsBF,MAA5B;IACAD,KAAK,CAACI,MAAN,CAAaC,IAAb,CAAkB;MACdC,KAAK,EAAE;QACH,CAACH,QAAD,GAAY;UACRI,EAAE,EAAEL;QADI;MADT;IADO,CAAlB;EAOH;;AAnB0G"}
|
package/plugins/operator/lte.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -26,7 +26,7 @@ class ElasticsearchQueryBuilderOperatorLesserThanOrEqualToPlugin extends _Elasti
|
|
|
26
26
|
value,
|
|
27
27
|
basePath
|
|
28
28
|
} = params;
|
|
29
|
-
query.
|
|
29
|
+
query.filter.push({
|
|
30
30
|
range: {
|
|
31
31
|
[basePath]: {
|
|
32
32
|
lte: value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorLesserThanOrEqualToPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorLesserThanOrEqualToPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","filter","push","range","lte"],"sources":["lte.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorLesserThanOrEqualToPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.lesserThanOrEqualTo.default\";\n\n public getOperator(): string {\n return \"lte\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, basePath } = params;\n query.filter.push({\n range: {\n [basePath]: {\n lte: value\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,0DAAN,SAAyEC,gFAAzE,CAAiH;EAAA;IAAA;IAAA,4CAC7F,iEAD6F;EAAA;;EAG7GC,WAAW,GAAW;IACzB,OAAO,KAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC;IAAT,IAAsBF,MAA5B;IACAD,KAAK,CAACI,MAAN,CAAaC,IAAb,CAAkB;MACdC,KAAK,EAAE;QACH,CAACH,QAAD,GAAY;UACRI,GAAG,EAAEL;QADG;MADT;IADO,CAAlB;EAOH;;AAnBmH"}
|
package/plugins/operator/not.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -29,7 +29,7 @@ class ElasticsearchQueryBuilderOperatorNotPlugin extends _ElasticsearchQueryBuil
|
|
|
29
29
|
} = params;
|
|
30
30
|
|
|
31
31
|
if (value === null) {
|
|
32
|
-
query.
|
|
32
|
+
query.filter.push({
|
|
33
33
|
exists: {
|
|
34
34
|
field: path
|
|
35
35
|
}
|
|
@@ -37,10 +37,22 @@ class ElasticsearchQueryBuilderOperatorNotPlugin extends _ElasticsearchQueryBuil
|
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
const
|
|
40
|
+
const typeOf = typeof value;
|
|
41
|
+
|
|
42
|
+
if (typeOf === "boolean") {
|
|
43
|
+
query.filter.push({
|
|
44
|
+
term: {
|
|
45
|
+
[basePath]: !value
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const useBasePath = typeOf !== "string";
|
|
52
|
+
const valuePath = useBasePath ? basePath : path;
|
|
41
53
|
query.must_not.push({
|
|
42
54
|
term: {
|
|
43
|
-
[
|
|
55
|
+
[valuePath]: value
|
|
44
56
|
}
|
|
45
57
|
});
|
|
46
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorNotPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","path","basePath","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorNotPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","path","basePath","filter","push","exists","field","typeOf","term","useBasePath","valuePath","must_not"],"sources":["not.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorNotPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.not.default\";\n\n public getOperator(): string {\n return \"not\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, path, basePath } = params;\n\n if (value === null) {\n query.filter.push({\n exists: {\n field: path\n }\n });\n return;\n }\n\n const typeOf = typeof value;\n\n if (typeOf === \"boolean\") {\n query.filter.push({\n term: {\n [basePath]: !value\n }\n });\n return;\n }\n\n const useBasePath = typeOf !== \"string\";\n const valuePath = useBasePath ? basePath : path;\n query.must_not.push({\n term: {\n [valuePath]: value\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,0CAAN,SAAyDC,gFAAzD,CAAiG;EAAA;IAAA;IAAA,4CAC7E,iDAD6E;EAAA;;EAG7FC,WAAW,GAAW;IACzB,OAAO,KAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC,IAAT;MAAeC;IAAf,IAA4BH,MAAlC;;IAEA,IAAIC,KAAK,KAAK,IAAd,EAAoB;MAChBF,KAAK,CAACK,MAAN,CAAaC,IAAb,CAAkB;QACdC,MAAM,EAAE;UACJC,KAAK,EAAEL;QADH;MADM,CAAlB;MAKA;IACH;;IAED,MAAMM,MAAM,GAAG,OAAOP,KAAtB;;IAEA,IAAIO,MAAM,KAAK,SAAf,EAA0B;MACtBT,KAAK,CAACK,MAAN,CAAaC,IAAb,CAAkB;QACdI,IAAI,EAAE;UACF,CAACN,QAAD,GAAY,CAACF;QADX;MADQ,CAAlB;MAKA;IACH;;IAED,MAAMS,WAAW,GAAGF,MAAM,KAAK,QAA/B;IACA,MAAMG,SAAS,GAAGD,WAAW,GAAGP,QAAH,GAAcD,IAA3C;IACAH,KAAK,CAACa,QAAN,CAAeP,IAAf,CAAoB;MAChBI,IAAI,EAAE;QACF,CAACE,SAAD,GAAaV;MADX;IADU,CAApB;EAKH;;AAxCmG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -24,13 +24,14 @@ class ElasticsearchQueryBuilderOperatorNotBetweenPlugin extends _ElasticsearchQu
|
|
|
24
24
|
apply(query, params) {
|
|
25
25
|
const {
|
|
26
26
|
value,
|
|
27
|
-
basePath
|
|
27
|
+
basePath,
|
|
28
|
+
name
|
|
28
29
|
} = params;
|
|
29
30
|
|
|
30
31
|
if (Array.isArray(value) === false) {
|
|
31
|
-
throw new Error(`You cannot filter field path "${
|
|
32
|
+
throw new Error(`You cannot filter field path "${name}" with "not_between" query and not send an array of values.`);
|
|
32
33
|
} else if (value.length !== 2) {
|
|
33
|
-
throw new Error(`You must pass 2 values in the array for field path "${
|
|
34
|
+
throw new Error(`You must pass 2 values in the array for field path "${name}" filtering.`);
|
|
34
35
|
} // we take gte first because it should be a lesser value than lte, eg [5, 10]
|
|
35
36
|
// 6 >= gte && 6 <= lte === true which in this case it means that record will not match
|
|
36
37
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorNotBetweenPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","Array","isArray","Error","length","gte","lte","must_not","push","range"],"sources":["notBetween.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorNotBetweenPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.notBetween.default\";\n\n public getOperator(): string {\n return \"not_between\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, basePath } = params;\n if (Array.isArray(value) === false) {\n throw new Error(\n `You cannot filter field path \"${
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorNotBetweenPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","name","Array","isArray","Error","length","gte","lte","must_not","push","range"],"sources":["notBetween.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorNotBetweenPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.notBetween.default\";\n\n public getOperator(): string {\n return \"not_between\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, basePath, name } = params;\n if (Array.isArray(value) === false) {\n throw new Error(\n `You cannot filter field path \"${name}\" with \"not_between\" query and not send an array of values.`\n );\n } else if (value.length !== 2) {\n throw new Error(\n `You must pass 2 values in the array for field path \"${name}\" filtering.`\n );\n }\n // we take gte first because it should be a lesser value than lte, eg [5, 10]\n // 6 >= gte && 6 <= lte === true which in this case it means that record will not match\n const [gte, lte] = value;\n query.must_not.push({\n range: {\n [basePath]: {\n lte,\n gte\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,iDAAN,SAAgEC,gFAAhE,CAAwG;EAAA;IAAA;IAAA,4CACpF,wDADoF;EAAA;;EAGpGC,WAAW,GAAW;IACzB,OAAO,aAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC,QAAT;MAAmBC;IAAnB,IAA4BH,MAAlC;;IACA,IAAII,KAAK,CAACC,OAAN,CAAcJ,KAAd,MAAyB,KAA7B,EAAoC;MAChC,MAAM,IAAIK,KAAJ,CACD,iCAAgCH,IAAK,6DADpC,CAAN;IAGH,CAJD,MAIO,IAAIF,KAAK,CAACM,MAAN,KAAiB,CAArB,EAAwB;MAC3B,MAAM,IAAID,KAAJ,CACD,uDAAsDH,IAAK,cAD1D,CAAN;IAGH,CAVG,CAWJ;IACA;;;IACA,MAAM,CAACK,GAAD,EAAMC,GAAN,IAAaR,KAAnB;IACAF,KAAK,CAACW,QAAN,CAAeC,IAAf,CAAoB;MAChBC,KAAK,EAAE;QACH,CAACV,QAAD,GAAY;UACRO,GADQ;UAERD;QAFQ;MADT;IADS,CAApB;EAQH;;AAhC0G"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -25,12 +25,13 @@ class ElasticsearchQueryBuilderOperatorNotInPlugin extends _ElasticsearchQueryBu
|
|
|
25
25
|
const {
|
|
26
26
|
value: values,
|
|
27
27
|
path,
|
|
28
|
-
basePath
|
|
28
|
+
basePath,
|
|
29
|
+
name
|
|
29
30
|
} = params;
|
|
30
31
|
const isArray = Array.isArray(values);
|
|
31
32
|
|
|
32
33
|
if (isArray === false || values.length === 0) {
|
|
33
|
-
throw new Error(`You cannot filter field
|
|
34
|
+
throw new Error(`You cannot filter field "${name}" with "not_in" operator and not send an array of values.`);
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
const useBasePath = values.some(value => typeof value !== "string");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorNotInPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","values","path","basePath","isArray","Array","length","Error","useBasePath","some","must_not","push","terms"],"sources":["notIn.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorNotInPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.notIn.default\";\n\n public getOperator(): string {\n return \"not_in\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value: values, path, basePath } = params;\n const isArray = Array.isArray(values);\n if (isArray === false || values.length === 0) {\n throw new Error(\n `You cannot filter field
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorNotInPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","values","path","basePath","name","isArray","Array","length","Error","useBasePath","some","must_not","push","terms"],"sources":["notIn.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorNotInPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.notIn.default\";\n\n public getOperator(): string {\n return \"not_in\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value: values, path, basePath, name } = params;\n const isArray = Array.isArray(values);\n if (isArray === false || values.length === 0) {\n throw new Error(\n `You cannot filter field \"${name}\" with \"not_in\" operator and not send an array of values.`\n );\n }\n\n const useBasePath = values.some(\n (value: string | number | boolean | null | undefined) => typeof value !== \"string\"\n );\n\n query.must_not.push({\n terms: {\n [useBasePath ? basePath : path]: values\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,4CAAN,SAA2DC,gFAA3D,CAAmG;EAAA;IAAA;IAAA,4CAC/E,mDAD+E;EAAA;;EAG/FC,WAAW,GAAW;IACzB,OAAO,QAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAK,EAAEC,MAAT;MAAiBC,IAAjB;MAAuBC,QAAvB;MAAiCC;IAAjC,IAA0CL,MAAhD;IACA,MAAMM,OAAO,GAAGC,KAAK,CAACD,OAAN,CAAcJ,MAAd,CAAhB;;IACA,IAAII,OAAO,KAAK,KAAZ,IAAqBJ,MAAM,CAACM,MAAP,KAAkB,CAA3C,EAA8C;MAC1C,MAAM,IAAIC,KAAJ,CACD,4BAA2BJ,IAAK,2DAD/B,CAAN;IAGH;;IAED,MAAMK,WAAW,GAAGR,MAAM,CAACS,IAAP,CACfV,KAAD,IAAyD,OAAOA,KAAP,KAAiB,QAD1D,CAApB;IAIAF,KAAK,CAACa,QAAN,CAAeC,IAAf,CAAoB;MAChBC,KAAK,EAAE;QACH,CAACJ,WAAW,GAAGN,QAAH,GAAcD,IAA1B,GAAiCD;MAD9B;IADS,CAApB;EAKH;;AA5BqG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -26,7 +26,7 @@ class ElasticsearchQueryBuilderOperatorStartsWithPlugin extends _ElasticsearchQu
|
|
|
26
26
|
value,
|
|
27
27
|
basePath
|
|
28
28
|
} = params;
|
|
29
|
-
query.
|
|
29
|
+
query.filter.push({
|
|
30
30
|
match_phrase_prefix: {
|
|
31
31
|
[basePath]: value
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ElasticsearchQueryBuilderOperatorStartsWithPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","
|
|
1
|
+
{"version":3,"names":["ElasticsearchQueryBuilderOperatorStartsWithPlugin","ElasticsearchQueryBuilderOperatorPlugin","getOperator","apply","query","params","value","basePath","filter","push","match_phrase_prefix"],"sources":["startsWith.ts"],"sourcesContent":["import { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { ElasticsearchBoolQueryConfig, ElasticsearchQueryBuilderArgsPlugin } from \"~/types\";\n\nexport class ElasticsearchQueryBuilderOperatorStartsWithPlugin extends ElasticsearchQueryBuilderOperatorPlugin {\n public override name = \"elasticsearch.queryBuilder.operator.startsWith.default\";\n\n public getOperator(): string {\n return \"startsWith\";\n }\n\n public apply(\n query: ElasticsearchBoolQueryConfig,\n params: ElasticsearchQueryBuilderArgsPlugin\n ): void {\n const { value, basePath } = params;\n query.filter.push({\n match_phrase_prefix: {\n [basePath]: value\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,iDAAN,SAAgEC,gFAAhE,CAAwG;EAAA;IAAA;IAAA,4CACpF,wDADoF;EAAA;;EAGpGC,WAAW,GAAW;IACzB,OAAO,YAAP;EACH;;EAEMC,KAAK,CACRC,KADQ,EAERC,MAFQ,EAGJ;IACJ,MAAM;MAAEC,KAAF;MAASC;IAAT,IAAsBF,MAA5B;IACAD,KAAK,CAACI,MAAN,CAAaC,IAAb,CAAkB;MACdC,mBAAmB,EAAE;QACjB,CAACH,QAAD,GAAYD;MADK;IADP,CAAlB;EAKH;;AAjB0G"}
|
package/sort.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { SortType, SortOrder } from "./types";
|
|
2
|
-
import { ElasticsearchFieldPlugin } from "./plugins
|
|
3
|
-
interface SortOption {
|
|
4
|
-
path: string;
|
|
5
|
-
order: "ASC" | "DESC" | "asc" | "desc";
|
|
6
|
-
}
|
|
2
|
+
import { ElasticsearchFieldPlugin } from "./plugins";
|
|
7
3
|
interface CreateSortParams {
|
|
8
|
-
sort: string[]
|
|
4
|
+
sort: string[];
|
|
9
5
|
defaults?: {
|
|
10
6
|
field?: string;
|
|
11
7
|
order?: SortOrder;
|
package/sort.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -11,7 +11,6 @@ var _error = _interopRequireDefault(require("@webiny/error"));
|
|
|
11
11
|
|
|
12
12
|
const sortRegExp = new RegExp(/^([a-zA-Z-0-9_@]+)_(ASC|DESC)$/);
|
|
13
13
|
|
|
14
|
-
// TODO refactor so the sort input is of SortOption type
|
|
15
14
|
const createSort = params => {
|
|
16
15
|
const {
|
|
17
16
|
sort,
|
|
@@ -39,7 +38,6 @@ const createSort = params => {
|
|
|
39
38
|
/**
|
|
40
39
|
* Cast as string because nothing else should be allowed yet.
|
|
41
40
|
*/
|
|
42
|
-
// @ts-refactor
|
|
43
41
|
|
|
44
42
|
|
|
45
43
|
return sort.reduce((acc, value) => {
|
package/sort.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sortRegExp","RegExp","createSort","params","sort","defaults","fieldPlugins","length","field","order","unmappedType","unmapped_type","undefined","reduce","acc","value","WebinyError","match","initialOrder","toLowerCase","plugin","path","getPath","getSortOptions"],"sources":["sort.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { FieldSortOptions, SortType, SortOrder } from \"
|
|
1
|
+
{"version":3,"names":["sortRegExp","RegExp","createSort","params","sort","defaults","fieldPlugins","length","field","order","unmappedType","unmapped_type","undefined","reduce","acc","value","WebinyError","match","initialOrder","toLowerCase","plugin","path","getPath","getSortOptions"],"sources":["sort.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { FieldSortOptions, SortType, SortOrder } from \"~/types\";\nimport { ElasticsearchFieldPlugin } from \"~/plugins\";\n\nconst sortRegExp = new RegExp(/^([a-zA-Z-0-9_@]+)_(ASC|DESC)$/);\n\ninterface CreateSortParams {\n sort: string[];\n defaults?: {\n field?: string;\n order?: SortOrder;\n unmappedType?: string;\n };\n fieldPlugins: Record<string, ElasticsearchFieldPlugin>;\n}\n\nexport const createSort = (params: CreateSortParams): SortType => {\n const { sort, defaults, fieldPlugins } = params;\n if (!sort || sort.length === 0) {\n const { field, order, unmappedType } = defaults || {};\n /**\n * We say that our system defaults is always id since all records we create have some kind of primary ID.\n */\n return {\n [field || \"id.keyword\"]: {\n order: order || \"desc\",\n unmapped_type: unmappedType || undefined\n }\n };\n }\n /**\n * Cast as string because nothing else should be allowed yet.\n */\n return sort.reduce((acc, value) => {\n if (typeof value !== \"string\") {\n throw new WebinyError(`Sort as object is not supported..`);\n }\n const match = value.match(sortRegExp);\n\n if (!match) {\n throw new WebinyError(`Cannot sort by \"${value}\".`);\n }\n\n const [, field, initialOrder] = match;\n const order: SortOrder = initialOrder.toLowerCase() === \"asc\" ? \"asc\" : \"desc\";\n\n const plugin: ElasticsearchFieldPlugin = fieldPlugins[field] || fieldPlugins[\"*\"];\n if (!plugin) {\n throw new WebinyError(`Missing plugin for the field \"${field}\"`, \"PLUGIN_SORT_ERROR\", {\n field\n });\n }\n /**\n * In case field plugin is the global one, change the * with actual field name.\n * Custom path methods will return their own values anyway so replacing * will not matter.\n */\n const path = plugin.getPath(field);\n\n acc[path] = plugin.getSortOptions(order);\n\n return acc;\n }, {} as Record<string, FieldSortOptions>);\n};\n"],"mappings":";;;;;;;;;AAAA;;AAIA,MAAMA,UAAU,GAAG,IAAIC,MAAJ,CAAW,gCAAX,CAAnB;;AAYO,MAAMC,UAAU,GAAIC,MAAD,IAAwC;EAC9D,MAAM;IAAEC,IAAF;IAAQC,QAAR;IAAkBC;EAAlB,IAAmCH,MAAzC;;EACA,IAAI,CAACC,IAAD,IAASA,IAAI,CAACG,MAAL,KAAgB,CAA7B,EAAgC;IAC5B,MAAM;MAAEC,KAAF;MAASC,KAAT;MAAgBC;IAAhB,IAAiCL,QAAQ,IAAI,EAAnD;IACA;AACR;AACA;;IACQ,OAAO;MACH,CAACG,KAAK,IAAI,YAAV,GAAyB;QACrBC,KAAK,EAAEA,KAAK,IAAI,MADK;QAErBE,aAAa,EAAED,YAAY,IAAIE;MAFV;IADtB,CAAP;EAMH;EACD;AACJ;AACA;;;EACI,OAAOR,IAAI,CAACS,MAAL,CAAY,CAACC,GAAD,EAAMC,KAAN,KAAgB;IAC/B,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAC3B,MAAM,IAAIC,cAAJ,CAAiB,mCAAjB,CAAN;IACH;;IACD,MAAMC,KAAK,GAAGF,KAAK,CAACE,KAAN,CAAYjB,UAAZ,CAAd;;IAEA,IAAI,CAACiB,KAAL,EAAY;MACR,MAAM,IAAID,cAAJ,CAAiB,mBAAkBD,KAAM,IAAzC,CAAN;IACH;;IAED,MAAM,GAAGP,KAAH,EAAUU,YAAV,IAA0BD,KAAhC;IACA,MAAMR,KAAgB,GAAGS,YAAY,CAACC,WAAb,OAA+B,KAA/B,GAAuC,KAAvC,GAA+C,MAAxE;IAEA,MAAMC,MAAgC,GAAGd,YAAY,CAACE,KAAD,CAAZ,IAAuBF,YAAY,CAAC,GAAD,CAA5E;;IACA,IAAI,CAACc,MAAL,EAAa;MACT,MAAM,IAAIJ,cAAJ,CAAiB,iCAAgCR,KAAM,GAAvD,EAA2D,mBAA3D,EAAgF;QAClFA;MADkF,CAAhF,CAAN;IAGH;IACD;AACR;AACA;AACA;;;IACQ,MAAMa,IAAI,GAAGD,MAAM,CAACE,OAAP,CAAed,KAAf,CAAb;IAEAM,GAAG,CAACO,IAAD,CAAH,GAAYD,MAAM,CAACG,cAAP,CAAsBd,KAAtB,CAAZ;IAEA,OAAOK,GAAP;EACH,CA5BM,EA4BJ,EA5BI,CAAP;AA6BH,CA9CM"}
|
package/types.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Client } from "@elastic/elasticsearch";
|
|
2
|
-
import { ApiResponse } from "@elastic/elasticsearch/lib/Transport";
|
|
1
|
+
import { Client, ApiResponse } from "@elastic/elasticsearch";
|
|
3
2
|
import { BoolQueryConfig as esBoolQueryConfig, Query as esQuery } from "elastic-ts";
|
|
4
3
|
import { Context } from "@webiny/api/types";
|
|
5
4
|
/**
|
|
@@ -25,7 +24,7 @@ export interface ElasticsearchBoolQueryConfig extends esBoolQueryConfig {
|
|
|
25
24
|
*
|
|
26
25
|
* @category Elasticsearch
|
|
27
26
|
*/
|
|
28
|
-
export declare type ElasticsearchQueryOperator = "eq" | "not" | "in" | "not_in" | "contains" | "not_contains" | "between" | "not_between" | "gt" | "gte" | "lt" | "lte";
|
|
27
|
+
export declare type ElasticsearchQueryOperator = "eq" | "not" | "in" | "not_in" | "contains" | "not_contains" | "between" | "not_between" | "gt" | "gte" | "lt" | "lte" | string;
|
|
29
28
|
/**
|
|
30
29
|
* Definition for arguments of the ElasticsearchQueryBuilderOperatorPlugin.apply method.
|
|
31
30
|
*
|
|
@@ -35,6 +34,10 @@ export declare type ElasticsearchQueryOperator = "eq" | "not" | "in" | "not_in"
|
|
|
35
34
|
* @category Elasticsearch
|
|
36
35
|
*/
|
|
37
36
|
export interface ElasticsearchQueryBuilderArgsPlugin {
|
|
37
|
+
/**
|
|
38
|
+
* Name of the field.
|
|
39
|
+
*/
|
|
40
|
+
name: string;
|
|
38
41
|
/**
|
|
39
42
|
* A full path to the field. Including the ".keyword" if it is added.
|
|
40
43
|
*/
|
package/types.js
CHANGED
|
@@ -9,11 +9,11 @@ var _exportNames = {
|
|
|
9
9
|
Object.defineProperty(exports, "ApiResponse", {
|
|
10
10
|
enumerable: true,
|
|
11
11
|
get: function () {
|
|
12
|
-
return
|
|
12
|
+
return _elasticsearch.ApiResponse;
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _elasticsearch = require("@elastic/elasticsearch");
|
|
17
17
|
|
|
18
18
|
var _elasticTs = require("elastic-ts");
|
|
19
19
|
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { Client
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { Client, ApiResponse } from \"@elastic/elasticsearch\";\nimport { BoolQueryConfig as esBoolQueryConfig, Query as esQuery } from \"elastic-ts\";\nimport { Context } from \"@webiny/api/types\";\n/**\n * Re-export some dep lib types.\n */\nexport * from \"elastic-ts\";\nexport { ApiResponse };\n\nexport interface ElasticsearchContext extends Context {\n elasticsearch: Client;\n}\n\n/**\n * To simplify our plugins, we say that query contains arrays of objects, not single objects.\n * And that they all are defined as empty arrays at the start.\n */\nexport interface ElasticsearchBoolQueryConfig extends esBoolQueryConfig {\n must: esQuery[];\n filter: esQuery[];\n should: esQuery[];\n must_not: esQuery[];\n}\n\n/**\n * Definitions of possible Elasticsearch operators.\n *\n * @category Elasticsearch\n */\nexport type ElasticsearchQueryOperator =\n | \"eq\"\n | \"not\"\n | \"in\"\n | \"not_in\"\n | \"contains\"\n | \"not_contains\"\n | \"between\"\n | \"not_between\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | string;\n\n/**\n * Definition for arguments of the ElasticsearchQueryBuilderOperatorPlugin.apply method.\n *\n * @see ElasticsearchQueryBuilderOperatorPlugin.apply\n *\n * @category Plugin\n * @category Elasticsearch\n */\nexport interface ElasticsearchQueryBuilderArgsPlugin {\n /**\n * Name of the field.\n */\n name: string;\n /**\n * A full path to the field. Including the \".keyword\" if it is added.\n */\n path: string;\n /**\n * A path to the field, plain.\n */\n basePath: string;\n /**\n * Value to apply.\n */\n value: any;\n /**\n * Is path containing the \".keyword\"\n */\n keyword: boolean;\n}\n\n/**\n * Elasticsearch responses.\n */\nexport interface ElasticsearchSearchResponseHit<T> {\n _source: T;\n sort: string;\n}\nexport interface ElasticsearchSearchResponseAggregationBucket<T> {\n key: T;\n}\nexport interface ElasticsearchSearchResponse<T = any> {\n body: {\n hits: {\n hits: ElasticsearchSearchResponseHit<T>[];\n total: {\n value: number;\n };\n };\n aggregations: {\n [key: string]: {\n buckets: ElasticsearchSearchResponseAggregationBucket<T>[];\n };\n };\n };\n}\n\nexport interface ElasticsearchIndexRequestBodyMappingsDynamicTemplate {\n [key: string]: {\n path_match?: string;\n path_unmatch?: string;\n match_mapping_type?: string;\n match?: string;\n unmatch?: string;\n mapping?: {\n numeric_detection?: boolean;\n date_detection?: boolean;\n type?:\n | \"string\"\n | \"date\"\n | \"binary\"\n | \"boolean\"\n | \"object\"\n | \"ip\"\n | \"geo\"\n | \"long\"\n | \"integer\"\n | \"short\"\n | \"byte\"\n | \"double\"\n | \"float\"\n | \"half_float\"\n | \"scaled_float\"\n | \"unsigned_long\"\n | string;\n search_analyzer?: string;\n analyzer?: string;\n fields?: {\n [key: string]:\n | {\n type: string;\n search_analyzer?: string;\n analyzer?: string;\n ignore_above?: number;\n [key: string]: any;\n }\n | undefined;\n };\n [key: string]: any;\n };\n [key: string]: any;\n };\n}\n\ninterface ElasticsearchIndexRequestBodySettings {\n analysis?: {\n [key: string]: any;\n };\n number_of_shards?: number;\n number_of_routing_shards?: number;\n codec?: string;\n routing_partition_size?: number;\n soft_deletes?: {\n enabled?: boolean;\n retention_lease?: {\n period?: string;\n };\n };\n load_fixed_bitset_filters_eagerly?: boolean;\n shard?: {\n check_on_startup?: boolean | \"checksum\";\n };\n number_of_replicas?: number;\n auto_expand_replicas?: string | \"all\" | false;\n search?: {\n idle?: {\n after?: string;\n };\n };\n refresh_interval?: string;\n max_result_window?: number;\n max_inner_result_window?: number;\n max_rescore_window?: number;\n max_docvalue_fields_search?: number;\n max_script_fields?: number;\n max_ngram_diff?: number;\n max_shingle_diff?: number;\n max_refresh_listeners?: number;\n analyze?: {\n max_token_count?: number;\n };\n highlight?: {\n max_analyzed_offset?: number;\n };\n max_terms_count?: number;\n max_regex_length?: number;\n query?: {\n default_field?: string;\n };\n routing?: {\n allocation?: {\n enable?: \"all\" | \"primaries\" | \"new_primaries\" | \"none\";\n };\n rebalance?: {\n enable?: \"all\" | \"primaries\" | \"new_primaries\" | \"none\";\n };\n };\n gc_deletes?: string;\n default_pipeline?: string;\n final_pipeline?: string;\n hidden?: boolean;\n [key: string]: any;\n}\n\nexport interface ElasticsearchIndexRequestBody {\n settings?: {\n index?: Partial<ElasticsearchIndexRequestBodySettings>;\n };\n mappings: {\n numeric_detection?: boolean;\n dynamic_templates?: ElasticsearchIndexRequestBodyMappingsDynamicTemplate[];\n properties?: {\n [key: string]: {\n analyzer?: string;\n type?: string;\n normalizer?: string;\n index?: string;\n fields?: {\n [key: string]: {\n type: string;\n ignore_above?: number;\n search_analyzer?: string;\n analyzer?: string;\n [key: string]: any;\n };\n };\n [key: string]: any;\n };\n };\n [key: string]: any;\n };\n aliases?: {\n [key: string]: {\n filter?: {\n [key: string]: any;\n };\n index_routing?: string;\n is_hidden?: boolean;\n is_write_index?: boolean;\n routing?: string;\n search_routing?: string;\n };\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAMA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
package/where.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -95,6 +95,7 @@ const applyWhere = params => {
|
|
|
95
95
|
basePath
|
|
96
96
|
});
|
|
97
97
|
operatorPlugin.apply(query, {
|
|
98
|
+
name: field,
|
|
98
99
|
value,
|
|
99
100
|
path,
|
|
100
101
|
basePath,
|
package/where.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["parseWhereKeyRegExp","RegExp","parseWhereKey","key","match","Error","field","operation","operator","slice","ALL","ElasticsearchFieldPlugin","applyWhere","params","query","where","fields","operators","hasOwnProperty","initialValue","undefined","fieldPlugin","WebinyError","operatorPlugin","path","getPath","basePath","getBasePath","value","toSearchValue","apply","keyword"],"sources":["where.ts"],"sourcesContent":["import { ElasticsearchBoolQueryConfig } from \"~/types\";\nimport { ElasticsearchFieldPlugin } from \"~/plugins/definition/ElasticsearchFieldPlugin\";\nimport { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport WebinyError from \"@webiny/error\";\n\ntype Records<T> = Record<string, T>;\n\nexport interface ApplyWhereParams {\n query: ElasticsearchBoolQueryConfig;\n where: Records<any>;\n fields: Records<ElasticsearchFieldPlugin>;\n operators: Records<ElasticsearchQueryBuilderOperatorPlugin>;\n}\n\nexport interface ParseWhereKeyResult {\n field: string;\n operator: string;\n}\n\nconst parseWhereKeyRegExp = new RegExp(/^([a-zA-Z0-9]+)(_[a-zA-Z0-9_]+)?$/);\n\nexport const parseWhereKey = (key: string): ParseWhereKeyResult => {\n const match = key.match(parseWhereKeyRegExp);\n\n if (!match) {\n throw new Error(`It is not possible to search by key \"${key}\"`);\n }\n\n const [, field, operation = \"eq\"] = match;\n\n if (!field.match(/^([a-zA-Z]+)$/)) {\n throw new Error(`Cannot filter by \"${field}\".`);\n }\n\n const operator = operation.match(/^_/) ? operation.slice(1) : operation;\n\n return { field, operator };\n};\n\nconst ALL = ElasticsearchFieldPlugin.ALL;\n\nexport const applyWhere = (params: ApplyWhereParams): void => {\n const { query, where, fields, operators } = params;\n\n for (const key in where) {\n if (where.hasOwnProperty(key) === false) {\n continue;\n }\n const initialValue = where[key];\n /**\n * There is a possibility that undefined is sent as a value, so just skip it.\n */\n if (initialValue === undefined) {\n continue;\n }\n const { field, operator } = parseWhereKey(key);\n const fieldPlugin: ElasticsearchFieldPlugin = fields[field] || fields[ALL];\n if (!fieldPlugin) {\n throw new WebinyError(\n `Missing plugin for the field \"${field}\".`,\n \"PLUGIN_WHERE_ERROR\",\n {\n field\n }\n );\n }\n const operatorPlugin = operators[operator];\n if (!operatorPlugin) {\n throw new WebinyError(\n `Missing plugin for the operator \"${operator}\"`,\n \"PLUGIN_WHERE_ERROR\",\n {\n operator\n }\n );\n }\n\n /**\n * Get the path but in the case of * (all fields, replace * with the field.\n * Custom path would return its own value anyways.\n */\n const path = fieldPlugin.getPath(field);\n const basePath = fieldPlugin.getBasePath(field);\n /**\n * Transform the value for the search.\n */\n const value = fieldPlugin.toSearchValue({\n value: initialValue,\n path,\n basePath\n });\n\n operatorPlugin.apply(query, {\n value,\n path,\n basePath,\n keyword: fieldPlugin.keyword\n });\n }\n};\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAgBA,MAAMA,mBAAmB,GAAG,IAAIC,MAAJ,CAAW,mCAAX,CAA5B;;AAEO,MAAMC,aAAa,GAAIC,GAAD,IAAsC;EAC/D,MAAMC,KAAK,GAAGD,GAAG,CAACC,KAAJ,CAAUJ,mBAAV,CAAd;;EAEA,IAAI,CAACI,KAAL,EAAY;IACR,MAAM,IAAIC,KAAJ,CAAW,wCAAuCF,GAAI,GAAtD,CAAN;EACH;;EAED,MAAM,GAAGG,KAAH,EAAUC,SAAS,GAAG,IAAtB,IAA8BH,KAApC;;EAEA,IAAI,CAACE,KAAK,CAACF,KAAN,CAAY,eAAZ,CAAL,EAAmC;IAC/B,MAAM,IAAIC,KAAJ,CAAW,qBAAoBC,KAAM,IAArC,CAAN;EACH;;EAED,MAAME,QAAQ,GAAGD,SAAS,CAACH,KAAV,CAAgB,IAAhB,IAAwBG,SAAS,CAACE,KAAV,CAAgB,CAAhB,CAAxB,GAA6CF,SAA9D;EAEA,OAAO;IAAED,KAAF;IAASE;EAAT,CAAP;AACH,CAhBM;;;AAkBP,MAAME,GAAG,GAAGC,kDAAA,CAAyBD,GAArC;;AAEO,MAAME,UAAU,GAAIC,MAAD,IAAoC;EAC1D,MAAM;IAAEC,KAAF;IAASC,KAAT;IAAgBC,MAAhB;IAAwBC;EAAxB,IAAsCJ,MAA5C;;EAEA,KAAK,MAAMV,GAAX,IAAkBY,KAAlB,EAAyB;IACrB,IAAIA,KAAK,CAACG,cAAN,CAAqBf,GAArB,MAA8B,KAAlC,EAAyC;MACrC;IACH;;IACD,MAAMgB,YAAY,GAAGJ,KAAK,CAACZ,GAAD,CAA1B;IACA;AACR;AACA;;IACQ,IAAIgB,YAAY,KAAKC,SAArB,EAAgC;MAC5B;IACH;;IACD,MAAM;MAAEd,KAAF;MAASE;IAAT,IAAsBN,aAAa,CAACC,GAAD,CAAzC;IACA,MAAMkB,WAAqC,GAAGL,MAAM,CAACV,KAAD,CAAN,IAAiBU,MAAM,CAACN,GAAD,CAArE;;IACA,IAAI,CAACW,WAAL,EAAkB;MACd,MAAM,IAAIC,cAAJ,CACD,iCAAgChB,KAAM,IADrC,EAEF,oBAFE,EAGF;QACIA;MADJ,CAHE,CAAN;IAOH;;IACD,MAAMiB,cAAc,GAAGN,SAAS,CAACT,QAAD,CAAhC;;IACA,IAAI,CAACe,cAAL,EAAqB;MACjB,MAAM,IAAID,cAAJ,CACD,oCAAmCd,QAAS,GAD3C,EAEF,oBAFE,EAGF;QACIA;MADJ,CAHE,CAAN;IAOH;IAED;AACR;AACA;AACA;;;IACQ,MAAMgB,IAAI,GAAGH,WAAW,CAACI,OAAZ,CAAoBnB,KAApB,CAAb;IACA,MAAMoB,QAAQ,GAAGL,WAAW,CAACM,WAAZ,CAAwBrB,KAAxB,CAAjB;IACA;AACR;AACA;;IACQ,MAAMsB,KAAK,GAAGP,WAAW,CAACQ,aAAZ,CAA0B;MACpCD,KAAK,EAAET,YAD6B;MAEpCK,IAFoC;MAGpCE;IAHoC,CAA1B,CAAd;IAMAH,cAAc,CAACO,KAAf,CAAqBhB,KAArB,EAA4B;
|
|
1
|
+
{"version":3,"names":["parseWhereKeyRegExp","RegExp","parseWhereKey","key","match","Error","field","operation","operator","slice","ALL","ElasticsearchFieldPlugin","applyWhere","params","query","where","fields","operators","hasOwnProperty","initialValue","undefined","fieldPlugin","WebinyError","operatorPlugin","path","getPath","basePath","getBasePath","value","toSearchValue","apply","name","keyword"],"sources":["where.ts"],"sourcesContent":["import { ElasticsearchBoolQueryConfig } from \"~/types\";\nimport { ElasticsearchFieldPlugin } from \"~/plugins/definition/ElasticsearchFieldPlugin\";\nimport { ElasticsearchQueryBuilderOperatorPlugin } from \"~/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport WebinyError from \"@webiny/error\";\n\ntype Records<T> = Record<string, T>;\n\nexport interface ApplyWhereParams {\n query: ElasticsearchBoolQueryConfig;\n where: Records<any>;\n fields: Records<ElasticsearchFieldPlugin>;\n operators: Records<ElasticsearchQueryBuilderOperatorPlugin>;\n}\n\nexport interface ParseWhereKeyResult {\n field: string;\n operator: string;\n}\n\nconst parseWhereKeyRegExp = new RegExp(/^([a-zA-Z0-9]+)(_[a-zA-Z0-9_]+)?$/);\n\nexport const parseWhereKey = (key: string): ParseWhereKeyResult => {\n const match = key.match(parseWhereKeyRegExp);\n\n if (!match) {\n throw new Error(`It is not possible to search by key \"${key}\"`);\n }\n\n const [, field, operation = \"eq\"] = match;\n\n if (!field.match(/^([a-zA-Z]+)$/)) {\n throw new Error(`Cannot filter by \"${field}\".`);\n }\n\n const operator = operation.match(/^_/) ? operation.slice(1) : operation;\n\n return { field, operator };\n};\n\nconst ALL = ElasticsearchFieldPlugin.ALL;\n\nexport const applyWhere = (params: ApplyWhereParams): void => {\n const { query, where, fields, operators } = params;\n\n for (const key in where) {\n if (where.hasOwnProperty(key) === false) {\n continue;\n }\n const initialValue = where[key];\n /**\n * There is a possibility that undefined is sent as a value, so just skip it.\n */\n if (initialValue === undefined) {\n continue;\n }\n const { field, operator } = parseWhereKey(key);\n const fieldPlugin: ElasticsearchFieldPlugin = fields[field] || fields[ALL];\n if (!fieldPlugin) {\n throw new WebinyError(\n `Missing plugin for the field \"${field}\".`,\n \"PLUGIN_WHERE_ERROR\",\n {\n field\n }\n );\n }\n const operatorPlugin = operators[operator];\n if (!operatorPlugin) {\n throw new WebinyError(\n `Missing plugin for the operator \"${operator}\"`,\n \"PLUGIN_WHERE_ERROR\",\n {\n operator\n }\n );\n }\n\n /**\n * Get the path but in the case of * (all fields, replace * with the field.\n * Custom path would return its own value anyways.\n */\n const path = fieldPlugin.getPath(field);\n const basePath = fieldPlugin.getBasePath(field);\n /**\n * Transform the value for the search.\n */\n const value = fieldPlugin.toSearchValue({\n value: initialValue,\n path,\n basePath\n });\n\n operatorPlugin.apply(query, {\n name: field,\n value,\n path,\n basePath,\n keyword: fieldPlugin.keyword\n });\n }\n};\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAgBA,MAAMA,mBAAmB,GAAG,IAAIC,MAAJ,CAAW,mCAAX,CAA5B;;AAEO,MAAMC,aAAa,GAAIC,GAAD,IAAsC;EAC/D,MAAMC,KAAK,GAAGD,GAAG,CAACC,KAAJ,CAAUJ,mBAAV,CAAd;;EAEA,IAAI,CAACI,KAAL,EAAY;IACR,MAAM,IAAIC,KAAJ,CAAW,wCAAuCF,GAAI,GAAtD,CAAN;EACH;;EAED,MAAM,GAAGG,KAAH,EAAUC,SAAS,GAAG,IAAtB,IAA8BH,KAApC;;EAEA,IAAI,CAACE,KAAK,CAACF,KAAN,CAAY,eAAZ,CAAL,EAAmC;IAC/B,MAAM,IAAIC,KAAJ,CAAW,qBAAoBC,KAAM,IAArC,CAAN;EACH;;EAED,MAAME,QAAQ,GAAGD,SAAS,CAACH,KAAV,CAAgB,IAAhB,IAAwBG,SAAS,CAACE,KAAV,CAAgB,CAAhB,CAAxB,GAA6CF,SAA9D;EAEA,OAAO;IAAED,KAAF;IAASE;EAAT,CAAP;AACH,CAhBM;;;AAkBP,MAAME,GAAG,GAAGC,kDAAA,CAAyBD,GAArC;;AAEO,MAAME,UAAU,GAAIC,MAAD,IAAoC;EAC1D,MAAM;IAAEC,KAAF;IAASC,KAAT;IAAgBC,MAAhB;IAAwBC;EAAxB,IAAsCJ,MAA5C;;EAEA,KAAK,MAAMV,GAAX,IAAkBY,KAAlB,EAAyB;IACrB,IAAIA,KAAK,CAACG,cAAN,CAAqBf,GAArB,MAA8B,KAAlC,EAAyC;MACrC;IACH;;IACD,MAAMgB,YAAY,GAAGJ,KAAK,CAACZ,GAAD,CAA1B;IACA;AACR;AACA;;IACQ,IAAIgB,YAAY,KAAKC,SAArB,EAAgC;MAC5B;IACH;;IACD,MAAM;MAAEd,KAAF;MAASE;IAAT,IAAsBN,aAAa,CAACC,GAAD,CAAzC;IACA,MAAMkB,WAAqC,GAAGL,MAAM,CAACV,KAAD,CAAN,IAAiBU,MAAM,CAACN,GAAD,CAArE;;IACA,IAAI,CAACW,WAAL,EAAkB;MACd,MAAM,IAAIC,cAAJ,CACD,iCAAgChB,KAAM,IADrC,EAEF,oBAFE,EAGF;QACIA;MADJ,CAHE,CAAN;IAOH;;IACD,MAAMiB,cAAc,GAAGN,SAAS,CAACT,QAAD,CAAhC;;IACA,IAAI,CAACe,cAAL,EAAqB;MACjB,MAAM,IAAID,cAAJ,CACD,oCAAmCd,QAAS,GAD3C,EAEF,oBAFE,EAGF;QACIA;MADJ,CAHE,CAAN;IAOH;IAED;AACR;AACA;AACA;;;IACQ,MAAMgB,IAAI,GAAGH,WAAW,CAACI,OAAZ,CAAoBnB,KAApB,CAAb;IACA,MAAMoB,QAAQ,GAAGL,WAAW,CAACM,WAAZ,CAAwBrB,KAAxB,CAAjB;IACA;AACR;AACA;;IACQ,MAAMsB,KAAK,GAAGP,WAAW,CAACQ,aAAZ,CAA0B;MACpCD,KAAK,EAAET,YAD6B;MAEpCK,IAFoC;MAGpCE;IAHoC,CAA1B,CAAd;IAMAH,cAAc,CAACO,KAAf,CAAqBhB,KAArB,EAA4B;MACxBiB,IAAI,EAAEzB,KADkB;MAExBsB,KAFwB;MAGxBJ,IAHwB;MAIxBE,QAJwB;MAKxBM,OAAO,EAAEX,WAAW,CAACW;IALG,CAA5B;EAOH;AACJ,CA3DM"}
|