@gravito/stream 2.0.1 → 2.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 (83) hide show
  1. package/README.md +127 -285
  2. package/README.zh-TW.md +146 -13
  3. package/dist/BatchConsumer.d.ts +81 -0
  4. package/dist/Consumer.d.ts +215 -0
  5. package/dist/DashboardProvider.d.ts +20 -0
  6. package/dist/Job.d.ts +183 -0
  7. package/dist/OrbitStream.d.ts +151 -0
  8. package/dist/QueueManager.d.ts +319 -0
  9. package/dist/Queueable.d.ts +91 -0
  10. package/dist/Scheduler.d.ts +214 -0
  11. package/dist/StreamEventBackend.d.ts +114 -0
  12. package/dist/SystemEventJob.d.ts +33 -0
  13. package/dist/Worker.d.ts +139 -0
  14. package/dist/benchmarks/PerformanceReporter.d.ts +99 -0
  15. package/dist/consumer/ConcurrencyGate.d.ts +55 -0
  16. package/dist/consumer/ConsumerStrategy.d.ts +41 -0
  17. package/dist/consumer/GroupSequencer.d.ts +57 -0
  18. package/dist/consumer/HeartbeatManager.d.ts +65 -0
  19. package/dist/consumer/JobExecutor.d.ts +61 -0
  20. package/dist/consumer/JobSourceGenerator.d.ts +31 -0
  21. package/dist/consumer/PollingStrategy.d.ts +42 -0
  22. package/dist/consumer/ReactiveStrategy.d.ts +41 -0
  23. package/dist/consumer/StreamingConsumer.d.ts +88 -0
  24. package/dist/consumer/index.d.ts +13 -0
  25. package/dist/consumer/types.d.ts +102 -0
  26. package/dist/drivers/BinaryJobFrame.d.ts +78 -0
  27. package/dist/drivers/BullMQDriver.d.ts +186 -0
  28. package/dist/drivers/DatabaseDriver.d.ts +131 -0
  29. package/dist/drivers/GrpcDriver.d.ts +16 -0
  30. package/dist/drivers/KafkaDriver.d.ts +148 -0
  31. package/dist/drivers/MemoryDriver.d.ts +108 -0
  32. package/dist/drivers/QueueDriver.d.ts +250 -0
  33. package/dist/drivers/RabbitMQDriver.d.ts +102 -0
  34. package/dist/drivers/RedisDriver.d.ts +294 -0
  35. package/dist/drivers/SQSDriver.d.ts +111 -0
  36. package/dist/drivers/kafka/BackpressureController.d.ts +60 -0
  37. package/dist/drivers/kafka/BatchProcessor.d.ts +50 -0
  38. package/dist/drivers/kafka/ConsumerLifecycleManager.d.ts +80 -0
  39. package/dist/drivers/kafka/ErrorCategorizer.d.ts +39 -0
  40. package/dist/drivers/kafka/ErrorRecoveryManager.d.ts +100 -0
  41. package/dist/drivers/kafka/HeartbeatManager.d.ts +57 -0
  42. package/dist/drivers/kafka/KafkaDriver.d.ts +138 -0
  43. package/dist/drivers/kafka/KafkaMetrics.d.ts +88 -0
  44. package/dist/drivers/kafka/KafkaNotifier.d.ts +54 -0
  45. package/dist/drivers/kafka/MessageBuffer.d.ts +71 -0
  46. package/dist/drivers/kafka/OffsetTracker.d.ts +63 -0
  47. package/dist/drivers/kafka/PerformanceMonitor.d.ts +88 -0
  48. package/dist/drivers/kafka/RateLimiter.d.ts +52 -0
  49. package/dist/drivers/kafka/RebalanceHandler.d.ts +104 -0
  50. package/dist/drivers/kafka/RingBuffer.d.ts +63 -0
  51. package/dist/drivers/kafka/index.d.ts +22 -0
  52. package/dist/drivers/kafka/types.d.ts +553 -0
  53. package/dist/drivers/prepareJobForTransport.d.ts +10 -0
  54. package/dist/index.cjs +6274 -3777
  55. package/dist/index.cjs.map +71 -0
  56. package/dist/index.d.ts +60 -2233
  57. package/dist/index.js +6955 -4446
  58. package/dist/index.js.map +71 -0
  59. package/dist/locks/DistributedLock.d.ts +175 -0
  60. package/dist/persistence/BufferedPersistence.d.ts +130 -0
  61. package/dist/persistence/BunBufferedPersistence.d.ts +173 -0
  62. package/dist/persistence/MySQLPersistence.d.ts +134 -0
  63. package/dist/persistence/SQLitePersistence.d.ts +133 -0
  64. package/dist/serializers/BinarySerializer.d.ts +42 -0
  65. package/dist/serializers/CachedSerializer.d.ts +38 -0
  66. package/dist/serializers/CborNativeSerializer.d.ts +56 -0
  67. package/dist/serializers/ClassNameSerializer.d.ts +58 -0
  68. package/dist/serializers/JobSerializer.d.ts +33 -0
  69. package/dist/serializers/JsonSerializer.d.ts +28 -0
  70. package/dist/serializers/JsonlSerializer.d.ts +90 -0
  71. package/dist/serializers/MessagePackSerializer.d.ts +29 -0
  72. package/dist/types.d.ts +653 -0
  73. package/dist/workers/BinaryWorkerProtocol.d.ts +77 -0
  74. package/dist/workers/BunWorker.d.ts +179 -0
  75. package/dist/workers/SandboxedWorker.d.ts +132 -0
  76. package/dist/workers/WorkerFactory.d.ts +128 -0
  77. package/dist/workers/WorkerPool.d.ts +186 -0
  78. package/dist/workers/bun-job-executor.d.ts +14 -0
  79. package/dist/workers/index.d.ts +13 -0
  80. package/dist/workers/job-executor.d.ts +9 -0
  81. package/package.json +13 -6
  82. package/proto/queue.proto +101 -0
  83. package/dist/index.d.cts +0 -2242
@@ -0,0 +1,133 @@
1
+ import type { ConnectionContract } from '@gravito/atlas';
2
+ import type { PersistenceAdapter, SerializedJob } from '../types';
3
+ /**
4
+ * SQLite Persistence Adapter.
5
+ *
6
+ * Archives jobs into a local SQLite database for zero-config persistence.
7
+ * Uses transactions to optimize write performance for batches.
8
+ *
9
+ * @public
10
+ * @example
11
+ * ```typescript
12
+ * const persistence = new SQLitePersistence(db);
13
+ * ```
14
+ */
15
+ export declare class SQLitePersistence implements PersistenceAdapter {
16
+ private db;
17
+ private table;
18
+ private logsTable;
19
+ /**
20
+ * @param db - An Atlas DB instance (SQLite driver).
21
+ * @param table - The name of the table to store archived jobs.
22
+ * @param logsTable - The name of the table to store system logs.
23
+ * @param options - Buffering options (Deprecated: Use BufferedPersistence wrapper instead).
24
+ */
25
+ constructor(db: ConnectionContract, table?: string, logsTable?: string, _options?: {
26
+ maxBufferSize?: number;
27
+ flushInterval?: number;
28
+ });
29
+ /**
30
+ * Archives a single job.
31
+ */
32
+ archive(queue: string, job: SerializedJob, status: 'completed' | 'failed' | 'waiting' | string): Promise<void>;
33
+ /**
34
+ * Archives multiple jobs in a batch.
35
+ *
36
+ * Optimized for SQLite by wrapping chunks in transactions.
37
+ */
38
+ archiveMany(jobs: Array<{
39
+ queue: string;
40
+ job: SerializedJob;
41
+ status: 'completed' | 'failed' | 'waiting' | string;
42
+ }>): Promise<void>;
43
+ /**
44
+ * No-op. Use BufferedPersistence if flushing is needed.
45
+ */
46
+ flush(): Promise<void>;
47
+ /**
48
+ * Finds an archived job by ID.
49
+ */
50
+ find(queue: string, id: string): Promise<SerializedJob | null>;
51
+ /**
52
+ * List jobs from the archive.
53
+ */
54
+ list(queue: string, options?: {
55
+ limit?: number;
56
+ offset?: number;
57
+ status?: 'completed' | 'failed' | 'waiting' | string | string[];
58
+ jobId?: string;
59
+ startTime?: Date;
60
+ endTime?: Date;
61
+ }): Promise<SerializedJob[]>;
62
+ /**
63
+ * Search jobs from the archive.
64
+ */
65
+ search(query: string, options?: {
66
+ limit?: number;
67
+ offset?: number;
68
+ queue?: string;
69
+ }): Promise<SerializedJob[]>;
70
+ /**
71
+ * Archive a system log message (buffered).
72
+ */
73
+ archiveLog(log: {
74
+ level: string;
75
+ message: string;
76
+ workerId: string;
77
+ queue?: string;
78
+ timestamp: Date;
79
+ }): Promise<void>;
80
+ /**
81
+ * Archive multiple log messages (direct batch write).
82
+ */
83
+ archiveLogMany(logs: Array<{
84
+ level: string;
85
+ message: string;
86
+ workerId: string;
87
+ queue?: string;
88
+ timestamp: Date;
89
+ }>): Promise<void>;
90
+ /**
91
+ * List system logs from the archive.
92
+ */
93
+ listLogs(options?: {
94
+ limit?: number;
95
+ offset?: number;
96
+ level?: string;
97
+ workerId?: string;
98
+ queue?: string;
99
+ search?: string;
100
+ startTime?: Date;
101
+ endTime?: Date;
102
+ }): Promise<any[]>;
103
+ /**
104
+ * Count system logs in the archive.
105
+ */
106
+ countLogs(options?: {
107
+ level?: string;
108
+ workerId?: string;
109
+ queue?: string;
110
+ search?: string;
111
+ startTime?: Date;
112
+ endTime?: Date;
113
+ }): Promise<number>;
114
+ /**
115
+ * Remove old records from the archive.
116
+ */
117
+ cleanup(days: number): Promise<number>;
118
+ /**
119
+ * Count jobs in the archive.
120
+ */
121
+ count(queue: string, options?: {
122
+ status?: 'completed' | 'failed' | 'waiting' | string | string[];
123
+ jobId?: string;
124
+ startTime?: Date;
125
+ endTime?: Date;
126
+ }): Promise<number>;
127
+ /**
128
+ * Setup table for SQLite.
129
+ */
130
+ setupTable(): Promise<void>;
131
+ private setupJobsTable;
132
+ private setupLogsTable;
133
+ }
@@ -0,0 +1,42 @@
1
+ import type { NativeAcceleratorStatus } from '@gravito/core/ffi';
2
+ import type { Job } from '../Job';
3
+ import type { SerializedJob } from '../types';
4
+ import type { JobSerializer } from './JobSerializer';
5
+ /**
6
+ * Binary Serializer using CBOR.
7
+ *
8
+ * 委派給 CborNativeSerializer,使用 @gravito/core 的 NativeAccelerator
9
+ * 進行 CBOR 編碼/解碼。自動選擇最佳後端(Native FFI 或 JavaScript Fallback)。
10
+ *
11
+ * 此類別保留為向後相容的入口點,新程式碼建議直接使用 CborNativeSerializer。
12
+ *
13
+ * @public
14
+ * @example
15
+ * ```typescript
16
+ * const serializer = new BinarySerializer()
17
+ * const serialized = serializer.serialize(job)
18
+ * const deserialized = serializer.deserialize(serialized)
19
+ * ```
20
+ */
21
+ export declare class BinarySerializer implements JobSerializer {
22
+ private readonly delegate;
23
+ constructor();
24
+ /**
25
+ * 取得當前使用的 CBOR 後端資訊
26
+ * 可用於診斷和監控
27
+ */
28
+ static getBackendInfo(): NativeAcceleratorStatus;
29
+ /**
30
+ * 將 Job 序列化為 CBOR 二進制格式
31
+ */
32
+ serialize(job: Job): SerializedJob;
33
+ /**
34
+ * 反序列化 CBOR 二進制資料為 Job
35
+ *
36
+ * 支援三種資料格式:
37
+ * - Uint8Array(原生 CBOR 二進制)
38
+ * - Base64 string(來自 Redis / 網路傳輸)
39
+ * - ArrayBuffer(來自 Worker Transferable)
40
+ */
41
+ deserialize(serialized: SerializedJob): Job;
42
+ }
@@ -0,0 +1,38 @@
1
+ import type { Job } from '../Job';
2
+ import type { SerializedJob } from '../types';
3
+ import type { JobSerializer } from './JobSerializer';
4
+ /**
5
+ * Cached Serializer Decorator.
6
+ *
7
+ * Wraps another serializer to cache the results of serialization for the same Job instance.
8
+ * Useful when the same job object is enqueued multiple times (e.g., fan-out or testing),
9
+ * avoiding redundant serialization overhead.
10
+ *
11
+ * Uses `WeakMap` to associate cached payloads with Job object references without causing memory leaks.
12
+ *
13
+ * @public
14
+ * @example
15
+ * ```typescript
16
+ * const serializer = new CachedSerializer(new JsonSerializer());
17
+ * ```
18
+ */
19
+ export declare class CachedSerializer implements JobSerializer {
20
+ private delegate;
21
+ private cache;
22
+ /**
23
+ * @param delegate - The underlying serializer to use.
24
+ */
25
+ constructor(delegate: JobSerializer);
26
+ /**
27
+ * Serializes the job, returning a cached result if available.
28
+ *
29
+ * @param job - The job to serialize.
30
+ */
31
+ serialize(job: Job): SerializedJob;
32
+ /**
33
+ * Deserializes a job.
34
+ *
35
+ * Caching is not applied here as deserialization always produces new instances.
36
+ */
37
+ deserialize(serialized: SerializedJob): Job;
38
+ }
@@ -0,0 +1,56 @@
1
+ import type { NativeAcceleratorStatus } from '@gravito/core/ffi';
2
+ import type { Job } from '../Job';
3
+ import type { SerializedJob } from '../types';
4
+ import type { JobSerializer } from './JobSerializer';
5
+ /**
6
+ * 原生 CBOR 序列化器
7
+ *
8
+ * 使用 @gravito/core 的 NativeAccelerator 進行 CBOR 編碼/解碼,
9
+ * 自動選擇最佳的加速器實現(Native FFI 或 JavaScript Fallback)。
10
+ *
11
+ * 與現有 BinarySerializer 完全相容(type 為 'binary'),
12
+ * 可作為直接替代品使用。
13
+ *
14
+ * @public
15
+ * @example
16
+ * ```typescript
17
+ * const serializer = new CborNativeSerializer()
18
+ * const serialized = serializer.serialize(job)
19
+ * const deserialized = serializer.deserialize(serialized)
20
+ * ```
21
+ */
22
+ export declare class CborNativeSerializer implements JobSerializer {
23
+ private readonly accelerator;
24
+ constructor();
25
+ /**
26
+ * 取得當前使用的 CBOR 後端資訊
27
+ * 可用於診斷和監控
28
+ */
29
+ static getBackendInfo(): NativeAcceleratorStatus;
30
+ /**
31
+ * 將 Job 序列化為 CBOR 二進制格式
32
+ *
33
+ * @param job - 要序列化的 Job 實例
34
+ * @returns SerializedJob,data 為 Uint8Array
35
+ */
36
+ serialize(job: Job): SerializedJob;
37
+ /**
38
+ * 反序列化 CBOR 二進制資料為 Job
39
+ *
40
+ * 支援三種資料格式:
41
+ * - Uint8Array(原生 CBOR 二進制)
42
+ * - Base64 string(來自 Redis / 網路傳輸)
43
+ * - ArrayBuffer(來自 Worker Transferable)
44
+ *
45
+ * @param serialized - 序列化的 Job 資料
46
+ * @returns 還原的 Job 實例
47
+ */
48
+ deserialize(serialized: SerializedJob): Job;
49
+ /**
50
+ * 將各種格式的 data 轉換為 Uint8Array
51
+ *
52
+ * @param data - Uint8Array、Base64 string 或 ArrayBuffer
53
+ * @returns Uint8Array
54
+ */
55
+ private resolveBytes;
56
+ }
@@ -0,0 +1,58 @@
1
+ import type { Job } from '../Job';
2
+ import type { SerializedJob } from '../types';
3
+ import type { JobSerializer } from './JobSerializer';
4
+ /**
5
+ * Class Name Serializer (Laravel-style).
6
+ *
7
+ * Serializes jobs by storing their class name along with their properties.
8
+ * During deserialization, it looks up the registered class constructor and creates a new instance,
9
+ * populating it with the stored properties.
10
+ *
11
+ * This is the recommended serializer for most use cases as it preserves the behavior (methods)
12
+ * of the job class.
13
+ *
14
+ * @public
15
+ * @example
16
+ * ```typescript
17
+ * const serializer = new ClassNameSerializer();
18
+ * serializer.register(SendEmailJob);
19
+ *
20
+ * const serialized = serializer.serialize(new SendEmailJob('foo@bar.com'));
21
+ * const job = serializer.deserialize(serialized); // instanceof SendEmailJob
22
+ * ```
23
+ */
24
+ export declare class ClassNameSerializer implements JobSerializer {
25
+ /**
26
+ * Registry of job classes, mapped by class name.
27
+ */
28
+ private jobClasses;
29
+ /**
30
+ * Registers a Job class for serialization.
31
+ *
32
+ * @param jobClass - The job class constructor.
33
+ */
34
+ register(jobClass: new (...args: unknown[]) => Job): void;
35
+ /**
36
+ * Registers multiple Job classes at once.
37
+ *
38
+ * @param jobClasses - An array of job class constructors.
39
+ */
40
+ registerMany(jobClasses: Array<new (...args: unknown[]) => Job>): void;
41
+ /**
42
+ * Serializes a Job instance.
43
+ *
44
+ * Captures the class name and all enumerable properties.
45
+ *
46
+ * @param job - The job to serialize.
47
+ */
48
+ serialize(job: Job): SerializedJob;
49
+ /**
50
+ * Deserializes a Job instance.
51
+ *
52
+ * Instantiates the class matching `className` and assigns properties.
53
+ *
54
+ * @param serialized - The serialized job.
55
+ * @throws {Error} If the job class is not registered.
56
+ */
57
+ deserialize(serialized: SerializedJob): Job;
58
+ }
@@ -0,0 +1,33 @@
1
+ import type { Job } from '../Job';
2
+ import type { SerializedJob } from '../types';
3
+ /**
4
+ * Job serializer interface.
5
+ *
6
+ * Defines the contract for serializing job objects into storage-friendly formats
7
+ * (strings/buffers) and deserializing them back into executable Job instances.
8
+ *
9
+ * @public
10
+ * @example
11
+ * ```typescript
12
+ * class JSONSerializer implements JobSerializer {
13
+ * serialize(job) { return { ...job, data: JSON.stringify(job) }; }
14
+ * deserialize(serialized) { return JSON.parse(serialized.data); }
15
+ * }
16
+ * ```
17
+ */
18
+ export interface JobSerializer {
19
+ /**
20
+ * Converts a Job instance into a serializable object.
21
+ *
22
+ * @param job - The job instance to serialize.
23
+ * @returns A `SerializedJob` object containing the data payload and metadata.
24
+ */
25
+ serialize(job: Job): SerializedJob;
26
+ /**
27
+ * Reconstructs a Job instance from a serialized object.
28
+ *
29
+ * @param serialized - The serialized job data.
30
+ * @returns A fully hydrated Job instance ready for execution.
31
+ */
32
+ deserialize(serialized: SerializedJob): Job;
33
+ }
@@ -0,0 +1,28 @@
1
+ import type { Job } from '../Job';
2
+ import type { SerializedJob } from '../types';
3
+ import type { JobSerializer } from './JobSerializer';
4
+ /**
5
+ * JSON Serializer.
6
+ *
7
+ * Serializes jobs to standard JSON. This is the simplest serializer but has limitations:
8
+ * it cannot restore class instances (methods are lost) or handle complex types like Maps/Sets.
9
+ * Deserialized jobs will be plain objects that must be manually handled or cast.
10
+ *
11
+ * @public
12
+ * @example
13
+ * ```typescript
14
+ * const serializer = new JsonSerializer();
15
+ * ```
16
+ */
17
+ export declare class JsonSerializer implements JobSerializer {
18
+ /**
19
+ * Serializes a job to a JSON object.
20
+ */
21
+ serialize(job: Job): SerializedJob;
22
+ /**
23
+ * Deserializes a JSON object into a basic Job-like object.
24
+ *
25
+ * Note: The result is NOT an instance of the original Job class.
26
+ */
27
+ deserialize(serialized: SerializedJob): Job;
28
+ }
@@ -0,0 +1,90 @@
1
+ import type { Job } from '../Job';
2
+ import type { SerializedJob } from '../types';
3
+ import type { JobSerializer } from './JobSerializer';
4
+ /**
5
+ * JSONL (JSON Lines) Serializer。
6
+ *
7
+ * 使用 JSONL 格式序列化 Job,每個 Job 佔一行。
8
+ * 在 Bun 環境中利用原生 `Bun.JSONL.parse()` 和 `Bun.JSONL.parseChunk()`
9
+ * 以獲得最佳的批量與流式處理性能;在非 Bun 環境中降級為逐行 JSON 解析。
10
+ *
11
+ * **使用情境**:
12
+ * - 日誌串流與稽核場景
13
+ * - 大量 Job 匯出 / 匯入
14
+ * - 與外部工具(如 jq、logstash)整合
15
+ *
16
+ * @public
17
+ * @example
18
+ * ```typescript
19
+ * const serializer = new JsonlSerializer()
20
+ *
21
+ * // 單一 Job
22
+ * const serialized = serializer.serialize(job)
23
+ * const restored = serializer.deserialize(serialized)
24
+ *
25
+ * // 批量 JSONL 字串
26
+ * const jsonl = serializer.serializeMany(jobs)
27
+ * const restored = serializer.deserializeMany(jsonl)
28
+ *
29
+ * // 流式處理(Generator)
30
+ * for (const job of serializer.deserializeStream(jsonlChunk)) {
31
+ * await queue.push(job)
32
+ * }
33
+ * ```
34
+ */
35
+ export declare class JsonlSerializer implements JobSerializer {
36
+ /**
37
+ * 從 Job 提取可序列化屬性(排除函式)。
38
+ */
39
+ private extractProperties;
40
+ /**
41
+ * 將 SerializedJob 的 metadata 還原至 job 物件上。
42
+ */
43
+ private restoreMetadata;
44
+ /**
45
+ * 序列化單一 Job 為 SerializedJob。
46
+ *
47
+ * data 欄位使用 JSON 字串,type 標記為 'jsonl'。
48
+ */
49
+ serialize(job: Job): SerializedJob;
50
+ /**
51
+ * 反序列化單一 SerializedJob 為 Job 物件。
52
+ */
53
+ deserialize(serialized: SerializedJob): Job;
54
+ /**
55
+ * 批量序列化多個 Job 為 JSONL 字串(每個 SerializedJob 佔一行)。
56
+ *
57
+ * @param jobs - 要序列化的 Job 陣列
58
+ * @returns 換行符分隔的 JSONL 字串
59
+ */
60
+ serializeMany(jobs: Job[]): string;
61
+ /**
62
+ * 批量反序列化 JSONL 字串為 Job 陣列。
63
+ *
64
+ * 在 Bun 環境中使用 `Bun.JSONL.parse()` 以獲得最佳性能;
65
+ * 非 Bun 環境則降級為逐行 `JSON.parse()`。
66
+ *
67
+ * @param jsonlStr - JSONL 格式字串(每行一個 SerializedJob)
68
+ * @returns 還原後的 Job 陣列
69
+ */
70
+ deserializeMany(jsonlStr: string): Job[];
71
+ /**
72
+ * 以 Generator 流式處理 JSONL 資料塊,逐一產出 Job。
73
+ *
74
+ * 適合處理大型串流或分批送達的 JSONL 資料,避免一次性將所有資料載入記憶體。
75
+ * 在 Bun 環境中使用 `Bun.JSONL.parseChunk()` 以支援增量解析;
76
+ * 非 Bun 環境則降級為按行切割後逐行解析。
77
+ *
78
+ * @param chunk - JSONL 資料塊(可能包含多行,或為不完整的單行)
79
+ * @yields 每次產出一個還原後的 Job
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const serializer = new JsonlSerializer()
84
+ * for (const job of serializer.deserializeStream(bigJsonlChunk)) {
85
+ * await processJob(job)
86
+ * }
87
+ * ```
88
+ */
89
+ deserializeStream(chunk: string): Generator<Job>;
90
+ }
@@ -0,0 +1,29 @@
1
+ import type { Job } from '../Job';
2
+ import type { SerializedJob } from '../types';
3
+ import type { JobSerializer } from './JobSerializer';
4
+ /**
5
+ * MessagePack Serializer.
6
+ *
7
+ * Serializes jobs using MessagePack (binary format), encoded as a Base64 string.
8
+ * Offers smaller payload sizes than JSON for complex data structures.
9
+ *
10
+ * Requires the optional `@msgpack/msgpack` dependency.
11
+ *
12
+ * @public
13
+ * @example
14
+ * ```typescript
15
+ * const serializer = new MessagePackSerializer();
16
+ * ```
17
+ */
18
+ export declare class MessagePackSerializer implements JobSerializer {
19
+ private msgpack;
20
+ constructor();
21
+ /**
22
+ * Serialize a job using MessagePack.
23
+ */
24
+ serialize(job: Job): SerializedJob;
25
+ /**
26
+ * Deserialize a MessagePack job.
27
+ */
28
+ deserialize(serialized: SerializedJob): Job;
29
+ }