flashq 0.2.1 → 0.3.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.
Files changed (119) hide show
  1. package/dist/client/connection.d.ts +27 -69
  2. package/dist/client/connection.d.ts.map +1 -1
  3. package/dist/client/connection.js +291 -272
  4. package/dist/client/connection.js.map +1 -1
  5. package/dist/client/http/request.d.ts +24 -0
  6. package/dist/client/http/request.d.ts.map +1 -0
  7. package/dist/client/http/request.js +289 -0
  8. package/dist/client/http/request.js.map +1 -0
  9. package/dist/client/http/response.d.ts +9 -0
  10. package/dist/client/http/response.d.ts.map +1 -0
  11. package/dist/client/http/response.js +80 -0
  12. package/dist/client/http/response.js.map +1 -0
  13. package/dist/client/index.d.ts +68 -562
  14. package/dist/client/index.d.ts.map +1 -1
  15. package/dist/client/index.js +186 -638
  16. package/dist/client/index.js.map +1 -1
  17. package/dist/client/{advanced.d.ts → methods/advanced.d.ts} +1 -1
  18. package/dist/client/methods/advanced.d.ts.map +1 -0
  19. package/dist/client/methods/advanced.js.map +1 -0
  20. package/dist/client/{core.d.ts → methods/core.d.ts} +25 -2
  21. package/dist/client/methods/core.d.ts.map +1 -0
  22. package/dist/client/{core.js → methods/core.js} +106 -1
  23. package/dist/client/methods/core.js.map +1 -0
  24. package/dist/client/{cron.d.ts → methods/cron.d.ts} +1 -1
  25. package/dist/client/methods/cron.d.ts.map +1 -0
  26. package/dist/client/methods/cron.js.map +1 -0
  27. package/dist/client/{dlq.d.ts → methods/dlq.d.ts} +1 -1
  28. package/dist/client/methods/dlq.d.ts.map +1 -0
  29. package/dist/client/methods/dlq.js.map +1 -0
  30. package/dist/client/{flows.d.ts → methods/flows.d.ts} +1 -1
  31. package/dist/client/methods/flows.d.ts.map +1 -0
  32. package/dist/client/methods/flows.js.map +1 -0
  33. package/dist/client/{jobs.d.ts → methods/jobs.d.ts} +2 -16
  34. package/dist/client/methods/jobs.d.ts.map +1 -0
  35. package/dist/client/{jobs.js → methods/jobs.js} +1 -15
  36. package/dist/client/methods/jobs.js.map +1 -0
  37. package/dist/client/{metrics.d.ts → methods/metrics.d.ts} +1 -1
  38. package/dist/client/methods/metrics.d.ts.map +1 -0
  39. package/dist/client/methods/metrics.js.map +1 -0
  40. package/dist/client/{queue.d.ts → methods/queue.d.ts} +1 -1
  41. package/dist/client/methods/queue.d.ts.map +1 -0
  42. package/dist/client/methods/queue.js.map +1 -0
  43. package/dist/client/types.d.ts +10 -3
  44. package/dist/client/types.d.ts.map +1 -1
  45. package/dist/errors.d.ts +105 -0
  46. package/dist/errors.d.ts.map +1 -0
  47. package/dist/errors.js +223 -0
  48. package/dist/errors.js.map +1 -0
  49. package/dist/events/index.d.ts +24 -0
  50. package/dist/events/index.d.ts.map +1 -0
  51. package/dist/events/index.js +53 -0
  52. package/dist/events/index.js.map +1 -0
  53. package/dist/events/subscriber.d.ts +30 -0
  54. package/dist/events/subscriber.d.ts.map +1 -0
  55. package/dist/{events.js → events/subscriber.js} +51 -148
  56. package/dist/events/subscriber.js.map +1 -0
  57. package/dist/events/types.d.ts +38 -0
  58. package/dist/events/types.d.ts.map +1 -0
  59. package/dist/events/types.js +6 -0
  60. package/dist/events/types.js.map +1 -0
  61. package/dist/hooks.d.ts +166 -0
  62. package/dist/hooks.d.ts.map +1 -0
  63. package/dist/hooks.js +73 -0
  64. package/dist/hooks.js.map +1 -0
  65. package/dist/index.d.ts +9 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +36 -2
  68. package/dist/index.js.map +1 -1
  69. package/dist/queue.d.ts.map +1 -1
  70. package/dist/queue.js +9 -5
  71. package/dist/queue.js.map +1 -1
  72. package/dist/types.d.ts +53 -2
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/utils/logger.d.ts +53 -0
  75. package/dist/utils/logger.d.ts.map +1 -0
  76. package/dist/utils/logger.js +150 -0
  77. package/dist/utils/logger.js.map +1 -0
  78. package/dist/utils/retry.d.ts +70 -0
  79. package/dist/utils/retry.d.ts.map +1 -0
  80. package/dist/utils/retry.js +149 -0
  81. package/dist/utils/retry.js.map +1 -0
  82. package/dist/worker.d.ts +26 -5
  83. package/dist/worker.d.ts.map +1 -1
  84. package/dist/worker.js +157 -86
  85. package/dist/worker.js.map +1 -1
  86. package/package.json +11 -1
  87. package/dist/client/advanced.d.ts.map +0 -1
  88. package/dist/client/advanced.js.map +0 -1
  89. package/dist/client/core.d.ts.map +0 -1
  90. package/dist/client/core.js.map +0 -1
  91. package/dist/client/cron.d.ts.map +0 -1
  92. package/dist/client/cron.js.map +0 -1
  93. package/dist/client/dlq.d.ts.map +0 -1
  94. package/dist/client/dlq.js.map +0 -1
  95. package/dist/client/flows.d.ts.map +0 -1
  96. package/dist/client/flows.js.map +0 -1
  97. package/dist/client/jobs.d.ts.map +0 -1
  98. package/dist/client/jobs.js.map +0 -1
  99. package/dist/client/kv.d.ts +0 -63
  100. package/dist/client/kv.d.ts.map +0 -1
  101. package/dist/client/kv.js +0 -131
  102. package/dist/client/kv.js.map +0 -1
  103. package/dist/client/metrics.d.ts.map +0 -1
  104. package/dist/client/metrics.js.map +0 -1
  105. package/dist/client/pubsub.d.ts +0 -42
  106. package/dist/client/pubsub.d.ts.map +0 -1
  107. package/dist/client/pubsub.js +0 -92
  108. package/dist/client/pubsub.js.map +0 -1
  109. package/dist/client/queue.d.ts.map +0 -1
  110. package/dist/client/queue.js.map +0 -1
  111. package/dist/events.d.ts +0 -184
  112. package/dist/events.d.ts.map +0 -1
  113. package/dist/events.js.map +0 -1
  114. /package/dist/client/{advanced.js → methods/advanced.js} +0 -0
  115. /package/dist/client/{cron.js → methods/cron.js} +0 -0
  116. /package/dist/client/{dlq.js → methods/dlq.js} +0 -0
  117. /package/dist/client/{flows.js → methods/flows.js} +0 -0
  118. /package/dist/client/{metrics.js → methods/metrics.js} +0 -0
  119. /package/dist/client/{queue.js → methods/queue.js} +0 -0
@@ -1,103 +1,61 @@
1
1
  import { EventEmitter } from 'events';
2
2
  import type { ClientOptions } from '../types';
3
- /** Maximum job data size in bytes (1MB) */
3
+ import { Logger } from '../utils/logger';
4
4
  export declare const MAX_JOB_DATA_SIZE: number;
5
- /** Maximum batch size allowed by the server */
6
5
  export declare const MAX_BATCH_SIZE = 1000;
7
- /**
8
- * Validate queue name to prevent injection attacks
9
- * @throws Error if queue name is invalid
10
- */
11
6
  export declare function validateQueueName(queue: string): void;
12
- /**
13
- * Validate job data size
14
- * @throws Error if data exceeds max size
15
- */
16
7
  export declare function validateJobDataSize(data: unknown): void;
17
8
  type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'closed';
18
- /**
19
- * Base connection class for FlashQ.
20
- * Handles TCP/HTTP connection, binary protocol, request multiplexing, and auto-reconnect.
21
- */
9
+ /** Client options with required fields except hooks */
10
+ type ResolvedClientOptions = Required<Omit<ClientOptions, 'hooks'>> & {
11
+ hooks?: ClientOptions['hooks'];
12
+ };
22
13
  export declare class FlashQConnection extends EventEmitter {
23
- protected _options: Required<ClientOptions>;
14
+ protected _options: ResolvedClientOptions;
15
+ protected logger: Logger;
24
16
  private socket;
25
17
  private connectionState;
26
18
  private authenticated;
27
19
  private pendingRequests;
28
- private responseQueue;
29
- private buffer;
20
+ private bufferChunks;
21
+ private bufferRemainder;
30
22
  private binaryBuffer;
31
23
  private reconnectAttempts;
32
24
  private reconnectTimer;
33
25
  private manualClose;
26
+ private retryConfig;
27
+ private queueOnDisconnect;
28
+ private maxQueuedRequests;
29
+ private requestQueue;
30
+ private trackRequestIds;
31
+ private compression;
32
+ private compressionThreshold;
34
33
  constructor(options?: ClientOptions);
35
- /** Get client options (read-only) */
36
- get options(): Required<ClientOptions>;
37
- /**
38
- * Connect to FlashQ server.
39
- * Automatically called on first command if not connected.
40
- *
41
- * @example
42
- * ```typescript
43
- * const client = new FlashQ();
44
- * await client.connect();
45
- * ```
46
- */
34
+ /** @deprecated Use logger.debug() instead */
35
+ protected debug(message: string, data?: unknown): void;
36
+ /** Call connection hook */
37
+ private callConnectionHook;
38
+ get options(): ResolvedClientOptions;
47
39
  connect(): Promise<void>;
48
- /**
49
- * Attempt to reconnect with exponential backoff
50
- */
51
40
  private scheduleReconnect;
52
41
  private setupSocketHandlers;
53
42
  private processBuffer;
54
43
  private processBinaryBuffer;
55
44
  private handleResponse;
56
- /**
57
- * Close the connection to the server.
58
- *
59
- * @example
60
- * ```typescript
61
- * await client.close();
62
- * ```
63
- */
64
45
  close(): Promise<void>;
65
- /**
66
- * Check if connected to the server.
67
- *
68
- * @returns true if connected
69
- */
46
+ /** Get number of queued requests */
47
+ getQueuedRequestCount(): number;
70
48
  isConnected(): boolean;
71
- /**
72
- * Get current connection state.
73
- *
74
- * @returns Connection state
75
- */
76
49
  getConnectionState(): ConnectionState;
77
- /**
78
- * Ping the server to check connection health.
79
- *
80
- * @returns true if server responds
81
- */
82
50
  ping(): Promise<boolean>;
83
- /**
84
- * Authenticate with the server.
85
- *
86
- * @param token - Authentication token
87
- */
88
51
  auth(token: string): Promise<void>;
89
- /**
90
- * Send a command to the server.
91
- * Auto-connects if not connected.
92
- *
93
- * @param command - Command object
94
- * @param customTimeout - Optional custom timeout
95
- * @returns Response from server
96
- */
97
52
  send<T>(command: Record<string, unknown>, customTimeout?: number): Promise<T>;
53
+ private doSend;
54
+ private waitForReconnection;
55
+ private queueRequest;
56
+ private processRequestQueue;
98
57
  private sendTcp;
99
58
  private sendHttp;
100
- private httpRequest;
101
59
  }
102
60
  export {};
103
61
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AAI3D,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAE7C,+CAA+C;AAC/C,eAAO,MAAM,cAAc,OAAO,CAAC;AAWnC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CASrD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAOvD;AAUD,KAAK,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,CAAC;AAI/F;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,aAAa,CAGb;IACR,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,YAAY,CAA2B;IAG/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,aAAkB;IAuBvC,qCAAqC;IACrC,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC,CAErC;IAED;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuE9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,cAAc;IAwBtB;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAS9B;;;;OAIG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxC;;;;;;;OAOG;IACG,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAoCrE,OAAO;YAiCP,QAAQ;YAQR,WAAW;CAkI1B"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;AAWxE,OAAO,EAAE,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAKxD,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAC7C,eAAO,MAAM,cAAc,OAAO,CAAC;AAKnC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAUrD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAQvD;AAeD,KAAK,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,CAAC;AAS/F,uDAAuD;AACvD,KAAK,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG;IACpE,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAEjB;IACF,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,OAAO,GAAE,aAAkB;IA2DvC,6CAA6C;IAC7C,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAItD,2BAA2B;IAC3B,OAAO,CAAC,kBAAkB;IAiB1B,IAAI,OAAO,IAAI,qBAAqB,CAEnC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE9B,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,cAAc;IAuBhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5B,oCAAoC;IACpC,qBAAqB,IAAI,MAAM;IAI/B,WAAW,IAAI,OAAO;IAGtB,kBAAkB,IAAI,eAAe;IAI/B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IASxB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAqBrE,MAAM;YAeN,mBAAmB;IAsBjC,OAAO,CAAC,YAAY;YAiBN,mBAAmB;YAenB,OAAO;YA6EP,QAAQ;CA0BvB"}