nsqjs: adds tslint.json and fixes definitions. (#20437)

* Fixes event definitions.

* Fixes parameter definition.

* Adds new tests.

* Fixes lint errors.
This commit is contained in:
Thomas Corbière
2017-10-09 14:37:25 -07:00
committed by Wesley Wigham
parent 1031351010
commit b3c8a9c24d
4 changed files with 142 additions and 170 deletions
+98 -126
View File
@@ -1,4 +1,4 @@
// Type definitions for nsqjs 0.8.4
// Type definitions for nsqjs 0.9
// Project: https://github.com/dudleycarr/nsqjs
// Definitions by: Robert Kania <https://github.com/cezaryrk>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
@@ -7,138 +7,110 @@
import * as events from 'events';
export = nsqjs
export class Message extends events.EventEmitter {
static BACKOFF: string;
static RESPOND: string;
static FINISH: number;
static REQUEUE: number;
static TOUCH: number;
readonly id: string;
body: any;
hasResponded: boolean;
timestamp: number;
declare namespace nsqjs {
constructor(id: string, timestamp: number, attempts: number, body: any,
requeueDelay: number, msgTimeout: number, maxMsgTimeout: number);
json(): any;
export enum RESPONSE_TYPE {
FINISH = 0,
REQUEUE = 1,
TOUCH = 2
}
timeUntilTimeout(hard?: boolean): number;
export class Message extends events.EventEmitter {
finish(): any;
static BACKOFF: string;
static RESPOND: string;
static FINISH: number;
static REQUEUE: number;
static TOUCH: number;
requeue(delay?: number, backoff?: boolean): any;
readonly id: string;
body: any;
hasResponded: boolean;
timestamp: number;
constructor(id: string, timestamp: number, attempts: number, body: any,
requeueDelay: number, msgTimeout: number, maxMsgTimeout: number);
json(): any;
timeUntilTimeout(hard?: boolean): number;
finish(): any;
requeue(delay: number, backoff: string): any;
touch(): any;
respond(responseType: RESPONSE_TYPE, wireData: any): any;
}
export class Writer extends events.EventEmitter {
readonly nsqdHost: string
readonly nsqdPort: number
static READY: string;
static CLOSED: string;
static ERROR: string;
constructor(nsqdHost: string, nsqdPort: number, options?: IConnectionConfigOptions);
connect(): any;
publish(topic: string, msgs: any, listener?: (err: Error) => void): any;
close(): any;
on(event: string, listener: Function): this;
on(event: "ready", listener: () => void): void;
on(event: "closed", listener: () => void): void;
on(event: "error", listener: (err: Error) => void): void;
on(event: "connection_error", listener: (err: Error) => void): void;
}
export class Reader extends events.EventEmitter {
static ERROR: string;
static MESSAGE: string;
static DISCARD: string;
static NSQD_CONNECTED: string;
static NSQD_CLOSED: string;
constructor(topic: string, channel: any, options?: IReaderConnectionConfigOptions);
connect(): any;
close(): any;
pause(): any;
unpause(): any;
isPaused(): boolean;
queryLookupd(): any;
connectToNSQD(host: string, port: number): any;
handleMessage(message: any): any;
on(event: string, listener: Function): this;
on(event: "nsqd_connected", listener: (host: string, port: number) => void): void;
on(event: "nsqd_closed", listener: (host: string, port: number) => void): void;
on(event: "message", listener: (message: Message) => void): void;
on(event: "discard", listener: (message: Message) => void): void;
on(event: "error", listener: (err: Error) => void): void;
on(event: "connection_error", listener: (err: Error) => void): void;
}
interface IConnectionConfigOptions {
authSecret?: string,
clientId?: string,
deflate?: boolean,
deflateLevel?: number,
heartbeatInterval?: number,
maxInFlight?: number,
messageTimeout?: number,
outputBufferSize?: number,
outputBufferTimeout?: number,
requeueDelay?: number,
sampleRate?: number,
snappy?: boolean,
tls?: boolean,
tlsVerification?: boolean
}
interface IReaderConnectionConfigOptions extends IConnectionConfigOptions {
lookupdHTTPAddresses?: string | string[],
lookupdPollInterval?: number,
lookupdPollJitter?: number,
name?: string,
nsqdTCPAddresses?: string | string[],
maxAttempts?: number,
maxBackoffDuration?: number
}
touch(): any;
respond(responseType: number, wireData: Buffer): any;
on(event: "backoff", listener: () => void): this;
on(event: "respond", listener: (responseType: number, wireData: Buffer) => void): this;
}
export class Writer extends events.EventEmitter {
readonly nsqdHost: string;
readonly nsqdPort: number;
static READY: string;
static CLOSED: string;
static ERROR: string;
constructor(nsqdHost: string, nsqdPort: number, options?: ConnectionConfigOptions);
connect(): any;
publish(topic: string, msgs: any, listener?: (err: Error) => void): any;
close(): any;
on(event: "ready" | "closed", listener: () => void): this;
on(event: "error", listener: (err: Error) => void): this;
}
export class Reader extends events.EventEmitter {
static ERROR: string;
static MESSAGE: string;
static DISCARD: string;
static NSQD_CONNECTED: string;
static NSQD_CLOSED: string;
constructor(topic: string, channel: any, options?: ReaderConnectionConfigOptions);
connect(): any;
close(): any;
pause(): any;
unpause(): any;
isPaused(): boolean;
queryLookupd(): any;
connectToNSQD(host: string, port: number): any;
handleMessage(message: any): any;
on(event: "nsqd_connected" | "nsqd_closed", listener: (host: string, port: number) => void): this;
on(event: "message" | "discard", listener: (message: Message) => void): this;
on(event: "error", listener: (err: Error) => void): this;
}
export interface ConnectionConfigOptions {
authSecret?: string;
clientId?: string;
deflate?: boolean;
deflateLevel?: number;
heartbeatInterval?: number;
maxInFlight?: number;
messageTimeout?: number;
outputBufferSize?: number;
outputBufferTimeout?: number;
requeueDelay?: number;
sampleRate?: number;
snappy?: boolean;
tls?: boolean;
tlsVerification?: boolean;
}
export interface ReaderConnectionConfigOptions extends ConnectionConfigOptions {
lookupdHTTPAddresses?: string | string[];
lookupdPollInterval?: number;
lookupdPollJitter?: number;
name?: string;
nsqdTCPAddresses?: string | string[];
maxAttempts?: number;
maxBackoffDuration?: number;
}
+40 -42
View File
@@ -1,52 +1,50 @@
import nsqjs = require("nsqjs")
import nsqjs = require('nsqjs');
/*
* Enable reader
*/
let reader = new nsqjs.Reader("sample_topic", 'test_channel', {
nsqdTCPAddresses: '127.0.0.1:4150',
//lookupdHTTPAddresses: ['127.0.0.1:4161']
})
reader.connect()
reader.on("nsqd_connected", function (err: Error) {
console.log('reader connected => ', err)
})
reader.on('message', function (msg: nsqjs.Message) {
console.log('Received message [%s]: %s', msg.id, msg.body.toString());
msg.finish();
// Reader
const reader = new nsqjs.Reader('sample_topic', 'test_channel', {
nsqdTCPAddresses: '127.0.0.1:4150'
});
reader.connect();
reader.pause();
reader.unpause();
reader.isPaused();
reader.close();
/*
* Enable writer
*/
reader.on('nsqd_connected', (host, port) => {});
reader.on('nsqd_closed', (host, port) => {});
reader.on('error', error => {});
reader.on('discard', message => {});
reader.on('message', message => {
console.log('Received message [%s]', message.id);
message.body.toString();
message.json();
message.requeue();
message.requeue(100);
message.requeue(100, false);
message.finish();
message.on('backoff', () => {});
message.on('respond', (responseType, wireData) => {});
});
// Writer
const writer = new nsqjs.Writer('127.0.0.1', 4150);
let writer = new nsqjs.Writer("127.0.0.1", 4150)
writer.connect();
writer.on('ready', function () {
console.log('writer ready')
writer.publish('sample_topic', 'it really tied the room together');
writer.publish('sample_topic', [
'Uh, excuse me. Mark it zero. Next frame.',
'Smokey, this is not \'Nam. This is bowling. There are rules.'
]);
writer.publish('sample_topic', 'Wu?', function (err: Error) {
if (err) {
return console.error(err.message);
}
console.log('Message sent successfully');
writer.on('closed', () => {});
writer.on('error', error => {});
writer.on('ready', () => {
writer.publish('sample_topic', 'message');
writer.publish('sample_topic', ['message 1', 'message 2']);
writer.publish('sample_topic', 'message', error => {
if (error) { return; }
writer.close();
});
});
writer.on('closed', function () {
console.log('Writer closed');
});
+3 -2
View File
@@ -14,10 +14,11 @@
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
"forceConsistentCasingInFileNames": true,
"strictFunctionTypes": true
},
"files": [
"index.d.ts",
"nsqjs-tests.ts"
]
}
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }