@upstash/redis 0.1.22 → 1.0.0-alpha.0

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 (51) hide show
  1. package/dist/chunk-RYSRH3HC.mjs +1084 -0
  2. package/dist/commands.d.ts +205 -0
  3. package/dist/commands.js +1201 -0
  4. package/dist/commands.mjs +218 -0
  5. package/dist/index.d.ts +1001 -0
  6. package/dist/index.js +1750 -0
  7. package/dist/index.mjs +858 -0
  8. package/dist/zunionstore-f1aa0b4a.d.ts +689 -0
  9. package/package.json +1 -84
  10. package/README.md +0 -103
  11. package/dist/main/src/client.d.ts +0 -25
  12. package/dist/main/src/client.d.ts.map +0 -1
  13. package/dist/main/src/client.js +0 -748
  14. package/dist/main/src/client.js.map +0 -1
  15. package/dist/main/src/index.d.ts +0 -73
  16. package/dist/main/src/index.d.ts.map +0 -1
  17. package/dist/main/src/index.js +0 -124
  18. package/dist/main/src/index.js.map +0 -1
  19. package/dist/main/src/type.d.ts +0 -466
  20. package/dist/main/src/type.d.ts.map +0 -1
  21. package/dist/main/src/type.js +0 -3
  22. package/dist/main/src/type.js.map +0 -1
  23. package/dist/main/utils/helper.d.ts +0 -5
  24. package/dist/main/utils/helper.d.ts.map +0 -1
  25. package/dist/main/utils/helper.js +0 -20
  26. package/dist/main/utils/helper.js.map +0 -1
  27. package/dist/module/src/client.d.ts +0 -25
  28. package/dist/module/src/client.d.ts.map +0 -1
  29. package/dist/module/src/client.js +0 -743
  30. package/dist/module/src/client.js.map +0 -1
  31. package/dist/module/src/index.d.ts +0 -73
  32. package/dist/module/src/index.d.ts.map +0 -1
  33. package/dist/module/src/index.js +0 -5
  34. package/dist/module/src/index.js.map +0 -1
  35. package/dist/module/src/type.d.ts +0 -466
  36. package/dist/module/src/type.d.ts.map +0 -1
  37. package/dist/module/src/type.js +0 -2
  38. package/dist/module/src/type.js.map +0 -1
  39. package/dist/module/utils/helper.d.ts +0 -5
  40. package/dist/module/utils/helper.d.ts.map +0 -1
  41. package/dist/module/utils/helper.js +0 -13
  42. package/dist/module/utils/helper.js.map +0 -1
  43. package/dist/umd/upstash-redis.js +0 -1
  44. package/jest.config.js +0 -5
  45. package/src/client.ts +0 -1232
  46. package/src/index.ts +0 -233
  47. package/src/type.ts +0 -1194
  48. package/tsconfig.json +0 -18
  49. package/tsconfig.module.json +0 -7
  50. package/utils/helper.ts +0 -17
  51. package/webpack.config.js +0 -34
package/src/client.ts DELETED
@@ -1,1232 +0,0 @@
1
- import fetch from 'isomorphic-unfetch';
2
- import { isFunction, isObject, isString } from '../utils/helper';
3
- import {
4
- ClientObjectProps,
5
- ReturnType,
6
- RequestConfig,
7
- Callback,
8
- MethodReturn,
9
- Part,
10
- Upstash,
11
- Bit,
12
- ZSetNumber,
13
- EdgeCacheType,
14
- } from './type';
15
-
16
- /**
17
- * Creates a Upstash Redis instance
18
- *
19
- * @constructor
20
- * @param {string} url - database rest url
21
- * @param {string} token - database rest token
22
- * @param {Object} options - database config
23
- * @param {string} [options.url] - database rest url
24
- * @param {string} [options.token] - database rest token
25
- * @param {string} [options.edgeUrl] - database rest edge url
26
- * @param {string} [options.readFromEdge] - database rest read from edge
27
- *
28
- * @example
29
- * ```js
30
- * import Upstash from '@upstash/redis'
31
- *
32
- * const redis1 = new Upstash('url', token);
33
- * const redis2 = new Upstash({ url: '', token: '', edgeUrl: '', readFromEdge: false });
34
- * ```
35
- */
36
- export default Upstash;
37
- function Upstash(url?: string, token?: string): Upstash;
38
- function Upstash(options?: ClientObjectProps): Upstash;
39
- function Upstash(): Upstash {
40
- let OPTIONS: {
41
- url: string;
42
- token: string;
43
- edgeUrl?: string;
44
- readFromEdge?: boolean;
45
- };
46
-
47
- // @ts-ignore
48
- parseOptions(arguments[0], arguments[1]);
49
-
50
- /**
51
- * Parse Options
52
- */
53
- function parseOptions() {
54
- const arg0 = arguments[0];
55
- const arg1 = arguments[1];
56
-
57
- OPTIONS = { url: '', token: '', edgeUrl: '', readFromEdge: false };
58
-
59
- // Upstash({})
60
- if (isObject(arg0)) {
61
- const { url, token, edgeUrl, readFromEdge } = arg0;
62
- OPTIONS.url = url;
63
- OPTIONS.token = token;
64
- OPTIONS.edgeUrl = edgeUrl;
65
- OPTIONS.readFromEdge = readFromEdge ?? !!edgeUrl;
66
- }
67
- // Upstash(url, token)
68
- else if (isString(arg0) && isString(arg1)) {
69
- OPTIONS.url = arg0;
70
- OPTIONS.token = arg1;
71
- }
72
- // try auto fill from env variable
73
- else if (process) {
74
- const {
75
- UPSTASH_REDIS_REST_URL,
76
- UPSTASH_REDIS_REST_TOKEN,
77
- UPSTASH_REDIS_EDGE_URL,
78
- } = process.env;
79
- OPTIONS.url = UPSTASH_REDIS_REST_URL ?? '';
80
- OPTIONS.token = UPSTASH_REDIS_REST_TOKEN ?? '';
81
- OPTIONS.edgeUrl = UPSTASH_REDIS_EDGE_URL ?? '';
82
- OPTIONS.readFromEdge = !!UPSTASH_REDIS_EDGE_URL;
83
- }
84
- }
85
-
86
- /**
87
- * Fetch
88
- */
89
- function fetchData(url: string, options: object): Promise<ReturnType> {
90
- let cache: EdgeCacheType = null;
91
- let edge: boolean = false;
92
- return new Promise((resolve) => {
93
- fetch(url, {
94
- ...options,
95
- headers: {
96
- Authorization: `Bearer ${OPTIONS.token}`,
97
- },
98
- })
99
- .then((res) => {
100
- switch (res.headers.get('x-cache')) {
101
- case 'Hit from cloudfront':
102
- edge = true;
103
- cache = 'hit';
104
- break;
105
- case 'Miss from cloudfront':
106
- edge = true;
107
- cache = 'miss';
108
- break;
109
- }
110
- return res.json().then();
111
- })
112
- .then((data) => {
113
- if (data.error) throw data.error;
114
- resolve({
115
- data: data.result,
116
- error: null,
117
- metadata: { edge, cache },
118
- });
119
- })
120
- .catch((error) => {
121
- resolve({
122
- data: null,
123
- error: typeof error === 'object' ? error.message : error,
124
- metadata: { edge, cache },
125
- });
126
- });
127
- });
128
- }
129
-
130
- /**
131
- * Request
132
- */
133
- function request(
134
- configOrCallback?: RequestConfig | Callback,
135
- callback?: Callback,
136
- ...parts: Part[]
137
- ): MethodReturn {
138
- if (!OPTIONS.url) {
139
- return new Promise((resolve) =>
140
- resolve({ data: null, error: 'Database url not found?' })
141
- );
142
- }
143
-
144
- if (!OPTIONS.edgeUrl && OPTIONS.readFromEdge) {
145
- return new Promise((resolve) =>
146
- resolve({
147
- data: null,
148
- error: 'You need to set Edge Url to read from edge.',
149
- })
150
- );
151
- }
152
-
153
- let promise: Promise<ReturnType>;
154
-
155
- let isRequestDefaultEdge = !!OPTIONS.edgeUrl && OPTIONS.readFromEdge;
156
- let isRequestCustomEdge = isRequestDefaultEdge;
157
-
158
- // write command?
159
- if (configOrCallback === false) {
160
- isRequestCustomEdge = false;
161
- }
162
- // get command
163
- // has config & has edgeUrl
164
- else if (isObject(configOrCallback)) {
165
- // @ts-ignore
166
- if (!OPTIONS.edgeUrl && configOrCallback?.edge) {
167
- return new Promise((resolve) =>
168
- resolve({
169
- data: null,
170
- error: 'You need to set Edge Url to read from edge.',
171
- })
172
- );
173
- }
174
- if (OPTIONS.edgeUrl) {
175
- // @ts-ignore
176
- isRequestCustomEdge = configOrCallback?.edge;
177
- }
178
- }
179
-
180
- if (isRequestCustomEdge) {
181
- const command = encodeURI(parts.join('/'));
182
- const edgeUrlWithPath = `${OPTIONS.edgeUrl}/${command}`;
183
- promise = fetchData(edgeUrlWithPath, {
184
- method: 'GET',
185
- });
186
- } else {
187
- promise = fetchData(OPTIONS.url, {
188
- method: 'POST',
189
- body: JSON.stringify(parts),
190
- });
191
- }
192
-
193
- if (isFunction(configOrCallback)) {
194
- // @ts-ignore
195
- return promise.then(configOrCallback);
196
- } else if (isFunction(callback)) {
197
- return promise.then(callback);
198
- }
199
-
200
- return promise;
201
- }
202
-
203
- /**
204
- * Auth
205
- */
206
- function auth(url?: string, token?: string): void;
207
- function auth(options?: ClientObjectProps): void;
208
- function auth(): void {
209
- // @ts-ignore
210
- parseOptions(arguments[0], arguments[1]);
211
- }
212
-
213
- /**
214
- * STRING
215
- */
216
-
217
- function append(key: string, value: string): MethodReturn {
218
- return request(false, arguments[2], 'append', key, value);
219
- }
220
-
221
- function decr(key: string): MethodReturn {
222
- return request(false, arguments[1], 'decr', key);
223
- }
224
-
225
- function decrby(key: string, decrement: number): MethodReturn {
226
- return request(false, arguments[2], 'decrby', key, decrement);
227
- }
228
-
229
- function get(key: string): MethodReturn {
230
- return request(arguments[1], arguments[2], 'get', key);
231
- }
232
-
233
- function getrange(key: string, start: number, end: number): MethodReturn {
234
- return request(arguments[3], arguments[4], 'getrange', key, start, end);
235
- }
236
-
237
- function getset(key: string, value: string): MethodReturn {
238
- return request(false, arguments[2], 'getset', key, value);
239
- }
240
-
241
- function incr(key: string): MethodReturn {
242
- return request(false, arguments[1], 'incr', key);
243
- }
244
-
245
- function incrby(key: string, value: number | string): MethodReturn {
246
- return request(false, arguments[2], 'incrby', key, value);
247
- }
248
-
249
- function incrbyfloat(key: string, value: number | string): MethodReturn {
250
- return request(false, arguments[2], 'incrbyfloat', key, value);
251
- }
252
-
253
- function mget(values: string[]): MethodReturn {
254
- return request(arguments[1], arguments[2], 'mget', ...values);
255
- }
256
-
257
- function mset(values: string[]): MethodReturn {
258
- return request(false, arguments[1], 'mset', ...values);
259
- }
260
-
261
- function msetnx(values: string[]): MethodReturn {
262
- return request(false, arguments[1], 'msetnx', ...values);
263
- }
264
-
265
- function psetex(
266
- key: string,
267
- miliseconds: number,
268
- value: string | number
269
- ): MethodReturn {
270
- return request(false, arguments[3], 'psetex', key, miliseconds, value);
271
- }
272
-
273
- function set(key: string, value: string | number): MethodReturn {
274
- return request(false, arguments[2], 'set', key, value);
275
- }
276
-
277
- function setex(
278
- key: string,
279
- seconds: number,
280
- value: string | number
281
- ): MethodReturn {
282
- return request(false, arguments[3], 'setex', key, seconds, value);
283
- }
284
-
285
- function setnx(key: string, value: string): MethodReturn {
286
- return request(false, arguments[2], 'setnx', key, value);
287
- }
288
-
289
- function setrange(
290
- key: string,
291
- offset: number | string,
292
- value: string
293
- ): MethodReturn {
294
- return request(false, arguments[3], 'setrange', key, offset, value);
295
- }
296
-
297
- function strlen(key: string): MethodReturn {
298
- return request(arguments[1], arguments[2], 'strlen', key);
299
- }
300
-
301
- /**
302
- * BITMAPS
303
- */
304
-
305
- function bitcount(key: string, start?: number, end?: number): MethodReturn {
306
- if (start !== undefined && end !== undefined) {
307
- return request(arguments[3], arguments[4], 'bitcount', key, start, end);
308
- }
309
- return request(arguments[3], arguments[4], 'bitcount', key);
310
- }
311
-
312
- function bitop(
313
- operation: 'AND' | 'OR' | 'XOR' | 'NOT',
314
- destinationKey: string,
315
- sourceKeys: string[]
316
- ): MethodReturn {
317
- return request(
318
- false,
319
- arguments[3],
320
- 'bitop',
321
- operation,
322
- destinationKey,
323
- ...sourceKeys
324
- );
325
- }
326
-
327
- function bitpos(
328
- key: string,
329
- bit: Bit,
330
- start?: number,
331
- end?: number
332
- ): MethodReturn {
333
- if (start !== undefined && end !== undefined) {
334
- return request(
335
- arguments[4],
336
- arguments[5],
337
- 'bitpos',
338
- key,
339
- bit,
340
- start,
341
- end
342
- );
343
- } else if (start !== undefined) {
344
- return request(arguments[4], arguments[5], 'bitpos', key, bit, start);
345
- }
346
- return request(arguments[4], arguments[5], 'bitpos', key, bit);
347
- }
348
-
349
- function getbit(key: string, offset: number): MethodReturn {
350
- return request(arguments[2], arguments[3], 'getbit', key, offset);
351
- }
352
-
353
- function setbit(key: string, offset: number, value: Bit): MethodReturn {
354
- return request(false, arguments[3], 'setbit', key, offset, value);
355
- }
356
-
357
- /**
358
- * CONNECTION
359
- */
360
-
361
- function echo(value: string): MethodReturn {
362
- return request(arguments[1], arguments[2], 'echo', value);
363
- }
364
-
365
- function ping(value?: string): MethodReturn {
366
- if (value) {
367
- return request(arguments[1], arguments[2], 'ping', value);
368
- }
369
- return request(arguments[1], arguments[2], 'ping');
370
- }
371
-
372
- /**
373
- * HASHES
374
- */
375
-
376
- function hdel(key: string, fields: string[]): MethodReturn {
377
- return request(false, arguments[2], 'hdel', key, ...fields);
378
- }
379
-
380
- function hexists(key: string, field: string): MethodReturn {
381
- return request(arguments[2], arguments[3], 'hexists', key, field);
382
- }
383
-
384
- function hget(key: string, field: string): MethodReturn {
385
- return request(arguments[2], arguments[3], 'hget', key, field);
386
- }
387
-
388
- function hgetall(key: string): MethodReturn {
389
- return request(arguments[1], arguments[2], 'hgetall', key);
390
- }
391
-
392
- function hincrby(
393
- key: string,
394
- field: string,
395
- increment: number | string
396
- ): MethodReturn {
397
- return request(false, arguments[3], 'hincrby', key, field, increment);
398
- }
399
-
400
- function hincrbyfloat(
401
- key: string,
402
- field: string,
403
- increment: number | string
404
- ): MethodReturn {
405
- return request(false, arguments[3], 'hincrbyfloat', key, field, increment);
406
- }
407
-
408
- function hkeys(key: string): MethodReturn {
409
- return request(arguments[1], arguments[2], 'hkeys', key);
410
- }
411
-
412
- function hlen(key: string): MethodReturn {
413
- return request(arguments[1], arguments[2], 'hlen', key);
414
- }
415
-
416
- function hmget(key: string, fields: string[]): MethodReturn {
417
- return request(arguments[2], arguments[3], 'hmget', key, ...fields);
418
- }
419
-
420
- function hmset(key: string, values: string[]): MethodReturn {
421
- return request(false, arguments[2], 'hmset', key, ...values);
422
- }
423
-
424
- function hscan(
425
- key: string,
426
- cursor: number,
427
- options?: { match?: number | string; count?: number | string }
428
- ): MethodReturn {
429
- if (options?.match && options?.count) {
430
- return request(
431
- false,
432
- arguments[3],
433
- 'hscan',
434
- key,
435
- cursor,
436
- 'match',
437
- options.match,
438
- 'count',
439
- options.count
440
- );
441
- } else if (options?.match) {
442
- return request(
443
- false,
444
- arguments[3],
445
- 'hscan',
446
- key,
447
- cursor,
448
- 'match',
449
- options.match
450
- );
451
- } else if (options?.count) {
452
- return request(
453
- false,
454
- arguments[3],
455
- 'hscan',
456
- key,
457
- cursor,
458
- 'count',
459
- options.count
460
- );
461
- }
462
- return request(false, arguments[3], 'hscan', key, cursor);
463
- }
464
-
465
- function hset(key: string, values: string[]): MethodReturn {
466
- return request(false, arguments[2], 'hset', key, ...values);
467
- }
468
-
469
- function hsetnx(key: string, field: string, value: string): MethodReturn {
470
- return request(false, arguments[3], 'hsetnx', key, field, value);
471
- }
472
-
473
- function hvals(key: string): MethodReturn {
474
- return request(arguments[1], arguments[2], 'hvals', key);
475
- }
476
-
477
- /**
478
- * KEYS
479
- */
480
-
481
- function del(keys: string[]): MethodReturn {
482
- return request(false, arguments[1], 'del', ...keys);
483
- }
484
-
485
- function exists(keys: string[]): MethodReturn {
486
- return request(arguments[1], arguments[2], 'exists', ...keys);
487
- }
488
-
489
- function expire(key: string, seconds: number): MethodReturn {
490
- return request(false, arguments[2], 'expire', key, seconds);
491
- }
492
-
493
- function expireat(key: string, timestamp: number | string): MethodReturn {
494
- return request(false, arguments[2], 'expireat', key, timestamp);
495
- }
496
-
497
- function keys(pattern: string): MethodReturn {
498
- return request(arguments[1], arguments[2], 'keys', pattern);
499
- }
500
-
501
- function persist(key: string): MethodReturn {
502
- return request(false, arguments[1], 'persist', key);
503
- }
504
-
505
- function pexpire(key: string, miliseconds: number): MethodReturn {
506
- return request(false, arguments[2], 'pexpire', key, miliseconds);
507
- }
508
-
509
- function pexpireat(key: string, miliseconds: number): MethodReturn {
510
- return request(false, arguments[2], 'pexpireat', key, miliseconds);
511
- }
512
-
513
- function pttl(key: string): MethodReturn {
514
- return request(arguments[1], arguments[2], 'pttl', key);
515
- }
516
-
517
- function randomkey(): MethodReturn {
518
- return request(false, arguments[0], 'randomkey');
519
- }
520
-
521
- function rename(key: string, newKey: string): MethodReturn {
522
- return request(false, arguments[2], 'rename', key, newKey);
523
- }
524
-
525
- function renamenx(key: string, newKey: string): MethodReturn {
526
- return request(false, arguments[2], 'renamenx', key, newKey);
527
- }
528
-
529
- function scan(
530
- cursor: number,
531
- opitons?: { match?: number | string; count?: number | string }
532
- ): MethodReturn {
533
- if (opitons?.match && opitons?.count) {
534
- return request(
535
- false,
536
- arguments[2],
537
- 'scan',
538
- cursor,
539
- 'match',
540
- opitons.match,
541
- 'count',
542
- opitons.count
543
- );
544
- } else if (opitons?.match) {
545
- return request(
546
- false,
547
- arguments[2],
548
- 'scan',
549
- cursor,
550
- 'match',
551
- opitons.match
552
- );
553
- } else if (opitons?.count) {
554
- return request(
555
- false,
556
- arguments[2],
557
- 'scan',
558
- cursor,
559
- 'count',
560
- opitons.count
561
- );
562
- }
563
- return request(false, arguments[2], 'scan', cursor);
564
- }
565
-
566
- function touch(keys: string[]): MethodReturn {
567
- return request(false, arguments[1], 'touch', ...keys);
568
- }
569
-
570
- function ttl(key: string): MethodReturn {
571
- return request(arguments[1], arguments[2], 'ttl', key);
572
- }
573
-
574
- function type(key: string): MethodReturn {
575
- return request(arguments[1], arguments[2], 'type', key);
576
- }
577
-
578
- function unlink(keys: string[]): MethodReturn {
579
- return request(false, arguments[1], 'unlink', ...keys);
580
- }
581
-
582
- /**
583
- * LISTS
584
- */
585
-
586
- function lindex(key: string, index: number): MethodReturn {
587
- return request(arguments[2], arguments[3], 'lindex', key, index);
588
- }
589
-
590
- function linsert(
591
- key: string,
592
- option: 'BEFORE' | 'AFTER',
593
- pivot: string,
594
- element: string
595
- ): MethodReturn {
596
- return request(false, arguments[4], 'linsert', key, option, pivot, element);
597
- }
598
-
599
- function llen(key: string): MethodReturn {
600
- return request(arguments[1], arguments[2], 'llen', key);
601
- }
602
-
603
- function lpop(key: string): MethodReturn {
604
- return request(false, arguments[1], 'lpop', key);
605
- }
606
-
607
- function lpush(key: string, elements: string[]): MethodReturn {
608
- return request(false, arguments[2], 'lpush', key, ...elements);
609
- }
610
-
611
- function lpushx(key: string, elements: string[]): MethodReturn {
612
- return request(false, arguments[2], 'lpushx', key, ...elements);
613
- }
614
-
615
- function lrange(key: string, start: number, stop: number): MethodReturn {
616
- return request(arguments[3], arguments[4], 'lrange', key, start, stop);
617
- }
618
-
619
- function lrem(key: string, count: number, element: string): MethodReturn {
620
- return request(false, arguments[3], 'lrem', key, count, element);
621
- }
622
-
623
- function lset(key: string, index: number, element: string): MethodReturn {
624
- return request(false, arguments[3], 'lset', key, index, element);
625
- }
626
-
627
- function ltrim(key: string, start: number, stop: number): MethodReturn {
628
- return request(false, arguments[3], 'ltrim', key, start, stop);
629
- }
630
-
631
- function rpop(key: string): MethodReturn {
632
- return request(false, arguments[1], 'rpop', key);
633
- }
634
-
635
- function rpoplpush(source: string, destination: string): MethodReturn {
636
- return request(false, arguments[2], 'rpoplpush', source, destination);
637
- }
638
-
639
- function rpush(key: string, elements: string[]): MethodReturn {
640
- return request(false, arguments[2], 'rpush', key, ...elements);
641
- }
642
-
643
- function rpushx(key: string, elements: string[]): MethodReturn {
644
- return request(false, arguments[2], 'rpushx', key, ...elements);
645
- }
646
-
647
- /**
648
- * SERVER
649
- */
650
-
651
- function dbsize(): MethodReturn {
652
- return request(arguments[0], arguments[1], 'dbsize');
653
- }
654
-
655
- function flushall(mode?: 'ASYNC'): MethodReturn {
656
- if (mode) {
657
- return request(false, arguments[1], 'flushall', mode);
658
- }
659
- return request(false, arguments[1], 'flushall');
660
- }
661
-
662
- function flushdb(mode?: 'ASYNC'): MethodReturn {
663
- if (mode) {
664
- return request(false, arguments[1], 'flushdb', mode);
665
- }
666
- return request(false, arguments[1], 'flushdb');
667
- }
668
-
669
- function info(): MethodReturn {
670
- return request(arguments[0], arguments[1], 'info');
671
- }
672
-
673
- function time(): MethodReturn {
674
- return request(false, arguments[0], 'time');
675
- }
676
-
677
- /**
678
- * SET
679
- */
680
-
681
- function sadd(key: string, members: string[]): MethodReturn {
682
- return request(false, arguments[2], 'sadd', key, ...members);
683
- }
684
-
685
- function scard(key: string): MethodReturn {
686
- return request(false, arguments[1], 'scard', key);
687
- }
688
-
689
- function sdiff(keys: string[]): MethodReturn {
690
- return request(arguments[1], arguments[2], 'sdiff', ...keys);
691
- }
692
-
693
- function sdiffstore(destination: string, keys: string[]): MethodReturn {
694
- return request(false, arguments[2], 'sdiffstore', destination, ...keys);
695
- }
696
-
697
- function sinter(keys: string[]): MethodReturn {
698
- return request(arguments[1], arguments[2], 'sinter', ...keys);
699
- }
700
-
701
- function sinterstore(destination: string, keys: string[]): MethodReturn {
702
- return request(false, arguments[2], 'sinterstore', destination, ...keys);
703
- }
704
-
705
- function sismember(key: string, member: string): MethodReturn {
706
- return request(arguments[2], arguments[3], 'sismember', key, member);
707
- }
708
-
709
- function smembers(key: string): MethodReturn {
710
- return request(arguments[1], arguments[2], 'smembers', key);
711
- }
712
-
713
- function smove(
714
- source: string,
715
- destination: string,
716
- member: string
717
- ): MethodReturn {
718
- return request(false, arguments[3], 'smove', source, destination, member);
719
- }
720
-
721
- function spop(key: string, count?: number): MethodReturn {
722
- if (count) {
723
- return request(false, arguments[2], 'spop', key, count);
724
- }
725
- return request(false, arguments[2], 'spop', key);
726
- }
727
-
728
- function srandmember(key: string, count?: number): MethodReturn {
729
- if (count) {
730
- return request(arguments[2], arguments[3], 'srandmember', key, count);
731
- }
732
- return request(arguments[2], arguments[3], 'srandmember', key);
733
- }
734
-
735
- function srem(key: string, members: string[]): MethodReturn {
736
- return request(false, arguments[2], 'srem', key, ...members);
737
- }
738
-
739
- function sunion(keys: string[]): MethodReturn {
740
- return request(arguments[1], arguments[2], 'sunion', ...keys);
741
- }
742
-
743
- function sunionstore(destination: string, keys: string[]): MethodReturn {
744
- return request(false, arguments[2], 'sunionstore', destination, ...keys);
745
- }
746
-
747
- /**
748
- * SORTED SETS
749
- */
750
-
751
- function zadd(
752
- key: string,
753
- values: ZSetNumber[],
754
- options?: ({ xx?: boolean } | { nx?: boolean }) & {
755
- ch?: boolean;
756
- incr: boolean;
757
- }
758
- ): MethodReturn {
759
- if (options) {
760
- const allOptions = Object.entries(options)
761
- .filter((e) => ['string', 'number', 'boolean'].includes(typeof e[1]))
762
- .map((e) => e[0].toUpperCase());
763
-
764
- return request(
765
- false,
766
- arguments[3],
767
- 'zadd',
768
- key,
769
- ...allOptions,
770
- ...values
771
- );
772
- }
773
- return request(arguments[3], arguments[4], 'zadd', key, ...values);
774
- }
775
-
776
- function zcard(key: string): MethodReturn {
777
- return request(arguments[1], arguments[2], 'zcard', key);
778
- }
779
-
780
- function zcount(key: string, min: ZSetNumber, max: ZSetNumber): MethodReturn {
781
- return request(arguments[3], arguments[4], 'zcount', key, min, max);
782
- }
783
-
784
- function zincrby(
785
- key: string,
786
- increment: number | string,
787
- member: string
788
- ): MethodReturn {
789
- return request(false, arguments[3], 'zincrby', key, increment, member);
790
- }
791
-
792
- function zinterstore(
793
- destination: string,
794
- keys: string[],
795
- options?: { weights?: number[]; aggregate?: 'MIN' | 'MAX' | 'SUM' }
796
- ): MethodReturn {
797
- if (options) {
798
- if (options.weights && options.aggregate) {
799
- return request(
800
- false,
801
- arguments[3],
802
- 'zinterstore',
803
- destination,
804
- keys.length,
805
- ...keys,
806
- 'weights',
807
- ...options.weights,
808
- 'aggregate',
809
- options.aggregate
810
- );
811
- } else if (options.weights) {
812
- return request(
813
- false,
814
- arguments[3],
815
- 'zinterstore',
816
- destination,
817
- keys.length,
818
- ...keys,
819
- 'weights',
820
- ...options.weights
821
- );
822
- } else if (options.aggregate) {
823
- return request(
824
- false,
825
- arguments[3],
826
- 'zinterstore',
827
- destination,
828
- keys.length,
829
- ...keys,
830
- 'aggregate',
831
- options.aggregate
832
- );
833
- }
834
- }
835
- return request(
836
- false,
837
- arguments[3],
838
- 'zinterstore',
839
- destination,
840
- keys.length,
841
- ...keys
842
- );
843
- }
844
-
845
- function zlexcount(
846
- key: string,
847
- min: ZSetNumber,
848
- max: ZSetNumber
849
- ): MethodReturn {
850
- return request(arguments[3], arguments[4], 'zlexcount', key, min, max);
851
- }
852
-
853
- function zpopmax(key: string, count?: number): MethodReturn {
854
- if (count) {
855
- return request(false, arguments[2], 'zpopmax', key, count);
856
- }
857
- return request(false, arguments[2], 'zpopmax', key);
858
- }
859
-
860
- function zpopmin(key: string, count?: number): MethodReturn {
861
- if (count) {
862
- return request(false, arguments[2], 'zpopmin', key, count);
863
- }
864
- return request(false, arguments[2], 'zpopmin', key);
865
- }
866
-
867
- function zrange(
868
- key: string,
869
- min: ZSetNumber,
870
- max: ZSetNumber,
871
- options?: { withScores: boolean }
872
- ): MethodReturn {
873
- if (options?.withScores) {
874
- return request(
875
- arguments[4],
876
- arguments[5],
877
- 'zrange',
878
- key,
879
- min,
880
- max,
881
- 'WITHSCORES'
882
- );
883
- }
884
- return request(arguments[4], arguments[5], 'zrange', key, min, max);
885
- }
886
-
887
- function zrangebylex(
888
- key: string,
889
- min: ZSetNumber,
890
- max: ZSetNumber,
891
- offset?: number,
892
- count?: number
893
- ): MethodReturn {
894
- if (offset && count) {
895
- return request(
896
- arguments[5],
897
- arguments[6],
898
- 'zrangebylex',
899
- key,
900
- min,
901
- max,
902
- 'LIMIT',
903
- offset,
904
- count
905
- );
906
- }
907
- return request(arguments[5], arguments[6], 'zrangebylex', key, min, max);
908
- }
909
-
910
- function zrangebyscore(
911
- key: string,
912
- min: ZSetNumber,
913
- max: ZSetNumber,
914
- options?: {
915
- withScores?: boolean;
916
- limit?: { offset: number; count: number };
917
- }
918
- ): MethodReturn {
919
- if (options?.withScores && options?.limit) {
920
- return request(
921
- arguments[4],
922
- arguments[5],
923
- 'zrangebyscore',
924
- key,
925
- min,
926
- max,
927
- 'WITHSCORES',
928
- 'LIMIT',
929
- options.limit.offset,
930
- options.limit.count
931
- );
932
- } else if (options?.withScores) {
933
- return request(
934
- arguments[4],
935
- arguments[5],
936
- 'zrangebyscore',
937
- key,
938
- min,
939
- max,
940
- 'WITHSCORES'
941
- );
942
- } else if (options?.limit) {
943
- return request(
944
- arguments[4],
945
- arguments[5],
946
- 'zrangebyscore',
947
- key,
948
- min,
949
- max,
950
- 'LIMIT',
951
- options.limit.offset,
952
- options.limit.count
953
- );
954
- }
955
- return request(arguments[4], arguments[5], 'zrangebyscore', key, min, max);
956
- }
957
-
958
- function zrank(key: string, member: string): MethodReturn {
959
- return request(arguments[2], arguments[3], 'zrank', key, member);
960
- }
961
-
962
- function zrem(key: string, members: string[]): MethodReturn {
963
- return request(false, arguments[2], 'zrem', key, ...members);
964
- }
965
-
966
- function zremrangebylex(
967
- key: string,
968
- min: ZSetNumber,
969
- max: ZSetNumber
970
- ): MethodReturn {
971
- return request(false, arguments[3], 'zremrangebylex', key, min, max);
972
- }
973
-
974
- function zremrangebyrank(
975
- key: string,
976
- start: number,
977
- stop: number
978
- ): MethodReturn {
979
- return request(false, arguments[3], 'zremrangebyrank', key, start, stop);
980
- }
981
-
982
- function zremrangebyscore(
983
- key: string,
984
- min: ZSetNumber,
985
- max: ZSetNumber
986
- ): MethodReturn {
987
- return request(false, arguments[3], 'zremrangebyscore', key, min, max);
988
- }
989
-
990
- function zrevrange(
991
- key: string,
992
- start: number,
993
- stop: number,
994
- options?: { withScores: boolean }
995
- ): MethodReturn {
996
- if (options?.withScores) {
997
- return request(
998
- arguments[4],
999
- arguments[5],
1000
- 'zrevrange',
1001
- key,
1002
- start,
1003
- stop,
1004
- 'WITHSCORES'
1005
- );
1006
- }
1007
- return request(arguments[4], arguments[5], 'zrevrange', key, start, stop);
1008
- }
1009
-
1010
- function zrevrangebylex(
1011
- key: string,
1012
- max: ZSetNumber,
1013
- min: ZSetNumber,
1014
- offset?: number,
1015
- count?: number
1016
- ): MethodReturn {
1017
- if (offset && count) {
1018
- return request(
1019
- arguments[5],
1020
- arguments[6],
1021
- 'zrevrangebylex',
1022
- key,
1023
- max,
1024
- min,
1025
- 'LIMIT',
1026
- offset,
1027
- count
1028
- );
1029
- }
1030
- return request(arguments[5], arguments[6], 'zrevrangebylex', key, max, min);
1031
- }
1032
-
1033
- function zrevrangebyscore(
1034
- key: string,
1035
- min: ZSetNumber,
1036
- max: ZSetNumber
1037
- ): MethodReturn {
1038
- return request(
1039
- arguments[3],
1040
- arguments[4],
1041
- 'zrevrangebyscore',
1042
- key,
1043
- min,
1044
- max
1045
- );
1046
- }
1047
-
1048
- function zrevrank(key: string, member: string): MethodReturn {
1049
- return request(arguments[2], arguments[3], 'zrevrank', key, member);
1050
- }
1051
-
1052
- function zscore(key: string, member: string): MethodReturn {
1053
- return request(arguments[2], arguments[3], 'zscore', key, member);
1054
- }
1055
-
1056
- function zunionstore(
1057
- destination: string,
1058
- keys: string[],
1059
- options?: { weights?: number[]; aggregate?: 'MIN' | 'MAX' | 'SUM' }
1060
- ): MethodReturn {
1061
- if (options) {
1062
- if (options.weights && options.aggregate) {
1063
- return request(
1064
- false,
1065
- arguments[3],
1066
- 'zunionstore',
1067
- destination,
1068
- keys.length,
1069
- ...keys,
1070
- 'weights',
1071
- ...options.weights,
1072
- 'aggregate',
1073
- options.aggregate
1074
- );
1075
- } else if (options.weights) {
1076
- return request(
1077
- false,
1078
- arguments[3],
1079
- 'zunionstore',
1080
- destination,
1081
- keys.length,
1082
- ...keys,
1083
- 'weights',
1084
- ...options.weights
1085
- );
1086
- } else if (options.aggregate) {
1087
- return request(
1088
- false,
1089
- arguments[3],
1090
- 'zunionstore',
1091
- destination,
1092
- keys.length,
1093
- ...keys,
1094
- 'aggregate',
1095
- options.aggregate
1096
- );
1097
- }
1098
- }
1099
- return request(
1100
- false,
1101
- arguments[3],
1102
- 'zunionstore',
1103
- destination,
1104
- keys.length,
1105
- ...keys
1106
- );
1107
- }
1108
-
1109
- return {
1110
- auth,
1111
- // STRING
1112
- append,
1113
- decr,
1114
- decrby,
1115
- get,
1116
- getrange,
1117
- getset,
1118
- incr,
1119
- incrby,
1120
- incrbyfloat,
1121
- mget,
1122
- mset,
1123
- msetnx,
1124
- psetex,
1125
- set,
1126
- setex,
1127
- setnx,
1128
- setrange,
1129
- strlen,
1130
- // BITMAPS
1131
- bitcount,
1132
- bitop,
1133
- bitpos,
1134
- getbit,
1135
- setbit,
1136
- // CONNECTION
1137
- echo,
1138
- ping,
1139
- // HASHES
1140
- hdel,
1141
- hexists,
1142
- hget,
1143
- hgetall,
1144
- hincrby,
1145
- hincrbyfloat,
1146
- hkeys,
1147
- hlen,
1148
- hmget,
1149
- hmset,
1150
- hscan,
1151
- hset,
1152
- hsetnx,
1153
- hvals,
1154
- // KEYS
1155
- del,
1156
- exists,
1157
- expire,
1158
- expireat,
1159
- keys,
1160
- persist,
1161
- pexpire,
1162
- pexpireat,
1163
- pttl,
1164
- randomkey,
1165
- rename,
1166
- renamenx,
1167
- scan,
1168
- touch,
1169
- ttl,
1170
- type,
1171
- unlink,
1172
- // LISTS
1173
- lindex,
1174
- linsert,
1175
- llen,
1176
- lpop,
1177
- lpush,
1178
- lpushx,
1179
- lrange,
1180
- lrem,
1181
- lset,
1182
- ltrim,
1183
- rpop,
1184
- rpoplpush,
1185
- rpush,
1186
- rpushx,
1187
- // SERVER
1188
- dbsize,
1189
- flushall,
1190
- flushdb,
1191
- info,
1192
- time,
1193
- // SET
1194
- sadd,
1195
- scard,
1196
- sdiff,
1197
- sdiffstore,
1198
- sinter,
1199
- sinterstore,
1200
- sismember,
1201
- smembers,
1202
- smove,
1203
- spop,
1204
- srandmember,
1205
- srem,
1206
- sunion,
1207
- sunionstore,
1208
- // SORTED SETS
1209
- zadd,
1210
- zcard,
1211
- zcount,
1212
- zincrby,
1213
- zinterstore,
1214
- zlexcount,
1215
- zpopmax,
1216
- zpopmin,
1217
- zrange,
1218
- zrangebylex,
1219
- zrangebyscore,
1220
- zrank,
1221
- zrem,
1222
- zremrangebylex,
1223
- zremrangebyrank,
1224
- zremrangebyscore,
1225
- zrevrange,
1226
- zrevrangebylex,
1227
- zrevrangebyscore,
1228
- zrevrank,
1229
- zscore,
1230
- zunionstore,
1231
- };
1232
- }