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