@crossdelta/cloudevents 0.7.16 → 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 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.16",
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,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,10 @@ 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 (!globalThis[CONNECTION_REGISTRY_KEY]) {
2443
- globalThis[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
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 nats.connect({
2614
- servers,
2615
- ...user && pass ? { user, pass } : {},
2616
- ...buildConnectOptions(options.connection, "long-lived")
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 nats.connect({
2684
- servers,
2685
- ...user && pass ? { user, pass } : {},
2686
- ...buildConnectOptions(options.connection, "long-lived")
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 nats.connect({
2830
- servers,
2831
- ...user && pass ? { user, pass } : {},
2832
- ...buildConnectOptions(options.connection, "long-lived")
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.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.16",
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,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,10 @@ 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 (!globalThis[CONNECTION_REGISTRY_KEY]) {
2418
- globalThis[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
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 connect({
2589
- servers,
2590
- ...user && pass ? { user, pass } : {},
2591
- ...buildConnectOptions(options.connection, "long-lived")
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 connect({
2659
- servers,
2660
- ...user && pass ? { user, pass } : {},
2661
- ...buildConnectOptions(options.connection, "long-lived")
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 connect({
2805
- servers,
2806
- ...user && pass ? { user, pass } : {},
2807
- ...buildConnectOptions(options.connection, "long-lived")
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossdelta/cloudevents",
3
- "version": "0.7.16",
3
+ "version": "0.7.17",
4
4
  "description": "CloudEvents toolkit for TypeScript - Zod validation, handler discovery, NATS JetStream & Core",
5
5
  "author": "crossdelta",
6
6
  "license": "MIT",