@mulingai-npm/redis 2.12.4 → 3.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ # Redis CLI
2
+
3
+ docker exec -it local-redis redis-cli
4
+
5
+ ## choose DB
6
+
7
+ 127.0.0.1:6379> SELECT 1
@@ -0,0 +1,17 @@
1
+ import { MulingstreamChunkManager, MulingstreamChunkData } from '../managers/mulingstream-chunk-manager';
2
+ export interface ChunkLogOptions {
3
+ chunkNumber?: boolean;
4
+ roomId?: boolean;
5
+ language?: boolean;
6
+ finalTranscription?: boolean;
7
+ sttStatus?: boolean;
8
+ translation?: boolean;
9
+ tts?: boolean;
10
+ retryMs?: number;
11
+ label?: string;
12
+ }
13
+ export declare class MulingstreamChunkLogger extends MulingstreamChunkManager {
14
+ logChunk(roomId: string, chunkNumber: number, opts?: ChunkLogOptions): Promise<void>;
15
+ logChunks(roomId: string, opts?: ChunkLogOptions): Promise<Record<string, unknown>[]>;
16
+ mapChunk(chunk: MulingstreamChunkData, cfg?: ChunkLogOptions): Record<string, unknown>;
17
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MulingstreamChunkLogger = void 0;
4
+ const mulingstream_chunk_manager_1 = require("../managers/mulingstream-chunk-manager");
5
+ const defaults = {
6
+ chunkNumber: true,
7
+ roomId: true,
8
+ language: true,
9
+ finalTranscription: true,
10
+ sttStatus: true,
11
+ translation: false,
12
+ tts: false,
13
+ retryMs: 100,
14
+ label: ''
15
+ };
16
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
17
+ class MulingstreamChunkLogger extends mulingstream_chunk_manager_1.MulingstreamChunkManager {
18
+ /* ------------ one chunk ------------------------------------ */
19
+ /* ------------ one chunk ------------------------------------ */
20
+ async logChunk(roomId, chunkNumber, opts = {}) {
21
+ const cfg = { ...defaults, ...opts };
22
+ const prefix = cfg.label ? `[${cfg.label}] ` : '';
23
+ let chunk = await this.getMulingstreamChunkById(roomId, chunkNumber);
24
+ if (!chunk) {
25
+ await sleep(cfg.retryMs);
26
+ chunk = await this.getMulingstreamChunkById(roomId, chunkNumber);
27
+ }
28
+ if (!chunk) {
29
+ console.log(`${prefix}[logger] room ${roomId} chunk ${chunkNumber} not found`);
30
+ return;
31
+ }
32
+ if (cfg.label)
33
+ console.log(prefix.trim()); // single-line label
34
+ console.dir(this.mapChunk(chunk, cfg), { depth: null, colors: true });
35
+ }
36
+ /* ------------ all chunks in room ---------------------------- */
37
+ async logChunks(roomId, opts = {}) {
38
+ const cfg = { ...defaults, ...opts };
39
+ const prefix = cfg.label ? `[${cfg.label}] ` : '';
40
+ let chunks = await this.getRoomById(roomId);
41
+ if (!(chunks === null || chunks === void 0 ? void 0 : chunks.length)) {
42
+ await sleep(cfg.retryMs);
43
+ chunks = await this.getRoomById(roomId);
44
+ }
45
+ if (!(chunks === null || chunks === void 0 ? void 0 : chunks.length)) {
46
+ console.log(`${prefix}[logger] room ${roomId} is empty / not found`);
47
+ return [];
48
+ }
49
+ const view = chunks.map((c) => this.mapChunk(c, cfg));
50
+ if (cfg.label)
51
+ console.log(prefix.trim());
52
+ console.dir(view, { depth: null, colors: true });
53
+ return view;
54
+ }
55
+ /* ------------ filter helper -------------------------------- */
56
+ mapChunk(chunk, cfg = {}) {
57
+ const o = { ...defaults, ...cfg };
58
+ const out = {};
59
+ if (o.roomId)
60
+ out.roomId = chunk.roomId;
61
+ if (o.chunkNumber)
62
+ out.chunkNumber = chunk.chunkNumber;
63
+ if (o.language)
64
+ out.language = chunk.language;
65
+ if (o.finalTranscription)
66
+ out.finalTranscription = chunk.finalTranscription;
67
+ if (o.sttStatus)
68
+ out.sttStatus = chunk.sttStatus;
69
+ if (o.translation)
70
+ out.translation = chunk.translation;
71
+ if (o.tts)
72
+ out.tts = chunk.tts;
73
+ return out;
74
+ }
75
+ }
76
+ exports.MulingstreamChunkLogger = MulingstreamChunkLogger;
@@ -0,0 +1,83 @@
1
+ import { RedisClient } from '../redis-client';
2
+ import type { StepStatus, SttProvider, MulingstreamChunkManager } from '../managers/mulingstream-chunk-manager';
3
+ type CommandArgs = {
4
+ addMulingstreamChunk: Parameters<MulingstreamChunkManager['addMulingstreamChunk']>[0];
5
+ updateStt: {
6
+ chunkNumber: number;
7
+ sttProvider: SttProvider;
8
+ options: {
9
+ transcription?: string;
10
+ sttStatus?: StepStatus;
11
+ };
12
+ };
13
+ updateSttObject: {
14
+ chunkNumber: number;
15
+ newStt: Record<string, {
16
+ transcription: string;
17
+ status: StepStatus;
18
+ }>;
19
+ };
20
+ discardStt: {
21
+ chunkNumber: number;
22
+ };
23
+ updateFinalTranscription: {
24
+ chunkNumber: number;
25
+ options: {
26
+ transcription?: string;
27
+ sttStatus?: StepStatus;
28
+ };
29
+ };
30
+ discardPostStt: {
31
+ chunkNumber: number;
32
+ };
33
+ discardLanguage: {
34
+ chunkNumber: number;
35
+ language: string;
36
+ };
37
+ discardLanguages: {
38
+ chunkNumber: number;
39
+ options: {
40
+ translation?: string[];
41
+ tts?: string[];
42
+ };
43
+ };
44
+ updateTranslation: {
45
+ chunkNumber: number;
46
+ language: string;
47
+ options: {
48
+ translation?: string;
49
+ status?: StepStatus;
50
+ };
51
+ };
52
+ updateTranslationInBulk: {
53
+ chunkNumber: number;
54
+ translations: Record<string, string>;
55
+ status?: StepStatus;
56
+ };
57
+ updateTts: {
58
+ chunkNumber: number;
59
+ language: string;
60
+ options: {
61
+ ttsAudioPath?: string;
62
+ status?: StepStatus;
63
+ isEmitted?: boolean;
64
+ totalCheck?: number;
65
+ };
66
+ };
67
+ increaseTotalCheck: {
68
+ chunkNumber: number;
69
+ language: string;
70
+ };
71
+ /** read + write: may set some tts[].status = 'DISCARDED' */
72
+ getAllReadyTts: {
73
+ language: string;
74
+ };
75
+ };
76
+ export type OpName = keyof CommandArgs;
77
+ export interface ChunkCommand<O extends OpName = OpName> {
78
+ op: O;
79
+ args: CommandArgs[O];
80
+ ts?: number;
81
+ }
82
+ export declare function enqueueCommand<O extends OpName>(redis: RedisClient, roomId: string, command: ChunkCommand<O>): Promise<string>;
83
+ export {};
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enqueueCommand = void 0;
4
+ /* ------------------------------------------------------------------ */
5
+ /* 3. enqueueCommand helper */
6
+ /* ------------------------------------------------------------------ */
7
+ async function enqueueCommand(redis, roomId, command) {
8
+ var _a;
9
+ const streamKey = `room:${roomId}:chunkCmds`;
10
+ return redis.xadd(streamKey, '*', 'cmd', JSON.stringify({ ...command, ts: (_a = command.ts) !== null && _a !== void 0 ? _a : Date.now() }));
11
+ }
12
+ exports.enqueueCommand = enqueueCommand;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mulingai-npm/redis",
3
- "version": "2.12.4",
3
+ "version": "3.0.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "repository": {