@crossdelta/cloudevents 0.7.14 → 0.7.16
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 +11 -36
- package/dist/index.cjs +50 -62
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +49 -62
- package/package.json +1 -1
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
|
-
|
|
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 =
|
|
825
|
-
|
|
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
|
-
|
|
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 =
|
|
1480
|
-
|
|
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.
|
|
2191
|
+
version: "0.7.16",
|
|
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/
|
|
2471
|
-
|
|
2424
|
+
// src/transports/nats/connection.ts
|
|
2425
|
+
var LONG_LIVED_DEFAULTS = {
|
|
2426
|
+
waitOnFirstConnect: false,
|
|
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
|
@@ -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;
|
|
@@ -1336,14 +1336,16 @@ declare const configureNatsPublisher: (config: NatsConnectionConfig) => void;
|
|
|
1336
1336
|
*/
|
|
1337
1337
|
declare const closeConnection: () => Promise<void>;
|
|
1338
1338
|
/**
|
|
1339
|
-
*
|
|
1340
|
-
*
|
|
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: () =>
|
|
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: () =>
|
|
1348
|
+
declare const isNatsConnected: () => boolean;
|
|
1347
1349
|
/**
|
|
1348
1350
|
* Reset publisher state (for testing only)
|
|
1349
1351
|
* @internal
|
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;
|
|
@@ -1336,14 +1336,16 @@ declare const configureNatsPublisher: (config: NatsConnectionConfig) => void;
|
|
|
1336
1336
|
*/
|
|
1337
1337
|
declare const closeConnection: () => Promise<void>;
|
|
1338
1338
|
/**
|
|
1339
|
-
*
|
|
1340
|
-
*
|
|
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: () =>
|
|
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: () =>
|
|
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
|
-
|
|
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 =
|
|
1455
|
-
|
|
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.
|
|
2166
|
+
version: "0.7.16",
|
|
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/
|
|
2446
|
-
|
|
2399
|
+
// src/transports/nats/connection.ts
|
|
2400
|
+
var LONG_LIVED_DEFAULTS = {
|
|
2401
|
+
waitOnFirstConnect: false,
|
|
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