[sqs-consumer] Change Consumer from interface to class (#20749)

* Change Consumer from interface to class

* Fix indentation to 4 spaces

* Change to single export

* Make namespace and class have the same name
This commit is contained in:
Ezinwa Okpoechi
2017-10-25 13:48:30 -07:00
committed by Sheetal Nandi
parent 27c3a21ec4
commit da59b8c835
3 changed files with 45 additions and 33 deletions
+24 -18
View File
@@ -1,29 +1,35 @@
// Type definitions for sqs-consumer 3.5
// Type definitions for sqs-consumer 3.7
// Project: https://github.com/BBC/sqs-consumer
// Definitions by: Daniel Chao <http://dchao.co/>, Eric Byers <http://www.github.com/EricByers>
// Definitions by: Daniel Chao <http://dchao.co/>
// Eric Byers <http://github.com/EricByers>
// Ezinwa Okpoechi <http://github.com/BrainMaestro>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
import { SQS } from "aws-sdk";
export type ConsumerDone = (error?: Error) => void;
declare namespace Consumer {
export type ConsumerDone = (error?: Error) => void;
export interface Options {
queueUrl: string;
handleMessage(message: SQS.Message, done: ConsumerDone): any;
region?: string;
attributeNames?: string[];
messageAttributeNames?: string[];
batchSize?: number;
visibilityTimeout?: number;
waitTimeSeconds?: number;
authenticationErrorTimeout?: number;
sqs?: SQS;
export interface Options {
queueUrl: string;
handleMessage(message: SQS.Message, done: ConsumerDone): any;
region?: string;
attributeNames?: string[];
messageAttributeNames?: string[];
batchSize?: number;
visibilityTimeout?: number;
waitTimeSeconds?: number;
authenticationErrorTimeout?: number;
sqs?: SQS;
}
}
export interface Consumer extends NodeJS.EventEmitter {
start(): void;
stop(): void;
declare class Consumer extends NodeJS.EventEmitter {
constructor(options: Consumer.Options);
start(): void;
stop(): void;
static create(options: Consumer.Options): Consumer;
}
export function create(opts: Options): Consumer;
export = Consumer;
+19 -14
View File
@@ -1,23 +1,23 @@
import * as Consumer from "sqs-consumer";
import Consumer = require("sqs-consumer");
import { SQS } from "aws-sdk";
const app = Consumer.create({
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage(message, done) {
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage(message, done) {
// do some work with `message`
done();
}
done();
}
});
const app2 = Consumer.create({
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage(message, done) {
done();
},
region: "us-west-1",
batchSize: 15,
visibilityTimeout: 50,
waitTimeSeconds: 50
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage(message, done) {
done();
},
region: "us-west-1",
batchSize: 15,
visibilityTimeout: 50,
waitTimeSeconds: 50
});
// Test message handler.
@@ -30,8 +30,13 @@ const app3 = Consumer.create({
handleMessage
});
const app4 = new Consumer({
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
handleMessage
});
app.on('error', (err: any) => {
console.log(err.message);
console.log(err.message);
});
app.start();
+2 -1
View File
@@ -3,6 +3,7 @@
"rules": {
// TODOs
"ban-types": false,
"dt-header": false
"dt-header": false,
"strict-export-declare-modifiers": false
}
}