unnbound-events 1.0.21 → 1.0.22

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.
Files changed (2) hide show
  1. package/dist/lib/client.js +26 -28
  2. package/package.json +1 -1
@@ -9,7 +9,6 @@ const unnbound_logger_sdk_1 = require("unnbound-logger-sdk");
9
9
  const internal_1 = require("unnbound-logger-sdk/dist/internal");
10
10
  const types_1 = require("unnbound-logger-sdk/dist/types");
11
11
  const axios_1 = __importDefault(require("axios"));
12
- const logger = unnbound_logger_sdk_1.logger.child((0, internal_1.internal)());
13
12
  const http = require('http');
14
13
  function matchPath(matcher, path) {
15
14
  if (typeof matcher === 'string') {
@@ -76,7 +75,7 @@ async function fetchS3Payload(s3Client, bucket, key, versionId) {
76
75
  }
77
76
  catch (error) {
78
77
  const message = error instanceof Error ? error.message : String(error);
79
- logger.error({ err: error, bucket, key }, 'Failed to fetch S3 payload');
78
+ unnbound_logger_sdk_1.logger.error({ err: error, bucket, key }, 'Failed to fetch S3 payload');
80
79
  throw new Error(`Failed to fetch S3 payload: ${message}`);
81
80
  }
82
81
  }
@@ -128,7 +127,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
128
127
  const metadataMessageId = typeof request.metadata?.messageId === 'string' ? request.metadata.messageId : undefined;
129
128
  const headerMessageId = getHeaderValue(request.headers, types_1.defaultTraceHeaderKey);
130
129
  if (metadataMessageId && headerMessageId && metadataMessageId !== headerMessageId) {
131
- logger.warn({ metadataMessageId, headerMessageId }, 'Message ID mismatch detected; defaulting to header value.');
130
+ unnbound_logger_sdk_1.logger.warn({ metadataMessageId, headerMessageId }, 'Message ID mismatch detected; defaulting to header value.');
132
131
  }
133
132
  const messageId = headerMessageId ?? metadataMessageId;
134
133
  const headerTraceId = getHeaderValue(request.headers, types_1.defaultMessageHeaderKey);
@@ -235,7 +234,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
235
234
  return response;
236
235
  }
237
236
  catch (error) {
238
- logger.error({ err: error, path: request.path }, 'Handler error');
237
+ unnbound_logger_sdk_1.logger.error({ err: error, path: request.path }, 'Handler error');
239
238
  return { status: 500, body: { message: 'Internal Server Error' } };
240
239
  }
241
240
  },
@@ -301,7 +300,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
301
300
  });
302
301
  });
303
302
  await new Promise((resolve) => server.listen(port, resolve));
304
- logger.info({ port }, 'HTTP server started');
303
+ unnbound_logger_sdk_1.logger.info({ port, ...(0, internal_1.internal)() }, 'HTTP server started');
305
304
  return {
306
305
  close() {
307
306
  return new Promise((resolve, reject) => {
@@ -343,7 +342,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
343
342
  if (!s3Client) {
344
343
  throw new Error('S3 client not initialized but S3 pointer message received');
345
344
  }
346
- logger.info({ bucket: pointer.s3BucketName, key: pointer.s3Key }, 'Fetching S3 pointer payload');
345
+ unnbound_logger_sdk_1.logger.info({ bucket: pointer.s3BucketName, key: pointer.s3Key, ...(0, internal_1.internal)() }, 'Fetching S3 pointer payload');
347
346
  recordBody = await fetchS3Payload(s3Client, pointer.s3BucketName, pointer.s3Key);
348
347
  envelope = JSON.parse(recordBody);
349
348
  }
@@ -352,7 +351,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
352
351
  }
353
352
  }
354
353
  catch (error) {
355
- logger.error({ err: error }, 'Failed to parse SQS record body');
354
+ unnbound_logger_sdk_1.logger.error({ err: error }, 'Failed to parse SQS record body');
356
355
  throw error;
357
356
  }
358
357
  // Check if envelope payload is stored in S3
@@ -364,15 +363,16 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
364
363
  if (!s3Client) {
365
364
  throw new Error('S3 client not initialized but S3 payload message received');
366
365
  }
367
- logger.info({
366
+ unnbound_logger_sdk_1.logger.info({
368
367
  type: envelope.payload.type,
369
368
  bucket: envelope.payload.location.bucket,
370
369
  key: envelope.payload.location.key,
370
+ ...(0, internal_1.internal)(),
371
371
  }, 'Fetching S3 envelope payload');
372
372
  let payloadData = await fetchS3Payload(s3Client, envelope.payload.location.bucket, envelope.payload.location.key, envelope.payload.location.versionId);
373
373
  // Handle decompression if needed
374
374
  if (envelope.payload.compressed && envelope.payload.compressionType) {
375
- logger.info({ compressionType: envelope.payload.compressionType }, 'Decompressing payload');
375
+ unnbound_logger_sdk_1.logger.info({ compressionType: envelope.payload.compressionType, ...(0, internal_1.internal)() }, 'Decompressing payload');
376
376
  payloadData = await decompressPayload(new TextEncoder().encode(payloadData), envelope.payload.compressionType);
377
377
  }
378
378
  // Parse the payload and set it as the request body
@@ -391,7 +391,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
391
391
  ? envelope.messageId
392
392
  : undefined;
393
393
  if (envelopeMessageId && headerMessageId && envelopeMessageId !== headerMessageId) {
394
- logger.warn({ envelopeMessageId, headerMessageId }, 'Message ID mismatch detected in SQS envelope; defaulting to header value.');
394
+ unnbound_logger_sdk_1.logger.warn({ envelopeMessageId, headerMessageId }, 'Message ID mismatch detected in SQS envelope; defaulting to header value.');
395
395
  }
396
396
  const messageId = headerMessageId ?? envelopeMessageId ?? record.messageId ?? undefined;
397
397
  const originalMessageId = envelopeMessageId && envelopeMessageId !== messageId
@@ -457,22 +457,20 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
457
457
  if (bucketName || options?.s3) {
458
458
  s3Options = options?.s3 || {};
459
459
  if (!bucketName) {
460
- logger.error('S3 options provided but no bucket name specified. S3 payload support disabled.');
460
+ throw new Error('S3 bucket name not provided. Set UNNBOUND_S3_PAYLOAD_BUCKET, S3_BUCKET env or pass options.bucketName');
461
461
  }
462
- else {
463
- try {
464
- s3Client = createS3Client({ ...s3Options, bucketName });
465
- logger.info({ bucket: bucketName }, 'S3 client initialized for payload offloading');
466
- }
467
- catch (error) {
468
- logger.error({ err: error }, 'Failed to initialize S3 client');
469
- throw error;
470
- }
462
+ try {
463
+ s3Client = createS3Client({ ...s3Options, bucketName });
464
+ unnbound_logger_sdk_1.logger.info({ bucket: bucketName, ...(0, internal_1.internal)() }, 'S3 client initialized for payload offloading');
465
+ }
466
+ catch (error) {
467
+ unnbound_logger_sdk_1.logger.error({ err: error }, 'Failed to initialize S3 client');
468
+ throw error;
471
469
  }
472
470
  }
473
471
  const awsSqs = require('@aws-sdk/client-sqs');
474
472
  const queueUrl = options?.queueUrl || env.UNNBOUND_SQS_QUEUE_URL || env.SQS_QUEUE_URL || env.QUEUE_URL;
475
- if (!queueUrl || queueUrl === undefined) {
473
+ if (!queueUrl) {
476
474
  throw new Error('SQS queue URL not provided. Set UNNBOUND_SQS_QUEUE_URL, SQS_QUEUE_URL env or pass options.queueUrl');
477
475
  }
478
476
  const region = options?.region || env.AWS_REGION || 'us-east-1';
@@ -515,7 +513,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
515
513
  }
516
514
  }
517
515
  catch (err) {
518
- logger.error({ err }, 'SQS listen loop error');
516
+ unnbound_logger_sdk_1.logger.error({ err }, 'SQS listen loop error');
519
517
  }
520
518
  }
521
519
  }
@@ -539,7 +537,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
539
537
  });
540
538
  }
541
539
  catch (error) {
542
- logger.error({ err: error, queueUrl: queueUrl.replace(/\/[^/]+$/, '/***') }, 'SQS connection test failed');
540
+ unnbound_logger_sdk_1.logger.error({ err: error, queueUrl: queueUrl.replace(/\/[^/]+$/, '/***') }, 'SQS connection test failed');
543
541
  reject(error instanceof Error ? error : new Error(String(error)));
544
542
  }
545
543
  };
@@ -582,7 +580,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
582
580
  httpServer = await this.http(httpOptions);
583
581
  }
584
582
  catch (error) {
585
- logger.error({ err: error }, 'Failed to start HTTP server, continuing without it');
583
+ unnbound_logger_sdk_1.logger.error({ err: error }, 'Failed to start HTTP server, continuing without it');
586
584
  }
587
585
  // Start SQS listener
588
586
  let sqsListener;
@@ -590,7 +588,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
590
588
  sqsListener = await this.sqsListen(sqsListenOptions);
591
589
  }
592
590
  catch (error) {
593
- logger.error({ err: error }, 'Failed to start SQS listener, continuing without it');
591
+ unnbound_logger_sdk_1.logger.error({ err: error }, 'Failed to start SQS listener, continuing without it');
594
592
  }
595
593
  // If neither HTTP nor SQS started successfully, throw an error
596
594
  if (!httpServer && !sqsListener) {
@@ -599,14 +597,14 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
599
597
  // Set up graceful shutdown
600
598
  const g = globalThis;
601
599
  const shutdown = async () => {
602
- logger.info('Received shutdown signal, closing servers...');
600
+ unnbound_logger_sdk_1.logger.info('Received shutdown signal, closing servers...');
603
601
  const promises = [];
604
602
  if (httpServer)
605
603
  promises.push(httpServer.close());
606
604
  if (sqsListener)
607
605
  promises.push(sqsListener.stop());
608
606
  await Promise.all(promises);
609
- logger.info('All servers closed');
607
+ unnbound_logger_sdk_1.logger.info('All servers closed');
610
608
  g.process?.exit?.(0);
611
609
  };
612
610
  // Handle SIGINT and SIGTERM
@@ -618,7 +616,7 @@ function createEventsClient(ignoreTraceRoutes = exports.defaultIgnoreTraceRoutes
618
616
  services.push(`HTTP on port ${httpOptions?.port ?? 3000}`);
619
617
  if (sqsListener)
620
618
  services.push('SQS listener');
621
- logger.info({ services: services.join(' and ') }, 'Services started. Press Ctrl+C to stop.');
619
+ unnbound_logger_sdk_1.logger.info({ services: services.join(' and ') }, 'Services started. Press Ctrl+C to stop.');
622
620
  },
623
621
  };
624
622
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "unnbound-events",
3
3
  "description": "Unified events SDK to handle HTTP routes and SQS messages with a single routing API.",
4
- "version": "1.0.21",
4
+ "version": "1.0.22",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "author": "Unnbound Team",