@hamim_4444/pulsar 0.0.0-stage → 1.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.
Files changed (176) hide show
  1. package/README.md +14 -2
  2. package/dist/cluster/Nebula.d.ts +30 -0
  3. package/dist/cluster/Nebula.d.ts.map +1 -0
  4. package/dist/dispatch/ConsumerDispatch.d.ts +9 -0
  5. package/dist/dispatch/ConsumerDispatch.d.ts.map +1 -0
  6. package/dist/dispatch/Dispatcher.d.ts +6 -0
  7. package/dist/dispatch/Dispatcher.d.ts.map +1 -0
  8. package/dist/dispatch/HandlerDispatcher.d.ts +7 -0
  9. package/dist/dispatch/HandlerDispatcher.d.ts.map +1 -0
  10. package/dist/dispatch/HttpDispatcher.d.ts +7 -0
  11. package/dist/dispatch/HttpDispatcher.d.ts.map +1 -0
  12. package/dist/dispatch/dispatchTypes.d.ts +12 -0
  13. package/dist/dispatch/dispatchTypes.d.ts.map +1 -0
  14. package/dist/helpers/computeConfigDelta.d.ts +18 -0
  15. package/dist/helpers/computeConfigDelta.d.ts.map +1 -0
  16. package/dist/helpers/defineQueue.d.ts +13 -0
  17. package/dist/helpers/defineQueue.d.ts.map +1 -0
  18. package/dist/helpers/generateShaHash.d.ts +2 -0
  19. package/dist/helpers/generateShaHash.d.ts.map +1 -0
  20. package/dist/index.d.ts +6 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +47 -0
  23. package/dist/index.js.map +42 -0
  24. package/dist/integrations/PulsarEventsIntegrations.d.ts +7 -0
  25. package/dist/integrations/PulsarEventsIntegrations.d.ts.map +1 -0
  26. package/dist/integrations/PulsarLoggerIntegrations.d.ts +12 -0
  27. package/dist/integrations/PulsarLoggerIntegrations.d.ts.map +1 -0
  28. package/dist/integrations/index.d.ts +4 -0
  29. package/dist/integrations/index.d.ts.map +1 -0
  30. package/dist/integrations/index.js +3 -0
  31. package/dist/integrations/index.js.map +15 -0
  32. package/dist/modules/Queue.module.d.ts +45 -0
  33. package/dist/modules/Queue.module.d.ts.map +1 -0
  34. package/dist/modules/Scheduler.module.d.ts +42 -0
  35. package/dist/modules/Scheduler.module.d.ts.map +1 -0
  36. package/dist/modules/Tick.module.d.ts +38 -0
  37. package/dist/modules/Tick.module.d.ts.map +1 -0
  38. package/dist/modules/TickController.module.d.ts +36 -0
  39. package/dist/modules/TickController.module.d.ts.map +1 -0
  40. package/dist/monitoring/PulsarMonitoringStreamProducer.d.ts +2 -0
  41. package/dist/monitoring/PulsarMonitoringStreamProducer.d.ts.map +1 -0
  42. package/dist/monitoring/index.d.ts +2 -0
  43. package/dist/monitoring/index.d.ts.map +1 -0
  44. package/dist/monitoring/server/PulsarMonitoringStream.d.ts +2 -0
  45. package/dist/monitoring/server/PulsarMonitoringStream.d.ts.map +1 -0
  46. package/dist/network/NetworkInterface.d.ts +12 -0
  47. package/dist/network/NetworkInterface.d.ts.map +1 -0
  48. package/dist/network/UnifiedTransportManager.d.ts +19 -0
  49. package/dist/network/UnifiedTransportManager.d.ts.map +1 -0
  50. package/dist/network/abstract/BaseNetworkDriver.d.ts +18 -0
  51. package/dist/network/abstract/BaseNetworkDriver.d.ts.map +1 -0
  52. package/dist/network/auth/Authenticator.d.ts +2 -0
  53. package/dist/network/auth/Authenticator.d.ts.map +1 -0
  54. package/dist/network/drivers/HttpNetworkDriver.d.ts +30 -0
  55. package/dist/network/drivers/HttpNetworkDriver.d.ts.map +1 -0
  56. package/dist/network/drivers/ServerlessNetworkDriver.d.ts +13 -0
  57. package/dist/network/drivers/ServerlessNetworkDriver.d.ts.map +1 -0
  58. package/dist/network/drivers/WebSocketNetworkDriver.d.ts +24 -0
  59. package/dist/network/drivers/WebSocketNetworkDriver.d.ts.map +1 -0
  60. package/dist/network/helpers/httpQueueOperations.d.ts +2 -0
  61. package/dist/network/helpers/httpQueueOperations.d.ts.map +1 -0
  62. package/dist/network/interfaces/network.types.d.ts +13 -0
  63. package/dist/network/interfaces/network.types.d.ts.map +1 -0
  64. package/dist/run/Queues.d.ts +2 -0
  65. package/dist/run/Queues.d.ts.map +1 -0
  66. package/dist/run/index.d.ts +2 -0
  67. package/dist/run/index.d.ts.map +1 -0
  68. package/dist/run/index2.d.ts +2 -0
  69. package/dist/run/index2.d.ts.map +1 -0
  70. package/dist/runtimes/IsolateRuntime.d.ts +17 -0
  71. package/dist/runtimes/IsolateRuntime.d.ts.map +1 -0
  72. package/dist/runtimes/PersistentRuntime.d.ts +21 -0
  73. package/dist/runtimes/PersistentRuntime.d.ts.map +1 -0
  74. package/dist/runtimes/ServerlessRuntime.d.ts +15 -0
  75. package/dist/runtimes/ServerlessRuntime.d.ts.map +1 -0
  76. package/dist/runtimes/runtimeTypes.d.ts +15 -0
  77. package/dist/runtimes/runtimeTypes.d.ts.map +1 -0
  78. package/dist/server/PulsarRequestHandler.d.ts +41 -0
  79. package/dist/server/PulsarRequestHandler.d.ts.map +1 -0
  80. package/dist/server/helpers/acquireRedisLock.d.ts +14 -0
  81. package/dist/server/helpers/acquireRedisLock.d.ts.map +1 -0
  82. package/dist/server/helpers/checkFencingValidity.d.ts +14 -0
  83. package/dist/server/helpers/checkFencingValidity.d.ts.map +1 -0
  84. package/dist/server/helpers/performIsolateRestart.d.ts +20 -0
  85. package/dist/server/helpers/performIsolateRestart.d.ts.map +1 -0
  86. package/dist/server/index.d.ts +3 -0
  87. package/dist/server/index.d.ts.map +1 -0
  88. package/dist/server/index.js +53 -0
  89. package/dist/server/index.js.map +20 -0
  90. package/dist/server/parser/parseRequest.d.ts +10 -0
  91. package/dist/server/parser/parseRequest.d.ts.map +1 -0
  92. package/dist/server/utility/extract-headers.d.ts +13 -0
  93. package/dist/server/utility/extract-headers.d.ts.map +1 -0
  94. package/dist/service/ConfigurationStore.d.ts +23 -0
  95. package/dist/service/ConfigurationStore.d.ts.map +1 -0
  96. package/dist/service/Isolate.service.d.ts +12 -0
  97. package/dist/service/Isolate.service.d.ts.map +1 -0
  98. package/dist/service/Pulsar.service.d.ts +40 -0
  99. package/dist/service/Pulsar.service.d.ts.map +1 -0
  100. package/dist/service/PulsarBaseService.d.ts +51 -0
  101. package/dist/service/PulsarBaseService.d.ts.map +1 -0
  102. package/dist/service/PulsarEventBus.d.ts +33 -0
  103. package/dist/service/PulsarEventBus.d.ts.map +1 -0
  104. package/dist/service/SwarmBudgetTracker.d.ts +14 -0
  105. package/dist/service/SwarmBudgetTracker.d.ts.map +1 -0
  106. package/dist/service/consumers/PulsarWorker.d.ts +10 -0
  107. package/dist/service/consumers/PulsarWorker.d.ts.map +1 -0
  108. package/dist/shared/PulsarRuntimeCore.d.ts +55 -0
  109. package/dist/shared/PulsarRuntimeCore.d.ts.map +1 -0
  110. package/dist/static/TimingProfile.d.ts +9 -0
  111. package/dist/static/TimingProfile.d.ts.map +1 -0
  112. package/dist/static/static.d.ts +3 -0
  113. package/dist/static/static.d.ts.map +1 -0
  114. package/dist/storage/PulsarStorage.d.ts +42 -0
  115. package/dist/storage/PulsarStorage.d.ts.map +1 -0
  116. package/dist/storage/drivers/PostgresDriver.d.ts +20 -0
  117. package/dist/storage/drivers/PostgresDriver.d.ts.map +1 -0
  118. package/dist/storage/drivers/RedisDriver.d.ts +20 -0
  119. package/dist/storage/drivers/RedisDriver.d.ts.map +1 -0
  120. package/dist/storage/drivers/types.d.ts +27 -0
  121. package/dist/storage/drivers/types.d.ts.map +1 -0
  122. package/dist/storage/index.d.ts +4 -0
  123. package/dist/storage/index.d.ts.map +1 -0
  124. package/dist/storage/index.js +393 -0
  125. package/dist/storage/index.js.map +25 -0
  126. package/dist/storage/repositories/PostgresEngineOperationRepository.d.ts +39 -0
  127. package/dist/storage/repositories/PostgresEngineOperationRepository.d.ts.map +1 -0
  128. package/dist/storage/repositories/PostgresQueueRepository.d.ts +25 -0
  129. package/dist/storage/repositories/PostgresQueueRepository.d.ts.map +1 -0
  130. package/dist/storage/repositories/QueueRepository.d.ts +19 -0
  131. package/dist/storage/repositories/QueueRepository.d.ts.map +1 -0
  132. package/dist/storage/repositories/RedisQueueRepository.d.ts +27 -0
  133. package/dist/storage/repositories/RedisQueueRepository.d.ts.map +1 -0
  134. package/dist/subsys/DeferredTickEvaluator.d.ts +23 -0
  135. package/dist/subsys/DeferredTickEvaluator.d.ts.map +1 -0
  136. package/dist/subsys/EventBus.d.ts +13 -0
  137. package/dist/subsys/EventBus.d.ts.map +1 -0
  138. package/dist/subsys/ExecutionProfileSwitcher.d.ts +10 -0
  139. package/dist/subsys/ExecutionProfileSwitcher.d.ts.map +1 -0
  140. package/dist/subsys/LoggerService.d.ts +15 -0
  141. package/dist/subsys/LoggerService.d.ts.map +1 -0
  142. package/dist/subsys/PulsarClock.d.ts +32 -0
  143. package/dist/subsys/PulsarClock.d.ts.map +1 -0
  144. package/dist/subsys/RuntimeCacheStorage.d.ts +18 -0
  145. package/dist/subsys/RuntimeCacheStorage.d.ts.map +1 -0
  146. package/dist/subsys/RuntimeEventBridge.d.ts +14 -0
  147. package/dist/subsys/RuntimeEventBridge.d.ts.map +1 -0
  148. package/dist/transport/PulsarTransportManager.d.ts +10 -0
  149. package/dist/transport/PulsarTransportManager.d.ts.map +1 -0
  150. package/dist/transport/strategies/PollingTransport.d.ts +13 -0
  151. package/dist/transport/strategies/PollingTransport.d.ts.map +1 -0
  152. package/dist/transport/strategies/TcpListenTransport.d.ts +11 -0
  153. package/dist/transport/strategies/TcpListenTransport.d.ts.map +1 -0
  154. package/dist/transport/strategies/WebhookTransport.d.ts +9 -0
  155. package/dist/transport/strategies/WebhookTransport.d.ts.map +1 -0
  156. package/dist/transport/types.d.ts +41 -0
  157. package/dist/transport/types.d.ts.map +1 -0
  158. package/dist/types/base.types.d.ts +54 -0
  159. package/dist/types/base.types.d.ts.map +1 -0
  160. package/dist/types/config.types.d.ts +54 -0
  161. package/dist/types/config.types.d.ts.map +1 -0
  162. package/dist/types/consumer.types.d.ts +36 -0
  163. package/dist/types/consumer.types.d.ts.map +1 -0
  164. package/dist/types/engine.types.d.ts +115 -0
  165. package/dist/types/engine.types.d.ts.map +1 -0
  166. package/dist/types/eventTriggerStrategry.types.d.ts +34 -0
  167. package/dist/types/eventTriggerStrategry.types.d.ts.map +1 -0
  168. package/dist/types/integrations.types.d.ts +16 -0
  169. package/dist/types/integrations.types.d.ts.map +1 -0
  170. package/dist/types/nebula.types.d.ts +65 -0
  171. package/dist/types/nebula.types.d.ts.map +1 -0
  172. package/dist/types/queue.types.d.ts +95 -0
  173. package/dist/types/queue.types.d.ts.map +1 -0
  174. package/dist/types/runtime.types.d.ts +89 -0
  175. package/dist/types/runtime.types.d.ts.map +1 -0
  176. package/package.json +72 -5
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["..\\src\\integrations\\PulsarEventsIntegrations.ts", "..\\src\\subsys\\LoggerService.ts", "..\\src\\types\\runtime.types.ts", "..\\src\\types\\eventTriggerStrategry.types.ts", "..\\src\\service\\ConfigurationStore.ts", "..\\src\\integrations\\PulsarLoggerIntegrations.ts"],
4
+ "sourcesContent": [
5
+ "\r\nexport class PulsarEventsIntegrations {\r\n public readonly module = \"API\";\r\n\r\n constructor(private access : string) {\r\n\r\n }\r\n\r\n public async main() {\r\n \r\n }\r\n}",
6
+ "export interface ILogger {\r\n log(message : string, ...args : any[]) : void;\r\n warn(message : string, ...args : any[]) : void;\r\n error(message : string, ...args : any[]) : void;\r\n debug?(message : string, ...args : any[]) : void;\r\n}\r\n\r\nclass ConsoleLogger implements ILogger {\r\n log(message : string, ...args : any[]) { console.log(message, ...args); }\r\n warn(message : string, ...args : any[]) { console.warn(message, ...args); }\r\n error(message : string, ...args : any[]) { console.error(message, ...args); }\r\n debug(message : string, ...args : any[]) { console.debug(message, ...args); }\r\n}\r\n\r\nexport class LoggerService implements ILogger {\r\n private static provider : ILogger = new ConsoleLogger();\r\n\r\n public setProvider(customLogger: ILogger) {\r\n LoggerService.provider = customLogger;\r\n }\r\n\r\n public log(message : string, ...args : any[]) {\r\n LoggerService.provider.log(message, ...args);\r\n }\r\n\r\n public warn(message : string, ...args : any[]) {\r\n LoggerService.provider.warn(message, ...args);\r\n }\r\n\r\n public error(message : string, ...args : any[]) {\r\n LoggerService.provider.error(message, ...args);\r\n }\r\n\r\n public debug(message : string, ...args : any[]) {\r\n if (LoggerService.provider.debug) {\r\n LoggerService.provider.debug(message, ...args);\r\n }\r\n }\r\n}",
7
+ "import { IsolateInstance } from \"../service/Isolate.service.ts\";\r\nimport type { NetworkConfig } from \"../network/interfaces/network.types.ts\";\r\nimport type { BaseEngineConfig } from \"./base.types.ts\";\r\nimport type { PersistentEngine, SelfInvokingEngine } from \"./engine.types.ts\";\r\nimport type { EventTriggerStrategy } from \"./eventTriggerStrategry.types.ts\";\r\n\r\n/**\r\n * Supported runtime execution environments for Pulsar.\r\n */\r\nexport enum PulsarRuntime {\r\n /**\r\n * Configuration for ephemeral V8 isolate environments (Cloudflare Workers, Supabase Edge, Deno Deploy).\r\n * \r\n * In V8 isolate platforms, incoming requests share the same warm memory space until the isolate shuts down.\r\n * The engine relies on the required `isolate` instance to monitor remaining isolate lifespan, handle dynamic global \r\n * state, and sync tick schedules before the V8 isolate gets terminated by the cloud provider.\r\n */\r\n V8_ISOLATE = \"v8-isolate\",\r\n \r\n /**\r\n * Configuration for containerized or persistent runtime environments (AWS Lambda, GCP Cloud Run, Docker, Node.js VMs).\r\n * \r\n * Unlike V8 isolates, these environments operate in dedicated process/container sandboxes with predictable execution limits\r\n * or persistent process lifetimes. Tracking V8 isolate memory and remaining uptime across HTTP invocations is not strictly required.\r\n */\r\n SERVERLESS_VM = \"serverless-vm\",\r\n\r\n /**\r\n * Configuration for traditional, long-running persistent environments (AWS EC2, VPS, Dedicated Servers, local Node.js processes).\r\n * \r\n * Unlike ephemeral isolates or serverless containers that spin down between invocations, persistent runtimes maintain an uninterrupted \r\n * execution context and continuous process lifespan. The engine can rely on background event loops, stateful in-memory caching, \r\n * and non-ephemeral scheduling without relying on cloud provider lifecycle hooks.\r\n */\r\n PERSISTENT = \"persistent\"\r\n}\r\n\r\nexport type PulsarRuntimeType = typeof PulsarRuntime[keyof typeof PulsarRuntime];\r\n\r\nexport type ConfigForRuntime<T extends PulsarRuntimeType> = \r\n T extends typeof PulsarRuntime.V8_ISOLATE ? V8IsolateConfig :\r\n T extends typeof PulsarRuntime.SERVERLESS_VM ? ServerlessVMConfig :\r\n PersistentConfig;\r\n\r\nexport type V8IsolateConfig = BaseEngineConfig & {\r\n runtime : typeof PulsarRuntime.V8_ISOLATE;\r\n engine: SelfInvokingEngine;\r\n /**\r\n * Active isolate tracking instance.\r\n */\r\n isolate : IsolateInstance;\r\n}\r\n\r\nexport type ServerlessVMConfig = BaseEngineConfig & {\r\n runtime : typeof PulsarRuntime.SERVERLESS_VM;\r\n engine: SelfInvokingEngine;\r\n /**\r\n * Optional isolate tracking instance if custom lifecycle tracking is desired inside Lambda or containerized workers.\r\n */\r\n isolate? : IsolateInstance;\r\n}\r\n\r\nexport type PersistentConfig = BaseEngineConfig & {\r\n runtime : typeof PulsarRuntime.PERSISTENT;\r\n \r\n /**\r\n * Optional isolate tracking instance if custom lifecycle tracking is desired inside Lambda or containerized workers.\r\n */\r\n isolate? : IsolateInstance;\r\n\r\n networkInterface : {\r\n /**\r\n * Determines the operational network mode of the server.\r\n * \r\n * - `http`: Opens an HTTP server. Crucial for consumers running dependent workers \r\n * (e.g., when a consumer cannot initialize local storage configuration directly). \r\n * Dependent workers use this HTTP server for acks, retries, etc. \r\n * *(Note: This mode introduces latency and throughput limitations).*\r\n * \r\n * - `socket`: Opens a WebSocket server. Both the pulsar and consumers connect to \r\n * this socket to transport and dispatch jobs. Provides near-realtime job dispatch \r\n * performance for workers.\r\n * \r\n * - `hybrid`: Opens both HTTP and WebSocket servers simultaneously. Ideal for \r\n * multi-runtime deployed consumers where some instances operate in serverless \r\n * functions and others on a VPS, allowing each consumer to select its optimal \r\n * server option based on its specific configuration.\r\n */\r\n mode : Exclude<NetworkConfig[\"mode\"], \"client\">;\r\n /**\r\n * The port number on which the server instance will listen for incoming traffic.\r\n */\r\n port : NetworkConfig[\"port\"];\r\n /**\r\n * Optional hostname or IP address to bind the server to.\r\n */\r\n host? : NetworkConfig[\"host\"];\r\n }\r\n \r\n eventTriggerStrategy : typeof EventTriggerStrategy[keyof typeof EventTriggerStrategy];\r\n engine : PersistentEngine;\r\n}",
8
+ "export enum EventTriggerStrategy {\r\n /**\r\n * Uses PostgreSQL LISTEN/NOTIFY (PG Notify) for real-time event-driven queue triggering.\r\n * \r\n * **How it works:** The engine establishes a persistent subscription to a database channel. \r\n * When an event occurs, Postgres broadcasts an instant notification, triggering the queues \r\n * immediately with minimal latency and zero polling overhead.\r\n * \r\n * **Crucial Infrastructure Requirement:** This strategy **requires a direct, persistent TCP \r\n * connection URL** provided to the Postgres driver. If your database infrastructure uses serverless \r\n * proxies, restricted connection pools, or environments that do not support long-lived TCP socket \r\n * listeners (LISTEN/NOTIFY state), this strategy will fail to receive events.\r\n */\r\n POSTGRES_NOTIFY = \"POSTGRES_NOTIFY\",\r\n\r\n /**\r\n * Uses an external HTTP webhook driven directly by the database (`pg_net`).\r\n * \r\n * **How it works:** This strategy requires an accessible HTTP endpoint to be exposed on the \r\n * running container or machine. When an event occurs, Postgres utilizes the built-in `pg_net` \r\n * extension to fire an outbound HTTP request directly to this endpoint, which in turn invokes \r\n * and executes the event-driven queues.\r\n */\r\n WEBHOOK = \"WEBHOOK\",\r\n\r\n /**\r\n * Uses a database-backed table polling mechanism.\r\n * \r\n * **How it works:** Completely independent of persistent TCP notification sockets or HTTP \r\n * endpoints. Instead, event producers insert new task rows directly into a designated \r\n * subscription table. The engine periodically polls this table at a configured interval \r\n * (e.g., every 500ms) to scan for new rows, process them, and trigger the respective queues.\r\n */\r\n POLLING = \"POLLING\"\r\n}",
9
+ "import type { EngineConfig } from \"../types/base.types.ts\";\r\nimport type { QueueModule } from \"../helpers/defineQueue\";\r\nimport type { PostgresEngineOperationRepository } from \"../storage/repositories/PostgresEngineOperationRepository\";\r\nimport type { EngineQueuesConfig } from \"../types/queue.types\";\r\nimport type { PathValue, SettablePathKeys, ReadablePathKeys } from \"../types/config.types\";\r\n\r\nimport { LoggerService, type ILogger } from \"../subsys/LoggerService.ts\";\r\nimport { PulsarRuntime } from \"../types/runtime.types.ts\";\r\nimport { EventTriggerStrategy } from \"../types/eventTriggerStrategry.types.ts\";\r\n\r\nconst RUNTIME_BLOCKED_KEYS = new Set([\"storage\", \"runtime\", \"onEvents\", \"isolate\", \"queue\"]);\r\n\r\nconst RUNTIME_BLOCKED_QUEUE_KEYS = new Set<string>([\"queue\", \"deadLetterQueue\"]);\r\n\r\nexport class ConfigurationStore {\r\n private static instance : ConfigurationStore;\r\n protected _config? : EngineConfig;\r\n private initialSnapshot? : EngineConfig;\r\n private logger : ILogger;\r\n\r\n constructor() {\r\n this.logger = new LoggerService();\r\n }\r\n\r\n public static getInstance() : ConfigurationStore {\r\n if (!ConfigurationStore.instance) {\r\n ConfigurationStore.instance = new ConfigurationStore();\r\n }\r\n return ConfigurationStore.instance;\r\n }\r\n\r\n public initialize(baseConfig : EngineConfig) {\r\n this._config = {\r\n swarmConfig : {\r\n globalMaxJobsPerTick : 100_000,\r\n maxGlobalConcurrency : 10_000,\r\n spawnerAlgorithm : \"ROUND_ROBIN\",\r\n ...baseConfig.swarmConfig, \r\n },\r\n ...baseConfig,\r\n engine: {\r\n ...(baseConfig.runtime == PulsarRuntime.PERSISTENT ? {\r\n poolingIntervalSec : 5\r\n } : {}),\r\n\r\n ...(baseConfig.runtime == PulsarRuntime.SERVERLESS_VM || PulsarRuntime.V8_ISOLATE ? {\r\n selfInvocationMethod : \"auto_using_pgnet\",\r\n selfInvocationIntervalSec : 1,\r\n healthCheckIntervalSec : 15,\r\n selfRestartIntervalSec : 60,\r\n } : {}),\r\n\r\n tickConcurrency : \"sequential\",\r\n cycleTickLimit : 1000,\r\n \r\n ...baseConfig.engine,\r\n },\r\n queues : baseConfig.queues.map(q => ({\r\n stateTransitionPolicy : {\r\n enabled : true,\r\n idleThresholdTicks : 10,\r\n idleTimingProfile : 'RELAXED'\r\n },\r\n ...q\r\n }))\r\n } as EngineConfig;\r\n\r\n this.throwExpectionOnInvalidConfiguration(this._config);\r\n\r\n this.initialSnapshot = Object.freeze(JSON.parse(JSON.stringify(this._config)));\r\n }\r\n\r\n private throwExpectionOnInvalidConfiguration(config : EngineConfig) {\r\n const queues : Array<QueueModule> = config.queues;\r\n\r\n if(queues.length == 0) {\r\n this.logger.error(`[Pulsar] Runtime configuration error: \"queues\" atleast 1 queue is required to operate.`);\r\n throw new Error(`[Pulsar] Runtime configuration error: \"queues\" atleast 1 queue is required to operate.`);\r\n }\r\n\r\n if (config.runtime === PulsarRuntime.V8_ISOLATE && !config.isolate) {\r\n this.logger.error(`[Pulsar] Runtime configuration error: \"isolate\" instance is required when running in \"${PulsarRuntime.V8_ISOLATE}\" mode.`);\r\n throw new Error(`[Pulsar] Runtime configuration error: \"isolate\" instance is required when running in \"${PulsarRuntime.V8_ISOLATE}\" mode.`);\r\n }\r\n\r\n const queueCounts = queues.reduce<Record<string, number>>((acc, q) => {\r\n acc[q.queue] = (acc[q.queue] || 0) + 1;\r\n return acc;\r\n }, {})\r\n\r\n const duplicateQueueNames = Object.keys(queueCounts).filter(queueName => queueCounts[queueName]! > 1);\r\n\r\n if(duplicateQueueNames.length > 0) {\r\n this.logger.error(\"[ConfigurationStore]: Duplicate queues found -> \", duplicateQueueNames);\r\n throw new Error(\"Duplicate queue names detected in the configuration.\");\r\n }\r\n\r\n const consumers = queues.map(q => q.consumer);\r\n\r\n if(config.runtime !== PulsarRuntime.PERSISTENT) {\r\n const hasSocketConsumer = consumers.find(c => c.type == \"socket\");\r\n \r\n if(hasSocketConsumer) {\r\n this.logger.error(`${JSON.stringify(hasSocketConsumer)}`);\r\n throw new Error(`Consumers do not support non-persistent socket types. Please either remove the 'socket' type from the consumer or update the runtime to PERSISTENT.`);\r\n }\r\n }\r\n\r\n for(const consumer of consumers) {\r\n if(consumer.type == \"http\") {\r\n try {\r\n const parsedUrl = new URL(consumer.url);\r\n if (parsedUrl.protocol !== \"http:\" && parsedUrl.protocol !== \"https:\") {\r\n this.logger.error(`${consumer.queue} - ${consumer.url}`);\r\n throw new Error(`Invalid protocol '${parsedUrl.protocol}' for consumer URL. Only HTTP and HTTPS are supported.`);\r\n }\r\n }\r\n catch (error) {\r\n this.logger.error(`${consumer.queue} - ${consumer.url}`);\r\n const errorMessage = error instanceof Error ? error.message : \"An unknown error occurred while parsing the consumer URL.\";\r\n throw new Error(`Failed to validate consumer URL: ${errorMessage}`);\r\n }\r\n }\r\n else if (consumer.type == \"callback\") {\r\n if(!consumer.handler) {\r\n throw new Error(`Consumer handler is required. Please provide a valid handler function.`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private ensureInitialized() : asserts this is { _config: EngineConfig } {\r\n if (!this._config) {\r\n throw new Error(\"[ConfigurationStore]: Engine configuration store is not initialized. Call initialize() first.\");\r\n }\r\n if (!this.initialSnapshot) {\r\n throw new Error(\"[ConfigurationStore]: Engine initial snapshot is not initialized\");\r\n }\r\n }\r\n\r\n public get raw() : Readonly<EngineConfig> {\r\n this.ensureInitialized();\r\n return this._config;\r\n }\r\n\r\n public get<P extends ReadablePathKeys<EngineConfig>>(path : P) : PathValue<EngineConfig, P> {\r\n this.ensureInitialized();\r\n\r\n const keys = path.split(\".\");\r\n let current: any = this._config;\r\n\r\n for (const key of keys) {\r\n if (current === undefined || current === null) {\r\n return undefined as PathValue<EngineConfig, P>;\r\n }\r\n current = current[key];\r\n }\r\n\r\n return current as PathValue<EngineConfig, P>;\r\n }\r\n\r\n public getInitialSnapshot() : Readonly<EngineConfig> {\r\n this.ensureInitialized();\r\n return Object.freeze({ ...this.initialSnapshot! });\r\n }\r\n\r\n public set<P extends SettablePathKeys<EngineConfig>>(path: P, value: PathValue<EngineConfig, P>): void {\r\n this.ensureInitialized();\r\n\r\n const keys = path.split(\".\");\r\n const rootKey = keys[0]!;\r\n\r\n if (RUNTIME_BLOCKED_KEYS.has(rootKey)) {\r\n throw new Error(`[ConfigurationStore]: Modifying path '${path}' via set() is forbidden.`);\r\n }\r\n\r\n let current: any = this._config!;\r\n\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i]!;\r\n if (!(key in current) || typeof current[key] !== \"object\") {\r\n current[key] = {};\r\n }\r\n current = current[key];\r\n }\r\n\r\n current[keys[keys.length - 1]!] = value;\r\n }\r\n\r\n public modifyQueue<K extends keyof EngineQueuesConfig, P extends SettablePathKeys<EngineQueuesConfig>>(\r\n queue : string,\r\n key : K,\r\n value : PathValue<EngineQueuesConfig, P>\r\n ) {\r\n this.ensureInitialized();\r\n\r\n if (RUNTIME_BLOCKED_QUEUE_KEYS.has(key as string)) {\r\n throw new Error(`[ConfigurationStore]: Property '${String(key)}' on queue '${queue}' cannot be modified at runtime.`);\r\n }\r\n\r\n const targetQueueIndex = this._config.queues.findIndex(q => q.queue == queue);\r\n\r\n if(!this._config['queues'][targetQueueIndex]) {\r\n throw new Error(`[ConfigurationStore]: Modifying queue '${queue}' not found.`);\r\n }\r\n\r\n this._config['queues'][targetQueueIndex]![key] = value as unknown as QueueModule[K];\r\n }\r\n\r\n public async reconcileConfiguration(repository : PostgresEngineOperationRepository) {\r\n const initialSnapshot = this.getInitialSnapshot();\r\n \r\n const selfUrl = (\r\n initialSnapshot.runtime === PulsarRuntime.SERVERLESS_VM ||\r\n initialSnapshot.runtime === PulsarRuntime.V8_ISOLATE\r\n ) ? initialSnapshot.engine.selfURL : 'NOT_REQUIRED';\r\n\r\n const ConfigurationObject = {\r\n queues : initialSnapshot.queues.map(q => ({\r\n queue : q.queue,\r\n pooler : q.pooler\r\n })),\r\n runtime : initialSnapshot.runtime,\r\n event_trigger_strategy : initialSnapshot.runtime == PulsarRuntime['PERSISTENT'] ? initialSnapshot.eventTriggerStrategy : EventTriggerStrategy.WEBHOOK,\r\n self_url : selfUrl\r\n }\r\n\r\n const configurationSyncStatus = await repository.verifyAndSyncConfiguration(\r\n 'PULSAR_STANDALONE',\r\n initialSnapshot.instanceId as string,\r\n selfUrl,\r\n ConfigurationObject\r\n )\r\n\r\n if(!configurationSyncStatus.isChanged && !configurationSyncStatus.isNew) {\r\n this.logger.log(`[Configuration] status : [VALID].`);\r\n return `[Configuration] status : [VALID].`;\r\n }\r\n else {\r\n this.logger.log(`[Configuration] status : [INVALID & Reconciled].`);\r\n return `[Configuration] status : [INVALID & Reconciled].`;\r\n }\r\n }\r\n}\r\n\r\nexport const config = ConfigurationStore.getInstance();",
10
+ "import type { PulsarCore } from \"../service/PulsarBaseService\";\r\nimport type { ILogger } from \"../subsys/LoggerService\";\r\nimport type { IIntegration } from \"../types/integrations.types\";\r\nimport { config } from \"../service/ConfigurationStore\";\r\n\r\nexport class PulsarLoggerIntegrations implements IIntegration, ILogger {\r\n public readonly module = \"LOGGER\";\r\n\r\n constructor() {}\r\n\r\n public async main(engine : PulsarCore) {\r\n engine.logger.setProvider(this);\r\n console.log(`Log Provider Set to : [PulsarLoggerIntegrations]`);\r\n }\r\n\r\n public log(msg : string, payload?: unknown) {\r\n config.raw.logger?.log(msg, ...(payload !== undefined ? [payload] : []));\r\n }\r\n\r\n public warn(msg : string, payload?: unknown) {\r\n config.raw.logger?.warn(msg, ...(payload !== undefined ? [payload] : []));\r\n }\r\n\r\n public error(msg : string, payload?: unknown) {\r\n config.raw.logger?.error(msg, ...(payload !== undefined ? [payload] : []));\r\n }\r\n}"
11
+ ],
12
+ "mappings": "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",
13
+ "debugId": "715CB7D2A121E5E164756E2164756E21",
14
+ "names": []
15
+ }
@@ -0,0 +1,45 @@
1
+ import type { JSONValue, Sql } from "postgres";
2
+ import type { QUEUE } from "../static/static.d.ts";
3
+ import type { PulsarUnifiedStorage } from "../storage/PulsarStorage.d.ts";
4
+ import type { QueueMessage } from "../types/queue.types.d.ts";
5
+ interface ITriggerURL {
6
+ url: string;
7
+ body?: JSONValue;
8
+ headers?: Record<string, string>;
9
+ delaySeconds?: number;
10
+ }
11
+ interface ISingleQueueMetrics {
12
+ queueName: string;
13
+ readyJobs: number;
14
+ delayedJobs: number;
15
+ total: number;
16
+ nextVisibleAt: number | null;
17
+ }
18
+ export declare class QueueService {
19
+ protected sql: Sql;
20
+ constructor(storage: PulsarUnifiedStorage);
21
+ triggerUrl({ body, delaySeconds, headers, url }: ITriggerURL): Promise<boolean>;
22
+ send<T = unknown>(queue: string, message: T, delaySeconds?: number): Promise<bigint>;
23
+ /**
24
+ * Read jobs using PGMQ's native FIFO strategies.
25
+ * @param strategy 'rr' (Round Robin), 'grouped' (SQS-style), or 'head' (One per group)
26
+ */
27
+ readFifo(queue: string, vt: number, qty: number, strategy?: 'rr' | 'grouped' | 'head'): Promise<any[]>;
28
+ read<T = unknown>(queue: string, visibilityTimeout?: number, quantity?: number): Promise<QueueMessage<T>[]>;
29
+ ack(queue: string, messageId: bigint): Promise<boolean>;
30
+ ackBatch(queue: string, messageIds: number[]): Promise<boolean>;
31
+ retryBatch(queue: string, messageIds: number[]): Promise<number>;
32
+ retry(queue: string, messageId: bigint): Promise<boolean>;
33
+ delayRetry(queue: string, messageId: bigint, seconds: number): Promise<boolean>;
34
+ getSingleQueueMetrics(queueName: string): Promise<ISingleQueueMetrics | null>;
35
+ getAllQueueMetrics(): Promise<{
36
+ queue_name: QUEUE;
37
+ ready_jobs: number;
38
+ delayed_jobs: number;
39
+ total: number;
40
+ next_visible_at: number;
41
+ }[]>;
42
+ closeQueue(): Promise<void>;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=Queue.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queue.module.d.ts","sourceRoot":"","sources":["../../src/modules/Queue.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,UAAU,WAAW;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAG,MAAM,CAAC;CAC1B;AAED,UAAU,mBAAmB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,qBAAa,YAAY;IACrB,SAAS,CAAC,GAAG,EAAG,GAAG,CAAC;gBAEP,OAAO,EAAG,oBAAoB;IAI9B,UAAU,CAAC,EAAE,IAAO,EAAE,YAAc,EAAE,OAA4C,EAAE,GAAG,EAAE,EAAG,WAAW;IAavG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,SAAI,GAAI,OAAO,CAAC,MAAM,CAAC;IAM7F;;;OAGG;IACU,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,IAAI,GAAG,SAAS,GAAG,MAAkB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAOjH,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,SAAK,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAYlG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWvD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB/D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBhE,KAAK,CAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAC,SAAS,EAAE,MAAM,EAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY7E,qBAAqB,CAAC,SAAS,EAAG,MAAM,GAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAuB/E,kBAAkB,IAAK,OAAO,CAAC;QAAE,UAAU,EAAG,KAAK,CAAC;QAAC,UAAU,EAAG,MAAM,CAAC;QAAC,YAAY,EAAG,MAAM,CAAC;QAAC,KAAK,EAAG,MAAM,CAAC;QAAC,eAAe,EAAG,MAAM,CAAA;KAAE,EAAE,CAAC;IAY9I,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAG3C"}
@@ -0,0 +1,42 @@
1
+ import { type TimingProfile, type TimingProfileType } from "../static/TimingProfile.d.ts";
2
+ export interface ScheduleRequest {
3
+ queue: string;
4
+ readyJobs: number;
5
+ delayedJobs: number;
6
+ availableSlots: number;
7
+ nextVisibleAt?: number | null;
8
+ }
9
+ interface ScheduleMetrics {
10
+ queue: string;
11
+ readyJobs: number;
12
+ delayedJobs: number;
13
+ availableSlots: number;
14
+ nextVisibleAt?: number | null;
15
+ }
16
+ interface ScheduleOptions {
17
+ metrics: ScheduleMetrics;
18
+ /** Standard wakeup handler for ready/backoff/idle ticks */
19
+ onNext: () => void | Promise<void>;
20
+ /** Specialized handler when scheduling near-term delayed jobs */
21
+ onUpcomingDelayedNext?: (upcomingTimeMs: number) => void | Promise<void>;
22
+ /** Async hook for long delays exceeding maxTimerMs (e.g. persistent state / external triggers) */
23
+ onFutureSchedule?: (nextVisibleAt: number) => Promise<void>;
24
+ }
25
+ export declare class Scheduler {
26
+ private timers;
27
+ private profiles;
28
+ constructor();
29
+ /**
30
+ * Register a timing profile for a queue
31
+ */
32
+ registerQueueProfile(queue: string, profileInput: TimingProfileType | TimingProfile): void;
33
+ getProfile(queue: string): TimingProfile;
34
+ /**
35
+ * Cancel pending schedules for a queue
36
+ */
37
+ cancel(queue: string): void;
38
+ scheduleNext(options: ScheduleOptions): void;
39
+ private setTimer;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=Scheduler.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scheduler.module.d.ts","sourceRoot":"","sources":["../../src/modules/Scheduler.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEzG,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAG,MAAM,CAAC;IACf,SAAS,EAAG,MAAM,CAAC;IACnB,WAAW,EAAG,MAAM,CAAC;IACrB,cAAc,EAAG,MAAM,CAAC;IACxB,aAAa,CAAC,EAAG,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,UAAU,eAAe;IACrB,KAAK,EAAG,MAAM,CAAC;IACf,SAAS,EAAG,MAAM,CAAC;IACnB,WAAW,EAAG,MAAM,CAAC;IACrB,cAAc,EAAG,MAAM,CAAC;IACxB,aAAa,CAAC,EAAG,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,UAAU,eAAe;IACrB,OAAO,EAAG,eAAe,CAAC;IAC1B,2DAA2D;IAC3D,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iEAAiE;IACjE,qBAAqB,CAAC,EAAE,CAAC,cAAc,EAAG,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAID,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAoD;IAClE,OAAO,CAAC,QAAQ,CAAoC;;IAIpD;;OAEG;IACI,oBAAoB,CAAC,KAAK,EAAG,MAAM,EAAE,YAAY,EAAG,iBAAiB,GAAG,aAAa;IAUrF,UAAU,CAAC,KAAK,EAAG,MAAM,GAAI,aAAa;IAgBjD;;OAEG;IACI,MAAM,CAAC,KAAK,EAAG,MAAM;IASrB,YAAY,CAAC,OAAO,EAAG,eAAe,GAAG,IAAI;IA+CpD,OAAO,CAAC,QAAQ;CAiBnB"}
@@ -0,0 +1,38 @@
1
+ import type { QueueService } from "./Queue.module.d.ts";
2
+ import type { ConsumerDispatch } from '../dispatch/ConsumerDispatch.d.ts';
3
+ import type { SwarmManager } from '../service/SwarmBudgetTracker.d.ts';
4
+ import type { PulsarUnifiedStorage } from '../storage/PulsarStorage.d.ts';
5
+ import type { EngineQueuesConfig, QueueMessage } from "../types/queue.types.d.ts";
6
+ import type { UnifiedTransportManager } from "../network/UnifiedTransportManager.d.ts";
7
+ import type { PulsarEventBus } from "../service/PulsarEventBus.d.ts";
8
+ export interface IBatchCandidate {
9
+ workerId: string;
10
+ batch: QueueMessage[];
11
+ }
12
+ interface ITick {
13
+ storage: PulsarUnifiedStorage;
14
+ queue: QueueService;
15
+ events: PulsarEventBus;
16
+ dispatcher: ConsumerDispatch;
17
+ swarmManager: SwarmManager;
18
+ unifiedTransportManager: UnifiedTransportManager;
19
+ }
20
+ export declare class TickService {
21
+ private storage;
22
+ private queue;
23
+ private dispatcher;
24
+ private executionProfileSwitcher;
25
+ private unifiedTransportManager;
26
+ private swarmManager;
27
+ private PROCESS_ID;
28
+ private globalSequence;
29
+ private consecutiveEmptyTicks;
30
+ private logger;
31
+ private events;
32
+ constructor({ dispatcher, queue, storage, swarmManager, unifiedTransportManager, events }: ITick);
33
+ run(queueConfig: EngineQueuesConfig, maxGlobalSlotsAllowed: number): Promise<void>;
34
+ private spwanWorkers;
35
+ private getCandidatesBatch;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=Tick.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tick.module.d.ts","sourceRoot":"","sources":["../../src/modules/Tick.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGhF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAG,MAAM,CAAC;IAClB,KAAK,EAAG,YAAY,EAAE,CAAC;CAC1B;AAaD,UAAU,KAAK;IACX,OAAO,EAAG,oBAAoB,CAAC;IAC/B,KAAK,EAAG,YAAY,CAAC;IACrB,MAAM,EAAG,cAAc,CAAC;IACxB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAG,YAAY,CAAC;IAC5B,uBAAuB,EAAG,uBAAuB,CAAA;CACpD;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,wBAAwB,CAA4B;IAE5D,OAAO,CAAC,uBAAuB,CAA2B;IAE1D,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,MAAM,CAAkB;gBAEnB,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAG,KAAK;IAiBrF,GAAG,CAAC,WAAW,EAAG,kBAAkB,EAAE,qBAAqB,EAAG,MAAM;YAoDnE,YAAY;YA4BZ,kBAAkB;CAuDnC"}
@@ -0,0 +1,36 @@
1
+ import type { Scheduler } from "./Scheduler.module.d.ts";
2
+ import type { TickService } from "./Tick.module.d.ts";
3
+ import type { PulsarClock } from "../subsys/PulsarClock.d.ts";
4
+ import type { PulsarUnifiedStorage } from "../storage/PulsarStorage.d.ts";
5
+ import type { PulsarEventBus } from "../service/PulsarEventBus.d.ts";
6
+ import type { EngineQueuesConfig } from "../types/queue.types.d.ts";
7
+ import type { PulsarRuntimeCore } from "../shared/PulsarRuntimeCore.d.ts";
8
+ interface ITickController {
9
+ clock: PulsarClock;
10
+ tickService: TickService;
11
+ scheduler: Scheduler;
12
+ storage: PulsarUnifiedStorage;
13
+ runtimeStrategy: PulsarRuntimeCore;
14
+ events: PulsarEventBus;
15
+ }
16
+ export declare class TickController {
17
+ private clock;
18
+ private tickService;
19
+ private scheduler;
20
+ private storage;
21
+ private events;
22
+ private runtimeStrategy;
23
+ private tickState;
24
+ private activeTicks;
25
+ private lastHealthCheckAt;
26
+ private logger;
27
+ constructor({ scheduler, storage, tickService, clock, events, runtimeStrategy }: ITickController);
28
+ initializeState(): void;
29
+ runTick(queueConfig: EngineQueuesConfig): Promise<void>;
30
+ endTick(queue: string): void;
31
+ private initializeTickState;
32
+ private updateTickCounter;
33
+ private triggerPeriodicHealthCheck;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=TickController.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TickController.module.d.ts","sourceRoot":"","sources":["../../src/modules/TickController.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,UAAU,eAAe;IACrB,KAAK,EAAG,WAAW,CAAC;IACpB,WAAW,EAAG,WAAW,CAAC;IAC1B,SAAS,EAAG,SAAS,CAAC;IACtB,OAAO,EAAG,oBAAoB,CAAC;IAC/B,eAAe,EAAG,iBAAiB,CAAC;IACpC,MAAM,EAAG,cAAc,CAAC;CAC3B;AAGD,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAc;IAE3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAoB;IAE3C,OAAO,CAAC,SAAS,CAA6F;IAC9G,OAAO,CAAC,WAAW,CAAqB;IAExC,OAAO,CAAC,iBAAiB,CAAc;IAEvC,OAAO,CAAC,MAAM,CAAW;gBAEb,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,eAAe;IAczF,eAAe;IAKT,OAAO,CAAC,WAAW,EAAG,kBAAkB;IAyC9C,OAAO,CAAC,KAAK,EAAE,MAAM;IAwB5B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,0BAA0B;CAUrC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PulsarMonitoringStreamProducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PulsarMonitoringStreamProducer.d.ts","sourceRoot":"","sources":["../../src/monitoring/PulsarMonitoringStreamProducer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/monitoring/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PulsarMonitoringStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PulsarMonitoringStream.d.ts","sourceRoot":"","sources":["../../../src/monitoring/server/PulsarMonitoringStream.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import EventEmitter from "eventemitter3";
2
+ import type { NetworkConfig } from "./interfaces/network.types";
3
+ export declare class NetworkInterface extends EventEmitter {
4
+ private readonly config;
5
+ private serverInstance;
6
+ private logger;
7
+ onFetch?: (request: Request) => Promise<Response> | Response;
8
+ constructor(config: NetworkConfig);
9
+ start(): Promise<void>;
10
+ close(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=NetworkInterface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkInterface.d.ts","sourceRoot":"","sources":["../../src/network/NetworkInterface.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,qBAAa,gBAAiB,SAAQ,YAAY;IAMlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,MAAM,CAAW;IAElB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBAExC,MAAM,EAAG,aAAa;IAKtC,KAAK;IAyCL,KAAK;CAQrB"}
@@ -0,0 +1,19 @@
1
+ import type { NetworkConfig } from "./interfaces/network.types";
2
+ import type { PulsarUnifiedStorage } from "../storage/PulsarStorage";
3
+ import type { QueueService } from "../modules/Queue.module";
4
+ export declare class UnifiedTransportManager {
5
+ private readonly config;
6
+ private storage;
7
+ private queueServuce;
8
+ private drivers;
9
+ readonly topology: NetworkConfig['mode'];
10
+ private networkInterface?;
11
+ private readonly isServerMode;
12
+ constructor(config: NetworkConfig, storage: PulsarUnifiedStorage, queueServuce: QueueService);
13
+ private initializeTopology;
14
+ bootAll(): Promise<void>;
15
+ shutdownAll(): Promise<void>;
16
+ onTrigger(onTrigger: (queue: string, data: any) => void): void;
17
+ dispatchToNetwork(queue: string, payload: any): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=UnifiedTransportManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnifiedTransportManager.d.ts","sourceRoot":"","sources":["../../src/network/UnifiedTransportManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAQ5D,qBAAa,uBAAuB;IAMpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAkB,OAAO,CAAC,OAAO;IAAyB,OAAO,CAAC,YAAY;IALjH,OAAO,CAAC,OAAO,CAA4B;IAC3C,SAAgB,QAAQ,EAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAW;gBAEX,MAAM,EAAG,aAAa,EAAU,OAAO,EAAG,oBAAoB,EAAU,YAAY,EAAG,YAAY;IAShI,OAAO,CAAC,kBAAkB;IAYb,OAAO;IAUP,WAAW;IAUjB,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAG,MAAM,EAAE,IAAI,EAAG,GAAG,KAAK,IAAI;IAMnD,iBAAiB,CAAC,KAAK,EAAG,MAAM,EAAE,OAAO,EAAG,GAAG;CAqB/D"}
@@ -0,0 +1,18 @@
1
+ import { type ILogger } from "../../subsys/LoggerService";
2
+ import { type RuntimeCacheStorage } from "../../subsys/RuntimeCacheStorage";
3
+ import type { NetworkConfig } from "../interfaces/network.types";
4
+ export declare abstract class BaseNetworkDriver {
5
+ protected readonly config: NetworkConfig;
6
+ protected isRunning: boolean;
7
+ protected logger: ILogger;
8
+ abstract interface: "WEBSOCKET" | "HTTP";
9
+ /** Runtime Storage */
10
+ protected rs: RuntimeCacheStorage;
11
+ constructor(config: NetworkConfig);
12
+ abstract start(): Promise<void>;
13
+ abstract stop(): Promise<void>;
14
+ abstract broadcast(queue: string, payload: any): Promise<void>;
15
+ abstract onTrigger(handler: (queue: string, data: any) => void): void;
16
+ abstract getActiveConnections(queue: string): string[];
17
+ }
18
+ //# sourceMappingURL=BaseNetworkDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseNetworkDriver.d.ts","sourceRoot":"","sources":["../../../src/network/abstract/BaseNetworkDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,8BAAsB,iBAAiB;IASvB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAG,aAAa;IARrD,SAAS,CAAC,SAAS,EAAG,OAAO,CAAS;IACtC,SAAS,CAAC,MAAM,EAAG,OAAO,CAAC;IAE3B,SAAgB,SAAS,EAAG,WAAW,GAAG,MAAM,CAAC;IAEjD,sBAAsB;IACtB,SAAS,CAAC,EAAE,EAAG,mBAAmB,CAAC;gBAEJ,MAAM,EAAG,aAAa;aAKrC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;aACvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;aACtB,SAAS,CAAC,KAAK,EAAG,MAAM,EAAE,OAAO,EAAG,GAAG,GAAI,OAAO,CAAC,IAAI,CAAC;aACxD,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,GAAI,IAAI;aAE7D,oBAAoB,CAAC,KAAK,EAAG,MAAM,GAAI,MAAM,EAAE;CAClE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Authenticator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Authenticator.d.ts","sourceRoot":"","sources":["../../../src/network/auth/Authenticator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import type { PulsarUnifiedStorage } from "../../storage/PulsarStorage";
2
+ import type { NetworkConfig } from "../interfaces/network.types";
3
+ import type { NetworkInterface } from "../NetworkInterface";
4
+ import type { QueueService } from "../../modules/Queue.module";
5
+ import { BaseNetworkDriver } from "../abstract/BaseNetworkDriver";
6
+ export declare class HttpNetworkDriver extends BaseNetworkDriver {
7
+ readonly networkConfig: NetworkConfig;
8
+ private readonly networkInterface;
9
+ private storage;
10
+ private queueService;
11
+ readonly interface = "HTTP";
12
+ private consumersMap;
13
+ private triggerHandler?;
14
+ constructor(networkConfig: NetworkConfig, networkInterface: NetworkInterface, storage: PulsarUnifiedStorage, queueService: QueueService);
15
+ start(): Promise<void>;
16
+ broadcast(queue: string, payload: any): Promise<void>;
17
+ getActiveConnections(queue: string): never[];
18
+ onTrigger(handler: (queue: string, data: any) => void): void;
19
+ stop(): Promise<void>;
20
+ private handleFetch;
21
+ private performBatchAction;
22
+ private parseBody;
23
+ private extractContext;
24
+ private getMessageIds;
25
+ private handleAck;
26
+ private handleNack;
27
+ private handleRetry;
28
+ private handleDeregister;
29
+ }
30
+ //# sourceMappingURL=HttpNetworkDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpNetworkDriver.d.ts","sourceRoot":"","sources":["../../../src/network/drivers/HttpNetworkDriver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAalE,qBAAa,iBAAkB,SAAQ,iBAAiB;IAOhD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IATxB,SAAyB,SAAS,UAAU;IAE5C,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,cAAc,CAAC,CAAqC;gBAG/C,aAAa,EAAE,aAAa,EACpB,gBAAgB,EAAE,gBAAgB,EAC3C,OAAO,EAAE,oBAAoB,EAC7B,YAAY,EAAE,YAAY;IAehB,KAAK;IAEL,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IA+BpD,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAIlC,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI;IAItC,IAAI;YAEZ,WAAW;YA6BX,kBAAkB;IAuBhC,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,cAAc;YAaR,aAAa;YAWb,SAAS;YAMT,UAAU;YAMV,WAAW;YAMX,gBAAgB;CAUjC"}
@@ -0,0 +1,13 @@
1
+ import { BaseNetworkDriver } from "../abstract/BaseNetworkDriver";
2
+ import type { NetworkConfig } from "../interfaces/network.types";
3
+ export declare class ServerlessNetworkDriver extends BaseNetworkDriver {
4
+ readonly interface = "HTTP";
5
+ private consumersMap;
6
+ constructor(networkConfig: NetworkConfig);
7
+ broadcast(queue: string, payload: any): Promise<void>;
8
+ start(): Promise<void>;
9
+ onTrigger(handler: (queue: string, data: any) => void): void;
10
+ getActiveConnections(queue: string): never[];
11
+ stop(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=ServerlessNetworkDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerlessNetworkDriver.d.ts","sourceRoot":"","sources":["../../../src/network/drivers/ServerlessNetworkDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,qBAAa,uBAAwB,SAAQ,iBAAiB;IAC1D,SAAyB,SAAS,UAAU;IAC5C,OAAO,CAAC,YAAY,CAAqC;gBAE5C,aAAa,EAAG,aAAa;IAUpB,SAAS,CAAC,KAAK,EAAG,MAAM,EAAE,OAAO,EAAG,GAAG;IA4BvC,KAAK;IACpB,SAAS,CAAC,OAAO,EAAG,CAAC,KAAK,EAAG,MAAM,EAAE,IAAI,EAAG,GAAG,KAAK,IAAI;IACxD,oBAAoB,CAAC,KAAK,EAAG,MAAM;IACpB,IAAI;CAC7B"}
@@ -0,0 +1,24 @@
1
+ import { BaseNetworkDriver } from "../abstract/BaseNetworkDriver";
2
+ import type { NetworkConfig } from "../interfaces/network.types";
3
+ import type { NetworkInterface } from "../NetworkInterface";
4
+ export declare class WebSocketNetworkDriver extends BaseNetworkDriver {
5
+ private networkInterface;
6
+ readonly interface = "WEBSOCKET";
7
+ private queuePeers;
8
+ private triggerHandler?;
9
+ private boundOpen;
10
+ private boundMessage;
11
+ private boundClose;
12
+ constructor(config: NetworkConfig, networkInterface: NetworkInterface);
13
+ start(): Promise<void>;
14
+ broadcast(queue: string, payload: any): Promise<void>;
15
+ getActiveConnections(queue: string): string[];
16
+ onTrigger(handler: (queue: string, data: any) => void): void;
17
+ stop(): Promise<void>;
18
+ private onConnectionOpen;
19
+ private onMessage;
20
+ private handleWorkerRegistration;
21
+ private handleWorkerMessage;
22
+ private onConnectionClose;
23
+ }
24
+ //# sourceMappingURL=WebSocketNetworkDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketNetworkDriver.d.ts","sourceRoot":"","sources":["../../../src/network/drivers/WebSocketNetworkDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,sBAAuB,SAAQ,iBAAiB;IAUrB,OAAO,CAAC,gBAAgB;IAT5D,SAAyB,SAAS,eAAe;IAEjD,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,cAAc,CAAC,CAAuC;IAE9D,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,YAAY,CAAqE;IACzF,OAAO,CAAC,UAAU,CAAiD;gBAEvD,MAAM,EAAG,aAAa,EAAU,gBAAgB,EAAG,gBAAgB;IAQzD,KAAK;IAyBL,SAAS,CAAC,KAAK,EAAG,MAAM,EAAE,OAAO,EAAG,GAAG;IAmBtD,oBAAoB,CAAC,KAAK,EAAG,MAAM;IAMnC,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,EAAG,MAAM,EAAE,IAAI,EAAG,GAAG,KAAK,IAAI;IAIxC,IAAI;IAc1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,iBAAiB;CAa5B"}
@@ -0,0 +1,2 @@
1
+ export declare function ack(): Promise<void>;
2
+ //# sourceMappingURL=httpQueueOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpQueueOperations.d.ts","sourceRoot":"","sources":["../../../src/network/helpers/httpQueueOperations.ts"],"names":[],"mappings":"AAAA,wBAAsB,GAAG,kBAExB"}
@@ -0,0 +1,13 @@
1
+ export type NetworkDriverMode = "http" | "websocket" | "hybrid" | "client";
2
+ export interface NetworkConfig {
3
+ mode: NetworkDriverMode;
4
+ port: number;
5
+ host?: string;
6
+ isServer: boolean;
7
+ }
8
+ export interface NetworkPayload {
9
+ queue: string;
10
+ action: string;
11
+ data: any;
12
+ }
13
+ //# sourceMappingURL=network.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.types.d.ts","sourceRoot":"","sources":["../../../src/network/interfaces/network.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAG,iBAAiB,CAAC;IACzB,IAAI,EAAG,MAAM,CAAC;IACd,IAAI,CAAC,EAAG,MAAM,CAAC;IACf,QAAQ,EAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAG,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,IAAI,EAAG,GAAG,CAAC;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Queues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queues.d.ts","sourceRoot":"","sources":["../../src/run/Queues.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.d.ts","sourceRoot":"","sources":["../../src/run/index2.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { PulsarRuntimeCore, type RuntimeDependencies } from "../shared/PulsarRuntimeCore.d.ts";
2
+ import type { EngineQueuesConfig } from "../types/queue.types.d.ts";
3
+ import type { IRuntimeExecutionContext } from "./runtimeTypes.d.ts";
4
+ export declare class IsolateRuntime extends PulsarRuntimeCore {
5
+ private deps;
6
+ readonly type = "V8_ISOLATE";
7
+ readonly shouldShutdownOnCycleComplete = true;
8
+ minBootRequirementSec: number;
9
+ private deferredTickEvaluator;
10
+ constructor(deps: RuntimeDependencies);
11
+ onStart(ctx: IRuntimeExecutionContext): Promise<void>;
12
+ executeTick(queueConfig: EngineQueuesConfig, tickRunner: () => Promise<void>): Promise<void>;
13
+ scheduleTick(queueConfig: EngineQueuesConfig, tickRunner: () => Promise<void>): Promise<void>;
14
+ handleCycleCompletion(ctx: IRuntimeExecutionContext): Promise<boolean>;
15
+ handleRestart(ctx: IRuntimeExecutionContext): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=IsolateRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsolateRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/IsolateRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAIlE,qBAAa,cAAe,SAAQ,iBAAiB;IAOrC,OAAO,CAAC,IAAI;IANxB,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,6BAA6B,QAAQ;IACrC,qBAAqB,SAAK;IAE1C,OAAO,CAAC,qBAAqB,CAAyB;gBAElC,IAAI,EAAG,mBAAmB;IAcxB,OAAO,CAAC,GAAG,EAAG,wBAAwB;IAItC,WAAW,CAAC,WAAW,EAAG,kBAAkB,EAAE,UAAU,EAAG,MAAM,OAAO,CAAC,IAAI,CAAC;IAwB9E,YAAY,CAAC,WAAW,EAAG,kBAAkB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAsC9E,qBAAqB,CAAC,GAAG,EAAG,wBAAwB;IAgGpD,aAAa,CAAC,GAAG,EAAG,wBAAwB;CAuCrE"}
@@ -0,0 +1,21 @@
1
+ import { PulsarRuntimeCore, type RuntimeDependencies } from "../shared/PulsarRuntimeCore.d.ts";
2
+ import type { EngineQueuesConfig } from "../types/queue.types.d.ts";
3
+ import type { IRuntimeExecutionContext } from "./runtimeTypes.d.ts";
4
+ import type { RuntimeCacheStorage } from "../subsys/RuntimeCacheStorage.d.ts";
5
+ export declare class PersistentRuntime extends PulsarRuntimeCore {
6
+ readonly type = "PERSISTENT";
7
+ readonly shouldShutdownOnCycleComplete = false;
8
+ minBootRequirementSec: number;
9
+ private deferredTickEvaluator;
10
+ private runtimeEventBridge;
11
+ /** Runtime Storage */
12
+ protected rs: RuntimeCacheStorage;
13
+ constructor(deps: RuntimeDependencies);
14
+ onStart(ctx: IRuntimeExecutionContext): Promise<void>;
15
+ executeTick(queueConfig: EngineQueuesConfig, tickRunner: () => Promise<void>): Promise<void>;
16
+ private validateTickRun;
17
+ scheduleTick(queueConfig: EngineQueuesConfig, tickRunner: () => Promise<void>): Promise<void>;
18
+ handleCycleCompletion(): Promise<boolean>;
19
+ handleRestart(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=PersistentRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistentRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/PersistentRuntime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAO7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,qBAAa,iBAAkB,SAAQ,iBAAiB;IACpD,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,6BAA6B,SAAS;IACtC,qBAAqB,SAAK;IAE1C,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,kBAAkB,CAAsB;IAEhD,sBAAsB;IACtB,SAAS,CAAC,EAAE,EAAG,mBAAmB,CAAC;gBAEvB,IAAI,EAAG,mBAAmB;IAgBvB,OAAO,CAAC,GAAG,EAAG,wBAAwB;IA2BtC,WAAW,CAAC,WAAW,EAAG,kBAAkB,EAAE,UAAU,EAAG,MAAM,OAAO,CAAC,IAAI,CAAC;IAa7F,OAAO,CAAC,eAAe;IAoCR,YAAY,CAAC,WAAW,EAAG,kBAAkB,EAAE,UAAU,EAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAI,OAAO,CAAC,IAAI,CAAC;IAkChG,qBAAqB;IAIrB,aAAa;CAG/B"}
@@ -0,0 +1,15 @@
1
+ import { PulsarRuntimeCore, type RuntimeDependencies } from "../shared/PulsarRuntimeCore.d.ts";
2
+ import type { EngineQueuesConfig } from "../types/queue.types.d.ts";
3
+ import type { IRuntimeExecutionContext } from "./runtimeTypes.d.ts";
4
+ export declare class ServerlessRuntime extends PulsarRuntimeCore {
5
+ readonly type = "SERVERLESS_VM";
6
+ readonly shouldShutdownOnCycleComplete = true;
7
+ minBootRequirementSec: number;
8
+ constructor(deps: RuntimeDependencies);
9
+ onStart(ctx: IRuntimeExecutionContext): Promise<void>;
10
+ executeTick(_queueConfig: EngineQueuesConfig, tickRunner: () => Promise<void>): Promise<void>;
11
+ scheduleTick(_queueConfig: EngineQueuesConfig, tickRunner: () => Promise<void>): Promise<void>;
12
+ handleCycleCompletion(ctx: IRuntimeExecutionContext): Promise<boolean>;
13
+ handleRestart(_ctx: IRuntimeExecutionContext): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=ServerlessRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerlessRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/ServerlessRuntime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,qBAAa,iBAAkB,SAAQ,iBAAiB;IACpD,SAAgB,IAAI,mBAAmB;IAEvC,SAAyB,6BAA6B,QAAQ;IAC9C,qBAAqB,SAAK;gBAE9B,IAAI,EAAG,mBAAmB;IAMhB,OAAO,CAAC,GAAG,EAAG,wBAAwB;IAItC,WAAW,CAAC,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAIpF,YAAY,CAAC,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9F,qBAAqB,CAAC,GAAG,EAAG,wBAAwB;IAgE7C,aAAa,CAAC,IAAI,EAAE,wBAAwB;CACrE"}
@@ -0,0 +1,15 @@
1
+ import type { EngineQueuesConfig } from "../types/queue.types.d.ts";
2
+ export interface IRuntimeExecutionContext {
3
+ lockKey: string;
4
+ currentExecutionId: string;
5
+ isolateId: string;
6
+ getActiveQueues: () => EngineQueuesConfig[];
7
+ runTick: (queueConfig: EngineQueuesConfig) => Promise<void>;
8
+ endTick: (queue: string) => void;
9
+ }
10
+ export interface IPulsarRuntime {
11
+ readonly type: "PERSISTENT" | "SERVERLESS_VM" | "V8_ISOLATE";
12
+ onStart(ctx: IRuntimeExecutionContext, queues: EngineQueuesConfig[]): Promise<void>;
13
+ handleCycleCompletion(ctx: IRuntimeExecutionContext, currentLockKey: string): Promise<boolean>;
14
+ }
15
+ //# sourceMappingURL=runtimeTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeTypes.d.ts","sourceRoot":"","sources":["../../src/runtimes/runtimeTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAG,MAAM,CAAC;IACjB,kBAAkB,EAAG,MAAM,CAAC;IAC5B,SAAS,EAAG,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,kBAAkB,EAAE,CAAC;IAC5C,OAAO,EAAE,CAAC,WAAW,EAAG,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,KAAK,EAAG,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAG,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;IAE9D,OAAO,CAAC,GAAG,EAAG,wBAAwB,EAAE,MAAM,EAAG,kBAAkB,EAAE,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,qBAAqB,CAAC,GAAG,EAAG,wBAAwB,EAAE,cAAc,EAAG,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACrG"}