@sebspark/opensearch 0.2.3 → 0.3.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/dist/index.d.mts +18 -14
- package/dist/index.d.ts +18 -14
- package/dist/index.js +16 -9
- package/dist/index.mjs +16 -9
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -127,11 +127,6 @@ type OpenSearchFilter<T> = {
|
|
|
127
127
|
type Collapse<T> = {
|
|
128
128
|
field: keyof NestedFields<T>;
|
|
129
129
|
};
|
|
130
|
-
type Aggregations<T> = {
|
|
131
|
-
[key: string]: {
|
|
132
|
-
field?: keyof NestedFields<T>;
|
|
133
|
-
};
|
|
134
|
-
};
|
|
135
130
|
type ScriptScore = {
|
|
136
131
|
script: {
|
|
137
132
|
source: string;
|
|
@@ -224,26 +219,35 @@ type OpenSearchQueryBody<T extends {
|
|
|
224
219
|
match_phrase_prefix?: MatchPhrasePrefix<T>;
|
|
225
220
|
more_like_this?: MoreLikeThis<T>;
|
|
226
221
|
};
|
|
222
|
+
sort?: Sort<T>[];
|
|
223
|
+
from?: number;
|
|
224
|
+
size?: number;
|
|
227
225
|
_source?: OpenSearchFields<K>;
|
|
228
226
|
} : never;
|
|
227
|
+
type Order = 'asc' | 'desc';
|
|
228
|
+
type Mode = 'min' | 'max' | 'sum' | 'avg' | 'median';
|
|
229
|
+
type Missing = '_first' | '_last' | 'custom_value';
|
|
229
230
|
type Sort<T> = {
|
|
230
|
-
[P in
|
|
231
|
-
order
|
|
231
|
+
[P in NestedPaths<T>]?: Order | {
|
|
232
|
+
order?: Order;
|
|
233
|
+
mode?: Mode;
|
|
234
|
+
missing?: Missing;
|
|
235
|
+
unmapped_type?: BasicOpenSearchFieldTypes;
|
|
236
|
+
numeric_type?: NumberTypes;
|
|
237
|
+
format?: string;
|
|
232
238
|
};
|
|
233
|
-
}
|
|
239
|
+
};
|
|
234
240
|
type OpenSearchQuery<T extends {
|
|
235
241
|
id: string;
|
|
236
242
|
}, K = T> = RequestParams.Search<OpenSearchQueryBody<T, K>> & K extends DeepPartial<T> ? {
|
|
237
243
|
index: string;
|
|
238
244
|
body: OpenSearchQueryBody<T, K>;
|
|
239
|
-
aggregations?: Aggregations<K>;
|
|
240
|
-
sort?: Sort<K>;
|
|
241
|
-
from?: number;
|
|
242
|
-
size?: number;
|
|
243
245
|
} : never;
|
|
244
|
-
type
|
|
246
|
+
type StringTypes = 'text' | 'keyword';
|
|
247
|
+
type NumberTypes = 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float';
|
|
248
|
+
type BasicOpenSearchFieldTypes = StringTypes | NumberTypes | 'date' | 'boolean' | 'binary' | 'nested';
|
|
245
249
|
type ElementType<T> = T extends Array<infer U> ? U : T;
|
|
246
|
-
type OpenSearchFieldType<T> = ElementType<T> extends string ?
|
|
250
|
+
type OpenSearchFieldType<T> = ElementType<T> extends string ? StringTypes : ElementType<T> extends number ? NumberTypes : ElementType<T> extends boolean ? 'boolean' : ElementType<T> extends Date ? 'date' : BasicOpenSearchFieldTypes;
|
|
247
251
|
type FieldOptions<T> = {
|
|
248
252
|
type: OpenSearchFieldType<NotUndefined<T>>;
|
|
249
253
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -127,11 +127,6 @@ type OpenSearchFilter<T> = {
|
|
|
127
127
|
type Collapse<T> = {
|
|
128
128
|
field: keyof NestedFields<T>;
|
|
129
129
|
};
|
|
130
|
-
type Aggregations<T> = {
|
|
131
|
-
[key: string]: {
|
|
132
|
-
field?: keyof NestedFields<T>;
|
|
133
|
-
};
|
|
134
|
-
};
|
|
135
130
|
type ScriptScore = {
|
|
136
131
|
script: {
|
|
137
132
|
source: string;
|
|
@@ -224,26 +219,35 @@ type OpenSearchQueryBody<T extends {
|
|
|
224
219
|
match_phrase_prefix?: MatchPhrasePrefix<T>;
|
|
225
220
|
more_like_this?: MoreLikeThis<T>;
|
|
226
221
|
};
|
|
222
|
+
sort?: Sort<T>[];
|
|
223
|
+
from?: number;
|
|
224
|
+
size?: number;
|
|
227
225
|
_source?: OpenSearchFields<K>;
|
|
228
226
|
} : never;
|
|
227
|
+
type Order = 'asc' | 'desc';
|
|
228
|
+
type Mode = 'min' | 'max' | 'sum' | 'avg' | 'median';
|
|
229
|
+
type Missing = '_first' | '_last' | 'custom_value';
|
|
229
230
|
type Sort<T> = {
|
|
230
|
-
[P in
|
|
231
|
-
order
|
|
231
|
+
[P in NestedPaths<T>]?: Order | {
|
|
232
|
+
order?: Order;
|
|
233
|
+
mode?: Mode;
|
|
234
|
+
missing?: Missing;
|
|
235
|
+
unmapped_type?: BasicOpenSearchFieldTypes;
|
|
236
|
+
numeric_type?: NumberTypes;
|
|
237
|
+
format?: string;
|
|
232
238
|
};
|
|
233
|
-
}
|
|
239
|
+
};
|
|
234
240
|
type OpenSearchQuery<T extends {
|
|
235
241
|
id: string;
|
|
236
242
|
}, K = T> = RequestParams.Search<OpenSearchQueryBody<T, K>> & K extends DeepPartial<T> ? {
|
|
237
243
|
index: string;
|
|
238
244
|
body: OpenSearchQueryBody<T, K>;
|
|
239
|
-
aggregations?: Aggregations<K>;
|
|
240
|
-
sort?: Sort<K>;
|
|
241
|
-
from?: number;
|
|
242
|
-
size?: number;
|
|
243
245
|
} : never;
|
|
244
|
-
type
|
|
246
|
+
type StringTypes = 'text' | 'keyword';
|
|
247
|
+
type NumberTypes = 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float';
|
|
248
|
+
type BasicOpenSearchFieldTypes = StringTypes | NumberTypes | 'date' | 'boolean' | 'binary' | 'nested';
|
|
245
249
|
type ElementType<T> = T extends Array<infer U> ? U : T;
|
|
246
|
-
type OpenSearchFieldType<T> = ElementType<T> extends string ?
|
|
250
|
+
type OpenSearchFieldType<T> = ElementType<T> extends string ? StringTypes : ElementType<T> extends number ? NumberTypes : ElementType<T> extends boolean ? 'boolean' : ElementType<T> extends Date ? 'date' : BasicOpenSearchFieldTypes;
|
|
247
251
|
type FieldOptions<T> = {
|
|
248
252
|
type: OpenSearchFieldType<NotUndefined<T>>;
|
|
249
253
|
};
|
package/dist/index.js
CHANGED
|
@@ -41,16 +41,14 @@ var import_assert = __toESM(require("assert"));
|
|
|
41
41
|
var import_omit = __toESM(require("omit"));
|
|
42
42
|
var omitId = (0, import_omit.default)("id");
|
|
43
43
|
var fixIds = (searchQuery) => {
|
|
44
|
-
const q = searchQuery.body
|
|
44
|
+
const { query: q, _source, from, size, sort } = searchQuery.body;
|
|
45
45
|
const body = {
|
|
46
46
|
query: {
|
|
47
47
|
bool: q.bool ? fixBool(q.bool) : void 0,
|
|
48
48
|
match: q.match ? fixId(q.match) : void 0,
|
|
49
49
|
collapse: q.collapse,
|
|
50
50
|
exists: q.exists ? fixExists(q.exists) : void 0,
|
|
51
|
-
fields: q.fields,
|
|
52
51
|
filter: q.filter ? fixFilter(q.filter) : void 0,
|
|
53
|
-
from: q.from,
|
|
54
52
|
fuzzy: q.fuzzy ? fixId(q.fuzzy) : void 0,
|
|
55
53
|
highlight: q.highlight,
|
|
56
54
|
match_all: q.match_all,
|
|
@@ -62,17 +60,18 @@ var fixIds = (searchQuery) => {
|
|
|
62
60
|
range: q.range ? fixId(q.range) : void 0,
|
|
63
61
|
regexp: q.regexp ? fixId(q.regexp) : void 0,
|
|
64
62
|
script_score: q.script_score,
|
|
65
|
-
size: q.size,
|
|
66
63
|
term: q.term ? fixId(q.term) : void 0,
|
|
67
64
|
terms: q.terms ? fixId(q.terms) : void 0,
|
|
68
65
|
wildcard: q.wildcard ? fixId(q.wildcard) : void 0
|
|
69
|
-
}
|
|
66
|
+
},
|
|
67
|
+
_source,
|
|
68
|
+
from,
|
|
69
|
+
size,
|
|
70
|
+
sort: sort ? fixId(sort) : void 0
|
|
70
71
|
};
|
|
71
72
|
return {
|
|
72
73
|
...searchQuery,
|
|
73
|
-
body:
|
|
74
|
-
...clean(body)
|
|
75
|
-
}
|
|
74
|
+
body: clean(body)
|
|
76
75
|
};
|
|
77
76
|
};
|
|
78
77
|
var fixBool = (bool) => ({
|
|
@@ -116,7 +115,15 @@ var fixId = (old) => {
|
|
|
116
115
|
return fixed;
|
|
117
116
|
};
|
|
118
117
|
var fixIdValue = (val) => val === "id" ? "_id" : val;
|
|
119
|
-
var clean = (obj) =>
|
|
118
|
+
var clean = (obj) => {
|
|
119
|
+
const cleaned = JSON.parse(JSON.stringify(obj));
|
|
120
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
121
|
+
if (Array.isArray(value)) {
|
|
122
|
+
cleaned[key] = value.filter(Boolean);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return cleaned;
|
|
126
|
+
};
|
|
120
127
|
|
|
121
128
|
// src/openSearchHelper.ts
|
|
122
129
|
var typedSearch = async (client, searchQuery) => {
|
package/dist/index.mjs
CHANGED
|
@@ -5,16 +5,14 @@ import assert from "assert";
|
|
|
5
5
|
import omit from "omit";
|
|
6
6
|
var omitId = omit("id");
|
|
7
7
|
var fixIds = (searchQuery) => {
|
|
8
|
-
const q = searchQuery.body
|
|
8
|
+
const { query: q, _source, from, size, sort } = searchQuery.body;
|
|
9
9
|
const body = {
|
|
10
10
|
query: {
|
|
11
11
|
bool: q.bool ? fixBool(q.bool) : void 0,
|
|
12
12
|
match: q.match ? fixId(q.match) : void 0,
|
|
13
13
|
collapse: q.collapse,
|
|
14
14
|
exists: q.exists ? fixExists(q.exists) : void 0,
|
|
15
|
-
fields: q.fields,
|
|
16
15
|
filter: q.filter ? fixFilter(q.filter) : void 0,
|
|
17
|
-
from: q.from,
|
|
18
16
|
fuzzy: q.fuzzy ? fixId(q.fuzzy) : void 0,
|
|
19
17
|
highlight: q.highlight,
|
|
20
18
|
match_all: q.match_all,
|
|
@@ -26,17 +24,18 @@ var fixIds = (searchQuery) => {
|
|
|
26
24
|
range: q.range ? fixId(q.range) : void 0,
|
|
27
25
|
regexp: q.regexp ? fixId(q.regexp) : void 0,
|
|
28
26
|
script_score: q.script_score,
|
|
29
|
-
size: q.size,
|
|
30
27
|
term: q.term ? fixId(q.term) : void 0,
|
|
31
28
|
terms: q.terms ? fixId(q.terms) : void 0,
|
|
32
29
|
wildcard: q.wildcard ? fixId(q.wildcard) : void 0
|
|
33
|
-
}
|
|
30
|
+
},
|
|
31
|
+
_source,
|
|
32
|
+
from,
|
|
33
|
+
size,
|
|
34
|
+
sort: sort ? fixId(sort) : void 0
|
|
34
35
|
};
|
|
35
36
|
return {
|
|
36
37
|
...searchQuery,
|
|
37
|
-
body:
|
|
38
|
-
...clean(body)
|
|
39
|
-
}
|
|
38
|
+
body: clean(body)
|
|
40
39
|
};
|
|
41
40
|
};
|
|
42
41
|
var fixBool = (bool) => ({
|
|
@@ -80,7 +79,15 @@ var fixId = (old) => {
|
|
|
80
79
|
return fixed;
|
|
81
80
|
};
|
|
82
81
|
var fixIdValue = (val) => val === "id" ? "_id" : val;
|
|
83
|
-
var clean = (obj) =>
|
|
82
|
+
var clean = (obj) => {
|
|
83
|
+
const cleaned = JSON.parse(JSON.stringify(obj));
|
|
84
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
85
|
+
if (Array.isArray(value)) {
|
|
86
|
+
cleaned[key] = value.filter(Boolean);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return cleaned;
|
|
90
|
+
};
|
|
84
91
|
|
|
85
92
|
// src/openSearchHelper.ts
|
|
86
93
|
var typedSearch = async (client, searchQuery) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebspark/opensearch",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"tsconfig": "*"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@opensearch-project/opensearch": "2.
|
|
23
|
+
"@opensearch-project/opensearch": "2.6.0",
|
|
24
24
|
"omit": "1.0.1"
|
|
25
25
|
}
|
|
26
26
|
}
|