@crossdelta/cloudevents 0.7.16 → 0.7.18
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/dist/index.cjs +49 -20
- package/dist/index.js +49 -20
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2188,7 +2188,7 @@ function cloudEvents(options = {}) {
|
|
|
2188
2188
|
// package.json
|
|
2189
2189
|
var package_default = {
|
|
2190
2190
|
name: "@crossdelta/cloudevents",
|
|
2191
|
-
version: "0.7.
|
|
2191
|
+
version: "0.7.18",
|
|
2192
2192
|
description: "CloudEvents toolkit for TypeScript - Zod validation, handler discovery, NATS JetStream & Core"};
|
|
2193
2193
|
|
|
2194
2194
|
// src/plugin.ts
|
|
@@ -2422,6 +2422,7 @@ function createBaseMessageProcessor(deps) {
|
|
|
2422
2422
|
}
|
|
2423
2423
|
|
|
2424
2424
|
// src/transports/nats/connection.ts
|
|
2425
|
+
init_logging();
|
|
2425
2426
|
var LONG_LIVED_DEFAULTS = {
|
|
2426
2427
|
waitOnFirstConnect: false,
|
|
2427
2428
|
maxReconnectAttempts: -1
|
|
@@ -2430,6 +2431,11 @@ var SHORT_LIVED_DEFAULTS = {
|
|
|
2430
2431
|
waitOnFirstConnect: true,
|
|
2431
2432
|
maxReconnectAttempts: 10
|
|
2432
2433
|
};
|
|
2434
|
+
var INITIAL_RETRY_DELAY_MS = 1e3;
|
|
2435
|
+
var MAX_RETRY_DELAY_MS = 3e4;
|
|
2436
|
+
var ESCALATE_AFTER_MS = 5 * 60 * 1e3;
|
|
2437
|
+
var CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
|
|
2438
|
+
var global = globalThis;
|
|
2433
2439
|
var buildConnectOptions = (config, mode) => {
|
|
2434
2440
|
const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
|
|
2435
2441
|
return {
|
|
@@ -2437,12 +2443,26 @@ var buildConnectOptions = (config, mode) => {
|
|
|
2437
2443
|
maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
|
|
2438
2444
|
};
|
|
2439
2445
|
};
|
|
2440
|
-
var CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
|
|
2441
2446
|
var getConnectionRegistry = () => {
|
|
2442
|
-
if (!
|
|
2443
|
-
|
|
2447
|
+
if (!global[CONNECTION_REGISTRY_KEY]) {
|
|
2448
|
+
global[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
|
|
2449
|
+
}
|
|
2450
|
+
return global[CONNECTION_REGISTRY_KEY];
|
|
2451
|
+
};
|
|
2452
|
+
var connectWithRetry = async (options, label) => {
|
|
2453
|
+
let delay = INITIAL_RETRY_DELAY_MS;
|
|
2454
|
+
const startedAt = Date.now();
|
|
2455
|
+
while (true) {
|
|
2456
|
+
try {
|
|
2457
|
+
return await nats.connect(options);
|
|
2458
|
+
} catch (error) {
|
|
2459
|
+
const elapsed = Date.now() - startedAt;
|
|
2460
|
+
const logLevel = elapsed >= ESCALATE_AFTER_MS ? "error" : "info";
|
|
2461
|
+
logger[logLevel](`[${label}] NATS connect failed, retrying in ${delay}ms...`, error);
|
|
2462
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
2463
|
+
delay = Math.min(delay * 2, MAX_RETRY_DELAY_MS);
|
|
2464
|
+
}
|
|
2444
2465
|
}
|
|
2445
|
-
return globalThis[CONNECTION_REGISTRY_KEY];
|
|
2446
2466
|
};
|
|
2447
2467
|
var registerConnection = (name, connection) => {
|
|
2448
2468
|
getConnectionRegistry().set(name, connection);
|
|
@@ -2610,11 +2630,14 @@ async function consumeJetStreamEvents(options) {
|
|
|
2610
2630
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2611
2631
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2612
2632
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2613
|
-
const nc = await
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2633
|
+
const nc = await connectWithRetry(
|
|
2634
|
+
{
|
|
2635
|
+
servers,
|
|
2636
|
+
...user && pass ? { user, pass } : {},
|
|
2637
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2638
|
+
},
|
|
2639
|
+
name
|
|
2640
|
+
);
|
|
2618
2641
|
registerConnection(name, nc);
|
|
2619
2642
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2620
2643
|
const jsm = await nc.jetstreamManager();
|
|
@@ -2680,11 +2703,14 @@ async function consumeJetStreamStreams(options) {
|
|
|
2680
2703
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2681
2704
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2682
2705
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2683
|
-
const nc = await
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2706
|
+
const nc = await connectWithRetry(
|
|
2707
|
+
{
|
|
2708
|
+
servers,
|
|
2709
|
+
...user && pass ? { user, pass } : {},
|
|
2710
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2711
|
+
},
|
|
2712
|
+
name
|
|
2713
|
+
);
|
|
2688
2714
|
registerConnection(name, nc);
|
|
2689
2715
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2690
2716
|
const jsm = await nc.jetstreamManager();
|
|
@@ -2826,11 +2852,14 @@ async function consumeNatsEvents(options) {
|
|
|
2826
2852
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2827
2853
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2828
2854
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2829
|
-
const nc = await
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2855
|
+
const nc = await connectWithRetry(
|
|
2856
|
+
{
|
|
2857
|
+
servers,
|
|
2858
|
+
...user && pass ? { user, pass } : {},
|
|
2859
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2860
|
+
},
|
|
2861
|
+
name
|
|
2862
|
+
);
|
|
2834
2863
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2835
2864
|
const sub = nc.subscribe(subject, { queue: name });
|
|
2836
2865
|
logger.info(`[${name}] subscribed to subject: ${subject} (queue: ${name})`);
|
package/dist/index.js
CHANGED
|
@@ -2163,7 +2163,7 @@ function cloudEvents(options = {}) {
|
|
|
2163
2163
|
// package.json
|
|
2164
2164
|
var package_default = {
|
|
2165
2165
|
name: "@crossdelta/cloudevents",
|
|
2166
|
-
version: "0.7.
|
|
2166
|
+
version: "0.7.18",
|
|
2167
2167
|
description: "CloudEvents toolkit for TypeScript - Zod validation, handler discovery, NATS JetStream & Core"};
|
|
2168
2168
|
|
|
2169
2169
|
// src/plugin.ts
|
|
@@ -2397,6 +2397,7 @@ function createBaseMessageProcessor(deps) {
|
|
|
2397
2397
|
}
|
|
2398
2398
|
|
|
2399
2399
|
// src/transports/nats/connection.ts
|
|
2400
|
+
init_logging();
|
|
2400
2401
|
var LONG_LIVED_DEFAULTS = {
|
|
2401
2402
|
waitOnFirstConnect: false,
|
|
2402
2403
|
maxReconnectAttempts: -1
|
|
@@ -2405,6 +2406,11 @@ var SHORT_LIVED_DEFAULTS = {
|
|
|
2405
2406
|
waitOnFirstConnect: true,
|
|
2406
2407
|
maxReconnectAttempts: 10
|
|
2407
2408
|
};
|
|
2409
|
+
var INITIAL_RETRY_DELAY_MS = 1e3;
|
|
2410
|
+
var MAX_RETRY_DELAY_MS = 3e4;
|
|
2411
|
+
var ESCALATE_AFTER_MS = 5 * 60 * 1e3;
|
|
2412
|
+
var CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
|
|
2413
|
+
var global = globalThis;
|
|
2408
2414
|
var buildConnectOptions = (config, mode) => {
|
|
2409
2415
|
const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
|
|
2410
2416
|
return {
|
|
@@ -2412,12 +2418,26 @@ var buildConnectOptions = (config, mode) => {
|
|
|
2412
2418
|
maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
|
|
2413
2419
|
};
|
|
2414
2420
|
};
|
|
2415
|
-
var CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
|
|
2416
2421
|
var getConnectionRegistry = () => {
|
|
2417
|
-
if (!
|
|
2418
|
-
|
|
2422
|
+
if (!global[CONNECTION_REGISTRY_KEY]) {
|
|
2423
|
+
global[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
|
|
2424
|
+
}
|
|
2425
|
+
return global[CONNECTION_REGISTRY_KEY];
|
|
2426
|
+
};
|
|
2427
|
+
var connectWithRetry = async (options, label) => {
|
|
2428
|
+
let delay = INITIAL_RETRY_DELAY_MS;
|
|
2429
|
+
const startedAt = Date.now();
|
|
2430
|
+
while (true) {
|
|
2431
|
+
try {
|
|
2432
|
+
return await connect(options);
|
|
2433
|
+
} catch (error) {
|
|
2434
|
+
const elapsed = Date.now() - startedAt;
|
|
2435
|
+
const logLevel = elapsed >= ESCALATE_AFTER_MS ? "error" : "info";
|
|
2436
|
+
logger[logLevel](`[${label}] NATS connect failed, retrying in ${delay}ms...`, error);
|
|
2437
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
2438
|
+
delay = Math.min(delay * 2, MAX_RETRY_DELAY_MS);
|
|
2439
|
+
}
|
|
2419
2440
|
}
|
|
2420
|
-
return globalThis[CONNECTION_REGISTRY_KEY];
|
|
2421
2441
|
};
|
|
2422
2442
|
var registerConnection = (name, connection) => {
|
|
2423
2443
|
getConnectionRegistry().set(name, connection);
|
|
@@ -2585,11 +2605,14 @@ async function consumeJetStreamEvents(options) {
|
|
|
2585
2605
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2586
2606
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2587
2607
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2588
|
-
const nc = await
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2608
|
+
const nc = await connectWithRetry(
|
|
2609
|
+
{
|
|
2610
|
+
servers,
|
|
2611
|
+
...user && pass ? { user, pass } : {},
|
|
2612
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2613
|
+
},
|
|
2614
|
+
name
|
|
2615
|
+
);
|
|
2593
2616
|
registerConnection(name, nc);
|
|
2594
2617
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2595
2618
|
const jsm = await nc.jetstreamManager();
|
|
@@ -2655,11 +2678,14 @@ async function consumeJetStreamStreams(options) {
|
|
|
2655
2678
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2656
2679
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2657
2680
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2658
|
-
const nc = await
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2681
|
+
const nc = await connectWithRetry(
|
|
2682
|
+
{
|
|
2683
|
+
servers,
|
|
2684
|
+
...user && pass ? { user, pass } : {},
|
|
2685
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2686
|
+
},
|
|
2687
|
+
name
|
|
2688
|
+
);
|
|
2663
2689
|
registerConnection(name, nc);
|
|
2664
2690
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2665
2691
|
const jsm = await nc.jetstreamManager();
|
|
@@ -2801,11 +2827,14 @@ async function consumeNatsEvents(options) {
|
|
|
2801
2827
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2802
2828
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2803
2829
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2804
|
-
const nc = await
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2830
|
+
const nc = await connectWithRetry(
|
|
2831
|
+
{
|
|
2832
|
+
servers,
|
|
2833
|
+
...user && pass ? { user, pass } : {},
|
|
2834
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2835
|
+
},
|
|
2836
|
+
name
|
|
2837
|
+
);
|
|
2809
2838
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2810
2839
|
const sub = nc.subscribe(subject, { queue: name });
|
|
2811
2840
|
logger.info(`[${name}] subscribed to subject: ${subject} (queue: ${name})`);
|
package/package.json
CHANGED