• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stipsan / ioredis-mock / 6350561769

29 Sep 2023 10:53AM UTC coverage: 95.338% (-0.1%) from 95.448%
6350561769

push

github

web-flow
feat: add zdiff (#1312)

1150 of 1249 branches covered (0.0%)

16 of 16 new or added lines in 1 file covered. (100.0%)

1963 of 2059 relevant lines covered (95.34%)

2523.72 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.25
/src/commands/zdiff.js
1
import { convertStringToBuffer } from '../commands-utils/convertStringToBuffer'
2
import { zrange } from './zrange'
3
import { zscore } from './zscore'
4

5
export function zdiff(numkeys, ...vals) {
6
  if (vals.length === 0) {
24!
7
    throw new Error("ERR wrong number of arguments for 'zdiff' command")
×
8
  }
9

10
  const [keys, withScores] =
11
    vals[vals.length - 1] === 'WITHSCORES'
24✔
12
      ? [vals.slice(0, -1), true]
13
      : [vals, false]
14

15
  if (
24✔
16
    (Number.isInteger(numkeys) ? numkeys : parseInt(numkeys, 10)) !==
24!
17
    keys.length
18
  ) {
19
    throw new Error(
4✔
20
      'ERR numkeys must match the number of keys. ' +
21
        `numkeys===${numkeys} keys but got ${keys.length} keys`
22
    )
23
  }
24

25
  const firstKeyMembers = zrange.call(this, keys[0], 0, -1)
20✔
26
  const otherMembers = new Set(
20✔
27
    keys
28
      .slice(1)
29
      .map(key => zrange.call(this, key, 0, -1))
20✔
30
      .flat()
31
  )
32

33
  const diffedMembers = firstKeyMembers.filter(
20✔
34
    member => !otherMembers.has(member)
48✔
35
  )
36

37
  if (!withScores) {
20✔
38
    return diffedMembers
10✔
39
  }
40

41
  return diffedMembers
10✔
42
    .map(member => [member, zscore.call(this, keys[0], member)])
14✔
43
    .flat()
44
}
45

46
export function zdiffBuffer(numkeys, ...vals) {
47
  const val = zdiff.apply(this, numkeys, vals)
×
48
  return convertStringToBuffer(val)
×
49
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc