@sprout-idws/sprout-redis 1.0.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.
- package/dist/cache/cache-store.interface.d.ts +14 -0
- package/dist/cache/cache-store.interface.d.ts.map +1 -0
- package/dist/cache/cache-store.interface.js +5 -0
- package/dist/cache/cache-store.interface.js.map +1 -0
- package/dist/cache/cache.constants.d.ts +4 -0
- package/dist/cache/cache.constants.d.ts.map +1 -0
- package/dist/cache/cache.constants.js +7 -0
- package/dist/cache/cache.constants.js.map +1 -0
- package/dist/cache/cache.manager.d.ts +17 -0
- package/dist/cache/cache.manager.d.ts.map +1 -0
- package/dist/cache/cache.manager.js +59 -0
- package/dist/cache/cache.manager.js.map +1 -0
- package/dist/cache/cache.module.d.ts +3 -0
- package/dist/cache/cache.module.d.ts.map +1 -0
- package/dist/cache/cache.module.js +46 -0
- package/dist/cache/cache.module.js.map +1 -0
- package/dist/cache/index.d.ts +6 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +17 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/stores/in-memory-cache.store.d.ts +15 -0
- package/dist/cache/stores/in-memory-cache.store.d.ts.map +1 -0
- package/dist/cache/stores/in-memory-cache.store.js +44 -0
- package/dist/cache/stores/in-memory-cache.store.js.map +1 -0
- package/dist/cache/stores/redis-cache.store.d.ts +12 -0
- package/dist/cache/stores/redis-cache.store.d.ts.map +1 -0
- package/dist/cache/stores/redis-cache.store.js +48 -0
- package/dist/cache/stores/redis-cache.store.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/lock/redis-lock.service.d.ts +15 -0
- package/dist/lock/redis-lock.service.d.ts.map +1 -0
- package/dist/lock/redis-lock.service.js +97 -0
- package/dist/lock/redis-lock.service.js.map +1 -0
- package/dist/redis-base.module.d.ts +9 -0
- package/dist/redis-base.module.d.ts.map +1 -0
- package/dist/redis-base.module.js +88 -0
- package/dist/redis-base.module.js.map +1 -0
- package/dist/redis-stream-consumer.module.d.ts +3 -0
- package/dist/redis-stream-consumer.module.d.ts.map +1 -0
- package/dist/redis-stream-consumer.module.js +36 -0
- package/dist/redis-stream-consumer.module.js.map +1 -0
- package/dist/stream/lua/ack-delete.lua +6 -0
- package/dist/stream/lua/delayed-retry.lua +11 -0
- package/dist/stream/lua/move-to-dlq.lua +27 -0
- package/dist/stream/lua/republish-delayed-messages.lua +30 -0
- package/dist/stream/lua/republish-inactive-consumer-messages.lua +52 -0
- package/dist/stream/lua-scripts.loader.d.ts +11 -0
- package/dist/stream/lua-scripts.loader.d.ts.map +1 -0
- package/dist/stream/lua-scripts.loader.js +39 -0
- package/dist/stream/lua-scripts.loader.js.map +1 -0
- package/dist/stream/periodic-executor.service.d.ts +30 -0
- package/dist/stream/periodic-executor.service.d.ts.map +1 -0
- package/dist/stream/periodic-executor.service.js +130 -0
- package/dist/stream/periodic-executor.service.js.map +1 -0
- package/dist/stream/redis-stream.service.d.ts +47 -0
- package/dist/stream/redis-stream.service.d.ts.map +1 -0
- package/dist/stream/redis-stream.service.js +200 -0
- package/dist/stream/redis-stream.service.js.map +1 -0
- package/dist/stream/stream-consumer-monitor.service.d.ts +19 -0
- package/dist/stream/stream-consumer-monitor.service.d.ts.map +1 -0
- package/dist/stream/stream-consumer-monitor.service.js +85 -0
- package/dist/stream/stream-consumer-monitor.service.js.map +1 -0
- package/dist/stream/stream-consumer.service.d.ts +25 -0
- package/dist/stream/stream-consumer.service.d.ts.map +1 -0
- package/dist/stream/stream-consumer.service.js +78 -0
- package/dist/stream/stream-consumer.service.js.map +1 -0
- package/dist/stream/stream-message-handler.service.d.ts +28 -0
- package/dist/stream/stream-message-handler.service.d.ts.map +1 -0
- package/dist/stream/stream-message-handler.service.js +145 -0
- package/dist/stream/stream-message-handler.service.js.map +1 -0
- package/dist/stream/stream-publisher.service.d.ts +9 -0
- package/dist/stream/stream-publisher.service.d.ts.map +1 -0
- package/dist/stream/stream-publisher.service.js +39 -0
- package/dist/stream/stream-publisher.service.js.map +1 -0
- package/dist/stream/stream-retry.service.d.ts +25 -0
- package/dist/stream/stream-retry.service.d.ts.map +1 -0
- package/dist/stream/stream-retry.service.js +74 -0
- package/dist/stream/stream-retry.service.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-publisher.service.d.ts","sourceRoot":"","sources":["../../src/stream/stream-publisher.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,qBACa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,cAAc;IAG3C,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWzE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.StreamPublisherService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const redis_stream_service_1 = require("./redis-stream.service");
|
|
15
|
+
const sprout_context_1 = require("@sprout-idws/sprout-context");
|
|
16
|
+
let StreamPublisherService = class StreamPublisherService {
|
|
17
|
+
constructor(redisStreamService, contextService) {
|
|
18
|
+
this.redisStreamService = redisStreamService;
|
|
19
|
+
this.contextService = contextService;
|
|
20
|
+
}
|
|
21
|
+
async publishToStream(streamName, data) {
|
|
22
|
+
return await this.redisStreamService.publishToStream(streamName, {
|
|
23
|
+
context: this.contextService.getCurrentEncodedContext(),
|
|
24
|
+
metadata: {
|
|
25
|
+
timestamp: Date.now(),
|
|
26
|
+
streamName,
|
|
27
|
+
retryCount: 0,
|
|
28
|
+
},
|
|
29
|
+
data,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.StreamPublisherService = StreamPublisherService;
|
|
34
|
+
exports.StreamPublisherService = StreamPublisherService = __decorate([
|
|
35
|
+
(0, common_1.Injectable)(),
|
|
36
|
+
__metadata("design:paramtypes", [redis_stream_service_1.RedisStreamService,
|
|
37
|
+
sprout_context_1.ContextService])
|
|
38
|
+
], StreamPublisherService);
|
|
39
|
+
//# sourceMappingURL=stream-publisher.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-publisher.service.js","sourceRoot":"","sources":["../../src/stream/stream-publisher.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,iEAA4D;AAC5D,gEAA6D;AAGtD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YACmB,kBAAsC,EACtC,cAA8B;QAD9B,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,mBAAc,GAAd,cAAc,CAAgB;IAC9C,CAAC;IAEJ,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,IAAY;QACpD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,UAAU,EAAE;YAC/D,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE;YACvD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,UAAU;gBACV,UAAU,EAAE,CAAC;aACd;YACD,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAG4B,yCAAkB;QACtB,+BAAc;GAHtC,sBAAsB,CAiBlC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { RedisStreamService, StreamMessage } from './redis-stream.service';
|
|
3
|
+
import { PeriodicExecutorService } from './periodic-executor.service';
|
|
4
|
+
export interface DelayedRetryInput {
|
|
5
|
+
message: StreamMessage;
|
|
6
|
+
streamName: string;
|
|
7
|
+
groupName: string;
|
|
8
|
+
retryDelay: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class StreamRetryService implements OnModuleInit {
|
|
11
|
+
private readonly redisStreamService;
|
|
12
|
+
private readonly periodicExecutorService;
|
|
13
|
+
private readonly logger;
|
|
14
|
+
private delayedQueuesKeys;
|
|
15
|
+
private executorInstance;
|
|
16
|
+
private readonly POLL_INTERVAL;
|
|
17
|
+
constructor(redisStreamService: RedisStreamService, periodicExecutorService: PeriodicExecutorService);
|
|
18
|
+
onModuleInit(): Promise<void>;
|
|
19
|
+
addDelayedQueueKey(streamName: string): Promise<void>;
|
|
20
|
+
start(): Promise<void>;
|
|
21
|
+
delayedRetry(request: DelayedRetryInput): Promise<void>;
|
|
22
|
+
private processDelayedMessages;
|
|
23
|
+
private getDelayedQueueKey;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=stream-retry.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-retry.service.d.ts","sourceRoot":"","sources":["../../src/stream/stream-retry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAA4B,MAAM,6BAA6B,CAAC;AAEhG,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBACa,kBAAmB,YAAW,YAAY;IASnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAT1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,gBAAgB,CAAyC;IAEjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;gBAGnB,kBAAkB,EAAE,kBAAkB,EACtC,uBAAuB,EAAE,uBAAuB;IAG7D,YAAY;IAKZ,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAetB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsB/C,sBAAsB;IAapC,OAAO,CAAC,kBAAkB;CAG3B"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var StreamRetryService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.StreamRetryService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const redis_stream_service_1 = require("./redis-stream.service");
|
|
16
|
+
const periodic_executor_service_1 = require("./periodic-executor.service");
|
|
17
|
+
let StreamRetryService = StreamRetryService_1 = class StreamRetryService {
|
|
18
|
+
constructor(redisStreamService, periodicExecutorService) {
|
|
19
|
+
this.redisStreamService = redisStreamService;
|
|
20
|
+
this.periodicExecutorService = periodicExecutorService;
|
|
21
|
+
this.logger = new common_1.Logger(StreamRetryService_1.name);
|
|
22
|
+
this.delayedQueuesKeys = [];
|
|
23
|
+
this.executorInstance = null;
|
|
24
|
+
this.POLL_INTERVAL = 3000;
|
|
25
|
+
}
|
|
26
|
+
async onModuleInit() {
|
|
27
|
+
await this.start();
|
|
28
|
+
this.logger.log('StreamRetryService started');
|
|
29
|
+
}
|
|
30
|
+
async addDelayedQueueKey(streamName) {
|
|
31
|
+
const delayedQueueKey = this.getDelayedQueueKey(streamName);
|
|
32
|
+
if (this.delayedQueuesKeys.includes(delayedQueueKey)) {
|
|
33
|
+
this.logger.warn(`Delayed queue key ${delayedQueueKey} already exists`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.logger.debug(`Adding delayed queue key ${delayedQueueKey}`);
|
|
37
|
+
this.delayedQueuesKeys = [...this.delayedQueuesKeys, delayedQueueKey];
|
|
38
|
+
}
|
|
39
|
+
async start() {
|
|
40
|
+
if (this.executorInstance?.isActive) {
|
|
41
|
+
this.logger.warn('Retry service is already running');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.executorInstance = await this.periodicExecutorService.startExecutor({
|
|
45
|
+
intervalMs: this.POLL_INTERVAL,
|
|
46
|
+
name: 'stream-retry',
|
|
47
|
+
}, () => this.processDelayedMessages());
|
|
48
|
+
}
|
|
49
|
+
async delayedRetry(request) {
|
|
50
|
+
const { streamName, groupName, message, retryDelay } = request;
|
|
51
|
+
const scheduledAt = Date.now() + retryDelay;
|
|
52
|
+
const score = Math.floor(scheduledAt / 1000);
|
|
53
|
+
const member = JSON.stringify(message);
|
|
54
|
+
await this.redisStreamService.delayedRetry(streamName, groupName, message.id, this.getDelayedQueueKey(streamName), score, member);
|
|
55
|
+
this.logger.log(`Scheduled message ${message.id} in stream ${streamName} to be retried at ${scheduledAt}`);
|
|
56
|
+
}
|
|
57
|
+
async processDelayedMessages() {
|
|
58
|
+
if (!this.executorInstance?.isActive) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
62
|
+
await Promise.all(this.delayedQueuesKeys.map((queueKey) => this.redisStreamService.republishDelayedMessages(queueKey, currentTime)));
|
|
63
|
+
}
|
|
64
|
+
getDelayedQueueKey(streamName) {
|
|
65
|
+
return `${streamName}:delayed`;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
exports.StreamRetryService = StreamRetryService;
|
|
69
|
+
exports.StreamRetryService = StreamRetryService = StreamRetryService_1 = __decorate([
|
|
70
|
+
(0, common_1.Injectable)(),
|
|
71
|
+
__metadata("design:paramtypes", [redis_stream_service_1.RedisStreamService,
|
|
72
|
+
periodic_executor_service_1.PeriodicExecutorService])
|
|
73
|
+
], StreamRetryService);
|
|
74
|
+
//# sourceMappingURL=stream-retry.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-retry.service.js","sourceRoot":"","sources":["../../src/stream/stream-retry.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sprout-idws/sprout-redis",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Reusable NestJS Redis package: cache, lock, and stream modules",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc && bash scripts/copy-lua.sh",
|
|
9
|
+
"dev": "tsc --watch",
|
|
10
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
11
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
12
|
+
"test": "jest",
|
|
13
|
+
"lint": "biome lint .",
|
|
14
|
+
"lint:fix": "biome lint --write .",
|
|
15
|
+
"format": "biome format --write .",
|
|
16
|
+
"format:check": "biome format .",
|
|
17
|
+
"check": "biome check .",
|
|
18
|
+
"check:fix": "biome check --write .",
|
|
19
|
+
"publish:npm": "npm publish"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@sprout-idws/sprout-context": "^1.0.0",
|
|
23
|
+
"lru-cache": "^10.0.0"
|
|
24
|
+
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@nestjs/common": ">=10.0.0",
|
|
27
|
+
"@nestjs/config": ">=3.0.0",
|
|
28
|
+
"@sprout-idws/sprout-context": "^1.0.0",
|
|
29
|
+
"ioredis": ">=5.0.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@biomejs/biome": "^2.4.4",
|
|
33
|
+
"@sprout-idws/typescript-config": "^1.0.0",
|
|
34
|
+
"@nestjs/common": "^11.1.12",
|
|
35
|
+
"@nestjs/config": "^4.0.2",
|
|
36
|
+
"@types/jest": "^30.0.0",
|
|
37
|
+
"ioredis": "^5.9.2",
|
|
38
|
+
"jest": "^30.3.0",
|
|
39
|
+
"lru-cache": "^10.0.0",
|
|
40
|
+
"ts-jest": "^29.4.6",
|
|
41
|
+
"typescript": "^5.9.3"
|
|
42
|
+
},
|
|
43
|
+
"files": [
|
|
44
|
+
"dist/**/*"
|
|
45
|
+
],
|
|
46
|
+
"keywords": [
|
|
47
|
+
"nestjs",
|
|
48
|
+
"redis",
|
|
49
|
+
"cache",
|
|
50
|
+
"lock",
|
|
51
|
+
"stream"
|
|
52
|
+
],
|
|
53
|
+
"author": "Sprout",
|
|
54
|
+
"license": "MIT",
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public"
|
|
57
|
+
},
|
|
58
|
+
"repository": {
|
|
59
|
+
"type": "git",
|
|
60
|
+
"url": "https://github.com/sprout-libs/sprout-typescript-backend.git",
|
|
61
|
+
"directory": "packages/sprout-redis"
|
|
62
|
+
},
|
|
63
|
+
"homepage": "https://github.com/sprout-libs/sprout-typescript-backend#readme",
|
|
64
|
+
"bugs": {
|
|
65
|
+
"url": "https://github.com/sprout-libs/sprout-typescript-backend/issues"
|
|
66
|
+
}
|
|
67
|
+
}
|