From b3c8a9c24d63d89d6213f9801be814328eeca916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Corbi=C3=A8re?= Date: Mon, 9 Oct 2017 23:37:25 +0200 Subject: [PATCH] nsqjs: adds tslint.json and fixes definitions. (#20437) * Fixes event definitions. * Fixes parameter definition. * Adds new tests. * Fixes lint errors. --- types/nsqjs/index.d.ts | 224 ++++++++++++++++--------------------- types/nsqjs/nsqjs-tests.ts | 82 +++++++------- types/nsqjs/tsconfig.json | 5 +- types/nsqjs/tslint.json | 1 + 4 files changed, 142 insertions(+), 170 deletions(-) create mode 100644 types/nsqjs/tslint.json diff --git a/types/nsqjs/index.d.ts b/types/nsqjs/index.d.ts index fa04d0b78a..05bf43318e 100644 --- a/types/nsqjs/index.d.ts +++ b/types/nsqjs/index.d.ts @@ -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 // 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; } diff --git a/types/nsqjs/nsqjs-tests.ts b/types/nsqjs/nsqjs-tests.ts index 3a20471181..889a529843 100644 --- a/types/nsqjs/nsqjs-tests.ts +++ b/types/nsqjs/nsqjs-tests.ts @@ -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'); -}); - - diff --git a/types/nsqjs/tsconfig.json b/types/nsqjs/tsconfig.json index 2e65f5637c..6681afbdb9 100644 --- a/types/nsqjs/tsconfig.json +++ b/types/nsqjs/tsconfig.json @@ -14,10 +14,11 @@ ], "types": [], "noEmit": true, - "forceConsistentCasingInFileNames": true + "forceConsistentCasingInFileNames": true, + "strictFunctionTypes": true }, "files": [ "index.d.ts", "nsqjs-tests.ts" ] -} \ No newline at end of file +} diff --git a/types/nsqjs/tslint.json b/types/nsqjs/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/nsqjs/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }