@motiadev/adapter-redis-cron 0.11.1-beta.156-879726 → 0.11.1-beta.156-491458

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/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { RedisCronAdapter } from './redis-cron-adapter';
2
- export type { RedisCronAdapterOptions } from './types';
2
+ export type { RedisCronAdapterConfig } from './types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA"}
@@ -1,6 +1,5 @@
1
1
  import type { CronAdapter, CronLock, CronLockInfo } from '@motiadev/core';
2
- import { type RedisClientOptions, type RedisClientType } from 'redis';
3
- import type { RedisCronAdapterOptions } from './types';
2
+ import type { RedisCronAdapterConfig } from './types';
4
3
  export declare class RedisCronAdapter implements CronAdapter {
5
4
  private client;
6
5
  private keyPrefix;
@@ -10,8 +9,7 @@ export declare class RedisCronAdapter implements CronAdapter {
10
9
  private instanceId;
11
10
  private enableHealthCheck;
12
11
  private connected;
13
- private isExternalClient;
14
- constructor(redisConnection: RedisClientType | RedisClientOptions, options?: RedisCronAdapterOptions);
12
+ constructor(config: RedisCronAdapterConfig);
15
13
  private connect;
16
14
  private ensureConnected;
17
15
  private makeKey;
@@ -1 +1 @@
1
- {"version":3,"file":"redis-cron-adapter.d.ts","sourceRoot":"","sources":["../src/redis-cron-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,EAAgB,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,OAAO,CAAA;AAEnF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAMtD,qBAAa,gBAAiB,YAAW,WAAW;IAClD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,gBAAgB,CAAS;gBAErB,eAAe,EAAE,eAAe,GAAG,kBAAkB,EAAE,OAAO,CAAC,EAAE,uBAAuB;YAuCtF,OAAO;YAWP,eAAe;IAM7B,OAAO,CAAC,OAAO;IAIT,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA8CpE,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B1C,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCxD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAc7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBzB,cAAc,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YA2BjC,QAAQ;CAevB"}
1
+ {"version":3,"file":"redis-cron-adapter.d.ts","sourceRoot":"","sources":["../src/redis-cron-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAErD,qBAAa,gBAAiB,YAAW,WAAW;IAClD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,SAAS,CAAQ;gBAEb,MAAM,EAAE,sBAAsB;YA+C5B,OAAO;YAWP,eAAe;IAM7B,OAAO,CAAC,OAAO;IAIT,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA8CpE,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B1C,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCxD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAc7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBzB,cAAc,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YA2BjC,QAAQ;CAevB"}
@@ -3,42 +3,46 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RedisCronAdapter = void 0;
4
4
  const redis_1 = require("redis");
5
5
  const uuid_1 = require("uuid");
6
- function isRedisClient(input) {
7
- return typeof input === 'object' && 'isOpen' in input && 'connect' in input;
8
- }
9
6
  class RedisCronAdapter {
10
- constructor(redisConnection, options) {
7
+ constructor(config) {
11
8
  this.connected = false;
12
- this.keyPrefix = options?.keyPrefix || 'motia:cron:lock:';
13
- this.lockTTL = options?.lockTTL || 300000;
14
- this.lockRetryDelay = options?.lockRetryDelay || 1000;
15
- this.lockRetryAttempts = options?.lockRetryAttempts || 0;
16
- this.instanceId = options?.instanceId || `motia-${(0, uuid_1.v4)()}`;
17
- this.enableHealthCheck = options?.enableHealthCheck ?? true;
18
- if (isRedisClient(redisConnection)) {
19
- this.client = redisConnection;
20
- this.isExternalClient = true;
21
- this.connected = this.client.isOpen;
22
- }
23
- else {
24
- const config = redisConnection;
25
- this.isExternalClient = false;
26
- this.client = (0, redis_1.createClient)(config);
27
- this.client.on('error', (err) => {
28
- console.error('[Redis Cron] Client error:', err);
29
- });
30
- this.client.on('connect', () => {
31
- this.connected = true;
32
- });
33
- this.client.on('disconnect', () => {
34
- console.warn('[Redis Cron] Disconnected');
35
- this.connected = false;
36
- });
37
- this.client.on('reconnecting', () => {
38
- console.log('[Redis Cron] Reconnecting...');
39
- });
40
- this.connect();
41
- }
9
+ this.keyPrefix = config.keyPrefix || 'motia:cron:lock:';
10
+ this.lockTTL = config.lockTTL || 300000;
11
+ this.lockRetryDelay = config.lockRetryDelay || 1000;
12
+ this.lockRetryAttempts = config.lockRetryAttempts || 0;
13
+ this.instanceId = config.instanceId || `motia-${(0, uuid_1.v4)()}`;
14
+ this.enableHealthCheck = config.enableHealthCheck ?? true;
15
+ this.client = (0, redis_1.createClient)({
16
+ socket: {
17
+ host: config.host || 'localhost',
18
+ port: config.port || 6379,
19
+ reconnectStrategy: config.socket?.reconnectStrategy ||
20
+ ((retries) => {
21
+ if (retries > 10) {
22
+ return new Error('Redis connection retry limit exceeded');
23
+ }
24
+ return Math.min(retries * 100, 3000);
25
+ }),
26
+ connectTimeout: config.socket?.connectTimeout || 10000,
27
+ },
28
+ password: config.password,
29
+ username: config.username,
30
+ database: config.database || 0,
31
+ });
32
+ this.client.on('error', (err) => {
33
+ console.error('[Redis Cron] Client error:', err);
34
+ });
35
+ this.client.on('connect', () => {
36
+ this.connected = true;
37
+ });
38
+ this.client.on('disconnect', () => {
39
+ console.warn('[Redis Cron] Disconnected');
40
+ this.connected = false;
41
+ });
42
+ this.client.on('reconnecting', () => {
43
+ console.log('[Redis Cron] Reconnecting...');
44
+ });
45
+ this.connect();
42
46
  }
43
47
  async connect() {
44
48
  if (!this.connected && !this.client.isOpen) {
@@ -165,7 +169,7 @@ class RedisCronAdapter {
165
169
  const result = await this.client.ping();
166
170
  return result === 'PONG';
167
171
  }
168
- catch {
172
+ catch (error) {
169
173
  return false;
170
174
  }
171
175
  }
@@ -187,7 +191,7 @@ class RedisCronAdapter {
187
191
  }
188
192
  }
189
193
  }
190
- if (!this.isExternalClient && this.client.isOpen) {
194
+ if (this.client.isOpen) {
191
195
  await this.client.quit();
192
196
  }
193
197
  }
@@ -217,15 +221,15 @@ class RedisCronAdapter {
217
221
  }
218
222
  async scanKeys(pattern) {
219
223
  const keys = [];
220
- let cursor = '0';
224
+ let cursor = 0;
221
225
  do {
222
- const result = await this.client.scan(cursor.toString(), {
226
+ const result = await this.client.scan(cursor, {
223
227
  MATCH: pattern,
224
228
  COUNT: 100,
225
229
  });
226
230
  cursor = result.cursor;
227
231
  keys.push(...result.keys);
228
- } while (String(cursor) !== '0');
232
+ } while (cursor !== 0);
229
233
  return keys;
230
234
  }
231
235
  }
package/dist/types.d.ts CHANGED
@@ -1,9 +1,18 @@
1
- export interface RedisCronAdapterOptions {
1
+ export interface RedisCronAdapterConfig {
2
+ host?: string;
3
+ port?: number;
4
+ password?: string;
5
+ username?: string;
6
+ database?: number;
2
7
  keyPrefix?: string;
3
8
  lockTTL?: number;
4
9
  lockRetryDelay?: number;
5
10
  lockRetryAttempts?: number;
6
11
  instanceId?: string;
7
12
  enableHealthCheck?: boolean;
13
+ socket?: {
14
+ reconnectStrategy?: (retries: number) => number | Error;
15
+ connectTimeout?: number;
16
+ };
8
17
  }
9
18
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,MAAM,CAAC,EAAE;QACP,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,KAAK,CAAA;QACvD,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;CACF"}
package/package.json CHANGED
@@ -3,11 +3,11 @@
3
3
  "description": "Redis cron adapter for Motia framework, enabling distributed cron job coordination to prevent duplicate executions across multiple instances.",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
- "version": "0.11.1-beta.156-879726",
6
+ "version": "0.11.1-beta.156-491458",
7
7
  "dependencies": {
8
- "redis": "^5.9.0",
8
+ "redis": "^4.7.0",
9
9
  "uuid": "^11.1.0",
10
- "@motiadev/core": "0.11.1-beta.156-879726"
10
+ "@motiadev/core": "0.11.1-beta.156-491458"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@types/node": "^22.10.2",