@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,14 @@
1
+ /**
2
+ * Bun Worker Execution Script.
3
+ *
4
+ * Runs inside a dedicated Bun Worker Thread. Receives serialized jobs,
5
+ * deserializes them, executes logic, and reports results back to the main thread.
6
+ *
7
+ * Key differences from Node.js version:
8
+ * - Uses `self.onmessage` instead of `parentPort.on()`
9
+ * - Native TypeScript support (no loader needed)
10
+ * - Optimized message passing with fast path for strings
11
+ *
12
+ * @internal
13
+ */
14
+ export {};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Workers module
3
+ *
4
+ * 提供 Sandboxed Worker 和 Worker Pool 功能,用於在隔離的 Worker Thread 中執行 Job。
5
+ * 支持 Node.js Worker Threads 和 Bun Workers,具有自動運行時檢測。
6
+ *
7
+ * @module workers
8
+ */
9
+ export { BINARY_PROTOCOL_VERSION, type BinaryWorkerMessage, decodeJobFromTransfer, encodeJobForTransfer, } from './BinaryWorkerProtocol';
10
+ export { BunWorker, type BunWorkerConfig } from './BunWorker';
11
+ export { SandboxedWorker, type SandboxedWorkerConfig } from './SandboxedWorker';
12
+ export { createWorkerFactory, type IWorkerFactory, RuntimeAwareWorkerFactory, type RuntimeEnvironment, type Worker as FactoryWorker, type WorkerConfig, } from './WorkerFactory';
13
+ export { WorkerPool, type WorkerPoolConfig, type WorkerPoolStats } from './WorkerPool';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Worker Thread Execution Script.
3
+ *
4
+ * Runs inside a dedicated Worker Thread. Receives serialized jobs,
5
+ * deserializes them, executes logic, and reports results back to the main thread.
6
+ *
7
+ * @internal
8
+ */
9
+ export {};
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@gravito/stream",
3
- "version": "2.0.1",
3
+ "sideEffects": false,
4
+ "version": "2.1.0",
4
5
  "publishConfig": {
5
6
  "access": "public"
6
7
  },
@@ -18,15 +19,19 @@
18
19
  },
19
20
  "files": [
20
21
  "dist",
22
+ "proto",
21
23
  "README.md",
22
24
  "LICENSE"
23
25
  ],
24
26
  "scripts": {
25
27
  "build": "bun run build.ts",
26
- "test": "bun test",
28
+ "build:dts": "bun run build.ts --dts-only",
29
+ "test": "bun test --timeout=10000",
27
30
  "typecheck": "bun tsc -p tsconfig.json --noEmit --skipLibCheck",
28
- "test:coverage": "bun test --coverage --coverage-threshold=70",
29
- "test:ci": "bun test --coverage --coverage-threshold=70"
31
+ "test:coverage": "bun test --timeout=10000 --coverage --coverage-reporter=lcov --coverage-dir coverage && bun run --bun scripts/check-coverage.ts",
32
+ "test:ci": "bun test --timeout=10000 --coverage --coverage-reporter=lcov --coverage-dir coverage && bun run --bun scripts/check-coverage.ts",
33
+ "test:unit": "bun test $(find tests -name '*.test.ts' ! -name '*.integration.test.ts' 2>/dev/null | tr '\\n' ' ') --timeout=10000",
34
+ "test:integration": "test $(find tests -name '*.integration.test.ts' 2>/dev/null | wc -l) -gt 0 && find tests -name '*.integration.test.ts' -print0 | xargs -0 bun test --timeout=10000 || echo 'No integration tests found'"
30
35
  },
31
36
  "keywords": [
32
37
  "gravito",
@@ -44,6 +49,9 @@
44
49
  "@aws-sdk/client-sqs": "^3.955.0",
45
50
  "@gravito/atlas": "workspace:*",
46
51
  "@gravito/core": "workspace:*",
52
+ "@grpc/grpc-js": "^1.14.3",
53
+ "@grpc/proto-loader": "^0.8.0",
54
+ "cborg": "^4.5.8",
47
55
  "cron-parser": "^5.4.0",
48
56
  "p-limit": "^5.0.0"
49
57
  },
@@ -52,7 +60,6 @@
52
60
  "bun-types": "latest",
53
61
  "ioredis": "^5.9.2",
54
62
  "mitata": "^1.0.34",
55
- "tsup": "^8.5.1",
56
63
  "typescript": "^5.9.3"
57
64
  },
58
65
  "homepage": "https://github.com/gravito-framework/gravito#readme",
@@ -61,4 +68,4 @@
61
68
  "url": "git+https://github.com/gravito-framework/gravito.git",
62
69
  "directory": "packages/stream"
63
70
  }
64
- }
71
+ }
@@ -0,0 +1,101 @@
1
+ syntax = "proto3";
2
+
3
+ package stream;
4
+
5
+ service QueueService {
6
+ // Pushes a job to the queue
7
+ rpc Push (PushRequest) returns (PushResponse);
8
+
9
+ // Pulls a job from the queue
10
+ rpc Pull (PullRequest) returns (PullResponse);
11
+
12
+ // Acknowledges a job completion
13
+ rpc Acknowledge (AcknowledgeRequest) returns (AcknowledgeResponse);
14
+
15
+ // Returns queue size
16
+ rpc Size (SizeRequest) returns (SizeResponse);
17
+
18
+ // Clears the queue
19
+ rpc Clear (ClearRequest) returns (ClearResponse);
20
+
21
+ // Get Queue Stats
22
+ rpc Stats (StatsRequest) returns (StatsResponse);
23
+ }
24
+
25
+ message Job {
26
+ string id = 1;
27
+ string type = 2; // 'json', 'class', 'msgpack'
28
+ string data = 3; // The serialized payload
29
+ string className = 4;
30
+ int64 createdAt = 5;
31
+ int32 delaySeconds = 6;
32
+ int32 attempts = 7;
33
+ int32 maxAttempts = 8;
34
+ string groupId = 9;
35
+ string priority = 10; // string representation (e.g. "high" or "10")
36
+ int64 failedAt = 11;
37
+ string error = 12;
38
+ int32 retryAfterSeconds = 13;
39
+ double retryMultiplier = 14;
40
+ }
41
+
42
+ message PushRequest {
43
+ string queue = 1;
44
+ Job job = 2;
45
+ JobPushOptions options = 3;
46
+ }
47
+
48
+ message JobPushOptions {
49
+ string groupId = 1;
50
+ string priority = 2;
51
+ }
52
+
53
+ message PushResponse {
54
+ bool success = 1;
55
+ string message = 2;
56
+ }
57
+
58
+ message PullRequest {
59
+ string queue = 1;
60
+ }
61
+
62
+ message PullResponse {
63
+ Job job = 1; // null/empty if no job
64
+ }
65
+
66
+ message AcknowledgeRequest {
67
+ string queue = 1;
68
+ string jobId = 2;
69
+ }
70
+
71
+ message AcknowledgeResponse {
72
+ bool success = 1;
73
+ }
74
+
75
+ message SizeRequest {
76
+ string queue = 1;
77
+ }
78
+
79
+ message SizeResponse {
80
+ int32 size = 1;
81
+ }
82
+
83
+ message ClearRequest {
84
+ string queue = 1;
85
+ }
86
+
87
+ message ClearResponse {
88
+ bool success = 1;
89
+ }
90
+
91
+ message StatsRequest {
92
+ string queue = 1;
93
+ }
94
+
95
+ message StatsResponse {
96
+ string queue = 1;
97
+ int32 size = 2;
98
+ int32 delayed = 3;
99
+ int32 failed = 4;
100
+ int32 reserved = 5;
101
+ }