@probitas/client-sqs

AWS SQS client for Probitas scenario testing framework.

This package provides an AWS SQS client designed for integration testing of message-driven applications using Amazon Simple Queue Service.

Features

  • Queue Management: Create, delete, and purge queues
  • Message Operations: Send, receive, and delete messages (single and batch)
  • Message Attributes: Support for custom message attributes
  • LocalStack Compatible: Works with LocalStack for local development
  • Resource Management: Implements AsyncDisposable for proper cleanup

Installation

deno add jsr:@probitas/client-sqs

Quick Start

import { createSqsClient } from "@probitas/client-sqs";

const client = await createSqsClient({
  region: "us-east-1",
  url: "http://localhost:4566", // LocalStack
  credentials: {
    accessKeyId: "test",
    secretAccessKey: "test",
  },
});

// Ensure queue exists
const queueResult = await client.ensureQueue("test-queue");
if (!queueResult.ok) throw new Error("Failed to ensure queue");

// Send a message
const sendResult = await client.send("Hello, World!", {
  messageAttributes: {
    type: { dataType: "String", stringValue: "greeting" },
  },
});
if (!sendResult.ok) throw new Error("Failed to send message");
console.log("Message ID:", sendResult.messageId);

// Receive messages
const receiveResult = await client.receive({
  maxMessages: 10,
  waitTimeSeconds: 5,
});
if (!receiveResult.ok) throw new Error("Failed to receive messages");
console.log("Received:", receiveResult.messages.length);

// Delete message after processing
for (const msg of receiveResult.messages) {
  await client.delete(msg.receiptHandle);
}

await client.close();

Batch Operations

import { createSqsClient } from "@probitas/client-sqs";

const client = await createSqsClient({
  region: "us-east-1",
  url: "http://localhost:4566",
  credentials: { accessKeyId: "test", secretAccessKey: "test" },
});

const queueResult = await client.ensureQueue("test-queue");
if (!queueResult.ok) throw new Error("Failed to ensure queue");

// Send batch messages
await client.sendBatch([
  { body: "Message 1", id: "msg-1" },
  { body: "Message 2", id: "msg-2" },
  { body: "Message 3", id: "msg-3" },
]);

// Delete batch messages
const receiveResult = await client.receive({ maxMessages: 10 });
if (!receiveResult.ok) throw new Error("Failed to receive messages");
const handles = receiveResult.messages.map((m) => m.receiptHandle);
await client.deleteBatch(handles);

await client.close();

Using with using Statement

import { createSqsClient } from "@probitas/client-sqs";

await using client = await createSqsClient({
  region: "us-east-1",
  url: "http://localhost:4566",
  credentials: { accessKeyId: "test", secretAccessKey: "test" },
});

const queue = await client.ensureQueue("test");
console.log("Queue URL:", queue.queueUrl);
// Client automatically closed when block exits
PackageDescription
`@probitas/client`Core utilities and types
`@probitas/client-rabbitmq`RabbitMQ client

Installation

deno add jsr:@probitas/client-sqs

Classes

class

#SqsBatchError

class SqsBatchError extends SqsError
ExtendsSqsError

Error thrown when a batch operation partially fails.

NameDescription
name
kind
failedCount
Constructor
new SqsBatchError(
  message: string,
  failedCount: number,
  options?: SqsErrorOptions,
)
Properties
  • readonlynamestring
  • readonlykind"batch"
  • readonlyfailedCountnumber
class

#SqsCommandError

class SqsCommandError extends SqsError
ExtendsSqsError

Error thrown when an SQS command fails.

NameDescription
name
kind
operation
Constructor
new SqsCommandError(message: string, options: SqsCommandErrorOptions)
Properties
  • readonlynamestring
  • readonlykind"command"
  • readonlyoperationstring
class

#SqsConnectionError

class SqsConnectionError extends SqsError
ExtendsSqsError

Error thrown when an SQS connection cannot be established.

NameDescription
name
kind
Constructor
new SqsConnectionError(message: string, options?: SqsErrorOptions)
Properties
  • readonlynamestring
  • readonlykind"connection"
class

#SqsError

class SqsError extends ClientError

Base error class for SQS client errors.

NameDescription
name
code
Constructor
new SqsError(message: string, _: unknown, options?: SqsErrorOptions)
Properties
  • readonlynamestring
  • readonlycode?string
class

#SqsMessageNotFoundError

class SqsMessageNotFoundError extends SqsError
ExtendsSqsError

Error thrown when a message is not found or receipt handle is invalid.

NameDescription
name
kind
Constructor
new SqsMessageNotFoundError(message: string, options?: SqsErrorOptions)
Properties
  • readonlynamestring
  • readonlykind"message_not_found"
class

#SqsMessageTooLargeError

class SqsMessageTooLargeError extends SqsError
ExtendsSqsError

Error thrown when a message exceeds the size limit.

NameDescription
name
kind
size
maxSize
Constructor
new SqsMessageTooLargeError(
  message: string,
  size: number,
  maxSize: number,
  options?: SqsErrorOptions,
)
Properties
  • readonlynamestring
  • readonlykind"message_too_large"
  • readonlysizenumber
  • readonlymaxSizenumber
class

#SqsQueueNotFoundError

class SqsQueueNotFoundError extends SqsError
ExtendsSqsError

Error thrown when a queue is not found.

NameDescription
name
kind
queueUrl
Constructor
new SqsQueueNotFoundError(
  message: string,
  queueUrl: string,
  options?: SqsErrorOptions,
)
Properties
  • readonlynamestring
  • readonlykind"queue_not_found"
  • readonlyqueueUrlstring

Interfaces

interface

#SqsBatchFailedEntry

interface SqsBatchFailedEntry

Failed batch entry.

NameDescription
id
code
message
Properties
  • readonlyidstring
  • readonlycodestring
  • readonlymessagestring
interface

#SqsBatchMessage

interface SqsBatchMessage

Batch message for sendBatch.

NameDescription
id
body
delaySeconds
messageAttributes
Properties
  • readonlyidstring
  • readonlybodystring
  • readonlydelaySeconds?number
  • readonlymessageAttributes?Record<string, SqsMessageAttribute>
interface

#SqsBatchOptions

interface SqsBatchOptions extends SqsOptions

Options for batch operations.

interface

#SqsBatchSuccessEntry

interface SqsBatchSuccessEntry

Successful batch send entry.

NameDescription
messageId
id
Properties
  • readonlymessageIdstring
  • readonlyidstring
interface

#SqsClient

interface SqsClient extends AsyncDisposable

SQS client interface.

NameDescription
config
queueUrlThe current queue URL.
setQueueUrl()Set the queue URL for subsequent operations.
ensureQueue()Ensure a queue exists.
deleteQueue()Delete a queue by URL.
send()Send a message to the queue.
sendBatch()Send multiple messages to the queue in a single request.
receive()Receive messages from the queue.
delete()Delete a message from the queue.
deleteBatch()Delete multiple messages from the queue in a single request.
purge()Purge all messages from the queue.
close()Close the client and release resources.
Properties
  • readonlyconfigSqsClientConfig
  • readonlyqueueUrlstring | undefined

    The current queue URL. Can be set via config, ensureQueue(), or setQueueUrl().

Methods
setQueueUrl(queueUrl: string): void

Set the queue URL for subsequent operations.

Parameters
  • queueUrlstring
ensureQueue(
  queueName: string,
  options?: SqsEnsureQueueOptions,
): Promise<SqsEnsureQueueResult>

Ensure a queue exists. Creates the queue if it doesn't exist. If the queue already exists with the same attributes, returns the existing queue URL. Also sets the queue URL for subsequent operations.

Parameters
deleteQueue(
  queueUrl: string,
  options?: SqsDeleteQueueOptions,
): Promise<SqsDeleteQueueResult>

Delete a queue by URL.

Parameters
send(body: string, options?: SqsSendOptions): Promise<SqsSendResult>

Send a message to the queue.

Parameters
sendBatch(
  messages: SqsBatchMessage[],
  options?: SqsBatchOptions,
): Promise<SqsSendBatchResult>

Send multiple messages to the queue in a single request.

Parameters
receive(options?: SqsReceiveOptions): Promise<SqsReceiveResult>

Receive messages from the queue.

Parameters
delete(
  receiptHandle: string,
  options?: SqsDeleteOptions,
): Promise<SqsDeleteResult>

Delete a message from the queue.

Parameters
deleteBatch(
  receiptHandles: string[],
  options?: SqsBatchOptions,
): Promise<SqsDeleteBatchResult>

Delete multiple messages from the queue in a single request.

Parameters
purge(options?: SqsOptions): Promise<SqsDeleteResult>

Purge all messages from the queue.

Parameters
close(): Promise<void>

Close the client and release resources.

interface

#SqsClientConfig

interface SqsClientConfig extends SqsOptions

SQS client configuration.

NameDescription
regionAWS region
credentialsAWS credentials
queueUrlSQS queue URL (optional - can be set later or used with ensureQueue)
urlSQS endpoint URL (e.g., "http://localhost:4566" for LocalStack).
Properties
  • readonlyregionstring

    AWS region

  • readonlycredentials?{ accessKeyId: string; secretAccessKey: string }

    AWS credentials

  • readonlyqueueUrl?string

    SQS queue URL (optional - can be set later or used with ensureQueue)

  • readonlyurl?string | SqsConnectionConfig

    SQS endpoint URL (e.g., "http://localhost:4566" for LocalStack). Can be a string URL or a connection config object. Optional for real AWS (uses default endpoint), required for LocalStack.

interface

#SqsCommandErrorOptions

interface SqsCommandErrorOptions extends SqsErrorOptions

Options for SQS command errors.

NameDescription
operation
Properties
  • readonlyoperationstring
interface

#SqsConnectionConfig

interface SqsConnectionConfig extends CommonConnectionConfig

SQS connection configuration.

Extends CommonConnectionConfig with SQS-specific options.

NameDescription
protocolProtocol to use.
pathCustom path (for LocalStack or custom endpoints).
regionAWS region (required for AWS, optional for LocalStack).
Properties
  • readonlyprotocol?"http" | "https"

    Protocol to use.

  • readonlypath?string

    Custom path (for LocalStack or custom endpoints).

  • readonlyregion?string

    AWS region (required for AWS, optional for LocalStack).

interface

#SqsDeleteBatchResultError

interface SqsDeleteBatchResultError extends SqsDeleteBatchResultBase

Batch delete result with SQS error.

NameDescription
processed
ok
error
successful
failed
Properties
  • readonlyprocessedtrue
  • readonlyokfalse
  • readonlyerrorSqsError
  • readonlysuccessfulreadonly []
  • readonlyfailedreadonly []
interface

#SqsDeleteBatchResultFailure

interface SqsDeleteBatchResultFailure extends SqsDeleteBatchResultBase

Batch delete result with connection failure.

NameDescription
processed
ok
error
successful
failed
Properties
  • readonlyprocessedfalse
  • readonlyokfalse
  • readonlyerrorSqsFailureError
  • readonlysuccessfulnull
  • readonlyfailednull
interface

#SqsDeleteBatchResultSuccess

interface SqsDeleteBatchResultSuccess extends SqsDeleteBatchResultBase

Successful batch delete result.

Note: ok: true even if some messages failed (partial failure). Check failed.length > 0 to detect partial failures.

NameDescription
processed
ok
error
successfulArray of message IDs that were successfully deleted.
failedArray of messages that failed to delete (may be non-empty even with ok: true).
Properties
  • readonlyprocessedtrue
  • readonlyoktrue
  • readonlyerrornull
  • readonlysuccessfulreadonly string[]

    Array of message IDs that were successfully deleted.

  • readonlyfailedreadonly SqsBatchFailedEntry[]

    Array of messages that failed to delete (may be non-empty even with ok: true).

interface

#SqsDeleteOptions

interface SqsDeleteOptions extends SqsOptions

Options for deleting a message.

interface

#SqsDeleteQueueOptions

interface SqsDeleteQueueOptions extends SqsOptions

Options for deleting a queue.

interface

#SqsDeleteQueueResultError

interface SqsDeleteQueueResultError extends SqsDeleteQueueResultBase

Delete queue result with SQS error.

NameDescription
processed
ok
error
Properties
  • readonlyprocessedtrue
  • readonlyokfalse
  • readonlyerrorSqsError
interface

#SqsDeleteQueueResultFailure

interface SqsDeleteQueueResultFailure extends SqsDeleteQueueResultBase

Delete queue result with connection failure.

NameDescription
processed
ok
error
Properties
interface

#SqsDeleteQueueResultSuccess

interface SqsDeleteQueueResultSuccess extends SqsDeleteQueueResultBase

Successful delete queue result.

NameDescription
processed
ok
error
Properties
  • readonlyprocessedtrue
  • readonlyoktrue
  • readonlyerrornull
interface

#SqsDeleteResultError

interface SqsDeleteResultError extends SqsDeleteResultBase

Delete result with SQS error.

NameDescription
processed
ok
error
Properties
  • readonlyprocessedtrue
  • readonlyokfalse
  • readonlyerrorSqsError
interface

#SqsDeleteResultFailure

interface SqsDeleteResultFailure extends SqsDeleteResultBase

Delete result with connection failure.

NameDescription
processed
ok
error
Properties
interface

#SqsDeleteResultSuccess

interface SqsDeleteResultSuccess extends SqsDeleteResultBase

Successful delete result.

NameDescription
processed
ok
error
Properties
  • readonlyprocessedtrue
  • readonlyoktrue
  • readonlyerrornull
interface

#SqsEnsureQueueOptions

interface SqsEnsureQueueOptions extends SqsOptions

Options for ensuring a queue exists.

NameDescription
attributesQueue attributes (e.g., DelaySeconds, MessageRetentionPeriod)
tagsQueue tags
Properties
  • readonlyattributes?Record<string, string>

    Queue attributes (e.g., DelaySeconds, MessageRetentionPeriod)

  • readonlytags?Record<string, string>

    Queue tags

interface

#SqsEnsureQueueResultError

interface SqsEnsureQueueResultError extends SqsEnsureQueueResultBase

Ensure queue result with SQS error.

NameDescription
processed
ok
error
queueUrl
Properties
  • readonlyprocessedtrue
  • readonlyokfalse
  • readonlyerrorSqsError
  • readonlyqueueUrlnull
interface

#SqsEnsureQueueResultFailure

interface SqsEnsureQueueResultFailure extends SqsEnsureQueueResultBase

Ensure queue result with connection failure.

NameDescription
processed
ok
error
queueUrl
Properties
  • readonlyprocessedfalse
  • readonlyokfalse
  • readonlyerrorSqsFailureError
  • readonlyqueueUrlnull
interface

#SqsEnsureQueueResultSuccess

interface SqsEnsureQueueResultSuccess extends SqsEnsureQueueResultBase

Successful ensure queue result.

NameDescription
processed
ok
error
queueUrlURL of the queue (existing or newly created).
Properties
  • readonlyprocessedtrue
  • readonlyoktrue
  • readonlyerrornull
  • readonlyqueueUrlstring

    URL of the queue (existing or newly created).

interface

#SqsErrorOptions

interface SqsErrorOptions extends ErrorOptions

Options for SQS errors.

NameDescription
code
Properties
  • readonlycode?string
interface

#SqsMessage

interface SqsMessage

SQS message received from a queue.

Properties
  • readonlymessageIdstring
  • readonlybodystring
  • readonlyreceiptHandlestring
  • readonlyattributesRecord<string, string>
  • readonlymessageAttributes?Record<string, SqsMessageAttribute>
  • readonlymd5OfBodystring
interface

#SqsMessageAttribute

interface SqsMessageAttribute

SQS message attributes.

NameDescription
dataType
stringValue
binaryValue
Properties
  • readonlydataType"String" | "Number" | "Binary"
  • readonlystringValue?string
  • readonlybinaryValue?Uint8Array
interface

#SqsOptions

interface SqsOptions extends CommonOptions

Common options with throwOnError support.

NameDescription
throwOnErrorIf true, throws errors instead of returning them in the result.
Properties
  • readonlythrowOnError?boolean

    If true, throws errors instead of returning them in the result. If false (default), errors are returned in the result object.

interface

#SqsReceiveOptions

interface SqsReceiveOptions extends SqsOptions

Options for receiving messages.

NameDescription
maxMessagesMaximum number of messages to receive (1-10, default: 1)
waitTimeSecondsWait time in seconds for long polling (0-20)
visibilityTimeoutVisibility timeout in seconds (0-43200)
attributeNamesSystem attribute names to retrieve
messageAttributeNamesMessage attribute names to retrieve
Properties
  • readonlymaxMessages?number

    Maximum number of messages to receive (1-10, default: 1)

  • readonlywaitTimeSeconds?number

    Wait time in seconds for long polling (0-20)

  • readonlyvisibilityTimeout?number

    Visibility timeout in seconds (0-43200)

  • readonlyattributeNames?readonly string[]

    System attribute names to retrieve

  • readonlymessageAttributeNames?readonly string[]

    Message attribute names to retrieve

interface

#SqsReceiveResultError

interface SqsReceiveResultError extends SqsReceiveResultBase

Receive result with SQS error.

NameDescription
processed
ok
error
messages
Properties
  • readonlyprocessedtrue
  • readonlyokfalse
  • readonlyerrorSqsError
  • readonlymessagesreadonly []
interface

#SqsReceiveResultFailure

interface SqsReceiveResultFailure extends SqsReceiveResultBase

Receive result with connection failure.

NameDescription
processed
ok
error
messages
Properties
  • readonlyprocessedfalse
  • readonlyokfalse
  • readonlyerrorSqsFailureError
  • readonlymessagesnull
interface

#SqsReceiveResultSuccess

interface SqsReceiveResultSuccess extends SqsReceiveResultBase

Successful receive result.

NameDescription
processed
ok
error
messagesArray of received messages (may be empty).
Properties
  • readonlyprocessedtrue
  • readonlyoktrue
  • readonlyerrornull
  • readonlymessagesreadonly SqsMessage[]

    Array of received messages (may be empty).

interface

#SqsSendBatchResultError

interface SqsSendBatchResultError extends SqsSendBatchResultBase

Batch send result with SQS error.

NameDescription
processed
ok
error
successful
failed
Properties
  • readonlyprocessedtrue
  • readonlyokfalse
  • readonlyerrorSqsError
  • readonlysuccessfulreadonly []
  • readonlyfailedreadonly []
interface

#SqsSendBatchResultFailure

interface SqsSendBatchResultFailure extends SqsSendBatchResultBase

Batch send result with connection failure.

NameDescription
processed
ok
error
successful
failed
Properties
  • readonlyprocessedfalse
  • readonlyokfalse
  • readonlyerrorSqsFailureError
  • readonlysuccessfulnull
  • readonlyfailednull
interface

#SqsSendBatchResultSuccess

interface SqsSendBatchResultSuccess extends SqsSendBatchResultBase

Successful batch send result.

Note: ok: true even if some messages failed (partial failure). Check failed.length > 0 to detect partial failures.

NameDescription
processed
ok
error
successfulArray of successfully sent messages.
failedArray of messages that failed to send (may be non-empty even with ok: true).
Properties
  • readonlyprocessedtrue
  • readonlyoktrue
  • readonlyerrornull
  • readonlysuccessfulreadonly SqsBatchSuccessEntry[]

    Array of successfully sent messages.

  • readonlyfailedreadonly SqsBatchFailedEntry[]

    Array of messages that failed to send (may be non-empty even with ok: true).

interface

#SqsSendOptions

interface SqsSendOptions extends SqsOptions

Options for sending a message.

NameDescription
delaySecondsDelay in seconds before the message becomes visible (0-900)
messageAttributesMessage attributes
messageGroupIdMessage group ID (required for FIFO queues)
messageDeduplicationIdMessage deduplication ID (required for FIFO queues without content-based deduplication)
Properties
  • readonlydelaySeconds?number

    Delay in seconds before the message becomes visible (0-900)

  • readonlymessageAttributes?Record<string, SqsMessageAttribute>

    Message attributes

  • readonlymessageGroupId?string

    Message group ID (required for FIFO queues)

  • readonlymessageDeduplicationId?string

    Message deduplication ID (required for FIFO queues without content-based deduplication)

interface

#SqsSendResultError

interface SqsSendResultError extends SqsSendResultBase

Send result with SQS error.

NameDescription
processed
ok
error
messageId
md5OfBody
sequenceNumber
Properties
  • readonlyprocessedtrue
  • readonlyokfalse
  • readonlyerrorSqsError
  • readonlymessageIdnull
  • readonlymd5OfBodynull
  • readonlysequenceNumbernull
interface

#SqsSendResultFailure

interface SqsSendResultFailure extends SqsSendResultBase

Send result with connection failure.

NameDescription
processed
ok
error
messageId
md5OfBody
sequenceNumber
Properties
  • readonlyprocessedfalse
  • readonlyokfalse
  • readonlyerrorSqsFailureError
  • readonlymessageIdnull
  • readonlymd5OfBodynull
  • readonlysequenceNumbernull
interface

#SqsSendResultSuccess

interface SqsSendResultSuccess extends SqsSendResultBase

Successful send result.

NameDescription
processed
ok
error
messageIdUnique identifier for the sent message.
md5OfBodyMD5 hash of the message body (for integrity verification).
sequenceNumberSequence number for FIFO queues (present only for FIFO queues).
Properties
  • readonlyprocessedtrue
  • readonlyoktrue
  • readonlyerrornull
  • readonlymessageIdstring

    Unique identifier for the sent message.

  • readonlymd5OfBodystring

    MD5 hash of the message body (for integrity verification).

  • readonlysequenceNumberstring | null

    Sequence number for FIFO queues (present only for FIFO queues).

Functions

function

#createSqsClient

function createSqsClient(config: SqsClientConfig): Promise<SqsClient>

Create a new Amazon SQS client instance.

The client provides queue management, message publishing and consumption, batch operations, and supports both standard and FIFO queues via AWS SDK.

Parameters
Returns

Promise<SqsClient> — A promise resolving to a new SQS client instance

Examples

Basic usage with existing queue

import { createSqsClient } from "@probitas/client-sqs";

async function example() {
  const sqs = await createSqsClient({
    region: "ap-northeast-1",
    queueUrl: "https://sqs.ap-northeast-1.amazonaws.com/123456789/my-queue",
    credentials: { accessKeyId: "test", secretAccessKey: "test" },
  });

  // Send a message
  const sendResult = await sqs.send(JSON.stringify({
    type: "ORDER",
    orderId: "123",
  }));

  if (sendResult.ok) {
    console.log("Message ID:", sendResult.messageId);
  } else {
    console.error("Error:", sendResult.error.message);
  }

  await sqs.close();
}

Using LocalStack for local development

import { createSqsClient } from "@probitas/client-sqs";

async function example() {
  const sqs = await createSqsClient({
    region: "us-east-1",
    url: "http://localhost:4566",
    credentials: {
      accessKeyId: "test",
      secretAccessKey: "test",
    },
  });

  // Create queue dynamically (also sets queueUrl)
  const result = await sqs.ensureQueue("test-queue");
  if (result.ok) {
    console.log(result.queueUrl);  // http://localhost:4566/000000000000/test-queue
  }

  await sqs.close();
}

Receiving messages with long polling

import { createSqsClient } from "@probitas/client-sqs";

async function example() {
  const sqs = await createSqsClient({
    region: "us-east-1",
    url: "http://localhost:4566",
    credentials: { accessKeyId: "test", secretAccessKey: "test" },
  });
  await sqs.ensureQueue("test-queue");

  // Long polling waits up to 20 seconds for messages
  const receiveResult = await sqs.receive({
    maxMessages: 10,
    waitTimeSeconds: 20,
    visibilityTimeout: 30,
  });

  if (receiveResult.ok) {
    console.log("Received:", receiveResult.messages.length);

    // Process and acknowledge messages
    for (const msg of receiveResult.messages) {
      const data = JSON.parse(msg.body);
      console.log("Processing:", data);

      // Delete after successful processing
      await sqs.delete(msg.receiptHandle);
    }
  }

  await sqs.close();
}

Batch operations for high throughput

import { createSqsClient } from "@probitas/client-sqs";

async function example() {
  const sqs = await createSqsClient({
    region: "us-east-1",
    url: "http://localhost:4566",
    credentials: { accessKeyId: "test", secretAccessKey: "test" },
  });
  await sqs.ensureQueue("test-queue");

  // Send multiple messages in a single API call
  const batchResult = await sqs.sendBatch([
    { id: "1", body: JSON.stringify({ event: "user.created", userId: "a1" }) },
    { id: "2", body: JSON.stringify({ event: "user.created", userId: "a2" }) },
    { id: "3", body: JSON.stringify({ event: "user.updated", userId: "a3" }) },
  ]);

  if (batchResult.ok) {
    console.log(`Sent: ${batchResult.successful.length}`);
    console.log(`Failed: ${batchResult.failed.length}`);
  }

  // Batch delete processed messages
  const receiveResult = await sqs.receive({ maxMessages: 10 });
  if (receiveResult.ok) {
    const handles = receiveResult.messages.map((m) => m.receiptHandle);
    await sqs.deleteBatch(handles);
  }

  await sqs.close();
}

Using await using for automatic cleanup

import { createSqsClient } from "@probitas/client-sqs";

async function example() {
  await using sqs = await createSqsClient({
    region: "us-east-1",
    url: "http://localhost:4566",
    credentials: { accessKeyId: "test", secretAccessKey: "test" },
  });

  await sqs.ensureQueue("test-queue");
  await sqs.send("Hello, SQS!");
  // Client automatically closed when scope exits
}

Types

type

#SqsDeleteBatchResult

type SqsDeleteBatchResult = SqsDeleteBatchResultSuccess
  | SqsDeleteBatchResultError
  | SqsDeleteBatchResultFailure

Result of batch deleting messages.

type

#SqsDeleteQueueResult

type SqsDeleteQueueResult = SqsDeleteQueueResultSuccess
  | SqsDeleteQueueResultError
  | SqsDeleteQueueResultFailure

Result of deleting a queue.

type

#SqsDeleteResult

type SqsDeleteResult = SqsDeleteResultSuccess | SqsDeleteResultError | SqsDeleteResultFailure

Result of deleting a message.

type

#SqsEnsureQueueResult

type SqsEnsureQueueResult = SqsEnsureQueueResultSuccess
  | SqsEnsureQueueResultError
  | SqsEnsureQueueResultFailure

Result of ensuring a queue exists.

type

#SqsFailureError

type SqsFailureError = SqsConnectionError | AbortError | TimeoutError

Error types that indicate the operation was not processed. These are errors that occur before the operation reaches the SQS service.

type

#SqsOperationError

type SqsOperationError = SqsCommandError
  | SqsQueueNotFoundError
  | SqsMessageTooLargeError
  | SqsBatchError
  | SqsMessageNotFoundError
  | SqsError

Error types that indicate an operation was processed by the server. These errors occur after the operation reaches the SQS service.

type

#SqsReceiveResult

type SqsReceiveResult = SqsReceiveResultSuccess | SqsReceiveResultError | SqsReceiveResultFailure

Result of receiving messages.

type

#SqsResult

type SqsResult = SqsSendResult
  | SqsSendBatchResult
  | SqsReceiveResult
  | SqsDeleteResult
  | SqsDeleteBatchResult
  | SqsEnsureQueueResult
  | SqsDeleteQueueResult

Union type of all SQS result types.

type

#SqsSendBatchResult

type SqsSendBatchResult = SqsSendBatchResultSuccess | SqsSendBatchResultError | SqsSendBatchResultFailure

Result of batch sending messages.

type

#SqsSendResult

type SqsSendResult = SqsSendResultSuccess | SqsSendResultError | SqsSendResultFailure

Result of sending a message.

Search Documentation