@sebspark/opensearch 0.2.0 → 0.2.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
@@ -77,14 +77,14 @@ type Regexp<T> = {
77
77
  type StandardAnalyzer = 'standard' | 'simple' | 'whitespace' | 'stop' | 'keyword' | 'pattern' | 'fingerprint';
78
78
  type LanguageAnalyzer = 'arabic' | 'armenian' | 'basque' | 'bengali' | 'brazilian' | 'bulgarian' | 'catalan' | 'czech' | 'danish' | 'dutch' | 'english' | 'estonian' | 'finnish' | 'french' | 'galician' | 'german' | 'greek' | 'hindi' | 'hungarian' | 'indonesian' | 'irish' | 'italian' | 'latvian' | 'lithuanian' | 'norwegian' | 'persian' | 'portuguese' | 'romanian' | 'russian' | 'sorani' | 'spanish' | 'swedish' | 'turkish' | 'thai';
79
79
  type Analyzer = StandardAnalyzer | LanguageAnalyzer;
80
- type Match<T> = {
80
+ type Match<T> = Partial<{
81
81
  [P in NestedStringPaths<T>]: string | {
82
82
  query: string;
83
83
  operator?: 'and' | 'or';
84
84
  minimum_should_match?: number;
85
85
  analyzer?: Analyzer;
86
86
  };
87
- };
87
+ }>;
88
88
  type MultiMatchParam<T extends string> = T | `${T}^${number}` | `${SubstringOf<T>}*`;
89
89
  type MultiMatch<T> = {
90
90
  query: string;
@@ -203,6 +203,9 @@ type OpenSearchQueryBody<T extends {
203
203
  fields?: OpenSearchFields<K>;
204
204
  filter?: OpenSearchFilter<T>;
205
205
  match?: Match<T>;
206
+ match_all?: {
207
+ boost?: number;
208
+ };
206
209
  multi_match?: MultiMatch<T>;
207
210
  from?: number;
208
211
  size?: number;
package/dist/index.d.ts CHANGED
@@ -77,14 +77,14 @@ type Regexp<T> = {
77
77
  type StandardAnalyzer = 'standard' | 'simple' | 'whitespace' | 'stop' | 'keyword' | 'pattern' | 'fingerprint';
78
78
  type LanguageAnalyzer = 'arabic' | 'armenian' | 'basque' | 'bengali' | 'brazilian' | 'bulgarian' | 'catalan' | 'czech' | 'danish' | 'dutch' | 'english' | 'estonian' | 'finnish' | 'french' | 'galician' | 'german' | 'greek' | 'hindi' | 'hungarian' | 'indonesian' | 'irish' | 'italian' | 'latvian' | 'lithuanian' | 'norwegian' | 'persian' | 'portuguese' | 'romanian' | 'russian' | 'sorani' | 'spanish' | 'swedish' | 'turkish' | 'thai';
79
79
  type Analyzer = StandardAnalyzer | LanguageAnalyzer;
80
- type Match<T> = {
80
+ type Match<T> = Partial<{
81
81
  [P in NestedStringPaths<T>]: string | {
82
82
  query: string;
83
83
  operator?: 'and' | 'or';
84
84
  minimum_should_match?: number;
85
85
  analyzer?: Analyzer;
86
86
  };
87
- };
87
+ }>;
88
88
  type MultiMatchParam<T extends string> = T | `${T}^${number}` | `${SubstringOf<T>}*`;
89
89
  type MultiMatch<T> = {
90
90
  query: string;
@@ -203,6 +203,9 @@ type OpenSearchQueryBody<T extends {
203
203
  fields?: OpenSearchFields<K>;
204
204
  filter?: OpenSearchFilter<T>;
205
205
  match?: Match<T>;
206
+ match_all?: {
207
+ boost?: number;
208
+ };
206
209
  multi_match?: MultiMatch<T>;
207
210
  from?: number;
208
211
  size?: number;
package/dist/index.js CHANGED
@@ -36,9 +36,92 @@ module.exports = __toCommonJS(src_exports);
36
36
 
37
37
  // src/openSearchHelper.ts
38
38
  var import_assert = __toESM(require("assert"));
39
+
40
+ // src/fixIds.ts
41
+ var import_omit = __toESM(require("omit"));
42
+ var omitId = (0, import_omit.default)("id");
43
+ var fixIds = (searchQuery) => {
44
+ const q = searchQuery.body.query;
45
+ const body = {
46
+ query: {
47
+ bool: q.bool ? fixBool(q.bool) : void 0,
48
+ match: q.match ? fixId(q.match) : void 0,
49
+ collapse: q.collapse,
50
+ exists: q.exists ? fixExists(q.exists) : void 0,
51
+ fields: q.fields,
52
+ filter: q.filter ? fixFilter(q.filter) : void 0,
53
+ from: q.from,
54
+ fuzzy: q.fuzzy ? fixId(q.fuzzy) : void 0,
55
+ highlight: q.highlight,
56
+ match_all: q.match_all,
57
+ match_phrase: q.match_phrase ? fixId(q.match_phrase) : void 0,
58
+ match_phrase_prefix: q.match_phrase_prefix ? fixId(q.match_phrase_prefix) : void 0,
59
+ more_like_this: q.more_like_this ? fixWithFields(q.more_like_this) : void 0,
60
+ multi_match: q.multi_match ? fixId(q.multi_match) : void 0,
61
+ prefix: q.prefix ? fixId(q.prefix) : void 0,
62
+ range: q.range ? fixId(q.range) : void 0,
63
+ regexp: q.regexp ? fixId(q.regexp) : void 0,
64
+ script_score: q.script_score,
65
+ size: q.size,
66
+ term: q.term ? fixId(q.term) : void 0,
67
+ terms: q.terms ? fixId(q.terms) : void 0,
68
+ wildcard: q.wildcard ? fixId(q.wildcard) : void 0
69
+ }
70
+ };
71
+ return {
72
+ ...searchQuery,
73
+ body: {
74
+ ...clean(body)
75
+ }
76
+ };
77
+ };
78
+ var fixBool = (bool) => ({
79
+ ...bool,
80
+ filter: bool.filter ? Array.isArray(bool.filter) ? bool.filter.map(fixFilter) : fixFilter(bool.filter) : void 0,
81
+ boost: bool.boost,
82
+ minimum_should_match: bool.minimum_should_match,
83
+ must: bool.must ? Array.isArray(bool.must) ? bool.must.map(fixFilter) : fixFilter(bool.must) : void 0,
84
+ must_not: bool.must_not ? Array.isArray(bool.must_not) ? bool.must_not.map(fixFilter) : fixFilter(bool.must_not) : void 0,
85
+ should: bool.should ? Array.isArray(bool.should) ? bool.should.map(fixFilter) : fixFilter(bool.should) : void 0
86
+ });
87
+ var fixFilter = (filter) => clean({
88
+ bool: filter.bool ? fixBool(filter.bool) : void 0,
89
+ exists: filter.exists ? fixExists(filter.exists) : void 0,
90
+ fuzzy: filter.fuzzy ? fixId(filter.fuzzy) : void 0,
91
+ match: filter.match ? fixId(filter.match) : void 0,
92
+ match_phrase: filter.match_phrase ? fixId(filter.match_phrase) : void 0,
93
+ multi_match: filter.multi_match ? fixId(filter.multi_match) : void 0,
94
+ match_phrase_prefix: filter.match_phrase_prefix ? fixId(filter.match_phrase_prefix) : void 0,
95
+ prefix: filter.prefix ? fixId(filter.prefix) : void 0,
96
+ query_string: filter.query_string ? fixWithFields(filter.query_string) : void 0,
97
+ range: filter.range ? fixId(filter.range) : void 0,
98
+ regexp: filter.regexp ? fixId(filter.regexp) : void 0,
99
+ simple_query_string: filter.simple_query_string ? fixWithFields(filter.simple_query_string) : void 0,
100
+ term: filter.term ? fixId(filter.term) : void 0,
101
+ terms: filter.terms ? fixId(filter.terms) : void 0,
102
+ wildcard: filter.wildcard ? fixId(filter.wildcard) : void 0
103
+ });
104
+ var fixWithFields = (old) => ({
105
+ ...old,
106
+ fields: old.fields ? old.fields.map(fixIdValue) : void 0
107
+ });
108
+ var fixExists = (exists) => ({
109
+ ...exists,
110
+ field: fixIdValue(exists.field)
111
+ });
112
+ var fixId = (old) => {
113
+ const fixed = omitId(old);
114
+ if (old.id)
115
+ fixed._id = old.id;
116
+ return fixed;
117
+ };
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 }), {});
120
+
121
+ // src/openSearchHelper.ts
39
122
  var typedSearch = async (client, searchQuery) => {
40
123
  const response = await client.search(
41
- searchQuery
124
+ fixIds(searchQuery)
42
125
  );
43
126
  const results = response.body.hits.hits.map(
44
127
  // biome-ignore lint/suspicious/noExplicitAny: <explanation>
package/dist/index.mjs CHANGED
@@ -1,8 +1,91 @@
1
1
  // src/openSearchHelper.ts
2
2
  import assert from "assert";
3
+
4
+ // src/fixIds.ts
5
+ import omit from "omit";
6
+ var omitId = omit("id");
7
+ var fixIds = (searchQuery) => {
8
+ const q = searchQuery.body.query;
9
+ const body = {
10
+ query: {
11
+ bool: q.bool ? fixBool(q.bool) : void 0,
12
+ match: q.match ? fixId(q.match) : void 0,
13
+ collapse: q.collapse,
14
+ exists: q.exists ? fixExists(q.exists) : void 0,
15
+ fields: q.fields,
16
+ filter: q.filter ? fixFilter(q.filter) : void 0,
17
+ from: q.from,
18
+ fuzzy: q.fuzzy ? fixId(q.fuzzy) : void 0,
19
+ highlight: q.highlight,
20
+ match_all: q.match_all,
21
+ match_phrase: q.match_phrase ? fixId(q.match_phrase) : void 0,
22
+ match_phrase_prefix: q.match_phrase_prefix ? fixId(q.match_phrase_prefix) : void 0,
23
+ more_like_this: q.more_like_this ? fixWithFields(q.more_like_this) : void 0,
24
+ multi_match: q.multi_match ? fixId(q.multi_match) : void 0,
25
+ prefix: q.prefix ? fixId(q.prefix) : void 0,
26
+ range: q.range ? fixId(q.range) : void 0,
27
+ regexp: q.regexp ? fixId(q.regexp) : void 0,
28
+ script_score: q.script_score,
29
+ size: q.size,
30
+ term: q.term ? fixId(q.term) : void 0,
31
+ terms: q.terms ? fixId(q.terms) : void 0,
32
+ wildcard: q.wildcard ? fixId(q.wildcard) : void 0
33
+ }
34
+ };
35
+ return {
36
+ ...searchQuery,
37
+ body: {
38
+ ...clean(body)
39
+ }
40
+ };
41
+ };
42
+ var fixBool = (bool) => ({
43
+ ...bool,
44
+ filter: bool.filter ? Array.isArray(bool.filter) ? bool.filter.map(fixFilter) : fixFilter(bool.filter) : void 0,
45
+ boost: bool.boost,
46
+ minimum_should_match: bool.minimum_should_match,
47
+ must: bool.must ? Array.isArray(bool.must) ? bool.must.map(fixFilter) : fixFilter(bool.must) : void 0,
48
+ must_not: bool.must_not ? Array.isArray(bool.must_not) ? bool.must_not.map(fixFilter) : fixFilter(bool.must_not) : void 0,
49
+ should: bool.should ? Array.isArray(bool.should) ? bool.should.map(fixFilter) : fixFilter(bool.should) : void 0
50
+ });
51
+ var fixFilter = (filter) => clean({
52
+ bool: filter.bool ? fixBool(filter.bool) : void 0,
53
+ exists: filter.exists ? fixExists(filter.exists) : void 0,
54
+ fuzzy: filter.fuzzy ? fixId(filter.fuzzy) : void 0,
55
+ match: filter.match ? fixId(filter.match) : void 0,
56
+ match_phrase: filter.match_phrase ? fixId(filter.match_phrase) : void 0,
57
+ multi_match: filter.multi_match ? fixId(filter.multi_match) : void 0,
58
+ match_phrase_prefix: filter.match_phrase_prefix ? fixId(filter.match_phrase_prefix) : void 0,
59
+ prefix: filter.prefix ? fixId(filter.prefix) : void 0,
60
+ query_string: filter.query_string ? fixWithFields(filter.query_string) : void 0,
61
+ range: filter.range ? fixId(filter.range) : void 0,
62
+ regexp: filter.regexp ? fixId(filter.regexp) : void 0,
63
+ simple_query_string: filter.simple_query_string ? fixWithFields(filter.simple_query_string) : void 0,
64
+ term: filter.term ? fixId(filter.term) : void 0,
65
+ terms: filter.terms ? fixId(filter.terms) : void 0,
66
+ wildcard: filter.wildcard ? fixId(filter.wildcard) : void 0
67
+ });
68
+ var fixWithFields = (old) => ({
69
+ ...old,
70
+ fields: old.fields ? old.fields.map(fixIdValue) : void 0
71
+ });
72
+ var fixExists = (exists) => ({
73
+ ...exists,
74
+ field: fixIdValue(exists.field)
75
+ });
76
+ var fixId = (old) => {
77
+ const fixed = omitId(old);
78
+ if (old.id)
79
+ fixed._id = old.id;
80
+ return fixed;
81
+ };
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 }), {});
84
+
85
+ // src/openSearchHelper.ts
3
86
  var typedSearch = async (client, searchQuery) => {
4
87
  const response = await client.search(
5
- searchQuery
88
+ fixIds(searchQuery)
6
89
  );
7
90
  const results = response.body.hits.hits.map(
8
91
  // biome-ignore lint/suspicious/noExplicitAny: <explanation>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sebspark/opensearch",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -16,9 +16,11 @@
16
16
  "typecheck": "vitest --typecheck.only --passWithNoTests"
17
17
  },
18
18
  "devDependencies": {
19
+ "@types/omit": "1.0.3",
19
20
  "tsconfig": "*"
20
21
  },
21
22
  "dependencies": {
22
- "@opensearch-project/opensearch": "2.4.0"
23
+ "@opensearch-project/opensearch": "2.5.0",
24
+ "omit": "1.0.1"
23
25
  }
24
26
  }