diff --git a/package-lock.json b/package-lock.json index 852e4ec..5f12e2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@nestjs/common": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-4.4.0.tgz", - "integrity": "sha1-9VnOGbTJ7x5ENUtb/BjwoIwsDW0=", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-4.4.2.tgz", + "integrity": "sha1-X6oeTwB9qtKl6fEbhWwePYRgUNg=", "dev": true, "requires": { "class-transformer": "0.1.8", @@ -16,9 +16,9 @@ } }, "@nestjs/core": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-4.4.0.tgz", - "integrity": "sha1-ImPgV1sjCHNnymxoUwqjgfb5+jo=", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-4.4.2.tgz", + "integrity": "sha1-yIeiGjBloHemfprtwSrcT1MNxAg=", "dev": true, "requires": { "body-parser": "1.17.2", @@ -28,9 +28,9 @@ } }, "@nestjs/microservices": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-4.4.0.tgz", - "integrity": "sha1-+KvxmIHFFqDzmDty7v73Frb1PNQ=", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-4.4.1.tgz", + "integrity": "sha1-eyjwfS6sGZZmu2tiMqErlG2YpEQ=", "dev": true, "requires": { "iterare": "0.0.8", @@ -40,18 +40,18 @@ } }, "@nestjs/testing": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-4.4.0.tgz", - "integrity": "sha1-KK3hb/T73xOBWHPZVHqinsKkexE=", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-4.4.1.tgz", + "integrity": "sha1-mwhdjTrZJYzwV7wbGRv/4EhPQps=", "dev": true, "requires": { "optional": "0.1.4" } }, "@nestjs/websockets": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-4.4.0.tgz", - "integrity": "sha1-+i5KVoe7eetTMgsuMaPqXWfgOH4=", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-4.4.1.tgz", + "integrity": "sha1-uvxDQQijIGY3Vqy3mgZ/lgIGnMk=", "dev": true, "requires": { "iterare": "0.0.8", @@ -280,9 +280,9 @@ "dev": true }, "ajv": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.4.0.tgz", - "integrity": "sha1-MtHPCNvIDEMvQm8S4QslEfa0ZHQ=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.0.tgz", + "integrity": "sha1-6yhAdG6dxIvV4GOjbj/UAMXqtak=", "dev": true, "requires": { "co": "4.6.0", @@ -2074,7 +2074,7 @@ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "5.4.0", + "ajv": "5.5.0", "har-schema": "2.0.0" } }, @@ -2883,6 +2883,12 @@ } } }, + "mocha-lcov-reporter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mocha-lcov-reporter/-/mocha-lcov-reporter-1.3.0.tgz", + "integrity": "sha1-Rpve9PivyaEWBW8HnfYYLQr7A4Q=", + "dev": true + }, "modify-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.0.tgz", @@ -5390,18 +5396,18 @@ } }, "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", + "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "0.6.1" }, "dependencies": { "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } @@ -5778,6 +5784,23 @@ "tsconfig": "6.0.0", "v8flags": "3.0.1", "yn": "2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } } }, "tsconfig": { diff --git a/package.json b/package.json index 4f7add0..1842f0a 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "private": true, "scripts": { "build": "sh ./scripts/build.sh", - "test": "nyc --require ts-node/register --compilerOptions '{\"rootDir\":\"./src\",\"baseUrl\":\".\",}' mocha packages/**/*.spec.ts --reporter spec", - "coverage": "nyc report --reporter=text-lcov | ./node_modules/coveralls/bin/coveralls.js", + "test": "nyc --require ts-node/register mocha packages/**/*.spec.ts --reporter spec", + "coverage": "nyc report --reporter=text-lcov | coveralls", "clean": "sh ./scripts/clean.sh" }, "repository": { @@ -57,9 +57,11 @@ "import-sort-style-module": "^3.0.0", "lerna": "^2.4.0", "mocha": "^4.0.1", + "mocha-lcov-reporter": "^1.3.0", "nyc": "^11.3.0", "reflect-metadata": "^0.1.10", "rxjs": "^5.5.2", + "source-map-support": "^0.5.0", "standard-version": "^4.2.0", "ts-node": "^3.3.0", "tslint": "^5.8.0", @@ -76,12 +78,8 @@ "packages/**/*.ts" ], "exclude": [ - "**/*.spec.ts", - "node_modules/", - "template/**" - ], - "extension": [ - ".ts" + "packages/**/*.spec.ts", + "packages/**/*.d.ts" ], "require": [ "ts-node/register" @@ -91,6 +89,7 @@ "html" ], "sourceMap": true, - "instrument": true + "instrument": true, + "all": true } } diff --git a/packages/express-bearer-token/index.spec.ts b/packages/express-bearer-token/index.spec.ts new file mode 100644 index 0000000..747faa4 --- /dev/null +++ b/packages/express-bearer-token/index.spec.ts @@ -0,0 +1,34 @@ +import { ExpressBearerTokenMiddleware } from './index'; +import { expect } from 'chai'; + +describe('ExpressBearerTokenMiddleware', () => { + let middleware: ExpressBearerTokenMiddleware; + describe('properly configured', () => { + beforeEach(() => { + ExpressBearerTokenMiddleware.configure({}); + middleware = new ExpressBearerTokenMiddleware(); + }); + + it('should be defined', () => { + expect(middleware).to.not.be.undefined; + }); + + it('should have a function called resolve', () => { + expect(middleware.resolve).to.be.instanceof(Function); + }); + + it('should return a middleware from calling resolve', () => { + expect(middleware.resolve()).to.be.an.instanceof(Function); + }); + afterEach(() => { + ExpressBearerTokenMiddleware.configure(undefined); + }); + }); + + describe('not configured', () => { + middleware = new ExpressBearerTokenMiddleware(); + it('should return a middleware from calling resolve', () => { + expect(middleware.resolve()).to.be.an.instanceof(Function); + }); + }); +}); diff --git a/packages/express-bearer-token/index.ts b/packages/express-bearer-token/index.ts new file mode 100644 index 0000000..202a3a6 --- /dev/null +++ b/packages/express-bearer-token/index.ts @@ -0,0 +1,26 @@ +import * as bearerToken from 'express-bearer-token'; + +import { Middleware, NestMiddleware } from '@nestjs/common'; + +import { RequestHandler } from 'express'; + +@Middleware() +export class ExpressBearerTokenMiddleware implements NestMiddleware { + + // DELETE THESE LINES IF MIDDLEWARE DOES NOT TAKE OPTIONS + public static configure(opts: bearerToken.Options) { + this.options = opts; + } + + private static options: bearerToken.Options; + + public resolve(...args: any[]): RequestHandler { + if (ExpressBearerTokenMiddleware.options) { + return bearerToken(ExpressBearerTokenMiddleware.options); + } else { + return bearerToken(); + } + } +} + + diff --git a/packages/express-bearer-token/package-lock.json b/packages/express-bearer-token/package-lock.json new file mode 100644 index 0000000..0af2061 --- /dev/null +++ b/packages/express-bearer-token/package-lock.json @@ -0,0 +1,11 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "express-bearer-token": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/express-bearer-token/-/express-bearer-token-2.1.0.tgz", + "integrity": "sha1-1cgjxNGA+dKwh5j87T3enMnEkG4=" + } + } +} diff --git a/packages/express-bearer-token/package.json b/packages/express-bearer-token/package.json new file mode 100644 index 0000000..8ac9c1d --- /dev/null +++ b/packages/express-bearer-token/package.json @@ -0,0 +1,28 @@ +{ + "name": "@nest-middlewares/express-bearer-token", + "version": "1.0.0", + "description": "NestJS Middleware for Express Bearer Token", + "main": "index", + "repository": { + "type": "git", + "url": "git+https://github.com/wbhob/nest-middlewares.git" + }, + "keywords": [ + "nest", + "middlewares", + "express", + "node" + ], + "author": "Wilson Hobbs ", + "license": "MIT", + "bugs": { + "url": "https://github.com/wbhob/nest-middlewares/issues" + }, + "homepage": "https://github.com/wbhob/nest-middlewares#readme", + "peerDependencies": { + "@nestjs/common": "^4.0.0" + }, + "dependencies": { + "express-bearer-token": "^2.1.0" + } +} diff --git a/types/express-bearer-token/index.d.ts b/types/express-bearer-token/index.d.ts new file mode 100644 index 0000000..de6c672 --- /dev/null +++ b/types/express-bearer-token/index.d.ts @@ -0,0 +1,17 @@ +declare module 'express-bearer-token' { + import { RequestHandler } from 'express'; + + function bearerToken(): RequestHandler; + function bearerToken(opts: bearerToken.Options): RequestHandler; + + namespace bearerToken { + export interface Options { + bodyKey?: string; + queryKey?: string; + headerKey?: string; + reqKey?: string; + } + } + + export = bearerToken; +}