proto.io 0.0.217 → 0.0.218
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/adapters/file/aliyun-oss.d.ts +3 -3
- package/dist/adapters/file/database.d.ts +2 -2
- package/dist/adapters/file/database.js +2 -2
- package/dist/adapters/file/database.mjs +2 -2
- package/dist/adapters/file/filesystem.d.ts +3 -3
- package/dist/adapters/file/google-cloud-storage.d.ts +3 -3
- package/dist/adapters/storage/progres.d.ts +1 -1
- package/dist/adapters/storage/progres.js +38 -38
- package/dist/adapters/storage/progres.js.map +1 -1
- package/dist/adapters/storage/progres.mjs +38 -38
- package/dist/adapters/storage/progres.mjs.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.js +2 -2
- package/dist/client.mjs +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +27 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +28 -28
- package/dist/index.mjs.map +1 -1
- package/dist/internals/{base-CWnOBKD5.d.ts → base-CqeIQTE9.d.ts} +2 -2
- package/dist/internals/base-CqeIQTE9.d.ts.map +1 -0
- package/dist/internals/{chunk-CNNSQpRF.d.ts → chunk-CLKTwfRe.d.ts} +3 -3
- package/dist/internals/chunk-CLKTwfRe.d.ts.map +1 -0
- package/dist/internals/{index-B8TESzd9.js → index-CLKTEIj0.js} +2 -2
- package/dist/internals/index-CLKTEIj0.js.map +1 -0
- package/dist/internals/{index-DfqABzjr.mjs → index-CZ5fKgiJ.mjs} +26 -26
- package/dist/internals/index-CZ5fKgiJ.mjs.map +1 -0
- package/dist/internals/{index-BRIlS3mY.d.ts → index-Ci8d33k-.d.ts} +2 -2
- package/dist/internals/index-Ci8d33k-.d.ts.map +1 -0
- package/dist/internals/{index-Bs8n7Q8f.d.ts → index-DQHWdslW.d.ts} +5 -5
- package/dist/internals/index-DQHWdslW.d.ts.map +1 -0
- package/dist/internals/{index-BzDsTt4R.mjs → index-gWcE22mf.mjs} +2 -2
- package/dist/internals/index-gWcE22mf.mjs.map +1 -0
- package/dist/internals/{index-DylUjD_1.js → index-xHeu-AjT.js} +26 -26
- package/dist/internals/index-xHeu-AjT.js.map +1 -0
- package/dist/internals/{validator-mcBCJP4P.js → validator-B5yHpyvb.js} +10 -10
- package/dist/internals/validator-B5yHpyvb.js.map +1 -0
- package/dist/internals/{validator-CEcBF4Cn.mjs → validator-DX2nXeQo.mjs} +10 -10
- package/dist/internals/validator-DX2nXeQo.mjs.map +1 -0
- package/package.json +2 -2
- package/dist/internals/base-CWnOBKD5.d.ts.map +0 -1
- package/dist/internals/chunk-CNNSQpRF.d.ts.map +0 -1
- package/dist/internals/index-B8TESzd9.js.map +0 -1
- package/dist/internals/index-BRIlS3mY.d.ts.map +0 -1
- package/dist/internals/index-Bs8n7Q8f.d.ts.map +0 -1
- package/dist/internals/index-BzDsTt4R.mjs.map +0 -1
- package/dist/internals/index-DfqABzjr.mjs.map +0 -1
- package/dist/internals/index-DylUjD_1.js.map +0 -1
- package/dist/internals/validator-CEcBF4Cn.mjs.map +0 -1
- package/dist/internals/validator-mcBCJP4P.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _ = require('lodash');
|
|
4
|
-
var index = require('./index-
|
|
4
|
+
var index = require('./index-CLKTEIj0.js');
|
|
5
5
|
var Decimal = require('decimal.js');
|
|
6
6
|
var _private = require('./private-Ciddhure.js');
|
|
7
7
|
|
|
@@ -204,9 +204,9 @@ const equal = (lhs, rhs) => {
|
|
|
204
204
|
if (lhs instanceof index.TObject && rhs instanceof index.TObject) {
|
|
205
205
|
if (lhs.className !== rhs.className)
|
|
206
206
|
return false;
|
|
207
|
-
if (_.isNil(lhs.
|
|
207
|
+
if (_.isNil(lhs.id) && _.isNil(rhs.id))
|
|
208
208
|
return lhs === rhs;
|
|
209
|
-
return lhs.
|
|
209
|
+
return lhs.id === rhs.id;
|
|
210
210
|
}
|
|
211
211
|
else if (lhs instanceof index.TObject || rhs instanceof index.TObject) {
|
|
212
212
|
return false;
|
|
@@ -246,9 +246,9 @@ const lessThan = (lhs, rhs) => {
|
|
|
246
246
|
if (lhs instanceof index.TObject && rhs instanceof index.TObject) {
|
|
247
247
|
if (lhs.className !== rhs.className)
|
|
248
248
|
return false;
|
|
249
|
-
if (_.isNil(lhs.
|
|
249
|
+
if (_.isNil(lhs.id) && _.isNil(rhs.id))
|
|
250
250
|
return false;
|
|
251
|
-
return (lhs.
|
|
251
|
+
return (lhs.id ?? '') < (rhs.id ?? '');
|
|
252
252
|
}
|
|
253
253
|
else if (lhs instanceof index.TObject || rhs instanceof index.TObject) {
|
|
254
254
|
return false;
|
|
@@ -2069,7 +2069,7 @@ class QueryValidator {
|
|
|
2069
2069
|
};
|
|
2070
2070
|
}
|
|
2071
2071
|
isGetMethod(query) {
|
|
2072
|
-
const
|
|
2072
|
+
const ids = [];
|
|
2073
2073
|
if (query instanceof QueryCoditionalSelector && query.type === '$and') {
|
|
2074
2074
|
for (const expr of query.exprs) {
|
|
2075
2075
|
if (expr instanceof QueryFieldSelector &&
|
|
@@ -2077,7 +2077,7 @@ class QueryValidator {
|
|
|
2077
2077
|
expr.expr.type === '$eq') {
|
|
2078
2078
|
if (!_.isString(expr.expr.value))
|
|
2079
2079
|
return false;
|
|
2080
|
-
|
|
2080
|
+
ids.push(expr.expr.value);
|
|
2081
2081
|
}
|
|
2082
2082
|
}
|
|
2083
2083
|
}
|
|
@@ -2086,9 +2086,9 @@ class QueryValidator {
|
|
|
2086
2086
|
query.expr.type === '$eq') {
|
|
2087
2087
|
if (!_.isString(query.expr.value))
|
|
2088
2088
|
return false;
|
|
2089
|
-
|
|
2089
|
+
ids.push(query.expr.value);
|
|
2090
2090
|
}
|
|
2091
|
-
return _.uniq(
|
|
2091
|
+
return _.uniq(ids).length === 1;
|
|
2092
2092
|
}
|
|
2093
2093
|
}
|
|
2094
2094
|
|
|
@@ -2117,4 +2117,4 @@ exports.QueryZeroParamAccumulator = QueryZeroParamAccumulator;
|
|
|
2117
2117
|
exports.QueryZeroParamExpression = QueryZeroParamExpression;
|
|
2118
2118
|
exports.resolveColumn = resolveColumn;
|
|
2119
2119
|
exports.resolveDataType = resolveDataType;
|
|
2120
|
-
//# sourceMappingURL=validator-
|
|
2120
|
+
//# sourceMappingURL=validator-B5yHpyvb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator-B5yHpyvb.js","sources":["../../../src/internals/query/types/expressions.ts","../../../src/internals/query/types/keys.ts","../../../src/server/query/dispatcher/parser/utils.ts","../../../src/server/query/dispatcher/parser/math.ts","../../../src/server/query/dispatcher/parser/expressions.ts","../../../src/internals/query/types/selectors.ts","../../../src/server/query/dispatcher/parser/index.ts","../../../src/internals/query/types/accumulators.ts","../../../src/server/query/dispatcher/parser/accumulators.ts","../../../src/server/query/dispatcher/validator.ts"],"sourcesContent":["//\n// expressions.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { TValue } from '../../types';\nimport { TComparisonKeys, TConditionalKeys } from './keys';\n\nexport const TZeroParamExprKeys = [\n '$now',\n '$rand',\n] as const;\n\nexport const TUnaryExprKeys = [\n '$abs',\n '$neg',\n '$sqrt',\n '$cbrt',\n '$ceil',\n '$floor',\n '$round',\n '$exp',\n '$ln',\n '$log2',\n '$log10',\n '$sin',\n '$cos',\n '$tan',\n '$asin',\n '$acos',\n '$atan',\n '$asinh',\n '$acosh',\n '$atanh',\n '$sinh',\n '$cosh',\n '$tanh',\n '$degrees',\n '$radians',\n '$sign',\n '$size',\n '$lower',\n '$upper',\n] as const;\n\nexport const TBinaryExprKeys = [\n '$divide',\n '$subtract',\n '$log',\n '$pow',\n '$atan2',\n '$trim',\n '$ltrim',\n '$rtrim',\n '$first',\n '$last',\n '$ldrop',\n '$rdrop',\n] as const;\n\nexport const TTernaryExprKeys = [\n '$lpad',\n '$rpad',\n] as const;\n\nexport const TListExprKeys = [\n '$add',\n '$multiply',\n '$ifNull',\n '$concat',\n] as const;\n\nexport const TDistanceExprKeys = [\n '$distance',\n '$innerProduct',\n '$negInnerProduct',\n '$cosineDistance',\n '$rectilinearDistance',\n] as const;\n\nexport type TBooleanExpression = {\n $not?: TBooleanExpression;\n} & {\n [x in (typeof TComparisonKeys)[number]]?: [TExpression, TExpression];\n } & {\n [x in (typeof TConditionalKeys)[number]]?: TBooleanExpression[];\n };\n\nexport type TDistanceExpression = {\n [x in (typeof TDistanceExprKeys)[number]]?: [\n TExpression[] | { $key: string; } | { $value: number[]; },\n TExpression[] | { $key: string; } | { $value: number[]; },\n ];\n};\n\nexport type TExpression = {\n $array?: TExpression[];\n $key?: string;\n $value?: TValue;\n} & {\n $cond?: {\n branch: _.Many<{\n case: TExpression;\n then: TExpression;\n }[]>;\n default: TExpression;\n };\n} & {\n [x in (typeof TZeroParamExprKeys)[number]]?: true | {};\n} & {\n [x in (typeof TUnaryExprKeys)[number]]?: TExpression;\n} & {\n [x in (typeof TBinaryExprKeys)[number]]?: [TExpression, TExpression];\n} & {\n [x in (typeof TTernaryExprKeys)[number]]?: [TExpression, TExpression, TExpression];\n} & {\n [x in (typeof TListExprKeys)[number]]?: TExpression[];\n} & TBooleanExpression & TDistanceExpression;\n","//\n// keys.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nexport const TComparisonKeys = [\n '$eq',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$ne',\n] as const;\n\nexport const TValueListKeys = [\n '$in',\n '$nin',\n] as const;\n\nexport const TValueSetKeys = [\n '$subset',\n '$superset',\n '$intersect',\n] as const;\n\nexport const TConditionalKeys = [\n '$and',\n '$nor',\n '$or',\n] as const;\n","//\n// utils.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport Decimal from 'decimal.js';\nimport { TNumber } from '../../../../internals/codec';\nimport { isPrimitiveValue, TObject } from '../../../../internals/object';\n\nconst isNum = (x: any): x is TNumber => _.isNumber(x) || x instanceof BigInt || x instanceof Decimal;\n\nconst equalNum = (lhs: TNumber, rhs: TNumber): boolean => {\n if (lhs instanceof Decimal && rhs instanceof Decimal) {\n return lhs.equals(rhs);\n } else if (lhs instanceof Decimal) {\n return lhs.equals(rhs instanceof BigInt ? rhs.toString() : rhs);\n } else if (rhs instanceof Decimal) {\n return rhs.equals(lhs instanceof BigInt ? lhs.toString() : lhs);\n } else {\n return lhs === rhs;\n }\n}\n\nconst lessNum = (lhs: TNumber, rhs: TNumber): boolean => {\n if (lhs instanceof Decimal && rhs instanceof Decimal) {\n return lhs.lessThan(rhs);\n } else if (lhs instanceof Decimal) {\n return lhs.lessThan(rhs instanceof BigInt ? rhs.toString() : rhs);\n } else if (rhs instanceof Decimal) {\n return rhs.greaterThan(lhs instanceof BigInt ? lhs.toString() : lhs);\n } else {\n return lhs < rhs;\n }\n}\n\nexport const equal = (lhs: any, rhs: any): boolean => {\n if (_.isNil(lhs) && _.isNil(rhs)) return true;\n if (isNum(lhs) && isNum(rhs)) return equalNum(lhs, rhs);\n if (lhs instanceof TObject && rhs instanceof TObject) {\n if (lhs.className !== rhs.className) return false;\n if (_.isNil(lhs.id) && _.isNil(rhs.id)) return lhs === rhs;\n return lhs.id === rhs.id;\n } else if (lhs instanceof TObject || rhs instanceof TObject) {\n return false;\n }\n if (_.isArray(lhs) && _.isArray(rhs)) {\n return lhs.length === rhs.length && _.every(_.zip(lhs, rhs), ([l, r]) => equal(l, r));\n }\n if (_.isPlainObject(lhs) && _.isPlainObject(rhs)) {\n for (const key of _.uniq([..._.keys(lhs), ..._.keys(rhs)])) {\n if (!equal(lhs[key], rhs[key])) return false;\n }\n return true;\n }\n return _.isEqual(lhs, rhs);\n};\n\nexport const lessThan = (lhs: any, rhs: any): boolean => {\n if (_.isNil(lhs) && !_.isNil(rhs)) return true;\n if (_.isNil(rhs)) return false;\n if (_.isString(lhs) && _.isString(rhs)) return lhs < rhs;\n if (_.isDate(lhs) && _.isDate(rhs)) return lhs < rhs;\n if (isNum(lhs) && isNum(rhs)) return lessNum(lhs, rhs);\n if (_.isArray(lhs) && _.isArray(rhs)) {\n for (const i of _.range(Math.min(lhs.length, rhs.length))) {\n if (lessThan(lhs[i], rhs[i])) return true;\n if (greaterThan(lhs[i], rhs[i])) return false;\n }\n return lhs.length < rhs.length;\n }\n if (lhs instanceof TObject && rhs instanceof TObject) {\n if (lhs.className !== rhs.className) return false;\n if (_.isNil(lhs.id) && _.isNil(rhs.id)) return false;\n return (lhs.id ?? '') < (rhs.id ?? '');\n } else if (lhs instanceof TObject || rhs instanceof TObject) {\n return false;\n }\n return false;\n};\n\nexport const getValue = (value: any, key: string) => {\n for (const k of _.toPath(key)) {\n if (isPrimitiveValue(value)) return null;\n if (value instanceof TObject) {\n value = value.get(k);\n } else {\n value = _.get(value, k);\n }\n }\n return value;\n};\n\nexport const greaterThan = (lhs: any, rhs: any) => {\n return lessThan(rhs, lhs);\n};\n\nexport const lessThanOrEqual = (lhs: any, rhs: any) => {\n return equal(lhs, rhs) || lessThan(lhs, rhs);\n};\n\nexport const greaterThanOrEqual = (lhs: any, rhs: any) => {\n return lessThanOrEqual(rhs, lhs);\n};\n\nexport const isSubset = (lhs: any[], rhs: any[]) => {\n return _.some(lhs, l => _.every(rhs, r => equal(l, r)));\n}\n\nexport const isSuperset = (lhs: any[], rhs: any[]) => {\n return isSubset(rhs, lhs);\n}\n\nexport const isIntersect = (lhs: any[], rhs: any[]) => {\n return _.some(lhs, l => _.some(rhs, r => equal(l, r)));\n}\n\nexport const innerProduct = (v1: number[], v2: number[]) => {\n if (v1.length !== v2.length) throw Error('Invalid comparison of two vectors of different lengths');\n return _.sumBy(_.zip(v1, v2), ([a, b]) => (a! - b!) ** 2);\n};\n\nexport const distance = (v1: number[], v2: number[]) => {\n return Math.sqrt(innerProduct(v1, v2));\n};\n\nexport const rectilinearDistance = (v1: number[], v2: number[]) => {\n if (v1.length !== v2.length) throw Error('Invalid comparison of two vectors of different lengths');\n return _.sumBy(_.zip(v1, v2), ([a, b]) => Math.abs(a! - b!));\n};\n\nexport const cosine = (v1: number[], v2: number[]) => {\n if (v1.length !== v2.length) throw Error('Invalid comparison of two vectors of different lengths');\n const s1 = _.sumBy(v1, v => v ** 2);\n const s2 = _.sumBy(v2, v => v ** 2);\n if (s1 === 0 && s2 === 0) return 1;\n if (s1 === 0 || s2 === 0) return 0;\n return _.sumBy(_.zip(v1, v2), ([a, b]) => a! * b!) / Math.sqrt(s1 * s2);\n};\n","//\n// utils.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport Decimal from 'decimal.js';\n\nconst isNum = (x: any): x is number | Decimal => _.isNumber(x) || x instanceof Decimal;\n\nexport const MathUtils = {\n sum: (lhs: any, rhs: any) => {\n if (!isNum(lhs) || !isNum(rhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal || rhs instanceof Decimal) return Decimal.add(lhs, rhs);\n return lhs + rhs;\n },\n subtract: (lhs: any, rhs: any) => {\n if (!isNum(lhs) || !isNum(rhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal || rhs instanceof Decimal) return Decimal.sub(lhs, rhs);\n return lhs - rhs;\n },\n multiply: (lhs: any, rhs: any) => {\n if (!isNum(lhs) || !isNum(rhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal || rhs instanceof Decimal) return Decimal.mul(lhs, rhs);\n return lhs * rhs;\n },\n divide: (lhs: any, rhs: any) => {\n if (!isNum(lhs) || !isNum(rhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal || rhs instanceof Decimal) return Decimal.div(lhs, rhs);\n return lhs / rhs;\n },\n abs: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.abs();\n return Math.abs(lhs);\n },\n neg: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.neg();\n return -lhs;\n },\n ceil: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.ceil();\n return Math.ceil(lhs);\n },\n floor: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.floor();\n return Math.floor(lhs);\n },\n round: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.round();\n return Math.round(lhs);\n },\n exp: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.exp();\n return Math.exp(lhs);\n },\n sqrt: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.sqrt();\n return Math.sqrt(lhs);\n },\n cbrt: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.cbrt();\n return Math.cbrt(lhs);\n },\n mod: (lhs: any, rhs: any) => {\n if (!isNum(lhs) || !isNum(rhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal || rhs instanceof Decimal) return Decimal.mod(lhs, rhs);\n return lhs % rhs;\n },\n pow: (lhs: any, rhs: any) => {\n if (!isNum(lhs) || !isNum(rhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal || rhs instanceof Decimal) return Decimal.pow(lhs, rhs);\n return Math.pow(lhs, rhs);\n },\n log: (lhs: any, rhs: any) => {\n if (!isNum(lhs) || !isNum(rhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal || rhs instanceof Decimal) return Decimal.log(lhs, rhs);\n return Math.log(lhs) / Math.log(rhs);\n },\n log10: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.log();\n return Math.log10(lhs);\n },\n log2: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.log(2);\n return Math.log2(lhs);\n },\n ln: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.ln();\n return Math.log(lhs);\n },\n sin: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.sin();\n return Math.sin(lhs);\n },\n cos: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.cos();\n return Math.cos(lhs);\n },\n tan: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.tan();\n return Math.tan(lhs);\n },\n asin: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.asin();\n return Math.asin(lhs);\n },\n acos: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.acos();\n return Math.acos(lhs);\n },\n atan: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.atan();\n return Math.atan(lhs);\n },\n sinh: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.sinh();\n return Math.sinh(lhs);\n },\n cosh: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.cosh();\n return Math.cosh(lhs);\n },\n tanh: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.tanh();\n return Math.tanh(lhs);\n },\n asinh: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.asinh();\n return Math.asinh(lhs);\n },\n acosh: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.acosh();\n return Math.acosh(lhs);\n },\n atanh: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return lhs.atanh();\n return Math.atanh(lhs);\n },\n atan2: (lhs: any, rhs: any) => {\n if (!isNum(lhs) || !isNum(rhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal || rhs instanceof Decimal) return Decimal.atan2(lhs, rhs);\n return Math.atan2(lhs, rhs);\n },\n degrees: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return Decimal.div(Decimal.mul(lhs, 180), Math.PI);\n return (lhs * 180) / Math.PI;\n },\n radians: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return Decimal.div(Decimal.mul(lhs, Math.PI), 180);\n return (lhs * Math.PI) / 180;\n },\n sign: (lhs: any) => {\n if (!isNum(lhs)) throw Error('Invalid operation');\n if (lhs instanceof Decimal) return Decimal.sign(lhs);\n return Math.sign(lhs);\n },\n};\n","//\n// expressions.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { TBinaryExprKeys, TDistanceExprKeys, TExpression, TListExprKeys, TZeroParamExprKeys, TUnaryExprKeys, TTernaryExprKeys } from '../../../../internals/query/types/expressions';\nimport { TComparisonKeys, TConditionalKeys } from '../../../../internals/query/types/keys';\nimport { isValue } from '../../../../internals/object';\nimport { TValue } from '../../../../internals/types';\nimport { cosine, distance, equal, getValue, greaterThan, greaterThanOrEqual, innerProduct, lessThan, lessThanOrEqual, rectilinearDistance } from './utils';\nimport { isPrimitive, isVector, TSchema } from '../../../../internals/schema';\nimport { resolveColumn } from '../validator';\nimport Decimal from 'decimal.js';\nimport { MathUtils } from './math';\n\nconst combineNumericTypes = (...list: _.RecursiveArray<TSchema.DataType>): TSchema.DataType[] => {\n return _.some(_.flattenDeep(list), x => x === 'decimal') ? ['decimal'] : ['number'];\n};\n\nexport class QueryExpression {\n\n static decode(expr: _.Many<TExpression>, dollerSign: boolean): QueryExpression {\n const exprs: QueryExpression[] = [];\n for (const selector of _.castArray(expr)) {\n for (const [key, query] of _.toPairs(selector)) {\n if (_.includes(TConditionalKeys, key) && _.isArray(query)) {\n exprs.push(new QueryCoditionalExpression(\n key as any,\n _.map(query, x => QueryExpression.decode(x as any, dollerSign)))\n );\n } else if (_.includes(TZeroParamExprKeys, key)) {\n exprs.push(new QueryZeroParamExpression(key as any));\n } else if (_.includes(TUnaryExprKeys, key)) {\n exprs.push(new QueryUnaryExpression(\n key as any,\n QueryExpression.decode(query as any, dollerSign))\n );\n } else if (_.includes(TBinaryExprKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n exprs.push(new QueryBinaryExpression(\n key as any,\n QueryExpression.decode(left as any, dollerSign),\n QueryExpression.decode(right as any, dollerSign))\n );\n } else if (_.includes(TTernaryExprKeys, key) && _.isArray(query) && query.length === 3) {\n const [first, second, last] = query;\n exprs.push(new QueryTernaryExpression(\n key as any,\n QueryExpression.decode(first as any, dollerSign),\n QueryExpression.decode(second as any, dollerSign),\n QueryExpression.decode(last as any, dollerSign))\n );\n } else if (_.includes(TListExprKeys, key) && _.isArray(query)) {\n if (query.length === 0) throw Error('Invalid expression');\n exprs.push(new QueryListExpression(\n key as any,\n _.map(query, x => QueryExpression.decode(x as any, dollerSign)))\n );\n } else if (_.includes(TComparisonKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n exprs.push(new QueryComparisonExpression(\n key as any,\n QueryExpression.decode(left as any, dollerSign),\n QueryExpression.decode(right as any, dollerSign))\n );\n } else if (_.includes(TDistanceExprKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n const _left = _.isArray(left) ? _.map(left, x => QueryExpression.decode(x as any, dollerSign)) : QueryExpression.decode(left as any, dollerSign);\n const _right = _.isArray(right) ? _.map(right, x => QueryExpression.decode(x as any, dollerSign)) : QueryExpression.decode(right as any, dollerSign);\n exprs.push(new QueryDistanceExpression(\n key as any,\n _.castArray(_left), _.castArray(_right))\n );\n } else if (key === '$cond' && _.isPlainObject(query)) {\n const { branch: _branch, default: defaultCase } = query as any;\n const branch = _.castArray(_branch ?? []);\n if (branch.length === 0) throw Error('Invalid expression');\n exprs.push(new QueryCondExpression(\n _.map(branch as any, ({ case: c, then: t }) => ({\n case: QueryExpression.decode(c as any, dollerSign),\n then: QueryExpression.decode(t as any, dollerSign),\n })),\n QueryExpression.decode(defaultCase as any, dollerSign)\n ));\n } else if (key === '$not') {\n exprs.push(new QueryNotExpression(QueryExpression.decode(query as any, dollerSign)));\n } else if (key === '$array' && _.isArray(query)) {\n exprs.push(new QueryArrayExpression(_.map(query, x => QueryExpression.decode(x as any, dollerSign))));\n } else if (key === '$key' && _.isString(query)) {\n if (dollerSign && query === '$') {\n exprs.push(new QueryKeyExpression(query));\n } else if (!query.startsWith('$')) {\n exprs.push(new QueryKeyExpression(query));\n } else {\n throw Error('Invalid expression');\n }\n } else if (key === '$value' && isValue(query)) {\n exprs.push(new QueryValueExpression(query));\n } else {\n throw Error('Invalid expression');\n }\n }\n }\n if (_.isEmpty(exprs)) return new QueryExpression;\n return (exprs.length === 1 ? exprs[0] : new QueryCoditionalExpression('$and', exprs)).simplify();\n }\n\n simplify(): QueryExpression {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return this;\n }\n\n eval(value: any): any {\n return true;\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n return [];\n }\n}\n\nexport class QueryCoditionalExpression extends QueryExpression {\n\n type: typeof TConditionalKeys[number];\n exprs: QueryExpression[];\n\n constructor(type: typeof TConditionalKeys[number], exprs: QueryExpression[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n if (_.isEmpty(this.exprs)) return new QueryExpression;\n if (this.exprs.length === 1 && this.type !== '$nor') return this.exprs[0];\n switch (this.type) {\n case '$and':\n return new QueryCoditionalExpression(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalExpression && x.type === '$and' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QueryExpression;\n case '$nor':\n case '$or':\n return new QueryCoditionalExpression(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalExpression && x.type === '$or' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QueryExpression;\n }\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryCoditionalExpression(this.type, _.map(this.exprs, x => x.mapKey(callback)));\n }\n\n eval(value: any) {\n switch (this.type) {\n case '$and': return _.every(this.exprs, expr => expr.eval(value));\n case '$nor': return !_.some(this.exprs, expr => expr.eval(value));\n case '$or': return _.some(this.exprs, expr => expr.eval(value));\n }\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n return ['boolean'];\n }\n}\n\nexport class QueryComparisonExpression extends QueryExpression {\n\n type: typeof TComparisonKeys[number];\n left: QueryExpression;\n right: QueryExpression;\n\n constructor(type: typeof TComparisonKeys[number], left: QueryExpression, right: QueryExpression) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryComparisonExpression(this.type, this.left.simplify(), this.right.simplify());\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ...this.left.keyPaths(),\n ...this.right.keyPaths(),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryComparisonExpression(this.type, this.left.mapKey(callback), this.right.mapKey(callback));\n }\n\n eval(value: any) {\n switch (this.type) {\n case '$eq': return equal(this.left.eval(value), this.right.eval(value));\n case '$gt': return greaterThan(this.left.eval(value), this.right.eval(value));\n case '$gte': return greaterThanOrEqual(this.left.eval(value), this.right.eval(value));\n case '$lt': return lessThan(this.left.eval(value), this.right.eval(value));\n case '$lte': return lessThanOrEqual(this.left.eval(value), this.right.eval(value));\n case '$ne': return !equal(this.left.eval(value), this.right.eval(value));\n }\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n return ['boolean'];\n }\n}\n\nexport class QueryNotExpression extends QueryExpression {\n\n expr: QueryExpression;\n\n constructor(expr: QueryExpression) {\n super();\n this.expr = expr;\n }\n\n simplify() {\n return new QueryNotExpression(this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryNotExpression(this.expr.mapKey(callback));\n }\n\n eval(value: any) {\n return !this.expr.eval(value);\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n return ['boolean'];\n }\n}\n\nexport class QueryArrayExpression extends QueryExpression {\n\n exprs: QueryExpression[];\n\n constructor(exprs: QueryExpression[]) {\n super();\n this.exprs = exprs;\n }\n\n simplify() {\n return new QueryArrayExpression(_.map(this.exprs, x => x.simplify())) as QueryExpression;\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryArrayExpression(_.map(this.exprs, x => x.mapKey(callback)));\n }\n\n eval(value: any) {\n return _.map(this.exprs, x => x.eval(value));\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n return ['array'];\n }\n}\n\nexport class QueryZeroParamExpression extends QueryExpression {\n\n type: typeof TZeroParamExprKeys[number];\n\n constructor(type: typeof TZeroParamExprKeys[number]) {\n super();\n this.type = type;\n }\n\n eval(value: any): any {\n switch (this.type) {\n case '$now': return new Date();\n case '$rand': return Math.random();\n }\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n switch (this.type) {\n case '$now': return ['date'];\n case '$rand': return ['number', 'decimal'];\n }\n }\n}\n\nexport class QueryUnaryExpression extends QueryExpression {\n\n type: typeof TUnaryExprKeys[number];\n expr: QueryExpression;\n\n constructor(type: typeof TUnaryExprKeys[number], expr: QueryExpression) {\n super();\n this.type = type;\n this.expr = expr;\n }\n\n simplify() {\n return new QueryUnaryExpression(this.type, this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryUnaryExpression(this.type, this.expr.mapKey(callback));\n }\n\n eval(value: any) {\n switch (this.type) {\n case '$abs': return MathUtils.abs(this.expr.eval(value));\n case '$neg': return MathUtils.neg(this.expr.eval(value));\n case '$sqrt': return MathUtils.sqrt(this.expr.eval(value));\n case '$cbrt': return MathUtils.cbrt(this.expr.eval(value));\n case '$ceil': return MathUtils.ceil(this.expr.eval(value));\n case '$floor': return MathUtils.floor(this.expr.eval(value));\n case '$round': return MathUtils.round(this.expr.eval(value));\n case '$exp': return MathUtils.exp(this.expr.eval(value));\n case '$ln': return MathUtils.ln(this.expr.eval(value));\n case '$log2': return MathUtils.log2(this.expr.eval(value));\n case '$log10': return MathUtils.log10(this.expr.eval(value));\n case '$sin': return MathUtils.sin(this.expr.eval(value));\n case '$cos': return MathUtils.cos(this.expr.eval(value));\n case '$tan': return MathUtils.tan(this.expr.eval(value));\n case '$asin': return MathUtils.asin(this.expr.eval(value));\n case '$acos': return MathUtils.acos(this.expr.eval(value));\n case '$atan': return MathUtils.atan(this.expr.eval(value));\n case '$asinh': return MathUtils.asinh(this.expr.eval(value));\n case '$acosh': return MathUtils.acosh(this.expr.eval(value));\n case '$atanh': return MathUtils.atanh(this.expr.eval(value));\n case '$sinh': return MathUtils.sinh(this.expr.eval(value));\n case '$cosh': return MathUtils.cosh(this.expr.eval(value));\n case '$tanh': return MathUtils.tanh(this.expr.eval(value));\n case '$degrees': return MathUtils.degrees(this.expr.eval(value));\n case '$radians': return MathUtils.radians(this.expr.eval(value));\n case '$sign': return MathUtils.sign(this.expr.eval(value));\n case '$size':\n {\n const v = this.expr.eval(value);\n if (!_.isArray(v) && !_.isString(v)) throw Error('Invalid value');\n return v.length;\n }\n case '$lower': return _.toLower(this.expr.eval(value));\n case '$upper': return _.toUpper(this.expr.eval(value));\n }\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n switch (this.type) {\n case '$abs': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$neg': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$sqrt': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$cbrt': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$ceil': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$floor': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$round': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$exp': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$ln': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$log2': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$log10': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$sin': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$cos': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$tan': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$asin': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$acos': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$atan': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$asinh': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$acosh': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$atanh': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$sinh': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$cosh': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$tanh': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$degrees': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$radians': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$sign': return combineNumericTypes(this.expr.evalType(schema, className));\n case '$size': return ['number'];\n case '$lower': return ['string'];\n case '$upper': return ['string'];\n }\n }\n}\n\nexport class QueryBinaryExpression extends QueryExpression {\n\n type: typeof TBinaryExprKeys[number];\n left: QueryExpression;\n right: QueryExpression;\n\n constructor(type: typeof TBinaryExprKeys[number], left: QueryExpression, right: QueryExpression) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryBinaryExpression(this.type, this.left.simplify(), this.right.simplify());\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ...this.left.keyPaths(),\n ...this.right.keyPaths(),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryBinaryExpression(this.type, this.left.mapKey(callback), this.right.mapKey(callback));\n }\n\n eval(value: any) {\n const left = this.left.eval(value);\n const right = this.right?.eval(value);\n switch (this.type) {\n case '$divide': return MathUtils.divide(left, right);\n case '$subtract': return MathUtils.subtract(left, right);\n case '$log': return MathUtils.log(left, right);\n case '$pow': return MathUtils.pow(left, right);\n case '$atan2': return MathUtils.atan2(left, right);\n case '$trim':\n if (!_.isString(left) || !_.isString(right)) throw Error('Invalid value');\n return _.trim(left, right);\n case '$ltrim':\n if (!_.isString(left) || !_.isString(right)) throw Error('Invalid value');\n return _.trimStart(left, right);\n case '$rtrim':\n if (!_.isString(left) || !_.isString(right)) throw Error('Invalid value');\n return _.trimEnd(left, right);\n case '$first':\n if (!_.isArray(left) && !_.isString(left)) throw Error('Invalid value');\n if (!_.isSafeInteger(right) || right <= 0) throw Error('Invalid value');\n return _.isString(left) ? left.slice(0, right) : _.take(left, right);\n case '$last':\n if (!_.isArray(left) && !_.isString(left)) throw Error('Invalid value');\n if (!_.isSafeInteger(right) || right <= 0) throw Error('Invalid value');\n return _.isString(left) ? left.slice(-right) : _.takeRight(left, right);\n case '$ldrop':\n if (!_.isArray(left) && !_.isString(left)) throw Error('Invalid value');\n if (!_.isSafeInteger(right) || right <= 0) throw Error('Invalid value');\n return _.isString(left) ? left.slice(right) : _.drop(left, right);\n case '$rdrop':\n if (!_.isArray(left) && !_.isString(left)) throw Error('Invalid value');\n if (!_.isSafeInteger(right) || right <= 0) throw Error('Invalid value');\n return _.isString(left) ? left.slice(0, -right) : _.dropRight(left, right);\n }\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n switch (this.type) {\n case '$divide':\n case '$subtract':\n case '$log':\n case '$pow':\n case '$atan2':\n return combineNumericTypes(this.left.evalType(schema, className), this.right.evalType(schema, className));\n case '$trim':\n case '$ltrim':\n case '$rtrim':\n return ['string'];\n case '$first':\n case '$last':\n case '$ldrop':\n case '$rdrop':\n return _.intersection(this.left.evalType(schema, className), ['string', 'string[]', 'array']);\n }\n }\n}\n\nexport class QueryTernaryExpression extends QueryExpression {\n\n type: typeof TTernaryExprKeys[number];\n first: QueryExpression;\n second: QueryExpression;\n last: QueryExpression;\n\n constructor(type: typeof TTernaryExprKeys[number], first: QueryExpression, second: QueryExpression, last: QueryExpression) {\n super();\n this.type = type;\n this.first = first;\n this.second = second;\n this.last = last;\n }\n\n simplify() {\n return new QueryTernaryExpression(this.type, this.first.simplify(), this.second.simplify(), this.last.simplify());\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ...this.first.keyPaths(),\n ...this.second.keyPaths(),\n ...this.last.keyPaths(),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryTernaryExpression(this.type, this.first.mapKey(callback), this.second.mapKey(callback), this.last.mapKey(callback));\n }\n\n eval(value: any) {\n const first = this.first.eval(value);\n const second = this.second.eval(value);\n const last = this.last.eval(value);\n switch (this.type) {\n case '$lpad':\n if (!_.isString(first) || !_.isSafeInteger(second) || !_.isString(last)) throw Error('Invalid value');\n return _.padStart(first, second, last);\n case '$rpad':\n if (!_.isString(first) || !_.isSafeInteger(second) || !_.isString(last)) throw Error('Invalid value');\n return _.padEnd(first, second, last);\n }\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n switch (this.type) {\n case '$lpad':\n case '$rpad':\n return ['string'];\n }\n }\n}\n\nexport class QueryListExpression extends QueryExpression {\n\n type: typeof TListExprKeys[number];\n exprs: QueryExpression[];\n\n constructor(type: typeof TListExprKeys[number], exprs: QueryExpression[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n return new QueryListExpression(this.type, _.map(this.exprs, x => x.simplify())) as QueryExpression;\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryListExpression(this.type, _.map(this.exprs, x => x.mapKey(callback)));\n }\n\n eval(value: any) {\n switch (this.type) {\n case '$add': return _.isEmpty(this.exprs) ? undefined : _.reduce(this.exprs, (a, b) => MathUtils.sum(a, b.eval(value)), 0 as number | Decimal);\n case '$multiply': return _.isEmpty(this.exprs) ? undefined : _.reduce(this.exprs, (a, b) => MathUtils.multiply(a, b.eval(value)), 1 as number | Decimal);\n case '$ifNull': return _.find(_.map(this.exprs, x => x.eval(value)), x => !_.isNil(x));\n case '$concat': return _.join(_.map(this.exprs, x => x.eval(value)), '');\n }\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n switch (this.type) {\n case '$add': return combineNumericTypes(..._.map(this.exprs, x => x.evalType(schema, className)));\n case '$multiply': return combineNumericTypes(..._.map(this.exprs, x => x.evalType(schema, className)));\n case '$ifNull': return _.intersection(..._.map(this.exprs, x => x.evalType(schema, className)));\n case '$concat': return ['string'];\n }\n }\n}\n\nexport class QueryCondExpression extends QueryExpression {\n\n branch: {\n case: QueryExpression;\n then: QueryExpression;\n }[];\n default: QueryExpression;\n\n constructor(\n branch: {\n case: QueryExpression;\n then: QueryExpression;\n }[],\n defaultCase: QueryExpression\n ) {\n super();\n this.branch = branch;\n this.default = defaultCase;\n }\n\n simplify() {\n return new QueryCondExpression(\n _.map(this.branch, ({ case: c, then: t }) => ({ case: c.simplify(), then: t.simplify() })),\n this.default.simplify()\n );\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ..._.flatMap(this.branch, ({ case: c, then: t }) => [...c.keyPaths(), ...t.keyPaths()]),\n ...this.default.keyPaths(),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryCondExpression(\n _.map(this.branch, ({ case: c, then: t }) => ({ case: c.mapKey(callback), then: t.mapKey(callback) })),\n this.default.mapKey(callback)\n );\n }\n\n eval(value: any) {\n for (const { case: c, then: t } of this.branch) {\n if (c.eval(value)) return t.eval(value);\n }\n return this.default.eval(value);\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n return _.intersection(\n ..._.map(this.branch, ({ then: t }) => t.evalType(schema, className)),\n this.default.evalType(schema, className)\n );\n }\n}\n\nexport class QueryDistanceExpression extends QueryExpression {\n\n type: typeof TDistanceExprKeys[number];\n left: QueryExpression[];\n right: QueryExpression[];\n\n constructor(type: typeof TDistanceExprKeys[number], left: QueryExpression[], right: QueryExpression[]) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryDistanceExpression(this.type, _.map(this.left, x => x.simplify()), _.map(this.right, x => x.simplify()));\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ..._.flatMap(this.left, x => x.keyPaths()),\n ..._.flatMap(this.right, x => x.keyPaths()),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryDistanceExpression(this.type, _.map(this.left, x => x.mapKey(callback)), _.map(this.right, x => x.mapKey(callback)));\n }\n\n eval(value: any) {\n const left = this.left.length === 1 ? this.left[0].eval(value) : _.map(this.left, x => x.eval(value));\n const right = this.right.length === 1 ? this.right[0].eval(value) : _.map(this.right, x => x.eval(value));\n if (!_.isArray(left) || !_.every(left, x => _.isFinite(x))) throw Error('Invalid vectors');\n if (!_.isArray(right) || !_.every(right, x => _.isFinite(x))) throw Error('Invalid vectors');\n switch (this.type) {\n case '$distance': return distance(left, right);\n case '$innerProduct': return innerProduct(left, right);\n case '$negInnerProduct': return -innerProduct(left, right);\n case '$cosineDistance': return cosine(left, right);\n case '$rectilinearDistance': return rectilinearDistance(left, right);\n }\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n return ['number'];\n }\n}\n\nexport class QueryKeyExpression extends QueryExpression {\n\n key: string;\n\n constructor(key: string) {\n super();\n this.key = key;\n }\n\n keyPaths(): string[] {\n return this.key === '$' ? [] : [this.key];\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryKeyExpression(callback(this.key));\n }\n\n eval(value: any) {\n return getValue(value, this.key);\n }\n\n evalType(schema: Record<string, TSchema>, className: string) {\n const { paths: [, ...subpath], dataType } = resolveColumn(schema, className, this.key);\n if (!_.isEmpty(subpath)) return [];\n if (_.isString(dataType)) return [dataType];\n if (isPrimitive(dataType)) return [dataType.type];\n if (isVector(dataType)) return [_.omit(dataType, 'default')];\n return [dataType];\n }\n}\n\nexport class QueryValueExpression extends QueryExpression {\n\n value: TValue;\n\n constructor(value: TValue) {\n super();\n this.value = value;\n }\n\n eval(value: any) {\n return value;\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType[] {\n if (_.isDate(this.value)) return ['date'];\n if (_.isBoolean(this.value)) return ['boolean'];\n if (_.isArray(this.value)) return ['array'];\n if (_.isString(this.value)) return ['string'];\n if (_.isNumber(this.value)) return ['number'];\n if (this.value instanceof Decimal) return ['decimal'];\n return [];\n }\n}\n","//\n// selectors.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { TValue } from '../../types';\nimport { TBooleanExpression } from './expressions';\nimport { TConditionalKeys, TValueListKeys, TValueSetKeys, TComparisonKeys } from './keys';\n\nexport const allFieldQueryKeys = [\n '$not', '$pattern', '$starts', '$ends', '$size', '$empty', '$every', '$some',\n ...TConditionalKeys,\n ...TValueListKeys,\n ...TValueSetKeys\n];\n\ntype TThisQuerySelector = { $?: TFieldQuerySelector; };\n\nexport type TFieldQuerySelector = {\n $not?: TFieldQuerySelector;\n $starts?: string;\n $ends?: string;\n $pattern?: RegExp | string;\n $size?: number;\n $empty?: boolean;\n $every?: TQuerySelector | TThisQuerySelector;\n $some?: TQuerySelector | TThisQuerySelector;\n} & {\n [x in (typeof TComparisonKeys)[number]]?: TValue;\n } & {\n [x in (typeof TValueListKeys)[number]]?: TValue[];\n } & {\n [x in (typeof TValueSetKeys)[number]]?: TValue[];\n };\n\nexport type TCoditionalQuerySelector = {\n [x in (typeof TConditionalKeys)[number]]?: TQuerySelector[];\n};\n\nexport type TQuerySelector = TCoditionalQuerySelector & {\n $expr?: TBooleanExpression\n} | {\n [x: string]: TFieldQuerySelector;\n};\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { QueryExpression } from './expressions';\nimport { TFieldQuerySelector, TQuerySelector, allFieldQueryKeys } from '../../../../internals/query/types/selectors';\nimport { TComparisonKeys, TConditionalKeys, TValueListKeys, TValueSetKeys } from '../../../../internals/query/types/keys';\nimport { isValue } from '../../../../internals/object';\nimport { TValue } from '../../../../internals/types';\nimport { equal, getValue, greaterThan, greaterThanOrEqual, isIntersect, isSubset, isSuperset, lessThan, lessThanOrEqual } from './utils';\n\nexport class QuerySelector {\n\n static decode(selectors: _.Many<TQuerySelector>, dollerSign: boolean = false): QuerySelector {\n const exprs: QuerySelector[] = [];\n for (const selector of _.castArray(selectors)) {\n for (const [key, query] of _.toPairs(selector)) {\n if (_.includes(TConditionalKeys, key) && _.isArray(query)) {\n exprs.push(new QueryCoditionalSelector(key as any, _.map(query, x => QuerySelector.decode(x, dollerSign))));\n } else if (key === '$expr') {\n exprs.push(new QueryExpressionSelector(QueryExpression.decode(query as any, dollerSign)));\n } else if (dollerSign && key === '$' && !_.isArray(query)) {\n exprs.push(new QueryFieldSelector(key, FieldSelectorExpression.decode(query)));\n } else if (!key.startsWith('$') && !_.isArray(query)) {\n exprs.push(new QueryFieldSelector(key, FieldSelectorExpression.decode(query)));\n } else {\n throw Error('Invalid expression');\n }\n }\n }\n if (_.isEmpty(exprs)) return new QuerySelector;\n return (exprs.length === 1 ? exprs[0] : new QueryCoditionalSelector('$and', exprs)).simplify();\n }\n\n simplify(): QuerySelector {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n\n eval(value: any): boolean {\n return true;\n }\n}\n\nexport class QueryCoditionalSelector extends QuerySelector {\n\n type: typeof TConditionalKeys[number];\n exprs: QuerySelector[];\n\n constructor(type: typeof TConditionalKeys[number], exprs: QuerySelector[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n if (_.isEmpty(this.exprs)) return new QuerySelector;\n if (this.exprs.length === 1 && this.type !== '$nor') return this.exprs[0];\n switch (this.type) {\n case '$and':\n return new QueryCoditionalSelector(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalSelector && x.type === '$and' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QuerySelector;\n case '$nor':\n case '$or':\n return new QueryCoditionalSelector(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalSelector && x.type === '$or' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QuerySelector;\n }\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n eval(value: any) {\n switch (this.type) {\n case '$and': return _.every(this.exprs, expr => expr.eval(value));\n case '$nor': return !_.some(this.exprs, expr => expr.eval(value));\n case '$or': return _.some(this.exprs, expr => expr.eval(value));\n }\n }\n}\n\nexport class FieldSelectorExpression {\n\n type: keyof TFieldQuerySelector;\n value: QuerySelector | FieldSelectorExpression | RegExp | TValue;\n\n constructor(type: keyof TFieldQuerySelector, value: QuerySelector | FieldSelectorExpression | RegExp | TValue) {\n this.type = type;\n this.value = value;\n }\n\n static decode(selector: TFieldQuerySelector): FieldSelectorExpression {\n for (const [type, expr] of _.toPairs(selector)) {\n if (_.includes(TComparisonKeys, type)) {\n if (!isValue(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type as any, expr);\n } else if (_.includes(TValueListKeys, type) || _.includes(TValueSetKeys, type)) {\n if (!isValue(expr) || !_.isArray(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type as any, expr);\n } else {\n switch (type) {\n case '$not':\n {\n const _expr = expr ? { ...expr as any } : {};\n const keys = _.keys(_expr);\n if (keys.length !== 1 && !allFieldQueryKeys.includes(keys[0])) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, FieldSelectorExpression.decode(_expr));\n }\n case '$pattern':\n if (!_.isString(expr) && !_.isRegExp(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$starts':\n case '$ends':\n if (!_.isString(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$size':\n if (!_.isNumber(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$empty':\n if (!_.isBoolean(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$every':\n case '$some':\n return new FieldSelectorExpression(type, QuerySelector.decode(expr ? { ...expr as any } : {}, true));\n default: throw Error('Invalid expression');\n }\n }\n }\n throw Error('Invalid expression');\n }\n\n simplify(): FieldSelectorExpression {\n if (this.value instanceof QuerySelector) {\n return new FieldSelectorExpression(this.type, this.value.simplify());\n }\n if (this.value instanceof FieldSelectorExpression) {\n return new FieldSelectorExpression(this.type, this.value.simplify());\n }\n return this;\n }\n\n keyPaths(field?: string): string[] {\n let result: string[] = [];\n if (this.value instanceof QuerySelector) {\n result = this.value.keyPaths();\n } else if (this.value instanceof FieldSelectorExpression) {\n switch (this.type) {\n case '$every':\n case '$some':\n result = this.value.keyPaths();\n default:\n result = this.value.keyPaths();\n }\n }\n return field ? result.map(x => `${field}.${x}`) : result;\n }\n\n eval(value: any): any {\n if (_.includes(TComparisonKeys, this.type)) {\n switch (this.type) {\n case '$eq': return equal(value, this.value);\n case '$gt': return greaterThan(value, this.value);\n case '$gte': return greaterThanOrEqual(value, this.value);\n case '$lt': return lessThan(value, this.value);\n case '$lte': return lessThanOrEqual(value, this.value);\n case '$ne': return !equal(value, this.value);\n }\n } else if (_.includes(TValueListKeys, this.type) || _.includes(TValueSetKeys, this.type)) {\n switch (this.type) {\n case '$in': return _.isArray(value) && _.some(value, x => equal(x, this.value));\n case '$nin': return _.isArray(value) && !_.some(value, x => equal(x, this.value));\n case '$subset': return _.isArray(value) && _.isArray(this.value) && isSubset(value, this.value);\n case '$superset': return _.isArray(value) && _.isArray(this.value) && isSuperset(value, this.value);\n case '$intersect': return _.isArray(value) && _.isArray(this.value) && isIntersect(value, this.value);\n }\n } else {\n switch (this.type) {\n case '$not':\n return this.value instanceof FieldSelectorExpression && !this.value.eval(value);\n case '$pattern':\n if (_.isString(this.value)) {\n return _.isString(value) && value.includes(this.value);\n }\n if (_.isRegExp(this.value)) {\n return _.isString(value) && !!value.match(this.value);\n }\n return false;\n case '$starts':\n return _.isString(this.value) && _.isString(value) && value.startsWith(this.value);\n case '$ends':\n return _.isString(this.value) && _.isString(value) && value.endsWith(this.value);\n case '$size':\n return _.isNumber(this.value) && (_.isString(value) || _.isArray(value)) && value.length === this.value;\n case '$empty':\n return _.isBoolean(this.value) && (_.isString(value) || _.isArray(value)) && _.isEmpty(value);\n case '$every':\n {\n const expr = this.value;\n return expr instanceof QuerySelector && _.isArray(value) && _.every(value, x => expr.eval(x));\n }\n case '$some':\n {\n const expr = this.value;\n return expr instanceof QuerySelector && _.isArray(value) && _.some(value, x => expr.eval(x));\n }\n default: break;\n }\n }\n throw Error('Invalid expression');\n }\n}\n\nexport class QueryFieldSelector extends QuerySelector {\n\n field: string;\n expr: FieldSelectorExpression;\n\n constructor(field: string, expr: FieldSelectorExpression) {\n super();\n this.field = field;\n this.expr = expr;\n }\n\n simplify() {\n return new QueryFieldSelector(this.field, this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.field === '$' ? this.expr.keyPaths() : [this.field, ...this.expr.keyPaths(this.field)];\n }\n\n eval(value: any) {\n return this.expr.eval(this.field === '$' ? value : getValue(value, this.field));\n }\n}\n\nexport class QueryExpressionSelector extends QuerySelector {\n\n expr: QueryExpression;\n\n constructor(expr: QueryExpression) {\n super();\n this.expr = expr;\n }\n\n simplify() {\n return new QueryExpressionSelector(this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n\n eval(value: any) {\n return !!this.expr.eval(value);\n }\n}\n","//\n// accumulators.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { TExpression } from './expressions';\n\nexport const TUnaryAccumulatorKeys = [\n '$max',\n '$min',\n '$most',\n '$sum',\n '$avg',\n '$stdDevPop',\n '$stdDevSamp',\n '$varPop',\n '$varSamp'\n] as const;\n\nexport const TZeroParamAccumulatorKeys = [\n '$count'\n] as const;\n\nexport type TQueryAccumulator = {\n $percentile?: {\n input: TExpression;\n p: number;\n mode?: 'discrete' | 'continuous';\n },\n} & {\n [x in (typeof TZeroParamAccumulatorKeys)[number]]?: true | {};\n} & {\n [x in (typeof TUnaryAccumulatorKeys)[number]]?: TExpression;\n};\n","//\n// accumulators.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { TUnaryAccumulatorKeys, TZeroParamAccumulatorKeys, TQueryAccumulator } from '../../../../internals/query/types/accumulators';\nimport { QueryExpression } from './expressions';\nimport { _isTypeof, TSchema } from '../../../../internals/schema';\n\nexport class QueryAccumulator {\n\n static decode(query: TQueryAccumulator): QueryAccumulator {\n for (const [key, expr] of _.toPairs(query)) {\n if (_.includes(TUnaryAccumulatorKeys, key)) {\n return new QueryUnaryAccumulator(key as typeof TUnaryAccumulatorKeys[number], QueryExpression.decode(expr as any ?? [], false));\n } else if (_.includes(TZeroParamAccumulatorKeys, key)) {\n return new QueryZeroParamAccumulator(key as typeof TZeroParamAccumulatorKeys[number]);\n } else if (key === '$percentile') {\n const { input, p, mode = 'discrete' } = expr as any ?? {};\n if (!_.isFinite(p) || p < 0 || p > 1) throw Error('Invalid expression');\n if (!_.includes(['discrete', 'continuous'], mode)) throw Error('Invalid expression');\n return new QueryPercentileAccumulator(QueryExpression.decode(input ?? [], false), p, mode);\n } else {\n throw Error('Invalid expression');\n }\n }\n throw Error('Invalid expression');\n }\n\n simplify(): QueryAccumulator {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n\n mapKey(callback: (key: string) => string): QueryAccumulator {\n return this;\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType | undefined {\n return;\n }\n}\n\nexport class QueryZeroParamAccumulator extends QueryAccumulator {\n\n type: typeof TZeroParamAccumulatorKeys[number];\n\n constructor(type: typeof TZeroParamAccumulatorKeys[number]) {\n super();\n this.type = type;\n }\n\n simplify() {\n return this;\n }\n\n keyPaths() {\n return [];\n }\n\n mapKey(callback: (key: string) => string) {\n return this;\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType | undefined {\n switch (this.type) {\n case '$count': return 'number';\n default: break;\n }\n }\n}\n\nexport class QueryUnaryAccumulator extends QueryAccumulator {\n\n type: typeof TUnaryAccumulatorKeys[number];\n expr: QueryExpression;\n\n constructor(type: typeof TUnaryAccumulatorKeys[number], expr: QueryExpression) {\n super();\n this.type = type;\n this.expr = expr;\n }\n\n simplify() {\n return new QueryUnaryAccumulator(this.type, this.expr.simplify());\n }\n\n keyPaths() {\n return this.expr.keyPaths();\n }\n\n mapKey(callback: (key: string) => string) {\n return new QueryUnaryAccumulator(this.type, this.expr.mapKey(callback));\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType | undefined {\n const [dataType] = this.expr.evalType(schema, className);\n if (_.isNil(dataType)) return;\n switch (this.type) {\n case '$max': return _isTypeof(dataType, ['number', 'decimal', 'string', 'date']) ? dataType : undefined;\n case '$min': return _isTypeof(dataType, ['number', 'decimal', 'string', 'date']) ? dataType : undefined;\n case '$most': return _isTypeof(dataType, ['number', 'decimal', 'string', 'date']) ? dataType : undefined;\n case '$avg': return _isTypeof(dataType, ['number', 'decimal']) ? dataType : undefined;\n case '$sum': return _isTypeof(dataType, ['number', 'decimal']) ? dataType : undefined;\n case '$stdDevPop': return _isTypeof(dataType, ['number', 'decimal']) ? dataType : undefined;\n case '$stdDevSamp': return _isTypeof(dataType, ['number', 'decimal']) ? dataType : undefined;\n case '$varPop': return _isTypeof(dataType, ['number', 'decimal']) ? dataType : undefined;\n case '$varSamp': return _isTypeof(dataType, ['number', 'decimal']) ? dataType : undefined;\n default: break;\n }\n }\n}\n\nexport class QueryPercentileAccumulator extends QueryAccumulator {\n\n input: QueryExpression;\n p: number;\n mode: 'discrete' | 'continuous';\n\n constructor(input: QueryExpression, p: number, mode: 'discrete' | 'continuous') {\n super();\n this.input = input;\n this.p = p;\n this.mode = mode;\n }\n\n simplify(): QueryAccumulator {\n return new QueryPercentileAccumulator(this.input.simplify(), this.p, this.mode);\n }\n\n keyPaths(): string[] {\n return this.input.keyPaths();\n }\n\n mapKey(callback: (key: string) => string): QueryAccumulator {\n return new QueryPercentileAccumulator(this.input.mapKey(callback), this.p, this.mode);\n }\n\n evalType(schema: Record<string, TSchema>, className: string): TSchema.DataType | undefined {\n const [dataType] = this.input.evalType(schema, className);\n if (this.mode === 'continuous') {\n return _isTypeof(dataType, ['number', 'decimal']) ? dataType : undefined;\n }\n return dataType;\n }\n}\n","//\n// validator.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { DecodedBaseQuery, DecodedQuery, FindOptions, DecodedSortOption, RelationOptions } from '../../storage';\nimport { QueryCoditionalSelector, QueryFieldSelector, QuerySelector } from './parser';\nimport { TSchema, _typeof, isPointer, isPrimitive, isRelation, isShape, isVector, shapePaths } from '../../../internals/schema';\nimport { ProtoService } from '../../proto';\nimport { TQueryBaseOptions, TSortOption } from '../../../internals/query/base';\nimport { isPrimitiveValue } from '../../../internals/object';\nimport { TObject } from '../../../internals/object';\nimport { PVK } from '../../../internals/private';\nimport { TQuerySelector } from '../../../internals/query/types/selectors';\nimport { QueryExpression } from './parser/expressions';\nimport { TQueryAccumulator } from '../../../internals/query/types/accumulators';\nimport { QueryAccumulator } from './parser/accumulators';\n\nexport const recursiveCheck = (x: any, stack: any[]) => {\n if (_.indexOf(stack, x) !== -1) throw Error('Recursive data detected');\n if (_.isRegExp(x) || isPrimitiveValue(x) || x instanceof TObject) return;\n const children = _.isArray(x) ? x : _.values(x);\n children.forEach(v => recursiveCheck(v, [...stack, x]));\n}\n\nexport const resolveDataType = (\n schema: Record<string, TSchema>,\n classname: string,\n path: string,\n) => {\n let fields = schema[classname].fields;\n let last;\n for (const key of _.toPath(path)) {\n const dataType = fields[key];\n if (_.isNil(dataType)) throw Error(`Invalid path: ${path}`);\n if (isPrimitive(dataType) || isVector(dataType)) return dataType;\n if (isShape(dataType)) {\n fields = dataType.shape;\n continue;\n }\n if (_.isNil(schema[dataType.target])) throw Error(`Invalid path: ${path}`);\n fields = schema[dataType.target].fields;\n last = dataType;\n }\n return last;\n}\n\nexport const resolveColumn = (\n schema: Record<string, TSchema>,\n className: string,\n path: string,\n) => {\n const _schema = schema[className] ?? {};\n let [colname, ...subpath] = path.split('.');\n let dataType = _schema.fields[colname];\n while (dataType && !_.isEmpty(subpath) && isShape(dataType)) {\n const [key, ...remain] = subpath;\n if (!dataType.shape[key]) break;\n dataType = dataType.shape[key];\n colname = `${colname}.${key}`;\n subpath = remain;\n }\n return {\n paths: [colname, ...subpath],\n dataType,\n };\n}\n\ntype QueryValidatorOption = {\n master: boolean;\n disableSecurity: boolean;\n};\n\nexport class QueryValidator<E> {\n\n proto: ProtoService<E>\n acls: string[];\n options: QueryValidatorOption;\n\n static patterns = {\n path: /^[a-z_][\\w-]*(\\[\\d+\\]|\\.\\d*|\\.[a-z_][\\w-]*)*$/gi,\n className: /^[a-z_][\\w]*$/gi,\n fieldName: /^[a-z_][\\w-]*$/gi,\n digits: /^\\d+$/g,\n }\n\n _rperm(className: string) {\n if (this.options.master) return [];\n const check = _.intersection(this.schema[className]?.additionalObjectPermissions?.read, this.acls);\n if (!_.isEmpty(check)) return [];\n return [{ _rperm: { $intersect: this.acls } }];\n }\n _wperm(className: string) {\n if (this.options.master) return [];\n const check = _.intersection(this.schema[className]?.additionalObjectPermissions?.update, this.acls);\n if (!_.isEmpty(check)) return [];\n return [{ _wperm: { $intersect: this.acls } }];\n }\n _expiredAt = { $or: [{ _expired_at: { $eq: null } }, { _expired_at: { $gt: new Date() } }] };\n\n constructor(\n proto: ProtoService<E>,\n acls: string[],\n options: QueryValidatorOption,\n ) {\n this.proto = proto;\n this.acls = _.uniq(['*', ...acls]);\n this.options = options;\n }\n\n get schema() {\n return this.proto.schema;\n }\n\n get objectIdSize() {\n return this.proto[PVK].options.objectIdSize;\n }\n\n static recursiveCheck(...x: any[]) {\n recursiveCheck(x, []);\n }\n\n validateKeyPerm(\n key: string,\n type: keyof TSchema.FLPs,\n schema: TSchema,\n ) {\n key = _.first(key?.split('.')) ?? key;\n if (_.isEmpty(key) || (!_.has(schema.fields, key) && !TObject.defaultKeys.includes(key))) throw Error(`Invalid key: ${key}`);\n if (type === 'read' && TObject.defaultKeys.includes(key)) return true;\n if (type !== 'read' && TObject.defaultReadonlyKeys.includes(key)) return false;\n if (!this.options.disableSecurity && _.includes(schema.secureFields, key)) return false;\n return this.options.master || !_.every(schema.fieldLevelPermissions?.[key]?.[type] ?? ['*'], x => !_.includes(this.acls, x));\n }\n\n validateCLPs(\n className: string,\n ...keys: (keyof TSchema.CLPs)[]\n ) {\n if (!_.has(this.schema, className)) throw Error('No permission');\n return this.options.master || this.proto[PVK].validateCLPs(className, this.acls, keys);\n }\n\n validateForeignField(dataType: TSchema.RelationType, type: keyof TSchema.FLPs, errorMeg: string) {\n if (_.isNil(dataType.foreignField)) return;\n const foreignField = resolveDataType(this.schema, dataType.target, dataType.foreignField);\n if (_.isNil(foreignField) || _.isString(foreignField)) throw Error(errorMeg);\n if (isPrimitive(foreignField)) throw Error(errorMeg);\n if (foreignField.type === 'relation' && !_.isNil(foreignField.foreignField)) throw Error(errorMeg);\n if (!this.validateKeyPerm(dataType.foreignField, type, this.schema[dataType.target])) throw Error('No permission');\n }\n\n validateKey(\n className: string,\n key: string | string[],\n type: keyof TSchema.FLPs,\n validator: RegExp,\n ): boolean {\n\n const schema = this.schema[className] ?? {};\n const _key = _.isArray(key) ? key.join('.') : key;\n if (!_key.match(validator)) throw Error(`Invalid key: ${_key}`);\n\n const [colname, ..._subpath] = _.toPath(_key);\n if (!this.validateKeyPerm(colname, type, schema)) return false;\n if (_.isEmpty(_subpath) && TObject.defaultKeys.includes(colname)) return true;\n if (_.isEmpty(_subpath)) return true;\n\n const { paths: [_colname, ...subpath], dataType } = resolveColumn(this.schema, className, _key);\n const isElem = _.first(subpath)?.match(QueryValidator.patterns.digits);\n if (isElem) {\n if (dataType === 'array' || dataType === 'string[]') return true;\n if (!_.isString(dataType) && dataType.type !== 'relation') return false;\n }\n\n if (isPrimitive(dataType)) return true;\n if (isVector(dataType)) return true;\n\n const relations: (TSchema.PointerType | TSchema.RelationType)[] = [];\n\n if (isShape(dataType)) {\n for (const { type } of shapePaths(dataType)) {\n if (!isPrimitive(type) && !isVector(type)) relations.push(type);\n }\n } else {\n relations.push(dataType);\n }\n\n for (const relation of relations) {\n if (_.isNil(this.schema[relation.target])) return false;\n if (type === 'read' && !this.validateCLPs(relation.target, 'get')) return false;\n if (relation.type === 'relation') this.validateForeignField(relation, type, `Invalid key: ${_key}`);\n }\n\n if (isShape(dataType)) {\n if (!_.isEmpty(subpath)) throw Error(`Invalid key: ${_key}`);\n return true;\n }\n\n const _sub = isElem ? subpath.slice(1) : subpath;\n return _.isEmpty(_sub) || this.validateKey(dataType.target, _sub, type, validator);\n }\n\n validateFields<T extends Record<string, any>>(\n className: string,\n values: T,\n type: keyof TSchema.FLPs,\n validator: RegExp,\n ) {\n const _values = { ...values };\n for (const key of _.keys(_values)) {\n if (!this.validateKey(className, key, type, validator)) throw Error('No permission');\n }\n return _values;\n }\n\n decodeGroupMatches(className: string, groupMatches: Record<string, Record<string, TQueryAccumulator>>): Record<string, Record<string, QueryAccumulator>> {\n const result = _.mapValues(groupMatches, m => _.mapValues(m, x => QueryAccumulator.decode(x).simplify()));\n for (const [colname, group] of _.entries(result)) {\n const dataType = resolveDataType(this.schema, className, colname);\n if (!dataType || !isRelation(dataType)) throw Error(`Invalid relation key: ${colname}`);\n for (const key of _.keys(group)) {\n if (!key.match(QueryValidator.patterns.fieldName)) throw Error(`Invalid field name: ${key}`);\n }\n }\n return result;\n }\n\n decodeIncludes(className: string, includes: string[], groupMatches: Record<string, Record<string, QueryAccumulator>>): string[] {\n\n const schema = this.schema[className] ?? {};\n\n const _includes: string[] = [];\n const populates: Record<string, {\n className: string;\n subpaths: string[];\n groupMatches: Record<string, Record<string, QueryAccumulator>>;\n }> = {};\n\n for (const include of includes) {\n if (include === '*') {\n const primitive = _.pickBy(schema.fields, (v, k) => isPrimitive(v) && this.validateKeyPerm(k, 'read', schema));\n const shapedObject = _.pickBy(schema.fields, (v, k) => isShape(v) && this.validateKeyPerm(k, 'read', schema));\n _includes.push(\n ..._.keys(primitive),\n ..._.flatMap(shapedObject, (v, k) => _.flatMap(shapePaths(v as any), x => isPrimitive(x.type) ? [`${k}.${x.path}`] : [])),\n );\n } else {\n const { paths: [colname, ...subpath], dataType } = resolveColumn(this.schema, className, include);\n if (!this.validateKeyPerm(colname, 'read', schema)) throw Error('No permission');\n\n if (isPointer(dataType) || isRelation(dataType)) {\n if (!this.validateCLPs(dataType.target, 'get')) throw Error('No permission');\n if (dataType.type === 'relation') this.validateForeignField(dataType, 'read', `Invalid include: ${include}`);\n\n const isDigit = _.first(subpath)?.match(QueryValidator.patterns.digits);\n const _subpath = isRelation(dataType) && isDigit ? _.slice(subpath, 1) : subpath;\n\n populates[colname] = populates[colname] ?? { className: dataType.target, subpaths: [], groupMatches: {} };\n const s = _.first(_subpath);\n if (!s || !groupMatches[colname]?.[s]) {\n populates[colname].subpaths.push(_.isEmpty(_subpath) ? '*' : _subpath.join('.'));\n populates[colname].groupMatches = _.mapKeys(_.pickBy(groupMatches, (x, k) => _.startsWith(k, `${colname}.`)), (x, k) => k.slice(colname.length + 1));\n }\n\n } else if (_.isEmpty(subpath) && isShape(dataType)) {\n\n for (const { path, type } of shapePaths(dataType)) {\n if (isPrimitive(type) || isVector(type)) {\n _includes.push(`${colname}.${path}`);\n } else {\n\n if (!this.validateCLPs(type.target, 'get')) throw Error('No permission');\n if (type.type === 'relation') this.validateForeignField(type, 'read', `Invalid include: ${include}`);\n\n populates[`${colname}.${path}`] = populates[`${colname}.${path}`] ?? { className: type.target, subpaths: [], groupMatches: {} };\n populates[`${colname}.${path}`].subpaths.push('*');\n populates[`${colname}.${path}`].groupMatches = _.mapKeys(_.pickBy(groupMatches, (x, k) => _.startsWith(k, `${colname}.${path}.`)), (x, k) => k.slice(`${colname}.${path}`.length + 1));\n }\n }\n\n } else if (_.isEmpty(subpath) || _.includes(['object', 'array'], _typeof(dataType))) {\n _includes.push(colname);\n } else {\n throw Error(`Invalid include: ${include}`);\n }\n }\n }\n\n for (const [key, populate] of _.toPairs(populates)) {\n const subpaths = this.decodeIncludes(populate.className, populate.subpaths, populate.groupMatches);\n _includes.push(..._.map(subpaths, x => `${key}.${x}`));\n }\n\n _includes.push(...TObject.defaultKeys);\n return _.uniq(_includes);\n }\n\n decodeSort(sort: Record<string, 1 | -1> | TSortOption[]): Record<string, 1 | -1> | DecodedSortOption[] {\n if (_.isArray(sort)) {\n return _.map(sort, s => ({\n order: s.order,\n expr: QueryExpression.decode(s.expr, false).simplify(),\n }))\n }\n return sort;\n }\n\n decodeMatches(className: string, matches: Record<string, TQueryBaseOptions>, includes: string[]): Record<string, DecodedBaseQuery> {\n\n const schema = this.schema[className] ?? {};\n const _matches: Record<string, DecodedBaseQuery> = {};\n\n const _includes = _.groupBy(_.map(includes, x => resolveColumn(this.schema, className, x)), ({ paths: [colname] }) => colname);\n\n for (const [colname, [{ dataType }]] of _.entries(_includes)) {\n if (!this.validateKeyPerm(colname, 'read', schema)) continue;\n if (isPrimitive(dataType) || isVector(dataType) || isShape(dataType)) continue;\n _matches[colname] = {\n matches: this.decodeMatches(\n dataType.target, {},\n includes.filter(x => x.startsWith(`${colname}.`)).map(x => x.slice(colname.length + 1)),\n ),\n };\n }\n\n for (const [colname, match] of _.toPairs(matches)) {\n if (!this.validateKeyPerm(colname, 'read', schema)) throw Error('No permission');\n\n const { paths: [_colname, ...subpath], dataType } = resolveColumn(this.schema, className, colname);\n\n if (isPointer(dataType) && !_.isEmpty(subpath)) {\n _matches[_colname] = {\n matches: this.decodeMatches(\n dataType.target, { [subpath.join('.')]: match },\n includes.filter(x => x.startsWith(`${_colname}.`)).map(x => x.slice(_colname.length + 1)),\n ),\n };\n } else if (isRelation(dataType)) {\n if (!this.validateCLPs(dataType.target, 'get')) throw Error('No permission');\n this.validateForeignField(dataType, 'read', `Invalid match: ${colname}`);\n const groupMatches = this.decodeGroupMatches(dataType.target, match.groupMatches ?? {});\n _matches[_colname] = {\n ...match,\n groupMatches,\n filter: QuerySelector.decode(_.castArray<TQuerySelector>(match.filter)).simplify(),\n matches: this.decodeMatches(\n dataType.target, match.matches ?? {},\n includes.filter(x => x.startsWith(`${_colname}.`)).map(x => x.slice(_colname.length + 1)),\n ),\n sort: match.sort && this.decodeSort(match.sort),\n };\n } else {\n throw Error(`Invalid match: ${colname}`);\n }\n }\n\n return _matches;\n }\n\n validateRelatedBy(className: string | null, relation: { className: string; key: string; }) {\n\n if (!this.validateCLPs(relation.className, 'get')) throw Error('No permission');\n if (!this.validateKey(relation.className, relation.key, 'read', QueryValidator.patterns.path)) throw Error('No permission');\n\n const { dataType } = resolveColumn(this.schema, relation.className, relation.key);\n if (!isPointer(dataType) && !isRelation(dataType)) throw Error(`Invalid relation key: ${relation.key}`);\n if (className && dataType.target !== className) throw Error(`Invalid relation key: ${relation.key}`);\n\n if (isRelation(dataType) && dataType.foreignField) {\n this.validateForeignField(dataType, 'read', `Invalid relation key: ${relation.key}`);\n this.validateRelatedBy(null, { className: dataType.target, key: dataType.foreignField });\n }\n }\n\n decodeQuery<Q extends FindOptions & RelationOptions>(query: Q, action: keyof TSchema.ACLs): DecodedQuery<Q> {\n\n if ('relatedBy' in query && query.relatedBy) this.validateRelatedBy(query.className, query.relatedBy);\n\n const filter = QuerySelector.decode([\n ...action === 'read' ? this._rperm(query.className) : this._wperm(query.className),\n ..._.castArray<TQuerySelector>(query.filter),\n this._expiredAt,\n ]).simplify();\n\n const groupMatches = this.decodeGroupMatches(query.className, query.groupMatches ?? {});\n\n const matchKeyPaths = (\n matches: Record<string, TQueryBaseOptions>\n ): string[] => _.flatMap(matches, (match, key) => [\n ..._.keys(match.sort),\n ...QuerySelector.decode(match.filter ?? []).keyPaths(),\n ...matchKeyPaths(match.matches ?? {}),\n ..._.keys(match.groupMatches),\n ..._.flatMap(_.values(match.groupMatches), x => QueryAccumulator.decode(x).keyPaths()),\n ].map(x => `${key}.${x}`));\n\n const sort = query.sort && this.decodeSort(query.sort);\n\n const keyPaths = _.uniq([\n ...query.includes ?? ['*'],\n ..._.isArray(sort) ? _.flatMap(sort, s => s.expr.keyPaths()) : _.keys(sort),\n ...filter.keyPaths(),\n ...matchKeyPaths(query.matches ?? {}),\n ..._.keys(groupMatches),\n ..._.flatMap(_.values(groupMatches), m => _.flatMap(_.values(m), x => x.keyPaths())),\n ]);\n\n const includes = this.decodeIncludes(query.className, keyPaths, groupMatches);\n const matches = this.decodeMatches(query.className, query.matches ?? {}, includes);\n\n return {\n ...query,\n groupMatches,\n filter,\n matches,\n includes,\n sort,\n objectIdSize: this.objectIdSize,\n extraFilter: (className) => QuerySelector.decode([...this._rperm(className), this._expiredAt]).simplify(),\n };\n }\n\n isGetMethod(query: QuerySelector) {\n\n const ids = [];\n\n if (query instanceof QueryCoditionalSelector && query.type === '$and') {\n for (const expr of query.exprs) {\n if (\n expr instanceof QueryFieldSelector &&\n expr.field === '_id' &&\n expr.expr.type === '$eq'\n ) {\n if (!_.isString(expr.expr.value)) return false;\n ids.push(expr.expr.value);\n }\n }\n } else if (\n query instanceof QueryFieldSelector &&\n query.field === '_id' &&\n query.expr.type === '$eq'\n ) {\n if (!_.isString(query.expr.value)) return false;\n ids.push(query.expr.value);\n }\n\n return _.uniq(ids).length === 1;\n }\n\n}\n"],"names":["isNum","TObject","isPrimitiveValue","isValue","isPrimitive","isVector","_isTypeof","isShape","PVK","shapePaths","isRelation","isPointer","_typeof"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { T as TObject, l as isPrimitiveValue, m as isValue, c as isPrimitive, j as isVector, k as _isTypeof, b as isShape, s as shapePaths, a as isRelation, i as isPointer, h as _typeof } from './index-
|
|
2
|
+
import { T as TObject, l as isPrimitiveValue, m as isValue, c as isPrimitive, j as isVector, k as _isTypeof, b as isShape, s as shapePaths, a as isRelation, i as isPointer, h as _typeof } from './index-gWcE22mf.mjs';
|
|
3
3
|
import Decimal from 'decimal.js';
|
|
4
4
|
import { P as PVK } from './private-CNw40LZ7.mjs';
|
|
5
5
|
|
|
@@ -202,9 +202,9 @@ const equal = (lhs, rhs) => {
|
|
|
202
202
|
if (lhs instanceof TObject && rhs instanceof TObject) {
|
|
203
203
|
if (lhs.className !== rhs.className)
|
|
204
204
|
return false;
|
|
205
|
-
if (_.isNil(lhs.
|
|
205
|
+
if (_.isNil(lhs.id) && _.isNil(rhs.id))
|
|
206
206
|
return lhs === rhs;
|
|
207
|
-
return lhs.
|
|
207
|
+
return lhs.id === rhs.id;
|
|
208
208
|
}
|
|
209
209
|
else if (lhs instanceof TObject || rhs instanceof TObject) {
|
|
210
210
|
return false;
|
|
@@ -244,9 +244,9 @@ const lessThan = (lhs, rhs) => {
|
|
|
244
244
|
if (lhs instanceof TObject && rhs instanceof TObject) {
|
|
245
245
|
if (lhs.className !== rhs.className)
|
|
246
246
|
return false;
|
|
247
|
-
if (_.isNil(lhs.
|
|
247
|
+
if (_.isNil(lhs.id) && _.isNil(rhs.id))
|
|
248
248
|
return false;
|
|
249
|
-
return (lhs.
|
|
249
|
+
return (lhs.id ?? '') < (rhs.id ?? '');
|
|
250
250
|
}
|
|
251
251
|
else if (lhs instanceof TObject || rhs instanceof TObject) {
|
|
252
252
|
return false;
|
|
@@ -2067,7 +2067,7 @@ class QueryValidator {
|
|
|
2067
2067
|
};
|
|
2068
2068
|
}
|
|
2069
2069
|
isGetMethod(query) {
|
|
2070
|
-
const
|
|
2070
|
+
const ids = [];
|
|
2071
2071
|
if (query instanceof QueryCoditionalSelector && query.type === '$and') {
|
|
2072
2072
|
for (const expr of query.exprs) {
|
|
2073
2073
|
if (expr instanceof QueryFieldSelector &&
|
|
@@ -2075,7 +2075,7 @@ class QueryValidator {
|
|
|
2075
2075
|
expr.expr.type === '$eq') {
|
|
2076
2076
|
if (!_.isString(expr.expr.value))
|
|
2077
2077
|
return false;
|
|
2078
|
-
|
|
2078
|
+
ids.push(expr.expr.value);
|
|
2079
2079
|
}
|
|
2080
2080
|
}
|
|
2081
2081
|
}
|
|
@@ -2084,11 +2084,11 @@ class QueryValidator {
|
|
|
2084
2084
|
query.expr.type === '$eq') {
|
|
2085
2085
|
if (!_.isString(query.expr.value))
|
|
2086
2086
|
return false;
|
|
2087
|
-
|
|
2087
|
+
ids.push(query.expr.value);
|
|
2088
2088
|
}
|
|
2089
|
-
return _.uniq(
|
|
2089
|
+
return _.uniq(ids).length === 1;
|
|
2090
2090
|
}
|
|
2091
2091
|
}
|
|
2092
2092
|
|
|
2093
2093
|
export { FieldSelectorExpression as F, QueryValidator as Q, QueryExpression as a, resolveDataType as b, QuerySelector as c, QueryCoditionalSelector as d, QueryFieldSelector as e, QueryExpressionSelector as f, QueryArrayExpression as g, QueryValueExpression as h, QueryKeyExpression as i, QueryCoditionalExpression as j, QueryComparisonExpression as k, QueryNotExpression as l, QueryDistanceExpression as m, QueryZeroParamExpression as n, QueryUnaryExpression as o, QueryBinaryExpression as p, QueryListExpression as q, resolveColumn as r, QueryTernaryExpression as s, QueryCondExpression as t, QueryZeroParamAccumulator as u, QueryUnaryAccumulator as v, QueryPercentileAccumulator as w };
|
|
2094
|
-
//# sourceMappingURL=validator-
|
|
2094
|
+
//# sourceMappingURL=validator-DX2nXeQo.mjs.map
|