@valkey/valkey-glide-darwin-arm64 1.2.0 → 1.2.1-rc0
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/build-ts/src/BaseClient.d.ts +27 -1
- package/build-ts/src/BaseClient.js +9 -1
- package/build-ts/src/BaseClient.js.map +1 -1
- package/build-ts/src/Commands.d.ts +12 -0
- package/build-ts/src/Commands.js.map +1 -1
- package/build-ts/src/GlideClient.d.ts +17 -1
- package/build-ts/src/GlideClient.js +3 -0
- package/build-ts/src/GlideClient.js.map +1 -1
- package/build-ts/src/GlideClusterClient.d.ts +23 -7
- package/build-ts/src/GlideClusterClient.js +8 -3
- package/build-ts/src/GlideClusterClient.js.map +1 -1
- package/build-ts/src/ProtobufMessage.js +46 -1
- package/build-ts/src/ProtobufMessage.js.map +1 -1
- package/node_modules/glide-rs/glide-rs.darwin-arm64.node +0 -0
- package/node_modules/glide-rs/index.d.ts +2 -1
- package/node_modules/glide-rs/index.js +4 -2
- package/npm/glide/index.ts +4 -3
- package/npm/glide/package.json +0 -1
- package/package.json +2 -2
- package/rust-client/node_modules/mingo/README.md +58 -53
- package/rust-client/node_modules/mingo/dist/cjs/aggregator.js +18 -20
- package/rust-client/node_modules/mingo/dist/cjs/core.js +179 -190
- package/rust-client/node_modules/mingo/dist/cjs/cursor.js +34 -34
- package/rust-client/node_modules/mingo/dist/cjs/index.js +11 -3
- package/rust-client/node_modules/mingo/dist/cjs/init/basic.js +4 -22
- package/rust-client/node_modules/mingo/dist/cjs/init/system.js +6 -6
- package/rust-client/node_modules/mingo/dist/cjs/lazy.js +58 -61
- package/rust-client/node_modules/mingo/dist/cjs/operators/_predicates.js +12 -25
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/_internal.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/accumulator.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/first.js +3 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/last.js +4 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/max.js +9 -6
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/mergeObjects.js +5 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/min.js +9 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/push.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/sum.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/add.js +9 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ceil.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/exp.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/floor.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ln.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log10.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/round.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/sqrt.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/subtract.js +5 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/trunc.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/arrayElemAt.js +2 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/arrayToObject.js +3 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/concatArrays.js +11 -5
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/filter.js +1 -0
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/first.js +8 -8
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/firstN.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/in.js +1 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/indexOfArray.js +5 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/isArray.js +2 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/last.js +8 -8
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/lastN.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/map.js +1 -0
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/maxN.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/minN.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/reduce.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/reverseArray.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/sortArray.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/zip.js +4 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/bitwise/_internal.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitNot.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/boolean/not.js +3 -5
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/comparison/cmp.js +6 -5
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/conditional/cond.js +1 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/conditional/ifNull.js +1 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/conditional/switch.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/_internal.js +157 -65
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateAdd.js +1 -29
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateDiff.js +32 -20
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateFromParts.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateFromString.js +13 -9
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateToString.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateTrunc.js +107 -0
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dayOfYear.js +1 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/index.js +2 -0
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/isoWeekYear.js +1 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/week.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/misc/getField.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/object/mergeObjects.js +9 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/object/objectToArray.js +5 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/object/setField.js +11 -7
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setDifference.js +9 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setEquals.js +17 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setIntersection.js +2 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setIsSubset.js +15 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setUnion.js +4 -5
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/_internal.js +4 -8
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/concat.js +5 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/indexOfBytes.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/replaceAll.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/replaceOne.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/split.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/strcasecmp.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/substr.js +4 -14
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/substrBytes.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/trignometry/atan2.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/trignometry/cosh.js +0 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/_internal.js +20 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/convert.js +3 -5
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toBool.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toDate.js +3 -6
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toDouble.js +5 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toInt.js +1 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toLong.js +1 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toString.js +11 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/type.js +11 -14
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/addFields.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/bucket.js +53 -53
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/bucketAuto.js +670 -65
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/count.js +2 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/densify.js +196 -0
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/graphLookup.js +78 -0
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/group.js +6 -9
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/index.js +4 -0
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/limit.js +1 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/lookup.js +47 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/merge.js +7 -13
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/out.js +1 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/project.js +19 -38
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/redact.js +3 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/replaceWith.js +9 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/sample.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/setWindowFields.js +10 -20
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/skip.js +1 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/sort.js +10 -19
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/sortByCount.js +5 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/unionWith.js +1 -1
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/unset.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/unwind.js +5 -9
- package/rust-client/node_modules/mingo/dist/cjs/operators/projection/elemMatch.js +2 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/projection/slice.js +2 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/query/bitwise/_internal.js +4 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/_internal.js +8 -14
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/addToSet.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/bit.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/max.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/min.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/pop.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/pull.js +2 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/push.js +3 -9
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/rename.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/set.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/update/unset.js +1 -2
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/_internal.js +2 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/denseRank.js +8 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/derivative.js +4 -6
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/documentNumber.js +1 -3
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/expMovingAvg.js +4 -6
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/integral.js +3 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/linearFill.js +4 -6
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/locf.js +3 -4
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/rank.js +8 -10
- package/rust-client/node_modules/mingo/dist/cjs/operators/window/shift.js +2 -2
- package/rust-client/node_modules/mingo/dist/cjs/query.js +20 -19
- package/rust-client/node_modules/mingo/dist/cjs/types.js +22 -0
- package/rust-client/node_modules/mingo/dist/cjs/updater.js +6 -5
- package/rust-client/node_modules/mingo/dist/cjs/util.js +265 -388
- package/rust-client/node_modules/mingo/dist/esm/aggregator.js +18 -21
- package/rust-client/node_modules/mingo/dist/esm/core.js +179 -192
- package/rust-client/node_modules/mingo/dist/esm/cursor.js +35 -35
- package/rust-client/node_modules/mingo/dist/esm/index.js +8 -2
- package/rust-client/node_modules/mingo/dist/esm/init/basic.js +5 -12
- package/rust-client/node_modules/mingo/dist/esm/init/system.js +7 -7
- package/rust-client/node_modules/mingo/dist/esm/lazy.js +58 -61
- package/rust-client/node_modules/mingo/dist/esm/operators/_predicates.js +14 -32
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/_internal.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/accumulator.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/first.js +7 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/last.js +8 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/max.js +10 -7
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/mergeObjects.js +5 -1
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/min.js +10 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/push.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/sum.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/add.js +9 -10
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/ceil.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/exp.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/floor.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/ln.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/log.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/log10.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/round.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/sqrt.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/subtract.js +5 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/trunc.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/arrayElemAt.js +3 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/arrayToObject.js +3 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/concatArrays.js +12 -6
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/filter.js +2 -1
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/first.js +10 -13
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/firstN.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/in.js +1 -1
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/indexOfArray.js +5 -10
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/isArray.js +2 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/last.js +10 -13
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/lastN.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/map.js +2 -1
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/maxN.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/minN.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/reduce.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/reverseArray.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/sortArray.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/zip.js +4 -10
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/bitwise/_internal.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/bitwise/bitNot.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/boolean/not.js +4 -6
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/comparison/cmp.js +6 -5
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/conditional/cond.js +2 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/conditional/ifNull.js +1 -1
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/conditional/switch.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/_internal.js +140 -61
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateAdd.js +2 -35
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateDiff.js +43 -21
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateFromParts.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateFromString.js +13 -11
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateToString.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateTrunc.js +97 -0
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dayOfYear.js +2 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/index.js +1 -0
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/isoWeekYear.js +2 -5
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/week.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/misc/getField.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/object/mergeObjects.js +10 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/object/objectToArray.js +6 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/object/setField.js +11 -7
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setDifference.js +10 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setEquals.js +18 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setIntersection.js +3 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setIsSubset.js +16 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setUnion.js +5 -6
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/_internal.js +4 -8
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/concat.js +6 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/indexOfBytes.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/replaceAll.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/replaceOne.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/split.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/strcasecmp.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/substr.js +4 -14
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/substrBytes.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/trignometry/atan2.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/trignometry/cosh.js +0 -1
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/_internal.js +17 -11
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/convert.js +3 -5
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toBool.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toDate.js +4 -7
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toDouble.js +6 -11
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toInt.js +2 -5
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toLong.js +2 -5
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toString.js +12 -11
- package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/type.js +12 -15
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/addFields.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/bucket.js +54 -61
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/bucketAuto.js +679 -66
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/count.js +3 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/densify.js +183 -0
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/graphLookup.js +55 -0
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/group.js +6 -9
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/index.js +2 -0
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/limit.js +1 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/lookup.js +55 -11
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/merge.js +9 -14
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/out.js +2 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/project.js +21 -42
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/redact.js +3 -1
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/replaceWith.js +9 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/sample.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/setWindowFields.js +12 -23
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/skip.js +1 -1
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/sort.js +11 -20
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/sortByCount.js +5 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/unionWith.js +2 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/unset.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/unwind.js +6 -9
- package/rust-client/node_modules/mingo/dist/esm/operators/projection/elemMatch.js +3 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/projection/slice.js +2 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/query/bitwise/_internal.js +4 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/update/_internal.js +9 -14
- package/rust-client/node_modules/mingo/dist/esm/operators/update/addToSet.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/update/bit.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/update/max.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/update/min.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/update/pop.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/update/pull.js +2 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/update/push.js +3 -9
- package/rust-client/node_modules/mingo/dist/esm/operators/update/rename.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/update/set.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/update/unset.js +1 -2
- package/rust-client/node_modules/mingo/dist/esm/operators/window/_internal.js +2 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/window/denseRank.js +8 -10
- package/rust-client/node_modules/mingo/dist/esm/operators/window/derivative.js +4 -6
- package/rust-client/node_modules/mingo/dist/esm/operators/window/documentNumber.js +1 -3
- package/rust-client/node_modules/mingo/dist/esm/operators/window/expMovingAvg.js +4 -6
- package/rust-client/node_modules/mingo/dist/esm/operators/window/integral.js +3 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/window/linearFill.js +4 -6
- package/rust-client/node_modules/mingo/dist/esm/operators/window/locf.js +3 -4
- package/rust-client/node_modules/mingo/dist/esm/operators/window/rank.js +8 -10
- package/rust-client/node_modules/mingo/dist/esm/operators/window/shift.js +2 -2
- package/rust-client/node_modules/mingo/dist/esm/query.js +22 -32
- package/rust-client/node_modules/mingo/dist/esm/types.js +14 -0
- package/rust-client/node_modules/mingo/dist/esm/updater.js +5 -5
- package/rust-client/node_modules/mingo/dist/esm/util.js +263 -377
- package/rust-client/node_modules/mingo/dist/types/aggregator.d.ts +7 -9
- package/rust-client/node_modules/mingo/dist/types/core.d.ts +41 -52
- package/rust-client/node_modules/mingo/dist/types/cursor.d.ts +6 -12
- package/rust-client/node_modules/mingo/dist/types/index.d.ts +8 -4
- package/rust-client/node_modules/mingo/dist/types/init/basic.d.ts +1 -6
- package/rust-client/node_modules/mingo/dist/types/lazy.d.ts +19 -15
- package/rust-client/node_modules/mingo/dist/types/operators/_predicates.d.ts +20 -20
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/accumulator.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/addToSet.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/avg.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/bottom.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/bottomN.d.ts +4 -4
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/count.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/covariancePop.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/covarianceSamp.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/first.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/firstN.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/last.d.ts +4 -4
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/lastN.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/max.d.ts +4 -5
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/maxN.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/mergeObjects.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/min.d.ts +4 -5
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/minN.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/percentile.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/push.d.ts +4 -4
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/stdDevPop.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/stdDevSamp.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/sum.d.ts +5 -3
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/top.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/accumulator/topN.d.ts +4 -4
- package/rust-client/node_modules/mingo/dist/types/operators/expression/arithmetic/add.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/arithmetic/multiply.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/arithmetic/pow.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/arithmetic/subtract.d.ts +1 -0
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/arrayElemAt.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/concatArrays.d.ts +3 -3
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/filter.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/first.d.ts +0 -4
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/firstN.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/in.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/indexOfArray.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/isArray.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/last.d.ts +0 -4
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/lastN.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/map.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/maxN.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/minN.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/range.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/reduce.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/reverseArray.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/array/slice.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/date/_internal.d.ts +31 -9
- package/rust-client/node_modules/mingo/dist/types/operators/expression/date/dateFromString.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/expression/date/dateToParts.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/expression/date/dateTrunc.d.ts +12 -0
- package/rust-client/node_modules/mingo/dist/types/operators/expression/date/index.d.ts +1 -0
- package/rust-client/node_modules/mingo/dist/types/operators/expression/misc/rand.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/expression/object/mergeObjects.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/expression/percentile.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/set/setIsSubset.d.ts +3 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/string/_internal.d.ts +4 -4
- package/rust-client/node_modules/mingo/dist/types/operators/expression/string/indexOfBytes.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/string/replaceAll.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/string/replaceOne.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/string/split.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/string/strLenBytes.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/string/strLenCP.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/expression/string/substrBytes.d.ts +2 -0
- package/rust-client/node_modules/mingo/dist/types/operators/expression/type/_internal.d.ts +6 -2
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/_internal.d.ts +4 -4
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/addFields.d.ts +8 -5
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/bucket.d.ts +8 -5
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/bucketAuto.d.ts +8 -7
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/count.d.ts +7 -5
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/densify.d.ts +12 -0
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/facet.d.ts +7 -1
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/fill.d.ts +6 -3
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/graphLookup.d.ts +13 -0
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/group.d.ts +4 -2
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/index.d.ts +2 -0
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/limit.d.ts +3 -1
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/lookup.d.ts +4 -2
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/match.d.ts +4 -3
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/merge.d.ts +3 -5
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/out.d.ts +5 -3
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/project.d.ts +4 -3
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/redact.d.ts +1 -1
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/replaceRoot.d.ts +5 -5
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/replaceWith.d.ts +8 -1
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/sample.d.ts +7 -5
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/setWindowFields.d.ts +7 -5
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/skip.d.ts +6 -4
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/sort.d.ts +5 -3
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/sortByCount.d.ts +5 -5
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/unionWith.d.ts +3 -1
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/unset.d.ts +2 -0
- package/rust-client/node_modules/mingo/dist/types/operators/pipeline/unwind.d.ts +5 -2
- package/rust-client/node_modules/mingo/dist/types/operators/query/evaluation/expr.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/query/evaluation/jsonSchema.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/query/evaluation/where.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/_internal.d.ts +5 -5
- package/rust-client/node_modules/mingo/dist/types/operators/update/addToSet.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/bit.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/currentDate.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/inc.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/max.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/min.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/mul.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/pop.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/pull.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/pullAll.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/push.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/rename.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/set.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/update/unset.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/window/_internal.d.ts +5 -5
- package/rust-client/node_modules/mingo/dist/types/operators/window/denseRank.d.ts +2 -3
- package/rust-client/node_modules/mingo/dist/types/operators/window/derivative.d.ts +2 -3
- package/rust-client/node_modules/mingo/dist/types/operators/window/documentNumber.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/window/expMovingAvg.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/window/integral.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/window/linearFill.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/window/locf.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/window/rank.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/operators/window/shift.d.ts +2 -2
- package/rust-client/node_modules/mingo/dist/types/query.d.ts +5 -7
- package/rust-client/node_modules/mingo/dist/types/types.d.ts +18 -15
- package/rust-client/node_modules/mingo/dist/types/updater.d.ts +9 -10
- package/rust-client/node_modules/mingo/dist/types/util.d.ts +102 -90
- package/rust-client/node_modules/mingo/package.json +1 -1
|
@@ -1,47 +1,45 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getOperator,
|
|
3
3
|
initOptions,
|
|
4
|
-
OperatorType,
|
|
5
4
|
ProcessingMode
|
|
6
5
|
} from "./core";
|
|
7
6
|
import { Lazy } from "./lazy";
|
|
8
7
|
import { assert, cloneDeep, intersection, isEmpty } from "./util";
|
|
9
8
|
class Aggregator {
|
|
9
|
+
#pipeline;
|
|
10
|
+
#options;
|
|
10
11
|
constructor(pipeline, options) {
|
|
11
|
-
this
|
|
12
|
-
this
|
|
12
|
+
this.#pipeline = pipeline;
|
|
13
|
+
this.#options = initOptions(options);
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
|
-
* Returns an
|
|
16
|
+
* Returns an {@link Iterator} for lazy evaluation of the pipeline.
|
|
16
17
|
*
|
|
17
18
|
* @param {*} collection An array or iterator object
|
|
18
19
|
* @returns {Iterator} an iterator object
|
|
19
20
|
*/
|
|
20
|
-
stream(collection) {
|
|
21
|
+
stream(collection, options) {
|
|
21
22
|
let iterator = Lazy(collection);
|
|
22
|
-
const
|
|
23
|
+
const opts = options ?? this.#options;
|
|
24
|
+
const mode = opts.processingMode;
|
|
23
25
|
if (mode == ProcessingMode.CLONE_ALL || mode == ProcessingMode.CLONE_INPUT) {
|
|
24
26
|
iterator.map(cloneDeep);
|
|
25
27
|
}
|
|
26
|
-
const
|
|
27
|
-
if (!isEmpty(this
|
|
28
|
-
for (const operator of this
|
|
28
|
+
const stages = new Array();
|
|
29
|
+
if (!isEmpty(this.#pipeline)) {
|
|
30
|
+
for (const operator of this.#pipeline) {
|
|
29
31
|
const operatorKeys = Object.keys(operator);
|
|
30
32
|
const opName = operatorKeys[0];
|
|
31
|
-
const call = getOperator(
|
|
32
|
-
OperatorType.PIPELINE,
|
|
33
|
-
opName,
|
|
34
|
-
this.options
|
|
35
|
-
);
|
|
33
|
+
const call = getOperator("pipeline", opName, opts);
|
|
36
34
|
assert(
|
|
37
35
|
operatorKeys.length === 1 && !!call,
|
|
38
36
|
`invalid pipeline operator ${opName}`
|
|
39
37
|
);
|
|
40
|
-
|
|
41
|
-
iterator = call(iterator, operator[opName],
|
|
38
|
+
stages.push(opName);
|
|
39
|
+
iterator = call(iterator, operator[opName], opts);
|
|
42
40
|
}
|
|
43
41
|
}
|
|
44
|
-
if (mode == ProcessingMode.CLONE_OUTPUT || mode == ProcessingMode.CLONE_ALL && !!intersection([["$group", "$unwind"],
|
|
42
|
+
if (mode == ProcessingMode.CLONE_OUTPUT || mode == ProcessingMode.CLONE_ALL && !!intersection([["$group", "$unwind"], stages]).length) {
|
|
45
43
|
iterator.map(cloneDeep);
|
|
46
44
|
}
|
|
47
45
|
return iterator;
|
|
@@ -49,11 +47,10 @@ class Aggregator {
|
|
|
49
47
|
/**
|
|
50
48
|
* Return the results of the aggregation as an array.
|
|
51
49
|
*
|
|
52
|
-
* @param
|
|
53
|
-
* @param {*} query
|
|
50
|
+
* @param collection
|
|
54
51
|
*/
|
|
55
|
-
run(collection) {
|
|
56
|
-
return this.stream(collection).value();
|
|
52
|
+
run(collection, options) {
|
|
53
|
+
return this.stream(collection, options).value();
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
export {
|
|
@@ -5,10 +5,8 @@ import {
|
|
|
5
5
|
isFunction,
|
|
6
6
|
isNil,
|
|
7
7
|
isObject,
|
|
8
|
-
isObjectLike,
|
|
9
8
|
isOperator,
|
|
10
9
|
isString,
|
|
11
|
-
MingoError,
|
|
12
10
|
resolve
|
|
13
11
|
} from "./util";
|
|
14
12
|
var ProcessingMode = /* @__PURE__ */ ((ProcessingMode2) => {
|
|
@@ -19,12 +17,13 @@ var ProcessingMode = /* @__PURE__ */ ((ProcessingMode2) => {
|
|
|
19
17
|
return ProcessingMode2;
|
|
20
18
|
})(ProcessingMode || {});
|
|
21
19
|
class ComputeOptions {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this
|
|
20
|
+
#options;
|
|
21
|
+
/** Reference to the root object when processing subgraphs of the object. */
|
|
22
|
+
#root;
|
|
23
|
+
#local;
|
|
24
|
+
constructor(options, root, local) {
|
|
25
|
+
this.#options = options;
|
|
26
|
+
this.update(root, local);
|
|
28
27
|
}
|
|
29
28
|
/**
|
|
30
29
|
* Initialize new ComputeOptions.
|
|
@@ -35,64 +34,82 @@ class ComputeOptions {
|
|
|
35
34
|
* @returns {ComputeOptions}
|
|
36
35
|
*/
|
|
37
36
|
static init(options, root, local) {
|
|
38
|
-
return options instanceof ComputeOptions ? new ComputeOptions(
|
|
39
|
-
options
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
return options instanceof ComputeOptions ? new ComputeOptions(options.#options, options.root ?? root, {
|
|
38
|
+
...options.#local,
|
|
39
|
+
...local,
|
|
40
|
+
// retain existing variables
|
|
41
|
+
variables: Object.assign(
|
|
42
|
+
{},
|
|
43
|
+
options.#local?.variables,
|
|
44
|
+
local?.variables
|
|
45
|
+
)
|
|
46
|
+
}) : new ComputeOptions(options, root, local);
|
|
43
47
|
}
|
|
44
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Updates the internal state.
|
|
50
|
+
*
|
|
51
|
+
* @param root The new root context for this object.
|
|
52
|
+
* @param local The new local state to merge into current if it exists.
|
|
53
|
+
* @returns
|
|
54
|
+
*/
|
|
45
55
|
update(root, local) {
|
|
46
|
-
this
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
this.#root = root;
|
|
57
|
+
const variables = Object.assign(
|
|
58
|
+
{},
|
|
59
|
+
this.#local?.variables,
|
|
60
|
+
local?.variables
|
|
61
|
+
);
|
|
62
|
+
if (Object.keys(variables).length) {
|
|
63
|
+
this.#local = { ...local, variables };
|
|
64
|
+
} else {
|
|
65
|
+
this.#local = local ?? {};
|
|
66
|
+
}
|
|
50
67
|
return this;
|
|
51
68
|
}
|
|
52
69
|
getOptions() {
|
|
53
70
|
return Object.freeze({
|
|
54
|
-
...this
|
|
55
|
-
context: Context.from(this.
|
|
71
|
+
...this.#options,
|
|
72
|
+
context: Context.from(this.#options.context)
|
|
56
73
|
});
|
|
57
74
|
}
|
|
58
75
|
get root() {
|
|
59
|
-
return this
|
|
76
|
+
return this.#root;
|
|
60
77
|
}
|
|
61
78
|
get local() {
|
|
62
|
-
return this
|
|
79
|
+
return this.#local;
|
|
63
80
|
}
|
|
64
81
|
get idKey() {
|
|
65
|
-
return this.
|
|
82
|
+
return this.#options.idKey;
|
|
66
83
|
}
|
|
67
84
|
get collation() {
|
|
68
|
-
return this
|
|
85
|
+
return this.#options?.collation;
|
|
69
86
|
}
|
|
70
87
|
get processingMode() {
|
|
71
|
-
return this
|
|
88
|
+
return this.#options?.processingMode || "CLONE_OFF" /* CLONE_OFF */;
|
|
72
89
|
}
|
|
73
90
|
get useStrictMode() {
|
|
74
|
-
return this
|
|
91
|
+
return this.#options?.useStrictMode;
|
|
75
92
|
}
|
|
76
93
|
get scriptEnabled() {
|
|
77
|
-
return this
|
|
94
|
+
return this.#options?.scriptEnabled;
|
|
78
95
|
}
|
|
79
96
|
get useGlobalContext() {
|
|
80
|
-
return this
|
|
97
|
+
return this.#options?.useGlobalContext;
|
|
81
98
|
}
|
|
82
99
|
get hashFunction() {
|
|
83
|
-
return this
|
|
100
|
+
return this.#options?.hashFunction;
|
|
84
101
|
}
|
|
85
102
|
get collectionResolver() {
|
|
86
|
-
return this
|
|
103
|
+
return this.#options?.collectionResolver;
|
|
87
104
|
}
|
|
88
105
|
get jsonSchemaValidator() {
|
|
89
|
-
return this
|
|
106
|
+
return this.#options?.jsonSchemaValidator;
|
|
90
107
|
}
|
|
91
108
|
get variables() {
|
|
92
|
-
return this
|
|
109
|
+
return this.#options?.variables;
|
|
93
110
|
}
|
|
94
111
|
get context() {
|
|
95
|
-
return this
|
|
112
|
+
return this.#options?.context;
|
|
96
113
|
}
|
|
97
114
|
}
|
|
98
115
|
function initOptions(options) {
|
|
@@ -103,7 +120,7 @@ function initOptions(options) {
|
|
|
103
120
|
useGlobalContext: true,
|
|
104
121
|
processingMode: "CLONE_OFF" /* CLONE_OFF */,
|
|
105
122
|
...options,
|
|
106
|
-
context: options?.context ? Context.from(options?.context) : Context.init(
|
|
123
|
+
context: options?.context ? Context.from(options?.context) : Context.init()
|
|
107
124
|
});
|
|
108
125
|
}
|
|
109
126
|
var OperatorType = /* @__PURE__ */ ((OperatorType2) => {
|
|
@@ -116,55 +133,48 @@ var OperatorType = /* @__PURE__ */ ((OperatorType2) => {
|
|
|
116
133
|
return OperatorType2;
|
|
117
134
|
})(OperatorType || {});
|
|
118
135
|
class Context {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
["accumulator" /* ACCUMULATOR */]: {},
|
|
122
|
-
["expression" /* EXPRESSION */]: {},
|
|
123
|
-
["pipeline" /* PIPELINE */]: {},
|
|
124
|
-
["projection" /* PROJECTION */]: {},
|
|
125
|
-
["query" /* QUERY */]: {},
|
|
126
|
-
["window" /* WINDOW */]: {}
|
|
127
|
-
};
|
|
128
|
-
for (const [type, operators] of Object.entries(ops)) {
|
|
129
|
-
this.addOperators(type, operators);
|
|
130
|
-
}
|
|
136
|
+
#operators = /* @__PURE__ */ new Map();
|
|
137
|
+
constructor() {
|
|
131
138
|
}
|
|
132
|
-
static init(
|
|
133
|
-
return new Context(
|
|
139
|
+
static init() {
|
|
140
|
+
return new Context();
|
|
134
141
|
}
|
|
135
142
|
static from(ctx) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
const instance = Context.init();
|
|
144
|
+
if (isNil(ctx)) return instance;
|
|
145
|
+
ctx.#operators.forEach((v, k) => instance.addOperators(k, v));
|
|
146
|
+
return instance;
|
|
147
|
+
}
|
|
148
|
+
addOperators(type, operators) {
|
|
149
|
+
if (!this.#operators.has(type)) this.#operators.set(type, {});
|
|
150
|
+
for (const [name, fn] of Object.entries(operators)) {
|
|
140
151
|
if (!this.getOperator(type, name)) {
|
|
141
|
-
this.
|
|
152
|
+
this.#operators.get(type)[name] = fn;
|
|
142
153
|
}
|
|
143
154
|
}
|
|
144
155
|
return this;
|
|
145
156
|
}
|
|
146
|
-
|
|
157
|
+
getOperator(type, name) {
|
|
158
|
+
const ops = this.#operators.get(type) ?? {};
|
|
159
|
+
return ops[name] ?? null;
|
|
160
|
+
}
|
|
147
161
|
addAccumulatorOps(ops) {
|
|
148
|
-
return this.addOperators("accumulator"
|
|
162
|
+
return this.addOperators("accumulator", ops);
|
|
149
163
|
}
|
|
150
164
|
addExpressionOps(ops) {
|
|
151
|
-
return this.addOperators("expression"
|
|
165
|
+
return this.addOperators("expression", ops);
|
|
152
166
|
}
|
|
153
167
|
addQueryOps(ops) {
|
|
154
|
-
return this.addOperators("query"
|
|
168
|
+
return this.addOperators("query", ops);
|
|
155
169
|
}
|
|
156
170
|
addPipelineOps(ops) {
|
|
157
|
-
return this.addOperators("pipeline"
|
|
171
|
+
return this.addOperators("pipeline", ops);
|
|
158
172
|
}
|
|
159
173
|
addProjectionOps(ops) {
|
|
160
|
-
return this.addOperators("projection"
|
|
174
|
+
return this.addOperators("projection", ops);
|
|
161
175
|
}
|
|
162
176
|
addWindowOps(ops) {
|
|
163
|
-
return this.addOperators("window"
|
|
164
|
-
}
|
|
165
|
-
// getters
|
|
166
|
-
getOperator(type, name) {
|
|
167
|
-
return type in this.operators ? this.operators[type][name] || null : null;
|
|
177
|
+
return this.addOperators("window", ops);
|
|
168
178
|
}
|
|
169
179
|
}
|
|
170
180
|
const GLOBAL_CONTEXT = Context.init();
|
|
@@ -181,176 +191,153 @@ function useOperators(type, operators) {
|
|
|
181
191
|
);
|
|
182
192
|
}
|
|
183
193
|
switch (type) {
|
|
184
|
-
case "accumulator"
|
|
194
|
+
case "accumulator":
|
|
185
195
|
GLOBAL_CONTEXT.addAccumulatorOps(operators);
|
|
186
196
|
break;
|
|
187
|
-
case "expression"
|
|
197
|
+
case "expression":
|
|
188
198
|
GLOBAL_CONTEXT.addExpressionOps(operators);
|
|
189
199
|
break;
|
|
190
|
-
case "pipeline"
|
|
200
|
+
case "pipeline":
|
|
191
201
|
GLOBAL_CONTEXT.addPipelineOps(operators);
|
|
192
202
|
break;
|
|
193
|
-
case "projection"
|
|
203
|
+
case "projection":
|
|
194
204
|
GLOBAL_CONTEXT.addProjectionOps(operators);
|
|
195
205
|
break;
|
|
196
|
-
case "query"
|
|
206
|
+
case "query":
|
|
197
207
|
GLOBAL_CONTEXT.addQueryOps(operators);
|
|
198
208
|
break;
|
|
199
|
-
case "window"
|
|
209
|
+
case "window":
|
|
200
210
|
GLOBAL_CONTEXT.addWindowOps(operators);
|
|
201
211
|
break;
|
|
202
212
|
}
|
|
203
213
|
}
|
|
204
|
-
function getOperator(type,
|
|
214
|
+
function getOperator(type, name, options) {
|
|
205
215
|
const { context: ctx, useGlobalContext: fallback } = options || {};
|
|
206
|
-
const fn = ctx ? ctx.getOperator(type,
|
|
207
|
-
return !fn && fallback ? GLOBAL_CONTEXT.getOperator(type,
|
|
216
|
+
const fn = ctx ? ctx.getOperator(type, name) : null;
|
|
217
|
+
return !fn && fallback ? GLOBAL_CONTEXT.getOperator(type, name) : fn;
|
|
208
218
|
}
|
|
209
|
-
const systemVariables = {
|
|
210
|
-
$$ROOT(_obj, _expr, options) {
|
|
211
|
-
return options.root;
|
|
212
|
-
},
|
|
213
|
-
$$CURRENT(obj, _expr, _options) {
|
|
214
|
-
return obj;
|
|
215
|
-
},
|
|
216
|
-
$$REMOVE(_obj, _expr, _options) {
|
|
217
|
-
return void 0;
|
|
218
|
-
},
|
|
219
|
-
$$NOW(_obj, _expr, options) {
|
|
220
|
-
return new Date(options.timestamp);
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
const redactVariables = {
|
|
224
|
-
$$KEEP(obj, _expr, _options) {
|
|
225
|
-
return obj;
|
|
226
|
-
},
|
|
227
|
-
$$PRUNE(_obj, _expr, _options) {
|
|
228
|
-
return void 0;
|
|
229
|
-
},
|
|
230
|
-
$$DESCEND(obj, expr, options) {
|
|
231
|
-
if (!has(expr, "$cond"))
|
|
232
|
-
return obj;
|
|
233
|
-
let result;
|
|
234
|
-
for (const [key, current] of Object.entries(obj)) {
|
|
235
|
-
if (isObjectLike(current)) {
|
|
236
|
-
if (current instanceof Array) {
|
|
237
|
-
const array = [];
|
|
238
|
-
for (let elem of current) {
|
|
239
|
-
if (isObject(elem)) {
|
|
240
|
-
elem = redact(elem, expr, options.update(elem));
|
|
241
|
-
}
|
|
242
|
-
if (!isNil(elem)) {
|
|
243
|
-
array.push(elem);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
result = array;
|
|
247
|
-
} else {
|
|
248
|
-
result = redact(
|
|
249
|
-
current,
|
|
250
|
-
expr,
|
|
251
|
-
options.update(current)
|
|
252
|
-
);
|
|
253
|
-
}
|
|
254
|
-
if (isNil(result)) {
|
|
255
|
-
delete obj[key];
|
|
256
|
-
} else {
|
|
257
|
-
obj[key] = result;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
return obj;
|
|
262
|
-
}
|
|
263
|
-
};
|
|
264
219
|
function computeValue(obj, expr, operator, options) {
|
|
265
220
|
const copts = ComputeOptions.init(options, obj);
|
|
266
|
-
operator
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
operator,
|
|
271
|
-
options
|
|
272
|
-
);
|
|
273
|
-
if (callExpression)
|
|
274
|
-
return callExpression(obj, expr, copts);
|
|
275
|
-
const callAccumulator = getOperator(
|
|
276
|
-
"accumulator" /* ACCUMULATOR */,
|
|
277
|
-
operator,
|
|
278
|
-
options
|
|
279
|
-
);
|
|
280
|
-
if (callAccumulator) {
|
|
281
|
-
if (!(obj instanceof Array)) {
|
|
282
|
-
obj = computeValue(obj, expr, null, copts);
|
|
283
|
-
expr = null;
|
|
284
|
-
}
|
|
285
|
-
assert(obj instanceof Array, `'${operator}' target must be an array.`);
|
|
286
|
-
return callAccumulator(
|
|
287
|
-
obj,
|
|
288
|
-
expr,
|
|
289
|
-
// reset the root object for accumulators.
|
|
290
|
-
copts.update(null, copts.local)
|
|
291
|
-
);
|
|
292
|
-
}
|
|
293
|
-
throw new MingoError(`operator '${operator}' is not registered`);
|
|
294
|
-
}
|
|
221
|
+
return !!operator && isOperator(operator) ? computeOperator(obj, expr, operator, copts) : computeExpression(obj, expr, copts);
|
|
222
|
+
}
|
|
223
|
+
const SYSTEM_VARS = ["$$ROOT", "$$CURRENT", "$$REMOVE", "$$NOW"];
|
|
224
|
+
function computeExpression(obj, expr, options) {
|
|
295
225
|
if (isString(expr) && expr.length > 0 && expr[0] === "$") {
|
|
296
|
-
if (
|
|
297
|
-
|
|
298
|
-
}
|
|
299
|
-
let context = copts.root;
|
|
226
|
+
if (REDACT_ACTIONS.includes(expr)) return expr;
|
|
227
|
+
let ctx = options.root;
|
|
300
228
|
const arr = expr.split(".");
|
|
301
|
-
if (
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
229
|
+
if (SYSTEM_VARS.includes(arr[0])) {
|
|
230
|
+
switch (arr[0]) {
|
|
231
|
+
case "$$ROOT":
|
|
232
|
+
break;
|
|
233
|
+
case "$$CURRENT":
|
|
234
|
+
ctx = obj;
|
|
235
|
+
break;
|
|
236
|
+
case "$$REMOVE":
|
|
237
|
+
ctx = void 0;
|
|
238
|
+
break;
|
|
239
|
+
case "$$NOW":
|
|
240
|
+
ctx = /* @__PURE__ */ new Date();
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
307
243
|
expr = expr.slice(arr[0].length + 1);
|
|
308
244
|
} else if (arr[0].slice(0, 2) === "$$") {
|
|
309
|
-
|
|
245
|
+
ctx = Object.assign(
|
|
310
246
|
{},
|
|
311
|
-
copts.variables,
|
|
312
247
|
// global vars
|
|
248
|
+
options.variables,
|
|
313
249
|
// current item is added before local variables because the binding may be changed.
|
|
314
250
|
{ this: obj },
|
|
315
|
-
copts.local?.variables
|
|
316
251
|
// local vars
|
|
252
|
+
options?.local?.variables
|
|
317
253
|
);
|
|
318
|
-
const
|
|
319
|
-
assert(
|
|
320
|
-
has(context, prefix),
|
|
321
|
-
`Use of undefined variable: ${prefix}`
|
|
322
|
-
);
|
|
254
|
+
const name = arr[0].slice(2);
|
|
255
|
+
assert(has(ctx, name), `Use of undefined variable: ${name}`);
|
|
323
256
|
expr = expr.slice(2);
|
|
324
257
|
} else {
|
|
325
258
|
expr = expr.slice(1);
|
|
326
259
|
}
|
|
327
|
-
|
|
328
|
-
return context;
|
|
329
|
-
return resolve(context, expr);
|
|
260
|
+
return expr === "" ? ctx : resolve(ctx, expr);
|
|
330
261
|
}
|
|
331
262
|
if (isArray(expr)) {
|
|
332
|
-
return expr.map((item) =>
|
|
333
|
-
}
|
|
263
|
+
return expr.map((item) => computeExpression(obj, item, options));
|
|
264
|
+
}
|
|
265
|
+
if (isObject(expr)) {
|
|
334
266
|
const result = {};
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
if (
|
|
338
|
-
(
|
|
339
|
-
|
|
340
|
-
assert(
|
|
341
|
-
Object.keys(expr).length === 1,
|
|
342
|
-
"Invalid aggregation expression '" + JSON.stringify(expr) + "'"
|
|
343
|
-
);
|
|
344
|
-
return result[key];
|
|
267
|
+
const elems = Object.entries(expr);
|
|
268
|
+
for (const [key, val] of elems) {
|
|
269
|
+
if (isOperator(key)) {
|
|
270
|
+
assert(elems.length == 1, "expression must have single operator.");
|
|
271
|
+
return computeOperator(obj, val, key, options);
|
|
345
272
|
}
|
|
273
|
+
result[key] = computeExpression(obj, val, options);
|
|
346
274
|
}
|
|
347
275
|
return result;
|
|
348
276
|
}
|
|
349
277
|
return expr;
|
|
350
278
|
}
|
|
279
|
+
function computeOperator(obj, expr, operator, options) {
|
|
280
|
+
const callExpression = getOperator(
|
|
281
|
+
"expression",
|
|
282
|
+
operator,
|
|
283
|
+
options
|
|
284
|
+
);
|
|
285
|
+
if (callExpression) return callExpression(obj, expr, options);
|
|
286
|
+
const callAccumulator = getOperator(
|
|
287
|
+
"accumulator",
|
|
288
|
+
operator,
|
|
289
|
+
options
|
|
290
|
+
);
|
|
291
|
+
assert(!!callAccumulator, `accumulator '${operator}' is not registered.`);
|
|
292
|
+
if (!isArray(obj)) {
|
|
293
|
+
obj = computeExpression(obj, expr, options);
|
|
294
|
+
expr = null;
|
|
295
|
+
}
|
|
296
|
+
assert(isArray(obj), `arguments must resolve to array for ${operator}.`);
|
|
297
|
+
return callAccumulator(
|
|
298
|
+
obj,
|
|
299
|
+
expr,
|
|
300
|
+
options.update(null, options.local)
|
|
301
|
+
// reset the root object.
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
const REDACT_ACTIONS = ["$$KEEP", "$$PRUNE", "$$DESCEND"];
|
|
351
305
|
function redact(obj, expr, options) {
|
|
352
|
-
const
|
|
353
|
-
|
|
306
|
+
const action = computeValue(obj, expr, null, options);
|
|
307
|
+
switch (action) {
|
|
308
|
+
case "$$KEEP":
|
|
309
|
+
return obj;
|
|
310
|
+
case "$$PRUNE":
|
|
311
|
+
return void 0;
|
|
312
|
+
case "$$DESCEND": {
|
|
313
|
+
if (!has(expr, "$cond")) return obj;
|
|
314
|
+
const output = {};
|
|
315
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
316
|
+
if (isArray(value)) {
|
|
317
|
+
const res = new Array();
|
|
318
|
+
for (let elem of value) {
|
|
319
|
+
if (isObject(elem)) {
|
|
320
|
+
elem = redact(elem, expr, options.update(elem));
|
|
321
|
+
}
|
|
322
|
+
if (!isNil(elem)) res.push(elem);
|
|
323
|
+
}
|
|
324
|
+
output[key] = res;
|
|
325
|
+
} else if (isObject(value)) {
|
|
326
|
+
const res = redact(
|
|
327
|
+
value,
|
|
328
|
+
expr,
|
|
329
|
+
options.update(value)
|
|
330
|
+
);
|
|
331
|
+
if (!isNil(res)) output[key] = res;
|
|
332
|
+
} else {
|
|
333
|
+
output[key] = value;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return output;
|
|
337
|
+
}
|
|
338
|
+
default:
|
|
339
|
+
return action;
|
|
340
|
+
}
|
|
354
341
|
}
|
|
355
342
|
export {
|
|
356
343
|
ComputeOptions,
|