@diia-inhouse/redis 2.30.21 → 3.1.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 (52) hide show
  1. package/dist/index.d.ts +10 -0
  2. package/dist/index.js +9 -20
  3. package/dist/interfaces/deps.d.ts +11 -0
  4. package/dist/interfaces/index.d.ts +4 -0
  5. package/dist/interfaces/index.js +3 -21
  6. package/dist/interfaces/mutex.d.ts +16 -0
  7. package/dist/interfaces/mutex.js +2 -6
  8. package/dist/interfaces/pubsub.d.ts +19 -0
  9. package/dist/interfaces/redis.d.ts +28 -0
  10. package/dist/interfaces/redis.js +12 -13
  11. package/dist/interfaces/store.d.ts +32 -0
  12. package/dist/services/index.d.ts +4 -0
  13. package/dist/services/index.js +5 -21
  14. package/dist/services/mutex.d.ts +19 -0
  15. package/dist/services/mutex.js +52 -44
  16. package/dist/services/providers/pubsub.js +96 -89
  17. package/dist/services/pubsub.d.ts +19 -0
  18. package/dist/services/pubsub.js +38 -43
  19. package/dist/services/redis.d.ts +10 -0
  20. package/dist/services/redis.js +84 -65
  21. package/dist/services/store.d.ts +47 -0
  22. package/dist/services/store.js +170 -183
  23. package/package.json +41 -32
  24. package/dist/index.js.map +0 -1
  25. package/dist/interfaces/deps.js +0 -3
  26. package/dist/interfaces/deps.js.map +0 -1
  27. package/dist/interfaces/index.js.map +0 -1
  28. package/dist/interfaces/mutex.js.map +0 -1
  29. package/dist/interfaces/pubsub.js +0 -3
  30. package/dist/interfaces/pubsub.js.map +0 -1
  31. package/dist/interfaces/redis.js.map +0 -1
  32. package/dist/interfaces/store.js +0 -3
  33. package/dist/interfaces/store.js.map +0 -1
  34. package/dist/services/index.js.map +0 -1
  35. package/dist/services/mutex.js.map +0 -1
  36. package/dist/services/providers/pubsub.js.map +0 -1
  37. package/dist/services/pubsub.js.map +0 -1
  38. package/dist/services/redis.js.map +0 -1
  39. package/dist/services/store.js.map +0 -1
  40. package/dist/types/index.d.ts +0 -3
  41. package/dist/types/interfaces/deps.d.ts +0 -6
  42. package/dist/types/interfaces/index.d.ts +0 -4
  43. package/dist/types/interfaces/mutex.d.ts +0 -13
  44. package/dist/types/interfaces/pubsub.d.ts +0 -15
  45. package/dist/types/interfaces/redis.d.ts +0 -24
  46. package/dist/types/interfaces/store.d.ts +0 -30
  47. package/dist/types/services/index.d.ts +0 -4
  48. package/dist/types/services/mutex.d.ts +0 -13
  49. package/dist/types/services/providers/pubsub.d.ts +0 -17
  50. package/dist/types/services/pubsub.d.ts +0 -15
  51. package/dist/types/services/redis.d.ts +0 -6
  52. package/dist/types/services/store.d.ts +0 -43
@@ -1,24 +0,0 @@
1
- import { RedisOptions as IoRedisOptions } from 'ioredis';
2
- export declare enum RedisMode {
3
- ReadWrite = "READ-WRITE",
4
- ReadOnly = "READ-ONLY"
5
- }
6
- export interface RedisOptions extends IoRedisOptions {
7
- maxRetryAttempts?: number;
8
- initialRetryDelay?: number;
9
- maxRetryDelay?: number;
10
- redisMode?: RedisMode;
11
- }
12
- export declare enum RedisStatusValue {
13
- Ready = "ready"
14
- }
15
- export type RedisStatus = RedisStatusValue | string;
16
- export interface RedisConfig {
17
- readWrite: RedisOptions;
18
- readOnly: RedisOptions;
19
- enablePubsub?: boolean;
20
- }
21
- export interface StoreStatus {
22
- readWrite: RedisStatus;
23
- readOnly: RedisStatus;
24
- }
@@ -1,30 +0,0 @@
1
- import { StoreStatus } from './redis';
2
- export type TagsConfig = {
3
- [tag in string]?: number;
4
- };
5
- export interface TaggedStoreValue {
6
- data: string;
7
- timestamp: number;
8
- tags: string[];
9
- }
10
- export interface SetValueOptions {
11
- /**
12
- * Time to live in milliseconds.
13
- * If not set, the key will be permanent.
14
- */
15
- ttl?: number;
16
- /**
17
- * Tags associated with the value.
18
- */
19
- tags?: string[];
20
- }
21
- export interface ThrottleResult {
22
- limited: boolean;
23
- totalLimit: number;
24
- remaining: number;
25
- retryAfterSec: number;
26
- resetAfterSec: number;
27
- }
28
- export type StoreStatusResult = {
29
- store: StoreStatus;
30
- };
@@ -1,4 +0,0 @@
1
- export * from './pubsub';
2
- export * from './redis';
3
- export * from './store';
4
- export * from './mutex';
@@ -1,13 +0,0 @@
1
- import { RedlockMutex } from 'redis-semaphore';
2
- import { HealthCheckResult, Logger, OnDestroy, OnHealthCheck } from '@diia-inhouse/types';
3
- import { LockOptions, MutexStatusResult } from '../interfaces';
4
- import { RedisConfig } from '../interfaces/redis';
5
- export declare class RedlockService implements OnHealthCheck, OnDestroy {
6
- private readonly storeConfig;
7
- private readonly logger;
8
- private clientRW;
9
- constructor(storeConfig: RedisConfig, logger: Logger);
10
- onHealthCheck(): Promise<HealthCheckResult<MutexStatusResult>>;
11
- onDestroy(): Promise<void>;
12
- lock(resource: string, ttl?: number, { retryInterval }?: LockOptions): Promise<RedlockMutex>;
13
- }
@@ -1,17 +0,0 @@
1
- import { Logger } from '@diia-inhouse/types';
2
- import { MessageHandler, PubSubServiceProvider, PubSubStatus } from '../../interfaces/pubsub';
3
- import { RedisConfig } from '../../interfaces/redis';
4
- export declare class PubSubProvider implements PubSubServiceProvider {
5
- private readonly logger;
6
- private pub;
7
- private sub;
8
- private readonly oneTimeHandlerByChannel;
9
- private readonly handlerByChannel;
10
- constructor({ readWrite }: RedisConfig, logger: Logger);
11
- unsubscribe(channel: string): Promise<unknown>;
12
- publish(channel: string, data: unknown): Promise<number>;
13
- onChannelMessage(channel: string, handler: MessageHandler): Promise<void>;
14
- onceChannelMessage(channel: string, handler: MessageHandler): Promise<void>;
15
- quit(): Promise<void>;
16
- getStatus(): PubSubStatus;
17
- }
@@ -1,15 +0,0 @@
1
- import { HealthCheckResult, Logger, OnDestroy, OnHealthCheck } from '@diia-inhouse/types';
2
- import { MessageHandler, PubSubStatusResult } from '../interfaces/pubsub';
3
- import { RedisConfig } from '../interfaces/redis';
4
- export declare class PubSubService implements OnHealthCheck, OnDestroy {
5
- private readonly redisConfig;
6
- private readonly logger;
7
- private readonly provider;
8
- constructor(redisConfig: RedisConfig, logger: Logger);
9
- onHealthCheck(): Promise<HealthCheckResult<PubSubStatusResult>>;
10
- onDestroy(): Promise<void>;
11
- unsubscribe(channel: string): Promise<unknown>;
12
- publish(channel: string, data: unknown): Promise<number>;
13
- onceChannelMessage(channel: string, handler: MessageHandler): Promise<void>;
14
- onChannelMessage(channel: string, handler: MessageHandler): Promise<void>;
15
- }
@@ -1,6 +0,0 @@
1
- import Redis from 'ioredis';
2
- import { RedisOptions } from 'src/interfaces';
3
- import { Logger } from '@diia-inhouse/types';
4
- export declare const RedisService: {
5
- createClient(extendedRedisOptions: RedisOptions, logger: Logger): Redis;
6
- };
@@ -1,43 +0,0 @@
1
- import { HealthCheckResult, Logger, OnDestroy, OnHealthCheck } from '@diia-inhouse/types';
2
- import { RedisConfig } from '../interfaces/redis';
3
- import { SetValueOptions, StoreStatusResult, ThrottleResult } from '../interfaces/store';
4
- export declare class StoreService implements OnHealthCheck, OnDestroy {
5
- private readonly storeConfig;
6
- private readonly logger;
7
- private clientRW;
8
- private clientRO;
9
- private tagsKey;
10
- constructor(storeConfig: RedisConfig, logger: Logger);
11
- onHealthCheck(): Promise<HealthCheckResult<StoreStatusResult>>;
12
- onDestroy(): Promise<void>;
13
- get(key: string): Promise<string | null>;
14
- mget(...keys: string[]): Promise<(string | null)[]>;
15
- hget(key: string, field: string): Promise<string | null>;
16
- hlen(key: string): Promise<number | null>;
17
- hgetall(key: string): Promise<Record<string, string> | null>;
18
- hvals(key: string): Promise<string[]>;
19
- hscan(key: string, cursor: number | string, count: number): Promise<{
20
- cursor: string;
21
- elements: string[];
22
- }>;
23
- scan(matchPattern: string, cursor: number | string, count: number): Promise<{
24
- cursor: string;
25
- elements: string[];
26
- }>;
27
- lrange(key: string, start: number, stop: number): Promise<string[] | null>;
28
- getUsingTags(key: string): Promise<string | null>;
29
- set(key: string, value: string, options?: SetValueOptions): Promise<'OK' | null>;
30
- hset(key: string, value: Record<string, string>): Promise<number>;
31
- lpush(key: string, ...values: string[]): Promise<number>;
32
- incrby(key: string, value: number): Promise<number>;
33
- keys(pattern: string): Promise<string[]>;
34
- remember(key: string, closure: () => Promise<string | null>, options?: SetValueOptions): Promise<string | null>;
35
- remove(...keys: string[]): Promise<number>;
36
- hdel(key: string, ...fields: string[]): Promise<number>;
37
- expire(key: string, seconds: number): Promise<number>;
38
- bumpTags(tags: string[]): Promise<'OK' | null>;
39
- throttle(key: string, maxBurst: number, rate: number, periodSec: number, quantity?: number): Promise<ThrottleResult>;
40
- flushDb(): Promise<'OK'>;
41
- private validate;
42
- private wrapValueWithMetadata;
43
- }