@nightx.co/pulsar 1.0.16 → 1.0.17
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.
- package/README.md +83 -10
- package/dist/index.js +2 -2
- package/dist/index.js.map +3 -3
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,15 +1,88 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Pulsar Runtime-Flexible Messaging Poller and Orchestration Engine
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Pulsar is an open-source, runtime-flexible messaging poller and orchestration engine built on PostgreSQL and PGMQ. It provides the execution layer required to reliably pull, coordinate, and dispatch queued jobs across serverless functions, edge runtimes, and persistent servers.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
bun install
|
|
7
|
-
```
|
|
5
|
+
Pulsar is not a message queue or broker. It operates on top of an existing PGMQ and PostgreSQL infrastructure, managing the execution lifecycle around the messages stored there. Rather than requiring developers to build their own polling loops, concurrency controls, worker coordination, and runtime-specific execution logic, Pulsar provides a configurable engine that handles these responsibilities while allowing developers to retain control over their database, queue infrastructure, and business logic.
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
## Execution Engine and Tick-Based Processing
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
bun run index.ts
|
|
13
|
-
```
|
|
9
|
+
At the core of Pulsar is a tick-based execution model. A tick represents one complete execution cycle in which the engine evaluates queue configurations and execution limits, determines how much work can be processed, pulls a batch of jobs from PGMQ, dispatches those jobs to their configured consumers, updates operational state, and determines whether another cycle should run.
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
The engine coordinates work according to per-queue concurrency settings, batch sizes, maximum jobs per tick, and global concurrency limits. When the requested workload exceeds the available execution budget, Pulsar adjusts the amount of work processed rather than blindly attempting to execute everything at once. It also supports sequential and parallel tick execution, allowing developers to choose between more controlled resource consumption and greater throughput.
|
|
12
|
+
|
|
13
|
+
Pulsar's internal clock tracks the execution time available to the current runtime. This is particularly important in serverless environments, where each invocation has a finite execution window. Instead of depending on a long-running process, the engine can stop a cycle before reaching the host's execution limit and hand off further work to a fresh invocation. This allows execution to continue across multiple runtime invocations without requiring a permanently running server.
|
|
14
|
+
|
|
15
|
+
## Interval-Driven and Event-Driven Polling
|
|
16
|
+
|
|
17
|
+
Pulsar supports two approaches to activating queue processing.
|
|
18
|
+
|
|
19
|
+
**Interval-driven polling** checks queues according to a configured polling cadence. Developers can choose a timing profile based on their latency and resource-consumption requirements, ranging from frequent polling for latency-sensitive workloads to longer intervals for background jobs where minimizing database activity is more important. Polling is coordinated through shared locking to prevent multiple workers from independently processing the same scheduled queue work.
|
|
20
|
+
|
|
21
|
+
**Event-driven activation** allows a queue to remain idle until a database event triggers processing. When new work arrives, the engine can activate and drain the queue rather than continuously polling an empty queue. A burst of inserted messages can therefore be handled as a coordinated processing cycle instead of requiring a separate engine invocation for every message.
|
|
22
|
+
|
|
23
|
+
These approaches let developers balance responsiveness, database load, and execution cost according to the nature of each workload.
|
|
24
|
+
|
|
25
|
+
## Runtime-Aware Execution
|
|
26
|
+
|
|
27
|
+
Pulsar is designed to adapt its execution lifecycle to different hosting environments rather than requiring one runtime model for every deployment.
|
|
28
|
+
|
|
29
|
+
- **V8 isolates and edge runtimes:** The engine accounts for invocation limits and isolate lifecycle constraints. It can pause and trigger a fresh invocation when required, using a configured self-invocation mechanism.
|
|
30
|
+
- **Serverless virtual machines and containers:** Each invocation processes work within its execution budget and can initiate a subsequent run when more work remains.
|
|
31
|
+
- **Persistent runtimes:** The engine can remain active in a long-running process, continuously coordinating ticks without requiring serverless-style self-invocation.
|
|
32
|
+
|
|
33
|
+
Runtime configuration determines how Pulsar manages execution budgets, tick limits, restarts, and continuation. This allows the same orchestration model to support both short-lived serverless execution and long-running worker deployments.
|
|
34
|
+
|
|
35
|
+
## Queue-Level Configuration and Resource Management
|
|
36
|
+
|
|
37
|
+
Each queue can be configured independently with its own consumer, polling profile, concurrency, batch size, and execution limits. This makes it possible to run queues with different workload characteristics through the same engine without forcing them to share identical processing policies.
|
|
38
|
+
|
|
39
|
+
Pulsar also coordinates concurrency at the engine level. Per-queue settings determine how much work an individual queue can request, while a global concurrency limit caps the total workload across queues. When multiple queues compete for execution capacity, the engine adjusts their available concurrency according to the configured limits.
|
|
40
|
+
|
|
41
|
+
This provides a common resource-management layer for workloads that differ in throughput, latency sensitivity, and processing cost.
|
|
42
|
+
|
|
43
|
+
## Worker Coordination, Locking, and Recovery
|
|
44
|
+
|
|
45
|
+
Coordinating job execution requires more than pulling messages. Pulsar manages operational state associated with workers, execution slots, distributed locks, and job processing. These mechanisms help coordinate concurrent workers, reduce conflicting execution, and support retry and failure-recovery workflows.
|
|
46
|
+
|
|
47
|
+
The engine also manages worker registration and deregistration, allowing execution capacity to be tracked as workers begin and finish processing. Correct lifecycle management is important for preventing occupied worker slots from accumulating and eventually blocking queue progress.
|
|
48
|
+
|
|
49
|
+
Pulsar's coordination mechanisms operate alongside PGMQ's message-management capabilities. They provide the orchestration required to execute jobs across different runtime environments without turning Pulsar itself into another message-storage system.
|
|
50
|
+
|
|
51
|
+
## Unified Storage Architecture
|
|
52
|
+
|
|
53
|
+
Pulsar separates durable message storage from the operational state needed to coordinate execution.
|
|
54
|
+
|
|
55
|
+
PostgreSQL remains the underlying persistent database, with PGMQ responsible for queue and message management. Pulsar's unified storage layer handles operational coordination such as worker registration, deregistration, execution state, and locking.
|
|
56
|
+
|
|
57
|
+
Redis is an optional acceleration layer for frequently accessed operational state. Depending on the deployment, Pulsar can communicate with Redis through a standard TCP driver or an HTTP-based driver suitable for serverless and edge environments.
|
|
58
|
+
|
|
59
|
+
When Redis is not configured, Pulsar can use an unlogged PostgreSQL table for relevant operational operations. This provides a database-backed alternative without requiring an additional cache service. Because PostgreSQL unlogged tables are not crash-durable, their operational contents can be cleared after a database crash; this does not mean the underlying PGMQ messages are stored in those tables.
|
|
60
|
+
|
|
61
|
+
This architecture allows deployments to choose between a simpler PostgreSQL-only setup and a configuration that uses Redis to accelerate hot operational paths.
|
|
62
|
+
|
|
63
|
+
## Flexible Consumer and Dispatch Architecture
|
|
64
|
+
|
|
65
|
+
Pulsar separates job orchestration from the code that performs the actual work. Once jobs are pulled from PGMQ, they can be dispatched to consumers through different execution mechanisms.
|
|
66
|
+
|
|
67
|
+
- **HTTP consumers:** Pulsar sends jobs to an HTTP endpoint, allowing the handler to run in a separate service, another runtime, or a different programming language.
|
|
68
|
+
- **Asynchronous callback consumers:** Jobs can be executed by a callback function within the same process, avoiding an additional network hop where in-process execution is appropriate.
|
|
69
|
+
- **Persistent network consumers:** In persistent deployments, WebSocket-based dispatch can provide a long-lived communication channel between Pulsar and connected consumers. Pulsar manages the transport integration so developers do not need to implement runtime-specific HTTP server and WebSocket upgrade boilerplate themselves.
|
|
70
|
+
- **External integrations:** Consumer logic can forward or transform work for systems such as Kafka, NATS, or other messaging infrastructure.
|
|
71
|
+
|
|
72
|
+
Transport selection depends on the deployment topology. Persistent engine and consumer deployments can use WebSockets for ongoing communication, while serverless consumers commonly use HTTP endpoints. This allows Pulsar to support different networking requirements without forcing every consumer to run in the same environment.
|
|
73
|
+
|
|
74
|
+
Consumer execution and job-storage lifecycle operations are separate concerns. Where consumers need to acknowledge, retry, or otherwise update job and worker state, Pulsar's storage abstractions allow those operations to be handled without requiring every consumer to initialize the complete orchestration engine or duplicate its scheduling responsibilities.
|
|
75
|
+
|
|
76
|
+
## Extensibility and Customization
|
|
77
|
+
|
|
78
|
+
Pulsar is designed to provide an orchestration foundation rather than dictate application-level business logic. Developers can configure queue behavior, consumer implementations, execution limits, dispatch mechanisms, and storage options to match their applications.
|
|
79
|
+
|
|
80
|
+
Its extensibility supports custom hooks, payload transformations, queue routing, and event-driven activation. Consumers remain responsible for the application-specific work performed by each job, while Pulsar coordinates when that work is pulled, how execution capacity is allocated, and how processing continues across runtime boundaries.
|
|
81
|
+
|
|
82
|
+
## The Role of Pulsar
|
|
83
|
+
|
|
84
|
+
Pulsar bridges the gap between a PostgreSQL-backed message queue and the runtime environments responsible for executing its jobs. PGMQ provides message management; PostgreSQL provides the underlying database; consumers provide business logic; and Pulsar coordinates the execution lifecycle connecting them.
|
|
85
|
+
|
|
86
|
+
By combining tick-based processing, runtime-aware scheduling, interval-driven and event-driven polling, concurrency management, worker coordination, flexible dispatch, and optional Redis acceleration, Pulsar provides a unified orchestration engine for applications that need to process queued work across serverless functions, edge runtimes, and persistent infrastructure.
|
|
87
|
+
|
|
88
|
+
Its central goal is to let developers use PostgreSQL and PGMQ as their messaging foundation without having to build and maintain a separate, runtime-specific polling and orchestration system themselves.
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Pulsar by NightX
|
|
3
3
|
* Copyright (c) 2026 NightX. All rights reserved.
|
|
4
4
|
*/
|
|
5
|
-
import{a as q$,b as v$,c as x$}from"./chunk-a9kye38b.js";import{d as B,e as F}from"./chunk-rrj8rm04.js";import{f as L0,g as l,h as I}from"./chunk-cpn1qh4e.js";import{i as F0,j as U}from"./chunk-3sg08kqp.js";var g0=U((sW,J0)=>{var f$=Object.prototype.hasOwnProperty,k="~";function q(){}if(Object.create){if(q.prototype=Object.create(null),!new q().__proto__)k=!1}function d$($,W,Z){this.fn=$,this.context=W,this.once=Z||!1}function m0($,W,Z,P,X){if(typeof Z!=="function")throw TypeError("The listener must be a function");var Q=new d$(Z,P||$,X),G=k?k+W:W;if(!$._events[G])$._events[G]=Q,$._eventsCount++;else if(!$._events[G].fn)$._events[G].push(Q);else $._events[G]=[$._events[G],Q];return $}function f($,W){if(--$._eventsCount===0)$._events=new q;else delete $._events[W]}function R(){this._events=new q,this._eventsCount=0}R.prototype.eventNames=function(){var W=[],Z,P;if(this._eventsCount===0)return W;for(P in Z=this._events)if(f$.call(Z,P))W.push(k?P.slice(1):P);if(Object.getOwnPropertySymbols)return W.concat(Object.getOwnPropertySymbols(Z));return W};R.prototype.listeners=function(W){var Z=k?k+W:W,P=this._events[Z];if(!P)return[];if(P.fn)return[P.fn];for(var X=0,Q=P.length,G=Array(Q);X<Q;X++)G[X]=P[X].fn;return G};R.prototype.listenerCount=function(W){var Z=k?k+W:W,P=this._events[Z];if(!P)return 0;if(P.fn)return 1;return P.length};R.prototype.emit=function(W,Z,P,X,Q,G){var J=k?k+W:W;if(!this._events[J])return!1;var N=this._events[J],H=arguments.length,K,V;if(N.fn){if(N.once)this.removeListener(W,N.fn,void 0,!0);switch(H){case 1:return N.fn.call(N.context),!0;case 2:return N.fn.call(N.context,Z),!0;case 3:return N.fn.call(N.context,Z,P),!0;case 4:return N.fn.call(N.context,Z,P,X),!0;case 5:return N.fn.call(N.context,Z,P,X,Q),!0;case 6:return N.fn.call(N.context,Z,P,X,Q,G),!0}for(V=1,K=Array(H-1);V<H;V++)K[V-1]=arguments[V];N.fn.apply(N.context,K)}else{var M=N.length,w;for(V=0;V<M;V++){if(N[V].once)this.removeListener(W,N[V].fn,void 0,!0);switch(H){case 1:N[V].fn.call(N[V].context);break;case 2:N[V].fn.call(N[V].context,Z);break;case 3:N[V].fn.call(N[V].context,Z,P);break;case 4:N[V].fn.call(N[V].context,Z,P,X);break;default:if(!K)for(w=1,K=Array(H-1);w<H;w++)K[w-1]=arguments[w];N[V].fn.apply(N[V].context,K)}}}return!0};R.prototype.on=function(W,Z,P){return m0(this,W,Z,P,!1)};R.prototype.once=function(W,Z,P){return m0(this,W,Z,P,!0)};R.prototype.removeListener=function(W,Z,P,X){var Q=k?k+W:W;if(!this._events[Q])return this;if(!Z)return f(this,Q),this;var G=this._events[Q];if(G.fn){if(G.fn===Z&&(!X||G.once)&&(!P||G.context===P))f(this,Q)}else{for(var J=0,N=[],H=G.length;J<H;J++)if(G[J].fn!==Z||X&&!G[J].once||P&&G[J].context!==P)N.push(G[J]);if(N.length)this._events[Q]=N.length===1?N[0]:N;else f(this,Q)}return this};R.prototype.removeAllListeners=function(W){var Z;if(W){if(Z=k?k+W:W,this._events[Z])f(this,Z)}else this._events=new q,this._eventsCount=0;return this};R.prototype.off=R.prototype.removeListener;R.prototype.addListener=R.prototype.on;R.prefixed=k;R.EventEmitter=R;if(typeof J0<"u")J0.exports=R});var d=U((j0)=>{Object.defineProperty(j0,"__esModule",{value:!0});j0.utf8Count=i$;j0.utf8EncodeJs=v0;j0.utf8EncodeTE=x0;j0.utf8Encode=c$;j0.utf8DecodeJs=l0;j0.utf8DecodeTD=q0;j0.utf8Decode=s$;function i$($){let W=$.length,Z=0,P=0;while(P<W){let X=$.charCodeAt(P++);if((X&4294967168)===0){Z++;continue}else if((X&4294965248)===0)Z+=2;else{if(X>=55296&&X<=56319){if(P<W){let Q=$.charCodeAt(P);if((Q&64512)===56320)++P,X=((X&1023)<<10)+(Q&1023)+65536}}if((X&4294901760)===0)Z+=3;else Z+=4}}return Z}function v0($,W,Z){let P=$.length,X=Z,Q=0;while(Q<P){let G=$.charCodeAt(Q++);if((G&4294967168)===0){W[X++]=G;continue}else if((G&4294965248)===0)W[X++]=G>>6&31|192;else{if(G>=55296&&G<=56319){if(Q<P){let J=$.charCodeAt(Q);if((J&64512)===56320)++Q,G=((G&1023)<<10)+(J&1023)+65536}}if((G&4294901760)===0)W[X++]=G>>12&15|224,W[X++]=G>>6&63|128;else W[X++]=G>>18&7|240,W[X++]=G>>12&63|128,W[X++]=G>>6&63|128}W[X++]=G&63|128}}var r$=new TextEncoder,n$=50;function x0($,W,Z){r$.encodeInto($,W.subarray(Z))}function c$($,W,Z){if($.length>n$)x0($,W,Z);else v0($,W,Z)}var a$=4096;function l0($,W,Z){let P=W,X=P+Z,Q=[],G="";while(P<X){let J=$[P++];if((J&128)===0)Q.push(J);else if((J&224)===192){let N=$[P++]&63;Q.push((J&31)<<6|N)}else if((J&240)===224){let N=$[P++]&63,H=$[P++]&63;Q.push((J&31)<<12|N<<6|H)}else if((J&248)===240){let N=$[P++]&63,H=$[P++]&63,K=$[P++]&63,V=(J&7)<<18|N<<12|H<<6|K;if(V>65535)V-=65536,Q.push(V>>>10&1023|55296),V=56320|V&1023;Q.push(V)}else Q.push(J);if(Q.length>=a$)G+=String.fromCharCode(...Q),Q.length=0}if(Q.length>0)G+=String.fromCharCode(...Q);return G}var u$=new TextDecoder,o$=200;function q0($,W,Z){let P=$.subarray(W,W+Z);return u$.decode(P)}function s$($,W,Z){if(Z>o$)return q0($,W,Z);else return l0($,W,Z)}});var V0=U((y0)=>{Object.defineProperty(y0,"__esModule",{value:!0});y0.ExtData=void 0;class p0{type;data;constructor($,W){this.type=$,this.data=W}}y0.ExtData=p0});var i=U((d0)=>{Object.defineProperty(d0,"__esModule",{value:!0});d0.DecodeError=void 0;class b extends Error{constructor($){super($);let W=Object.create(b.prototype);Object.setPrototypeOf(this,W),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:b.name})}}d0.DecodeError=b});var r=U((i0)=>{Object.defineProperty(i0,"__esModule",{value:!0});i0.UINT32_MAX=void 0;i0.setUint64=Q1;i0.setInt64=G1;i0.getInt64=N1;i0.getUint64=J1;i0.UINT32_MAX=4294967295;function Q1($,W,Z){let P=Z/4294967296,X=Z;$.setUint32(W,P),$.setUint32(W+4,X)}function G1($,W,Z){let P=Math.floor(Z/4294967296),X=Z;$.setUint32(W,P),$.setUint32(W+4,X)}function N1($,W){let Z=$.getInt32(W),P=$.getUint32(W+4);return Z*4294967296+P}function J1($,W){let Z=$.getUint32(W),P=$.getUint32(W+4);return Z*4294967296+P}});var H0=U((t0)=>{Object.defineProperty(t0,"__esModule",{value:!0});t0.timestampExtension=t0.EXT_TIMESTAMP=void 0;t0.encodeTimeSpecToTimestamp=c0;t0.encodeDateToTimeSpec=a0;t0.encodeTimestampExtension=u0;t0.decodeTimestampToTimeSpec=o0;t0.decodeTimestampExtension=s0;var Y1=i(),n0=r();t0.EXT_TIMESTAMP=-1;var M1=4294967295,U1=17179869183;function c0({sec:$,nsec:W}){if($>=0&&W>=0&&$<=U1)if(W===0&&$<=M1){let Z=new Uint8Array(4);return new DataView(Z.buffer).setUint32(0,$),Z}else{let Z=$/4294967296,P=$&4294967295,X=new Uint8Array(8),Q=new DataView(X.buffer);return Q.setUint32(0,W<<2|Z&3),Q.setUint32(4,P),X}else{let Z=new Uint8Array(12),P=new DataView(Z.buffer);return P.setUint32(0,W),(0,n0.setInt64)(P,4,$),Z}}function a0($){let W=$.getTime(),Z=Math.floor(W/1000),P=(W-Z*1000)*1e6,X=Math.floor(P/1e9);return{sec:Z+X,nsec:P-X*1e9}}function u0($){if($ instanceof Date){let W=a0($);return c0(W)}else return null}function o0($){let W=new DataView($.buffer,$.byteOffset,$.byteLength);switch($.byteLength){case 4:{let Z=W.getUint32(0),P=0;return{sec:Z,nsec:0}}case 8:{let Z=W.getUint32(0),P=W.getUint32(4),X=(Z&3)*4294967296+P,Q=Z>>>2;return{sec:X,nsec:Q}}case 12:{let Z=(0,n0.getInt64)(W,4),P=W.getUint32(0);return{sec:Z,nsec:P}}default:throw new Y1.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${$.length}`)}}function s0($){let W=o0($);return new Date(W.sec*1000+W.nsec/1e6)}t0.timestampExtension={type:t0.EXT_TIMESTAMP,encode:u0,decode:s0}});var c=U((W$)=>{Object.defineProperty(W$,"__esModule",{value:!0});W$.ExtensionCodec=void 0;var n=V0(),O1=H0();class Y0{static defaultCodec=new Y0;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(O1.timestampExtension)}register({type:$,encode:W,decode:Z}){if($>=0)this.encoders[$]=W,this.decoders[$]=Z;else{let P=-1-$;this.builtInEncoders[P]=W,this.builtInDecoders[P]=Z}}tryToEncode($,W){for(let Z=0;Z<this.builtInEncoders.length;Z++){let P=this.builtInEncoders[Z];if(P!=null){let X=P($,W);if(X!=null){let Q=-1-Z;return new n.ExtData(Q,X)}}}for(let Z=0;Z<this.encoders.length;Z++){let P=this.encoders[Z];if(P!=null){let X=P($,W);if(X!=null){let Q=Z;return new n.ExtData(Q,X)}}}if($ instanceof n.ExtData)return $;return null}decode($,W,Z){let P=W<0?this.builtInDecoders[-1-W]:this.decoders[W];if(P)return P($,W,Z);else return new n.ExtData(W,$)}}W$.ExtensionCodec=Y0});var M0=U((P$)=>{Object.defineProperty(P$,"__esModule",{value:!0});P$.ensureUint8Array=S1;function A1($){return $ instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&$ instanceof SharedArrayBuffer}function S1($){if($ instanceof Uint8Array)return $;else if(ArrayBuffer.isView($))return new Uint8Array($.buffer,$.byteOffset,$.byteLength);else if(A1($))return new Uint8Array($);else return Uint8Array.from($)}});var w0=U((G$)=>{Object.defineProperty(G$,"__esModule",{value:!0});G$.Encoder=G$.DEFAULT_INITIAL_BUFFER_SIZE=G$.DEFAULT_MAX_DEPTH=void 0;var X$=d(),z1=c(),Q$=r(),D1=M0();G$.DEFAULT_MAX_DEPTH=100;G$.DEFAULT_INITIAL_BUFFER_SIZE=2048;class U0{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor($){this.extensionCodec=$?.extensionCodec??z1.ExtensionCodec.defaultCodec,this.context=$?.context,this.useBigInt64=$?.useBigInt64??!1,this.maxDepth=$?.maxDepth??G$.DEFAULT_MAX_DEPTH,this.initialBufferSize=$?.initialBufferSize??G$.DEFAULT_INITIAL_BUFFER_SIZE,this.sortKeys=$?.sortKeys??!1,this.forceFloat32=$?.forceFloat32??!1,this.ignoreUndefined=$?.ignoreUndefined??!1,this.forceIntegerToFloat=$?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new U0({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef($){if(this.entered)return this.clone().encodeSharedRef($);try{return this.entered=!0,this.reinitializeState(),this.doEncode($,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode($){if(this.entered)return this.clone().encode($);try{return this.entered=!0,this.reinitializeState(),this.doEncode($,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode($,W){if(W>this.maxDepth)throw Error(`Too deep objects in depth ${W}`);if($==null)this.encodeNil();else if(typeof $==="boolean")this.encodeBoolean($);else if(typeof $==="number")if(!this.forceIntegerToFloat)this.encodeNumber($);else this.encodeNumberAsFloat($);else if(typeof $==="string")this.encodeString($);else if(this.useBigInt64&&typeof $==="bigint")this.encodeBigInt64($);else this.encodeObject($,W)}ensureBufferSizeToWrite($){let W=this.pos+$;if(this.view.byteLength<W)this.resizeBuffer(W*2)}resizeBuffer($){let W=new ArrayBuffer($),Z=new Uint8Array(W),P=new DataView(W);Z.set(this.bytes),this.view=P,this.bytes=Z}encodeNil(){this.writeU8(192)}encodeBoolean($){if($===!1)this.writeU8(194);else this.writeU8(195)}encodeNumber($){if(!this.forceIntegerToFloat&&Number.isSafeInteger($))if($>=0)if($<128)this.writeU8($);else if($<256)this.writeU8(204),this.writeU8($);else if($<65536)this.writeU8(205),this.writeU16($);else if($<4294967296)this.writeU8(206),this.writeU32($);else if(!this.useBigInt64)this.writeU8(207),this.writeU64($);else this.encodeNumberAsFloat($);else if($>=-32)this.writeU8(224|$+32);else if($>=-128)this.writeU8(208),this.writeI8($);else if($>=-32768)this.writeU8(209),this.writeI16($);else if($>=-2147483648)this.writeU8(210),this.writeI32($);else if(!this.useBigInt64)this.writeU8(211),this.writeI64($);else this.encodeNumberAsFloat($);else this.encodeNumberAsFloat($)}encodeNumberAsFloat($){if(this.forceFloat32)this.writeU8(202),this.writeF32($);else this.writeU8(203),this.writeF64($)}encodeBigInt64($){if($>=BigInt(0))this.writeU8(207),this.writeBigUint64($);else this.writeU8(211),this.writeBigInt64($)}writeStringHeader($){if($<32)this.writeU8(160+$);else if($<256)this.writeU8(217),this.writeU8($);else if($<65536)this.writeU8(218),this.writeU16($);else if($<4294967296)this.writeU8(219),this.writeU32($);else throw Error(`Too long string: ${$} bytes in UTF-8`)}encodeString($){let Z=(0,X$.utf8Count)($);this.ensureBufferSizeToWrite(5+Z),this.writeStringHeader(Z),(0,X$.utf8Encode)($,this.bytes,this.pos),this.pos+=Z}encodeObject($,W){let Z=this.extensionCodec.tryToEncode($,this.context);if(Z!=null)this.encodeExtension(Z);else if(Array.isArray($))this.encodeArray($,W);else if(ArrayBuffer.isView($))this.encodeBinary($);else if(typeof $==="object")this.encodeMap($,W);else throw Error(`Unrecognized object: ${Object.prototype.toString.apply($)}`)}encodeBinary($){let W=$.byteLength;if(W<256)this.writeU8(196),this.writeU8(W);else if(W<65536)this.writeU8(197),this.writeU16(W);else if(W<4294967296)this.writeU8(198),this.writeU32(W);else throw Error(`Too large binary: ${W}`);let Z=(0,D1.ensureUint8Array)($);this.writeU8a(Z)}encodeArray($,W){let Z=$.length;if(Z<16)this.writeU8(144+Z);else if(Z<65536)this.writeU8(220),this.writeU16(Z);else if(Z<4294967296)this.writeU8(221),this.writeU32(Z);else throw Error(`Too large array: ${Z}`);for(let P of $)this.doEncode(P,W+1)}countWithoutUndefined($,W){let Z=0;for(let P of W)if($[P]!==void 0)Z++;return Z}encodeMap($,W){let Z=Object.keys($);if(this.sortKeys)Z.sort();let P=this.ignoreUndefined?this.countWithoutUndefined($,Z):Z.length;if(P<16)this.writeU8(128+P);else if(P<65536)this.writeU8(222),this.writeU16(P);else if(P<4294967296)this.writeU8(223),this.writeU32(P);else throw Error(`Too large map object: ${P}`);for(let X of Z){let Q=$[X];if(!(this.ignoreUndefined&&Q===void 0))this.encodeString(X),this.doEncode(Q,W+1)}}encodeExtension($){if(typeof $.data==="function"){let Z=$.data(this.pos+6),P=Z.length;if(P>=4294967296)throw Error(`Too large extension object: ${P}`);this.writeU8(201),this.writeU32(P),this.writeI8($.type),this.writeU8a(Z);return}let W=$.data.length;if(W===1)this.writeU8(212);else if(W===2)this.writeU8(213);else if(W===4)this.writeU8(214);else if(W===8)this.writeU8(215);else if(W===16)this.writeU8(216);else if(W<256)this.writeU8(199),this.writeU8(W);else if(W<65536)this.writeU8(200),this.writeU16(W);else if(W<4294967296)this.writeU8(201),this.writeU32(W);else throw Error(`Too large extension object: ${W}`);this.writeI8($.type),this.writeU8a($.data)}writeU8($){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,$),this.pos++}writeU8a($){let W=$.length;this.ensureBufferSizeToWrite(W),this.bytes.set($,this.pos),this.pos+=W}writeI8($){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,$),this.pos++}writeU16($){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,$),this.pos+=2}writeI16($){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,$),this.pos+=2}writeU32($){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,$),this.pos+=4}writeI32($){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,$),this.pos+=4}writeF32($){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,$),this.pos+=4}writeF64($){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,$),this.pos+=8}writeU64($){this.ensureBufferSizeToWrite(8),(0,Q$.setUint64)(this.view,this.pos,$),this.pos+=8}writeI64($){this.ensureBufferSizeToWrite(8),(0,Q$.setInt64)(this.view,this.pos,$),this.pos+=8}writeBigUint64($){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,$),this.pos+=8}writeBigInt64($){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,$),this.pos+=8}}G$.Encoder=U0});var V$=U((K$)=>{Object.defineProperty(K$,"__esModule",{value:!0});K$.encode=h1;var C1=w0();function h1($,W){return new C1.Encoder(W).encodeSharedRef($)}});var Y$=U((H$)=>{Object.defineProperty(H$,"__esModule",{value:!0});H$.prettyByte=m1;function m1($){return`${$<0?"-":""}0x${Math.abs($).toString(16).padStart(2,"0")}`}});var R$=U((U$)=>{Object.defineProperty(U$,"__esModule",{value:!0});U$.CachedKeyDecoder=void 0;var _1=d(),E1=16,v1=16;class M${hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor($=E1,W=v1){this.maxKeyLength=$,this.maxLengthPerKey=W,this.caches=[];for(let Z=0;Z<this.maxKeyLength;Z++)this.caches.push([])}canBeCached($){return $>0&&$<=this.maxKeyLength}find($,W,Z){let P=this.caches[Z-1];$:for(let X of P){let Q=X.bytes;for(let G=0;G<Z;G++)if(Q[G]!==$[W+G])continue $;return X.str}return null}store($,W){let Z=this.caches[$.length-1],P={bytes:$,str:W};if(Z.length>=this.maxLengthPerKey)Z[Math.random()*Z.length|0]=P;else Z.push(P)}decode($,W,Z){let P=this.find($,W,Z);if(P!=null)return this.hit++,P;this.miss++;let X=(0,_1.utf8DecodeJs)($,W,Z),Q=Uint8Array.prototype.slice.call($,W,W+Z);return this.store(Q,X),X}}U$.CachedKeyDecoder=M$});var a=U((A$)=>{Object.defineProperty(A$,"__esModule",{value:!0});A$.Decoder=void 0;var R0=Y$(),x1=c(),D=r(),l1=d(),k$=M0(),q1=R$(),O=i(),k0="array",p="map_key",T$="map_value",j1=($)=>{if(typeof $==="string"||typeof $==="number")return $;throw new O.DecodeError("The type of key must be string or number but "+typeof $)};class O${stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState($){let W=this.getUninitializedStateFromPool();W.type=k0,W.position=0,W.size=$,W.array=Array($)}pushMapState($){let W=this.getUninitializedStateFromPool();W.type=p,W.readCount=0,W.size=$,W.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let $={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push($)}return this.stack[this.stackHeadPosition]}release($){if(this.stack[this.stackHeadPosition]!==$)throw Error("Invalid stack state. Released state is not on top of the stack.");if($.type===k0){let Z=$;Z.size=0,Z.array=void 0,Z.position=0,Z.type=void 0}if($.type===p||$.type===T$){let Z=$;Z.size=0,Z.map=void 0,Z.readCount=0,Z.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}}var j=-1,I0=new DataView(new ArrayBuffer(0)),p1=new Uint8Array(I0.buffer);try{I0.getInt8(0)}catch($){if(!($ instanceof RangeError))throw Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var I$=RangeError("Insufficient data"),y1=new q1.CachedKeyDecoder;class T0{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=I0;bytes=p1;headByte=j;stack=new O$;entered=!1;constructor($){this.extensionCodec=$?.extensionCodec??x1.ExtensionCodec.defaultCodec,this.context=$?.context,this.useBigInt64=$?.useBigInt64??!1,this.rawStrings=$?.rawStrings??!1,this.maxStrLength=$?.maxStrLength??D.UINT32_MAX,this.maxBinLength=$?.maxBinLength??D.UINT32_MAX,this.maxArrayLength=$?.maxArrayLength??D.UINT32_MAX,this.maxMapLength=$?.maxMapLength??D.UINT32_MAX,this.maxExtLength=$?.maxExtLength??D.UINT32_MAX,this.keyDecoder=$?.keyDecoder!==void 0?$.keyDecoder:y1,this.mapKeyConverter=$?.mapKeyConverter??j1}clone(){return new T0({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=j,this.stack.reset()}setBuffer($){let W=(0,k$.ensureUint8Array)($);this.bytes=W,this.view=new DataView(W.buffer,W.byteOffset,W.byteLength),this.pos=0}appendBuffer($){if(this.headByte===j&&!this.hasRemaining(1))this.setBuffer($);else{let W=this.bytes.subarray(this.pos),Z=(0,k$.ensureUint8Array)($),P=new Uint8Array(W.length+Z.length);P.set(W),P.set(Z,W.length),this.setBuffer(P)}}hasRemaining($){return this.view.byteLength-this.pos>=$}createExtraByteError($){let{view:W,pos:Z}=this;return RangeError(`Extra ${W.byteLength-Z} of ${W.byteLength} byte(s) found at buffer[${$}]`)}decode($){if(this.entered)return this.clone().decode($);try{this.entered=!0,this.reinitializeState(),this.setBuffer($);let W=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return W}finally{this.entered=!1}}*decodeMulti($){if(this.entered){yield*this.clone().decodeMulti($);return}try{this.entered=!0,this.reinitializeState(),this.setBuffer($);while(this.hasRemaining(1))yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync($){if(this.entered)return this.clone().decodeAsync($);try{this.entered=!0;let W=!1,Z;for await(let G of $){if(W)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(G);try{Z=this.doDecodeSync(),W=!0}catch(J){if(!(J instanceof RangeError))throw J}this.totalPos+=this.pos}if(W){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return Z}let{headByte:P,pos:X,totalPos:Q}=this;throw RangeError(`Insufficient data in parsing ${(0,R0.prettyByte)(P)} at ${Q} (${X} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream($){return this.decodeMultiAsync($,!0)}decodeStream($){return this.decodeMultiAsync($,!1)}async*decodeMultiAsync($,W){if(this.entered){yield*this.clone().decodeMultiAsync($,W);return}try{this.entered=!0;let Z=W,P=-1;for await(let X of $){if(W&&P===0)throw this.createExtraByteError(this.totalPos);if(this.appendBuffer(X),Z)P=this.readArraySize(),Z=!1,this.complete();try{while(!0)if(yield this.doDecodeSync(),--P===0)break}catch(Q){if(!(Q instanceof RangeError))throw Q}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){$:while(!0){let $=this.readHeadByte(),W;if($>=224)W=$-256;else if($<192)if($<128)W=$;else if($<144){let P=$-128;if(P!==0){this.pushMapState(P),this.complete();continue $}else W={}}else if($<160){let P=$-144;if(P!==0){this.pushArrayState(P),this.complete();continue $}else W=[]}else{let P=$-160;W=this.decodeString(P,0)}else if($===192)W=null;else if($===194)W=!1;else if($===195)W=!0;else if($===202)W=this.readF32();else if($===203)W=this.readF64();else if($===204)W=this.readU8();else if($===205)W=this.readU16();else if($===206)W=this.readU32();else if($===207)if(this.useBigInt64)W=this.readU64AsBigInt();else W=this.readU64();else if($===208)W=this.readI8();else if($===209)W=this.readI16();else if($===210)W=this.readI32();else if($===211)if(this.useBigInt64)W=this.readI64AsBigInt();else W=this.readI64();else if($===217){let P=this.lookU8();W=this.decodeString(P,1)}else if($===218){let P=this.lookU16();W=this.decodeString(P,2)}else if($===219){let P=this.lookU32();W=this.decodeString(P,4)}else if($===220){let P=this.readU16();if(P!==0){this.pushArrayState(P),this.complete();continue $}else W=[]}else if($===221){let P=this.readU32();if(P!==0){this.pushArrayState(P),this.complete();continue $}else W=[]}else if($===222){let P=this.readU16();if(P!==0){this.pushMapState(P),this.complete();continue $}else W={}}else if($===223){let P=this.readU32();if(P!==0){this.pushMapState(P),this.complete();continue $}else W={}}else if($===196){let P=this.lookU8();W=this.decodeBinary(P,1)}else if($===197){let P=this.lookU16();W=this.decodeBinary(P,2)}else if($===198){let P=this.lookU32();W=this.decodeBinary(P,4)}else if($===212)W=this.decodeExtension(1,0);else if($===213)W=this.decodeExtension(2,0);else if($===214)W=this.decodeExtension(4,0);else if($===215)W=this.decodeExtension(8,0);else if($===216)W=this.decodeExtension(16,0);else if($===199){let P=this.lookU8();W=this.decodeExtension(P,1)}else if($===200){let P=this.lookU16();W=this.decodeExtension(P,2)}else if($===201){let P=this.lookU32();W=this.decodeExtension(P,4)}else throw new O.DecodeError(`Unrecognized type byte: ${(0,R0.prettyByte)($)}`);this.complete();let Z=this.stack;while(Z.length>0){let P=Z.top();if(P.type===k0)if(P.array[P.position]=W,P.position++,P.position===P.size)W=P.array,Z.release(P);else continue $;else if(P.type===p){if(W==="__proto__")throw new O.DecodeError("The key __proto__ is not allowed");P.key=this.mapKeyConverter(W),P.type=T$;continue $}else if(P.map[P.key]=W,P.readCount++,P.readCount===P.size)W=P.map,Z.release(P);else{P.key=null,P.type=p;continue $}}return W}}readHeadByte(){if(this.headByte===j)this.headByte=this.readU8();return this.headByte}complete(){this.headByte=j}readArraySize(){let $=this.readHeadByte();switch($){case 220:return this.readU16();case 221:return this.readU32();default:if($<160)return $-144;else throw new O.DecodeError(`Unrecognized array type byte: ${(0,R0.prettyByte)($)}`)}}pushMapState($){if($>this.maxMapLength)throw new O.DecodeError(`Max length exceeded: map length (${$}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState($)}pushArrayState($){if($>this.maxArrayLength)throw new O.DecodeError(`Max length exceeded: array length (${$}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState($)}decodeString($,W){if(!this.rawStrings||this.stateIsMapKey())return this.decodeUtf8String($,W);return this.decodeBinary($,W)}decodeUtf8String($,W){if($>this.maxStrLength)throw new O.DecodeError(`Max length exceeded: UTF-8 byte length (${$}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+W+$)throw I$;let Z=this.pos+W,P;if(this.stateIsMapKey()&&this.keyDecoder?.canBeCached($))P=this.keyDecoder.decode(this.bytes,Z,$);else P=(0,l1.utf8Decode)(this.bytes,Z,$);return this.pos+=W+$,P}stateIsMapKey(){if(this.stack.length>0)return this.stack.top().type===p;return!1}decodeBinary($,W){if($>this.maxBinLength)throw new O.DecodeError(`Max length exceeded: bin length (${$}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining($+W))throw I$;let Z=this.pos+W,P=this.bytes.subarray(Z,Z+$);return this.pos+=W+$,P}decodeExtension($,W){if($>this.maxExtLength)throw new O.DecodeError(`Max length exceeded: ext length (${$}) > maxExtLength (${this.maxExtLength})`);let Z=this.view.getInt8(this.pos+W),P=this.decodeBinary($,W+1);return this.extensionCodec.decode(P,Z,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let $=this.view.getUint8(this.pos);return this.pos++,$}readI8(){let $=this.view.getInt8(this.pos);return this.pos++,$}readU16(){let $=this.view.getUint16(this.pos);return this.pos+=2,$}readI16(){let $=this.view.getInt16(this.pos);return this.pos+=2,$}readU32(){let $=this.view.getUint32(this.pos);return this.pos+=4,$}readI32(){let $=this.view.getInt32(this.pos);return this.pos+=4,$}readU64(){let $=(0,D.getUint64)(this.view,this.pos);return this.pos+=8,$}readI64(){let $=(0,D.getInt64)(this.view,this.pos);return this.pos+=8,$}readU64AsBigInt(){let $=this.view.getBigUint64(this.pos);return this.pos+=8,$}readI64AsBigInt(){let $=this.view.getBigInt64(this.pos);return this.pos+=8,$}readF32(){let $=this.view.getFloat32(this.pos);return this.pos+=4,$}readF64(){let $=this.view.getFloat64(this.pos);return this.pos+=8,$}}A$.Decoder=T0});var D$=U((z$)=>{Object.defineProperty(z$,"__esModule",{value:!0});z$.decode=f1;z$.decodeMulti=d1;var B$=a();function f1($,W){return new B$.Decoder(W).decode($)}function d1($,W){return new B$.Decoder(W).decodeMulti($)}});var m$=U((L$)=>{Object.defineProperty(L$,"__esModule",{value:!0});L$.isAsyncIterable=C$;L$.asyncIterableFromStream=h$;L$.ensureAsyncIterable=r1;function C$($){return $[Symbol.asyncIterator]!=null}async function*h$($){let W=$.getReader();try{while(!0){let{done:Z,value:P}=await W.read();if(Z)return;yield P}}finally{W.releaseLock()}}function r1($){if(C$($))return $;else return h$($)}});var _$=U((g$)=>{Object.defineProperty(g$,"__esModule",{value:!0});g$.decodeAsync=u1;g$.decodeArrayStream=o1;g$.decodeMultiStream=s1;var O0=a(),A0=m$();async function u1($,W){let Z=(0,A0.ensureAsyncIterable)($);return new O0.Decoder(W).decodeAsync(Z)}function o1($,W){let Z=(0,A0.ensureAsyncIterable)($);return new O0.Decoder(W).decodeArrayStream(Z)}function s1($,W){let Z=(0,A0.ensureAsyncIterable)($);return new O0.Decoder(W).decodeStream(Z)}});var B0=U((Y)=>{Object.defineProperty(Y,"__esModule",{value:!0});Y.decodeTimestampExtension=Y.encodeTimestampExtension=Y.decodeTimestampToTimeSpec=Y.encodeTimeSpecToTimestamp=Y.encodeDateToTimeSpec=Y.EXT_TIMESTAMP=Y.ExtData=Y.ExtensionCodec=Y.Encoder=Y.DecodeError=Y.Decoder=Y.decodeMultiStream=Y.decodeArrayStream=Y.decodeAsync=Y.decodeMulti=Y.decode=Y.encode=void 0;var WW=V$();Object.defineProperty(Y,"encode",{enumerable:!0,get:function(){return WW.encode}});var E$=D$();Object.defineProperty(Y,"decode",{enumerable:!0,get:function(){return E$.decode}});Object.defineProperty(Y,"decodeMulti",{enumerable:!0,get:function(){return E$.decodeMulti}});var S0=_$();Object.defineProperty(Y,"decodeAsync",{enumerable:!0,get:function(){return S0.decodeAsync}});Object.defineProperty(Y,"decodeArrayStream",{enumerable:!0,get:function(){return S0.decodeArrayStream}});Object.defineProperty(Y,"decodeMultiStream",{enumerable:!0,get:function(){return S0.decodeMultiStream}});var ZW=a();Object.defineProperty(Y,"Decoder",{enumerable:!0,get:function(){return ZW.Decoder}});var PW=i();Object.defineProperty(Y,"DecodeError",{enumerable:!0,get:function(){return PW.DecodeError}});var XW=w0();Object.defineProperty(Y,"Encoder",{enumerable:!0,get:function(){return XW.Encoder}});var QW=c();Object.defineProperty(Y,"ExtensionCodec",{enumerable:!0,get:function(){return QW.ExtensionCodec}});var GW=V0();Object.defineProperty(Y,"ExtData",{enumerable:!0,get:function(){return GW.ExtData}});var m=H0();Object.defineProperty(Y,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return m.EXT_TIMESTAMP}});Object.defineProperty(Y,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return m.encodeDateToTimeSpec}});Object.defineProperty(Y,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return m.encodeTimeSpecToTimestamp}});Object.defineProperty(Y,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return m.decodeTimestampToTimeSpec}});Object.defineProperty(Y,"encodeTimestampExtension",{enumerable:!0,get:function(){return m.encodeTimestampExtension}});Object.defineProperty(Y,"decodeTimestampExtension",{enumerable:!0,get:function(){return m.decodeTimestampExtension}})});function p$($){return{...$,consumer:{...$.consumer,queue:$.queue}}}class h0{MAX_ISOLATE_LIFESPAN_MS;constructor($){this.MAX_ISOLATE_LIFESPAN_MS=$;this.set("isolate_id",crypto.randomUUID()),this.set("isolate_start_time",Date.now()),this.set("isolate_max_life_span_ms",this.MAX_ISOLATE_LIFESPAN_MS)}isSameIsolate($){return $===this.get("isolate_id")}get id(){return this.get("isolate_id")??crypto.randomUUID()}get remainingTime(){let $=this.get("isolate_start_time"),W=this.get("isolate_max_life_span_ms")??this.MAX_ISOLATE_LIFESPAN_MS;if(typeof $!=="number")return W;let Z=Date.now()-$;return Math.max(0,W-Z)}get uptime(){let $=this.get("isolate_start_time");return typeof $==="number"?Date.now()-$:0}get maxTime(){return this.get("isolate_max_life_span_ms")??this.MAX_ISOLATE_LIFESPAN_MS}set($,W){globalThis[$]=W}get($){return globalThis[$]}}import JW from"js-sha256";class E{target=new EventTarget;pending=new Set;track($){let W=$.catch((Z)=>console.error("[EventBus] : handler failed - ",Z)).finally(()=>this.pending.delete(W));this.pending.add(W)}emit($,W){this.target.dispatchEvent(new CustomEvent($,{detail:W}))}on($,W){let Z=(P)=>{let X=W(P.detail);if(X instanceof Promise)this.track(X)};return this.target.addEventListener($,Z),()=>this.target.removeEventListener($,Z)}once($,W){let Z=(P)=>W(P.detail);this.target.addEventListener($,Z,{once:!0})}async drain(){while(this.pending.size>0)await Promise.allSettled([...this.pending])}}class e{tracks=[];startTime;maxExecutionBudgetMs;safetyBufferMs;maxTrackHistory;enabled;cpuExecutionMicroseconds=0;constructor($={}){this.startTime=performance.now(),this.maxExecutionBudgetMs=$.maxExecutionBudgetMs??25000,this.safetyBufferMs=$.safetyBufferMs??2000,this.maxTrackHistory=$.maxTrackHistory??100,this.enabled=$.enabled??!1}async trackExecutionTime({contextId:$},W){let Z=performance.now();try{return await W()}finally{if(this.enabled==!0){let X=performance.now()-Z;if(this.tracks.push({id:crypto.randomUUID(),duration:X,contextId:$}),this.tracks.length>this.maxTrackHistory)this.tracks.shift()}}}getElapsedTotalTime(){return performance.now()-this.startTime}getTimeRemaining(){let $=this.getElapsedTotalTime(),W=this.maxExecutionBudgetMs-$-this.safetyBufferMs;return Math.max(0,W)}getAverageTickDuration($=5){if(this.tracks.length===0)return 0;let W=this.tracks.slice(-$);return W.reduce((P,X)=>P+X.duration,0)/W.length}isSafeToContinue(){if(!this.enabled)return!0;let $=this.getTimeRemaining();if($<=0)return!1;let W=this.getAverageTickDuration(5);if(W>0&&$<W)return!1;return!0}clear($){this.tracks=this.tracks.filter((W)=>W.contextId!==$)}}class $0{maxGlobalJobsPerTick;maxGlobalConcurrency;constructor($,W){this.maxGlobalJobsPerTick=$;this.maxGlobalConcurrency=W}getMaxGlobalConcurrency(){return this.maxGlobalConcurrency}getMaxGlobalJobsPerTick(){return this.maxGlobalJobsPerTick}}var S={REALTIME:{activePollMs:1000,backoffPollMs:1000,idlePollMs:1000,maxTimerMs:5000},STANDARD:{activePollMs:100,backoffPollMs:500,idlePollMs:1e4,maxTimerMs:60000},BALANCED:{activePollMs:1e4,backoffPollMs:500,idlePollMs:1e4,maxTimerMs:60000},RELAXED:{activePollMs:1000,backoffPollMs:20000,idlePollMs:30000,maxTimerMs:60000},ULTRA_EFFICIENT:{activePollMs:5000,backoffPollMs:1e5,idlePollMs:120000,maxTimerMs:240000}};var y$=2147483647;class W0{timers=new Map;profiles=new Map;constructor(){}registerQueueProfile($,W){if(typeof W==="string"){let Z=W!=="CUSTOM"?S[W]:void 0;this.profiles.set($,Z??S.STANDARD)}else this.profiles.set($,W)}getProfile($){let Z=F.get("queues")?.find((P)=>P.queue===$)?.profile;if(Z){if(typeof Z==="string")return Z!=="CUSTOM"?S[Z]:S.STANDARD;if(typeof Z==="object")return Z}return this.profiles.get($)??S.STANDARD}cancel($){let W=this.timers.get($);if(W)clearTimeout(W);this.timers.delete($)}scheduleNext($){let{metrics:W,onNext:Z,onUpcomingDelayedNext:P,onFutureSchedule:X}=$,{queue:Q,readyJobs:G,delayedJobs:J,availableSlots:N,nextVisibleAt:H}=W;this.cancel(Q);let K=this.getProfile(Q);if(G>0&&N>0){this.setTimer(Q,Z,K.activePollMs);return}if(G>0&&N===0){this.setTimer(Q,Z,K.backoffPollMs);return}if(J>0&&H){let V=Math.max(0,H-Date.now());if(V<=K.maxTimerMs){if(P)P(V);this.setTimer(Q,Z,V);return}if(X)X(H).catch((M)=>console.error(`Scheduler error setting long delay for ${Q}:`,M));return}if(K.idlePollMs)this.setTimer(Q,Z,K.idlePollMs)}setTimer($,W,Z){let P=Math.min(Math.max(0,Z),y$),X=()=>{this.timers.delete($),W()};if(P===0){let G=setTimeout(X);this.timers.set($,G);return}let Q=setTimeout(X,P);this.timers.set($,Q)}}class Z0{logger;transitionItems=new Set;constructor($){this.logger=$}transitionToIdleMode({queue:$,stateTransitionPolicy:W}){if(this.transitionItems.has($))return;if(this.transitionItems.add($),this.logger.log(`[ENGINE_STATE] Transitioning engine execution profile to IDLE. Queue config: (${$})`),W?.enabled){let Z=W.idleTimingProfile;if(Z){let P=typeof Z==="object"?{activePollMs:Z.activePollMs,backoffPollMs:Z.backoffPollMs,idlePollMs:Z.idlePollMs}:S[Z];F.modifyQueue($,"profile",P)}}}transitionToActiveMode({queue:$,profile:W,stateTransitionPolicy:Z}){if(this.transitionItems.delete($),Z?.enabled)F.modifyQueue($,"profile",W);this.logger.log(`[ENGINE_STATE] Transitioning engine execution profile to ACTIVE. Queue config: (${$})`)}}class P0{storage;queue;executionProfileSwitcher;unifiedTransportManager;swarmManager;PROCESS_ID;globalSequence=0;consecutiveEmptyTicks=0;logger;events;constructor({queue:$,storage:W,swarmManager:Z,unifiedTransportManager:P,events:X}){this.storage=W,this.queue=$,this.swarmManager=Z,this.unifiedTransportManager=P,this.logger=new I,this.executionProfileSwitcher=new Z0(this.logger),this.PROCESS_ID=crypto.randomUUID().slice(0,12),this.globalSequence=0,this.events=X}async run($,W){let{concurrency:Z,queue:P}=$,X=this.swarmManager.getMaxGlobalConcurrency(),{batches:Q,window:G}=await this.getCandidatesBatch({queueConfig:$,maxGlobalSlotsAllowed:W}),J=$.stateTransitionPolicy?.enabled==!0;if(!Q||Q.length===0){if(J){if(this.consecutiveEmptyTicks++,this.consecutiveEmptyTicks>=($.stateTransitionPolicy?.idleThresholdTicks??10))this.executionProfileSwitcher.transitionToIdleMode($)}this.logger.warn(`[Tick] : [${P}] - Empty Tick Executred)`);return}if(J&&this.consecutiveEmptyTicks>0)this.consecutiveEmptyTicks=0,this.executionProfileSwitcher.transitionToActiveMode($);let N=await this.storage.repository.registerWorker(P,Q,Z,X),H=new Set(N),K=Q.filter((V)=>!H.has(V.workerId));if(K.length>0){let V=K.reduce((M,w)=>M+w.batch.length,0);await this.storage.repository.refundGlobalJobBudget(V,G)}if(N.length===0)return;this.logger.log(`[Tick] : [${P}] - Tick Executred. Total Jobs (${Q.reduce((V,M)=>V+M.batch.length,0)})`),await this.spwanWorkers({candidateBatches:Q,grantedWorkerIds:N,queueConfig:$})}async spwanWorkers({grantedWorkerIds:$,candidateBatches:W,queueConfig:{queue:Z}}){if(!$?.length)return;let P=new Set($),X=W.filter((Q)=>P.has(Q.workerId));await Promise.allSettled(X.map(({batch:Q,workerId:G})=>{return this.unifiedTransportManager.dispatchToNetwork(Z,{batch:Q,worker_id:G})}))}async getCandidatesBatch({queueConfig:$,maxGlobalSlotsAllowed:W}){let{concurrency:Z,maxJobsPerTick:P,queue:X,sleep:Q,n:G}=$,J=await this.storage.repository.getActiveWorkersCount(X),N=Math.max(0,Z-J);if(N===0)return{batches:[],window:""};let H=Math.min(N,W);if(H===0)return{batches:[],window:""};let K=H*G,V=P!==void 0&&P>0?P:1/0,M=Math.min(K,V);if(M<=0)return{batches:[],window:""};let w=this.swarmManager.getMaxGlobalJobsPerTick(),{granted:T,window:A}=await this.storage.repository.claimGlobalJobBudget(M,w);if(T<=0)return{batches:[],window:A};let C=await this.queue.read(X,Q??1,T),g=C.length;if(g===0)return await this.storage.repository.refundGlobalJobBudget(T,A),{batches:[],window:A};if(g<T){let L=T-C.length;await this.storage.repository.refundGlobalJobBudget(L,A)}let _=Math.ceil(g/G),h=Array(_),s=Date.now(),t=0;for(let L=0;L<g;L+=G)h[t++]={workerId:`w_${this.PROCESS_ID}_${s}_${this.globalSequence++}`,batch:C.slice(L,L+G)};return{batches:h,window:A}}}class X0{clock;tickService;scheduler;storage;events;runtimeStrategy;tickState=new Map;activeTicks=new Set;lastHealthCheckAt=0;logger;constructor({scheduler:$,storage:W,tickService:Z,clock:P,events:X,runtimeStrategy:Q}){this.logger=new I,this.clock=P,this.tickService=Z,this.scheduler=$,this.storage=W,this.events=X,this.runtimeStrategy=Q,this.initializeState()}initializeState(){this.tickState.clear(),this.activeTicks.clear()}async runTick($){await this.runtimeStrategy.executeTick($,async()=>{let{queue:W}=$;if(this.initializeTickState($),this.activeTicks.has(W)||this.tickState.get(W)?.stopped)return;this.activeTicks.add(W),this.scheduler.cancel(W);try{let Z=1/0,P=F.get("swarmConfig")?.maxGlobalConcurrency;if(P!==void 0){let X=await this.storage.repository.getGlobalActiveWorkersCount();Z=Math.max(0,P-X)}if(Z>0&&!this.tickState.get(W)?.stopped)await this.tickService.run($,Z)}catch(Z){this.logger.error(`Orchestrator error on ${W}:`,Z)}finally{this.activeTicks.delete(W),this.updateTickCounter(W)}if(this.tickState.get(W)?.stopped==!0)return;await this.runtimeStrategy.scheduleTick($,()=>this.runTick($))})}endTick($){let W=this.tickState.get($);if(W){if(W.stopped==!0)return;if(this.tickState.set($,{...W,stopped:!0}),this.scheduler.cancel($),this.clock.clear($),F.raw.queues.every((P)=>{let X=this.tickState.get(P.queue);return X?X.stopped:!0}))this.events.emit("tick:cycle-completed",{queue:$,cycles:this.tickState.get($)?.count??1})}}initializeTickState($){if(!this.tickState.get($.queue))this.tickState.set($.queue,{count:0,max:$.cycleTickLimit??10,registred:!0,stopped:!1})}updateTickCounter($){let W=this.tickState.get($)??{count:0,stopped:!1,max:10,registred:!1},Z=W.count+1,P=W.max,X=Z>=P;if((W.stopped||X)&&!W.stopped)this.tickState.set($,{count:Z,stopped:W.stopped,max:P,registred:W.registred}),this.endTick($);else this.tickState.set($,{count:Z,stopped:W.stopped,max:P,registred:W.registred});this.triggerPeriodicHealthCheck()}triggerPeriodicHealthCheck(){let $=Date.now(),W=this.runtimeStrategy.shouldShutdownOnCycleComplete,Z=(F.get("engine.healthCheckIntervalSec")??15)*1000;if($-this.lastHealthCheckAt>=Z&&!W)this.lastHealthCheckAt=$,this.events.emit("engine:health-check-requested",{timestamp:$})}}class z{queueService;clock;queues;storage;isolate;events;scheduler;logger;constructor($){this.queueService=$.queueService,this.clock=$.clock,this.queues=$.queues,this.isolate=$.isolate,this.storage=$.storage,this.events=$.events,this.scheduler=$.scheduler,this.logger=new I}async executeQueuesTick($){let W=F.get("engine.tickConcurrency");if(this.logger.log(`[Tick Controller] : Execution tick mode has been selected with concurrency ${W}`),W=="sequential"){for(let Z of this.queues)if(Z.pooler=="interval-driven-pooler")await $(Z)}else{let Z=await Promise.allSettled(this.queues.filter((P)=>P.pooler==="interval-driven-pooler").map((P)=>$(P)));for(let P of Z)if(P.status==="rejected")this.logger.error("[Tick] : Error >>",P.reason)}}async triggerSelfInvocation($){let{queue:W,pooler:Z,delaySec:P,continuationOwnerId:X,isIdpLock:Q,isEdpLock:G,targetEdpQueue:J}=$,N=F.get("engine.selfURL"),K=F.raw.engine.selfInvocationMethod,V={idpInvoked:!1,continuationScheduledForCurrentLock:!1};if(Z==="interval-driven-pooler"){if(V.idpInvoked=!0,Q)V.continuationScheduledForCurrentLock=!0;this.logger.log(`(IDP) : Invoking Self in ${P} seconds...`)}else if(Z==="event-driven-pooler"){if(G&&W===J)V.continuationScheduledForCurrentLock=!0;this.logger.log(`(EDP) : Invoking Self in ${P} seconds...`)}let M={"content-type":"application/json","x-last-execution-id":X,"x-last-execution-at":new Date().toISOString(),"x-execution-owner":"engine","x-restart":"false","x-pooler":Z,"x-target-queue":W};if(K=="auto_using_pgnet")await this.queueService.triggerUrl({url:N,headers:M,delaySeconds:P});else if(typeof K==="object"&&K!==null&&K.method==="manual")await K.handler(N);return V}}class v{storage;logger;runtimeExecutionId;pgNotifyChannel="channel_pulsar_event_driven_queue";events;constructor($,W,Z){this.storage=$;this.logger=W;this.runtimeExecutionId=Z;this.events=new E}async registerPgNotifyHandler($){await this.storage.ops.subscribeToDatabaseEvents(this.pgNotifyChannel,async(W)=>{this.logger.log(`[Persistent Runtime] : Recived PgNotification Event - ${new Date().toISOString()}`);let Z=F.get("queues").find((X)=>X.queue===W.queue_name);if(!Z){this.logger.error(`[Persistent Runtime] : Received notification for unregistered or unmanaged queue: '${W.queue_name}' on channel: ${this.pgNotifyChannel}`);return}if(await this.handleTriggerValidity(Z.queue,W.fencing_token))await $.runTick(Z)},()=>{this.logger.log(`[Persistent Runtime] : Successfully established PostgreSQL notification listener on channel : ${this.pgNotifyChannel}`)})}async registerPollingHandler($){setInterval(async()=>{let W=await this.storage.ops.getPollingQueueEntries("q_3");for(let Z of W){let P=Z.payload.queue_name,X=Z.payload.fencing_token,Q=await this.handleTriggerValidity(P,X);if(Q)await $.runTick(Q),await this.storage.ops.deletePollingQueueEntry(Z.id)}},F.get("engine.poolingIntervalMS"))}async httpEventDrivenQueueTrigger($,W,Z){let P=F.get("queues").find((Q)=>Q.queue===$);if(!P){this.logger.error(`[Persistent Runtime] : Received notification for unregistered or unmanaged queue : '${$}' on channel : ${this.pgNotifyChannel}`);return}if(await this.handleTriggerValidity($,W))await Z.runTick(P)}async handleTriggerValidity($,W){let Z=F.get("queues").find((J)=>J.queue===$);if(!Z)return this.logger.error(`[Persistent Runtime] : pool entry for unregistered or unmanaged queue: '${$}'`),null;if(!await this.storage.ops.checkFencingTokenValidity($,W)){let J=`[EventDrivenPoller]-[ExecutionTrigger]-[${$}] : Engine execution rejected : Invalid fencing token.`;return this.logger.error(J),null}let X=`lock:edp:${$}`,Q=120000;if(await this.storage.repository.acquireQueueLock(X,this.runtimeExecutionId,Q))await this.storage.repository.clearDispatchPending(X);else return this.logger.log(`[Persistent Runtime] : Engine busy for queue ${$}, skipping trigger.`),null;return Z}}class x{minBootRequirementSec;scheduler;events;clock;logger;constructor($,W,Z,P,X){this.minBootRequirementSec=$;this.scheduler=W;this.events=Z;this.clock=P;this.logger=X}timers=new Map;watchdogTimer=null;isShutdownTriggered=!1;evaluateUpcomingDelayedNext($,W){let Z=F.raw.isolate;if(!Z)throw Error("Isolate is not configured for V8_Isolate_Runtime!");let P=F.get("engine.selfInvocationIntervalSec")??1,X=this.minBootRequirementSec,Q=(P+X)*1000;if(Z.remainingTime-$<Q){this.logger.log(`[Isolate Runtime] Sleep duration of ${$}ms exceeds safe isolate budget. Canceling timer sleep and initiating shutdown.`),this.scheduler.cancel(W),this.triggerGracefulShutdown(W);return}this.startDelayedSleepWatchdog(W,Q)}startDelayedSleepWatchdog($,W){this.stopRuntimeWatchdog(),this.isShutdownTriggered=!1,this.watchdogTimer=setInterval(()=>{let Z=F.raw.isolate;if(!Z||this.isShutdownTriggered)return;if(Z.remainingTime<=W)this.logger.log(`[Isolate Watchdog] Remaining isolate budget (${Z.remainingTime}ms) expired during delayed sleep. Canceling wakeup and executing graceful shutdown.`),this.scheduler.cancel($),this.triggerGracefulShutdown($)},1000)}triggerGracefulShutdown($){if(this.isShutdownTriggered)return;this.isShutdownTriggered=!0,this.stopRuntimeWatchdog(),this.events.emit("tick:time-exceeded",{queue:$,elapsedMs:this.clock.getElapsedTotalTime()}),this.events.emit("tick:cycle-completed",{queue:$,cycles:1})}stopRuntimeWatchdog(){if(this.watchdogTimer)clearInterval(this.watchdogTimer),this.watchdogTimer=null}clearTimer($){let W=this.timers.get($);if(W)clearTimeout(W);this.timers.delete($)}forceExecuteTickLater($,W){let P=`Extended time limit reached ${W}ms elapsed, overriding standard caps !`,X=()=>this.events.emit("tick:force-run",{queue:$,reason:P}),Q=W-Date.now();if(Q>2147483647)this.timers.set($.queue,setTimeout(()=>{this.forceExecuteTickLater($,W)},2147483647));this.timers.set($.queue,setTimeout(()=>{X()},Math.max(0,Q)))}}class Q0 extends z{type="PERSISTENT";shouldShutdownOnCycleComplete=!1;minBootRequirementSec=1;runtimeExecutionId;deferredTickEvaluator;runtimeEventBridge;rs;constructor($){super($);this.deferredTickEvaluator=new x(this.minBootRequirementSec,this.scheduler,this.events,this.clock,this.logger),this.runtimeExecutionId=crypto.randomUUID(),this.runtimeEventBridge=new v(this.storage,this.logger,this.runtimeExecutionId),this.rs=B(),this.rs.kv.set("runtime_execution_id",this.runtimeExecutionId)}async onStart($){this.logger.log("Initialized Persistent Runtime.");let W=this.runtimeEventBridge;if(F.raw.runtime=="persistent")switch(F.raw.eventTriggerStrategy){case"POSTGRES_NOTIFY":await W.registerPgNotifyHandler($);break;case"POLLING":await W.registerPollingHandler($);break;case"WEBHOOK":this.logger.log("[Persistent Runtime] : Event Driven Queue triggers will heppen via webhook endpoint.");break}this.rs.kv.set("active_runtime_ctx",$),await this.executeQueuesTick($.runTick)}async executeTick($,W){this.deferredTickEvaluator.clearTimer($.queue);let{isValid:Z,reason:P}=this.validateTickRun($);if(!Z)this.logger.warn(`[Tick] : [${$.queue}] - Rejected, invalid tick run: ${P}. Please Reconnect Worker ASAP.`);if($.interventionPolicy=="tick"){if(await this.storage.repository.getStopSignal($.queue)){this.events.emit("tick:cycle-completed",{queue:$.queue,cycles:1});return}}await W()}validateTickRun({queue:$}){let W=F.raw.queues.find((Z)=>Z.queue===$);if(!W)return{isValid:!1,reason:`Queue configuration could not be found for '${$}'.`};if(W.consumer.type==="socket"){let Z=this.rs.lists.get($);if(!Z)return this.events.emit("tick:end",{queue:$,reason:"Socket consumer connection list does not exist"}),{isValid:!1,reason:`Socket consumer connection list does not exist for queue '${$}'.`};let P=Array.from(Z.values());if(P.length==0)return this.events.emit("tick:end",{queue:$,reason:`Socket consumer has (${P.length}) active connections.`}),{isValid:!1,reason:`Socket consumer for queue '${$}' has (${P.length}) active connections.`}}return{isValid:!0,reason:"Tick run validation passed successfully."}}async scheduleTick($,W){let{queue:Z,concurrency:P,pooler:X}=$,Q=await this.queueService.getSingleQueueMetrics(Z);if(!Q)return;if(Q?.total==0){if(X=="event-driven-pooler"){this.logger.log(`[Tick] : [${Z}] - Tick Process Ended. Cycle Limit Reached`),this.events.emit("tick:cycle-completed",{queue:Z,cycles:1});return}}let G=await this.storage.repository.getActiveWorkersCount(Z),J=Math.max(0,P-G);this.deferredTickEvaluator.clearTimer(Z),this.scheduler.scheduleNext({metrics:{queue:Z,availableSlots:J,...Q},onNext:W,onUpcomingDelayedNext:(N)=>{this.logger.log(`[Scheduler] : Next tick scheduled in ${(N/1000).toFixed(2)}s`)},onFutureSchedule:async(N)=>{let H=N-Date.now();this.logger.log(`[Scheduler] : Deffered tick execution in ${(Math.max(0,H)/1000).toFixed(2)}s`),this.deferredTickEvaluator.forceExecuteTickLater($,N)}})}async handleCycleCompletion(){return!1}async handleRestart(){this.logger.log("[Persistent Runtime] : Restart triggered. Handled by process manager (PM2/systemd).")}}class G0 extends z{type="SERVERLESS_VM";shouldShutdownOnCycleComplete=!0;minBootRequirementSec=1;constructor($){super($);this.logger.log("Initialized Serverless VM Runtime.")}async onStart($){await this.executeQueuesTick($.runTick)}async executeTick($,W){await W()}async scheduleTick($,W){await W()}async handleCycleCompletion($){let W=!1,Z=!1,P=$.currentExecutionId,X=$.lockKey,Q=X?.startsWith("pulsar:lock:edp:"),G=X==="pulsar:lock:idp",J=Q?X?.replace("pulsar:lock:edp:",""):null;for(let{queue:N,pooler:H}of $.getActiveQueues())try{if(H=="interval-driven-pooler"&&W)continue;if(Q&&N!==J)continue;let K=await this.queueService.getSingleQueueMetrics(N);if(!K||K.total===0){console.log(`[Pulsar] Failed to fetch metrics for ${N}. Halting queue.`),$.endTick(N);continue}let V=K.total;if(!await this.storage.repository.evaluateDeadRun(N,H,V,P,15000)){console.log(`[Pulsar] Should not invoke for ${N}. Skipping.`);continue}let w=F.get("engine.selfInvocationIntervalSec")??1,T=await this.triggerSelfInvocation({queue:N,pooler:H,delaySec:w,continuationOwnerId:P,isIdpLock:G,isEdpLock:Q,targetEdpQueue:J});if(T.idpInvoked)W=!0;if(T.continuationScheduledForCurrentLock)Z=!0}catch(K){console.log(`[deadRun] Error checking queue ${N}:`,K)}return Z}async handleRestart($){}}class N0 extends z{deps;type="V8_ISOLATE";shouldShutdownOnCycleComplete=!0;minBootRequirementSec=5;deferredTickEvaluator;constructor($){super($);this.deps=$;this.logger.log("[EngineRuntime] : Initialized V8 Isolate Runtime."),this.deferredTickEvaluator=new x(this.minBootRequirementSec,this.scheduler,this.events,this.clock,this.logger)}async onStart($){await this.executeQueuesTick($.runTick)}async executeTick($,W){let{queue:Z}=$;this.deferredTickEvaluator.stopRuntimeWatchdog();let P=this.deps.clock.isSafeToContinue(),X=this.deps.events;if(!P){this.logger.log("[EngineRuntime] : Ending All Ticks due to time limit."),X.emit("tick:time-exceeded",{queue:Z,elapsedMs:this.deps.clock.getElapsedTotalTime()}),X.emit("tick:cycle-completed",{queue:Z,cycles:1});return}if($.interventionPolicy=="tick"||$.interventionPolicy=="inherit"&&F.get("engine.interventionPolicy")=="tick"){if(await this.storage.repository.getStopSignal($.queue)){X.emit("tick:cycle-completed",{queue:Z,cycles:1});return}}await this.deps.clock.trackExecutionTime({contextId:Z},W)}async scheduleTick($,W){let{queue:Z,concurrency:P,pooler:X}=$,Q=await this.queueService.getSingleQueueMetrics(Z);if(!Q)return;if(Q?.total==0){if(X=="event-driven-pooler"){this.logger.log(`[Tick] : [${Z}] - Tick Process Ended. Cycle Limit Reached`),this.events.emit("tick:cycle-completed",{queue:Z,cycles:1});return}}let G=await this.storage.repository.getActiveWorkersCount(Z),J=Math.max(0,P-G),N=async()=>{this.deferredTickEvaluator.stopRuntimeWatchdog(),await W()};this.scheduler.scheduleNext({metrics:{queue:Z,availableSlots:J,...Q},onNext:N,onUpcomingDelayedNext:(H)=>{return this.logger.log(`[Scheduler] : Next tick scheduled in ${(H/1000).toFixed(2)}s`),this.deferredTickEvaluator.evaluateUpcomingDelayedNext(H,Z)},onFutureSchedule:async(H)=>{this.logger.log("[Scheduler] : scheduled tick execution request",H)}});return}async handleCycleCompletion($){let W=!1,Z=!1,P=$.currentExecutionId,X=$.lockKey,Q=X?.startsWith("pulsar:lock:edp:"),G=X==="pulsar:lock:idp",J=Q?X?.replace("pulsar:lock:edp:",""):null;for(let{queue:N,pooler:H}of $.getActiveQueues())try{if(H=="interval-driven-pooler"&&W)continue;if(Q&&N!==J)continue;let K=await this.queueService.getSingleQueueMetrics(N);if(!K)continue;if(K.total===0)if(this.logger.log(`[Engine] : Queue ${N} is empty (total: 0) using ${H} pooler. Halting tick.`),H=="event-driven-pooler"){$.endTick(N);continue}else $.endTick(N);let V=K.total;if(!await this.storage.repository.evaluateDeadRun(N,H,V,P,15000)){this.logger.log(`[Engine] : Should not invoke for ${N}. Skipping.`);continue}let w=F.get("engine.selfInvocationIntervalSec")??1,T=F.get("runtime")=="v8-isolate",A=w;if(T&&F.raw.isolate){let _=F.raw.isolate.remainingTime/1000,h=this.minBootRequirementSec,s=w+h;if(_<s)return this.logger.log(`[EngineRuntime] : Isolate remaining time (${_.toFixed(3)}s) is insufficient for self-invocation (${w}s delay + ${h}s min work). Triggering restart.`),await this.handleRestart($),!0;let t=Math.max(1,_-h);A=Math.min(w,t)}let C=await this.triggerSelfInvocation({queue:N,pooler:H,delaySec:A,continuationOwnerId:P,isIdpLock:G,isEdpLock:Q,targetEdpQueue:J});if(C.idpInvoked)W=!0;if(C.continuationScheduledForCurrentLock)Z=!0}catch(K){this.logger.log(`[deadRun] : Error checking queue ${N}:`,K)}return Z}async handleRestart($){let W=!1,Z=$.currentExecutionId,P=F.get("engine.selfRestartIntervalSec"),X=$.getActiveQueues();for(let{queue:Q,pooler:G}of X){if(G=="interval-driven-pooler"&&W)continue;let J={"content-type":"application/json","x-last-execution-id":Z,"x-last-execution-at":new Date().toISOString(),"x-execution-owner":"engine","x-restart":"true","x-pooler":G,"x-target-queue":Q};if(this.logger.log(`(${G}) : invoking engine via restartTick (${P})`),G=="interval-driven-pooler")W=!0;let N=$.lockKey;await this.storage.repository.releaseQueueLock(N,$.isolateId),await this.storage.ops.addRestart(X),await this.queueService.triggerUrl({url:F.get("engine.selfURL"),headers:J,delaySeconds:P}),await this.storage.ops.updateRestartOwnership(Q,"handled_by_engine")}}}import{serve as b$}from"crossws/server";var _0=F0(g0(),1);var E0=_0.default;class K0 extends E0{config;serverInstance=null;logger;store;onFetch;constructor($){super();this.config=$;this.logger=new I,this.store=B()}async start(){let $=this;this.logger.log(`[Network] : Initializing server on port ${this.config.port} in [${this.config.mode}] mode`);let W=this.config.mode==="hybrid"||this.config.mode==="websocket";if(W)this.logger.log(`[Network] : WebSocket server handlers attached on port ${this.config.port}`);this.serverInstance=b$({port:this.config.port,...W?{websocket:{open(Z){$.emit("open",Z)},message(Z,P){$.emit("message",Z,P)},close(Z,P){$.emit("close",Z,P)}}}:{},fetch(Z){if($.onFetch)return $.onFetch(Z);return $.logger.warn(`[Network] : Unhandled route accessed: ${Z.method} ${Z.url}`),new Response(null,{status:404})},gracefulShutdown:!1,maxRequestBodySize:void 0}),this.store.kv.set("self_url",this.serverInstance.url),await this.serverInstance.ready(),this.logger.log(`[Server] Successfully started and listening on port ${this.config.port}`)}async close(){try{await this.serverInstance?.close(!0)}catch($){this.logger.error("[Network] : Error closing server:",$)}}}var z0=F0(B0(),1);class y{config;isRunning=!1;logger;rs;constructor($){this.config=$;this.logger=new I,this.rs=B()}}class u extends y{networkConfig;networkInterface;storage;queueService;interface="HTTP";consumersMap;triggerHandler;runtimeEventBridge;store;constructor($,W,Z,P){super($);this.networkConfig=$;this.networkInterface=W;this.storage=Z;this.queueService=P;this.store=B();let X=this.rs.kv.get("runtime_execution_id");this.runtimeEventBridge=new v(this.storage,this.logger,X);let Q=F.get("queues"),G=new Map;if(Q.forEach(({consumer:J,queue:N})=>G.set(N,J)),this.consumersMap=G,this.networkInterface)this.networkInterface.onFetch=(J)=>this.handleFetch(J)}async start(){}async broadcast($,W,Z){let P=this.consumersMap.get($);if(!P)throw Error(`No consumer registered for queue: "${$}"`);if(P.type!=="http")return;let{worker_id:X,batch:Q}=W,G=Z?z0.default.encode(W):W,J=F.get("runtime")=="persistent"?this.store.kv.get("self_url"):F.get("engine.selfURL");try{await fetch(`${P.url}/dispatch`,{method:"POST",headers:{"content-type":Z?"application/x-msgpack":"application/json",...P.headers,"x-worker-id":X,"x-batch-size":Q.length.toString(),"x-pulsar-callback-url":J,"x-queue":$,"x-execution-signature":crypto.randomUUID(),"x-instance-id":F.get("instanceId"),"x-api-key":F.get("apiKey"),"x-dispatched-at":new Date().toISOString()},body:G})}catch(N){this.logger.error("Error dispatching jobs to http consumer,",N)}}onTrigger($){this.triggerHandler=$}async stop(){}async handleFetch($){let{url:W,method:Z,body:P,headers:X}=await v$($),Q=x$(X),G=new URL(W),J={headers:Q,body:P};if(G.pathname.endsWith("/ack")&&Z==="POST"){let K=await this.handleAck(J);return new Response(K.message,{status:K.status})}if(G.pathname.endsWith("/nack")&&Z==="POST"){let K=await this.handleNack(J);return new Response(K.message,{status:K.status})}if(G.pathname.endsWith("/retry")&&Z==="POST"){let K=await this.handleRetry(J);return new Response(K.message,{status:K.status})}if(G.pathname.endsWith("/deregister")&&Z==="POST"){let K=await this.handleDeregister(J);return new Response(K.message,{status:K.status})}let{executionOwner:N,poolerMode:H}=Q;if(N=="trigger"){if(H=="event-driven-pooler"){let K=Q.targetQueue,V=Q.fencingToken??"0",M=this.store.kv.get("active_runtime_ctx");if(!M)return this.logger.warn("active runtime context was not found"),new Response("UNKNOWN ROUTE",{status:200});else await this.runtimeEventBridge.httpEventDrivenQueueTrigger(K,V,M)}}return new Response("UNKNOWN ROUTE",{status:200})}async performBatchAction($,W,Z,P){try{switch(P){case"ACK":await this.queueService.ackBatch($,Z);break;case"NACK":await this.queueService.ackBatch($,Z);break;case"RETRY":await this.queueService.retryBatch($,Z);break;case"DEREGISTER":await this.storage.repository.deregisterWorker(W,$);break}}catch(X){throw this.logger.error(`Error performing batch action [${P}] for queue [${$}]:`,X),X}}parseBody($){try{if($ instanceof ArrayBuffer||ArrayBuffer.isView($))return z0.default.decode($);return $}catch(W){throw Error(`Failed to parse request body : ${W?.message}`)}}extractContext($){let W=$.headers,Z=this.parseBody($.body),P=W.targetQueue,X=W.workerId??"";if(!P)throw Error("[HttpNetworkDriver] Queue not found in headers");return{headers:W,body:Z,queue:P,workerId:X}}async getMessageIds($){let{queue:W,body:Z,workerId:P}=this.extractContext($),Q=(Array.isArray(Z?.msg_ids)?Z.msg_ids:[]).map((G)=>Number.parseInt(String(G),10)).filter((G)=>Number.isInteger(G)&&G>=0);return{queue:W,messageIds:Q,workerId:P}}async handleAck($){let{messageIds:W,queue:Z,workerId:P}=await this.getMessageIds($);return await this.performBatchAction(Z,P,W,"ACK"),{message:"Jobs Acknowledged",status:200}}async handleNack($){let{messageIds:W,queue:Z,workerId:P}=await this.getMessageIds($);return await this.performBatchAction(Z,P,W,"NACK"),{message:"Jobs Not Acknowledged",status:200}}async handleRetry($){let{queue:W,workerId:Z,messageIds:P}=await this.getMessageIds($);return await this.performBatchAction(W,Z,P,"RETRY"),{message:"Jobs Retry Applied",status:200}}async handleDeregister($){let{queue:W,workerId:Z}=this.extractContext($);if(!Z)throw Error("[HttpNetworkDriver] Worker ID not found in headers");return await this.performBatchAction(W,Z,[],"DEREGISTER"),{message:"Worker Deregistered",status:200}}}var l$=F0(B0(),1);class D0 extends y{networkInterface;interface="WEBSOCKET";queuePeers=new Map;triggerHandler;boundOpen=($)=>this.onConnectionOpen($);boundMessage=($,W)=>this.onMessage($,W);boundClose=($)=>this.onConnectionClose($);constructor($,W){super($);this.networkInterface=W;this.networkInterface.on("open",this.boundOpen),this.networkInterface.on("message",this.boundMessage),this.networkInterface.on("close",this.boundClose)}async start(){}async broadcast($,W,Z){let P=this.queuePeers.get($);if(!P||P.size===0){this.logger.warn(`[Network] : No active workers listening on queue: ${$}`);return}let X=Z?l$.default.encode(W):W;for(let Q of P)try{Q.send(X)}catch(G){this.logger.error(`[Network] : Failed to send message to peer ${Q.id}:`,G)}}onTrigger($){this.triggerHandler=$}async stop(){this.networkInterface.off("open",this.boundOpen),this.networkInterface.off("message",this.boundMessage),this.networkInterface.off("close",this.boundClose);for(let $ of this.queuePeers.values())for(let W of $)try{W.close(1001,"server shutting down")}catch{}this.queuePeers.clear()}onConnectionOpen($){this.logger.log("[Network] : Worker connected:",$.id)}onMessage($,W){let Z=JSON.parse(W.toString());Z.type==="REGISTER"?this.handleWorkerRegistration($,Z):this.handleWorkerMessage(Z)}handleWorkerRegistration($,W){let Z=this.queuePeers.get(W.queue);if(!Z)Z=new Set,this.queuePeers.set(W.queue,Z);if(Z.has($)){this.logger.log(`[Network] : Worker ${$.id} is already registered to queue: ${W.queue}`);return}$.subscribe(W.queue),Z.add($),this.rs.lists.add(W.queue,$.id),this.logger.log(`[Network] : Worker ${$.id} registered to queue: ${W.queue}`)}handleWorkerMessage($){if(this.triggerHandler){let W=$.queue,Z=$.data!==void 0?$?.data:$;if(W)this.triggerHandler(W,Z)}}onConnectionClose($){this.logger.log("[Network] : [WebSocketNetworkDriver] - Worker disconnected:",$.id);for(let[W,Z]of this.queuePeers.entries())if(Z.has($)){if(Z.delete($),this.rs.lists.remove(W,$.id),Z.size===0)this.queuePeers.delete(W)}}}class o{config;storage;queueServuce;drivers=[];topology;networkInterface;isServerMode;logger;constructor($,W,Z){this.config=$;this.storage=W;this.queueServuce=Z;if(this.topology=$.mode,this.isServerMode=$.isServer,this.logger=new I,this.isServerMode)this.initializeTopology();else this.initializeClientTopology()}initializeTopology(){if(this.networkInterface=new K0(this.config),this.config.mode==="websocket"||this.config.mode==="hybrid")this.drivers.push(new D0(this.config,this.networkInterface));if(this.config.mode==="http"||this.config.mode==="hybrid")this.drivers.push(new u(this.config,this.networkInterface,this.storage,this.queueServuce))}initializeClientTopology(){this.drivers.push(new u(this.config,void 0,this.storage,this.queueServuce))}async bootAll(){if(!this.isServerMode||!this.networkInterface)return;await this.networkInterface.start();for(let $ of this.drivers)await $.start()}async shutdownAll(){if(!this.isServerMode)return;for(let $ of this.drivers)await $.stop();await this.networkInterface?.close()}onTrigger($){for(let W of this.drivers)W.onTrigger($)}async dispatchToNetwork($,W){let Z=F.get("queues").find((J)=>J.queue===$),P={http:"HTTP",socket:"WEBSOCKET"},X=Z.consumer.type,Q=P[X];if(!Q)throw Error(`[DispatchToNetwork] : Unsupported consumer type "${X}" for queue: "${$}"`);for(let J of this.drivers)if(J.interface===Q)await J.broadcast($,W,Z.consumer.optimizePayload??!0);if(this.drivers.filter((J)=>J.interface===Q).length===0)throw this.logger.error(`[DispatchToNetwork] : No "${Q}" driver available for queue "${$}" (mode: ${this.topology}, server: ${this.isServerMode})`),Error(`[DispatchToNetwork] : No "${Q}" driver available for queue "${$}" (mode: ${this.topology}, server: ${this.isServerMode})`)}}class C0{storage;tickService;tickController;unifiedTransportManager;swarmManager;scheduler;queueService;clock;events;queues=[];consumers=[];runtimeStrategy;logger;integrations=new Map;constructor($){if(F.initialize($),this.logger=new I,$.integrations?.length)this.runIntegrations($.integrations);for(let{consumer:G,...J}of F.raw.queues)this.queues.push(J),this.consumers.push(G);let W=F.get("instanceId");if(!W)throw Error("[Pulsar] : instanceId is required.");if(typeof W!=="string"||!/^[a-zA-Z0-9_-]+$/.test(W))throw Error('[Pulsar] : Invalid instanceId format. It must contain only alphanumeric characters, hyphens, and underscores (e.g., "string-like-this" or "or_this").');this.events=new E;let P=1/0,X=F.raw.runtime==="v8-isolate",Q=F.get("isolate");if(X)P=Math.max(0,Q.remainingTime-5000);if(this.storage=F.raw.storage,this.storage.connect(),this.storage.bindInstanceId(W),this.clock=new e({maxExecutionBudgetMs:P,safetyBufferMs:0,maxTrackHistory:50,enabled:!0}),this.queueService=new q$(this.storage),this.scheduler=new W0,this.runtimeStrategy=this.resolveRuntimeStrategy(),!this.runtimeStrategy)throw this.logger.error("[Pulsar] Failed to resolve a valid runtime strategy."),Error("[Pulsar] Failed to resolve a valid runtime strategy.");if(F.raw.runtime=="persistent")this.unifiedTransportManager=new o({...F.raw.networkInterface,isServer:!0},this.storage,this.queueService);else this.unifiedTransportManager=new o({mode:"client",isServer:!1,port:0},this.storage,this.queueService);if(this.swarmManager=new $0(F.raw.swarmConfig?.globalMaxJobsPerTick??1/0,F.raw.swarmConfig?.maxGlobalConcurrency??1/0),this.tickService=new P0({queue:this.queueService,storage:this.storage,swarmManager:this.swarmManager,unifiedTransportManager:this.unifiedTransportManager,events:this.events}),this.tickController=new X0({scheduler:this.scheduler,storage:this.storage,tickService:this.tickService,clock:this.clock,events:this.events,runtimeStrategy:this.runtimeStrategy}),Number.isFinite(P))this.logger.log(`[EngineRuntime] : isolate registred with id : [${Q.id}]`),this.logger.log(`[Clock] : Synced execution timeout (${P/1000}s) with isolate [${Q.id}]`);else this.logger.log(`[EngineRuntime] : Engine Started With No V8 Isolate (${new Date().toISOString()})`)}resolveRuntimeStrategy(){let $={queueService:this.queueService,clock:this.clock,queues:this.queues,storage:this.storage,isolate:this.V8Isolate,events:this.events,scheduler:this.scheduler};switch(F.get("runtime")){case"persistent":return new Q0($);case"serverless-vm":return new G0($);case"v8-isolate":return new N0($);default:throw Error("Unsupported Runtime")}}async runIntegrations($){for(let W of $){let Z;if(typeof W==="function")Z=new W("ALL");else Z=W;await Z.main(this),this.integrations.set(Z.module,Z)}}getIntegration($){if(typeof $==="string")return this.integrations.get($);for(let Z of this.integrations.values())if(Z instanceof $)return Z;let W=typeof $==="string"?$:$.name;throw Error(`Integration "${W}" is not registered.`)}get runtime(){return this.runtimeStrategy.type}get isV8Isolate(){return F.get("runtime")==="v8-isolate"}get V8Isolate(){return F.raw.isolate}async exit(){await this.storage.disconnect()}}class j$ extends C0{baseConfig;isolateId;currentExecutionId;lockKey;shutdownPromise=null;eventCleanUps=[];activeQueues=new Set;constructor($){super($);this.baseConfig=$;if(this.registerEvents(),!this.isV8Isolate)this.isolateId=crypto.randomUUID();else this.isolateId=this.V8Isolate.id;if(this.isV8Isolate)this.currentExecutionId=this.V8Isolate.get("current_execution_id"),this.lockKey=this.V8Isolate.get("lock_key");else this.currentExecutionId=this.generateCurrentExecutionIdFromConfig(),this.lockKey="lock-template-static-defination-for-non-v8";this.tickController.initializeState()}async start(){await this.unifiedTransportManager.bootAll(),await F.reconcileConfiguration(this.storage.ops),this.tickController.initializeState(),this.configureQueueProfiles(),await this.runtimeStrategy.onStart(this.executionContext)}async triggerQueue($){let W=this.queues.find((Z)=>Z.queue===$);if(!W)throw Error("[Pulsar] Target queue is missing.");this.logger.log(`[Pulsar] : Event-driven trigger for (${$})`),await this.validateConfiguration(),await this.runTick(W)}async validateConfiguration(){return{status:200,message:await F.reconcileConfiguration(this.storage.ops)}}configureQueueProfiles(){for(let $ of this.queues){let W=$.profile||"REALTIME";this.scheduler.registerQueueProfile($.queue,W)}}async runTick($){return this.activeQueues.add($),await this.tickController.runTick($)}async shutdown(){return this.shutdownPromise??=this.doShutdown(),this.shutdownPromise}async doShutdown(){if(this.logger.log("Engine Shutdown ⚠️."),this.removeRegisteredEvents(),this.unifiedTransportManager)await this.unifiedTransportManager.shutdownAll();if(!await this.runtimeStrategy.handleCycleCompletion(this.executionContext))await this.releaseExecutionLock(this.lockKey,this.currentExecutionId);await this.storage.ops.pingHealthCheck(),await this.storage.disconnect()}async scheduleRestart($){if($){let Z=this.queues.find((P)=>P.queue==$);if(Z)this.activeQueues.add(Z)}let W=Array.from(this.activeQueues.values());await this.releaseExecutionLock(this.lockKey,this.isolateId),await this.storage.ops.addRestart(W),await this.runtimeStrategy.handleRestart(this.executionContext),await this.storage.ops.updateRestartOwnership($,"handled_by_engine")}async restartForSameIsolate($){let W=30;if(this.isV8Isolate)W=this.V8Isolate.remainingTime+5;this.logger.log(`Estimated Restart in (${W})S`),await this.queueService.triggerUrl({url:F.get("engine.selfURL"),headers:$,delaySeconds:W})}get executionContext(){return{lockKey:this.lockKey,currentExecutionId:this.currentExecutionId,isolateId:this.isolateId,getActiveQueues:()=>Array.from(this.activeQueues.values()),runTick:($)=>this.runTick($),endTick:($)=>this.tickController.endTick($)}}setCurrentExecutionId($){this.currentExecutionId=$}generateCurrentExecutionIdFromConfig(){let $=this.baseConfig.queues.map((W)=>`${W.queue}:${W.pooler}`).join(",");return JW($)}registerEvents(){let $=this.runtimeStrategy.shouldShutdownOnCycleComplete;this.eventCleanUps.push(this.events.on("tick:cycle-completed",async()=>{if($)await this.shutdown();else this.logger.log("[Pulsar Persistent] : Cycle completed. Resetting state for next execution round."),this.tickController.initializeState()})),this.eventCleanUps.push(this.events.on("tick:force-run",async({queue:W,reason:Z})=>{this.logger.log(`[Tick] : Force executing tick for queue [${W.queue}] Trigger Reason : ${Z}`),await this.runTick(W)})),this.eventCleanUps.push(this.events.on("tick:end",({queue:W,reason:Z})=>{this.logger.log(`[Tick] : Force stoping tick for queue [${W}] (Trigger Reason : ${Z})`),this.tickController.endTick(W)})),this.eventCleanUps.push(this.events.on("tick:time-exceeded",async()=>{if($)await this.shutdown()})),this.eventCleanUps.push(this.events.on("engine:health-check-requested",async()=>{this.logger.log(`Pulsar : Health checking ping at (${new Date().toISOString()})`),await this.storage.ops.pingHealthCheck()}))}removeRegisteredEvents(){this.eventCleanUps.forEach(($)=>$()),this.eventCleanUps=[]}async awaitPendingShutdown(){if(await this.events.drain(),this.shutdownPromise)await this.shutdownPromise}async deleteScheduledRestart($){await this.storage.ops.deleteRestart($)}async acquireExecutionLock($,W,Z){return await this.storage.repository.acquireQueueLock($,W,Z)}async releaseExecutionLock($,W){return await this.storage.repository.releaseQueueLock($,W)}}export{p$ as createQueue,l as PulsarRuntime,j$ as Pulsar,h0 as IsolateInstance,L0 as EventTriggerStrategy};
|
|
5
|
+
import{a as q$,b as v$,c as x$}from"./chunk-a9kye38b.js";import{d as B,e as F}from"./chunk-rrj8rm04.js";import{f as L0,g as l,h as I}from"./chunk-cpn1qh4e.js";import{i as F0,j as U}from"./chunk-3sg08kqp.js";var g0=U((sW,J0)=>{var f$=Object.prototype.hasOwnProperty,k="~";function q(){}if(Object.create){if(q.prototype=Object.create(null),!new q().__proto__)k=!1}function d$($,W,Z){this.fn=$,this.context=W,this.once=Z||!1}function m0($,W,Z,P,X){if(typeof Z!=="function")throw TypeError("The listener must be a function");var Q=new d$(Z,P||$,X),G=k?k+W:W;if(!$._events[G])$._events[G]=Q,$._eventsCount++;else if(!$._events[G].fn)$._events[G].push(Q);else $._events[G]=[$._events[G],Q];return $}function f($,W){if(--$._eventsCount===0)$._events=new q;else delete $._events[W]}function R(){this._events=new q,this._eventsCount=0}R.prototype.eventNames=function(){var W=[],Z,P;if(this._eventsCount===0)return W;for(P in Z=this._events)if(f$.call(Z,P))W.push(k?P.slice(1):P);if(Object.getOwnPropertySymbols)return W.concat(Object.getOwnPropertySymbols(Z));return W};R.prototype.listeners=function(W){var Z=k?k+W:W,P=this._events[Z];if(!P)return[];if(P.fn)return[P.fn];for(var X=0,Q=P.length,G=Array(Q);X<Q;X++)G[X]=P[X].fn;return G};R.prototype.listenerCount=function(W){var Z=k?k+W:W,P=this._events[Z];if(!P)return 0;if(P.fn)return 1;return P.length};R.prototype.emit=function(W,Z,P,X,Q,G){var J=k?k+W:W;if(!this._events[J])return!1;var N=this._events[J],H=arguments.length,K,V;if(N.fn){if(N.once)this.removeListener(W,N.fn,void 0,!0);switch(H){case 1:return N.fn.call(N.context),!0;case 2:return N.fn.call(N.context,Z),!0;case 3:return N.fn.call(N.context,Z,P),!0;case 4:return N.fn.call(N.context,Z,P,X),!0;case 5:return N.fn.call(N.context,Z,P,X,Q),!0;case 6:return N.fn.call(N.context,Z,P,X,Q,G),!0}for(V=1,K=Array(H-1);V<H;V++)K[V-1]=arguments[V];N.fn.apply(N.context,K)}else{var M=N.length,w;for(V=0;V<M;V++){if(N[V].once)this.removeListener(W,N[V].fn,void 0,!0);switch(H){case 1:N[V].fn.call(N[V].context);break;case 2:N[V].fn.call(N[V].context,Z);break;case 3:N[V].fn.call(N[V].context,Z,P);break;case 4:N[V].fn.call(N[V].context,Z,P,X);break;default:if(!K)for(w=1,K=Array(H-1);w<H;w++)K[w-1]=arguments[w];N[V].fn.apply(N[V].context,K)}}}return!0};R.prototype.on=function(W,Z,P){return m0(this,W,Z,P,!1)};R.prototype.once=function(W,Z,P){return m0(this,W,Z,P,!0)};R.prototype.removeListener=function(W,Z,P,X){var Q=k?k+W:W;if(!this._events[Q])return this;if(!Z)return f(this,Q),this;var G=this._events[Q];if(G.fn){if(G.fn===Z&&(!X||G.once)&&(!P||G.context===P))f(this,Q)}else{for(var J=0,N=[],H=G.length;J<H;J++)if(G[J].fn!==Z||X&&!G[J].once||P&&G[J].context!==P)N.push(G[J]);if(N.length)this._events[Q]=N.length===1?N[0]:N;else f(this,Q)}return this};R.prototype.removeAllListeners=function(W){var Z;if(W){if(Z=k?k+W:W,this._events[Z])f(this,Z)}else this._events=new q,this._eventsCount=0;return this};R.prototype.off=R.prototype.removeListener;R.prototype.addListener=R.prototype.on;R.prefixed=k;R.EventEmitter=R;if(typeof J0<"u")J0.exports=R});var d=U((j0)=>{Object.defineProperty(j0,"__esModule",{value:!0});j0.utf8Count=i$;j0.utf8EncodeJs=v0;j0.utf8EncodeTE=x0;j0.utf8Encode=c$;j0.utf8DecodeJs=l0;j0.utf8DecodeTD=q0;j0.utf8Decode=s$;function i$($){let W=$.length,Z=0,P=0;while(P<W){let X=$.charCodeAt(P++);if((X&4294967168)===0){Z++;continue}else if((X&4294965248)===0)Z+=2;else{if(X>=55296&&X<=56319){if(P<W){let Q=$.charCodeAt(P);if((Q&64512)===56320)++P,X=((X&1023)<<10)+(Q&1023)+65536}}if((X&4294901760)===0)Z+=3;else Z+=4}}return Z}function v0($,W,Z){let P=$.length,X=Z,Q=0;while(Q<P){let G=$.charCodeAt(Q++);if((G&4294967168)===0){W[X++]=G;continue}else if((G&4294965248)===0)W[X++]=G>>6&31|192;else{if(G>=55296&&G<=56319){if(Q<P){let J=$.charCodeAt(Q);if((J&64512)===56320)++Q,G=((G&1023)<<10)+(J&1023)+65536}}if((G&4294901760)===0)W[X++]=G>>12&15|224,W[X++]=G>>6&63|128;else W[X++]=G>>18&7|240,W[X++]=G>>12&63|128,W[X++]=G>>6&63|128}W[X++]=G&63|128}}var r$=new TextEncoder,n$=50;function x0($,W,Z){r$.encodeInto($,W.subarray(Z))}function c$($,W,Z){if($.length>n$)x0($,W,Z);else v0($,W,Z)}var a$=4096;function l0($,W,Z){let P=W,X=P+Z,Q=[],G="";while(P<X){let J=$[P++];if((J&128)===0)Q.push(J);else if((J&224)===192){let N=$[P++]&63;Q.push((J&31)<<6|N)}else if((J&240)===224){let N=$[P++]&63,H=$[P++]&63;Q.push((J&31)<<12|N<<6|H)}else if((J&248)===240){let N=$[P++]&63,H=$[P++]&63,K=$[P++]&63,V=(J&7)<<18|N<<12|H<<6|K;if(V>65535)V-=65536,Q.push(V>>>10&1023|55296),V=56320|V&1023;Q.push(V)}else Q.push(J);if(Q.length>=a$)G+=String.fromCharCode(...Q),Q.length=0}if(Q.length>0)G+=String.fromCharCode(...Q);return G}var u$=new TextDecoder,o$=200;function q0($,W,Z){let P=$.subarray(W,W+Z);return u$.decode(P)}function s$($,W,Z){if(Z>o$)return q0($,W,Z);else return l0($,W,Z)}});var V0=U((y0)=>{Object.defineProperty(y0,"__esModule",{value:!0});y0.ExtData=void 0;class p0{type;data;constructor($,W){this.type=$,this.data=W}}y0.ExtData=p0});var i=U((d0)=>{Object.defineProperty(d0,"__esModule",{value:!0});d0.DecodeError=void 0;class b extends Error{constructor($){super($);let W=Object.create(b.prototype);Object.setPrototypeOf(this,W),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:b.name})}}d0.DecodeError=b});var r=U((i0)=>{Object.defineProperty(i0,"__esModule",{value:!0});i0.UINT32_MAX=void 0;i0.setUint64=Q1;i0.setInt64=G1;i0.getInt64=N1;i0.getUint64=J1;i0.UINT32_MAX=4294967295;function Q1($,W,Z){let P=Z/4294967296,X=Z;$.setUint32(W,P),$.setUint32(W+4,X)}function G1($,W,Z){let P=Math.floor(Z/4294967296),X=Z;$.setUint32(W,P),$.setUint32(W+4,X)}function N1($,W){let Z=$.getInt32(W),P=$.getUint32(W+4);return Z*4294967296+P}function J1($,W){let Z=$.getUint32(W),P=$.getUint32(W+4);return Z*4294967296+P}});var H0=U((t0)=>{Object.defineProperty(t0,"__esModule",{value:!0});t0.timestampExtension=t0.EXT_TIMESTAMP=void 0;t0.encodeTimeSpecToTimestamp=c0;t0.encodeDateToTimeSpec=a0;t0.encodeTimestampExtension=u0;t0.decodeTimestampToTimeSpec=o0;t0.decodeTimestampExtension=s0;var Y1=i(),n0=r();t0.EXT_TIMESTAMP=-1;var M1=4294967295,U1=17179869183;function c0({sec:$,nsec:W}){if($>=0&&W>=0&&$<=U1)if(W===0&&$<=M1){let Z=new Uint8Array(4);return new DataView(Z.buffer).setUint32(0,$),Z}else{let Z=$/4294967296,P=$&4294967295,X=new Uint8Array(8),Q=new DataView(X.buffer);return Q.setUint32(0,W<<2|Z&3),Q.setUint32(4,P),X}else{let Z=new Uint8Array(12),P=new DataView(Z.buffer);return P.setUint32(0,W),(0,n0.setInt64)(P,4,$),Z}}function a0($){let W=$.getTime(),Z=Math.floor(W/1000),P=(W-Z*1000)*1e6,X=Math.floor(P/1e9);return{sec:Z+X,nsec:P-X*1e9}}function u0($){if($ instanceof Date){let W=a0($);return c0(W)}else return null}function o0($){let W=new DataView($.buffer,$.byteOffset,$.byteLength);switch($.byteLength){case 4:{let Z=W.getUint32(0),P=0;return{sec:Z,nsec:0}}case 8:{let Z=W.getUint32(0),P=W.getUint32(4),X=(Z&3)*4294967296+P,Q=Z>>>2;return{sec:X,nsec:Q}}case 12:{let Z=(0,n0.getInt64)(W,4),P=W.getUint32(0);return{sec:Z,nsec:P}}default:throw new Y1.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${$.length}`)}}function s0($){let W=o0($);return new Date(W.sec*1000+W.nsec/1e6)}t0.timestampExtension={type:t0.EXT_TIMESTAMP,encode:u0,decode:s0}});var c=U((W$)=>{Object.defineProperty(W$,"__esModule",{value:!0});W$.ExtensionCodec=void 0;var n=V0(),O1=H0();class Y0{static defaultCodec=new Y0;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(O1.timestampExtension)}register({type:$,encode:W,decode:Z}){if($>=0)this.encoders[$]=W,this.decoders[$]=Z;else{let P=-1-$;this.builtInEncoders[P]=W,this.builtInDecoders[P]=Z}}tryToEncode($,W){for(let Z=0;Z<this.builtInEncoders.length;Z++){let P=this.builtInEncoders[Z];if(P!=null){let X=P($,W);if(X!=null){let Q=-1-Z;return new n.ExtData(Q,X)}}}for(let Z=0;Z<this.encoders.length;Z++){let P=this.encoders[Z];if(P!=null){let X=P($,W);if(X!=null){let Q=Z;return new n.ExtData(Q,X)}}}if($ instanceof n.ExtData)return $;return null}decode($,W,Z){let P=W<0?this.builtInDecoders[-1-W]:this.decoders[W];if(P)return P($,W,Z);else return new n.ExtData(W,$)}}W$.ExtensionCodec=Y0});var M0=U((P$)=>{Object.defineProperty(P$,"__esModule",{value:!0});P$.ensureUint8Array=S1;function A1($){return $ instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&$ instanceof SharedArrayBuffer}function S1($){if($ instanceof Uint8Array)return $;else if(ArrayBuffer.isView($))return new Uint8Array($.buffer,$.byteOffset,$.byteLength);else if(A1($))return new Uint8Array($);else return Uint8Array.from($)}});var w0=U((G$)=>{Object.defineProperty(G$,"__esModule",{value:!0});G$.Encoder=G$.DEFAULT_INITIAL_BUFFER_SIZE=G$.DEFAULT_MAX_DEPTH=void 0;var X$=d(),z1=c(),Q$=r(),D1=M0();G$.DEFAULT_MAX_DEPTH=100;G$.DEFAULT_INITIAL_BUFFER_SIZE=2048;class U0{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor($){this.extensionCodec=$?.extensionCodec??z1.ExtensionCodec.defaultCodec,this.context=$?.context,this.useBigInt64=$?.useBigInt64??!1,this.maxDepth=$?.maxDepth??G$.DEFAULT_MAX_DEPTH,this.initialBufferSize=$?.initialBufferSize??G$.DEFAULT_INITIAL_BUFFER_SIZE,this.sortKeys=$?.sortKeys??!1,this.forceFloat32=$?.forceFloat32??!1,this.ignoreUndefined=$?.ignoreUndefined??!1,this.forceIntegerToFloat=$?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new U0({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef($){if(this.entered)return this.clone().encodeSharedRef($);try{return this.entered=!0,this.reinitializeState(),this.doEncode($,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode($){if(this.entered)return this.clone().encode($);try{return this.entered=!0,this.reinitializeState(),this.doEncode($,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode($,W){if(W>this.maxDepth)throw Error(`Too deep objects in depth ${W}`);if($==null)this.encodeNil();else if(typeof $==="boolean")this.encodeBoolean($);else if(typeof $==="number")if(!this.forceIntegerToFloat)this.encodeNumber($);else this.encodeNumberAsFloat($);else if(typeof $==="string")this.encodeString($);else if(this.useBigInt64&&typeof $==="bigint")this.encodeBigInt64($);else this.encodeObject($,W)}ensureBufferSizeToWrite($){let W=this.pos+$;if(this.view.byteLength<W)this.resizeBuffer(W*2)}resizeBuffer($){let W=new ArrayBuffer($),Z=new Uint8Array(W),P=new DataView(W);Z.set(this.bytes),this.view=P,this.bytes=Z}encodeNil(){this.writeU8(192)}encodeBoolean($){if($===!1)this.writeU8(194);else this.writeU8(195)}encodeNumber($){if(!this.forceIntegerToFloat&&Number.isSafeInteger($))if($>=0)if($<128)this.writeU8($);else if($<256)this.writeU8(204),this.writeU8($);else if($<65536)this.writeU8(205),this.writeU16($);else if($<4294967296)this.writeU8(206),this.writeU32($);else if(!this.useBigInt64)this.writeU8(207),this.writeU64($);else this.encodeNumberAsFloat($);else if($>=-32)this.writeU8(224|$+32);else if($>=-128)this.writeU8(208),this.writeI8($);else if($>=-32768)this.writeU8(209),this.writeI16($);else if($>=-2147483648)this.writeU8(210),this.writeI32($);else if(!this.useBigInt64)this.writeU8(211),this.writeI64($);else this.encodeNumberAsFloat($);else this.encodeNumberAsFloat($)}encodeNumberAsFloat($){if(this.forceFloat32)this.writeU8(202),this.writeF32($);else this.writeU8(203),this.writeF64($)}encodeBigInt64($){if($>=BigInt(0))this.writeU8(207),this.writeBigUint64($);else this.writeU8(211),this.writeBigInt64($)}writeStringHeader($){if($<32)this.writeU8(160+$);else if($<256)this.writeU8(217),this.writeU8($);else if($<65536)this.writeU8(218),this.writeU16($);else if($<4294967296)this.writeU8(219),this.writeU32($);else throw Error(`Too long string: ${$} bytes in UTF-8`)}encodeString($){let Z=(0,X$.utf8Count)($);this.ensureBufferSizeToWrite(5+Z),this.writeStringHeader(Z),(0,X$.utf8Encode)($,this.bytes,this.pos),this.pos+=Z}encodeObject($,W){let Z=this.extensionCodec.tryToEncode($,this.context);if(Z!=null)this.encodeExtension(Z);else if(Array.isArray($))this.encodeArray($,W);else if(ArrayBuffer.isView($))this.encodeBinary($);else if(typeof $==="object")this.encodeMap($,W);else throw Error(`Unrecognized object: ${Object.prototype.toString.apply($)}`)}encodeBinary($){let W=$.byteLength;if(W<256)this.writeU8(196),this.writeU8(W);else if(W<65536)this.writeU8(197),this.writeU16(W);else if(W<4294967296)this.writeU8(198),this.writeU32(W);else throw Error(`Too large binary: ${W}`);let Z=(0,D1.ensureUint8Array)($);this.writeU8a(Z)}encodeArray($,W){let Z=$.length;if(Z<16)this.writeU8(144+Z);else if(Z<65536)this.writeU8(220),this.writeU16(Z);else if(Z<4294967296)this.writeU8(221),this.writeU32(Z);else throw Error(`Too large array: ${Z}`);for(let P of $)this.doEncode(P,W+1)}countWithoutUndefined($,W){let Z=0;for(let P of W)if($[P]!==void 0)Z++;return Z}encodeMap($,W){let Z=Object.keys($);if(this.sortKeys)Z.sort();let P=this.ignoreUndefined?this.countWithoutUndefined($,Z):Z.length;if(P<16)this.writeU8(128+P);else if(P<65536)this.writeU8(222),this.writeU16(P);else if(P<4294967296)this.writeU8(223),this.writeU32(P);else throw Error(`Too large map object: ${P}`);for(let X of Z){let Q=$[X];if(!(this.ignoreUndefined&&Q===void 0))this.encodeString(X),this.doEncode(Q,W+1)}}encodeExtension($){if(typeof $.data==="function"){let Z=$.data(this.pos+6),P=Z.length;if(P>=4294967296)throw Error(`Too large extension object: ${P}`);this.writeU8(201),this.writeU32(P),this.writeI8($.type),this.writeU8a(Z);return}let W=$.data.length;if(W===1)this.writeU8(212);else if(W===2)this.writeU8(213);else if(W===4)this.writeU8(214);else if(W===8)this.writeU8(215);else if(W===16)this.writeU8(216);else if(W<256)this.writeU8(199),this.writeU8(W);else if(W<65536)this.writeU8(200),this.writeU16(W);else if(W<4294967296)this.writeU8(201),this.writeU32(W);else throw Error(`Too large extension object: ${W}`);this.writeI8($.type),this.writeU8a($.data)}writeU8($){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,$),this.pos++}writeU8a($){let W=$.length;this.ensureBufferSizeToWrite(W),this.bytes.set($,this.pos),this.pos+=W}writeI8($){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,$),this.pos++}writeU16($){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,$),this.pos+=2}writeI16($){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,$),this.pos+=2}writeU32($){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,$),this.pos+=4}writeI32($){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,$),this.pos+=4}writeF32($){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,$),this.pos+=4}writeF64($){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,$),this.pos+=8}writeU64($){this.ensureBufferSizeToWrite(8),(0,Q$.setUint64)(this.view,this.pos,$),this.pos+=8}writeI64($){this.ensureBufferSizeToWrite(8),(0,Q$.setInt64)(this.view,this.pos,$),this.pos+=8}writeBigUint64($){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,$),this.pos+=8}writeBigInt64($){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,$),this.pos+=8}}G$.Encoder=U0});var V$=U((K$)=>{Object.defineProperty(K$,"__esModule",{value:!0});K$.encode=h1;var C1=w0();function h1($,W){return new C1.Encoder(W).encodeSharedRef($)}});var Y$=U((H$)=>{Object.defineProperty(H$,"__esModule",{value:!0});H$.prettyByte=m1;function m1($){return`${$<0?"-":""}0x${Math.abs($).toString(16).padStart(2,"0")}`}});var R$=U((U$)=>{Object.defineProperty(U$,"__esModule",{value:!0});U$.CachedKeyDecoder=void 0;var _1=d(),E1=16,v1=16;class M${hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor($=E1,W=v1){this.maxKeyLength=$,this.maxLengthPerKey=W,this.caches=[];for(let Z=0;Z<this.maxKeyLength;Z++)this.caches.push([])}canBeCached($){return $>0&&$<=this.maxKeyLength}find($,W,Z){let P=this.caches[Z-1];$:for(let X of P){let Q=X.bytes;for(let G=0;G<Z;G++)if(Q[G]!==$[W+G])continue $;return X.str}return null}store($,W){let Z=this.caches[$.length-1],P={bytes:$,str:W};if(Z.length>=this.maxLengthPerKey)Z[Math.random()*Z.length|0]=P;else Z.push(P)}decode($,W,Z){let P=this.find($,W,Z);if(P!=null)return this.hit++,P;this.miss++;let X=(0,_1.utf8DecodeJs)($,W,Z),Q=Uint8Array.prototype.slice.call($,W,W+Z);return this.store(Q,X),X}}U$.CachedKeyDecoder=M$});var a=U((A$)=>{Object.defineProperty(A$,"__esModule",{value:!0});A$.Decoder=void 0;var R0=Y$(),x1=c(),D=r(),l1=d(),k$=M0(),q1=R$(),O=i(),k0="array",p="map_key",T$="map_value",j1=($)=>{if(typeof $==="string"||typeof $==="number")return $;throw new O.DecodeError("The type of key must be string or number but "+typeof $)};class O${stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState($){let W=this.getUninitializedStateFromPool();W.type=k0,W.position=0,W.size=$,W.array=Array($)}pushMapState($){let W=this.getUninitializedStateFromPool();W.type=p,W.readCount=0,W.size=$,W.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let $={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push($)}return this.stack[this.stackHeadPosition]}release($){if(this.stack[this.stackHeadPosition]!==$)throw Error("Invalid stack state. Released state is not on top of the stack.");if($.type===k0){let Z=$;Z.size=0,Z.array=void 0,Z.position=0,Z.type=void 0}if($.type===p||$.type===T$){let Z=$;Z.size=0,Z.map=void 0,Z.readCount=0,Z.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}}var j=-1,I0=new DataView(new ArrayBuffer(0)),p1=new Uint8Array(I0.buffer);try{I0.getInt8(0)}catch($){if(!($ instanceof RangeError))throw Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var I$=RangeError("Insufficient data"),y1=new q1.CachedKeyDecoder;class T0{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=I0;bytes=p1;headByte=j;stack=new O$;entered=!1;constructor($){this.extensionCodec=$?.extensionCodec??x1.ExtensionCodec.defaultCodec,this.context=$?.context,this.useBigInt64=$?.useBigInt64??!1,this.rawStrings=$?.rawStrings??!1,this.maxStrLength=$?.maxStrLength??D.UINT32_MAX,this.maxBinLength=$?.maxBinLength??D.UINT32_MAX,this.maxArrayLength=$?.maxArrayLength??D.UINT32_MAX,this.maxMapLength=$?.maxMapLength??D.UINT32_MAX,this.maxExtLength=$?.maxExtLength??D.UINT32_MAX,this.keyDecoder=$?.keyDecoder!==void 0?$.keyDecoder:y1,this.mapKeyConverter=$?.mapKeyConverter??j1}clone(){return new T0({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=j,this.stack.reset()}setBuffer($){let W=(0,k$.ensureUint8Array)($);this.bytes=W,this.view=new DataView(W.buffer,W.byteOffset,W.byteLength),this.pos=0}appendBuffer($){if(this.headByte===j&&!this.hasRemaining(1))this.setBuffer($);else{let W=this.bytes.subarray(this.pos),Z=(0,k$.ensureUint8Array)($),P=new Uint8Array(W.length+Z.length);P.set(W),P.set(Z,W.length),this.setBuffer(P)}}hasRemaining($){return this.view.byteLength-this.pos>=$}createExtraByteError($){let{view:W,pos:Z}=this;return RangeError(`Extra ${W.byteLength-Z} of ${W.byteLength} byte(s) found at buffer[${$}]`)}decode($){if(this.entered)return this.clone().decode($);try{this.entered=!0,this.reinitializeState(),this.setBuffer($);let W=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return W}finally{this.entered=!1}}*decodeMulti($){if(this.entered){yield*this.clone().decodeMulti($);return}try{this.entered=!0,this.reinitializeState(),this.setBuffer($);while(this.hasRemaining(1))yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync($){if(this.entered)return this.clone().decodeAsync($);try{this.entered=!0;let W=!1,Z;for await(let G of $){if(W)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(G);try{Z=this.doDecodeSync(),W=!0}catch(J){if(!(J instanceof RangeError))throw J}this.totalPos+=this.pos}if(W){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return Z}let{headByte:P,pos:X,totalPos:Q}=this;throw RangeError(`Insufficient data in parsing ${(0,R0.prettyByte)(P)} at ${Q} (${X} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream($){return this.decodeMultiAsync($,!0)}decodeStream($){return this.decodeMultiAsync($,!1)}async*decodeMultiAsync($,W){if(this.entered){yield*this.clone().decodeMultiAsync($,W);return}try{this.entered=!0;let Z=W,P=-1;for await(let X of $){if(W&&P===0)throw this.createExtraByteError(this.totalPos);if(this.appendBuffer(X),Z)P=this.readArraySize(),Z=!1,this.complete();try{while(!0)if(yield this.doDecodeSync(),--P===0)break}catch(Q){if(!(Q instanceof RangeError))throw Q}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){$:while(!0){let $=this.readHeadByte(),W;if($>=224)W=$-256;else if($<192)if($<128)W=$;else if($<144){let P=$-128;if(P!==0){this.pushMapState(P),this.complete();continue $}else W={}}else if($<160){let P=$-144;if(P!==0){this.pushArrayState(P),this.complete();continue $}else W=[]}else{let P=$-160;W=this.decodeString(P,0)}else if($===192)W=null;else if($===194)W=!1;else if($===195)W=!0;else if($===202)W=this.readF32();else if($===203)W=this.readF64();else if($===204)W=this.readU8();else if($===205)W=this.readU16();else if($===206)W=this.readU32();else if($===207)if(this.useBigInt64)W=this.readU64AsBigInt();else W=this.readU64();else if($===208)W=this.readI8();else if($===209)W=this.readI16();else if($===210)W=this.readI32();else if($===211)if(this.useBigInt64)W=this.readI64AsBigInt();else W=this.readI64();else if($===217){let P=this.lookU8();W=this.decodeString(P,1)}else if($===218){let P=this.lookU16();W=this.decodeString(P,2)}else if($===219){let P=this.lookU32();W=this.decodeString(P,4)}else if($===220){let P=this.readU16();if(P!==0){this.pushArrayState(P),this.complete();continue $}else W=[]}else if($===221){let P=this.readU32();if(P!==0){this.pushArrayState(P),this.complete();continue $}else W=[]}else if($===222){let P=this.readU16();if(P!==0){this.pushMapState(P),this.complete();continue $}else W={}}else if($===223){let P=this.readU32();if(P!==0){this.pushMapState(P),this.complete();continue $}else W={}}else if($===196){let P=this.lookU8();W=this.decodeBinary(P,1)}else if($===197){let P=this.lookU16();W=this.decodeBinary(P,2)}else if($===198){let P=this.lookU32();W=this.decodeBinary(P,4)}else if($===212)W=this.decodeExtension(1,0);else if($===213)W=this.decodeExtension(2,0);else if($===214)W=this.decodeExtension(4,0);else if($===215)W=this.decodeExtension(8,0);else if($===216)W=this.decodeExtension(16,0);else if($===199){let P=this.lookU8();W=this.decodeExtension(P,1)}else if($===200){let P=this.lookU16();W=this.decodeExtension(P,2)}else if($===201){let P=this.lookU32();W=this.decodeExtension(P,4)}else throw new O.DecodeError(`Unrecognized type byte: ${(0,R0.prettyByte)($)}`);this.complete();let Z=this.stack;while(Z.length>0){let P=Z.top();if(P.type===k0)if(P.array[P.position]=W,P.position++,P.position===P.size)W=P.array,Z.release(P);else continue $;else if(P.type===p){if(W==="__proto__")throw new O.DecodeError("The key __proto__ is not allowed");P.key=this.mapKeyConverter(W),P.type=T$;continue $}else if(P.map[P.key]=W,P.readCount++,P.readCount===P.size)W=P.map,Z.release(P);else{P.key=null,P.type=p;continue $}}return W}}readHeadByte(){if(this.headByte===j)this.headByte=this.readU8();return this.headByte}complete(){this.headByte=j}readArraySize(){let $=this.readHeadByte();switch($){case 220:return this.readU16();case 221:return this.readU32();default:if($<160)return $-144;else throw new O.DecodeError(`Unrecognized array type byte: ${(0,R0.prettyByte)($)}`)}}pushMapState($){if($>this.maxMapLength)throw new O.DecodeError(`Max length exceeded: map length (${$}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState($)}pushArrayState($){if($>this.maxArrayLength)throw new O.DecodeError(`Max length exceeded: array length (${$}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState($)}decodeString($,W){if(!this.rawStrings||this.stateIsMapKey())return this.decodeUtf8String($,W);return this.decodeBinary($,W)}decodeUtf8String($,W){if($>this.maxStrLength)throw new O.DecodeError(`Max length exceeded: UTF-8 byte length (${$}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+W+$)throw I$;let Z=this.pos+W,P;if(this.stateIsMapKey()&&this.keyDecoder?.canBeCached($))P=this.keyDecoder.decode(this.bytes,Z,$);else P=(0,l1.utf8Decode)(this.bytes,Z,$);return this.pos+=W+$,P}stateIsMapKey(){if(this.stack.length>0)return this.stack.top().type===p;return!1}decodeBinary($,W){if($>this.maxBinLength)throw new O.DecodeError(`Max length exceeded: bin length (${$}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining($+W))throw I$;let Z=this.pos+W,P=this.bytes.subarray(Z,Z+$);return this.pos+=W+$,P}decodeExtension($,W){if($>this.maxExtLength)throw new O.DecodeError(`Max length exceeded: ext length (${$}) > maxExtLength (${this.maxExtLength})`);let Z=this.view.getInt8(this.pos+W),P=this.decodeBinary($,W+1);return this.extensionCodec.decode(P,Z,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let $=this.view.getUint8(this.pos);return this.pos++,$}readI8(){let $=this.view.getInt8(this.pos);return this.pos++,$}readU16(){let $=this.view.getUint16(this.pos);return this.pos+=2,$}readI16(){let $=this.view.getInt16(this.pos);return this.pos+=2,$}readU32(){let $=this.view.getUint32(this.pos);return this.pos+=4,$}readI32(){let $=this.view.getInt32(this.pos);return this.pos+=4,$}readU64(){let $=(0,D.getUint64)(this.view,this.pos);return this.pos+=8,$}readI64(){let $=(0,D.getInt64)(this.view,this.pos);return this.pos+=8,$}readU64AsBigInt(){let $=this.view.getBigUint64(this.pos);return this.pos+=8,$}readI64AsBigInt(){let $=this.view.getBigInt64(this.pos);return this.pos+=8,$}readF32(){let $=this.view.getFloat32(this.pos);return this.pos+=4,$}readF64(){let $=this.view.getFloat64(this.pos);return this.pos+=8,$}}A$.Decoder=T0});var D$=U((z$)=>{Object.defineProperty(z$,"__esModule",{value:!0});z$.decode=f1;z$.decodeMulti=d1;var B$=a();function f1($,W){return new B$.Decoder(W).decode($)}function d1($,W){return new B$.Decoder(W).decodeMulti($)}});var m$=U((L$)=>{Object.defineProperty(L$,"__esModule",{value:!0});L$.isAsyncIterable=C$;L$.asyncIterableFromStream=h$;L$.ensureAsyncIterable=r1;function C$($){return $[Symbol.asyncIterator]!=null}async function*h$($){let W=$.getReader();try{while(!0){let{done:Z,value:P}=await W.read();if(Z)return;yield P}}finally{W.releaseLock()}}function r1($){if(C$($))return $;else return h$($)}});var _$=U((g$)=>{Object.defineProperty(g$,"__esModule",{value:!0});g$.decodeAsync=u1;g$.decodeArrayStream=o1;g$.decodeMultiStream=s1;var O0=a(),A0=m$();async function u1($,W){let Z=(0,A0.ensureAsyncIterable)($);return new O0.Decoder(W).decodeAsync(Z)}function o1($,W){let Z=(0,A0.ensureAsyncIterable)($);return new O0.Decoder(W).decodeArrayStream(Z)}function s1($,W){let Z=(0,A0.ensureAsyncIterable)($);return new O0.Decoder(W).decodeStream(Z)}});var B0=U((Y)=>{Object.defineProperty(Y,"__esModule",{value:!0});Y.decodeTimestampExtension=Y.encodeTimestampExtension=Y.decodeTimestampToTimeSpec=Y.encodeTimeSpecToTimestamp=Y.encodeDateToTimeSpec=Y.EXT_TIMESTAMP=Y.ExtData=Y.ExtensionCodec=Y.Encoder=Y.DecodeError=Y.Decoder=Y.decodeMultiStream=Y.decodeArrayStream=Y.decodeAsync=Y.decodeMulti=Y.decode=Y.encode=void 0;var WW=V$();Object.defineProperty(Y,"encode",{enumerable:!0,get:function(){return WW.encode}});var E$=D$();Object.defineProperty(Y,"decode",{enumerable:!0,get:function(){return E$.decode}});Object.defineProperty(Y,"decodeMulti",{enumerable:!0,get:function(){return E$.decodeMulti}});var S0=_$();Object.defineProperty(Y,"decodeAsync",{enumerable:!0,get:function(){return S0.decodeAsync}});Object.defineProperty(Y,"decodeArrayStream",{enumerable:!0,get:function(){return S0.decodeArrayStream}});Object.defineProperty(Y,"decodeMultiStream",{enumerable:!0,get:function(){return S0.decodeMultiStream}});var ZW=a();Object.defineProperty(Y,"Decoder",{enumerable:!0,get:function(){return ZW.Decoder}});var PW=i();Object.defineProperty(Y,"DecodeError",{enumerable:!0,get:function(){return PW.DecodeError}});var XW=w0();Object.defineProperty(Y,"Encoder",{enumerable:!0,get:function(){return XW.Encoder}});var QW=c();Object.defineProperty(Y,"ExtensionCodec",{enumerable:!0,get:function(){return QW.ExtensionCodec}});var GW=V0();Object.defineProperty(Y,"ExtData",{enumerable:!0,get:function(){return GW.ExtData}});var m=H0();Object.defineProperty(Y,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return m.EXT_TIMESTAMP}});Object.defineProperty(Y,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return m.encodeDateToTimeSpec}});Object.defineProperty(Y,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return m.encodeTimeSpecToTimestamp}});Object.defineProperty(Y,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return m.decodeTimestampToTimeSpec}});Object.defineProperty(Y,"encodeTimestampExtension",{enumerable:!0,get:function(){return m.encodeTimestampExtension}});Object.defineProperty(Y,"decodeTimestampExtension",{enumerable:!0,get:function(){return m.decodeTimestampExtension}})});function p$($){return{...$,consumer:{...$.consumer,queue:$.queue}}}class h0{MAX_ISOLATE_LIFESPAN_MS;constructor($){this.MAX_ISOLATE_LIFESPAN_MS=$;this.set("isolate_id",crypto.randomUUID()),this.set("isolate_start_time",Date.now()),this.set("isolate_max_life_span_ms",this.MAX_ISOLATE_LIFESPAN_MS)}isSameIsolate($){return $===this.get("isolate_id")}get id(){return this.get("isolate_id")??crypto.randomUUID()}get remainingTime(){let $=this.get("isolate_start_time"),W=this.get("isolate_max_life_span_ms")??this.MAX_ISOLATE_LIFESPAN_MS;if(typeof $!=="number")return W;let Z=Date.now()-$;return Math.max(0,W-Z)}get uptime(){let $=this.get("isolate_start_time");return typeof $==="number"?Date.now()-$:0}get maxTime(){return this.get("isolate_max_life_span_ms")??this.MAX_ISOLATE_LIFESPAN_MS}set($,W){globalThis[$]=W}get($){return globalThis[$]}}import JW from"js-sha256";class E{target=new EventTarget;pending=new Set;track($){let W=$.catch((Z)=>console.error("[EventBus] : handler failed - ",Z)).finally(()=>this.pending.delete(W));this.pending.add(W)}emit($,W){this.target.dispatchEvent(new CustomEvent($,{detail:W}))}on($,W){let Z=(P)=>{let X=W(P.detail);if(X instanceof Promise)this.track(X)};return this.target.addEventListener($,Z),()=>this.target.removeEventListener($,Z)}once($,W){let Z=(P)=>W(P.detail);this.target.addEventListener($,Z,{once:!0})}async drain(){while(this.pending.size>0)await Promise.allSettled([...this.pending])}}class e{tracks=[];startTime;maxExecutionBudgetMs;safetyBufferMs;maxTrackHistory;enabled;cpuExecutionMicroseconds=0;constructor($={}){this.startTime=performance.now(),this.maxExecutionBudgetMs=$.maxExecutionBudgetMs??25000,this.safetyBufferMs=$.safetyBufferMs??2000,this.maxTrackHistory=$.maxTrackHistory??100,this.enabled=$.enabled??!1}async trackExecutionTime({contextId:$},W){let Z=performance.now();try{return await W()}finally{if(this.enabled==!0){let X=performance.now()-Z;if(this.tracks.push({id:crypto.randomUUID(),duration:X,contextId:$}),this.tracks.length>this.maxTrackHistory)this.tracks.shift()}}}getElapsedTotalTime(){return performance.now()-this.startTime}getTimeRemaining(){let $=this.getElapsedTotalTime(),W=this.maxExecutionBudgetMs-$-this.safetyBufferMs;return Math.max(0,W)}getAverageTickDuration($=5){if(this.tracks.length===0)return 0;let W=this.tracks.slice(-$);return W.reduce((P,X)=>P+X.duration,0)/W.length}isSafeToContinue(){if(!this.enabled)return!0;let $=this.getTimeRemaining();if($<=0)return!1;let W=this.getAverageTickDuration(5);if(W>0&&$<W)return!1;return!0}clear($){this.tracks=this.tracks.filter((W)=>W.contextId!==$)}}class $0{maxGlobalJobsPerTick;maxGlobalConcurrency;constructor($,W){this.maxGlobalJobsPerTick=$;this.maxGlobalConcurrency=W}getMaxGlobalConcurrency(){return this.maxGlobalConcurrency}getMaxGlobalJobsPerTick(){return this.maxGlobalJobsPerTick}}var S={REALTIME:{activePollMs:1000,backoffPollMs:1000,idlePollMs:1000,maxTimerMs:5000},STANDARD:{activePollMs:100,backoffPollMs:500,idlePollMs:1e4,maxTimerMs:60000},BALANCED:{activePollMs:1e4,backoffPollMs:500,idlePollMs:1e4,maxTimerMs:60000},RELAXED:{activePollMs:1000,backoffPollMs:20000,idlePollMs:30000,maxTimerMs:60000},ULTRA_EFFICIENT:{activePollMs:5000,backoffPollMs:1e5,idlePollMs:120000,maxTimerMs:240000}};var y$=2147483647;class W0{timers=new Map;profiles=new Map;constructor(){}registerQueueProfile($,W){if(typeof W==="string"){let Z=W!=="CUSTOM"?S[W]:void 0;this.profiles.set($,Z??S.STANDARD)}else this.profiles.set($,W)}getProfile($){let Z=F.get("queues")?.find((P)=>P.queue===$)?.profile;if(Z){if(typeof Z==="string")return Z!=="CUSTOM"?S[Z]:S.STANDARD;if(typeof Z==="object")return Z}return this.profiles.get($)??S.STANDARD}cancel($){let W=this.timers.get($);if(W)clearTimeout(W);this.timers.delete($)}scheduleNext($){let{metrics:W,onNext:Z,onUpcomingDelayedNext:P,onFutureSchedule:X}=$,{queue:Q,readyJobs:G,delayedJobs:J,availableSlots:N,nextVisibleAt:H}=W;this.cancel(Q);let K=this.getProfile(Q);if(G>0&&N>0){this.setTimer(Q,Z,K.activePollMs);return}if(G>0&&N===0){this.setTimer(Q,Z,K.backoffPollMs);return}if(J>0&&H){let V=Math.max(0,H-Date.now());if(V<=K.maxTimerMs){if(P)P(V);this.setTimer(Q,Z,V);return}if(X)X(H).catch((M)=>console.error(`Scheduler error setting long delay for ${Q}:`,M));return}if(K.idlePollMs)this.setTimer(Q,Z,K.idlePollMs)}setTimer($,W,Z){let P=Math.min(Math.max(0,Z),y$),X=()=>{this.timers.delete($),W()};if(P===0){let G=setTimeout(X);this.timers.set($,G);return}let Q=setTimeout(X,P);this.timers.set($,Q)}}class Z0{logger;transitionItems=new Set;constructor($){this.logger=$}transitionToIdleMode({queue:$,stateTransitionPolicy:W}){if(this.transitionItems.has($))return;if(this.transitionItems.add($),this.logger.log(`[ENGINE_STATE] Transitioning engine execution profile to IDLE. Queue config: (${$})`),W?.enabled){let Z=W.idleTimingProfile;if(Z){let P=typeof Z==="object"?{activePollMs:Z.activePollMs,backoffPollMs:Z.backoffPollMs,idlePollMs:Z.idlePollMs}:S[Z];F.modifyQueue($,"profile",P)}}}transitionToActiveMode({queue:$,profile:W,stateTransitionPolicy:Z}){if(this.transitionItems.delete($),Z?.enabled)F.modifyQueue($,"profile",W);this.logger.log(`[ENGINE_STATE] Transitioning engine execution profile to ACTIVE. Queue config: (${$})`)}}class P0{storage;queue;executionProfileSwitcher;unifiedTransportManager;swarmManager;PROCESS_ID;globalSequence=0;consecutiveEmptyTicks=0;logger;events;constructor({queue:$,storage:W,swarmManager:Z,unifiedTransportManager:P,events:X}){this.storage=W,this.queue=$,this.swarmManager=Z,this.unifiedTransportManager=P,this.logger=new I,this.executionProfileSwitcher=new Z0(this.logger),this.PROCESS_ID=crypto.randomUUID().slice(0,12),this.globalSequence=0,this.events=X}async run($,W){let{concurrency:Z,queue:P}=$,X=this.swarmManager.getMaxGlobalConcurrency(),{batches:Q,window:G}=await this.getCandidatesBatch({queueConfig:$,maxGlobalSlotsAllowed:W}),J=$.stateTransitionPolicy?.enabled==!0;if(!Q||Q.length===0){if(J){if(this.consecutiveEmptyTicks++,this.consecutiveEmptyTicks>=($.stateTransitionPolicy?.idleThresholdTicks??10))this.executionProfileSwitcher.transitionToIdleMode($)}this.logger.warn(`[Tick] : [${P}] - Empty Tick Executred)`);return}if(J&&this.consecutiveEmptyTicks>0)this.consecutiveEmptyTicks=0,this.executionProfileSwitcher.transitionToActiveMode($);let N=await this.storage.repository.registerWorker(P,Q,Z,X),H=new Set(N),K=Q.filter((V)=>!H.has(V.workerId));if(K.length>0){let V=K.reduce((M,w)=>M+w.batch.length,0);await this.storage.repository.refundGlobalJobBudget(V,G)}if(N.length===0)return;this.logger.log(`[Tick] : [${P}] - Tick Executred. Total Jobs (${Q.reduce((V,M)=>V+M.batch.length,0)})`),await this.spwanWorkers({candidateBatches:Q,grantedWorkerIds:N,queueConfig:$})}async spwanWorkers({grantedWorkerIds:$,candidateBatches:W,queueConfig:{queue:Z}}){if(!$?.length)return;let P=new Set($),X=W.filter((Q)=>P.has(Q.workerId));await Promise.allSettled(X.map(({batch:Q,workerId:G})=>{return this.unifiedTransportManager.dispatchToNetwork(Z,{batch:Q,worker_id:G})}))}async getCandidatesBatch({queueConfig:$,maxGlobalSlotsAllowed:W}){let{concurrency:Z,maxJobsPerTick:P,queue:X,sleep:Q,n:G}=$,J=await this.storage.repository.getActiveWorkersCount(X),N=Math.max(0,Z-J);if(N===0)return{batches:[],window:""};let H=Math.min(N,W);if(H===0)return{batches:[],window:""};let K=H*G,V=P!==void 0&&P>0?P:1/0,M=Math.min(K,V);if(M<=0)return{batches:[],window:""};let w=this.swarmManager.getMaxGlobalJobsPerTick(),{granted:T,window:A}=await this.storage.repository.claimGlobalJobBudget(M,w);if(T<=0)return{batches:[],window:A};let C=await this.queue.read(X,Q??1,T),g=C.length;if(g===0)return await this.storage.repository.refundGlobalJobBudget(T,A),{batches:[],window:A};if(g<T){let L=T-C.length;await this.storage.repository.refundGlobalJobBudget(L,A)}let _=Math.ceil(g/G),h=Array(_),s=Date.now(),t=0;for(let L=0;L<g;L+=G)h[t++]={workerId:`w_${this.PROCESS_ID}_${s}_${this.globalSequence++}`,batch:C.slice(L,L+G)};return{batches:h,window:A}}}class X0{clock;tickService;scheduler;storage;events;runtimeStrategy;tickState=new Map;activeTicks=new Set;lastHealthCheckAt=0;logger;constructor({scheduler:$,storage:W,tickService:Z,clock:P,events:X,runtimeStrategy:Q}){this.logger=new I,this.clock=P,this.tickService=Z,this.scheduler=$,this.storage=W,this.events=X,this.runtimeStrategy=Q,this.initializeState()}initializeState(){this.tickState.clear(),this.activeTicks.clear()}async runTick($){await this.runtimeStrategy.executeTick($,async()=>{let{queue:W}=$;if(this.initializeTickState($),this.activeTicks.has(W)||this.tickState.get(W)?.stopped)return;this.activeTicks.add(W),this.scheduler.cancel(W);try{let Z=1/0,P=F.get("swarmConfig")?.maxGlobalConcurrency;if(P!==void 0){let X=await this.storage.repository.getGlobalActiveWorkersCount();Z=Math.max(0,P-X)}if(Z>0&&!this.tickState.get(W)?.stopped)await this.tickService.run($,Z)}catch(Z){this.logger.error(`Orchestrator error on ${W}:`,Z)}finally{this.activeTicks.delete(W),this.updateTickCounter(W)}if(this.tickState.get(W)?.stopped==!0)return;await this.runtimeStrategy.scheduleTick($,()=>this.runTick($))})}endTick($){let W=this.tickState.get($);if(W){if(W.stopped==!0)return;if(this.tickState.set($,{...W,stopped:!0}),this.scheduler.cancel($),this.clock.clear($),F.raw.queues.every((P)=>{let X=this.tickState.get(P.queue);return X?X.stopped:!0}))this.events.emit("tick:cycle-completed",{queue:$,cycles:this.tickState.get($)?.count??1})}}initializeTickState($){if(!this.tickState.get($.queue))this.tickState.set($.queue,{count:0,max:$.cycleTickLimit??10,registred:!0,stopped:!1})}updateTickCounter($){let W=this.tickState.get($)??{count:0,stopped:!1,max:10,registred:!1},Z=W.count+1,P=W.max,X=Z>=P;if((W.stopped||X)&&!W.stopped)this.tickState.set($,{count:Z,stopped:W.stopped,max:P,registred:W.registred}),this.endTick($);else this.tickState.set($,{count:Z,stopped:W.stopped,max:P,registred:W.registred});this.triggerPeriodicHealthCheck()}triggerPeriodicHealthCheck(){let $=Date.now(),W=this.runtimeStrategy.shouldShutdownOnCycleComplete,Z=(F.get("engine.healthCheckIntervalSec")??15)*1000;if($-this.lastHealthCheckAt>=Z&&!W)this.lastHealthCheckAt=$,this.events.emit("engine:health-check-requested",{timestamp:$})}}class z{queueService;clock;queues;storage;isolate;events;scheduler;logger;constructor($){this.queueService=$.queueService,this.clock=$.clock,this.queues=$.queues,this.isolate=$.isolate,this.storage=$.storage,this.events=$.events,this.scheduler=$.scheduler,this.logger=new I}async executeQueuesTick($){let W=F.get("engine.tickConcurrency");if(this.logger.log(`[Tick Controller] : Execution tick mode has been selected with concurrency ${W}`),W=="sequential"){for(let Z of this.queues)if(Z.pooler=="interval-driven-pooler")await $(Z)}else{let Z=await Promise.allSettled(this.queues.filter((P)=>P.pooler==="interval-driven-pooler").map((P)=>$(P)));for(let P of Z)if(P.status==="rejected")this.logger.error("[Tick] : Error >>",P.reason)}}async triggerSelfInvocation($){let{queue:W,pooler:Z,delaySec:P,continuationOwnerId:X,isIdpLock:Q,isEdpLock:G,targetEdpQueue:J}=$,N=F.get("engine.selfURL"),K=F.raw.engine.selfInvocationMethod,V={idpInvoked:!1,continuationScheduledForCurrentLock:!1};if(Z==="interval-driven-pooler"){if(V.idpInvoked=!0,Q)V.continuationScheduledForCurrentLock=!0;this.logger.log(`(IDP) : Invoking Self in ${P} seconds...`)}else if(Z==="event-driven-pooler"){if(G&&W===J)V.continuationScheduledForCurrentLock=!0;this.logger.log(`(EDP) : Invoking Self in ${P} seconds...`)}let M={"content-type":"application/json","x-last-execution-id":X,"x-last-execution-at":new Date().toISOString(),"x-execution-owner":"engine","x-restart":"false","x-pooler":Z,"x-target-queue":W};if(K=="auto_using_pgnet")await this.queueService.triggerUrl({url:N,headers:M,delaySeconds:P});else if(typeof K==="object"&&K!==null&&K.method==="manual")await K.handler(N);return V}}class v{storage;logger;runtimeExecutionId;pgNotifyChannel="channel_pulsar_event_driven_queue";events;constructor($,W,Z){this.storage=$;this.logger=W;this.runtimeExecutionId=Z;this.events=new E}async registerPgNotifyHandler($){await this.storage.ops.subscribeToDatabaseEvents(this.pgNotifyChannel,async(W)=>{this.logger.log(`[Persistent Runtime] : Recived PgNotification Event - ${new Date().toISOString()}`);let Z=F.get("queues").find((X)=>X.queue===W.queue_name);if(!Z){this.logger.error(`[Persistent Runtime] : Received notification for unregistered or unmanaged queue: '${W.queue_name}' on channel: ${this.pgNotifyChannel}`);return}if(await this.handleTriggerValidity(Z.queue,W.fencing_token))await $.runTick(Z)},()=>{this.logger.log(`[Persistent Runtime] : Successfully established PostgreSQL notification listener on channel : ${this.pgNotifyChannel}`)})}async registerPollingHandler($){setInterval(async()=>{let W=await this.storage.ops.getPollingQueueEntries("q_3");for(let Z of W){let P=Z.payload.queue_name,X=Z.payload.fencing_token,Q=await this.handleTriggerValidity(P,X);if(Q)await $.runTick(Q),await this.storage.ops.deletePollingQueueEntry(Z.id)}},F.get("engine.poolingIntervalMS"))}async httpEventDrivenQueueTrigger($,W,Z){let P=F.get("queues").find((Q)=>Q.queue===$);if(!P){this.logger.error(`[Persistent Runtime] : Received notification for unregistered or unmanaged queue : '${$}' on channel : ${this.pgNotifyChannel}`);return}if(await this.handleTriggerValidity($,W))await Z.runTick(P)}async handleTriggerValidity($,W){let Z=F.get("queues").find((J)=>J.queue===$);if(!Z)return this.logger.error(`[Persistent Runtime] : pool entry for unregistered or unmanaged queue: '${$}'`),null;if(!await this.storage.ops.checkFencingTokenValidity($,W)){let J=`[EventDrivenPoller]-[ExecutionTrigger]-[${$}] : Engine execution rejected : Invalid fencing token.`;return this.logger.error(J),null}let X=`lock:edp:${$}`,Q=120000;if(await this.storage.repository.acquireQueueLock(X,this.runtimeExecutionId,Q))await this.storage.repository.clearDispatchPending(X);else return this.logger.log(`[Persistent Runtime] : Engine busy for queue ${$}, skipping trigger.`),null;return Z}}class x{minBootRequirementSec;scheduler;events;clock;logger;constructor($,W,Z,P,X){this.minBootRequirementSec=$;this.scheduler=W;this.events=Z;this.clock=P;this.logger=X}timers=new Map;watchdogTimer=null;isShutdownTriggered=!1;evaluateUpcomingDelayedNext($,W){let Z=F.raw.isolate;if(!Z)throw Error("Isolate is not configured for V8_Isolate_Runtime!");let P=F.get("engine.selfInvocationIntervalSec")??1,X=this.minBootRequirementSec,Q=(P+X)*1000;if(Z.remainingTime-$<Q){this.logger.log(`[Isolate Runtime] Sleep duration of ${$}ms exceeds safe isolate budget. Canceling timer sleep and initiating shutdown.`),this.scheduler.cancel(W),this.triggerGracefulShutdown(W);return}this.startDelayedSleepWatchdog(W,Q)}startDelayedSleepWatchdog($,W){this.stopRuntimeWatchdog(),this.isShutdownTriggered=!1,this.watchdogTimer=setInterval(()=>{let Z=F.raw.isolate;if(!Z||this.isShutdownTriggered)return;if(Z.remainingTime<=W)this.logger.log(`[Isolate Watchdog] Remaining isolate budget (${Z.remainingTime}ms) expired during delayed sleep. Canceling wakeup and executing graceful shutdown.`),this.scheduler.cancel($),this.triggerGracefulShutdown($)},1000)}triggerGracefulShutdown($){if(this.isShutdownTriggered)return;this.isShutdownTriggered=!0,this.stopRuntimeWatchdog(),this.events.emit("tick:time-exceeded",{queue:$,elapsedMs:this.clock.getElapsedTotalTime()}),this.events.emit("tick:cycle-completed",{queue:$,cycles:1})}stopRuntimeWatchdog(){if(this.watchdogTimer)clearInterval(this.watchdogTimer),this.watchdogTimer=null}clearTimer($){let W=this.timers.get($);if(W)clearTimeout(W);this.timers.delete($)}forceExecuteTickLater($,W){let P=`Extended time limit reached ${W}ms elapsed, overriding standard caps !`,X=()=>this.events.emit("tick:force-run",{queue:$,reason:P}),Q=W-Date.now();if(Q>2147483647)this.timers.set($.queue,setTimeout(()=>{this.forceExecuteTickLater($,W)},2147483647));this.timers.set($.queue,setTimeout(()=>{X()},Math.max(0,Q)))}}class Q0 extends z{type="PERSISTENT";shouldShutdownOnCycleComplete=!1;minBootRequirementSec=1;runtimeExecutionId;deferredTickEvaluator;runtimeEventBridge;rs;constructor($){super($);this.deferredTickEvaluator=new x(this.minBootRequirementSec,this.scheduler,this.events,this.clock,this.logger),this.runtimeExecutionId=crypto.randomUUID(),this.runtimeEventBridge=new v(this.storage,this.logger,this.runtimeExecutionId),this.rs=B(),this.rs.kv.set("runtime_execution_id",this.runtimeExecutionId)}async onStart($){this.logger.log("Initialized Persistent Runtime.");let W=this.runtimeEventBridge;if(F.raw.runtime=="persistent")switch(F.raw.eventTriggerStrategy){case"POSTGRES_NOTIFY":await W.registerPgNotifyHandler($);break;case"POLLING":await W.registerPollingHandler($);break;case"WEBHOOK":this.logger.log("[Persistent Runtime] : Event Driven Queue triggers will heppen via webhook endpoint.");break}this.rs.kv.set("active_runtime_ctx",$),await this.executeQueuesTick($.runTick)}async executeTick($,W){this.deferredTickEvaluator.clearTimer($.queue);let{isValid:Z,reason:P}=this.validateTickRun($);if(!Z)this.logger.warn(`[Tick] : [${$.queue}] - Rejected, invalid tick run: ${P}. Please Reconnect Worker ASAP.`);if($.interventionPolicy=="tick"){if(await this.storage.repository.getStopSignal($.queue)){this.events.emit("tick:cycle-completed",{queue:$.queue,cycles:1});return}}await W()}validateTickRun({queue:$}){let W=F.raw.queues.find((Z)=>Z.queue===$);if(!W)return{isValid:!1,reason:`Queue configuration could not be found for '${$}'.`};if(W.consumer.type==="socket"){let Z=this.rs.lists.get($);if(!Z)return this.events.emit("tick:end",{queue:$,reason:"Socket consumer connection list does not exist"}),{isValid:!1,reason:`Socket consumer connection list does not exist for queue '${$}'.`};let P=Array.from(Z.values());if(P.length==0)return this.events.emit("tick:end",{queue:$,reason:`Socket consumer has (${P.length}) active connections.`}),{isValid:!1,reason:`Socket consumer for queue '${$}' has (${P.length}) active connections.`}}return{isValid:!0,reason:"Tick run validation passed successfully."}}async scheduleTick($,W){let{queue:Z,concurrency:P,pooler:X}=$,Q=await this.queueService.getSingleQueueMetrics(Z);if(!Q)return;if(Q?.total==0){if(X=="event-driven-pooler"){this.logger.log(`[Tick] : [${Z}] - Tick Process Ended. Cycle Limit Reached`),this.events.emit("tick:cycle-completed",{queue:Z,cycles:1});return}}let G=await this.storage.repository.getActiveWorkersCount(Z),J=Math.max(0,P-G);this.deferredTickEvaluator.clearTimer(Z),this.scheduler.scheduleNext({metrics:{queue:Z,availableSlots:J,...Q},onNext:W,onUpcomingDelayedNext:(N)=>{this.logger.log(`[Scheduler] : Next tick scheduled in ${(N/1000).toFixed(2)}s`)},onFutureSchedule:async(N)=>{let H=N-Date.now();this.logger.log(`[Scheduler] : Deffered tick execution in ${(Math.max(0,H)/1000).toFixed(2)}s`),this.deferredTickEvaluator.forceExecuteTickLater($,N)}})}async handleCycleCompletion(){return!1}async handleRestart(){this.logger.log("[Persistent Runtime] : Restart triggered. Handled by process manager (PM2/systemd).")}}class G0 extends z{type="SERVERLESS_VM";shouldShutdownOnCycleComplete=!0;minBootRequirementSec=1;constructor($){super($);this.logger.log("Initialized Serverless VM Runtime.")}async onStart($){await this.executeQueuesTick($.runTick)}async executeTick($,W){await W()}async scheduleTick($,W){await W()}async handleCycleCompletion($){let W=!1,Z=!1,P=$.currentExecutionId,X=$.lockKey,Q=X?.startsWith("pulsar:lock:edp:"),G=X==="pulsar:lock:idp",J=Q?X?.replace("pulsar:lock:edp:",""):null;for(let{queue:N,pooler:H}of $.getActiveQueues())try{if(H=="interval-driven-pooler"&&W)continue;if(Q&&N!==J)continue;let K=await this.queueService.getSingleQueueMetrics(N);if(!K||K.total===0){console.log(`[Pulsar] Failed to fetch metrics for ${N}. Halting queue.`),$.endTick(N);continue}let V=K.total;if(!await this.storage.repository.evaluateDeadRun(N,H,V,P,15000)){console.log(`[Pulsar] Should not invoke for ${N}. Skipping.`);continue}let w=F.get("engine.selfInvocationIntervalSec")??1,T=await this.triggerSelfInvocation({queue:N,pooler:H,delaySec:w,continuationOwnerId:P,isIdpLock:G,isEdpLock:Q,targetEdpQueue:J});if(T.idpInvoked)W=!0;if(T.continuationScheduledForCurrentLock)Z=!0}catch(K){console.log(`[deadRun] Error checking queue ${N}:`,K)}return Z}async handleRestart($){}}class N0 extends z{deps;type="V8_ISOLATE";shouldShutdownOnCycleComplete=!0;minBootRequirementSec=5;deferredTickEvaluator;constructor($){super($);this.deps=$;this.logger.log("[EngineRuntime] : Initialized V8 Isolate Runtime."),this.deferredTickEvaluator=new x(this.minBootRequirementSec,this.scheduler,this.events,this.clock,this.logger)}async onStart($){await this.executeQueuesTick($.runTick)}async executeTick($,W){let{queue:Z}=$;this.deferredTickEvaluator.stopRuntimeWatchdog();let P=this.deps.clock.isSafeToContinue(),X=this.deps.events;if(!P){this.logger.log("[EngineRuntime] : Ending All Ticks due to time limit."),X.emit("tick:time-exceeded",{queue:Z,elapsedMs:this.deps.clock.getElapsedTotalTime()}),X.emit("tick:cycle-completed",{queue:Z,cycles:1});return}if($.interventionPolicy=="tick"||$.interventionPolicy=="inherit"&&F.get("engine.interventionPolicy")=="tick"){if(await this.storage.repository.getStopSignal($.queue)){X.emit("tick:cycle-completed",{queue:Z,cycles:1});return}}await this.deps.clock.trackExecutionTime({contextId:Z},W)}async scheduleTick($,W){let{queue:Z,concurrency:P,pooler:X}=$,Q=await this.queueService.getSingleQueueMetrics(Z);if(!Q)return;if(Q?.total==0){if(X=="event-driven-pooler"){this.logger.log(`[Tick] : [${Z}] - Tick Process Ended. Cycle Limit Reached`),this.events.emit("tick:cycle-completed",{queue:Z,cycles:1});return}}let G=await this.storage.repository.getActiveWorkersCount(Z),J=Math.max(0,P-G),N=async()=>{this.deferredTickEvaluator.stopRuntimeWatchdog(),await W()};this.scheduler.scheduleNext({metrics:{queue:Z,availableSlots:J,...Q},onNext:N,onUpcomingDelayedNext:(H)=>{return this.logger.log(`[Scheduler] : Next tick scheduled in ${(H/1000).toFixed(2)}s`),this.deferredTickEvaluator.evaluateUpcomingDelayedNext(H,Z)},onFutureSchedule:async(H)=>{this.logger.log("[Scheduler] : scheduled tick execution request",H)}});return}async handleCycleCompletion($){let W=!1,Z=!1,P=$.currentExecutionId,X=$.lockKey,Q=X?.startsWith("pulsar:lock:edp:"),G=X==="pulsar:lock:idp",J=Q?X?.replace("pulsar:lock:edp:",""):null;for(let{queue:N,pooler:H}of $.getActiveQueues())try{if(H=="interval-driven-pooler"&&W)continue;if(Q&&N!==J)continue;let K=await this.queueService.getSingleQueueMetrics(N);if(!K)continue;if(K.total===0)if(this.logger.log(`[Engine] : Queue ${N} is empty (total: 0) using ${H} pooler. Halting tick.`),H=="event-driven-pooler"){$.endTick(N);continue}else $.endTick(N);let V=K.total;if(!await this.storage.repository.evaluateDeadRun(N,H,V,P,15000)){this.logger.log(`[Engine] : Should not invoke for ${N}. Skipping.`);continue}let w=F.get("engine.selfInvocationIntervalSec")??1,T=F.get("runtime")=="v8-isolate",A=w;if(T&&F.raw.isolate){let _=F.raw.isolate.remainingTime/1000,h=this.minBootRequirementSec,s=w+h;if(_<s)return this.logger.log(`[EngineRuntime] : Isolate remaining time (${_.toFixed(3)}s) is insufficient for self-invocation (${w}s delay + ${h}s min work). Triggering restart.`),await this.handleRestart($),!0;let t=Math.max(1,_-h);A=Math.min(w,t)}let C=await this.triggerSelfInvocation({queue:N,pooler:H,delaySec:A,continuationOwnerId:P,isIdpLock:G,isEdpLock:Q,targetEdpQueue:J});if(C.idpInvoked)W=!0;if(C.continuationScheduledForCurrentLock)Z=!0}catch(K){this.logger.log(`[deadRun] : Error checking queue ${N}:`,K)}return Z}async handleRestart($){let W=!1,Z=$.currentExecutionId,P=F.get("engine.selfRestartIntervalSec"),X=$.getActiveQueues();for(let{queue:Q,pooler:G}of X){if(G=="interval-driven-pooler"&&W)continue;let J={"content-type":"application/json","x-last-execution-id":Z,"x-last-execution-at":new Date().toISOString(),"x-execution-owner":"engine","x-restart":"true","x-pooler":G,"x-target-queue":Q};if(this.logger.log(`(${G}) : invoking engine via restartTick (${P})`),G=="interval-driven-pooler")W=!0;let N=$.lockKey;await this.storage.repository.releaseQueueLock(N,$.isolateId),await this.storage.ops.addRestart(X),await this.queueService.triggerUrl({url:F.get("engine.selfURL"),headers:J,delaySeconds:P}),await this.storage.ops.updateRestartOwnership(Q,"handled_by_engine")}}}import{serve as b$}from"crossws/server";var _0=F0(g0(),1);var E0=_0.default;class K0 extends E0{config;serverInstance=null;logger;store;onFetch;constructor($){super();this.config=$;this.logger=new I,this.store=B()}async start(){let $=this;this.logger.log(`[Network] : Initializing server on port ${this.config.port} in [${this.config.mode}] mode`);let W=this.config.mode==="hybrid"||this.config.mode==="websocket";if(W)this.logger.log(`[Network] : WebSocket server handlers attached on port ${this.config.port}`);this.serverInstance=b$({port:this.config.port,...W?{websocket:{open(Z){$.emit("open",Z)},message(Z,P){$.emit("message",Z,P)},close(Z,P){$.emit("close",Z,P)}}}:{},fetch(Z){if($.onFetch)return $.onFetch(Z);return $.logger.warn(`[Network] : Unhandled route accessed: ${Z.method} ${Z.url}`),new Response(null,{status:404})},gracefulShutdown:!1,maxRequestBodySize:void 0}),this.store.kv.set("self_url",this.serverInstance.url),await this.serverInstance.ready(),this.logger.log(`[Server] Successfully started and listening on port ${this.config.port}`)}async close(){try{await this.serverInstance?.close(!0)}catch($){this.logger.error("[Network] : Error closing server:",$)}}}var z0=F0(B0(),1);class y{config;isRunning=!1;logger;rs;constructor($){this.config=$;this.logger=new I,this.rs=B()}}class u extends y{networkConfig;networkInterface;storage;queueService;interface="HTTP";consumersMap;triggerHandler;runtimeEventBridge;store;constructor($,W,Z,P){super($);this.networkConfig=$;this.networkInterface=W;this.storage=Z;this.queueService=P;this.store=B();let X=this.rs.kv.get("runtime_execution_id");this.runtimeEventBridge=new v(this.storage,this.logger,X);let Q=F.get("queues"),G=new Map;if(Q.forEach(({consumer:J,queue:N})=>G.set(N,J)),this.consumersMap=G,this.networkInterface)this.networkInterface.onFetch=(J)=>this.handleFetch(J)}async start(){}async broadcast($,W,Z){let P=this.consumersMap.get($);if(!P)throw Error(`No consumer registered for queue: "${$}"`);if(P.type!=="http")return;let{worker_id:X,batch:Q}=W,G=Z?z0.default.encode(W):JSON.stringify(W),J=F.get("runtime")=="persistent"?this.store.kv.get("self_url"):F.get("engine.selfURL");try{await fetch(`${P.url}/dispatch`,{method:"POST",headers:{"content-type":Z?"application/x-msgpack":"application/json",...P.headers,"x-worker-id":X,"x-batch-size":Q.length.toString(),"x-pulsar-callback-url":J,"x-queue":$,"x-execution-signature":crypto.randomUUID(),"x-instance-id":F.get("instanceId"),"x-api-key":F.get("apiKey"),"x-dispatched-at":new Date().toISOString()},body:G})}catch(N){this.logger.error("Error dispatching jobs to http consumer,",N)}}onTrigger($){this.triggerHandler=$}async stop(){}async handleFetch($){let{url:W,method:Z,body:P,headers:X}=await v$($),Q=x$(X),G=new URL(W),J={headers:Q,body:P};if(G.pathname.endsWith("/ack")&&Z==="POST"){let K=await this.handleAck(J);return new Response(K.message,{status:K.status})}if(G.pathname.endsWith("/nack")&&Z==="POST"){let K=await this.handleNack(J);return new Response(K.message,{status:K.status})}if(G.pathname.endsWith("/retry")&&Z==="POST"){let K=await this.handleRetry(J);return new Response(K.message,{status:K.status})}if(G.pathname.endsWith("/deregister")&&Z==="POST"){let K=await this.handleDeregister(J);return new Response(K.message,{status:K.status})}let{executionOwner:N,poolerMode:H}=Q;if(N=="trigger"){if(H=="event-driven-pooler"){let K=Q.targetQueue,V=Q.fencingToken??"0",M=this.store.kv.get("active_runtime_ctx");if(!M)return this.logger.warn("active runtime context was not found"),new Response("UNKNOWN ROUTE",{status:200});else await this.runtimeEventBridge.httpEventDrivenQueueTrigger(K,V,M)}}return new Response("UNKNOWN ROUTE",{status:200})}async performBatchAction($,W,Z,P){try{switch(P){case"ACK":await this.queueService.ackBatch($,Z);break;case"NACK":await this.queueService.ackBatch($,Z);break;case"RETRY":await this.queueService.retryBatch($,Z);break;case"DEREGISTER":await this.storage.repository.deregisterWorker(W,$);break}}catch(X){throw this.logger.error(`Error performing batch action [${P}] for queue [${$}]:`,X),X}}parseBody($){try{if($ instanceof ArrayBuffer||ArrayBuffer.isView($))return z0.default.decode($);return $}catch(W){throw Error(`Failed to parse request body : ${W?.message}`)}}extractContext($){let W=$.headers,Z=this.parseBody($.body),P=W.targetQueue,X=W.workerId??"";if(!P)throw Error("[HttpNetworkDriver] Queue not found in headers");return{headers:W,body:Z,queue:P,workerId:X}}async getMessageIds($){let{queue:W,body:Z,workerId:P}=this.extractContext($),Q=(Array.isArray(Z?.msg_ids)?Z.msg_ids:[]).map((G)=>Number.parseInt(String(G),10)).filter((G)=>Number.isInteger(G)&&G>=0);return{queue:W,messageIds:Q,workerId:P}}async handleAck($){let{messageIds:W,queue:Z,workerId:P}=await this.getMessageIds($);return await this.performBatchAction(Z,P,W,"ACK"),{message:"Jobs Acknowledged",status:200}}async handleNack($){let{messageIds:W,queue:Z,workerId:P}=await this.getMessageIds($);return await this.performBatchAction(Z,P,W,"NACK"),{message:"Jobs Not Acknowledged",status:200}}async handleRetry($){let{queue:W,workerId:Z,messageIds:P}=await this.getMessageIds($);return await this.performBatchAction(W,Z,P,"RETRY"),{message:"Jobs Retry Applied",status:200}}async handleDeregister($){let{queue:W,workerId:Z}=this.extractContext($);if(!Z)throw Error("[HttpNetworkDriver] Worker ID not found in headers");return await this.performBatchAction(W,Z,[],"DEREGISTER"),{message:"Worker Deregistered",status:200}}}var l$=F0(B0(),1);class D0 extends y{networkInterface;interface="WEBSOCKET";queuePeers=new Map;triggerHandler;boundOpen=($)=>this.onConnectionOpen($);boundMessage=($,W)=>this.onMessage($,W);boundClose=($)=>this.onConnectionClose($);constructor($,W){super($);this.networkInterface=W;this.networkInterface.on("open",this.boundOpen),this.networkInterface.on("message",this.boundMessage),this.networkInterface.on("close",this.boundClose)}async start(){}async broadcast($,W,Z){let P=this.queuePeers.get($);if(!P||P.size===0){this.logger.warn(`[Network] : No active workers listening on queue: ${$}`);return}let X=Z?l$.default.encode(W):W;for(let Q of P)try{Q.send(X)}catch(G){this.logger.error(`[Network] : Failed to send message to peer ${Q.id}:`,G)}}onTrigger($){this.triggerHandler=$}async stop(){this.networkInterface.off("open",this.boundOpen),this.networkInterface.off("message",this.boundMessage),this.networkInterface.off("close",this.boundClose);for(let $ of this.queuePeers.values())for(let W of $)try{W.close(1001,"server shutting down")}catch{}this.queuePeers.clear()}onConnectionOpen($){this.logger.log("[Network] : Worker connected:",$.id)}onMessage($,W){let Z=JSON.parse(W.toString());Z.type==="REGISTER"?this.handleWorkerRegistration($,Z):this.handleWorkerMessage(Z)}handleWorkerRegistration($,W){let Z=this.queuePeers.get(W.queue);if(!Z)Z=new Set,this.queuePeers.set(W.queue,Z);if(Z.has($)){this.logger.log(`[Network] : Worker ${$.id} is already registered to queue: ${W.queue}`);return}$.subscribe(W.queue),Z.add($),this.rs.lists.add(W.queue,$.id),this.logger.log(`[Network] : Worker ${$.id} registered to queue: ${W.queue}`)}handleWorkerMessage($){if(this.triggerHandler){let W=$.queue,Z=$.data!==void 0?$?.data:$;if(W)this.triggerHandler(W,Z)}}onConnectionClose($){this.logger.log("[Network] : [WebSocketNetworkDriver] - Worker disconnected:",$.id);for(let[W,Z]of this.queuePeers.entries())if(Z.has($)){if(Z.delete($),this.rs.lists.remove(W,$.id),Z.size===0)this.queuePeers.delete(W)}}}class o{config;storage;queueServuce;drivers=[];topology;networkInterface;isServerMode;logger;constructor($,W,Z){this.config=$;this.storage=W;this.queueServuce=Z;if(this.topology=$.mode,this.isServerMode=$.isServer,this.logger=new I,this.isServerMode)this.initializeTopology();else this.initializeClientTopology()}initializeTopology(){if(this.networkInterface=new K0(this.config),this.config.mode==="websocket"||this.config.mode==="hybrid")this.drivers.push(new D0(this.config,this.networkInterface));if(this.config.mode==="http"||this.config.mode==="hybrid")this.drivers.push(new u(this.config,this.networkInterface,this.storage,this.queueServuce))}initializeClientTopology(){this.drivers.push(new u(this.config,void 0,this.storage,this.queueServuce))}async bootAll(){if(!this.isServerMode||!this.networkInterface)return;await this.networkInterface.start();for(let $ of this.drivers)await $.start()}async shutdownAll(){if(!this.isServerMode)return;for(let $ of this.drivers)await $.stop();await this.networkInterface?.close()}onTrigger($){for(let W of this.drivers)W.onTrigger($)}async dispatchToNetwork($,W){let Z=F.get("queues").find((J)=>J.queue===$),P={http:"HTTP",socket:"WEBSOCKET"},X=Z.consumer.type,Q=P[X];if(!Q)throw Error(`[DispatchToNetwork] : Unsupported consumer type "${X}" for queue: "${$}"`);for(let J of this.drivers)if(J.interface===Q)await J.broadcast($,W,Z.consumer.optimizePayload??!0);if(this.drivers.filter((J)=>J.interface===Q).length===0)throw this.logger.error(`[DispatchToNetwork] : No "${Q}" driver available for queue "${$}" (mode: ${this.topology}, server: ${this.isServerMode})`),Error(`[DispatchToNetwork] : No "${Q}" driver available for queue "${$}" (mode: ${this.topology}, server: ${this.isServerMode})`)}}class C0{storage;tickService;tickController;unifiedTransportManager;swarmManager;scheduler;queueService;clock;events;queues=[];consumers=[];runtimeStrategy;logger;integrations=new Map;constructor($){if(F.initialize($),this.logger=new I,$.integrations?.length)this.runIntegrations($.integrations);for(let{consumer:G,...J}of F.raw.queues)this.queues.push(J),this.consumers.push(G);let W=F.get("instanceId");if(!W)throw Error("[Pulsar] : instanceId is required.");if(typeof W!=="string"||!/^[a-zA-Z0-9_-]+$/.test(W))throw Error('[Pulsar] : Invalid instanceId format. It must contain only alphanumeric characters, hyphens, and underscores (e.g., "string-like-this" or "or_this").');this.events=new E;let P=1/0,X=F.raw.runtime==="v8-isolate",Q=F.get("isolate");if(X)P=Math.max(0,Q.remainingTime-5000);if(this.storage=F.raw.storage,this.storage.connect(),this.storage.bindInstanceId(W),this.clock=new e({maxExecutionBudgetMs:P,safetyBufferMs:0,maxTrackHistory:50,enabled:!0}),this.queueService=new q$(this.storage),this.scheduler=new W0,this.runtimeStrategy=this.resolveRuntimeStrategy(),!this.runtimeStrategy)throw this.logger.error("[Pulsar] Failed to resolve a valid runtime strategy."),Error("[Pulsar] Failed to resolve a valid runtime strategy.");if(F.raw.runtime=="persistent")this.unifiedTransportManager=new o({...F.raw.networkInterface,isServer:!0},this.storage,this.queueService);else this.unifiedTransportManager=new o({mode:"client",isServer:!1,port:0},this.storage,this.queueService);if(this.swarmManager=new $0(F.raw.swarmConfig?.globalMaxJobsPerTick??1/0,F.raw.swarmConfig?.maxGlobalConcurrency??1/0),this.tickService=new P0({queue:this.queueService,storage:this.storage,swarmManager:this.swarmManager,unifiedTransportManager:this.unifiedTransportManager,events:this.events}),this.tickController=new X0({scheduler:this.scheduler,storage:this.storage,tickService:this.tickService,clock:this.clock,events:this.events,runtimeStrategy:this.runtimeStrategy}),Number.isFinite(P))this.logger.log(`[EngineRuntime] : isolate registred with id : [${Q.id}]`),this.logger.log(`[Clock] : Synced execution timeout (${P/1000}s) with isolate [${Q.id}]`);else this.logger.log(`[EngineRuntime] : Engine Started With No V8 Isolate (${new Date().toISOString()})`)}resolveRuntimeStrategy(){let $={queueService:this.queueService,clock:this.clock,queues:this.queues,storage:this.storage,isolate:this.V8Isolate,events:this.events,scheduler:this.scheduler};switch(F.get("runtime")){case"persistent":return new Q0($);case"serverless-vm":return new G0($);case"v8-isolate":return new N0($);default:throw Error("Unsupported Runtime")}}async runIntegrations($){for(let W of $){let Z;if(typeof W==="function")Z=new W("ALL");else Z=W;await Z.main(this),this.integrations.set(Z.module,Z)}}getIntegration($){if(typeof $==="string")return this.integrations.get($);for(let Z of this.integrations.values())if(Z instanceof $)return Z;let W=typeof $==="string"?$:$.name;throw Error(`Integration "${W}" is not registered.`)}get runtime(){return this.runtimeStrategy.type}get isV8Isolate(){return F.get("runtime")==="v8-isolate"}get V8Isolate(){return F.raw.isolate}async exit(){await this.storage.disconnect()}}class j$ extends C0{baseConfig;isolateId;currentExecutionId;lockKey;shutdownPromise=null;eventCleanUps=[];activeQueues=new Set;constructor($){super($);this.baseConfig=$;if(this.registerEvents(),!this.isV8Isolate)this.isolateId=crypto.randomUUID();else this.isolateId=this.V8Isolate.id;if(this.isV8Isolate)this.currentExecutionId=this.V8Isolate.get("current_execution_id"),this.lockKey=this.V8Isolate.get("lock_key");else this.currentExecutionId=this.generateCurrentExecutionIdFromConfig(),this.lockKey="lock-template-static-defination-for-non-v8";this.tickController.initializeState()}async start(){await this.unifiedTransportManager.bootAll(),await F.reconcileConfiguration(this.storage.ops),this.tickController.initializeState(),this.configureQueueProfiles(),await this.runtimeStrategy.onStart(this.executionContext)}async triggerQueue($){let W=this.queues.find((Z)=>Z.queue===$);if(!W)throw Error("[Pulsar] Target queue is missing.");this.logger.log(`[Pulsar] : Event-driven trigger for (${$})`),await this.validateConfiguration(),await this.runTick(W)}async validateConfiguration(){return{status:200,message:await F.reconcileConfiguration(this.storage.ops)}}configureQueueProfiles(){for(let $ of this.queues){let W=$.profile||"REALTIME";this.scheduler.registerQueueProfile($.queue,W)}}async runTick($){return this.activeQueues.add($),await this.tickController.runTick($)}async shutdown(){return this.shutdownPromise??=this.doShutdown(),this.shutdownPromise}async doShutdown(){if(this.logger.log("Engine Shutdown ⚠️."),this.removeRegisteredEvents(),this.unifiedTransportManager)await this.unifiedTransportManager.shutdownAll();if(!await this.runtimeStrategy.handleCycleCompletion(this.executionContext))await this.releaseExecutionLock(this.lockKey,this.currentExecutionId);await this.storage.ops.pingHealthCheck(),await this.storage.disconnect()}async scheduleRestart($){if($){let Z=this.queues.find((P)=>P.queue==$);if(Z)this.activeQueues.add(Z)}let W=Array.from(this.activeQueues.values());await this.releaseExecutionLock(this.lockKey,this.isolateId),await this.storage.ops.addRestart(W),await this.runtimeStrategy.handleRestart(this.executionContext),await this.storage.ops.updateRestartOwnership($,"handled_by_engine")}async restartForSameIsolate($){let W=30;if(this.isV8Isolate)W=this.V8Isolate.remainingTime+5;this.logger.log(`Estimated Restart in (${W})S`),await this.queueService.triggerUrl({url:F.get("engine.selfURL"),headers:$,delaySeconds:W})}get executionContext(){return{lockKey:this.lockKey,currentExecutionId:this.currentExecutionId,isolateId:this.isolateId,getActiveQueues:()=>Array.from(this.activeQueues.values()),runTick:($)=>this.runTick($),endTick:($)=>this.tickController.endTick($)}}setCurrentExecutionId($){this.currentExecutionId=$}generateCurrentExecutionIdFromConfig(){let $=this.baseConfig.queues.map((W)=>`${W.queue}:${W.pooler}`).join(",");return JW($)}registerEvents(){let $=this.runtimeStrategy.shouldShutdownOnCycleComplete;this.eventCleanUps.push(this.events.on("tick:cycle-completed",async()=>{if($)await this.shutdown();else this.logger.log("[Pulsar Persistent] : Cycle completed. Resetting state for next execution round."),this.tickController.initializeState()})),this.eventCleanUps.push(this.events.on("tick:force-run",async({queue:W,reason:Z})=>{this.logger.log(`[Tick] : Force executing tick for queue [${W.queue}] Trigger Reason : ${Z}`),await this.runTick(W)})),this.eventCleanUps.push(this.events.on("tick:end",({queue:W,reason:Z})=>{this.logger.log(`[Tick] : Force stoping tick for queue [${W}] (Trigger Reason : ${Z})`),this.tickController.endTick(W)})),this.eventCleanUps.push(this.events.on("tick:time-exceeded",async()=>{if($)await this.shutdown()})),this.eventCleanUps.push(this.events.on("engine:health-check-requested",async()=>{this.logger.log(`Pulsar : Health checking ping at (${new Date().toISOString()})`),await this.storage.ops.pingHealthCheck()}))}removeRegisteredEvents(){this.eventCleanUps.forEach(($)=>$()),this.eventCleanUps=[]}async awaitPendingShutdown(){if(await this.events.drain(),this.shutdownPromise)await this.shutdownPromise}async deleteScheduledRestart($){await this.storage.ops.deleteRestart($)}async acquireExecutionLock($,W,Z){return await this.storage.repository.acquireQueueLock($,W,Z)}async releaseExecutionLock($,W){return await this.storage.repository.releaseQueueLock($,W)}}export{p$ as createQueue,l as PulsarRuntime,j$ as Pulsar,h0 as IsolateInstance,L0 as EventTriggerStrategy};
|
|
6
6
|
/* Powered by NightX - Pulsar Engine */
|
|
7
7
|
|
|
8
|
-
//# debugId=
|
|
8
|
+
//# debugId=2AF35C6D656AA50664756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
"import { PulsarRuntimeCore, type RuntimeDependencies } from \"../shared/PulsarRuntimeCore.ts\";\r\nimport { PulsarRuntime } from \"../types/runtime.types.ts\";\r\n\r\nimport type { EngineQueuesConfig } from \"../types/queue.types.ts\";\r\nimport type { IRuntimeExecutionContext } from \"./runtimeTypes.ts\";\r\nimport { config } from \"../service/ConfigurationStore.ts\";\r\nimport { DeferredTickEvaluator } from \"../subsys/DeferredTickEvaluator.ts\";\r\n\r\nexport class IsolateRuntime extends PulsarRuntimeCore {\r\n public readonly type = \"V8_ISOLATE\";\r\n public readonly shouldShutdownOnCycleComplete = true;\r\n public override minBootRequirementSec = 5;\r\n\r\n private deferredTickEvaluator : DeferredTickEvaluator;\r\n\r\n constructor(private deps : RuntimeDependencies) {\r\n super(deps);\r\n\r\n this.logger.log(`[EngineRuntime] : Initialized V8 Isolate Runtime.`);\r\n\r\n this.deferredTickEvaluator = new DeferredTickEvaluator(\r\n this.minBootRequirementSec,\r\n this.scheduler,\r\n this.events,\r\n this.clock,\r\n this.logger\r\n )\r\n }\r\n\r\n public override async onStart(ctx : IRuntimeExecutionContext) {\r\n await this.executeQueuesTick(ctx.runTick);\r\n }\r\n\r\n public override async executeTick(queueConfig : EngineQueuesConfig, tickRunner : () => Promise<void>) {\r\n const { queue } = queueConfig;\r\n\r\n this.deferredTickEvaluator.stopRuntimeWatchdog();\r\n\r\n const isSafeToContinue = this.deps.clock.isSafeToContinue();\r\n const events = this.deps.events;\r\n\r\n if (!isSafeToContinue) {\r\n this.logger.log(`[EngineRuntime] : Ending All Ticks due to time limit.`);\r\n \r\n events.emit(\"tick:time-exceeded\", {\r\n queue,\r\n elapsedMs : this.deps.clock.getElapsedTotalTime()\r\n });\r\n\r\n events.emit(\"tick:cycle-completed\", { queue, cycles : 1 });\r\n \r\n return;\r\n }\r\n\r\n // unfinished, status : pending\r\n if(queueConfig.interventionPolicy == \"tick\" || (queueConfig.interventionPolicy == \"inherit\" && config.get('engine.interventionPolicy') == \"tick\")) {\r\n const shouldStop = await this.storage.repository.getStopSignal(queueConfig.queue);\r\n \r\n if(shouldStop) {\r\n events.emit(\"tick:cycle-completed\", { queue, cycles : 1 });\r\n return;\r\n }\r\n }\r\n\r\n await this.deps.clock.trackExecutionTime({ contextId: queue }, tickRunner);\r\n }\r\n\r\n public override async scheduleTick(queueConfig : EngineQueuesConfig, tickRunner : () => Promise<void>) {\r\n const { queue, concurrency, pooler } = queueConfig;\r\n\r\n const metrics = await this.queueService.getSingleQueueMetrics(queue);\r\n\r\n if(!metrics) return;\r\n\r\n if(metrics?.total == 0) {\r\n if(pooler == \"event-driven-pooler\") {\r\n this.logger.log(`[Tick] : [${queue}] - Tick Process Ended. Cycle Limit Reached`);\r\n this.events.emit(\"tick:cycle-completed\", { queue, cycles: 1 });\r\n return;\r\n }\r\n }\r\n\r\n const activeWorkers = await this.storage.repository.getActiveWorkersCount(queue);\r\n const availableSlots = Math.max(0, concurrency - activeWorkers);\r\n \r\n const wrappedTickRunner = async () => {\r\n this.deferredTickEvaluator.stopRuntimeWatchdog();\r\n await tickRunner();\r\n }\r\n\r\n this.scheduler.scheduleNext({\r\n metrics : { queue, availableSlots, ...metrics },\r\n onNext : wrappedTickRunner,\r\n onUpcomingDelayedNext: (upcomingTimeMs : number) => {\r\n this.logger.log(`[Scheduler] : Next tick scheduled in ${(upcomingTimeMs / 1000).toFixed(2)}s`);\r\n return this.deferredTickEvaluator.evaluateUpcomingDelayedNext(upcomingTimeMs, queue)\r\n },\r\n onFutureSchedule : async (nextVisibleAt) => {\r\n this.logger.log(`[Scheduler] : scheduled tick execution request`, nextVisibleAt);\r\n //await this.storage.repository.setFutureSchedule(queue, String(nextVisibleAt));\r\n },\r\n })\r\n \r\n return;\r\n }\r\n\r\n public override async handleCycleCompletion(ctx : IRuntimeExecutionContext) {\r\n let idpInvoked = false;\r\n let continuationScheduledForCurrentLock = false;\r\n const continuationOwnerId = ctx.currentExecutionId;\r\n\r\n const currentLockKey = ctx.lockKey;\r\n\r\n const isEdpLock = currentLockKey?.startsWith(\"pulsar:lock:edp:\");\r\n const isIdpLock = currentLockKey === \"pulsar:lock:idp\";\r\n const targetEdpQueue = isEdpLock ? currentLockKey?.replace(\"pulsar:lock:edp:\", \"\") : null;\r\n \r\n for (const { queue, pooler } of ctx.getActiveQueues()) {\r\n try {\r\n if(pooler == \"interval-driven-pooler\" && idpInvoked) continue;\r\n if (isEdpLock && queue !== targetEdpQueue) continue;\r\n \r\n const metrics = await this.queueService.getSingleQueueMetrics(queue);\r\n\r\n if(!metrics) continue;\r\n\r\n if (metrics.total === 0) {\r\n this.logger.log(`[Engine] : Queue ${queue} is empty (total: 0) using ${pooler} pooler. Halting tick.`)\r\n\r\n if(pooler == \"event-driven-pooler\") {\r\n ctx.endTick(queue);\r\n continue;\r\n }\r\n else {\r\n ctx.endTick(queue);\r\n }\r\n }\r\n\r\n const totalJobs = metrics.total;\r\n const shouldInvoke = await this.storage.repository.evaluateDeadRun(\r\n queue,\r\n pooler,\r\n totalJobs,\r\n continuationOwnerId,\r\n 15000\r\n )\r\n\r\n if (!shouldInvoke) {\r\n this.logger.log(`[Engine] : Should not invoke for ${queue}. Skipping.`);\r\n continue;\r\n }\r\n\r\n const selfInvocationIntervalSec : number = config.get(\"engine.selfInvocationIntervalSec\") ?? 1;\r\n const isV8Isolate = config.get('runtime') == PulsarRuntime.V8_ISOLATE;\r\n\r\n let delaySec = selfInvocationIntervalSec;\r\n\r\n if(isV8Isolate && config.raw.isolate) {\r\n const isolate = config.raw.isolate;\r\n const remainingTimeSec = (isolate.remainingTime / 1000);\r\n\r\n const MIN_EXECUTION_TIME_SEC = this.minBootRequirementSec;\r\n\r\n const REQUIRED_BUDGET_SEC = selfInvocationIntervalSec + MIN_EXECUTION_TIME_SEC;\r\n\r\n if (remainingTimeSec < REQUIRED_BUDGET_SEC) {\r\n this.logger.log(\r\n `[EngineRuntime] : Isolate remaining time (${remainingTimeSec.toFixed(3)}s) is insufficient ` +\r\n `for self-invocation (${selfInvocationIntervalSec}s delay + ${MIN_EXECUTION_TIME_SEC}s min work). Triggering restart.`\r\n );\r\n\r\n await this.handleRestart(ctx);\r\n return true;\r\n }\r\n const maxAvailableDelay = Math.max(1, remainingTimeSec - MIN_EXECUTION_TIME_SEC);\r\n delaySec = Math.min(selfInvocationIntervalSec, maxAvailableDelay);\r\n }\r\n \r\n const stateUpdate = await this.triggerSelfInvocation({\r\n queue,\r\n pooler,\r\n delaySec,\r\n continuationOwnerId,\r\n isIdpLock,\r\n isEdpLock,\r\n targetEdpQueue\r\n })\r\n\r\n if (stateUpdate.idpInvoked) idpInvoked = true;\r\n\r\n if (stateUpdate.continuationScheduledForCurrentLock) {\r\n continuationScheduledForCurrentLock = true;\r\n }\r\n }\r\n catch (error) {\r\n this.logger.log(`[deadRun] : Error checking queue ${queue}:`, error);\r\n }\r\n }\r\n \r\n return continuationScheduledForCurrentLock;\r\n }\r\n\r\n public override async handleRestart(ctx : IRuntimeExecutionContext) {\r\n let idpInvoked = false;\r\n const continuationOwnerId = ctx.currentExecutionId;\r\n const selfRestartIntervalSec = config.get(\"engine.selfRestartIntervalSec\");\r\n\r\n const activeQueues = ctx.getActiveQueues();\r\n\r\n for (const { queue, pooler } of activeQueues) {\r\n \r\n if(pooler == \"interval-driven-pooler\" && idpInvoked) continue;\r\n\r\n const headers : Record<string, string> = {\r\n 'content-type': 'application/json',\r\n 'x-last-execution-id' : continuationOwnerId,\r\n 'x-last-execution-at' : new Date().toISOString(),\r\n 'x-execution-owner' : 'engine',\r\n 'x-restart' : 'true',\r\n 'x-pooler' : pooler,\r\n 'x-target-queue' : queue\r\n };\r\n\r\n this.logger.log(`(${pooler}) : invoking engine via restartTick (${selfRestartIntervalSec})`);\r\n\r\n if(pooler == \"interval-driven-pooler\") idpInvoked = true;\r\n\r\n const lockKey = ctx.lockKey;\r\n\r\n await this.storage.repository.releaseQueueLock(lockKey, ctx.isolateId);\r\n await this.storage.ops.addRestart(activeQueues);\r\n\r\n await this.queueService.triggerUrl({\r\n url: config.get('engine.selfURL'),\r\n headers,\r\n delaySeconds: selfRestartIntervalSec\r\n });\r\n\r\n await this.storage.ops.updateRestartOwnership(queue, 'handled_by_engine');\r\n }\r\n }\r\n}",
|
|
39
39
|
"import { serve } from \"crossws/server\";\r\nimport EventEmitter from \"eventemitter3\";\r\nimport { LoggerService } from \"../subsys/LoggerService\";\r\n\r\nimport type { Server, ServerHandler } from \"srvx\";\r\nimport type { NetworkConfig } from \"./interfaces/network.types\";\r\nimport type { ILogger } from \"../subsys/LoggerService\";\r\nimport { createRuntimeCacheStorage, type RuntimeCacheStorage } from \"../subsys/RuntimeCacheStorage\";\r\n\r\nexport class NetworkInterface extends EventEmitter {\r\n private serverInstance : Server<ServerHandler> = null as any;\r\n private logger : ILogger;\r\n private store : RuntimeCacheStorage;\r\n\r\n public onFetch?: (request : Request) => Promise<Response> | Response;\r\n\r\n constructor(private readonly config : NetworkConfig) {\r\n super();\r\n this.logger = new LoggerService();\r\n this.store = createRuntimeCacheStorage();\r\n }\r\n\r\n public async start() {\r\n const self = this;\r\n\r\n this.logger.log(`[Network] : Initializing server on port ${this.config.port} in [${this.config.mode}] mode`);\r\n\r\n const openWebSocket = this.config.mode === \"hybrid\" || this.config.mode === \"websocket\";\r\n\r\n if (openWebSocket) {\r\n this.logger.log(`[Network] : WebSocket server handlers attached on port ${this.config.port}`);\r\n }\r\n\r\n this.serverInstance = serve({\r\n port : this.config.port,\r\n ...(openWebSocket ? {\r\n websocket: {\r\n open(peer) { \r\n self.emit(\"open\", peer); \r\n },\r\n message(peer, message) { \r\n self.emit(\"message\", peer, message); \r\n },\r\n close(peer, event) { \r\n self.emit(\"close\", peer, event); \r\n },\r\n },\r\n } : {}),\r\n fetch(request) {\r\n if (self.onFetch) {\r\n return self.onFetch(request);\r\n }\r\n self.logger.warn(`[Network] : Unhandled route accessed: ${request.method} ${request.url}`);\r\n return new Response(null, { status: 404 });\r\n },\r\n gracefulShutdown: false,\r\n maxRequestBodySize: undefined,\r\n })\r\n\r\n this.store.kv.set('self_url', this.serverInstance.url);\r\n\r\n await this.serverInstance.ready();\r\n this.logger.log(`[Server] Successfully started and listening on port ${this.config.port}`);\r\n }\r\n\r\n public async close() {\r\n try {\r\n await this.serverInstance?.close(true);\r\n }\r\n catch (err) {\r\n this.logger.error(`[Network] : Error closing server:`, err);\r\n }\r\n }\r\n}",
|
|
40
40
|
"import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n",
|
|
41
|
-
"import msgpack from '@msgpack/msgpack';\r\nimport { RuntimeEventBridge } from '../../subsys/RuntimeEventBridge';\r\nimport { BaseNetworkDriver } from \"../abstract/BaseNetworkDriver\";\r\nimport { createRuntimeCacheStorage } from \"../../subsys/RuntimeCacheStorage\";\r\nimport { parseRequest } from \"../../server/parser/parseRequest\";\r\nimport { extractHeaders, type ResponseHeaders } from '../../server/utility/extract-headers';\r\nimport { config } from \"../../service/ConfigurationStore\";\r\n\r\nimport { PulsarRuntime } from \"../../types/runtime.types\";\r\nimport type { PulsarUnifiedStorage } from \"../../storage/PulsarStorage\";\r\nimport type { NetworkConfig } from \"../interfaces/network.types\";\r\nimport type { NetworkInterface } from \"../NetworkInterface\";\r\nimport type { QueueService } from \"../../modules/Queue.module\";\r\nimport type { EngineConsumerConfig } from \"../../types/consumer.types\";\r\nimport type { RuntimeCacheStorage } from \"../../subsys/RuntimeCacheStorage\";\r\nimport type { IRuntimeExecutionContext } from '../../runtimes/runtimeTypes';\r\n\r\ntype StandardArgs = {\r\n headers : ResponseHeaders;\r\n body : any;\r\n}\r\n\r\ntype StandardResponse = {\r\n status : number;\r\n message : string;\r\n}\r\n\r\nexport class HttpNetworkDriver extends BaseNetworkDriver {\r\n public override readonly interface = \"HTTP\";\r\n\r\n private consumersMap : Map<string, EngineConsumerConfig>;\r\n private triggerHandler?: (queue : string, data : any) => void;\r\n\r\n private runtimeEventBridge : RuntimeEventBridge;\r\n private store : RuntimeCacheStorage;\r\n\r\n\r\n constructor(\r\n readonly networkConfig : NetworkConfig,\r\n private readonly networkInterface : NetworkInterface,\r\n private storage : PulsarUnifiedStorage,\r\n private queueService : QueueService\r\n ) {\r\n super(networkConfig);\r\n this.store = createRuntimeCacheStorage();\r\n\r\n const runtimeExecutionId = this.rs.kv.get<string>(\"runtime_execution_id\");\r\n\r\n this.runtimeEventBridge = new RuntimeEventBridge(this.storage, this.logger, runtimeExecutionId!);\r\n\r\n const consumers = config.get('queues');\r\n const map : Map<string, EngineConsumerConfig> = new Map();\r\n consumers.forEach(({ consumer, queue }) => map.set(queue, consumer));\r\n \r\n this.consumersMap = map;\r\n\r\n if (this.networkInterface) {\r\n this.networkInterface.onFetch = (req : Request) => this.handleFetch(req);\r\n }\r\n }\r\n\r\n public override async start() {}\r\n\r\n public override async broadcast(queue : string, payload : any, optimizePayload : boolean) {\r\n const consumer = this.consumersMap.get(queue);\r\n if (!consumer) {\r\n throw new Error(`No consumer registered for queue: \"${queue}\"`);\r\n }\r\n\r\n if (consumer.type !== \"http\") return;\r\n\r\n const { worker_id, batch } = payload;\r\n\r\n const rawPayload = optimizePayload ? msgpack.encode(payload) : payload;\r\n\r\n const selfUrl = config.get('runtime') == PulsarRuntime.PERSISTENT ? this.store.kv.get('self_url') as string : config.get('engine.selfURL');\r\n\r\n try {\r\n await fetch(`${consumer.url}/dispatch`, {\r\n method: \"POST\",\r\n headers: {\r\n 'content-type': optimizePayload ? 'application/x-msgpack' : 'application/json',\r\n ...consumer.headers,\r\n 'x-worker-id': worker_id,\r\n 'x-batch-size': batch.length.toString(),\r\n 'x-pulsar-callback-url': selfUrl,\r\n 'x-queue': queue,\r\n \"x-execution-signature\": crypto.randomUUID(),\r\n \"x-instance-id\" : config.get(\"instanceId\"),\r\n \"x-api-key\" : config.get(\"apiKey\"),\r\n \"x-dispatched-at\" : new Date().toISOString()\r\n },\r\n body: rawPayload\r\n })\r\n }\r\n catch (error) {\r\n this.logger.error('Error dispatching jobs to http consumer,', error);\r\n }\r\n }\r\n\r\n public onTrigger(handler: (queue : string, data : any) => void) {\r\n this.triggerHandler = handler;\r\n }\r\n\r\n public override async stop() {}\r\n\r\n private async handleFetch(req : Request) {\r\n const { url: rawUrl, method, body, headers : rawHeaders } = await parseRequest(req);\r\n const headers = extractHeaders(rawHeaders);\r\n\r\n const url = new URL(rawUrl);\r\n const args = { headers, body };\r\n\r\n if (url.pathname.endsWith(\"/ack\") && method === \"POST\") {\r\n const response = await this.handleAck(args);\r\n return new Response(response.message, { status: response.status });\r\n }\r\n\r\n if (url.pathname.endsWith(\"/nack\") && method === \"POST\") {\r\n const response = await this.handleNack(args);\r\n return new Response(response.message, { status: response.status });\r\n }\r\n\r\n if (url.pathname.endsWith(\"/retry\") && method === \"POST\") {\r\n const response = await this.handleRetry(args);\r\n return new Response(response.message, { status: response.status });\r\n }\r\n\r\n if (url.pathname.endsWith(\"/deregister\") && method === \"POST\") {\r\n const response = await this.handleDeregister(args);\r\n return new Response(response.message, { status: response.status });\r\n }\r\n\r\n const executionOwner = headers.executionOwner;\r\n const poolerMode = headers.poolerMode;\r\n\r\n if(executionOwner == 'trigger') {\r\n if(poolerMode == 'event-driven-pooler') {\r\n const queueName = headers.targetQueue as string;\r\n const fencingToken = headers.fencingToken ?? '0';\r\n\r\n const activeCtx = this.store.kv.get<IRuntimeExecutionContext>('active_runtime_ctx');\r\n\r\n if(!activeCtx) {\r\n this.logger.warn('active runtime context was not found');\r\n return new Response('UNKNOWN ROUTE', { status: 200 });\r\n }\r\n\r\n else await this.runtimeEventBridge.httpEventDrivenQueueTrigger(queueName, fencingToken, activeCtx);\r\n }\r\n }\r\n\r\n return new Response('UNKNOWN ROUTE', { status: 200 });\r\n }\r\n\r\n private async performBatchAction(queue : string, workerId : string, messageIds : number[], action : \"ACK\" | \"NACK\" | \"RETRY\" | \"DEREGISTER\") {\r\n try {\r\n switch (action) {\r\n case \"ACK\":\r\n await this.queueService.ackBatch(queue, messageIds);\r\n break;\r\n case \"NACK\":\r\n await this.queueService.ackBatch(queue, messageIds);\r\n break;\r\n case \"RETRY\":\r\n await this.queueService.retryBatch(queue, messageIds);\r\n break;\r\n case \"DEREGISTER\":\r\n await this.storage.repository.deregisterWorker(workerId, queue);\r\n break;\r\n }\r\n }\r\n catch (error) {\r\n this.logger.error(`Error performing batch action [${action}] for queue [${queue}]:`, error);\r\n throw error;\r\n }\r\n }\r\n\r\n private parseBody(body : ArrayBufferLike | Uint8Array) : any {\r\n try {\r\n if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\r\n return msgpack.decode(body);\r\n }\r\n\r\n return body;\r\n }\r\n catch (err : any) {\r\n throw new Error(`Failed to parse request body : ${err?.message}`);\r\n }\r\n }\r\n\r\n private extractContext(args : StandardArgs) {\r\n const headers = args.headers;\r\n const body = this.parseBody(args.body);\r\n const queue = headers.targetQueue;\r\n const workerId = headers.workerId ?? '';\r\n\r\n if (!queue) {\r\n throw new Error(\"[HttpNetworkDriver] Queue not found in headers\");\r\n }\r\n\r\n return { headers, body, queue, workerId };\r\n }\r\n\r\n private async getMessageIds(args : StandardArgs) : Promise<{ queue : string; messageIds : number[]; workerId : string }> {\r\n const { queue, body, workerId } = this.extractContext(args);\r\n\r\n const rawMsgIds = (Array.isArray(body?.msg_ids) ? body.msg_ids : []) as number[];\r\n const messageIds : number[] = rawMsgIds\r\n .map((id) => Number.parseInt(String(id), 10))\r\n .filter((id) => Number.isInteger(id) && id >= 0);\r\n\r\n return { queue, messageIds, workerId };\r\n }\r\n\r\n private async handleAck(args : StandardArgs) : Promise<StandardResponse> {\r\n const { messageIds, queue, workerId } = await this.getMessageIds(args);\r\n await this.performBatchAction(queue, workerId, messageIds, \"ACK\");\r\n return { message: \"Jobs Acknowledged\", status: 200 };\r\n }\r\n\r\n private async handleNack(args : StandardArgs) : Promise<StandardResponse> {\r\n const { messageIds, queue, workerId } = await this.getMessageIds(args);\r\n await this.performBatchAction(queue, workerId, messageIds, \"NACK\");\r\n return { message: \"Jobs Not Acknowledged\", status: 200 };\r\n }\r\n\r\n private async handleRetry(args : StandardArgs) : Promise<StandardResponse> {\r\n const { queue, workerId, messageIds } = await this.getMessageIds(args);\r\n await this.performBatchAction(queue, workerId, messageIds, \"RETRY\");\r\n return { message: \"Jobs Retry Applied\", status: 200 };\r\n }\r\n\r\n private async handleDeregister(args : StandardArgs) : Promise<StandardResponse> {\r\n const { queue, workerId } = this.extractContext(args);\r\n\r\n if (!workerId) {\r\n throw new Error(\"[HttpNetworkDriver] Worker ID not found in headers\");\r\n }\r\n\r\n await this.performBatchAction(queue, workerId, [], \"DEREGISTER\");\r\n return { message: \"Worker Deregistered\", status: 200 };\r\n }\r\n}",
|
|
41
|
+
"import msgpack from '@msgpack/msgpack';\r\nimport { RuntimeEventBridge } from '../../subsys/RuntimeEventBridge';\r\nimport { BaseNetworkDriver } from \"../abstract/BaseNetworkDriver\";\r\nimport { createRuntimeCacheStorage } from \"../../subsys/RuntimeCacheStorage\";\r\nimport { parseRequest } from \"../../server/parser/parseRequest\";\r\nimport { extractHeaders, type ResponseHeaders } from '../../server/utility/extract-headers';\r\nimport { config } from \"../../service/ConfigurationStore\";\r\n\r\nimport { PulsarRuntime } from \"../../types/runtime.types\";\r\nimport type { PulsarUnifiedStorage } from \"../../storage/PulsarStorage\";\r\nimport type { NetworkConfig } from \"../interfaces/network.types\";\r\nimport type { NetworkInterface } from \"../NetworkInterface\";\r\nimport type { QueueService } from \"../../modules/Queue.module\";\r\nimport type { EngineConsumerConfig } from \"../../types/consumer.types\";\r\nimport type { RuntimeCacheStorage } from \"../../subsys/RuntimeCacheStorage\";\r\nimport type { IRuntimeExecutionContext } from '../../runtimes/runtimeTypes';\r\n\r\ntype StandardArgs = {\r\n headers : ResponseHeaders;\r\n body : any;\r\n}\r\n\r\ntype StandardResponse = {\r\n status : number;\r\n message : string;\r\n}\r\n\r\nexport class HttpNetworkDriver extends BaseNetworkDriver {\r\n public override readonly interface = \"HTTP\";\r\n\r\n private consumersMap : Map<string, EngineConsumerConfig>;\r\n private triggerHandler?: (queue : string, data : any) => void;\r\n\r\n private runtimeEventBridge : RuntimeEventBridge;\r\n private store : RuntimeCacheStorage;\r\n\r\n\r\n constructor(\r\n readonly networkConfig : NetworkConfig,\r\n private readonly networkInterface : NetworkInterface,\r\n private storage : PulsarUnifiedStorage,\r\n private queueService : QueueService\r\n ) {\r\n super(networkConfig);\r\n this.store = createRuntimeCacheStorage();\r\n\r\n const runtimeExecutionId = this.rs.kv.get<string>(\"runtime_execution_id\");\r\n\r\n this.runtimeEventBridge = new RuntimeEventBridge(this.storage, this.logger, runtimeExecutionId!);\r\n\r\n const consumers = config.get('queues');\r\n const map : Map<string, EngineConsumerConfig> = new Map();\r\n consumers.forEach(({ consumer, queue }) => map.set(queue, consumer));\r\n \r\n this.consumersMap = map;\r\n\r\n if (this.networkInterface) {\r\n this.networkInterface.onFetch = (req : Request) => this.handleFetch(req);\r\n }\r\n }\r\n\r\n public override async start() {}\r\n\r\n public override async broadcast(queue : string, payload : any, optimizePayload : boolean) {\r\n const consumer = this.consumersMap.get(queue);\r\n if (!consumer) {\r\n throw new Error(`No consumer registered for queue: \"${queue}\"`);\r\n }\r\n\r\n if (consumer.type !== \"http\") return;\r\n\r\n const { worker_id, batch } = payload;\r\n\r\n const rawPayload = optimizePayload ? msgpack.encode(payload) : JSON.stringify(payload);\r\n\r\n const selfUrl = config.get('runtime') == PulsarRuntime.PERSISTENT ? this.store.kv.get('self_url') as string : config.get('engine.selfURL');\r\n\r\n try {\r\n await fetch(`${consumer.url}/dispatch`, {\r\n method: \"POST\",\r\n headers: {\r\n 'content-type': optimizePayload ? 'application/x-msgpack' : 'application/json',\r\n ...consumer.headers,\r\n 'x-worker-id': worker_id,\r\n 'x-batch-size': batch.length.toString(),\r\n 'x-pulsar-callback-url': selfUrl,\r\n 'x-queue': queue,\r\n \"x-execution-signature\": crypto.randomUUID(),\r\n \"x-instance-id\" : config.get(\"instanceId\"),\r\n \"x-api-key\" : config.get(\"apiKey\"),\r\n \"x-dispatched-at\" : new Date().toISOString()\r\n },\r\n body: rawPayload\r\n })\r\n }\r\n catch (error) {\r\n this.logger.error('Error dispatching jobs to http consumer,', error);\r\n }\r\n }\r\n\r\n public onTrigger(handler: (queue : string, data : any) => void) {\r\n this.triggerHandler = handler;\r\n }\r\n\r\n public override async stop() {}\r\n\r\n private async handleFetch(req : Request) {\r\n const { url: rawUrl, method, body, headers : rawHeaders } = await parseRequest(req);\r\n const headers = extractHeaders(rawHeaders);\r\n\r\n const url = new URL(rawUrl);\r\n const args = { headers, body };\r\n\r\n if (url.pathname.endsWith(\"/ack\") && method === \"POST\") {\r\n const response = await this.handleAck(args);\r\n return new Response(response.message, { status: response.status });\r\n }\r\n\r\n if (url.pathname.endsWith(\"/nack\") && method === \"POST\") {\r\n const response = await this.handleNack(args);\r\n return new Response(response.message, { status: response.status });\r\n }\r\n\r\n if (url.pathname.endsWith(\"/retry\") && method === \"POST\") {\r\n const response = await this.handleRetry(args);\r\n return new Response(response.message, { status: response.status });\r\n }\r\n\r\n if (url.pathname.endsWith(\"/deregister\") && method === \"POST\") {\r\n const response = await this.handleDeregister(args);\r\n return new Response(response.message, { status: response.status });\r\n }\r\n\r\n const executionOwner = headers.executionOwner;\r\n const poolerMode = headers.poolerMode;\r\n\r\n if(executionOwner == 'trigger') {\r\n if(poolerMode == 'event-driven-pooler') {\r\n const queueName = headers.targetQueue as string;\r\n const fencingToken = headers.fencingToken ?? '0';\r\n\r\n const activeCtx = this.store.kv.get<IRuntimeExecutionContext>('active_runtime_ctx');\r\n\r\n if(!activeCtx) {\r\n this.logger.warn('active runtime context was not found');\r\n return new Response('UNKNOWN ROUTE', { status: 200 });\r\n }\r\n\r\n else await this.runtimeEventBridge.httpEventDrivenQueueTrigger(queueName, fencingToken, activeCtx);\r\n }\r\n }\r\n\r\n return new Response('UNKNOWN ROUTE', { status: 200 });\r\n }\r\n\r\n private async performBatchAction(queue : string, workerId : string, messageIds : number[], action : \"ACK\" | \"NACK\" | \"RETRY\" | \"DEREGISTER\") {\r\n try {\r\n switch (action) {\r\n case \"ACK\":\r\n await this.queueService.ackBatch(queue, messageIds);\r\n break;\r\n case \"NACK\":\r\n await this.queueService.ackBatch(queue, messageIds);\r\n break;\r\n case \"RETRY\":\r\n await this.queueService.retryBatch(queue, messageIds);\r\n break;\r\n case \"DEREGISTER\":\r\n await this.storage.repository.deregisterWorker(workerId, queue);\r\n break;\r\n }\r\n }\r\n catch (error) {\r\n this.logger.error(`Error performing batch action [${action}] for queue [${queue}]:`, error);\r\n throw error;\r\n }\r\n }\r\n\r\n private parseBody(body : ArrayBufferLike | Uint8Array) : any {\r\n try {\r\n if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\r\n return msgpack.decode(body);\r\n }\r\n\r\n return body;\r\n }\r\n catch (err : any) {\r\n throw new Error(`Failed to parse request body : ${err?.message}`);\r\n }\r\n }\r\n\r\n private extractContext(args : StandardArgs) {\r\n const headers = args.headers;\r\n const body = this.parseBody(args.body);\r\n const queue = headers.targetQueue;\r\n const workerId = headers.workerId ?? '';\r\n\r\n if (!queue) {\r\n throw new Error(\"[HttpNetworkDriver] Queue not found in headers\");\r\n }\r\n\r\n return { headers, body, queue, workerId };\r\n }\r\n\r\n private async getMessageIds(args : StandardArgs) : Promise<{ queue : string; messageIds : number[]; workerId : string }> {\r\n const { queue, body, workerId } = this.extractContext(args);\r\n\r\n const rawMsgIds = (Array.isArray(body?.msg_ids) ? body.msg_ids : []) as number[];\r\n const messageIds : number[] = rawMsgIds\r\n .map((id) => Number.parseInt(String(id), 10))\r\n .filter((id) => Number.isInteger(id) && id >= 0);\r\n\r\n return { queue, messageIds, workerId };\r\n }\r\n\r\n private async handleAck(args : StandardArgs) : Promise<StandardResponse> {\r\n const { messageIds, queue, workerId } = await this.getMessageIds(args);\r\n await this.performBatchAction(queue, workerId, messageIds, \"ACK\");\r\n return { message: \"Jobs Acknowledged\", status: 200 };\r\n }\r\n\r\n private async handleNack(args : StandardArgs) : Promise<StandardResponse> {\r\n const { messageIds, queue, workerId } = await this.getMessageIds(args);\r\n await this.performBatchAction(queue, workerId, messageIds, \"NACK\");\r\n return { message: \"Jobs Not Acknowledged\", status: 200 };\r\n }\r\n\r\n private async handleRetry(args : StandardArgs) : Promise<StandardResponse> {\r\n const { queue, workerId, messageIds } = await this.getMessageIds(args);\r\n await this.performBatchAction(queue, workerId, messageIds, \"RETRY\");\r\n return { message: \"Jobs Retry Applied\", status: 200 };\r\n }\r\n\r\n private async handleDeregister(args : StandardArgs) : Promise<StandardResponse> {\r\n const { queue, workerId } = this.extractContext(args);\r\n\r\n if (!workerId) {\r\n throw new Error(\"[HttpNetworkDriver] Worker ID not found in headers\");\r\n }\r\n\r\n await this.performBatchAction(queue, workerId, [], \"DEREGISTER\");\r\n return { message: \"Worker Deregistered\", status: 200 };\r\n }\r\n}",
|
|
42
42
|
"import { LoggerService, type ILogger } from \"../../subsys/LoggerService\";\r\nimport { createRuntimeCacheStorage, type RuntimeCacheStorage } from \"../../subsys/RuntimeCacheStorage\";\r\nimport type { NetworkConfig } from \"../interfaces/network.types\";\r\n\r\nexport abstract class BaseNetworkDriver {\r\n protected isRunning : boolean = false;\r\n protected logger : ILogger;\r\n\r\n public abstract interface : \"WEBSOCKET\" | \"HTTP\";\r\n\r\n /** Runtime Storage */\r\n protected rs : RuntimeCacheStorage;\r\n\r\n constructor(protected readonly config : NetworkConfig) {\r\n this.logger = new LoggerService();\r\n this.rs = createRuntimeCacheStorage();\r\n }\r\n\r\n public abstract start() : Promise<void>;\r\n public abstract stop() : Promise<void>;\r\n public abstract broadcast(queue : string, payload : any, optimizePayload : boolean) : Promise<void>;\r\n public abstract onTrigger(handler: (queue: string, data: any) => void) : void;\r\n}",
|
|
43
43
|
"import msgpack from '@msgpack/msgpack';\r\nimport type { Peer, Message } from \"crossws\";\r\nimport { BaseNetworkDriver } from \"../abstract/BaseNetworkDriver\";\r\n\r\nimport type { NetworkConfig } from \"../interfaces/network.types\";\r\nimport type { NetworkInterface } from \"../NetworkInterface\";\r\n\r\nexport class WebSocketNetworkDriver extends BaseNetworkDriver {\r\n public override readonly interface = \"WEBSOCKET\";\r\n\r\n private queuePeers = new Map<string, Set<Peer>>();\r\n private triggerHandler?: (queue : string, data : any) => void;\r\n\r\n private boundOpen = (peer : Peer) => this.onConnectionOpen(peer);\r\n private boundMessage = (peer : Peer, message : Message) => this.onMessage(peer, message);\r\n private boundClose = (peer : Peer) => this.onConnectionClose(peer);\r\n\r\n constructor(config : NetworkConfig, private networkInterface : NetworkInterface) {\r\n super(config);\r\n\r\n this.networkInterface.on(\"open\", this.boundOpen);\r\n this.networkInterface.on(\"message\", this.boundMessage);\r\n this.networkInterface.on(\"close\", this.boundClose);\r\n }\r\n\r\n public override async start() {}\r\n\r\n public override async broadcast(queue : string, payload : any, optimizePayload : boolean) {\r\n const peers = this.queuePeers.get(queue);\r\n if (!peers || peers.size === 0) {\r\n this.logger.warn(`[Network] : No active workers listening on queue: ${queue}`);\r\n return;\r\n }\r\n\r\n const rawPayload = optimizePayload ? msgpack.encode(payload) : payload;\r\n\r\n for (const peer of peers) {\r\n try {\r\n peer.send(rawPayload);\r\n }\r\n catch (err) {\r\n this.logger.error(`[Network] : Failed to send message to peer ${peer.id}:`, err);\r\n }\r\n }\r\n }\r\n\r\n public onTrigger(handler: (queue : string, data : any) => void) {\r\n this.triggerHandler = handler;\r\n }\r\n\r\n public override async stop() {\r\n this.networkInterface.off(\"open\", this.boundOpen);\r\n this.networkInterface.off(\"message\", this.boundMessage);\r\n this.networkInterface.off(\"close\", this.boundClose);\r\n\r\n for (const peers of this.queuePeers.values()) {\r\n for (const peer of peers) {\r\n try { peer.close(1001, \"server shutting down\"); } catch {}\r\n }\r\n }\r\n\r\n this.queuePeers.clear();\r\n }\r\n\r\n private onConnectionOpen(peer : Peer) {\r\n this.logger.log(\"[Network] : Worker connected:\", peer.id);\r\n }\r\n\r\n private onMessage(peer : Peer, message : Message) {\r\n const data = JSON.parse(message.toString());\r\n\r\n data.type === \"REGISTER\" ?\r\n this.handleWorkerRegistration(peer, data) :\r\n this.handleWorkerMessage(data);\r\n }\r\n\r\n private handleWorkerRegistration(peer : Peer, data : { type : string, queue : string }) {\r\n let peersSet = this.queuePeers.get(data.queue);\r\n\r\n if (!peersSet) {\r\n peersSet = new Set<Peer>();\r\n this.queuePeers.set(data.queue, peersSet);\r\n }\r\n\r\n if (peersSet.has(peer)) {\r\n this.logger.log(`[Network] : Worker ${peer.id} is already registered to queue: ${data.queue}`);\r\n return;\r\n }\r\n\r\n peer.subscribe(data.queue);\r\n peersSet.add(peer);\r\n\r\n this.rs.lists.add(data.queue, peer.id);\r\n\r\n this.logger.log(`[Network] : Worker ${peer.id} registered to queue: ${data.queue}`);\r\n }\r\n\r\n private handleWorkerMessage(data : any) {\r\n if (this.triggerHandler) {\r\n const queue = data.queue;\r\n const payload = data.data !== undefined ? data?.data : data;\r\n if (queue) {\r\n this.triggerHandler(queue, payload);\r\n }\r\n }\r\n }\r\n\r\n private onConnectionClose(peer : Peer) {\r\n this.logger.log(\"[Network] : [WebSocketNetworkDriver] - Worker disconnected:\", peer.id);\r\n\r\n for (const [queue, peers] of this.queuePeers.entries()) {\r\n if (peers.has(peer)) {\r\n peers.delete(peer);\r\n this.rs.lists.remove(queue, peer.id);\r\n if (peers.size === 0) {\r\n this.queuePeers.delete(queue);\r\n }\r\n }\r\n }\r\n }\r\n}",
|
|
44
44
|
"import type { NetworkConfig } from \"./interfaces/network.types\";\r\nimport type { PulsarUnifiedStorage } from \"../storage/PulsarStorage\";\r\nimport type { QueueService } from \"../modules/Queue.module\";\r\n\r\nimport { NetworkInterface } from \"./NetworkInterface\";\r\nimport { BaseNetworkDriver } from \"./abstract/BaseNetworkDriver\";\r\nimport { HttpNetworkDriver } from \"./drivers/HttpNetworkDriver\";\r\nimport { WebSocketNetworkDriver } from \"./drivers/WebSocketNetworkDriver\";\r\nimport { config } from \"../service/ConfigurationStore\";\r\nimport { LoggerService, type ILogger } from \"../subsys/LoggerService\";\r\n\r\nexport class UnifiedTransportManager {\r\n\r\n private drivers : BaseNetworkDriver[] = [];\r\n public readonly topology : NetworkConfig['mode'];\r\n private networkInterface?: NetworkInterface;\r\n private readonly isServerMode : boolean;\r\n private readonly logger : ILogger;\r\n\r\n constructor(private readonly config : NetworkConfig, private storage : PulsarUnifiedStorage, private queueServuce : QueueService) {\r\n this.topology = config.mode;\r\n this.isServerMode = config.isServer;\r\n\r\n this.logger = new LoggerService();\r\n\r\n if (this.isServerMode) this.initializeTopology();\r\n else this.initializeClientTopology();\r\n }\r\n\r\n private initializeTopology() {\r\n this.networkInterface = new NetworkInterface(this.config);\r\n\r\n if (this.config.mode === \"websocket\" || this.config.mode === \"hybrid\") {\r\n this.drivers.push(new WebSocketNetworkDriver(this.config, this.networkInterface));\r\n }\r\n\r\n if (this.config.mode === \"http\" || this.config.mode === \"hybrid\") {\r\n this.drivers.push(new HttpNetworkDriver(this.config, this.networkInterface, this.storage, this.queueServuce));\r\n }\r\n }\r\n\r\n private initializeClientTopology() {\r\n this.drivers.push(new HttpNetworkDriver(this.config, undefined as any, this.storage, this.queueServuce));\r\n }\r\n\r\n public async bootAll() {\r\n if (!this.isServerMode || !this.networkInterface) return;\r\n\r\n await this.networkInterface.start();\r\n\r\n for (const driver of this.drivers) {\r\n await driver.start();\r\n }\r\n }\r\n\r\n public async shutdownAll() {\r\n if (!this.isServerMode) return;\r\n \r\n for (const driver of this.drivers) {\r\n await driver.stop();\r\n }\r\n \r\n await this.networkInterface?.close();\r\n }\r\n\r\n public onTrigger(onTrigger: (queue : string, data : any) => void) {\r\n for (const driver of this.drivers) {\r\n driver.onTrigger(onTrigger);\r\n }\r\n }\r\n\r\n public async dispatchToNetwork(queue : string, payload : any) {\r\n const targetQueue = config.get('queues').find(q => q.queue === queue)!;\r\n\r\n const interfaceMap : Record<string, string> = {\r\n http: \"HTTP\",\r\n socket: \"WEBSOCKET\"\r\n }\r\n\r\n const consumerType = targetQueue.consumer.type;\r\n const targetInterface = interfaceMap[consumerType];\r\n\r\n if (!targetInterface) {\r\n throw new Error(`[DispatchToNetwork] : Unsupported consumer type \"${consumerType}\" for queue: \"${queue}\"`);\r\n }\r\n\r\n for (const driver of this.drivers) {\r\n if (driver.interface === targetInterface) {\r\n await driver.broadcast(queue, payload, targetQueue.consumer.optimizePayload ?? true);\r\n }\r\n }\r\n\r\n const matched = this.drivers.filter(d => d.interface === targetInterface);\r\n\r\n if (matched.length === 0) {\r\n this.logger.error(`[DispatchToNetwork] : No \"${targetInterface}\" driver available for queue \"${queue}\" (mode: ${this.topology}, server: ${this.isServerMode})`); \r\n throw new Error(`[DispatchToNetwork] : No \"${targetInterface}\" driver available for queue \"${queue}\" (mode: ${this.topology}, server: ${this.isServerMode})`);\r\n }\r\n }\r\n}",
|
|
45
45
|
"import { PulsarUnifiedStorage } from '../storage/PulsarStorage.ts';\r\nimport { PulsarEventBus } from './PulsarEventBus.ts';\r\nimport { PulsarClock } from '../subsys/PulsarClock.ts';\r\nimport { QueueService } from '../modules/Queue.module.ts';\r\n\r\nimport { SwarmManager } from './SwarmBudgetTracker.ts';\r\nimport { Scheduler } from \"../modules/Scheduler.module.ts\";\r\nimport { TickService } from '../modules/Tick.module.ts';\r\nimport { TickController } from '../modules/TickController.module.ts';\r\nimport { PulsarRuntime } from '../types/runtime.types.ts';\r\n\r\nimport { PersistentRuntime } from '../runtimes/PersistentRuntime.ts';\r\nimport { ServerlessRuntime } from '../runtimes/ServerlessRuntime.ts';\r\nimport { IsolateRuntime } from '../runtimes/IsolateRuntime.ts';\r\n\r\nimport type { EngineQueuesConfig } from '../types/queue.types.ts';\r\nimport type { EngineConsumerConfig } from '../types/consumer.types.ts';\r\nimport type { IsolateInstance } from './Isolate.service.ts';\r\nimport type { EngineConfig } from '../types/base.types.ts';\r\nimport type { IIntegration, IntegrationConstructor, IntegrationMap } from '../types/integrations.types.ts';\r\nimport type { PulsarRuntimeCore, RuntimeDependencies } from '../shared/PulsarRuntimeCore.ts';\r\n\r\nimport { config } from './ConfigurationStore.ts';\r\nimport { UnifiedTransportManager } from '../network/UnifiedTransportManager.ts';\r\nimport { LoggerService } from '../subsys/LoggerService.ts';\r\n\r\n/**\r\n * Core abstract base class for the Pulsar engine ecosystem.\r\n * \r\n * Provides foundational lifecycle management, centralized event emitting, unified storage\r\n * initialization, queue registration\r\n*/\r\nexport abstract class PulsarCore {\r\n protected storage : PulsarUnifiedStorage;\r\n\r\n protected tickService : TickService;\r\n protected tickController: TickController;\r\n\r\n protected unifiedTransportManager : UnifiedTransportManager;\r\n protected swarmManager : SwarmManager;\r\n protected scheduler : Scheduler;\r\n protected queueService : QueueService;\r\n\r\n protected clock : PulsarClock;\r\n protected events : PulsarEventBus;\r\n\r\n protected queues : EngineQueuesConfig[] = [];\r\n protected consumers : EngineConsumerConfig[] = [];\r\n\r\n protected runtimeStrategy: PulsarRuntimeCore;\r\n\r\n public readonly logger : LoggerService;\r\n private readonly integrations = new Map<string, IIntegration>();\r\n\r\n constructor (baseConfig : EngineConfig) {\r\n config.initialize(baseConfig);\r\n\r\n this.logger = new LoggerService();\r\n\r\n if (baseConfig.integrations?.length) {\r\n this.runIntegrations(baseConfig.integrations);\r\n }\r\n\r\n for(const { consumer, ...queue } of config.raw.queues) {\r\n this.queues.push(queue);\r\n this.consumers.push(consumer);\r\n }\r\n\r\n const instanceId = config.get('instanceId');\r\n\r\n if(!instanceId) {\r\n throw new Error('[Pulsar] : instanceId is required.');\r\n }\r\n \r\n const instanceIdRegex = /^[a-zA-Z0-9_-]+$/;\r\n\r\n if (typeof instanceId !== 'string' || !instanceIdRegex.test(instanceId)) {\r\n throw new Error('[Pulsar] : Invalid instanceId format. It must contain only alphanumeric characters, hyphens, and underscores (e.g., \"string-like-this\" or \"or_this\").');\r\n }\r\n\r\n this.events = new PulsarEventBus();\r\n\r\n let maxExecutionBudgetMs = Infinity;\r\n\r\n const isV8Isolate = config.raw.runtime === PulsarRuntime.V8_ISOLATE;\r\n\r\n const isolate = config.get('isolate')!;\r\n\r\n if(isV8Isolate) {\r\n maxExecutionBudgetMs = Math.max(0, isolate.remainingTime - 5000);\r\n }\r\n\r\n this.storage = config.raw.storage;\r\n this.storage.connect();\r\n this.storage.bindInstanceId(instanceId);\r\n \r\n this.clock = new PulsarClock({\r\n maxExecutionBudgetMs,\r\n safetyBufferMs: 0,\r\n maxTrackHistory : 50,\r\n enabled : true\r\n })\r\n \r\n this.queueService = new QueueService(this.storage);\r\n this.scheduler = new Scheduler();\r\n\r\n this.runtimeStrategy = this.resolveRuntimeStrategy();\r\n\r\n if (!this.runtimeStrategy) {\r\n this.logger.error('[Pulsar] Failed to resolve a valid runtime strategy.');\r\n throw new Error('[Pulsar] Failed to resolve a valid runtime strategy.');\r\n }\r\n\r\n if(config.raw.runtime == PulsarRuntime.PERSISTENT) {\r\n this.unifiedTransportManager = new UnifiedTransportManager({\r\n ...config.raw.networkInterface,\r\n isServer : true\r\n }, this.storage, this.queueService);\r\n }\r\n else {\r\n this.unifiedTransportManager = new UnifiedTransportManager({\r\n mode : \"client\",\r\n isServer : false,\r\n port : 0,\r\n }, this.storage, this.queueService)\r\n }\r\n\r\n this.swarmManager = new SwarmManager(\r\n config.raw.swarmConfig?.globalMaxJobsPerTick ?? Infinity,\r\n config.raw.swarmConfig?.maxGlobalConcurrency ?? Infinity\r\n )\r\n \r\n this.tickService = new TickService({\r\n queue : this.queueService,\r\n storage : this.storage,\r\n swarmManager: this.swarmManager,\r\n unifiedTransportManager : this.unifiedTransportManager,\r\n events : this.events\r\n })\r\n\r\n this.tickController = new TickController({\r\n scheduler : this.scheduler,\r\n storage : this.storage,\r\n tickService : this.tickService,\r\n clock : this.clock,\r\n events : this.events,\r\n runtimeStrategy : this.runtimeStrategy\r\n })\r\n\r\n if(Number.isFinite(maxExecutionBudgetMs)) {\r\n this.logger.log(`[EngineRuntime] : isolate registred with id : [${isolate.id}]`);\r\n this.logger.log(`[Clock] : Synced execution timeout (${maxExecutionBudgetMs / 1000}s) with isolate [${isolate.id}]`);\r\n }\r\n else {\r\n this.logger.log(`[EngineRuntime] : Engine Started With No V8 Isolate (${new Date().toISOString()})`);\r\n }\r\n }\r\n\r\n private resolveRuntimeStrategy() : PulsarRuntimeCore {\r\n const deps : RuntimeDependencies = {\r\n queueService: this.queueService,\r\n clock: this.clock,\r\n queues : this.queues,\r\n storage : this.storage,\r\n isolate : this.V8Isolate,\r\n events : this.events,\r\n scheduler : this.scheduler\r\n }\r\n\r\n switch (config.get('runtime')) {\r\n case PulsarRuntime.PERSISTENT:\r\n return new PersistentRuntime(deps);\r\n case PulsarRuntime.SERVERLESS_VM:\r\n return new ServerlessRuntime(deps);\r\n case PulsarRuntime.V8_ISOLATE:\r\n return new IsolateRuntime(deps);\r\n default:\r\n throw new Error(`Unsupported Runtime`);\r\n }\r\n }\r\n\r\n protected async runIntegrations(integrations : Array<IntegrationConstructor | IIntegration>) {\r\n for (const item of integrations) {\r\n let instance : IIntegration;\r\n\r\n if (typeof item === \"function\") {\r\n instance = new item(\"ALL\");\r\n }\r\n else {\r\n instance = item;\r\n }\r\n\r\n await instance.main(this);\r\n\r\n this.integrations.set(instance.module, instance);\r\n }\r\n }\r\n\r\n public getIntegration<K extends keyof IntegrationMap>(moduleOrClass : K) : IntegrationMap[K];\r\n public getIntegration<T extends IIntegration>(moduleOrClass : new (...args : any[]) => T) : T;\r\n\r\n public getIntegration(moduleOrClass : any) : any {\r\n if (typeof moduleOrClass === \"string\") {\r\n return this.integrations.get(moduleOrClass);\r\n }\r\n\r\n for (const instance of this.integrations.values()) {\r\n if (instance instanceof moduleOrClass) {\r\n return instance;\r\n }\r\n }\r\n\r\n const name = typeof moduleOrClass === \"string\" ? moduleOrClass : moduleOrClass.name;\r\n throw new Error(`Integration \"${name}\" is not registered.`);\r\n }\r\n\r\n get runtime() : keyof typeof PulsarRuntime {\r\n return this.runtimeStrategy.type as keyof typeof PulsarRuntime;\r\n }\r\n\r\n get isV8Isolate() {\r\n return config.get('runtime') === PulsarRuntime.V8_ISOLATE\r\n }\r\n\r\n get V8Isolate() : IsolateInstance {\r\n return config.raw.isolate as IsolateInstance;\r\n }\r\n\r\n protected async exit() {\r\n await this.storage.disconnect();\r\n }\r\n}"
|
|
46
46
|
],
|
|
47
|
-
"mappings": "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",
|
|
48
|
-
"debugId": "
|
|
47
|
+
"mappings": "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",
|
|
48
|
+
"debugId": "2AF35C6D656AA50664756E2164756E21",
|
|
49
49
|
"names": []
|
|
50
50
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nightx.co/pulsar",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.17",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "index.ts",
|
|
@@ -47,7 +47,9 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"files": [
|
|
50
|
-
"dist"
|
|
50
|
+
"dist",
|
|
51
|
+
"LICENSE",
|
|
52
|
+
"README.md"
|
|
51
53
|
],
|
|
52
54
|
"scripts": {
|
|
53
55
|
"build": "bun run build.ts;",
|