@frogbotai/db-mongodb 0.29.0 → 0.31.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.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/jobIndexes.js +20 -12
- package/dist/jobIndexes.js.map +1 -1
- package/dist/jobLogs.js +35 -4
- package/dist/jobLogs.js.map +1 -1
- package/dist/jobModel.d.ts +3 -2
- package/dist/jobModel.d.ts.map +1 -1
- package/dist/jobModel.js +29 -12
- package/dist/jobModel.js.map +1 -1
- package/dist/search/buildSchema.js +15 -9
- package/dist/search/buildSchema.js.map +1 -1
- package/dist/search/buildSearchIndexes.js +135 -55
- package/dist/search/buildSearchIndexes.js.map +1 -1
- package/dist/search/capabilities.js +12 -15
- package/dist/search/capabilities.js.map +1 -1
- package/dist/search/createSearchSetupError.js +12 -5
- package/dist/search/createSearchSetupError.js.map +1 -1
- package/dist/search/ensureSearchIndexes.js +35 -20
- package/dist/search/ensureSearchIndexes.js.map +1 -1
- package/dist/search/findSearchIndex.js +3 -2
- package/dist/search/findSearchIndex.js.map +1 -1
- package/dist/search/getSearchIndexes.js +2 -1
- package/dist/search/getSearchIndexes.js.map +1 -1
- package/dist/search/getSearchModel.d.ts +0 -1
- package/dist/search/getSearchModel.d.ts.map +1 -1
- package/dist/search/getSearchModel.js +2 -1
- package/dist/search/getSearchModel.js.map +1 -1
- package/dist/search/getSearchPath.js +17 -13
- package/dist/search/getSearchPath.js.map +1 -1
- package/dist/search/index.js +2 -1
- package/dist/search/index.js.map +1 -1
- package/dist/search/isDraftSearch.js +2 -1
- package/dist/search/isDraftSearch.js.map +1 -1
- package/dist/search/isSearchIndexDefinitionEqual.js +26 -19
- package/dist/search/isSearchIndexDefinitionEqual.js.map +1 -1
- package/dist/search/pipelines/buildHybridPipeline.js +147 -40
- package/dist/search/pipelines/buildHybridPipeline.js.map +1 -1
- package/dist/search/pipelines/buildSearchStage.js +17 -5
- package/dist/search/pipelines/buildSearchStage.js.map +1 -1
- package/dist/search/pipelines/buildVectorScore.js +24 -4
- package/dist/search/pipelines/buildVectorScore.js.map +1 -1
- package/dist/search/pipelines/buildVectorSearchStage.js +15 -7
- package/dist/search/pipelines/buildVectorSearchStage.js.map +1 -1
- package/dist/search/queries/buildSearchFilter.js +13 -6
- package/dist/search/queries/buildSearchFilter.js.map +1 -1
- package/dist/search/queries/buildSearchOperator.js +41 -8
- package/dist/search/queries/buildSearchOperator.js.map +1 -1
- package/dist/search/queries/buildVectorSearchFilter.js +32 -8
- package/dist/search/queries/buildVectorSearchFilter.js.map +1 -1
- package/dist/search/queries/parseSearchFilter.js +125 -56
- package/dist/search/queries/parseSearchFilter.js.map +1 -1
- package/dist/search/readiness.js +23 -12
- package/dist/search/readiness.js.map +1 -1
- package/dist/search/search.d.ts.map +1 -1
- package/dist/search/search.js +181 -77
- package/dist/search/search.js.map +1 -1
- package/dist/search/supportsRankFusion.d.ts.map +1 -1
- package/dist/search/supportsRankFusion.js +29 -10
- package/dist/search/supportsRankFusion.js.map +1 -1
- package/dist/search/types.js +2 -1
- package/dist/search/types.js.map +1 -1
- package/dist/updateJobLeases.js +20 -5
- package/dist/updateJobLeases.js.map +1 -1
- package/dist/updateJobs.js +79 -30
- package/dist/updateJobs.js.map +1 -1
- package/package.json +4 -4
|
@@ -3,7 +3,7 @@ const rangeOperators = {
|
|
|
3
3
|
$gt: 'gt',
|
|
4
4
|
$gte: 'gte',
|
|
5
5
|
$lt: 'lt',
|
|
6
|
-
$lte: 'lte'
|
|
6
|
+
$lte: 'lte'
|
|
7
7
|
};
|
|
8
8
|
function isRecord(value) {
|
|
9
9
|
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
@@ -15,13 +15,12 @@ function isScalar(value) {
|
|
|
15
15
|
return !isRecord(value) || value instanceof Date || isObjectID(value);
|
|
16
16
|
}
|
|
17
17
|
function isOperatorObject(value) {
|
|
18
|
-
if (isScalar(value) || !isRecord(value))
|
|
19
|
-
return false;
|
|
18
|
+
if (isScalar(value) || !isRecord(value)) return false;
|
|
20
19
|
const keys = Object.keys(value);
|
|
21
|
-
return keys.length > 0 && keys.every((key)
|
|
20
|
+
return keys.length > 0 && keys.every((key)=>key.startsWith('$'));
|
|
22
21
|
}
|
|
23
22
|
function isCompatible(type, value) {
|
|
24
|
-
switch
|
|
23
|
+
switch(type){
|
|
25
24
|
case 'boolean':
|
|
26
25
|
return typeof value === 'boolean';
|
|
27
26
|
case 'date':
|
|
@@ -38,55 +37,88 @@ function unsupported(index, detail) {
|
|
|
38
37
|
return new SearchFilterUnsupportedError(`Search index '${index}' ${detail}`);
|
|
39
38
|
}
|
|
40
39
|
function dedupe(nodes) {
|
|
41
|
-
return [
|
|
40
|
+
return [
|
|
41
|
+
...new Map(nodes.map((node)=>[
|
|
42
|
+
JSON.stringify(node),
|
|
43
|
+
node
|
|
44
|
+
])).values()
|
|
45
|
+
];
|
|
42
46
|
}
|
|
43
47
|
function and(filters) {
|
|
44
48
|
const nodes = [];
|
|
45
|
-
for (const filter of filters)
|
|
46
|
-
if (filter === false)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
for (const filter of filters){
|
|
50
|
+
if (filter === false) return false;
|
|
51
|
+
if (filter === true) continue;
|
|
52
|
+
nodes.push(...filter.type === 'and' ? filter.filters : [
|
|
53
|
+
filter
|
|
54
|
+
]);
|
|
51
55
|
}
|
|
52
56
|
const unique = dedupe(nodes);
|
|
53
|
-
if (!unique.length)
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
if (!unique.length) return true;
|
|
58
|
+
return unique.length === 1 ? unique[0] : {
|
|
59
|
+
type: 'and',
|
|
60
|
+
filters: unique
|
|
61
|
+
};
|
|
56
62
|
}
|
|
57
63
|
function or(filters) {
|
|
58
64
|
const nodes = [];
|
|
59
|
-
for (const filter of filters)
|
|
60
|
-
if (filter === true)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
for (const filter of filters){
|
|
66
|
+
if (filter === true) return true;
|
|
67
|
+
if (filter === false) continue;
|
|
68
|
+
nodes.push(...filter.type === 'or' ? filter.filters : [
|
|
69
|
+
filter
|
|
70
|
+
]);
|
|
65
71
|
}
|
|
66
72
|
const unique = dedupe(nodes);
|
|
67
|
-
if (!unique.length)
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
if (!unique.length) return false;
|
|
74
|
+
return unique.length === 1 ? unique[0] : {
|
|
75
|
+
type: 'or',
|
|
76
|
+
filters: unique
|
|
77
|
+
};
|
|
70
78
|
}
|
|
71
79
|
function not(filter) {
|
|
72
|
-
if (typeof filter === 'boolean')
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
if (typeof filter === 'boolean') return !filter;
|
|
81
|
+
return filter.type === 'not' ? filter.filter : {
|
|
82
|
+
type: 'not',
|
|
83
|
+
filter
|
|
84
|
+
};
|
|
75
85
|
}
|
|
76
|
-
function equals({ path, type, value
|
|
86
|
+
function equals({ path, type, value }) {
|
|
77
87
|
if (value === null) {
|
|
78
|
-
return or([
|
|
88
|
+
return or([
|
|
89
|
+
not({
|
|
90
|
+
type: 'exists',
|
|
91
|
+
path
|
|
92
|
+
}),
|
|
93
|
+
{
|
|
94
|
+
type: 'equals',
|
|
95
|
+
path,
|
|
96
|
+
value: null
|
|
97
|
+
}
|
|
98
|
+
]);
|
|
79
99
|
}
|
|
80
|
-
return isCompatible(type, value) ? {
|
|
100
|
+
return isCompatible(type, value) ? {
|
|
101
|
+
type: 'equals',
|
|
102
|
+
path,
|
|
103
|
+
value
|
|
104
|
+
} : false;
|
|
81
105
|
}
|
|
82
106
|
function inValues({ condition, index, path, type }) {
|
|
83
107
|
if (!Array.isArray(condition)) {
|
|
84
108
|
throw unsupported(index, `cannot filter '${path}' with a non-array list.`);
|
|
85
109
|
}
|
|
86
|
-
const values = condition.filter((value)
|
|
110
|
+
const values = condition.filter((value)=>value !== null && isCompatible(type, value));
|
|
87
111
|
return or([
|
|
88
|
-
values.length ? {
|
|
89
|
-
|
|
112
|
+
values.length ? {
|
|
113
|
+
type: 'in',
|
|
114
|
+
path,
|
|
115
|
+
values
|
|
116
|
+
} : false,
|
|
117
|
+
condition.includes(null) ? equals({
|
|
118
|
+
path,
|
|
119
|
+
type,
|
|
120
|
+
value: null
|
|
121
|
+
}) : false
|
|
90
122
|
]);
|
|
91
123
|
}
|
|
92
124
|
function parseCondition(args) {
|
|
@@ -95,33 +127,60 @@ function parseCondition(args) {
|
|
|
95
127
|
if (!isScalar(condition) || Array.isArray(condition)) {
|
|
96
128
|
throw unsupported(index, `cannot filter '${path}' by a compound value.`);
|
|
97
129
|
}
|
|
98
|
-
return equals({
|
|
130
|
+
return equals({
|
|
131
|
+
path,
|
|
132
|
+
type,
|
|
133
|
+
value: condition
|
|
134
|
+
});
|
|
99
135
|
}
|
|
100
136
|
const filters = [];
|
|
101
137
|
const range = {};
|
|
102
138
|
let rangeMatches = true;
|
|
103
|
-
for (const [operator, value] of Object.entries(condition))
|
|
104
|
-
switch
|
|
139
|
+
for (const [operator, value] of Object.entries(condition)){
|
|
140
|
+
switch(operator){
|
|
105
141
|
case '$eq':
|
|
106
|
-
filters.push(equals({
|
|
142
|
+
filters.push(equals({
|
|
143
|
+
path,
|
|
144
|
+
type,
|
|
145
|
+
value
|
|
146
|
+
}));
|
|
107
147
|
break;
|
|
108
148
|
case '$ne':
|
|
109
|
-
filters.push(not(equals({
|
|
149
|
+
filters.push(not(equals({
|
|
150
|
+
path,
|
|
151
|
+
type,
|
|
152
|
+
value
|
|
153
|
+
})));
|
|
110
154
|
break;
|
|
111
155
|
case '$in':
|
|
112
|
-
filters.push(inValues({
|
|
156
|
+
filters.push(inValues({
|
|
157
|
+
...args,
|
|
158
|
+
condition: value
|
|
159
|
+
}));
|
|
113
160
|
break;
|
|
114
161
|
case '$nin':
|
|
115
|
-
filters.push(not(inValues({
|
|
162
|
+
filters.push(not(inValues({
|
|
163
|
+
...args,
|
|
164
|
+
condition: value
|
|
165
|
+
})));
|
|
116
166
|
break;
|
|
117
167
|
case '$exists':
|
|
118
168
|
if (typeof value !== 'boolean') {
|
|
119
169
|
throw unsupported(index, `cannot filter '${path}' with a non-boolean '$exists'.`);
|
|
120
170
|
}
|
|
121
|
-
filters.push(value ? {
|
|
171
|
+
filters.push(value ? {
|
|
172
|
+
type: 'exists',
|
|
173
|
+
path
|
|
174
|
+
} : not({
|
|
175
|
+
type: 'exists',
|
|
176
|
+
path
|
|
177
|
+
}));
|
|
122
178
|
break;
|
|
123
179
|
case '$not':
|
|
124
|
-
filters.push(not(parseCondition({
|
|
180
|
+
filters.push(not(parseCondition({
|
|
181
|
+
...args,
|
|
182
|
+
condition: value
|
|
183
|
+
})));
|
|
125
184
|
break;
|
|
126
185
|
case '$gt':
|
|
127
186
|
case '$gte':
|
|
@@ -138,29 +197,39 @@ function parseCondition(args) {
|
|
|
138
197
|
}
|
|
139
198
|
}
|
|
140
199
|
if (Object.keys(range).length) {
|
|
141
|
-
filters.push(rangeMatches ? {
|
|
200
|
+
filters.push(rangeMatches ? {
|
|
201
|
+
type: 'range',
|
|
202
|
+
path,
|
|
203
|
+
range
|
|
204
|
+
} : false);
|
|
142
205
|
}
|
|
143
206
|
return and(filters);
|
|
144
207
|
}
|
|
145
|
-
export function parseSearchFilter({ fields, index, query
|
|
146
|
-
const filters = Object.entries(query).map(([key, value])
|
|
208
|
+
export function parseSearchFilter({ fields, index, query }) {
|
|
209
|
+
const filters = Object.entries(query).map(([key, value])=>{
|
|
147
210
|
if (key === '$and' || key === '$or' || key === '$nor') {
|
|
148
|
-
if (!Array.isArray(value))
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
211
|
+
if (!Array.isArray(value)) throw unsupported(index, `requires an array for '${key}'.`);
|
|
212
|
+
const nested = value.map((item)=>{
|
|
213
|
+
if (!isRecord(item)) throw unsupported(index, `requires objects in '${key}'.`);
|
|
214
|
+
return parseSearchFilter({
|
|
215
|
+
fields,
|
|
216
|
+
index,
|
|
217
|
+
query: item
|
|
218
|
+
});
|
|
154
219
|
});
|
|
155
|
-
if (key === '$and')
|
|
156
|
-
return and(nested);
|
|
220
|
+
if (key === '$and') return and(nested);
|
|
157
221
|
return key === '$or' ? or(nested) : not(or(nested));
|
|
158
222
|
}
|
|
159
223
|
const type = fields.get(key);
|
|
160
|
-
if (key.startsWith('$') || !type)
|
|
161
|
-
|
|
162
|
-
|
|
224
|
+
if (key.startsWith('$') || !type) throw unsupported(index, `cannot filter path '${key}'.`);
|
|
225
|
+
return parseCondition({
|
|
226
|
+
condition: value,
|
|
227
|
+
index,
|
|
228
|
+
path: key,
|
|
229
|
+
type
|
|
230
|
+
});
|
|
163
231
|
});
|
|
164
232
|
return and(filters);
|
|
165
233
|
}
|
|
234
|
+
|
|
166
235
|
//# sourceMappingURL=parseSearchFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/search/queries/parseSearchFilter.ts"],"names":["SearchFilterUnsupportedError","rangeOperators","$gt","$gte","$lt","$lte","isRecord","value","Array","isArray","isObjectID","_bsontype","isScalar","Date","isOperatorObject","keys","Object","length","every","key","startsWith","isCompatible","type","Number","isNaN","getTime","isFinite","unsupported","index","detail","dedupe","nodes","Map","map","node","JSON","stringify","values","and","filters","filter","push","unique","or","not","equals","path","inValues","condition","includes","parseCondition","args","range","rangeMatches","operator","entries","parseSearchFilter","fields","query","nested","item","get"],"mappings":"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","file":"parseSearchFilter.js"}
|
package/dist/search/readiness.js
CHANGED
|
@@ -4,21 +4,31 @@ import { findSearchIndex } from './findSearchIndex.js';
|
|
|
4
4
|
import { getSearchIndexes } from './getSearchIndexes.js';
|
|
5
5
|
import { getSearchModel } from './getSearchModel.js';
|
|
6
6
|
import { isDraftSearch } from './isDraftSearch.js';
|
|
7
|
-
export const readiness = async ({ collection, db, draft, index, mode })
|
|
7
|
+
export const readiness = async ({ collection, db, draft, index, mode })=>{
|
|
8
8
|
const adapter = db;
|
|
9
|
-
const versions = isDraftSearch({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
const versions = isDraftSearch({
|
|
10
|
+
adapter,
|
|
11
|
+
collection,
|
|
12
|
+
draft
|
|
13
|
+
});
|
|
14
|
+
const searchIndexes = getSearchIndexes(adapter).filter((searchIndex)=>searchIndex.collection === collection && searchIndex.index === index.name && searchIndex.versions === versions && (mode === 'hybrid' || searchIndex.mode === mode));
|
|
15
|
+
for (const searchIndex of searchIndexes){
|
|
16
|
+
const Model = getSearchModel({
|
|
17
|
+
adapter,
|
|
18
|
+
collection,
|
|
19
|
+
versions: searchIndex.versions
|
|
20
|
+
});
|
|
16
21
|
let existing;
|
|
17
22
|
try {
|
|
18
|
-
existing = await findSearchIndex({
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
existing = await findSearchIndex({
|
|
24
|
+
Model,
|
|
25
|
+
name: searchIndex.name
|
|
26
|
+
});
|
|
27
|
+
} catch (error) {
|
|
28
|
+
const setupError = createSearchSetupError({
|
|
29
|
+
error,
|
|
30
|
+
searchIndex
|
|
31
|
+
});
|
|
22
32
|
throw setupError.reason === 'setup-failed' ? error : setupError;
|
|
23
33
|
}
|
|
24
34
|
if (!existing) {
|
|
@@ -29,4 +39,5 @@ export const readiness = async ({ collection, db, draft, index, mode }) => {
|
|
|
29
39
|
}
|
|
30
40
|
}
|
|
31
41
|
};
|
|
42
|
+
|
|
32
43
|
//# sourceMappingURL=readiness.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/search/readiness.ts"],"names":["SearchReadinessError","createSearchSetupError","findSearchIndex","getSearchIndexes","getSearchModel","isDraftSearch","readiness","collection","db","draft","index","mode","adapter","versions","searchIndexes","filter","searchIndex","name","Model","existing","error","setupError","reason","queryable","status"],"mappings":"AAEA,SAASA,oBAAoB,QAAQ,iBAAiB;AAEtD,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,eAAe,QAAQ,uBAAuB;AACvD,SAASC,gBAAgB,QAAQ,wBAAwB;AACzD,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,aAAa,QAAQ,qBAAqB;AAEnD,OAAO,MAAMC,YAA6B,OAAO,EAAEC,UAAU,EAAEC,EAAE,EAAEC,KAAK,EAAEC,KAAK,EAAEC,IAAI,EAAE;IACrF,MAAMC,UAAUJ;IAChB,MAAMK,WAAWR,cAAc;QAAEO;QAASL;QAAYE;IAAM;IAE5D,MAAMK,gBAAgBX,iBAAiBS,SAASG,MAAM,CACpD,CAACC,cACCA,YAAYT,UAAU,KAAKA,cAC3BS,YAAYN,KAAK,KAAKA,MAAMO,IAAI,IAChCD,YAAYH,QAAQ,KAAKA,YACxBF,CAAAA,SAAS,YAAYK,YAAYL,IAAI,KAAKA,IAAG;IAGlD,KAAK,MAAMK,eAAeF,cAAe;QACvC,MAAMI,QAAQd,eAAe;YAAEQ;YAASL;YAAYM,UAAUG,YAAYH,QAAQ;QAAC;QAEnF,IAAIM;QAEJ,IAAI;YACFA,WAAW,MAAMjB,gBAAgB;gBAAEgB;gBAAOD,MAAMD,YAAYC,IAAI;YAAC;QACnE,EAAE,OAAOG,OAAO;YACd,MAAMC,aAAapB,uBAAuB;gBAAEmB;gBAAOJ;YAAY;YAE/D,MAAMK,WAAWC,MAAM,KAAK,iBAAiBF,QAAQC;QACvD;QAEA,IAAI,CAACF,UAAU;YACb,MAAM,IAAInB,qBACR,CAAC,cAAc,EAAEgB,YAAYC,IAAI,CAAC,MAAM,EAAEC,MAAMX,UAAU,CAACU,IAAI,CAAC,iBAAiB,CAAC;QAEtF;QAEA,IAAI,CAACE,SAASI,SAAS,EAAE;YACvB,MAAM,IAAIvB,qBACR,CAAC,cAAc,EAAEgB,YAAYC,IAAI,CAAC,MAAM,EAAEC,MAAMX,UAAU,CAACU,IAAI,CAAC,wBAAwB,EAAEE,SAASK,MAAM,IAAI,UAAU,EAAE,CAAC;QAE9H;IACF;AACF,EAAE","file":"readiness.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,gBAAgB,CAAC;AAqGxB,eAAO,MAAM,MAAM,EAAE,aAmHpB,CAAC"}
|