@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 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 keyof NestedFields<T>]?: {
231
- order: 'asc' | 'desc';
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 BasicOpenSearchFieldTypes = 'text' | 'keyword' | 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float' | 'date' | 'boolean' | 'binary' | 'nested';
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 ? 'text' | 'keyword' : ElementType<T> extends number ? 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float' : ElementType<T> extends boolean ? 'boolean' : ElementType<T> extends Date ? 'date' : BasicOpenSearchFieldTypes;
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 keyof NestedFields<T>]?: {
231
- order: 'asc' | 'desc';
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 BasicOpenSearchFieldTypes = 'text' | 'keyword' | 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float' | 'date' | 'boolean' | 'binary' | 'nested';
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 ? 'text' | 'keyword' : ElementType<T> extends number ? 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float' : ElementType<T> extends boolean ? 'boolean' : ElementType<T> extends Date ? 'date' : BasicOpenSearchFieldTypes;
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 import_assert = __toESM(require("assert"));
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.query;
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) => Object.entries(obj).filter(([, val]) => val !== void 0).reduce((m, [prop, val]) => ({ ...m, [prop]: val }), {});
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, import_assert.default)(
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.query;
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) => Object.entries(obj).filter(([, val]) => val !== void 0).reduce((m, [prop, val]) => ({ ...m, [prop]: val }), {});
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.2.3",
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.5.0",
21
+ "@opensearch-project/opensearch": "2.7.0",
24
22
  "omit": "1.0.1"
25
23
  }
26
24
  }