@crossdelta/cloudevents 0.7.15 → 0.7.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/dist/index.cjs +46 -21
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +46 -21
- 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.17",
|
|
2192
2192
|
description: "CloudEvents toolkit for TypeScript - Zod validation, handler discovery, NATS JetStream & Core"};
|
|
2193
2193
|
|
|
2194
2194
|
// src/plugin.ts
|
|
@@ -2422,14 +2422,19 @@ function createBaseMessageProcessor(deps) {
|
|
|
2422
2422
|
}
|
|
2423
2423
|
|
|
2424
2424
|
// src/transports/nats/connection.ts
|
|
2425
|
+
init_logging();
|
|
2425
2426
|
var LONG_LIVED_DEFAULTS = {
|
|
2426
|
-
waitOnFirstConnect:
|
|
2427
|
+
waitOnFirstConnect: false,
|
|
2427
2428
|
maxReconnectAttempts: -1
|
|
2428
2429
|
};
|
|
2429
2430
|
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 CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
|
|
2437
|
+
var global = globalThis;
|
|
2433
2438
|
var buildConnectOptions = (config, mode) => {
|
|
2434
2439
|
const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
|
|
2435
2440
|
return {
|
|
@@ -2437,12 +2442,23 @@ var buildConnectOptions = (config, mode) => {
|
|
|
2437
2442
|
maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
|
|
2438
2443
|
};
|
|
2439
2444
|
};
|
|
2440
|
-
var CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
|
|
2441
2445
|
var getConnectionRegistry = () => {
|
|
2442
|
-
if (!
|
|
2443
|
-
|
|
2446
|
+
if (!global[CONNECTION_REGISTRY_KEY]) {
|
|
2447
|
+
global[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
|
|
2448
|
+
}
|
|
2449
|
+
return global[CONNECTION_REGISTRY_KEY];
|
|
2450
|
+
};
|
|
2451
|
+
var connectWithRetry = async (options, label) => {
|
|
2452
|
+
let delay = INITIAL_RETRY_DELAY_MS;
|
|
2453
|
+
while (true) {
|
|
2454
|
+
try {
|
|
2455
|
+
return await nats.connect(options);
|
|
2456
|
+
} catch (error) {
|
|
2457
|
+
logger.warn(`[${label}] NATS connect failed, retrying in ${delay}ms...`, error);
|
|
2458
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
2459
|
+
delay = Math.min(delay * 2, MAX_RETRY_DELAY_MS);
|
|
2460
|
+
}
|
|
2444
2461
|
}
|
|
2445
|
-
return globalThis[CONNECTION_REGISTRY_KEY];
|
|
2446
2462
|
};
|
|
2447
2463
|
var registerConnection = (name, connection) => {
|
|
2448
2464
|
getConnectionRegistry().set(name, connection);
|
|
@@ -2610,11 +2626,14 @@ async function consumeJetStreamEvents(options) {
|
|
|
2610
2626
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2611
2627
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2612
2628
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2613
|
-
const nc = await
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2629
|
+
const nc = await connectWithRetry(
|
|
2630
|
+
{
|
|
2631
|
+
servers,
|
|
2632
|
+
...user && pass ? { user, pass } : {},
|
|
2633
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2634
|
+
},
|
|
2635
|
+
name
|
|
2636
|
+
);
|
|
2618
2637
|
registerConnection(name, nc);
|
|
2619
2638
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2620
2639
|
const jsm = await nc.jetstreamManager();
|
|
@@ -2680,11 +2699,14 @@ async function consumeJetStreamStreams(options) {
|
|
|
2680
2699
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2681
2700
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2682
2701
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2683
|
-
const nc = await
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2702
|
+
const nc = await connectWithRetry(
|
|
2703
|
+
{
|
|
2704
|
+
servers,
|
|
2705
|
+
...user && pass ? { user, pass } : {},
|
|
2706
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2707
|
+
},
|
|
2708
|
+
name
|
|
2709
|
+
);
|
|
2688
2710
|
registerConnection(name, nc);
|
|
2689
2711
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2690
2712
|
const jsm = await nc.jetstreamManager();
|
|
@@ -2826,11 +2848,14 @@ async function consumeNatsEvents(options) {
|
|
|
2826
2848
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2827
2849
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2828
2850
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2829
|
-
const nc = await
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2851
|
+
const nc = await connectWithRetry(
|
|
2852
|
+
{
|
|
2853
|
+
servers,
|
|
2854
|
+
...user && pass ? { user, pass } : {},
|
|
2855
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2856
|
+
},
|
|
2857
|
+
name
|
|
2858
|
+
);
|
|
2834
2859
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2835
2860
|
const sub = nc.subscribe(subject, { queue: name });
|
|
2836
2861
|
logger.info(`[${name}] subscribed to subject: ${subject} (queue: ${name})`);
|
package/dist/index.d.cts
CHANGED
|
@@ -1299,7 +1299,7 @@ interface CloudEventsPfPluginOptions {
|
|
|
1299
1299
|
declare const createPfPlugin: (options?: CloudEventsPfPluginOptions) => PfPlugin;
|
|
1300
1300
|
|
|
1301
1301
|
interface NatsConnectionConfig {
|
|
1302
|
-
/** Retry the initial connection instead of failing immediately. @default
|
|
1302
|
+
/** Retry the initial connection instead of failing immediately. @default false */
|
|
1303
1303
|
waitOnFirstConnect?: boolean;
|
|
1304
1304
|
/** Maximum reconnect attempts (-1 = unlimited). @default -1 */
|
|
1305
1305
|
maxReconnectAttempts?: number;
|
package/dist/index.d.ts
CHANGED
|
@@ -1299,7 +1299,7 @@ interface CloudEventsPfPluginOptions {
|
|
|
1299
1299
|
declare const createPfPlugin: (options?: CloudEventsPfPluginOptions) => PfPlugin;
|
|
1300
1300
|
|
|
1301
1301
|
interface NatsConnectionConfig {
|
|
1302
|
-
/** Retry the initial connection instead of failing immediately. @default
|
|
1302
|
+
/** Retry the initial connection instead of failing immediately. @default false */
|
|
1303
1303
|
waitOnFirstConnect?: boolean;
|
|
1304
1304
|
/** Maximum reconnect attempts (-1 = unlimited). @default -1 */
|
|
1305
1305
|
maxReconnectAttempts?: number;
|
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.17",
|
|
2167
2167
|
description: "CloudEvents toolkit for TypeScript - Zod validation, handler discovery, NATS JetStream & Core"};
|
|
2168
2168
|
|
|
2169
2169
|
// src/plugin.ts
|
|
@@ -2397,14 +2397,19 @@ function createBaseMessageProcessor(deps) {
|
|
|
2397
2397
|
}
|
|
2398
2398
|
|
|
2399
2399
|
// src/transports/nats/connection.ts
|
|
2400
|
+
init_logging();
|
|
2400
2401
|
var LONG_LIVED_DEFAULTS = {
|
|
2401
|
-
waitOnFirstConnect:
|
|
2402
|
+
waitOnFirstConnect: false,
|
|
2402
2403
|
maxReconnectAttempts: -1
|
|
2403
2404
|
};
|
|
2404
2405
|
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 CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
|
|
2412
|
+
var global = globalThis;
|
|
2408
2413
|
var buildConnectOptions = (config, mode) => {
|
|
2409
2414
|
const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
|
|
2410
2415
|
return {
|
|
@@ -2412,12 +2417,23 @@ var buildConnectOptions = (config, mode) => {
|
|
|
2412
2417
|
maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
|
|
2413
2418
|
};
|
|
2414
2419
|
};
|
|
2415
|
-
var CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
|
|
2416
2420
|
var getConnectionRegistry = () => {
|
|
2417
|
-
if (!
|
|
2418
|
-
|
|
2421
|
+
if (!global[CONNECTION_REGISTRY_KEY]) {
|
|
2422
|
+
global[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
|
|
2423
|
+
}
|
|
2424
|
+
return global[CONNECTION_REGISTRY_KEY];
|
|
2425
|
+
};
|
|
2426
|
+
var connectWithRetry = async (options, label) => {
|
|
2427
|
+
let delay = INITIAL_RETRY_DELAY_MS;
|
|
2428
|
+
while (true) {
|
|
2429
|
+
try {
|
|
2430
|
+
return await connect(options);
|
|
2431
|
+
} catch (error) {
|
|
2432
|
+
logger.warn(`[${label}] NATS connect failed, retrying in ${delay}ms...`, error);
|
|
2433
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
2434
|
+
delay = Math.min(delay * 2, MAX_RETRY_DELAY_MS);
|
|
2435
|
+
}
|
|
2419
2436
|
}
|
|
2420
|
-
return globalThis[CONNECTION_REGISTRY_KEY];
|
|
2421
2437
|
};
|
|
2422
2438
|
var registerConnection = (name, connection) => {
|
|
2423
2439
|
getConnectionRegistry().set(name, connection);
|
|
@@ -2585,11 +2601,14 @@ async function consumeJetStreamEvents(options) {
|
|
|
2585
2601
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2586
2602
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2587
2603
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2588
|
-
const nc = await
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2604
|
+
const nc = await connectWithRetry(
|
|
2605
|
+
{
|
|
2606
|
+
servers,
|
|
2607
|
+
...user && pass ? { user, pass } : {},
|
|
2608
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2609
|
+
},
|
|
2610
|
+
name
|
|
2611
|
+
);
|
|
2593
2612
|
registerConnection(name, nc);
|
|
2594
2613
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2595
2614
|
const jsm = await nc.jetstreamManager();
|
|
@@ -2655,11 +2674,14 @@ async function consumeJetStreamStreams(options) {
|
|
|
2655
2674
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2656
2675
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2657
2676
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2658
|
-
const nc = await
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2677
|
+
const nc = await connectWithRetry(
|
|
2678
|
+
{
|
|
2679
|
+
servers,
|
|
2680
|
+
...user && pass ? { user, pass } : {},
|
|
2681
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2682
|
+
},
|
|
2683
|
+
name
|
|
2684
|
+
);
|
|
2663
2685
|
registerConnection(name, nc);
|
|
2664
2686
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2665
2687
|
const jsm = await nc.jetstreamManager();
|
|
@@ -2801,11 +2823,14 @@ async function consumeNatsEvents(options) {
|
|
|
2801
2823
|
const processedHandlers = handlerConstructors.map(processHandler).filter((h) => h !== null);
|
|
2802
2824
|
const handlerNames = processedHandlers.map((h) => h.name).join(", ");
|
|
2803
2825
|
logger.info(`[${name}] discovered ${processedHandlers.length} handler(s): ${handlerNames}`);
|
|
2804
|
-
const nc = await
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2826
|
+
const nc = await connectWithRetry(
|
|
2827
|
+
{
|
|
2828
|
+
servers,
|
|
2829
|
+
...user && pass ? { user, pass } : {},
|
|
2830
|
+
...buildConnectOptions(options.connection, "long-lived")
|
|
2831
|
+
},
|
|
2832
|
+
name
|
|
2833
|
+
);
|
|
2809
2834
|
logger.info(`[${name}] connected to NATS: ${servers}${user ? " (authenticated)" : ""}`);
|
|
2810
2835
|
const sub = nc.subscribe(subject, { queue: name });
|
|
2811
2836
|
logger.info(`[${name}] subscribed to subject: ${subject} (queue: ${name})`);
|
package/package.json
CHANGED