lemon-core
Version:
Lemon Serverless Micro-Service Platform
111 lines (110 loc) • 3.05 kB
TypeScript
import { CoreServices } from '../core-services';
import 'dotenv/config';
/**
* interface: SQSService
* - common interface type for `SQS`
*/
export interface SQSService extends CoreServices {
sendMessage(data: any, attr?: SQSAttribute): Promise<string>;
receiveMessage(size?: number): Promise<{
list: SqsMessage[];
}>;
deleteMessage(handle: any): Promise<void>;
statistics(): Promise<SqsStatistics>;
}
export interface SQSAttribute {
[key: string]: string | number;
}
export interface SqsMessage {
sent: number;
attr: SQSAttribute;
data: any;
id: string;
handle: string;
}
export interface SqsStatistics {
available: number;
inflight: number;
delayed: number;
timeout: number;
}
export interface SqsRecord {
messageId: string;
receiptHandle: string;
body: string;
attributes: any;
messageAttributes: any;
md5OfBody: string;
md5OfMessageAttributes: string;
eventSource: 'aws:sqs';
eventSourceARN: string;
awsRegion: string;
}
/**
* class: AZSbQueueService
* - support of AWS `SQS` Service
*/
export declare class QueuesService implements SQSService {
static SB_QUEUES_ENDPOINT: string;
protected _region: string;
protected _endpoint: string;
/**
* default constructor.
*/
constructor(endpoint?: string, region?: string);
region(): string;
endpoint(): string;
iso8601DurationToSeconds(durationString: any): number;
instance: () => Promise<{
serviceBusClient: any;
serviceBusAdministrationClient: any;
}>;
/**
* hello
*/
hello: () => string;
/**
* send message into SQS.
*
* @param data object data to be json.
* @param attr attribute set.
*/
sendMessage(data: any): Promise<any>;
/**
* receive message by size.
*
* @param size (default 1) size of message
*/
receiveMessage(size?: number): Promise<any>;
/**
* delete message by id
* @param handle handle-id to delete.
*/
deleteMessage(message: any): Promise<void>;
/**
* statistics for the given type.
*
* @param {*} TYPE
*/
statistics(): Promise<SqsStatistics>;
}
/** ****************************************************************************************************************
* Dummy SQS Service
** ****************************************************************************************************************/
/**
* class: MyDummySQSService
* - simulated dummy `SQSService` which is identical to real-service.
*/
export declare class MyDummySQSService implements SQSService {
private buffer;
private endpoint;
private timeout;
constructor(endpoint: string, timeout?: number);
hello: () => string;
sendMessage(data: any, attr?: SQSAttribute): Promise<string>;
receiveMessage(size?: number): Promise<{
list: SqsMessage[];
}>;
deleteMessage(handle: string): Promise<void>;
statistics(): Promise<SqsStatistics>;
}