queen-mq 0.1.6 → 0.2.11

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 (85) hide show
  1. package/README.md +166 -2078
  2. package/{src → client-js}/benchmark/consumer.js +5 -3
  3. package/{src → client-js}/benchmark/producer.js +9 -4
  4. package/client-js/client/client.js +1511 -0
  5. package/{src → client-js}/client/index.js +1 -4
  6. package/{src → client-js}/client/utils/http.js +3 -2
  7. package/{src → client-js}/client/utils/retry.js +7 -1
  8. package/client-js/test/advanced-client-tests.js +761 -0
  9. package/{src → client-js}/test/advanced-pattern-tests.js +2 -2
  10. package/{src → client-js}/test/bus-mode-tests.js +6 -6
  11. package/{src → client-js}/test/core-tests.js +8 -3
  12. package/{src → client-js}/test/edge-case-tests.js +4 -3
  13. package/client-js/test/human.js +162 -0
  14. package/client-js/test/qos0-tests.js +334 -0
  15. package/{src → client-js}/test/test-new.js +78 -1
  16. package/package.json +8 -29
  17. package/init-db.js +0 -20
  18. package/src/client/client.js +0 -586
  19. package/src/cluster-server.js +0 -242
  20. package/src/config.js +0 -229
  21. package/src/database/connection.js +0 -129
  22. package/src/database/poolManager.js +0 -199
  23. package/src/database/schema-v2.sql +0 -278
  24. package/src/managers/eventManager.js +0 -59
  25. package/src/managers/queueManagerOptimized.js +0 -1431
  26. package/src/managers/resourceCache.js +0 -96
  27. package/src/managers/systemEventManager.js +0 -132
  28. package/src/routes/ack.js +0 -26
  29. package/src/routes/configure.js +0 -46
  30. package/src/routes/messages.js +0 -368
  31. package/src/routes/pop.js +0 -69
  32. package/src/routes/push.js +0 -28
  33. package/src/routes/resources.js +0 -330
  34. package/src/routes/status.js +0 -1037
  35. package/src/server.js +0 -1528
  36. package/src/test/MIGRATION_ISSUES.md +0 -174
  37. package/src/test/test.js +0 -4524
  38. package/src/utils/streaming.js +0 -231
  39. package/src/webapp-dist/assets/Analytics-DJrE4Rz2.css +0 -1
  40. package/src/webapp-dist/assets/Analytics-HEMXKmfJ.js +0 -1
  41. package/src/webapp-dist/assets/ConfirmDialog-YEoCdE7x.js +0 -1
  42. package/src/webapp-dist/assets/ConsumerGroups-CC5VJywp.css +0 -1
  43. package/src/webapp-dist/assets/ConsumerGroups-D8Z20HhZ.js +0 -1
  44. package/src/webapp-dist/assets/Dashboard-BRFOz6it.css +0 -1
  45. package/src/webapp-dist/assets/Dashboard-Bpx9I32h.js +0 -1
  46. package/src/webapp-dist/assets/LoadingSpinner-BPttXcbs.js +0 -1
  47. package/src/webapp-dist/assets/Messages-BOfVHKma.css +0 -1
  48. package/src/webapp-dist/assets/Messages-EKURCbLl.js +0 -1
  49. package/src/webapp-dist/assets/QueueDetail-BXXA7xoZ.css +0 -1
  50. package/src/webapp-dist/assets/QueueDetail-Bmxg0KiA.js +0 -1
  51. package/src/webapp-dist/assets/Queues-CvrJkrZT.css +0 -1
  52. package/src/webapp-dist/assets/Queues-yUx9_3-9.js +0 -1
  53. package/src/webapp-dist/assets/StatusBadge-C1bBtXHh.css +0 -1
  54. package/src/webapp-dist/assets/StatusBadge-C6N84XmO.js +0 -1
  55. package/src/webapp-dist/assets/analytics-BapTekLM.js +0 -1
  56. package/src/webapp-dist/assets/colors-5z6Q_kUr.js +0 -18
  57. package/src/webapp-dist/assets/index-B7w2bKT6.css +0 -1
  58. package/src/webapp-dist/assets/index-CUSnwYTH.js +0 -31
  59. package/src/webapp-dist/assets/messages-CRV6E-xU.js +0 -1
  60. package/src/webapp-dist/assets/queen-logo-blue.svg +0 -210
  61. package/src/webapp-dist/assets/queen-logo-cyan.svg +0 -210
  62. package/src/webapp-dist/assets/queen-logo-indigo.svg +0 -210
  63. package/src/webapp-dist/assets/queen-logo-orange.svg +0 -210
  64. package/src/webapp-dist/assets/queen-logo-pink.svg +0 -210
  65. package/src/webapp-dist/assets/queen-logo-purple.svg +0 -210
  66. package/src/webapp-dist/assets/queen-logo-rose.svg +0 -239
  67. package/src/webapp-dist/assets/queen-logo.svg +0 -263
  68. package/src/webapp-dist/assets/queues-BdUbxfBC.js +0 -1
  69. package/src/webapp-dist/assets/resources-Bs9U-ceF.js +0 -1
  70. package/src/webapp-dist/index.html +0 -15
  71. package/src/websocket/wsServer.js +0 -228
  72. /package/{src → client-js}/benchmark/consumer_multi.js +0 -0
  73. /package/{src → client-js}/benchmark/producer_multi.js +0 -0
  74. /package/{src → client-js}/client/utils/loadBalancer.js +0 -0
  75. /package/{src → client-js}/services/encryptionService.js +0 -0
  76. /package/{src → client-js}/services/evictionService.js +0 -0
  77. /package/{src → client-js}/services/retentionService.js +0 -0
  78. /package/{src → client-js}/services/startupSync.js +0 -0
  79. /package/{src → client-js}/test/README.md +0 -0
  80. /package/{src → client-js}/test/enterprise-tests.js +0 -0
  81. /package/{src → client-js}/test/partition-locking-tests.js +0 -0
  82. /package/{src → client-js}/test/utils.js +0 -0
  83. /package/{src → client-js}/test/window-buffer-test.js +0 -0
  84. /package/{src → client-js}/utils/logger.js +0 -0
  85. /package/{src → client-js}/utils/uuid.js +0 -0
@@ -24,6 +24,12 @@ import {
24
24
  resetResults
25
25
  } from './utils.js';
26
26
 
27
+ // Import human tests
28
+ import {
29
+ testCreateQueue,
30
+ workerQueueTest
31
+ } from './human.js';
32
+
27
33
  // Import test modules
28
34
  import {
29
35
  testQueueCreationPolicy,
@@ -90,6 +96,30 @@ import {
90
96
  testMessageDeduplication
91
97
  } from './advanced-pattern-tests.js';
92
98
 
99
+ import {
100
+ testPipelineBasic,
101
+ testPipelineErrorHandling,
102
+ testPipelineAutoRenewal,
103
+ testPipelineParallel,
104
+ testPipelineConcurrencyRaceCondition,
105
+ testPipelineContinuous,
106
+ testTransactionAPI,
107
+ testPipelineAtomic,
108
+ testManualLeaseRenewal,
109
+ testLeaseValidation,
110
+ testComplexPipelineWorkflow,
111
+ runAdvancedClientTests
112
+ } from './advanced-client-tests.js';
113
+
114
+ import {
115
+ testQoS0Buffering,
116
+ testAutoAck,
117
+ testConsumerGroupAutoAck,
118
+ testFIFOOrdering,
119
+ testMixedOperations,
120
+ testBatchedPayload
121
+ } from './qos0-tests.js';
122
+
93
123
  // Helper to run a test with error handling and delay
94
124
  async function runTest(testFn) {
95
125
  try {
@@ -113,12 +143,14 @@ if (testFilter === 'help' || testFilter === '--help' || testFilter === '-h') {
113
143
  console.log(' enterprise - Enterprise features (encryption, retention, eviction)');
114
144
  console.log(' bus - Bus mode features (consumer groups, mixed mode)');
115
145
  console.log(' edge - Edge cases (null payloads, large payloads, SQL injection, etc.)');
146
+ console.log(' qos0 - QoS 0 features (buffering, auto-ack, FIFO ordering)');
116
147
  console.log(' advanced - Advanced patterns (pipeline, fan-out, DLQ, circuit breaker)');
117
148
  console.log('\nExamples:');
118
149
  console.log(' node src/test/test-new.js # Run all tests');
119
150
  console.log(' node src/test/test-new.js core # Run only core tests');
120
151
  console.log(' node src/test/test-new.js bus # Run only bus mode tests');
121
152
  console.log(' node src/test/test-new.js edge # Run only edge case tests');
153
+ console.log(' node src/test/test-new.js qos0 # Run only QoS 0 tests');
122
154
  process.exit(0);
123
155
  }
124
156
 
@@ -154,6 +186,16 @@ async function runTests() {
154
186
 
155
187
  // Clean up any existing test data
156
188
  await cleanupTestData();
189
+
190
+ // ============================================
191
+ // HUMAN TESTS
192
+ // ============================================
193
+ if (!testFilter || testFilter === 'human') {
194
+ console.log('\n👤 HUMAN TESTS');
195
+ console.log('-'.repeat(40));
196
+ await runTest(() => testCreateQueue(client));
197
+ await runTest(() => workerQueueTest(client));
198
+ }
157
199
 
158
200
  // ============================================
159
201
  // CORE FEATURE TESTS
@@ -234,11 +276,46 @@ async function runTests() {
234
276
  await runTest(() => testXSSPrevention(client));
235
277
  }
236
278
 
279
+ // ============================================
280
+ // QOS 0 FEATURE TESTS
281
+ // ============================================
282
+ if (!testFilter || testFilter === 'qos0') {
283
+ console.log('\n⚡ QOS 0 FEATURES');
284
+ console.log('-'.repeat(40));
285
+
286
+ await runTest(() => testQoS0Buffering(client));
287
+ await runTest(() => testAutoAck(client));
288
+ await runTest(() => testConsumerGroupAutoAck(client));
289
+ await runTest(() => testFIFOOrdering(client));
290
+ await runTest(() => testMixedOperations(client));
291
+ await runTest(() => testBatchedPayload(client));
292
+ }
293
+
294
+ // ============================================
295
+ // ADVANCED CLIENT FEATURE TESTS
296
+ // ============================================
297
+ if (!testFilter || testFilter === 'advanced' || testFilter === 'client') {
298
+ console.log('\n🚀 ADVANCED CLIENT FEATURES');
299
+ console.log('-'.repeat(40));
300
+
301
+ await runTest(() => testPipelineBasic(client));
302
+ await runTest(() => testPipelineErrorHandling(client));
303
+ await runTest(() => testPipelineAutoRenewal(client));
304
+ await runTest(() => testPipelineParallel(client));
305
+ await runTest(() => testPipelineConcurrencyRaceCondition(client));
306
+ await runTest(() => testPipelineContinuous(client));
307
+ await runTest(() => testTransactionAPI(client));
308
+ await runTest(() => testPipelineAtomic(client));
309
+ await runTest(() => testManualLeaseRenewal(client));
310
+ await runTest(() => testLeaseValidation(client));
311
+ await runTest(() => testComplexPipelineWorkflow(client));
312
+ }
313
+
237
314
  // ============================================
238
315
  // ADVANCED SCENARIO TESTS
239
316
  // ============================================
240
317
  if (!testFilter || testFilter === 'advanced' || testFilter === 'pattern') {
241
- console.log('\n🎯 ADVANCED SCENARIOS');
318
+ console.log('\n🎯 ADVANCED PATTERNS');
242
319
  console.log('-'.repeat(40));
243
320
 
244
321
  await runTest(() => testMultiStagePipeline(client));
package/package.json CHANGED
@@ -1,44 +1,23 @@
1
1
  {
2
2
  "name": "queen-mq",
3
- "version": "0.1.6",
3
+ "version": "0.2.11",
4
4
  "type": "module",
5
- "description": "High-performance message queue backed by PostgreSQL",
6
- "main": "src/client/index.js",
5
+ "description": "High-performance C++ message queue backed by PostgreSQL",
6
+ "main": "client-js/client/index.js",
7
7
  "scripts": {
8
- "start": "node src/server.js",
9
- "start:cluster": "node src/cluster-server.js",
8
+ "start": "./server/bin/queen-server",
10
9
  "build:webapp": "cd webapp && npm install && npm run build",
11
- "copy:webapp": "rm -rf src/webapp-dist && cp -r webapp/dist src/webapp-dist",
12
- "prepublishOnly": "npm run build:webapp && npm run copy:webapp",
13
- "publish:public": "npm run build:webapp && npm run copy:webapp && npm publish --access public",
14
- "test:produce": "node test.js produce",
15
- "test:consume": "node test.js consume",
16
- "test": "node src/test/test.js",
17
- "test:core": "node src/test/core-features-test.js",
18
- "test:comprehensive": "node src/test/comprehensive-test.js",
19
- "test:edge": "node src/test/comprehensive-edge-cases-test.js",
20
- "test:advanced": "node src/test/advanced-scenarios-test.js",
21
- "test:all": "npm run test && npm run test:edge && npm run test:advanced",
22
- "test:quick": "npm run test:core",
23
- "test:lease": "node src/test/test-lease-expiration.js",
24
- "test:lease:simple": "node test-lease-simple.js",
25
- "test:client": "node test-client.js",
26
- "test:simple": "node test-simple.js",
27
- "init": "node init-db.js"
10
+ "publish:public": "npm publish --access public",
11
+ "test": "node client-js/test/test-new.js"
28
12
  },
29
13
  "files": [
30
- "src/",
31
- "init-db.js",
14
+ "client-js/",
32
15
  "LICENSE.md",
33
16
  "README.md"
34
17
  ],
35
18
  "dependencies": {
36
19
  "axios": "^1.12.2",
37
- "chart.js": "^4.5.1",
38
- "pg": "^8.13.3",
39
- "uuid": "^13.0.0",
40
- "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.52.0",
41
- "ws": "^8.18.3"
20
+ "uuid": "^13.0.0"
42
21
  },
43
22
  "engines": {
44
23
  "node": ">=22.0.0"
package/init-db.js DELETED
@@ -1,20 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createPool, initDatabase } from './src/database/connection.js';
3
-
4
- const init = async () => {
5
- console.log('Initializing Queen database schema...');
6
-
7
- const pool = createPool();
8
-
9
- try {
10
- await initDatabase(pool);
11
- console.log('✅ Database schema initialized successfully');
12
- } catch (error) {
13
- console.error('❌ Failed to initialize database:', error.message);
14
- process.exit(1);
15
- } finally {
16
- await pool.end();
17
- }
18
- };
19
-
20
- init();