@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.
Files changed (439) hide show
  1. package/build-ts/src/BaseClient.d.ts +27 -1
  2. package/build-ts/src/BaseClient.js +9 -1
  3. package/build-ts/src/BaseClient.js.map +1 -1
  4. package/build-ts/src/Commands.d.ts +12 -0
  5. package/build-ts/src/Commands.js.map +1 -1
  6. package/build-ts/src/GlideClient.d.ts +17 -1
  7. package/build-ts/src/GlideClient.js +3 -0
  8. package/build-ts/src/GlideClient.js.map +1 -1
  9. package/build-ts/src/GlideClusterClient.d.ts +23 -7
  10. package/build-ts/src/GlideClusterClient.js +8 -3
  11. package/build-ts/src/GlideClusterClient.js.map +1 -1
  12. package/build-ts/src/ProtobufMessage.js +46 -1
  13. package/build-ts/src/ProtobufMessage.js.map +1 -1
  14. package/node_modules/glide-rs/glide-rs.darwin-arm64.node +0 -0
  15. package/node_modules/glide-rs/index.d.ts +2 -1
  16. package/node_modules/glide-rs/index.js +4 -2
  17. package/npm/glide/index.ts +4 -3
  18. package/npm/glide/package.json +0 -1
  19. package/package.json +2 -2
  20. package/rust-client/node_modules/mingo/README.md +58 -53
  21. package/rust-client/node_modules/mingo/dist/cjs/aggregator.js +18 -20
  22. package/rust-client/node_modules/mingo/dist/cjs/core.js +179 -190
  23. package/rust-client/node_modules/mingo/dist/cjs/cursor.js +34 -34
  24. package/rust-client/node_modules/mingo/dist/cjs/index.js +11 -3
  25. package/rust-client/node_modules/mingo/dist/cjs/init/basic.js +4 -22
  26. package/rust-client/node_modules/mingo/dist/cjs/init/system.js +6 -6
  27. package/rust-client/node_modules/mingo/dist/cjs/lazy.js +58 -61
  28. package/rust-client/node_modules/mingo/dist/cjs/operators/_predicates.js +12 -25
  29. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/_internal.js +2 -4
  30. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/accumulator.js +1 -2
  31. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/first.js +3 -1
  32. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/last.js +4 -1
  33. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/max.js +9 -6
  34. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/mergeObjects.js +5 -1
  35. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/min.js +9 -3
  36. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/push.js +1 -2
  37. package/rust-client/node_modules/mingo/dist/cjs/operators/accumulator/sum.js +2 -4
  38. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/add.js +9 -10
  39. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ceil.js +1 -2
  40. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/exp.js +1 -2
  41. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/floor.js +1 -2
  42. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ln.js +1 -2
  43. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log.js +1 -2
  44. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log10.js +1 -2
  45. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/round.js +1 -2
  46. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/sqrt.js +1 -2
  47. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/subtract.js +5 -2
  48. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/arithmetic/trunc.js +1 -2
  49. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/arrayElemAt.js +2 -3
  50. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/arrayToObject.js +3 -4
  51. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/concatArrays.js +11 -5
  52. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/filter.js +1 -0
  53. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/first.js +8 -8
  54. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/firstN.js +2 -4
  55. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/in.js +1 -1
  56. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/indexOfArray.js +5 -10
  57. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/isArray.js +2 -3
  58. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/last.js +8 -8
  59. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/lastN.js +2 -4
  60. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/map.js +1 -0
  61. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/maxN.js +2 -4
  62. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/minN.js +2 -4
  63. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/reduce.js +1 -2
  64. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/reverseArray.js +1 -2
  65. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/sortArray.js +2 -4
  66. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/array/zip.js +4 -10
  67. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/bitwise/_internal.js +1 -2
  68. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitNot.js +2 -4
  69. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/boolean/not.js +3 -5
  70. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/comparison/cmp.js +6 -5
  71. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/conditional/cond.js +1 -1
  72. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/conditional/ifNull.js +1 -1
  73. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/conditional/switch.js +1 -2
  74. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/_internal.js +157 -65
  75. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateAdd.js +1 -29
  76. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateDiff.js +32 -20
  77. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateFromParts.js +2 -4
  78. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateFromString.js +13 -9
  79. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateToString.js +2 -4
  80. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dateTrunc.js +107 -0
  81. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/dayOfYear.js +1 -1
  82. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/index.js +2 -0
  83. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/isoWeekYear.js +1 -4
  84. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/date/week.js +1 -2
  85. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/misc/getField.js +1 -2
  86. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/object/mergeObjects.js +9 -2
  87. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/object/objectToArray.js +5 -1
  88. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/object/setField.js +11 -7
  89. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setDifference.js +9 -1
  90. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setEquals.js +17 -3
  91. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setIntersection.js +2 -1
  92. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setIsSubset.js +15 -1
  93. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/set/setUnion.js +4 -5
  94. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/_internal.js +4 -8
  95. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/concat.js +5 -2
  96. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/indexOfBytes.js +2 -4
  97. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/replaceAll.js +1 -2
  98. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/replaceOne.js +1 -2
  99. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/split.js +1 -2
  100. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/strcasecmp.js +1 -2
  101. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/substr.js +4 -14
  102. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/string/substrBytes.js +2 -4
  103. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/trignometry/atan2.js +2 -4
  104. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/trignometry/cosh.js +0 -1
  105. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/_internal.js +20 -10
  106. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/convert.js +3 -5
  107. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toBool.js +2 -4
  108. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toDate.js +3 -6
  109. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toDouble.js +5 -10
  110. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toInt.js +1 -4
  111. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toLong.js +1 -4
  112. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/toString.js +11 -10
  113. package/rust-client/node_modules/mingo/dist/cjs/operators/expression/type/type.js +11 -14
  114. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/addFields.js +1 -2
  115. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/bucket.js +53 -53
  116. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/bucketAuto.js +670 -65
  117. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/count.js +2 -2
  118. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/densify.js +196 -0
  119. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/graphLookup.js +78 -0
  120. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/group.js +6 -9
  121. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/index.js +4 -0
  122. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/limit.js +1 -3
  123. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/lookup.js +47 -10
  124. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/merge.js +7 -13
  125. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/out.js +1 -1
  126. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/project.js +19 -38
  127. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/redact.js +3 -1
  128. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/replaceWith.js +9 -2
  129. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/sample.js +1 -2
  130. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/setWindowFields.js +10 -20
  131. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/skip.js +1 -1
  132. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/sort.js +10 -19
  133. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/sortByCount.js +5 -3
  134. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/unionWith.js +1 -1
  135. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/unset.js +1 -2
  136. package/rust-client/node_modules/mingo/dist/cjs/operators/pipeline/unwind.js +5 -9
  137. package/rust-client/node_modules/mingo/dist/cjs/operators/projection/elemMatch.js +2 -3
  138. package/rust-client/node_modules/mingo/dist/cjs/operators/projection/slice.js +2 -3
  139. package/rust-client/node_modules/mingo/dist/cjs/operators/query/bitwise/_internal.js +4 -4
  140. package/rust-client/node_modules/mingo/dist/cjs/operators/update/_internal.js +8 -14
  141. package/rust-client/node_modules/mingo/dist/cjs/operators/update/addToSet.js +1 -2
  142. package/rust-client/node_modules/mingo/dist/cjs/operators/update/bit.js +1 -2
  143. package/rust-client/node_modules/mingo/dist/cjs/operators/update/max.js +1 -2
  144. package/rust-client/node_modules/mingo/dist/cjs/operators/update/min.js +1 -2
  145. package/rust-client/node_modules/mingo/dist/cjs/operators/update/pop.js +1 -2
  146. package/rust-client/node_modules/mingo/dist/cjs/operators/update/pull.js +2 -4
  147. package/rust-client/node_modules/mingo/dist/cjs/operators/update/push.js +3 -9
  148. package/rust-client/node_modules/mingo/dist/cjs/operators/update/rename.js +1 -2
  149. package/rust-client/node_modules/mingo/dist/cjs/operators/update/set.js +1 -2
  150. package/rust-client/node_modules/mingo/dist/cjs/operators/update/unset.js +1 -2
  151. package/rust-client/node_modules/mingo/dist/cjs/operators/window/_internal.js +2 -3
  152. package/rust-client/node_modules/mingo/dist/cjs/operators/window/denseRank.js +8 -10
  153. package/rust-client/node_modules/mingo/dist/cjs/operators/window/derivative.js +4 -6
  154. package/rust-client/node_modules/mingo/dist/cjs/operators/window/documentNumber.js +1 -3
  155. package/rust-client/node_modules/mingo/dist/cjs/operators/window/expMovingAvg.js +4 -6
  156. package/rust-client/node_modules/mingo/dist/cjs/operators/window/integral.js +3 -4
  157. package/rust-client/node_modules/mingo/dist/cjs/operators/window/linearFill.js +4 -6
  158. package/rust-client/node_modules/mingo/dist/cjs/operators/window/locf.js +3 -4
  159. package/rust-client/node_modules/mingo/dist/cjs/operators/window/rank.js +8 -10
  160. package/rust-client/node_modules/mingo/dist/cjs/operators/window/shift.js +2 -2
  161. package/rust-client/node_modules/mingo/dist/cjs/query.js +20 -19
  162. package/rust-client/node_modules/mingo/dist/cjs/types.js +22 -0
  163. package/rust-client/node_modules/mingo/dist/cjs/updater.js +6 -5
  164. package/rust-client/node_modules/mingo/dist/cjs/util.js +265 -388
  165. package/rust-client/node_modules/mingo/dist/esm/aggregator.js +18 -21
  166. package/rust-client/node_modules/mingo/dist/esm/core.js +179 -192
  167. package/rust-client/node_modules/mingo/dist/esm/cursor.js +35 -35
  168. package/rust-client/node_modules/mingo/dist/esm/index.js +8 -2
  169. package/rust-client/node_modules/mingo/dist/esm/init/basic.js +5 -12
  170. package/rust-client/node_modules/mingo/dist/esm/init/system.js +7 -7
  171. package/rust-client/node_modules/mingo/dist/esm/lazy.js +58 -61
  172. package/rust-client/node_modules/mingo/dist/esm/operators/_predicates.js +14 -32
  173. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/_internal.js +2 -4
  174. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/accumulator.js +1 -2
  175. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/first.js +7 -2
  176. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/last.js +8 -2
  177. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/max.js +10 -7
  178. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/mergeObjects.js +5 -1
  179. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/min.js +10 -4
  180. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/push.js +1 -2
  181. package/rust-client/node_modules/mingo/dist/esm/operators/accumulator/sum.js +2 -4
  182. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/add.js +9 -10
  183. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/ceil.js +1 -2
  184. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/exp.js +1 -2
  185. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/floor.js +1 -2
  186. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/ln.js +1 -2
  187. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/log.js +1 -2
  188. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/log10.js +1 -2
  189. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/round.js +1 -2
  190. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/sqrt.js +1 -2
  191. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/subtract.js +5 -2
  192. package/rust-client/node_modules/mingo/dist/esm/operators/expression/arithmetic/trunc.js +1 -2
  193. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/arrayElemAt.js +3 -4
  194. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/arrayToObject.js +3 -4
  195. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/concatArrays.js +12 -6
  196. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/filter.js +2 -1
  197. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/first.js +10 -13
  198. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/firstN.js +2 -4
  199. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/in.js +1 -1
  200. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/indexOfArray.js +5 -10
  201. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/isArray.js +2 -3
  202. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/last.js +10 -13
  203. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/lastN.js +2 -4
  204. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/map.js +2 -1
  205. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/maxN.js +2 -4
  206. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/minN.js +2 -4
  207. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/reduce.js +1 -2
  208. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/reverseArray.js +1 -2
  209. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/sortArray.js +2 -4
  210. package/rust-client/node_modules/mingo/dist/esm/operators/expression/array/zip.js +4 -10
  211. package/rust-client/node_modules/mingo/dist/esm/operators/expression/bitwise/_internal.js +1 -2
  212. package/rust-client/node_modules/mingo/dist/esm/operators/expression/bitwise/bitNot.js +2 -4
  213. package/rust-client/node_modules/mingo/dist/esm/operators/expression/boolean/not.js +4 -6
  214. package/rust-client/node_modules/mingo/dist/esm/operators/expression/comparison/cmp.js +6 -5
  215. package/rust-client/node_modules/mingo/dist/esm/operators/expression/conditional/cond.js +2 -2
  216. package/rust-client/node_modules/mingo/dist/esm/operators/expression/conditional/ifNull.js +1 -1
  217. package/rust-client/node_modules/mingo/dist/esm/operators/expression/conditional/switch.js +1 -2
  218. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/_internal.js +140 -61
  219. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateAdd.js +2 -35
  220. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateDiff.js +43 -21
  221. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateFromParts.js +2 -4
  222. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateFromString.js +13 -11
  223. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateToString.js +2 -4
  224. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dateTrunc.js +97 -0
  225. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/dayOfYear.js +2 -2
  226. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/index.js +1 -0
  227. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/isoWeekYear.js +2 -5
  228. package/rust-client/node_modules/mingo/dist/esm/operators/expression/date/week.js +1 -2
  229. package/rust-client/node_modules/mingo/dist/esm/operators/expression/misc/getField.js +1 -2
  230. package/rust-client/node_modules/mingo/dist/esm/operators/expression/object/mergeObjects.js +10 -3
  231. package/rust-client/node_modules/mingo/dist/esm/operators/expression/object/objectToArray.js +6 -2
  232. package/rust-client/node_modules/mingo/dist/esm/operators/expression/object/setField.js +11 -7
  233. package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setDifference.js +10 -2
  234. package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setEquals.js +18 -4
  235. package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setIntersection.js +3 -2
  236. package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setIsSubset.js +16 -2
  237. package/rust-client/node_modules/mingo/dist/esm/operators/expression/set/setUnion.js +5 -6
  238. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/_internal.js +4 -8
  239. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/concat.js +6 -3
  240. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/indexOfBytes.js +2 -4
  241. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/replaceAll.js +1 -2
  242. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/replaceOne.js +1 -2
  243. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/split.js +1 -2
  244. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/strcasecmp.js +1 -2
  245. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/substr.js +4 -14
  246. package/rust-client/node_modules/mingo/dist/esm/operators/expression/string/substrBytes.js +2 -4
  247. package/rust-client/node_modules/mingo/dist/esm/operators/expression/trignometry/atan2.js +2 -4
  248. package/rust-client/node_modules/mingo/dist/esm/operators/expression/trignometry/cosh.js +0 -1
  249. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/_internal.js +17 -11
  250. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/convert.js +3 -5
  251. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toBool.js +2 -4
  252. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toDate.js +4 -7
  253. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toDouble.js +6 -11
  254. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toInt.js +2 -5
  255. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toLong.js +2 -5
  256. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/toString.js +12 -11
  257. package/rust-client/node_modules/mingo/dist/esm/operators/expression/type/type.js +12 -15
  258. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/addFields.js +1 -2
  259. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/bucket.js +54 -61
  260. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/bucketAuto.js +679 -66
  261. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/count.js +3 -3
  262. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/densify.js +183 -0
  263. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/graphLookup.js +55 -0
  264. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/group.js +6 -9
  265. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/index.js +2 -0
  266. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/limit.js +1 -3
  267. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/lookup.js +55 -11
  268. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/merge.js +9 -14
  269. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/out.js +2 -2
  270. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/project.js +21 -42
  271. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/redact.js +3 -1
  272. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/replaceWith.js +9 -2
  273. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/sample.js +1 -2
  274. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/setWindowFields.js +12 -23
  275. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/skip.js +1 -1
  276. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/sort.js +11 -20
  277. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/sortByCount.js +5 -3
  278. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/unionWith.js +2 -2
  279. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/unset.js +1 -2
  280. package/rust-client/node_modules/mingo/dist/esm/operators/pipeline/unwind.js +6 -9
  281. package/rust-client/node_modules/mingo/dist/esm/operators/projection/elemMatch.js +3 -4
  282. package/rust-client/node_modules/mingo/dist/esm/operators/projection/slice.js +2 -3
  283. package/rust-client/node_modules/mingo/dist/esm/operators/query/bitwise/_internal.js +4 -4
  284. package/rust-client/node_modules/mingo/dist/esm/operators/update/_internal.js +9 -14
  285. package/rust-client/node_modules/mingo/dist/esm/operators/update/addToSet.js +1 -2
  286. package/rust-client/node_modules/mingo/dist/esm/operators/update/bit.js +1 -2
  287. package/rust-client/node_modules/mingo/dist/esm/operators/update/max.js +1 -2
  288. package/rust-client/node_modules/mingo/dist/esm/operators/update/min.js +1 -2
  289. package/rust-client/node_modules/mingo/dist/esm/operators/update/pop.js +1 -2
  290. package/rust-client/node_modules/mingo/dist/esm/operators/update/pull.js +2 -4
  291. package/rust-client/node_modules/mingo/dist/esm/operators/update/push.js +3 -9
  292. package/rust-client/node_modules/mingo/dist/esm/operators/update/rename.js +1 -2
  293. package/rust-client/node_modules/mingo/dist/esm/operators/update/set.js +1 -2
  294. package/rust-client/node_modules/mingo/dist/esm/operators/update/unset.js +1 -2
  295. package/rust-client/node_modules/mingo/dist/esm/operators/window/_internal.js +2 -3
  296. package/rust-client/node_modules/mingo/dist/esm/operators/window/denseRank.js +8 -10
  297. package/rust-client/node_modules/mingo/dist/esm/operators/window/derivative.js +4 -6
  298. package/rust-client/node_modules/mingo/dist/esm/operators/window/documentNumber.js +1 -3
  299. package/rust-client/node_modules/mingo/dist/esm/operators/window/expMovingAvg.js +4 -6
  300. package/rust-client/node_modules/mingo/dist/esm/operators/window/integral.js +3 -4
  301. package/rust-client/node_modules/mingo/dist/esm/operators/window/linearFill.js +4 -6
  302. package/rust-client/node_modules/mingo/dist/esm/operators/window/locf.js +3 -4
  303. package/rust-client/node_modules/mingo/dist/esm/operators/window/rank.js +8 -10
  304. package/rust-client/node_modules/mingo/dist/esm/operators/window/shift.js +2 -2
  305. package/rust-client/node_modules/mingo/dist/esm/query.js +22 -32
  306. package/rust-client/node_modules/mingo/dist/esm/types.js +14 -0
  307. package/rust-client/node_modules/mingo/dist/esm/updater.js +5 -5
  308. package/rust-client/node_modules/mingo/dist/esm/util.js +263 -377
  309. package/rust-client/node_modules/mingo/dist/types/aggregator.d.ts +7 -9
  310. package/rust-client/node_modules/mingo/dist/types/core.d.ts +41 -52
  311. package/rust-client/node_modules/mingo/dist/types/cursor.d.ts +6 -12
  312. package/rust-client/node_modules/mingo/dist/types/index.d.ts +8 -4
  313. package/rust-client/node_modules/mingo/dist/types/init/basic.d.ts +1 -6
  314. package/rust-client/node_modules/mingo/dist/types/lazy.d.ts +19 -15
  315. package/rust-client/node_modules/mingo/dist/types/operators/_predicates.d.ts +20 -20
  316. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/accumulator.d.ts +1 -1
  317. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/addToSet.d.ts +1 -1
  318. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/avg.d.ts +1 -1
  319. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/bottom.d.ts +2 -2
  320. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/bottomN.d.ts +4 -4
  321. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/count.d.ts +1 -1
  322. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/covariancePop.d.ts +1 -1
  323. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/covarianceSamp.d.ts +1 -1
  324. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/first.d.ts +2 -2
  325. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/firstN.d.ts +1 -1
  326. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/last.d.ts +4 -4
  327. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/lastN.d.ts +1 -1
  328. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/max.d.ts +4 -5
  329. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/maxN.d.ts +1 -1
  330. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/mergeObjects.d.ts +1 -1
  331. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/min.d.ts +4 -5
  332. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/minN.d.ts +1 -1
  333. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/percentile.d.ts +1 -1
  334. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/push.d.ts +4 -4
  335. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/stdDevPop.d.ts +1 -1
  336. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/stdDevSamp.d.ts +1 -1
  337. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/sum.d.ts +5 -3
  338. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/top.d.ts +2 -2
  339. package/rust-client/node_modules/mingo/dist/types/operators/accumulator/topN.d.ts +4 -4
  340. package/rust-client/node_modules/mingo/dist/types/operators/expression/arithmetic/add.d.ts +1 -1
  341. package/rust-client/node_modules/mingo/dist/types/operators/expression/arithmetic/multiply.d.ts +1 -1
  342. package/rust-client/node_modules/mingo/dist/types/operators/expression/arithmetic/pow.d.ts +1 -1
  343. package/rust-client/node_modules/mingo/dist/types/operators/expression/arithmetic/subtract.d.ts +1 -0
  344. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/arrayElemAt.d.ts +1 -1
  345. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/concatArrays.d.ts +3 -3
  346. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/filter.d.ts +1 -1
  347. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/first.d.ts +0 -4
  348. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/firstN.d.ts +1 -1
  349. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/in.d.ts +2 -2
  350. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/indexOfArray.d.ts +1 -1
  351. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/isArray.d.ts +1 -1
  352. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/last.d.ts +0 -4
  353. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/lastN.d.ts +1 -1
  354. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/map.d.ts +1 -1
  355. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/maxN.d.ts +1 -1
  356. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/minN.d.ts +1 -1
  357. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/range.d.ts +1 -1
  358. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/reduce.d.ts +2 -2
  359. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/reverseArray.d.ts +1 -1
  360. package/rust-client/node_modules/mingo/dist/types/operators/expression/array/slice.d.ts +1 -1
  361. package/rust-client/node_modules/mingo/dist/types/operators/expression/date/_internal.d.ts +31 -9
  362. package/rust-client/node_modules/mingo/dist/types/operators/expression/date/dateFromString.d.ts +2 -2
  363. package/rust-client/node_modules/mingo/dist/types/operators/expression/date/dateToParts.d.ts +2 -2
  364. package/rust-client/node_modules/mingo/dist/types/operators/expression/date/dateTrunc.d.ts +12 -0
  365. package/rust-client/node_modules/mingo/dist/types/operators/expression/date/index.d.ts +1 -0
  366. package/rust-client/node_modules/mingo/dist/types/operators/expression/misc/rand.d.ts +2 -2
  367. package/rust-client/node_modules/mingo/dist/types/operators/expression/object/mergeObjects.d.ts +2 -2
  368. package/rust-client/node_modules/mingo/dist/types/operators/expression/percentile.d.ts +1 -1
  369. package/rust-client/node_modules/mingo/dist/types/operators/expression/set/setIsSubset.d.ts +3 -1
  370. package/rust-client/node_modules/mingo/dist/types/operators/expression/string/_internal.d.ts +4 -4
  371. package/rust-client/node_modules/mingo/dist/types/operators/expression/string/indexOfBytes.d.ts +1 -1
  372. package/rust-client/node_modules/mingo/dist/types/operators/expression/string/replaceAll.d.ts +1 -1
  373. package/rust-client/node_modules/mingo/dist/types/operators/expression/string/replaceOne.d.ts +1 -1
  374. package/rust-client/node_modules/mingo/dist/types/operators/expression/string/split.d.ts +1 -1
  375. package/rust-client/node_modules/mingo/dist/types/operators/expression/string/strLenBytes.d.ts +1 -1
  376. package/rust-client/node_modules/mingo/dist/types/operators/expression/string/strLenCP.d.ts +1 -1
  377. package/rust-client/node_modules/mingo/dist/types/operators/expression/string/substrBytes.d.ts +2 -0
  378. package/rust-client/node_modules/mingo/dist/types/operators/expression/type/_internal.d.ts +6 -2
  379. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/_internal.d.ts +4 -4
  380. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/addFields.d.ts +8 -5
  381. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/bucket.d.ts +8 -5
  382. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/bucketAuto.d.ts +8 -7
  383. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/count.d.ts +7 -5
  384. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/densify.d.ts +12 -0
  385. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/facet.d.ts +7 -1
  386. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/fill.d.ts +6 -3
  387. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/graphLookup.d.ts +13 -0
  388. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/group.d.ts +4 -2
  389. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/index.d.ts +2 -0
  390. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/limit.d.ts +3 -1
  391. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/lookup.d.ts +4 -2
  392. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/match.d.ts +4 -3
  393. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/merge.d.ts +3 -5
  394. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/out.d.ts +5 -3
  395. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/project.d.ts +4 -3
  396. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/redact.d.ts +1 -1
  397. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/replaceRoot.d.ts +5 -5
  398. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/replaceWith.d.ts +8 -1
  399. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/sample.d.ts +7 -5
  400. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/setWindowFields.d.ts +7 -5
  401. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/skip.d.ts +6 -4
  402. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/sort.d.ts +5 -3
  403. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/sortByCount.d.ts +5 -5
  404. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/unionWith.d.ts +3 -1
  405. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/unset.d.ts +2 -0
  406. package/rust-client/node_modules/mingo/dist/types/operators/pipeline/unwind.d.ts +5 -2
  407. package/rust-client/node_modules/mingo/dist/types/operators/query/evaluation/expr.d.ts +2 -2
  408. package/rust-client/node_modules/mingo/dist/types/operators/query/evaluation/jsonSchema.d.ts +2 -2
  409. package/rust-client/node_modules/mingo/dist/types/operators/query/evaluation/where.d.ts +2 -2
  410. package/rust-client/node_modules/mingo/dist/types/operators/update/_internal.d.ts +5 -5
  411. package/rust-client/node_modules/mingo/dist/types/operators/update/addToSet.d.ts +2 -2
  412. package/rust-client/node_modules/mingo/dist/types/operators/update/bit.d.ts +2 -2
  413. package/rust-client/node_modules/mingo/dist/types/operators/update/currentDate.d.ts +2 -2
  414. package/rust-client/node_modules/mingo/dist/types/operators/update/inc.d.ts +2 -2
  415. package/rust-client/node_modules/mingo/dist/types/operators/update/max.d.ts +2 -2
  416. package/rust-client/node_modules/mingo/dist/types/operators/update/min.d.ts +2 -2
  417. package/rust-client/node_modules/mingo/dist/types/operators/update/mul.d.ts +2 -2
  418. package/rust-client/node_modules/mingo/dist/types/operators/update/pop.d.ts +2 -2
  419. package/rust-client/node_modules/mingo/dist/types/operators/update/pull.d.ts +2 -2
  420. package/rust-client/node_modules/mingo/dist/types/operators/update/pullAll.d.ts +2 -2
  421. package/rust-client/node_modules/mingo/dist/types/operators/update/push.d.ts +2 -2
  422. package/rust-client/node_modules/mingo/dist/types/operators/update/rename.d.ts +2 -2
  423. package/rust-client/node_modules/mingo/dist/types/operators/update/set.d.ts +2 -2
  424. package/rust-client/node_modules/mingo/dist/types/operators/update/unset.d.ts +2 -2
  425. package/rust-client/node_modules/mingo/dist/types/operators/window/_internal.d.ts +5 -5
  426. package/rust-client/node_modules/mingo/dist/types/operators/window/denseRank.d.ts +2 -3
  427. package/rust-client/node_modules/mingo/dist/types/operators/window/derivative.d.ts +2 -3
  428. package/rust-client/node_modules/mingo/dist/types/operators/window/documentNumber.d.ts +2 -2
  429. package/rust-client/node_modules/mingo/dist/types/operators/window/expMovingAvg.d.ts +2 -2
  430. package/rust-client/node_modules/mingo/dist/types/operators/window/integral.d.ts +2 -2
  431. package/rust-client/node_modules/mingo/dist/types/operators/window/linearFill.d.ts +2 -2
  432. package/rust-client/node_modules/mingo/dist/types/operators/window/locf.d.ts +2 -2
  433. package/rust-client/node_modules/mingo/dist/types/operators/window/rank.d.ts +2 -2
  434. package/rust-client/node_modules/mingo/dist/types/operators/window/shift.d.ts +2 -2
  435. package/rust-client/node_modules/mingo/dist/types/query.d.ts +5 -7
  436. package/rust-client/node_modules/mingo/dist/types/types.d.ts +18 -15
  437. package/rust-client/node_modules/mingo/dist/types/updater.d.ts +9 -10
  438. package/rust-client/node_modules/mingo/dist/types/util.d.ts +102 -90
  439. 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.pipeline = pipeline;
12
- this.options = initOptions(options);
12
+ this.#pipeline = pipeline;
13
+ this.#options = initOptions(options);
13
14
  }
14
15
  /**
15
- * Returns an `Lazy` iterator for processing results of pipeline
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 mode = this.options.processingMode;
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 pipelineOperators = new Array();
27
- if (!isEmpty(this.pipeline)) {
28
- for (const operator of this.pipeline) {
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
- pipelineOperators.push(opName);
41
- iterator = call(iterator, operator[opName], this.options);
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"], pipelineOperators]).length) {
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 {*} collection
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
- constructor(_opts, _root, _local, timestamp = Date.now()) {
23
- this._opts = _opts;
24
- this._root = _root;
25
- this._local = _local;
26
- this.timestamp = timestamp;
27
- this.update(_root, _local);
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._opts,
40
- isNil(options.root) ? root : options.root,
41
- Object.assign({}, options.local, local)
42
- ) : new ComputeOptions(options, root, local);
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
- /** Updates the internal mutable state. */
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._root = root;
47
- this._local = local ? Object.assign({}, local, {
48
- variables: Object.assign({}, this._local?.variables, local?.variables)
49
- }) : local;
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._opts,
55
- context: Context.from(this._opts.context)
71
+ ...this.#options,
72
+ context: Context.from(this.#options.context)
56
73
  });
57
74
  }
58
75
  get root() {
59
- return this._root;
76
+ return this.#root;
60
77
  }
61
78
  get local() {
62
- return this._local;
79
+ return this.#local;
63
80
  }
64
81
  get idKey() {
65
- return this._opts.idKey;
82
+ return this.#options.idKey;
66
83
  }
67
84
  get collation() {
68
- return this._opts?.collation;
85
+ return this.#options?.collation;
69
86
  }
70
87
  get processingMode() {
71
- return this._opts?.processingMode || "CLONE_OFF" /* CLONE_OFF */;
88
+ return this.#options?.processingMode || "CLONE_OFF" /* CLONE_OFF */;
72
89
  }
73
90
  get useStrictMode() {
74
- return this._opts?.useStrictMode;
91
+ return this.#options?.useStrictMode;
75
92
  }
76
93
  get scriptEnabled() {
77
- return this._opts?.scriptEnabled;
94
+ return this.#options?.scriptEnabled;
78
95
  }
79
96
  get useGlobalContext() {
80
- return this._opts?.useGlobalContext;
97
+ return this.#options?.useGlobalContext;
81
98
  }
82
99
  get hashFunction() {
83
- return this._opts?.hashFunction;
100
+ return this.#options?.hashFunction;
84
101
  }
85
102
  get collectionResolver() {
86
- return this._opts?.collectionResolver;
103
+ return this.#options?.collectionResolver;
87
104
  }
88
105
  get jsonSchemaValidator() {
89
- return this._opts?.jsonSchemaValidator;
106
+ return this.#options?.jsonSchemaValidator;
90
107
  }
91
108
  get variables() {
92
- return this._opts?.variables;
109
+ return this.#options?.variables;
93
110
  }
94
111
  get context() {
95
- return this._opts?.context;
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
- constructor(ops) {
120
- this.operators = {
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(ops = {}) {
133
- return new Context(ops);
139
+ static init() {
140
+ return new Context();
134
141
  }
135
142
  static from(ctx) {
136
- return new Context(ctx.operators);
137
- }
138
- addOperators(type, ops) {
139
- for (const [name, fn] of Object.entries(ops)) {
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.operators[type][name] = fn;
152
+ this.#operators.get(type)[name] = fn;
142
153
  }
143
154
  }
144
155
  return this;
145
156
  }
146
- // register
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" /* ACCUMULATOR */, ops);
162
+ return this.addOperators("accumulator", ops);
149
163
  }
150
164
  addExpressionOps(ops) {
151
- return this.addOperators("expression" /* EXPRESSION */, ops);
165
+ return this.addOperators("expression", ops);
152
166
  }
153
167
  addQueryOps(ops) {
154
- return this.addOperators("query" /* QUERY */, ops);
168
+ return this.addOperators("query", ops);
155
169
  }
156
170
  addPipelineOps(ops) {
157
- return this.addOperators("pipeline" /* PIPELINE */, ops);
171
+ return this.addOperators("pipeline", ops);
158
172
  }
159
173
  addProjectionOps(ops) {
160
- return this.addOperators("projection" /* PROJECTION */, ops);
174
+ return this.addOperators("projection", ops);
161
175
  }
162
176
  addWindowOps(ops) {
163
- return this.addOperators("window" /* WINDOW */, ops);
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" /* ACCUMULATOR */:
194
+ case "accumulator":
185
195
  GLOBAL_CONTEXT.addAccumulatorOps(operators);
186
196
  break;
187
- case "expression" /* EXPRESSION */:
197
+ case "expression":
188
198
  GLOBAL_CONTEXT.addExpressionOps(operators);
189
199
  break;
190
- case "pipeline" /* PIPELINE */:
200
+ case "pipeline":
191
201
  GLOBAL_CONTEXT.addPipelineOps(operators);
192
202
  break;
193
- case "projection" /* PROJECTION */:
203
+ case "projection":
194
204
  GLOBAL_CONTEXT.addProjectionOps(operators);
195
205
  break;
196
- case "query" /* QUERY */:
206
+ case "query":
197
207
  GLOBAL_CONTEXT.addQueryOps(operators);
198
208
  break;
199
- case "window" /* WINDOW */:
209
+ case "window":
200
210
  GLOBAL_CONTEXT.addWindowOps(operators);
201
211
  break;
202
212
  }
203
213
  }
204
- function getOperator(type, operator, options) {
214
+ function getOperator(type, name, options) {
205
215
  const { context: ctx, useGlobalContext: fallback } = options || {};
206
- const fn = ctx ? ctx.getOperator(type, operator) : null;
207
- return !fn && fallback ? GLOBAL_CONTEXT.getOperator(type, operator) : fn;
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 = operator || "";
267
- if (isOperator(operator)) {
268
- const callExpression = getOperator(
269
- "expression" /* EXPRESSION */,
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 (has(redactVariables, expr)) {
297
- return expr;
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 (has(systemVariables, arr[0])) {
302
- context = systemVariables[arr[0]](
303
- obj,
304
- null,
305
- copts
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
- context = Object.assign(
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 prefix = arr[0].slice(2);
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
- if (expr === "")
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) => computeValue(obj, item, null, copts));
333
- } else if (isObject(expr)) {
263
+ return expr.map((item) => computeExpression(obj, item, options));
264
+ }
265
+ if (isObject(expr)) {
334
266
  const result = {};
335
- for (const [key, val] of Object.entries(expr)) {
336
- result[key] = computeValue(obj, val, key, copts);
337
- if (["expression" /* EXPRESSION */, "accumulator" /* ACCUMULATOR */].some(
338
- (t) => !!getOperator(t, key, options)
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 result = computeValue(obj, expr, null, options);
353
- return has(redactVariables, result) ? redactVariables[result](obj, expr, options) : result;
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,