@crossdelta/cloudevents 0.7.14 → 0.7.15

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/bin/cli.js CHANGED
@@ -733,28 +733,6 @@ var init_domain = __esm({
733
733
  }
734
734
  });
735
735
 
736
- // src/transports/nats/connection.ts
737
- var LONG_LIVED_DEFAULTS, SHORT_LIVED_DEFAULTS, buildConnectOptions;
738
- var init_connection = __esm({
739
- "src/transports/nats/connection.ts"() {
740
- LONG_LIVED_DEFAULTS = {
741
- waitOnFirstConnect: true,
742
- maxReconnectAttempts: -1
743
- };
744
- SHORT_LIVED_DEFAULTS = {
745
- waitOnFirstConnect: true,
746
- maxReconnectAttempts: 10
747
- };
748
- buildConnectOptions = (config, mode) => {
749
- const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
750
- return {
751
- waitOnFirstConnect: config?.waitOnFirstConnect ?? defaults.waitOnFirstConnect,
752
- maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
753
- };
754
- };
755
- }
756
- });
757
-
758
736
  // src/publishing/nats.publisher.ts
759
737
  var nats_publisher_exports = {};
760
738
  __export(nats_publisher_exports, {
@@ -770,12 +748,11 @@ __export(nats_publisher_exports, {
770
748
  publishNatsRawEvent: () => publishNatsRawEvent,
771
749
  request: () => request
772
750
  });
773
- var sc, natsConnectionPromise, deriveSubjectFromEventType, connectionConfig, configureNatsPublisher, getNatsConnection, closeConnection, connectNats, isNatsConnected, __resetNatsPublisher, deriveSubjectFromType, deriveStreamFromType, publishNatsRawEvent, publishNatsEvent, publish, DEFAULT_REQUEST_TIMEOUT, request;
751
+ var sc, natsConnectionPromise, deriveSubjectFromEventType, connectionConfig, configureNatsPublisher, natsConnected, getNatsConnection, closeConnection, connectNats, isNatsConnected, __resetNatsPublisher, deriveSubjectFromType, deriveStreamFromType, publishNatsRawEvent, publishNatsEvent, publish, DEFAULT_REQUEST_TIMEOUT, request;
774
752
  var init_nats_publisher = __esm({
775
753
  "src/publishing/nats.publisher.ts"() {
776
754
  init_domain();
777
755
  init_infrastructure();
778
- init_connection();
779
756
  init_utils();
780
757
  sc = StringCodec();
781
758
  natsConnectionPromise = null;
@@ -790,17 +767,21 @@ var init_nats_publisher = __esm({
790
767
  configureNatsPublisher = (config) => {
791
768
  connectionConfig = config;
792
769
  };
770
+ natsConnected = false;
793
771
  getNatsConnection = async (servers) => {
794
772
  if (!natsConnectionPromise) {
795
773
  const url = servers ?? process.env.NATS_URL ?? "nats://localhost:4222";
796
774
  natsConnectionPromise = connect({
797
775
  servers: url,
798
- ...buildConnectOptions(connectionConfig, "long-lived")
776
+ waitOnFirstConnect: connectionConfig?.waitOnFirstConnect ?? true,
777
+ maxReconnectAttempts: connectionConfig?.maxReconnectAttempts ?? -1
799
778
  }).then((connection) => {
779
+ natsConnected = true;
800
780
  logger.debug(`[NATS] connected to ${url}`);
801
781
  return connection;
802
782
  }).catch((error) => {
803
783
  logger.error("[NATS] connection error", error);
784
+ natsConnected = false;
804
785
  natsConnectionPromise = null;
805
786
  throw error;
806
787
  });
@@ -821,20 +802,14 @@ var init_nats_publisher = __esm({
821
802
  }
822
803
  }
823
804
  };
824
- connectNats = async () => {
825
- await getNatsConnection();
826
- };
827
- isNatsConnected = async () => {
828
- if (!natsConnectionPromise) return false;
829
- try {
830
- const nc = await natsConnectionPromise;
831
- return !nc.isClosed() && !nc.isDraining();
832
- } catch {
833
- return false;
834
- }
805
+ connectNats = () => {
806
+ getNatsConnection().catch(() => {
807
+ });
835
808
  };
809
+ isNatsConnected = () => natsConnected;
836
810
  __resetNatsPublisher = async () => {
837
811
  await closeConnection();
812
+ natsConnected = false;
838
813
  connectionConfig = void 0;
839
814
  };
840
815
  deriveSubjectFromType = (eventType, config) => {
package/dist/index.cjs CHANGED
@@ -1367,49 +1367,6 @@ var init_domain = __esm({
1367
1367
  }
1368
1368
  });
1369
1369
 
1370
- // src/transports/nats/connection.ts
1371
- var LONG_LIVED_DEFAULTS, SHORT_LIVED_DEFAULTS, buildConnectOptions, CONNECTION_REGISTRY_KEY, getConnectionRegistry, registerConnection, unregisterConnection; exports.isConsumerConnected = void 0;
1372
- var init_connection = __esm({
1373
- "src/transports/nats/connection.ts"() {
1374
- LONG_LIVED_DEFAULTS = {
1375
- waitOnFirstConnect: true,
1376
- maxReconnectAttempts: -1
1377
- };
1378
- SHORT_LIVED_DEFAULTS = {
1379
- waitOnFirstConnect: true,
1380
- maxReconnectAttempts: 10
1381
- };
1382
- buildConnectOptions = (config, mode) => {
1383
- const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
1384
- return {
1385
- waitOnFirstConnect: config?.waitOnFirstConnect ?? defaults.waitOnFirstConnect,
1386
- maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
1387
- };
1388
- };
1389
- CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
1390
- getConnectionRegistry = () => {
1391
- if (!globalThis[CONNECTION_REGISTRY_KEY]) {
1392
- globalThis[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
1393
- }
1394
- return globalThis[CONNECTION_REGISTRY_KEY];
1395
- };
1396
- registerConnection = (name, connection) => {
1397
- getConnectionRegistry().set(name, connection);
1398
- };
1399
- unregisterConnection = (name) => {
1400
- getConnectionRegistry().delete(name);
1401
- };
1402
- exports.isConsumerConnected = () => {
1403
- const registry = getConnectionRegistry();
1404
- if (registry.size === 0) return false;
1405
- for (const connection of registry.values()) {
1406
- if (!connection.isClosed() && !connection.isDraining()) return true;
1407
- }
1408
- return false;
1409
- };
1410
- }
1411
- });
1412
-
1413
1370
  // src/publishing/nats.publisher.ts
1414
1371
  var nats_publisher_exports = {};
1415
1372
  __export(nats_publisher_exports, {
@@ -1425,12 +1382,11 @@ __export(nats_publisher_exports, {
1425
1382
  publishNatsRawEvent: () => exports.publishNatsRawEvent,
1426
1383
  request: () => exports.request
1427
1384
  });
1428
- var sc, natsConnectionPromise, deriveSubjectFromEventType, connectionConfig; exports.configureNatsPublisher = void 0; var getNatsConnection; exports.closeConnection = void 0; exports.connectNats = void 0; exports.isNatsConnected = void 0; exports.__resetNatsPublisher = void 0; exports.deriveSubjectFromType = void 0; exports.deriveStreamFromType = void 0; exports.publishNatsRawEvent = void 0; exports.publishNatsEvent = void 0; exports.publish = void 0; var DEFAULT_REQUEST_TIMEOUT; exports.request = void 0;
1385
+ var sc, natsConnectionPromise, deriveSubjectFromEventType, connectionConfig; exports.configureNatsPublisher = void 0; var natsConnected, getNatsConnection; exports.closeConnection = void 0; exports.connectNats = void 0; exports.isNatsConnected = void 0; exports.__resetNatsPublisher = void 0; exports.deriveSubjectFromType = void 0; exports.deriveStreamFromType = void 0; exports.publishNatsRawEvent = void 0; exports.publishNatsEvent = void 0; exports.publish = void 0; var DEFAULT_REQUEST_TIMEOUT; exports.request = void 0;
1429
1386
  var init_nats_publisher = __esm({
1430
1387
  "src/publishing/nats.publisher.ts"() {
1431
1388
  init_domain();
1432
1389
  init_infrastructure();
1433
- init_connection();
1434
1390
  init_utils();
1435
1391
  sc = nats.StringCodec();
1436
1392
  natsConnectionPromise = null;
@@ -1445,17 +1401,21 @@ var init_nats_publisher = __esm({
1445
1401
  exports.configureNatsPublisher = (config) => {
1446
1402
  connectionConfig = config;
1447
1403
  };
1404
+ natsConnected = false;
1448
1405
  getNatsConnection = async (servers) => {
1449
1406
  if (!natsConnectionPromise) {
1450
1407
  const url = servers ?? process.env.NATS_URL ?? "nats://localhost:4222";
1451
1408
  natsConnectionPromise = nats.connect({
1452
1409
  servers: url,
1453
- ...buildConnectOptions(connectionConfig, "long-lived")
1410
+ waitOnFirstConnect: connectionConfig?.waitOnFirstConnect ?? true,
1411
+ maxReconnectAttempts: connectionConfig?.maxReconnectAttempts ?? -1
1454
1412
  }).then((connection) => {
1413
+ natsConnected = true;
1455
1414
  logger.debug(`[NATS] connected to ${url}`);
1456
1415
  return connection;
1457
1416
  }).catch((error) => {
1458
1417
  logger.error("[NATS] connection error", error);
1418
+ natsConnected = false;
1459
1419
  natsConnectionPromise = null;
1460
1420
  throw error;
1461
1421
  });
@@ -1476,20 +1436,14 @@ var init_nats_publisher = __esm({
1476
1436
  }
1477
1437
  }
1478
1438
  };
1479
- exports.connectNats = async () => {
1480
- await getNatsConnection();
1481
- };
1482
- exports.isNatsConnected = async () => {
1483
- if (!natsConnectionPromise) return false;
1484
- try {
1485
- const nc = await natsConnectionPromise;
1486
- return !nc.isClosed() && !nc.isDraining();
1487
- } catch {
1488
- return false;
1489
- }
1439
+ exports.connectNats = () => {
1440
+ getNatsConnection().catch(() => {
1441
+ });
1490
1442
  };
1443
+ exports.isNatsConnected = () => natsConnected;
1491
1444
  exports.__resetNatsPublisher = async () => {
1492
1445
  await exports.closeConnection();
1446
+ natsConnected = false;
1493
1447
  connectionConfig = void 0;
1494
1448
  };
1495
1449
  exports.deriveSubjectFromType = (eventType, config) => {
@@ -2234,7 +2188,7 @@ function cloudEvents(options = {}) {
2234
2188
  // package.json
2235
2189
  var package_default = {
2236
2190
  name: "@crossdelta/cloudevents",
2237
- version: "0.7.14",
2191
+ version: "0.7.15",
2238
2192
  description: "CloudEvents toolkit for TypeScript - Zod validation, handler discovery, NATS JetStream & Core"};
2239
2193
 
2240
2194
  // src/plugin.ts
@@ -2467,13 +2421,47 @@ function createBaseMessageProcessor(deps) {
2467
2421
  };
2468
2422
  }
2469
2423
 
2470
- // src/transports/nats/index.ts
2471
- init_connection();
2424
+ // src/transports/nats/connection.ts
2425
+ var LONG_LIVED_DEFAULTS = {
2426
+ waitOnFirstConnect: true,
2427
+ maxReconnectAttempts: -1
2428
+ };
2429
+ var SHORT_LIVED_DEFAULTS = {
2430
+ waitOnFirstConnect: true,
2431
+ maxReconnectAttempts: 10
2432
+ };
2433
+ var buildConnectOptions = (config, mode) => {
2434
+ const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
2435
+ return {
2436
+ waitOnFirstConnect: config?.waitOnFirstConnect ?? defaults.waitOnFirstConnect,
2437
+ maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
2438
+ };
2439
+ };
2440
+ var CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
2441
+ var getConnectionRegistry = () => {
2442
+ if (!globalThis[CONNECTION_REGISTRY_KEY]) {
2443
+ globalThis[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
2444
+ }
2445
+ return globalThis[CONNECTION_REGISTRY_KEY];
2446
+ };
2447
+ var registerConnection = (name, connection) => {
2448
+ getConnectionRegistry().set(name, connection);
2449
+ };
2450
+ var unregisterConnection = (name) => {
2451
+ getConnectionRegistry().delete(name);
2452
+ };
2453
+ var isConsumerConnected = () => {
2454
+ const registry = getConnectionRegistry();
2455
+ if (registry.size === 0) return false;
2456
+ for (const connection of registry.values()) {
2457
+ if (!connection.isClosed() && !connection.isDraining()) return true;
2458
+ }
2459
+ return false;
2460
+ };
2472
2461
 
2473
2462
  // src/transports/nats/jetstream-consumer.ts
2474
2463
  init_domain();
2475
2464
  init_logging();
2476
- init_connection();
2477
2465
 
2478
2466
  // src/transports/nats/jetstream-message-processor.ts
2479
2467
  var createJetStreamMessageProcessor = (deps) => {
@@ -2765,7 +2753,6 @@ var consumeJetStreams = consumeJetStreamStreams;
2765
2753
  // src/transports/nats/nats-consumer.ts
2766
2754
  init_domain();
2767
2755
  init_logging();
2768
- init_connection();
2769
2756
  var sc3 = nats.StringCodec();
2770
2757
  var isRequestMessage = (msg) => Boolean(msg.reply);
2771
2758
  var sendReply = (msg, payload) => {
@@ -2890,6 +2877,7 @@ exports.ensureJetStreams = ensureJetStreams;
2890
2877
  exports.eventSchema = eventSchema;
2891
2878
  exports.getDefaultIdempotencyStore = getDefaultIdempotencyStore;
2892
2879
  exports.handleEvent = handleEvent;
2880
+ exports.isConsumerConnected = isConsumerConnected;
2893
2881
  exports.listEvents = listEvents;
2894
2882
  exports.parseEventFromContext = parseEventFromContext;
2895
2883
  exports.publishEvent = publishEvent;
package/dist/index.d.cts CHANGED
@@ -1336,14 +1336,16 @@ declare const configureNatsPublisher: (config: NatsConnectionConfig) => void;
1336
1336
  */
1337
1337
  declare const closeConnection: () => Promise<void>;
1338
1338
  /**
1339
- * Eagerly establishes the NATS connection. Call this on application startup
1340
- * so that `isNatsConnected()` reflects real connectivity from the first probe.
1339
+ * Starts the NATS connection in the background (fire-and-forget).
1340
+ * Does NOT block nats.js retries internally via `waitOnFirstConnect: true`.
1341
+ * Call on startup so `isNatsConnected()` reflects connectivity once established.
1341
1342
  */
1342
- declare const connectNats: () => Promise<void>;
1343
+ declare const connectNats: () => void;
1343
1344
  /**
1344
1345
  * Returns true if a NATS connection is currently established and healthy.
1346
+ * Non-blocking — checks a flag set when `connect()` resolves.
1345
1347
  */
1346
- declare const isNatsConnected: () => Promise<boolean>;
1348
+ declare const isNatsConnected: () => boolean;
1347
1349
  /**
1348
1350
  * Reset publisher state (for testing only)
1349
1351
  * @internal
package/dist/index.d.ts CHANGED
@@ -1336,14 +1336,16 @@ declare const configureNatsPublisher: (config: NatsConnectionConfig) => void;
1336
1336
  */
1337
1337
  declare const closeConnection: () => Promise<void>;
1338
1338
  /**
1339
- * Eagerly establishes the NATS connection. Call this on application startup
1340
- * so that `isNatsConnected()` reflects real connectivity from the first probe.
1339
+ * Starts the NATS connection in the background (fire-and-forget).
1340
+ * Does NOT block nats.js retries internally via `waitOnFirstConnect: true`.
1341
+ * Call on startup so `isNatsConnected()` reflects connectivity once established.
1341
1342
  */
1342
- declare const connectNats: () => Promise<void>;
1343
+ declare const connectNats: () => void;
1343
1344
  /**
1344
1345
  * Returns true if a NATS connection is currently established and healthy.
1346
+ * Non-blocking — checks a flag set when `connect()` resolves.
1345
1347
  */
1346
- declare const isNatsConnected: () => Promise<boolean>;
1348
+ declare const isNatsConnected: () => boolean;
1347
1349
  /**
1348
1350
  * Reset publisher state (for testing only)
1349
1351
  * @internal
package/dist/index.js CHANGED
@@ -1342,49 +1342,6 @@ var init_domain = __esm({
1342
1342
  }
1343
1343
  });
1344
1344
 
1345
- // src/transports/nats/connection.ts
1346
- var LONG_LIVED_DEFAULTS, SHORT_LIVED_DEFAULTS, buildConnectOptions, CONNECTION_REGISTRY_KEY, getConnectionRegistry, registerConnection, unregisterConnection, isConsumerConnected;
1347
- var init_connection = __esm({
1348
- "src/transports/nats/connection.ts"() {
1349
- LONG_LIVED_DEFAULTS = {
1350
- waitOnFirstConnect: true,
1351
- maxReconnectAttempts: -1
1352
- };
1353
- SHORT_LIVED_DEFAULTS = {
1354
- waitOnFirstConnect: true,
1355
- maxReconnectAttempts: 10
1356
- };
1357
- buildConnectOptions = (config, mode) => {
1358
- const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
1359
- return {
1360
- waitOnFirstConnect: config?.waitOnFirstConnect ?? defaults.waitOnFirstConnect,
1361
- maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
1362
- };
1363
- };
1364
- CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
1365
- getConnectionRegistry = () => {
1366
- if (!globalThis[CONNECTION_REGISTRY_KEY]) {
1367
- globalThis[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
1368
- }
1369
- return globalThis[CONNECTION_REGISTRY_KEY];
1370
- };
1371
- registerConnection = (name, connection) => {
1372
- getConnectionRegistry().set(name, connection);
1373
- };
1374
- unregisterConnection = (name) => {
1375
- getConnectionRegistry().delete(name);
1376
- };
1377
- isConsumerConnected = () => {
1378
- const registry = getConnectionRegistry();
1379
- if (registry.size === 0) return false;
1380
- for (const connection of registry.values()) {
1381
- if (!connection.isClosed() && !connection.isDraining()) return true;
1382
- }
1383
- return false;
1384
- };
1385
- }
1386
- });
1387
-
1388
1345
  // src/publishing/nats.publisher.ts
1389
1346
  var nats_publisher_exports = {};
1390
1347
  __export(nats_publisher_exports, {
@@ -1400,12 +1357,11 @@ __export(nats_publisher_exports, {
1400
1357
  publishNatsRawEvent: () => publishNatsRawEvent,
1401
1358
  request: () => request
1402
1359
  });
1403
- var sc, natsConnectionPromise, deriveSubjectFromEventType, connectionConfig, configureNatsPublisher, getNatsConnection, closeConnection, connectNats, isNatsConnected, __resetNatsPublisher, deriveSubjectFromType, deriveStreamFromType, publishNatsRawEvent, publishNatsEvent, publish, DEFAULT_REQUEST_TIMEOUT, request;
1360
+ var sc, natsConnectionPromise, deriveSubjectFromEventType, connectionConfig, configureNatsPublisher, natsConnected, getNatsConnection, closeConnection, connectNats, isNatsConnected, __resetNatsPublisher, deriveSubjectFromType, deriveStreamFromType, publishNatsRawEvent, publishNatsEvent, publish, DEFAULT_REQUEST_TIMEOUT, request;
1404
1361
  var init_nats_publisher = __esm({
1405
1362
  "src/publishing/nats.publisher.ts"() {
1406
1363
  init_domain();
1407
1364
  init_infrastructure();
1408
- init_connection();
1409
1365
  init_utils();
1410
1366
  sc = StringCodec();
1411
1367
  natsConnectionPromise = null;
@@ -1420,17 +1376,21 @@ var init_nats_publisher = __esm({
1420
1376
  configureNatsPublisher = (config) => {
1421
1377
  connectionConfig = config;
1422
1378
  };
1379
+ natsConnected = false;
1423
1380
  getNatsConnection = async (servers) => {
1424
1381
  if (!natsConnectionPromise) {
1425
1382
  const url = servers ?? process.env.NATS_URL ?? "nats://localhost:4222";
1426
1383
  natsConnectionPromise = connect({
1427
1384
  servers: url,
1428
- ...buildConnectOptions(connectionConfig, "long-lived")
1385
+ waitOnFirstConnect: connectionConfig?.waitOnFirstConnect ?? true,
1386
+ maxReconnectAttempts: connectionConfig?.maxReconnectAttempts ?? -1
1429
1387
  }).then((connection) => {
1388
+ natsConnected = true;
1430
1389
  logger.debug(`[NATS] connected to ${url}`);
1431
1390
  return connection;
1432
1391
  }).catch((error) => {
1433
1392
  logger.error("[NATS] connection error", error);
1393
+ natsConnected = false;
1434
1394
  natsConnectionPromise = null;
1435
1395
  throw error;
1436
1396
  });
@@ -1451,20 +1411,14 @@ var init_nats_publisher = __esm({
1451
1411
  }
1452
1412
  }
1453
1413
  };
1454
- connectNats = async () => {
1455
- await getNatsConnection();
1456
- };
1457
- isNatsConnected = async () => {
1458
- if (!natsConnectionPromise) return false;
1459
- try {
1460
- const nc = await natsConnectionPromise;
1461
- return !nc.isClosed() && !nc.isDraining();
1462
- } catch {
1463
- return false;
1464
- }
1414
+ connectNats = () => {
1415
+ getNatsConnection().catch(() => {
1416
+ });
1465
1417
  };
1418
+ isNatsConnected = () => natsConnected;
1466
1419
  __resetNatsPublisher = async () => {
1467
1420
  await closeConnection();
1421
+ natsConnected = false;
1468
1422
  connectionConfig = void 0;
1469
1423
  };
1470
1424
  deriveSubjectFromType = (eventType, config) => {
@@ -2209,7 +2163,7 @@ function cloudEvents(options = {}) {
2209
2163
  // package.json
2210
2164
  var package_default = {
2211
2165
  name: "@crossdelta/cloudevents",
2212
- version: "0.7.14",
2166
+ version: "0.7.15",
2213
2167
  description: "CloudEvents toolkit for TypeScript - Zod validation, handler discovery, NATS JetStream & Core"};
2214
2168
 
2215
2169
  // src/plugin.ts
@@ -2442,13 +2396,47 @@ function createBaseMessageProcessor(deps) {
2442
2396
  };
2443
2397
  }
2444
2398
 
2445
- // src/transports/nats/index.ts
2446
- init_connection();
2399
+ // src/transports/nats/connection.ts
2400
+ var LONG_LIVED_DEFAULTS = {
2401
+ waitOnFirstConnect: true,
2402
+ maxReconnectAttempts: -1
2403
+ };
2404
+ var SHORT_LIVED_DEFAULTS = {
2405
+ waitOnFirstConnect: true,
2406
+ maxReconnectAttempts: 10
2407
+ };
2408
+ var buildConnectOptions = (config, mode) => {
2409
+ const defaults = mode === "long-lived" ? LONG_LIVED_DEFAULTS : SHORT_LIVED_DEFAULTS;
2410
+ return {
2411
+ waitOnFirstConnect: config?.waitOnFirstConnect ?? defaults.waitOnFirstConnect,
2412
+ maxReconnectAttempts: config?.maxReconnectAttempts ?? defaults.maxReconnectAttempts
2413
+ };
2414
+ };
2415
+ var CONNECTION_REGISTRY_KEY = "__crossdelta_nats_connections__";
2416
+ var getConnectionRegistry = () => {
2417
+ if (!globalThis[CONNECTION_REGISTRY_KEY]) {
2418
+ globalThis[CONNECTION_REGISTRY_KEY] = /* @__PURE__ */ new Map();
2419
+ }
2420
+ return globalThis[CONNECTION_REGISTRY_KEY];
2421
+ };
2422
+ var registerConnection = (name, connection) => {
2423
+ getConnectionRegistry().set(name, connection);
2424
+ };
2425
+ var unregisterConnection = (name) => {
2426
+ getConnectionRegistry().delete(name);
2427
+ };
2428
+ var isConsumerConnected = () => {
2429
+ const registry = getConnectionRegistry();
2430
+ if (registry.size === 0) return false;
2431
+ for (const connection of registry.values()) {
2432
+ if (!connection.isClosed() && !connection.isDraining()) return true;
2433
+ }
2434
+ return false;
2435
+ };
2447
2436
 
2448
2437
  // src/transports/nats/jetstream-consumer.ts
2449
2438
  init_domain();
2450
2439
  init_logging();
2451
- init_connection();
2452
2440
 
2453
2441
  // src/transports/nats/jetstream-message-processor.ts
2454
2442
  var createJetStreamMessageProcessor = (deps) => {
@@ -2740,7 +2728,6 @@ var consumeJetStreams = consumeJetStreamStreams;
2740
2728
  // src/transports/nats/nats-consumer.ts
2741
2729
  init_domain();
2742
2730
  init_logging();
2743
- init_connection();
2744
2731
  var sc3 = StringCodec();
2745
2732
  var isRequestMessage = (msg) => Boolean(msg.reply);
2746
2733
  var sendReply = (msg, payload) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossdelta/cloudevents",
3
- "version": "0.7.14",
3
+ "version": "0.7.15",
4
4
  "description": "CloudEvents toolkit for TypeScript - Zod validation, handler discovery, NATS JetStream & Core",
5
5
  "author": "crossdelta",
6
6
  "license": "MIT",