@motiadev/adapter-redis-streams 0.8.2-beta.140-460356 → 0.8.2-beta.140-428722

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.
package/README.md CHANGED
@@ -14,11 +14,11 @@ Configure the Redis streams adapter in your `motia.config.ts`:
14
14
 
15
15
  ```typescript
16
16
  import { config } from '@motiadev/core'
17
- import { RedisStreamAdapter } from '@motiadev/adapter-redis-streams'
17
+ import { RedisStreamAdapterManager } from '@motiadev/adapter-redis-streams'
18
18
 
19
19
  export default config({
20
20
  adapters: {
21
- streams: (streamName) => new RedisStreamAdapter(streamName, {
21
+ streams: new RedisStreamAdapterManager({
22
22
  host: process.env.REDIS_HOST || 'localhost',
23
23
  port: parseInt(process.env.REDIS_PORT || '6379'),
24
24
  password: process.env.REDIS_PASSWORD,
@@ -28,6 +28,8 @@ export default config({
28
28
  })
29
29
  ```
30
30
 
31
+ The `RedisStreamAdapterManager` creates a **single shared Redis connection** that is reused across all streams, providing better resource efficiency than creating separate connections per stream.
32
+
31
33
  ## Configuration Options
32
34
 
33
35
  ### RedisStreamAdapterConfig
@@ -49,6 +51,7 @@ export default config({
49
51
  - **Real-time Updates**: Pub/sub for instant data synchronization
50
52
  - **Efficient Querying**: Support for filtering, sorting, and pagination
51
53
  - **Automatic Reconnection**: Handles connection failures gracefully
54
+ - **Shared Connections**: Manager pattern provides single Redis connection reused across all streams
52
55
  - **Connection Pooling**: Separate clients for pub/sub operations
53
56
  - **Type Safety**: Full TypeScript support with generics
54
57
 
@@ -68,7 +71,9 @@ motia:stream:events:users:active
68
71
  motia:stream:events:users:active:user-123
69
72
  ```
70
73
 
71
- ## Example
74
+ ## Advanced Example
75
+
76
+ For direct adapter usage (not recommended for configuration), you can still instantiate adapters directly:
72
77
 
73
78
  ```typescript
74
79
  import { RedisStreamAdapter } from '@motiadev/adapter-redis-streams'
@@ -90,6 +95,8 @@ const adapter = new RedisStreamAdapter('users', {
90
95
  })
91
96
  ```
92
97
 
98
+ **Note:** For configuration in `motia.config.ts`, use `RedisStreamAdapterManager` instead (see Usage section above) to benefit from connection sharing across all streams.
99
+
93
100
  ## Real-time Updates
94
101
 
95
102
  The adapter uses Redis pub/sub to notify all instances about stream changes:
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { RedisStreamAdapter } from './redis-stream-adapter';
2
+ export { RedisStreamAdapterManager } from './redis-stream-adapter-manager';
2
3
  export type { RedisStreamAdapterConfig } from './types';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RedisStreamAdapter = void 0;
3
+ exports.RedisStreamAdapterManager = exports.RedisStreamAdapter = void 0;
4
4
  var redis_stream_adapter_1 = require("./redis-stream-adapter");
5
5
  Object.defineProperty(exports, "RedisStreamAdapter", { enumerable: true, get: function () { return redis_stream_adapter_1.RedisStreamAdapter; } });
6
+ var redis_stream_adapter_manager_1 = require("./redis-stream-adapter-manager");
7
+ Object.defineProperty(exports, "RedisStreamAdapterManager", { enumerable: true, get: function () { return redis_stream_adapter_manager_1.RedisStreamAdapterManager; } });
@@ -0,0 +1,12 @@
1
+ import type { StreamAdapter, StreamAdapterManager } from '@motiadev/core';
2
+ import type { RedisStreamAdapterConfig } from './types';
3
+ export declare class RedisStreamAdapterManager implements StreamAdapterManager {
4
+ private config;
5
+ private client;
6
+ private connected;
7
+ constructor(config: RedisStreamAdapterConfig);
8
+ private connect;
9
+ createStream<TData>(streamName: string): StreamAdapter<TData>;
10
+ shutdown(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=redis-stream-adapter-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-stream-adapter-manager.d.ts","sourceRoot":"","sources":["../src/redis-stream-adapter-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAGzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEvD,qBAAa,yBAA0B,YAAW,oBAAoB;IAIxD,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAQ;gBAEL,MAAM,EAAE,wBAAwB;YAsCtC,OAAO;IAWrB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;IAIvD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RedisStreamAdapterManager = void 0;
4
+ const redis_1 = require("redis");
5
+ const redis_stream_adapter_1 = require("./redis-stream-adapter");
6
+ class RedisStreamAdapterManager {
7
+ constructor(config) {
8
+ this.config = config;
9
+ this.connected = false;
10
+ const clientConfig = {
11
+ socket: {
12
+ host: config.host || 'localhost',
13
+ port: config.port || 6379,
14
+ reconnectStrategy: config.socket?.reconnectStrategy ||
15
+ ((retries) => {
16
+ if (retries > 10) {
17
+ return new Error('Redis connection retry limit exceeded');
18
+ }
19
+ return Math.min(retries * 100, 3000);
20
+ }),
21
+ connectTimeout: config.socket?.connectTimeout || 10000,
22
+ },
23
+ password: config.password,
24
+ username: config.username,
25
+ database: config.database || 0,
26
+ };
27
+ this.client = (0, redis_1.createClient)(clientConfig);
28
+ this.client.on('error', (err) => {
29
+ console.error('[Redis Stream Manager] Client error:', err);
30
+ });
31
+ this.client.on('connect', () => {
32
+ this.connected = true;
33
+ });
34
+ this.client.on('disconnect', () => {
35
+ console.warn('[Redis Stream Manager] Disconnected');
36
+ this.connected = false;
37
+ });
38
+ this.connect();
39
+ }
40
+ async connect() {
41
+ if (!this.connected) {
42
+ try {
43
+ await this.client.connect();
44
+ }
45
+ catch (error) {
46
+ console.error('[Redis Stream Manager] Failed to connect:', error);
47
+ throw error;
48
+ }
49
+ }
50
+ }
51
+ createStream(streamName) {
52
+ return new redis_stream_adapter_1.RedisStreamAdapter(streamName, this.config, this.client);
53
+ }
54
+ async shutdown() {
55
+ if (this.client.isOpen) {
56
+ await this.client.quit();
57
+ }
58
+ }
59
+ }
60
+ exports.RedisStreamAdapterManager = RedisStreamAdapterManager;
@@ -1,17 +1,15 @@
1
1
  import type { BaseStreamItem, StateStreamEvent, StateStreamEventChannel } from '@motiadev/core';
2
2
  import { StreamAdapter, type StreamQueryFilter } from '@motiadev/core';
3
+ import { type RedisClientType } from 'redis';
3
4
  import type { RedisStreamAdapterConfig } from './types';
4
5
  export declare class RedisStreamAdapter<TData> extends StreamAdapter<TData> {
5
6
  private client;
6
- private pubClient;
7
7
  private subClient?;
8
8
  private keyPrefix;
9
- private connected;
9
+ private groupPrefix;
10
10
  private subscriptions;
11
- constructor(streamName: string, config: RedisStreamAdapterConfig);
12
- private connect;
13
- private ensureConnected;
14
- private makeKey;
11
+ constructor(streamName: string, config: RedisStreamAdapterConfig, sharedClient: RedisClientType);
12
+ private makeGroupKey;
15
13
  private makeChannelKey;
16
14
  get(groupId: string, id: string): Promise<BaseStreamItem<TData> | null>;
17
15
  set(groupId: string, id: string, data: TData): Promise<BaseStreamItem<TData>>;
@@ -22,7 +20,6 @@ export declare class RedisStreamAdapter<TData> extends StreamAdapter<TData> {
22
20
  unsubscribe(channel: StateStreamEventChannel): Promise<void>;
23
21
  clear(groupId: string): Promise<void>;
24
22
  query(groupId: string, filter: StreamQueryFilter<TData>): Promise<BaseStreamItem<TData>[]>;
25
- private scanKeys;
26
23
  cleanup(): Promise<void>;
27
24
  }
28
25
  //# sourceMappingURL=redis-stream-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-stream-adapter.d.ts","sourceRoot":"","sources":["../src/redis-stream-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEvD,qBAAa,kBAAkB,CAAC,KAAK,CAAE,SAAQ,aAAa,CAAC,KAAK,CAAC;IACjE,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAiF;gBAE1F,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB;YA8ClD,OAAO;YAWP,eAAe;IAM7B,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,cAAc;IAMhB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAOvE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAW7E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAW1E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IAW3D,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpF,SAAS,CAAC,CAAC,EACf,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5D,OAAO,CAAC,IAAI,CAAC;IAmCV,WAAW,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YA+BlF,QAAQ;IAgBhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAY/B"}
1
+ {"version":3,"file":"redis-stream-adapter.d.ts","sourceRoot":"","sources":["../src/redis-stream-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEvD,qBAAa,kBAAkB,CAAC,KAAK,CAAE,SAAQ,aAAa,CAAC,KAAK,CAAC;IACjE,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,aAAa,CAAiF;gBAE1F,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,YAAY,EAAE,eAAe;IAQ/F,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAMhB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAMvE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAgB7E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAa1E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IAO3D,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpF,SAAS,CAAC,CAAC,EACf,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5D,OAAO,CAAC,IAAI,CAAC;IAmCV,WAAW,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IA+B1F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -4,65 +4,15 @@ exports.RedisStreamAdapter = void 0;
4
4
  const core_1 = require("@motiadev/core");
5
5
  const redis_1 = require("redis");
6
6
  class RedisStreamAdapter extends core_1.StreamAdapter {
7
- constructor(streamName, config) {
7
+ constructor(streamName, config, sharedClient) {
8
8
  super(streamName);
9
- this.connected = false;
10
9
  this.subscriptions = new Map();
11
10
  this.keyPrefix = config.keyPrefix || 'motia:stream:';
12
- const clientConfig = {
13
- socket: {
14
- host: config.host || 'localhost',
15
- port: config.port || 6379,
16
- reconnectStrategy: config.socket?.reconnectStrategy ||
17
- ((retries) => {
18
- if (retries > 10) {
19
- return new Error('Redis connection retry limit exceeded');
20
- }
21
- return Math.min(retries * 100, 3000);
22
- }),
23
- connectTimeout: config.socket?.connectTimeout || 10000,
24
- },
25
- password: config.password,
26
- username: config.username,
27
- database: config.database || 0,
28
- };
29
- this.client = (0, redis_1.createClient)(clientConfig);
30
- this.pubClient = (0, redis_1.createClient)(clientConfig);
31
- this.client.on('error', (err) => {
32
- console.error('[Redis Stream] Client error:', err);
33
- });
34
- this.client.on('connect', () => {
35
- this.connected = true;
36
- });
37
- this.client.on('disconnect', () => {
38
- console.warn('[Redis Stream] Disconnected');
39
- this.connected = false;
40
- });
41
- this.pubClient.on('error', (err) => {
42
- console.error('[Redis Stream] Pub client error:', err);
43
- });
44
- this.connect();
11
+ this.groupPrefix = `${this.keyPrefix}${streamName}:group:`;
12
+ this.client = sharedClient;
45
13
  }
46
- async connect() {
47
- if (!this.connected) {
48
- try {
49
- await Promise.all([this.client.connect(), this.pubClient.connect()]);
50
- }
51
- catch (error) {
52
- console.error('[Redis Stream] Failed to connect:', error);
53
- throw error;
54
- }
55
- }
56
- }
57
- async ensureConnected() {
58
- if (!this.client.isOpen || !this.pubClient.isOpen) {
59
- await this.connect();
60
- }
61
- }
62
- makeKey(groupId, id) {
63
- return id
64
- ? `${this.keyPrefix}${this.streamName}:${groupId}:${id}`
65
- : `${this.keyPrefix}${this.streamName}:${groupId}`;
14
+ makeGroupKey(groupId) {
15
+ return `${this.groupPrefix}${groupId}`;
66
16
  }
67
17
  makeChannelKey(channel) {
68
18
  return channel.id
@@ -70,42 +20,39 @@ class RedisStreamAdapter extends core_1.StreamAdapter {
70
20
  : `motia:stream:events:${this.streamName}:${channel.groupId}`;
71
21
  }
72
22
  async get(groupId, id) {
73
- await this.ensureConnected();
74
- const key = this.makeKey(groupId, id);
75
- const value = await this.client.get(key);
23
+ const hashKey = this.makeGroupKey(groupId);
24
+ const value = await this.client.hGet(hashKey, id);
76
25
  return value ? JSON.parse(value) : null;
77
26
  }
78
27
  async set(groupId, id, data) {
79
- await this.ensureConnected();
80
- const key = this.makeKey(groupId, id);
28
+ const hashKey = this.makeGroupKey(groupId);
81
29
  const item = { ...data, id };
82
- await this.client.set(key, JSON.stringify(item));
83
- await this.send({ groupId, id }, { type: 'update', data: item });
30
+ const itemJson = JSON.stringify(item);
31
+ const existed = await this.client.hExists(hashKey, id);
32
+ const eventType = existed ? 'update' : 'create';
33
+ await Promise.all([
34
+ this.client.hSet(hashKey, id, itemJson),
35
+ this.send({ groupId, id }, { type: eventType, data: item }),
36
+ ]);
84
37
  return item;
85
38
  }
86
39
  async delete(groupId, id) {
87
- await this.ensureConnected();
88
- const item = await this.get(groupId, id);
89
- if (item) {
90
- const key = this.makeKey(groupId, id);
91
- await this.client.del(key);
92
- await this.send({ groupId, id }, { type: 'delete', data: item });
93
- }
40
+ const hashKey = this.makeGroupKey(groupId);
41
+ const value = await this.client.hGet(hashKey, id);
42
+ if (!value)
43
+ return null;
44
+ const item = JSON.parse(value);
45
+ await Promise.all([this.client.hDel(hashKey, id), this.send({ groupId, id }, { type: 'delete', data: item })]);
94
46
  return item;
95
47
  }
96
48
  async getGroup(groupId) {
97
- await this.ensureConnected();
98
- const pattern = `${this.makeKey(groupId)}:*`;
99
- const keys = await this.scanKeys(pattern);
100
- if (keys.length === 0)
101
- return [];
102
- const values = await this.client.mGet(keys);
103
- return values.filter((v) => v !== null).map((v) => JSON.parse(v));
49
+ const hashKey = this.makeGroupKey(groupId);
50
+ const values = await this.client.hGetAll(hashKey);
51
+ return Object.values(values).map((v) => JSON.parse(v));
104
52
  }
105
53
  async send(channel, event) {
106
- await this.ensureConnected();
107
54
  const channelKey = this.makeChannelKey(channel);
108
- await this.pubClient.publish(channelKey, JSON.stringify(event));
55
+ await this.client.publish(channelKey, JSON.stringify(event));
109
56
  }
110
57
  async subscribe(channel, handler) {
111
58
  const channelKey = this.makeChannelKey(channel);
@@ -150,12 +97,8 @@ class RedisStreamAdapter extends core_1.StreamAdapter {
150
97
  }
151
98
  }
152
99
  async clear(groupId) {
153
- await this.ensureConnected();
154
- const pattern = `${this.makeKey(groupId)}:*`;
155
- const keys = await this.scanKeys(pattern);
156
- if (keys.length > 0) {
157
- await this.client.del(keys);
158
- }
100
+ const hashKey = this.makeGroupKey(groupId);
101
+ await this.client.del(hashKey);
159
102
  }
160
103
  async query(groupId, filter) {
161
104
  let items = await this.getGroup(groupId);
@@ -182,29 +125,7 @@ class RedisStreamAdapter extends core_1.StreamAdapter {
182
125
  }
183
126
  return items;
184
127
  }
185
- async scanKeys(pattern) {
186
- const keys = [];
187
- let cursor = 0;
188
- do {
189
- const result = await this.client.scan(cursor, {
190
- MATCH: pattern,
191
- COUNT: 100,
192
- });
193
- cursor = result.cursor;
194
- keys.push(...result.keys);
195
- } while (cursor !== 0);
196
- return keys;
197
- }
198
128
  async cleanup() {
199
- if (this.subClient?.isOpen) {
200
- await this.subClient.quit();
201
- }
202
- if (this.pubClient.isOpen) {
203
- await this.pubClient.quit();
204
- }
205
- if (this.client.isOpen) {
206
- await this.client.quit();
207
- }
208
129
  this.subscriptions.clear();
209
130
  }
210
131
  }
package/package.json CHANGED
@@ -3,10 +3,10 @@
3
3
  "description": "Redis streams adapter for Motia framework, enabling distributed stream management with real-time updates.",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
- "version": "0.8.2-beta.140-460356",
6
+ "version": "0.8.2-beta.140-428722",
7
7
  "dependencies": {
8
8
  "redis": "^4.7.0",
9
- "@motiadev/core": "0.8.2-beta.140-460356"
9
+ "@motiadev/core": "0.8.2-beta.140-428722"
10
10
  },
11
11
  "devDependencies": {
12
12
  "@types/node": "^22.10.2",