@valkey/valkey-glide-darwin-arm64 1.2.0 → 1.2.1-rc1

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,21 +1,25 @@
1
1
  import { computeValue } from "../../../core";
2
2
  import { assert, isNil, isObject, isString } from "../../../util";
3
3
  const $setField = (obj, expr, options) => {
4
- const args = computeValue(obj, expr, null, options);
5
- if (isNil(args.input))
6
- return null;
4
+ const { input, field, value } = computeValue(
5
+ obj,
6
+ expr,
7
+ null,
8
+ options
9
+ );
10
+ if (isNil(input)) return null;
7
11
  assert(
8
- isObject(args.input),
12
+ isObject(input),
9
13
  "$setField expression 'input' must evaluate to an object"
10
14
  );
11
15
  assert(
12
- isString(args.field),
16
+ isString(field),
13
17
  "$setField expression 'field' must evaluate to a string"
14
18
  );
15
19
  if (expr.value == "$$REMOVE") {
16
- delete obj[args.field];
20
+ delete obj[field];
17
21
  } else {
18
- obj[args.field] = args.value;
22
+ obj[field] = value;
19
23
  }
20
24
  return obj;
21
25
  };
@@ -1,8 +1,16 @@
1
1
  import { computeValue } from "../../../core";
2
- import { notInArray } from "../../../util";
2
+ import { assert, isArray, isNil, ValueMap } from "../../../util";
3
3
  const $setDifference = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
- return args[0].filter(notInArray.bind(null, args[1]));
5
+ if (isNil(args)) return null;
6
+ assert(isArray(args), "$setDifference must be an arrays.");
7
+ if (args.some(isNil)) return null;
8
+ assert(args.length == 2, `$setDifference takes exactly 2 arguments.`);
9
+ assert(args.every(isArray), "$setDifference operands must be arrays.");
10
+ const m = ValueMap.init(options.hashFunction);
11
+ args[0].forEach((v) => m.set(v, true));
12
+ args[1].forEach((v) => m.delete(v));
13
+ return Array.from(m.keys());
6
14
  };
7
15
  export {
8
16
  $setDifference
@@ -1,10 +1,24 @@
1
1
  import { computeValue } from "../../../core";
2
- import { intersection, unique } from "../../../util";
2
+ import { assert, isArray, ValueMap } from "../../../util";
3
3
  const $setEquals = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
- const xs = unique(args[0], options?.hashFunction);
6
- const ys = unique(args[1], options?.hashFunction);
7
- return xs.length === ys.length && xs.length === intersection([xs, ys], options?.hashFunction).length;
5
+ assert(
6
+ isArray(args) && args.every(isArray),
7
+ "$setEquals operands must be arrays."
8
+ );
9
+ const map = ValueMap.init();
10
+ args[0].every((v, i) => map.set(v, i));
11
+ for (let i = 1; i < args.length; i++) {
12
+ const arr = args[i];
13
+ const set = /* @__PURE__ */ new Set();
14
+ for (let j = 0; j < arr.length; j++) {
15
+ const n = map.get(arr[j]) ?? -1;
16
+ if (n === -1) return false;
17
+ set.add(n);
18
+ }
19
+ if (set.size !== map.size) return false;
20
+ }
21
+ return true;
8
22
  };
9
23
  export {
10
24
  $setEquals
@@ -1,10 +1,11 @@
1
1
  import { computeValue } from "../../../core";
2
- import { assert, intersection, isArray } from "../../../util";
2
+ import { assert, intersection, isArray, isNil } from "../../../util";
3
3
  const $setIntersection = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
+ if (isNil(args)) return null;
5
6
  assert(
6
7
  isArray(args) && args.every(isArray),
7
- "$setIntersection: expresssion must resolve to array of arrays"
8
+ "$setIntersection operands must be arrays."
8
9
  );
9
10
  return intersection(args, options?.hashFunction);
10
11
  };
@@ -1,8 +1,22 @@
1
1
  import { computeValue } from "../../../core";
2
- import { intersection } from "../../../util";
2
+ import { assert, isArray, ValueMap } from "../../../util";
3
3
  const $setIsSubset = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
- return intersection(args, options?.hashFunction).length === args[0].length;
5
+ assert(
6
+ isArray(args) && args.every(isArray),
7
+ "$setIsSubset operands must be arrays."
8
+ );
9
+ const first = args[0];
10
+ const second = args[1];
11
+ const map = ValueMap.init();
12
+ const set = /* @__PURE__ */ new Set();
13
+ first.every((v, i) => map.set(v, i));
14
+ for (const v of second) {
15
+ set.add(map.get(v) ?? -1);
16
+ if (set.size > map.size) return true;
17
+ }
18
+ set.delete(-1);
19
+ return set.size == map.size;
6
20
  };
7
21
  export {
8
22
  $setIsSubset
@@ -1,12 +1,11 @@
1
1
  import { computeValue } from "../../../core";
2
- import { assert, isArray, unique } from "../../../util";
2
+ import { assert, flatten, isArray, isNil, unique } from "../../../util";
3
3
  const $setUnion = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
- assert(
6
- isArray(args) && args.length == 2 && args.every(isArray),
7
- "$setUnion: arguments must be arrays"
8
- );
9
- return unique(args[0].concat(args[1]), options?.hashFunction);
5
+ if (isNil(args)) return null;
6
+ assert(isArray(args), "$setUnion operands must be arrays.");
7
+ if (args.some(isNil)) return null;
8
+ return unique(flatten(args), options?.hashFunction);
10
9
  };
11
10
  export {
12
11
  $setUnion
@@ -45,8 +45,7 @@ const WHITESPACE_CHARS = [
45
45
  function trimString(obj, expr, options, trimOpts) {
46
46
  const val = computeValue(obj, expr, null, options);
47
47
  const s = val.input;
48
- if (isNil(s))
49
- return null;
48
+ if (isNil(s)) return null;
50
49
  const codepoints = isNil(val.chars) ? WHITESPACE_CHARS : val.chars.split("").map((c) => c.codePointAt(0));
51
50
  let i = 0;
52
51
  let j = s.length - 1;
@@ -58,8 +57,7 @@ function trimString(obj, expr, options, trimOpts) {
58
57
  }
59
58
  function regexSearch(obj, expr, options, reOpts) {
60
59
  const val = computeValue(obj, expr, null, options);
61
- if (!isString(val.input))
62
- return [];
60
+ if (!isString(val.input)) return [];
63
61
  const regexOptions = val.options;
64
62
  if (regexOptions) {
65
63
  assert(
@@ -79,11 +77,9 @@ function regexSearch(obj, expr, options, reOpts) {
79
77
  idx: m.index + offset,
80
78
  captures: []
81
79
  };
82
- for (let i = 1; i < m.length; i++)
83
- result.captures.push(m[i] || null);
80
+ for (let i = 1; i < m.length; i++) result.captures.push(m[i] || null);
84
81
  matches.push(result);
85
- if (!reOpts.global)
86
- break;
82
+ if (!reOpts.global) break;
87
83
  offset = m.index + m[0].length;
88
84
  input = input.substring(offset);
89
85
  }
@@ -1,9 +1,12 @@
1
1
  import { computeValue } from "../../../core";
2
- import { inArray } from "../../../util";
2
+ import { assert, isNil, isString } from "../../../util";
3
3
  const $concat = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
- if ([null, void 0].some(inArray.bind(null, args)))
6
- return null;
5
+ assert(
6
+ args.every((v) => isString(v) || isNil(v)),
7
+ "$concat only supports strings."
8
+ );
9
+ if (args.some(isNil)) return null;
7
10
  return args.join("");
8
11
  };
9
12
  export {
@@ -3,8 +3,7 @@ import { assert, isNil, isNumber, isString } from "../../../util";
3
3
  const $indexOfBytes = (obj, expr, options) => {
4
4
  const arr = computeValue(obj, expr, null, options);
5
5
  const errorMsg = "$indexOfBytes expression resolves to invalid an argument";
6
- if (isNil(arr[0]))
7
- return null;
6
+ if (isNil(arr[0])) return null;
8
7
  assert(isString(arr[0]) && isString(arr[1]), errorMsg);
9
8
  const str = arr[0];
10
9
  const searchStr = arr[1];
@@ -15,8 +14,7 @@ const $indexOfBytes = (obj, expr, options) => {
15
14
  assert(valid, errorMsg);
16
15
  start = start || 0;
17
16
  end = end || str.length;
18
- if (start > end)
19
- return -1;
17
+ if (start > end) return -1;
20
18
  const index = str.substring(start, end).indexOf(searchStr);
21
19
  return index > -1 ? index + start : index;
22
20
  };
@@ -3,8 +3,7 @@ import { assert, isNil, isString } from "../../../util";
3
3
  const $replaceAll = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
5
  const arr = [args.input, args.find, args.replacement];
6
- if (arr.some(isNil))
7
- return null;
6
+ if (arr.some(isNil)) return null;
8
7
  assert(
9
8
  arr.every(isString),
10
9
  "$replaceAll expression fields must evaluate to string"
@@ -3,8 +3,7 @@ import { assert, isNil, isString } from "../../../util";
3
3
  const $replaceOne = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
5
  const arr = [args.input, args.find, args.replacement];
6
- if (arr.some(isNil))
7
- return null;
6
+ if (arr.some(isNil)) return null;
8
7
  assert(
9
8
  arr.every(isString),
10
9
  "$replaceOne expression fields must evaluate to string"
@@ -2,8 +2,7 @@ import { computeValue } from "../../../core";
2
2
  import { assert, isNil, isString } from "../../../util";
3
3
  const $split = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
- if (isNil(args[0]))
6
- return null;
5
+ if (isNil(args[0])) return null;
7
6
  assert(
8
7
  args.every(isString),
9
8
  "$split expression must result to array(2) of strings"
@@ -4,8 +4,7 @@ const $strcasecmp = (obj, expr, options) => {
4
4
  const args = computeValue(obj, expr, null, options);
5
5
  let a = args[0];
6
6
  let b = args[1];
7
- if (isEqual(a, b) || args.every(isNil))
8
- return 0;
7
+ if (isEqual(a, b) || args.every(isNil)) return 0;
9
8
  assert(
10
9
  args.every(isString),
11
10
  "$strcasecmp must resolve to array(2) of strings"
@@ -1,20 +1,10 @@
1
1
  import { computeValue } from "../../../core";
2
2
  import { isString } from "../../../util";
3
3
  const $substr = (obj, expr, options) => {
4
- const args = computeValue(obj, expr, null, options);
5
- const s = args[0];
6
- const index = args[1];
7
- const count = args[2];
8
- if (isString(s)) {
9
- if (index < 0) {
10
- return "";
11
- } else if (count < 0) {
12
- return s.substr(index);
13
- } else {
14
- return s.substr(index, count);
15
- }
16
- }
17
- return "";
4
+ const [s, start, count] = computeValue(obj, expr, null, options);
5
+ if (start < 0 || !isString(s)) return "";
6
+ if (count < 0) return s.substring(start);
7
+ return s.substring(start, start + count);
18
8
  };
19
9
  export {
20
10
  $substr
@@ -2,13 +2,11 @@ import { computeValue } from "../../../core";
2
2
  import { assert, isNumber, isString } from "../../../util";
3
3
  const UTF8_MASK = [192, 224, 240];
4
4
  function toUtf8(n) {
5
- if (n < 128)
6
- return [n];
5
+ if (n < 128) return [n];
7
6
  let count = n < 2048 && 1 || n < 65536 && 2 || 3;
8
7
  const offset = UTF8_MASK[count - 1];
9
8
  const utf8 = [(n >> 6 * count) + offset];
10
- while (count > 0)
11
- utf8.push(128 | n >> 6 * --count & 63);
9
+ while (count > 0) utf8.push(128 | n >> 6 * --count & 63);
12
10
  return utf8;
13
11
  }
14
12
  function utf8Encode(s) {
@@ -2,10 +2,8 @@ import { computeValue } from "../../../core";
2
2
  import { isNil } from "../../../util";
3
3
  const $atan2 = (obj, expr, options) => {
4
4
  const [y, x] = computeValue(obj, expr, null, options);
5
- if (isNaN(y) || isNil(y))
6
- return y;
7
- if (isNaN(x) || isNil(x))
8
- return x;
5
+ if (isNaN(y) || isNil(y)) return y;
6
+ if (isNaN(x) || isNil(x)) return x;
9
7
  return Math.atan2(y, x);
10
8
  };
11
9
  export {
@@ -2,7 +2,6 @@ import { createTrignometryOperator } from "./_internal";
2
2
  const $cosh = createTrignometryOperator(Math.cosh, {
3
3
  "-Infinity": Infinity,
4
4
  Infinity: Infinity
5
- // [Math.PI]: -1,
6
5
  });
7
6
  export {
8
7
  $cosh
@@ -1,29 +1,35 @@
1
1
  import { computeValue } from "../../../core";
2
- import { isNil, isNumber, isString } from "../../../util";
2
+ import { isDate, isNil, isNumber, isString } from "../../../util";
3
+ const MAX_INT = 2147483647;
4
+ const MIN_INT = -2147483648;
5
+ const MAX_LONG = Number.MAX_SAFE_INTEGER;
6
+ const MIN_LONG = Number.MIN_SAFE_INTEGER;
3
7
  class TypeConvertError extends Error {
4
8
  constructor(message) {
5
9
  super(message);
6
10
  }
7
11
  }
8
- function toInteger(obj, expr, options, max, min, typename) {
12
+ function toInteger(obj, expr, options, min, max) {
9
13
  const val = computeValue(obj, expr, null, options);
10
- if (isNil(val))
11
- return null;
12
- if (val instanceof Date)
13
- return val.getTime();
14
- if (val === true)
15
- return 1;
16
- if (val === false)
17
- return 0;
14
+ if (val === true) return 1;
15
+ if (val === false) return 0;
16
+ if (isNil(val)) return null;
17
+ if (isDate(val)) return val.getTime();
18
18
  const n = Number(val);
19
19
  if (isNumber(n) && n >= min && n <= max) {
20
20
  if (!isString(val) || n.toString().indexOf(".") === -1) {
21
21
  return Math.trunc(n);
22
22
  }
23
23
  }
24
- throw new TypeConvertError(`cannot convert '${val}' to ${typename}`);
24
+ throw new TypeConvertError(
25
+ `cannot convert '${val}' to ${max == MAX_INT ? "int" : "long"}`
26
+ );
25
27
  }
26
28
  export {
29
+ MAX_INT,
30
+ MAX_LONG,
31
+ MIN_INT,
32
+ MIN_LONG,
27
33
  TypeConvertError,
28
34
  toInteger
29
35
  };
@@ -10,8 +10,7 @@ import { $toString } from "./toString";
10
10
  const $convert = (obj, expr, options) => {
11
11
  const args = computeValue(obj, expr, null, options);
12
12
  args.onNull = args.onNull === void 0 ? null : args.onNull;
13
- if (isNil(args.input))
14
- return args.onNull;
13
+ if (isNil(args.input)) return args.onNull;
15
14
  try {
16
15
  switch (args.to) {
17
16
  case 2:
@@ -37,10 +36,9 @@ const $convert = (obj, expr, options) => {
37
36
  case "long":
38
37
  return $toLong(obj, args.input, options);
39
38
  }
40
- } catch (e) {
39
+ } catch {
41
40
  }
42
- if (args.onError !== void 0)
43
- return args.onError;
41
+ if (args.onError !== void 0) return args.onError;
44
42
  throw new TypeConvertError(`could not convert to type ${args.to}.`);
45
43
  };
46
44
  export {
@@ -2,10 +2,8 @@ import { computeValue } from "../../../core";
2
2
  import { isNil, isString } from "../../../util";
3
3
  const $toBool = (obj, expr, options) => {
4
4
  const val = computeValue(obj, expr, null, options);
5
- if (isNil(val))
6
- return null;
7
- if (isString(val))
8
- return true;
5
+ if (isNil(val)) return null;
6
+ if (isString(val)) return true;
9
7
  return Boolean(val);
10
8
  };
11
9
  export {
@@ -1,16 +1,13 @@
1
1
  import { computeValue } from "../../../core";
2
- import { isNil } from "../../../util";
2
+ import { isDate, isNil } from "../../../util";
3
3
  import { TypeConvertError } from "./_internal";
4
4
  const $toDate = (obj, expr, options) => {
5
5
  const val = computeValue(obj, expr, null, options);
6
- if (val instanceof Date)
7
- return val;
8
- if (isNil(val))
9
- return null;
6
+ if (isDate(val)) return val;
7
+ if (isNil(val)) return null;
10
8
  const d = new Date(val);
11
9
  const n = d.getTime();
12
- if (!isNaN(n))
13
- return d;
10
+ if (!isNaN(n)) return d;
14
11
  throw new TypeConvertError(`cannot convert '${val}' to date`);
15
12
  };
16
13
  export {
@@ -1,19 +1,14 @@
1
1
  import { computeValue } from "../../../core";
2
- import { isNil, isNumber } from "../../../util";
2
+ import { isDate, isNil, isNumber } from "../../../util";
3
3
  import { TypeConvertError } from "./_internal";
4
4
  const $toDouble = (obj, expr, options) => {
5
5
  const val = computeValue(obj, expr, null, options);
6
- if (isNil(val))
7
- return null;
8
- if (val instanceof Date)
9
- return val.getTime();
10
- if (val === true)
11
- return 1;
12
- if (val === false)
13
- return 0;
6
+ if (isNil(val)) return null;
7
+ if (isDate(val)) return val.getTime();
8
+ if (val === true) return 1;
9
+ if (val === false) return 0;
14
10
  const n = Number(val);
15
- if (isNumber(n))
16
- return n;
11
+ if (isNumber(n)) return n;
17
12
  throw new TypeConvertError(`cannot convert '${val}' to double/decimal`);
18
13
  };
19
14
  export {
@@ -1,8 +1,5 @@
1
- import { MAX_INT, MIN_INT } from "../../../util";
2
- import { toInteger } from "./_internal";
3
- const $toInt = (obj, expr, options) => {
4
- return toInteger(obj, expr, options, MAX_INT, MIN_INT, "int");
5
- };
1
+ import { MAX_INT, MIN_INT, toInteger } from "./_internal";
2
+ const $toInt = (obj, expr, options) => toInteger(obj, expr, options, MIN_INT, MAX_INT);
6
3
  export {
7
4
  $toInt
8
5
  };
@@ -1,8 +1,5 @@
1
- import { MAX_LONG, MIN_LONG } from "../../../util";
2
- import { toInteger } from "./_internal";
3
- const $toLong = (obj, expr, options) => {
4
- return toInteger(obj, expr, options, MAX_LONG, MIN_LONG, "long");
5
- };
1
+ import { MAX_LONG, MIN_LONG, toInteger } from "./_internal";
2
+ const $toLong = (obj, expr, options) => toInteger(obj, expr, options, MIN_LONG, MAX_LONG);
6
3
  export {
7
4
  $toLong
8
5
  };
@@ -1,19 +1,20 @@
1
1
  import { computeValue } from "../../../core";
2
- import { isNil } from "../../../util";
2
+ import { isDate, isNil } from "../../../util";
3
3
  import { $dateToString } from "../date/dateToString";
4
4
  const $toString = (obj, expr, options) => {
5
5
  const val = computeValue(obj, expr, null, options);
6
- if (isNil(val))
7
- return null;
8
- if (val instanceof Date) {
9
- const dateExpr = {
10
- date: expr,
11
- format: "%Y-%m-%dT%H:%M:%S.%LZ"
12
- };
13
- return $dateToString(obj, dateExpr, options);
14
- } else {
15
- return val.toString();
6
+ if (isNil(val)) return null;
7
+ if (isDate(val)) {
8
+ return $dateToString(
9
+ obj,
10
+ {
11
+ date: expr,
12
+ format: "%Y-%m-%dT%H:%M:%S.%LZ"
13
+ },
14
+ options
15
+ );
16
16
  }
17
+ return val.toString();
17
18
  };
18
19
  export {
19
20
  $toString
@@ -1,21 +1,18 @@
1
1
  import { computeValue } from "../../../core";
2
- import { getType, MAX_INT, MIN_INT } from "../../../util";
2
+ import { isNumber, isRegExp, typeOf } from "../../../util";
3
+ import { MAX_INT, MIN_INT } from "./_internal";
3
4
  const $type = (obj, expr, options) => {
4
- const val = computeValue(obj, expr, null, options);
5
- const typename = getType(val);
6
- const nativeType = typename.toLowerCase();
7
- switch (nativeType) {
8
- case "boolean":
9
- return "bool";
10
- case "number":
11
- if (val.toString().indexOf(".") >= 0)
12
- return "double";
13
- return val >= MIN_INT && val <= MAX_INT ? "int" : "long";
14
- case "regexp":
15
- return "regex";
16
- default:
17
- return nativeType;
5
+ const v = computeValue(obj, expr, null, options);
6
+ if (options.useStrictMode) {
7
+ if (v === void 0) return "missing";
8
+ if (v === true || v === false) return "bool";
9
+ if (isNumber(v)) {
10
+ if (v % 1 != 0) return "double";
11
+ return v >= MIN_INT && v <= MAX_INT ? "int" : "long";
12
+ }
13
+ if (isRegExp(v)) return "regex";
18
14
  }
15
+ return typeOf(v);
19
16
  };
20
17
  export {
21
18
  $type
@@ -2,8 +2,7 @@ import { computeValue } from "../../core";
2
2
  import { removeValue, setValue } from "../../util";
3
3
  const $addFields = (collection, expr, options) => {
4
4
  const newFields = Object.keys(expr);
5
- if (newFields.length === 0)
6
- return collection;
5
+ if (newFields.length === 0) return collection;
7
6
  return collection.map((obj) => {
8
7
  const newObj = { ...obj };
9
8
  for (const field of newFields) {