diff --git a/types/mongodb-queue/index.d.ts b/types/mongodb-queue/index.d.ts new file mode 100644 index 0000000000..85b8f848f9 --- /dev/null +++ b/types/mongodb-queue/index.d.ts @@ -0,0 +1,49 @@ +// Type definitions for mongodb-queue 4.0 +// Project: https://github.com/chilts/mongodb-queue +// Definitions by: FiveOFive +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 3.0 + +import { Db, MongoError } from 'mongodb'; + +declare function mongodbQueue(db: Db, name: string, opts?: mongodbQueue.QueueOptions): mongodbQueue.Queue; + +declare namespace mongodbQueue { + class Queue { + constructor(db: Db, name: string, opts?: QueueOptions); + + createIndexes(callback: QueueCallback): void; + add(payload: string, callback: QueueCallback): void; + add(payload: string, opts: QueueOptions, callback: QueueCallback): void; + get(callback: QueueCallback): void; + get(opts: QueueOptions, callback: QueueCallback): void; + ping(ack: string, callback: QueueCallback): void; + ping(ack: string, opts: QueueOptions, callback: QueueCallback): void; + ack(ack: string, callback: QueueCallback): void; + clean(callback: QueueCallback): void; + total(callback: QueueCallback): void; + size(callback: QueueCallback): void; + inflight(callback: QueueCallback): void; + done(callback: QueueCallback): void; + } + + interface QueueOptions { + deadQueue?: string; + delay?: number; + maxRetries?: number; + visibility?: number; + } + + interface QueueMessage { + ack: string; + id: string; + payload: string; + tries: number; + } + + interface QueueCallback { + (err: MongoError | Error, result: T): void; + } +} + +export = mongodbQueue; diff --git a/types/mongodb-queue/mongodb-queue-tests.ts b/types/mongodb-queue/mongodb-queue-tests.ts new file mode 100644 index 0000000000..04b338763c --- /dev/null +++ b/types/mongodb-queue/mongodb-queue-tests.ts @@ -0,0 +1,88 @@ +import * as queue from 'mongodb-queue'; +import { MongoClient } from 'mongodb'; + +const mongoClient = new MongoClient('mongodb://localhost:27017'); +mongoClient.connect().then(() => { + const opts: queue.QueueOptions = { + delay: 0, + maxRetries: 5, + visibility: 30, + }; + const mongoQueue = queue(mongoClient.db('test'), 'test-queue', opts); + + mongoQueue.add('foo', (err, res) => { + if (err) { + console.log('error: ' + err); + } else { + const msgId: string = res; + console.log('msgId: ' + msgId); + } + }); + + mongoQueue.get((err, res) => { + if (err) { + console.log('error: ' + err); + } else { + if (res) { + const msg: queue.QueueMessage = res; + console.log('msg: ' + JSON.stringify(msg)); + } else { + console.log('no messages available'); + } + } + }); + + mongoQueue.ping('testAck', (err, res) => { + if (err) { + console.log('error: ' + err); + } else { + const msgId: string = res; + console.log('msgId: ' + msgId); + } + }); + + mongoQueue.ack('testAck', (err, res) => { + if (err) { + console.log('error: ' + err); + } else { + const msgId: string = res; + console.log('msgId: ' + msgId); + } + }); + + mongoQueue.total((err, res) => { + if (err) { + console.log('error: ' + err); + } else { + const total: number = res; + console.log('total: ' + total); + } + }); + + mongoQueue.size((err, res) => { + if (err) { + console.log('error: ' + err); + } else { + const size: number = res; + console.log('size: ' + size); + } + }); + + mongoQueue.inflight((err, res) => { + if (err) { + console.log('error: ' + err); + } else { + const inflight: number = res; + console.log('inflight: ' + inflight); + } + }); + + mongoQueue.done((err, res) => { + if (err) { + console.log('error: ' + err); + } else { + const done: number = res; + console.log('done: ' + done); + } + }); +}); diff --git a/types/mongodb-queue/tsconfig.json b/types/mongodb-queue/tsconfig.json new file mode 100644 index 0000000000..d6d4786dbb --- /dev/null +++ b/types/mongodb-queue/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "mongodb-queue-tests.ts" + ] +} diff --git a/types/mongodb-queue/tslint.json b/types/mongodb-queue/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/mongodb-queue/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }