@sebspark/opensearch 0.2.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +21 -14
- package/dist/index.d.ts +21 -14
- package/dist/index.js +19 -11
- package/dist/index.mjs +18 -10
- package/package.json +3 -5
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;
|
|
@@ -200,6 +195,9 @@ type OpenSearchQueryBody<T extends {
|
|
|
200
195
|
id: string;
|
|
201
196
|
}, K = T> = K extends DeepPartial<T> ? {
|
|
202
197
|
query: {
|
|
198
|
+
ids?: {
|
|
199
|
+
values: string[];
|
|
200
|
+
};
|
|
203
201
|
filter?: OpenSearchFilter<T>;
|
|
204
202
|
match?: Match<T>;
|
|
205
203
|
match_all?: {
|
|
@@ -224,26 +222,35 @@ type OpenSearchQueryBody<T extends {
|
|
|
224
222
|
match_phrase_prefix?: MatchPhrasePrefix<T>;
|
|
225
223
|
more_like_this?: MoreLikeThis<T>;
|
|
226
224
|
};
|
|
225
|
+
sort?: Sort<T>[];
|
|
226
|
+
from?: number;
|
|
227
|
+
size?: number;
|
|
227
228
|
_source?: OpenSearchFields<K>;
|
|
228
229
|
} : never;
|
|
230
|
+
type Order = 'asc' | 'desc';
|
|
231
|
+
type Mode = 'min' | 'max' | 'sum' | 'avg' | 'median';
|
|
232
|
+
type Missing = '_first' | '_last' | 'custom_value';
|
|
229
233
|
type Sort<T> = {
|
|
230
|
-
[P in
|
|
231
|
-
order
|
|
234
|
+
[P in NestedPaths<T>]?: Order | {
|
|
235
|
+
order?: Order;
|
|
236
|
+
mode?: Mode;
|
|
237
|
+
missing?: Missing;
|
|
238
|
+
unmapped_type?: BasicOpenSearchFieldTypes;
|
|
239
|
+
numeric_type?: NumberTypes;
|
|
240
|
+
format?: string;
|
|
232
241
|
};
|
|
233
|
-
}
|
|
242
|
+
};
|
|
234
243
|
type OpenSearchQuery<T extends {
|
|
235
244
|
id: string;
|
|
236
245
|
}, K = T> = RequestParams.Search<OpenSearchQueryBody<T, K>> & K extends DeepPartial<T> ? {
|
|
237
246
|
index: string;
|
|
238
247
|
body: OpenSearchQueryBody<T, K>;
|
|
239
|
-
aggregations?: Aggregations<K>;
|
|
240
|
-
sort?: Sort<K>;
|
|
241
|
-
from?: number;
|
|
242
|
-
size?: number;
|
|
243
248
|
} : never;
|
|
244
|
-
type
|
|
249
|
+
type StringTypes = 'text' | 'keyword';
|
|
250
|
+
type NumberTypes = 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float';
|
|
251
|
+
type BasicOpenSearchFieldTypes = StringTypes | NumberTypes | 'date' | 'boolean' | 'binary' | 'nested';
|
|
245
252
|
type ElementType<T> = T extends Array<infer U> ? U : T;
|
|
246
|
-
type OpenSearchFieldType<T> = ElementType<T> extends string ?
|
|
253
|
+
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
254
|
type FieldOptions<T> = {
|
|
248
255
|
type: OpenSearchFieldType<NotUndefined<T>>;
|
|
249
256
|
};
|
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;
|
|
@@ -200,6 +195,9 @@ type OpenSearchQueryBody<T extends {
|
|
|
200
195
|
id: string;
|
|
201
196
|
}, K = T> = K extends DeepPartial<T> ? {
|
|
202
197
|
query: {
|
|
198
|
+
ids?: {
|
|
199
|
+
values: string[];
|
|
200
|
+
};
|
|
203
201
|
filter?: OpenSearchFilter<T>;
|
|
204
202
|
match?: Match<T>;
|
|
205
203
|
match_all?: {
|
|
@@ -224,26 +222,35 @@ type OpenSearchQueryBody<T extends {
|
|
|
224
222
|
match_phrase_prefix?: MatchPhrasePrefix<T>;
|
|
225
223
|
more_like_this?: MoreLikeThis<T>;
|
|
226
224
|
};
|
|
225
|
+
sort?: Sort<T>[];
|
|
226
|
+
from?: number;
|
|
227
|
+
size?: number;
|
|
227
228
|
_source?: OpenSearchFields<K>;
|
|
228
229
|
} : never;
|
|
230
|
+
type Order = 'asc' | 'desc';
|
|
231
|
+
type Mode = 'min' | 'max' | 'sum' | 'avg' | 'median';
|
|
232
|
+
type Missing = '_first' | '_last' | 'custom_value';
|
|
229
233
|
type Sort<T> = {
|
|
230
|
-
[P in
|
|
231
|
-
order
|
|
234
|
+
[P in NestedPaths<T>]?: Order | {
|
|
235
|
+
order?: Order;
|
|
236
|
+
mode?: Mode;
|
|
237
|
+
missing?: Missing;
|
|
238
|
+
unmapped_type?: BasicOpenSearchFieldTypes;
|
|
239
|
+
numeric_type?: NumberTypes;
|
|
240
|
+
format?: string;
|
|
232
241
|
};
|
|
233
|
-
}
|
|
242
|
+
};
|
|
234
243
|
type OpenSearchQuery<T extends {
|
|
235
244
|
id: string;
|
|
236
245
|
}, K = T> = RequestParams.Search<OpenSearchQueryBody<T, K>> & K extends DeepPartial<T> ? {
|
|
237
246
|
index: string;
|
|
238
247
|
body: OpenSearchQueryBody<T, K>;
|
|
239
|
-
aggregations?: Aggregations<K>;
|
|
240
|
-
sort?: Sort<K>;
|
|
241
|
-
from?: number;
|
|
242
|
-
size?: number;
|
|
243
248
|
} : never;
|
|
244
|
-
type
|
|
249
|
+
type StringTypes = 'text' | 'keyword';
|
|
250
|
+
type NumberTypes = 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float';
|
|
251
|
+
type BasicOpenSearchFieldTypes = StringTypes | NumberTypes | 'date' | 'boolean' | 'binary' | 'nested';
|
|
245
252
|
type ElementType<T> = T extends Array<infer U> ? U : T;
|
|
246
|
-
type OpenSearchFieldType<T> = ElementType<T> extends string ?
|
|
253
|
+
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
254
|
type FieldOptions<T> = {
|
|
248
255
|
type: OpenSearchFieldType<NotUndefined<T>>;
|
|
249
256
|
};
|
package/dist/index.js
CHANGED
|
@@ -35,22 +35,21 @@ __export(src_exports, {
|
|
|
35
35
|
module.exports = __toCommonJS(src_exports);
|
|
36
36
|
|
|
37
37
|
// src/openSearchHelper.ts
|
|
38
|
-
var
|
|
38
|
+
var import_node_assert = __toESM(require("assert"));
|
|
39
39
|
|
|
40
40
|
// src/fixIds.ts
|
|
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
|
+
ids: q.ids,
|
|
47
48
|
bool: q.bool ? fixBool(q.bool) : void 0,
|
|
48
49
|
match: q.match ? fixId(q.match) : void 0,
|
|
49
50
|
collapse: q.collapse,
|
|
50
51
|
exists: q.exists ? fixExists(q.exists) : void 0,
|
|
51
|
-
fields: q.fields,
|
|
52
52
|
filter: q.filter ? fixFilter(q.filter) : void 0,
|
|
53
|
-
from: q.from,
|
|
54
53
|
fuzzy: q.fuzzy ? fixId(q.fuzzy) : void 0,
|
|
55
54
|
highlight: q.highlight,
|
|
56
55
|
match_all: q.match_all,
|
|
@@ -62,17 +61,18 @@ var fixIds = (searchQuery) => {
|
|
|
62
61
|
range: q.range ? fixId(q.range) : void 0,
|
|
63
62
|
regexp: q.regexp ? fixId(q.regexp) : void 0,
|
|
64
63
|
script_score: q.script_score,
|
|
65
|
-
size: q.size,
|
|
66
64
|
term: q.term ? fixId(q.term) : void 0,
|
|
67
65
|
terms: q.terms ? fixId(q.terms) : void 0,
|
|
68
66
|
wildcard: q.wildcard ? fixId(q.wildcard) : void 0
|
|
69
|
-
}
|
|
67
|
+
},
|
|
68
|
+
_source,
|
|
69
|
+
from,
|
|
70
|
+
size,
|
|
71
|
+
sort: sort ? fixId(sort) : void 0
|
|
70
72
|
};
|
|
71
73
|
return {
|
|
72
74
|
...searchQuery,
|
|
73
|
-
body:
|
|
74
|
-
...clean(body)
|
|
75
|
-
}
|
|
75
|
+
body: clean(body)
|
|
76
76
|
};
|
|
77
77
|
};
|
|
78
78
|
var fixBool = (bool) => ({
|
|
@@ -116,7 +116,15 @@ var fixId = (old) => {
|
|
|
116
116
|
return fixed;
|
|
117
117
|
};
|
|
118
118
|
var fixIdValue = (val) => val === "id" ? "_id" : val;
|
|
119
|
-
var clean = (obj) =>
|
|
119
|
+
var clean = (obj) => {
|
|
120
|
+
const cleaned = JSON.parse(JSON.stringify(obj));
|
|
121
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
122
|
+
if (Array.isArray(value)) {
|
|
123
|
+
cleaned[key] = value.filter(Boolean);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return cleaned;
|
|
127
|
+
};
|
|
120
128
|
|
|
121
129
|
// src/openSearchHelper.ts
|
|
122
130
|
var typedSearch = async (client, searchQuery) => {
|
|
@@ -173,7 +181,7 @@ var isLeafNode = (obj) => {
|
|
|
173
181
|
(value) => typeof value === "object" && value !== null && !Array.isArray(value)
|
|
174
182
|
);
|
|
175
183
|
};
|
|
176
|
-
(0,
|
|
184
|
+
(0, import_node_assert.default)(
|
|
177
185
|
isLeafNode({
|
|
178
186
|
type: "nested",
|
|
179
187
|
properties: { name: { type: "keyword" }, type: { type: "keyword" } }
|
package/dist/index.mjs
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
// src/openSearchHelper.ts
|
|
2
|
-
import assert from "assert";
|
|
2
|
+
import assert from "node:assert";
|
|
3
3
|
|
|
4
4
|
// src/fixIds.ts
|
|
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
|
+
ids: q.ids,
|
|
11
12
|
bool: q.bool ? fixBool(q.bool) : void 0,
|
|
12
13
|
match: q.match ? fixId(q.match) : void 0,
|
|
13
14
|
collapse: q.collapse,
|
|
14
15
|
exists: q.exists ? fixExists(q.exists) : void 0,
|
|
15
|
-
fields: q.fields,
|
|
16
16
|
filter: q.filter ? fixFilter(q.filter) : void 0,
|
|
17
|
-
from: q.from,
|
|
18
17
|
fuzzy: q.fuzzy ? fixId(q.fuzzy) : void 0,
|
|
19
18
|
highlight: q.highlight,
|
|
20
19
|
match_all: q.match_all,
|
|
@@ -26,17 +25,18 @@ var fixIds = (searchQuery) => {
|
|
|
26
25
|
range: q.range ? fixId(q.range) : void 0,
|
|
27
26
|
regexp: q.regexp ? fixId(q.regexp) : void 0,
|
|
28
27
|
script_score: q.script_score,
|
|
29
|
-
size: q.size,
|
|
30
28
|
term: q.term ? fixId(q.term) : void 0,
|
|
31
29
|
terms: q.terms ? fixId(q.terms) : void 0,
|
|
32
30
|
wildcard: q.wildcard ? fixId(q.wildcard) : void 0
|
|
33
|
-
}
|
|
31
|
+
},
|
|
32
|
+
_source,
|
|
33
|
+
from,
|
|
34
|
+
size,
|
|
35
|
+
sort: sort ? fixId(sort) : void 0
|
|
34
36
|
};
|
|
35
37
|
return {
|
|
36
38
|
...searchQuery,
|
|
37
|
-
body:
|
|
38
|
-
...clean(body)
|
|
39
|
-
}
|
|
39
|
+
body: clean(body)
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
var fixBool = (bool) => ({
|
|
@@ -80,7 +80,15 @@ var fixId = (old) => {
|
|
|
80
80
|
return fixed;
|
|
81
81
|
};
|
|
82
82
|
var fixIdValue = (val) => val === "id" ? "_id" : val;
|
|
83
|
-
var clean = (obj) =>
|
|
83
|
+
var clean = (obj) => {
|
|
84
|
+
const cleaned = JSON.parse(JSON.stringify(obj));
|
|
85
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
86
|
+
if (Array.isArray(value)) {
|
|
87
|
+
cleaned[key] = value.filter(Boolean);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return cleaned;
|
|
91
|
+
};
|
|
84
92
|
|
|
85
93
|
// src/openSearchHelper.ts
|
|
86
94
|
var typedSearch = async (client, searchQuery) => {
|
package/package.json
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebspark/opensearch",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
-
"files": [
|
|
9
|
-
"dist"
|
|
10
|
-
],
|
|
8
|
+
"files": ["dist"],
|
|
11
9
|
"scripts": {
|
|
12
10
|
"build": "tsup-node src/index.ts --format esm,cjs --dts",
|
|
13
11
|
"dev": "tsc --watch --noEmit",
|
|
@@ -20,7 +18,7 @@
|
|
|
20
18
|
"tsconfig": "*"
|
|
21
19
|
},
|
|
22
20
|
"dependencies": {
|
|
23
|
-
"@opensearch-project/opensearch": "2.
|
|
21
|
+
"@opensearch-project/opensearch": "2.7.0",
|
|
24
22
|
"omit": "1.0.1"
|
|
25
23
|
}
|
|
26
24
|
}
|