From 9599d82ad9962cc96ce8ec797bf560fb20954329 Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Fri, 17 Nov 2017 23:00:31 +0100 Subject: [PATCH 01/14] Secure /info, /swagger and /monitor with a simple basic auth middleware --- .env.example | 13 +++++++++---- package.json | 1 + src/core/ApiInfo.ts | 11 +++++++---- src/core/ApiMonitor.ts | 3 ++- src/core/BasicAuthenticate.ts | 11 +++++++++++ src/core/Server.ts | 8 ++++---- src/core/SwaggerUI.ts | 5 +++-- yarn.lock | 10 ++++++++++ 8 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 src/core/BasicAuthenticate.ts diff --git a/.env.example b/.env.example index 8e790eea..91427e1f 100644 --- a/.env.example +++ b/.env.example @@ -3,7 +3,7 @@ # APP_NAME="express-typescript-boilerplate" APP_ENV="local" -APP_HOST="http://localhost" +APP_HOST="http://localhost:3000" APP_URL_PREFIX="/api" APP_PORT=3000 @@ -13,6 +13,12 @@ APP_PORT=3000 LOG_LEVEL="debug" LOG_ADAPTER="winston" +# +# APPLICATION +# +APP_BASIC_USER="admin" +APP_BASIC_PASSWORD="1234" + # # API Info # @@ -23,14 +29,14 @@ API_INFO_ROUTE="/info" # Swagger Documentation # SWAGGER_ENABLED=true -SWAGGER_ROUTE="/docs" +SWAGGER_ROUTE="/swagger" SWAGGER_FILE="/src/api/swagger.json" # # Monitor # MONITOR_ENABLED=true -MONITOR_ROUTE="/status" +MONITOR_ROUTE="/monitor" # # DATABASE @@ -53,5 +59,4 @@ DB_SEEDS_DIR="./src/database/seeds" # # Auth0 # -# AUTH0_HOST="https://w3tecch.auth0.com" AUTH0_HOST="http://localhost:3333" diff --git a/package.json b/package.json index 5bc28a35..ed90295d 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "cors": "^2.8.4", "dotenv": "^4.0.0", "express": "^4.16.2", + "express-basic-auth": "^1.1.3", "express-status-monitor": "^1.0.1", "faker": "^4.1.0", "figlet": "^1.2.0", diff --git a/src/core/ApiInfo.ts b/src/core/ApiInfo.ts index cf5124d2..ebfb56d6 100644 --- a/src/core/ApiInfo.ts +++ b/src/core/ApiInfo.ts @@ -2,6 +2,7 @@ import * as express from 'express'; import { Environment } from './helpers/Environment'; import { SwaggerUI } from './SwaggerUI'; import { ApiMonitor } from './ApiMonitor'; +import { BasicAuthenticate } from './BasicAuthenticate'; export class ApiInfo { @@ -10,11 +11,13 @@ export class ApiInfo { return process.env.APP_URL_PREFIX + process.env.API_INFO_ROUTE; } - public setup(app: express.Application): void { + public setup(application: express.Application): void { if (Environment.isTruthy(process.env.API_INFO_ENABLED)) { - app.get( + application.get( ApiInfo.getRoute(), // @ts-ignore: False type definitions from express + BasicAuthenticate(), + // @ts-ignore: False type definitions from express (req: myExpress.Request, res: myExpress.Response) => { const pkg = Environment.getPkg(); const links = { @@ -22,11 +25,11 @@ export class ApiInfo { }; if (Environment.isTruthy(process.env.SWAGGER_ENABLED)) { links.links['swagger'] = - `${app.get('host')}:${app.get('port')}${SwaggerUI.getRoute()}`; + `${application.get('host')}${SwaggerUI.getRoute()}`; } if (Environment.isTruthy(process.env.MONITOR_ENABLED)) { links.links['monitor'] = - `${app.get('host')}:${app.get('port')}${ApiMonitor.getRoute()}`; + `${application.get('host')}${ApiMonitor.getRoute()}`; } return res.json({ name: pkg.name, diff --git a/src/core/ApiMonitor.ts b/src/core/ApiMonitor.ts index b7ed0ffe..b6f5d7bf 100644 --- a/src/core/ApiMonitor.ts +++ b/src/core/ApiMonitor.ts @@ -1,6 +1,7 @@ import * as express from 'express'; import * as monitor from 'express-status-monitor'; import { Environment } from './helpers/Environment'; +import { BasicAuthenticate } from './BasicAuthenticate'; export class ApiMonitor { @@ -12,7 +13,7 @@ export class ApiMonitor { public setup(app: express.Application): void { if (Environment.isTruthy(process.env.MONITOR_ENABLED)) { app.use(monitor()); - app.get(ApiMonitor.getRoute(), monitor().pageRoute); + app.get(ApiMonitor.getRoute(), BasicAuthenticate(), monitor().pageRoute); } } } diff --git a/src/core/BasicAuthenticate.ts b/src/core/BasicAuthenticate.ts new file mode 100644 index 00000000..085706b9 --- /dev/null +++ b/src/core/BasicAuthenticate.ts @@ -0,0 +1,11 @@ +import * as basicAuth from 'express-basic-auth'; + + +export const BasicAuthenticate = (): any => { + return basicAuth({ + users: { + [process.env.APP_BASIC_USER]: process.env.APP_BASIC_PASSWORD + }, + challenge: true + }); +}; diff --git a/src/core/Server.ts b/src/core/Server.ts index 224d4e71..2506dadc 100644 --- a/src/core/Server.ts +++ b/src/core/Server.ts @@ -65,7 +65,7 @@ export class Server { */ public onStartUp(app: express.Application): void { this.log.debug(``); - this.log.debug(`Aloha, your app is ready on ${app.get('host')}:${app.get('port')}${process.env.APP_URL_PREFIX}`); + this.log.debug(`Aloha, your app is ready on ${app.get('host')}${process.env.APP_URL_PREFIX}`); this.log.debug(`To shut it down, press + C at any time.`); this.log.debug(``); this.log.debug('-------------------------------------------------------'); @@ -73,13 +73,13 @@ export class Server { this.log.debug(`Version : ${Environment.getPkg().version}`); this.log.debug(``); if (Environment.isTruthy(process.env.API_INFO_ENABLED)) { - this.log.debug(`API Info : ${app.get('host')}:${app.get('port')}${ApiInfo.getRoute()}`); + this.log.debug(`API Info : ${app.get('host')}${ApiInfo.getRoute()}`); } if (Environment.isTruthy(process.env.SWAGGER_ENABLED)) { - this.log.debug(`Swagger : ${app.get('host')}:${app.get('port')}${SwaggerUI.getRoute()}`); + this.log.debug(`Swagger : ${app.get('host')}${SwaggerUI.getRoute()}`); } if (Environment.isTruthy(process.env.MONITOR_ENABLED)) { - this.log.debug(`Monitor : ${app.get('host')}:${app.get('port')}${ApiMonitor.getRoute()}`); + this.log.debug(`Monitor : ${app.get('host')}${ApiMonitor.getRoute()}`); } this.log.debug('-------------------------------------------------------'); this.log.debug(''); diff --git a/src/core/SwaggerUI.ts b/src/core/SwaggerUI.ts index 7c876f83..822ebaff 100644 --- a/src/core/SwaggerUI.ts +++ b/src/core/SwaggerUI.ts @@ -2,12 +2,13 @@ import * as express from 'express'; import * as path from 'path'; import * as swaggerUi from 'swagger-ui-express'; import { Environment } from './helpers/Environment'; +import { BasicAuthenticate } from './BasicAuthenticate'; export class SwaggerUI { public static getRoute(): string { - return process.env.APP_URL_PREFIX + process.env.SWAGGER_ROUTE; + return process.env.SWAGGER_ROUTE; } public setup(app: express.Application): void { @@ -25,7 +26,7 @@ export class SwaggerUI { }; // Initialize swagger-jsdoc -> returns validated swagger spec in json format - app.use(SwaggerUI.getRoute(), swaggerUi.serve, swaggerUi.setup(swaggerFile)); + app.use(SwaggerUI.getRoute(), BasicAuthenticate(), swaggerUi.serve, swaggerUi.setup(swaggerFile)); } } } diff --git a/yarn.lock b/yarn.lock index dac392e3..82b6780d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -681,6 +681,10 @@ base64url@2.0.0, base64url@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" +basic-auth@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" + basic-auth@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba" @@ -1569,6 +1573,12 @@ expect@^21.2.1: jest-message-util "^21.2.1" jest-regex-util "^21.2.0" +express-basic-auth@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/express-basic-auth/-/express-basic-auth-1.1.3.tgz#18924c02fef18d9efe58e22847ee31e240749f33" + dependencies: + basic-auth "^1.1.0" + express-status-monitor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/express-status-monitor/-/express-status-monitor-1.0.1.tgz#311288347b7aabfeaec0a01547e55c77652bb298" From f840697ad7bd0fb74f3b4381b85d370cc74e4bd1 Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Fri, 17 Nov 2017 23:05:30 +0100 Subject: [PATCH 02/14] Fix ci configurations --- .travis.yml | 4 ++-- appveyor.yml | 4 ++-- package.json | 3 +++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index d06a67b3..54dac591 100755 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ node_js: install: - yarn install scripts: - - npm test - - npm run build + - nps test + - nps build notifications: email: false diff --git a/appveyor.yml b/appveyor.yml index 779bdb2a..6f1e255d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,7 +6,7 @@ install: - yarn install build_script: - - npm run build + - nps build test_script: - - npm test + - nps test diff --git a/package.json b/package.json index ed90295d..3f5df56c 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,9 @@ "version": "2.0.0-beta.5", "description": "A delightful way to building a RESTful API with NodeJs & TypeScript", "main": "src/app.ts", + "engines": { + "node": "7.7.3" + }, "scripts": { "start": "node dist/app.js", "test": "nps test", From dc55d6ec6533b6045131649ba23d0b6d37c1291e Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Fri, 17 Nov 2017 23:09:56 +0100 Subject: [PATCH 03/14] Add unavailable repsonse helper --- src/core/api/extendExpressResponse.ts | 9 +++++++++ src/types/my-express.d.ts | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/core/api/extendExpressResponse.ts b/src/core/api/extendExpressResponse.ts index a328f31b..2788d32b 100644 --- a/src/core/api/extendExpressResponse.ts +++ b/src/core/api/extendExpressResponse.ts @@ -64,6 +64,15 @@ export const extendExpressResponse = (req: myExpress.Request, res: myExpress.Res return res.json(bodyFailed(message, error)); }; + /** + * 503 - Service Unavailable + * This is used when a service is unavailable + */ + res.unavailable = () => { + res.status(503); + return res.json(bodyFailed('Service unavailable')); + }; + next(); }; diff --git a/src/types/my-express.d.ts b/src/types/my-express.d.ts index da4cc807..41bce4ba 100644 --- a/src/types/my-express.d.ts +++ b/src/types/my-express.d.ts @@ -27,8 +27,9 @@ declare namespace myExpress { created(data: T, options?: ResponseOptions): void; found(data: T, options?: ResponseOptions): void; updated(data: T, options?: ResponseOptions): void; - destroyed(options?: ResponseOptions): void; - failed(status: number, message: string, error?: any): void; + destroyed(options?: ResponseOptions): void; + failed(status: number, message: string, error?: any): void; + unavailable(): void; } interface ResponseOptions { From a42a81376c309c3a88377c432b246223f8d9998f Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Fri, 17 Nov 2017 23:23:15 +0100 Subject: [PATCH 04/14] Add custom config --- package.json | 4 +++- src/config/CustomConfig.ts | 11 +++++++++++ src/core/ApiInfo.ts | 4 +--- yarn.lock | 6 ++++++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 3f5df56c..1b4110ee 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "A delightful way to building a RESTful API with NodeJs & TypeScript", "main": "src/app.ts", "engines": { - "node": "7.7.3" + "node": "8.2.1" }, "scripts": { "start": "node dist/app.js", @@ -63,6 +63,7 @@ "@types/request": "^2.0.7", "@types/request-promise": "^4.1.39", "@types/serve-favicon": "^2.2.29", + "@types/uuid": "^3.4.3", "@types/winston": "^2.3.7", "body-parser": "^1.18.2", "bookshelf": "^0.10.4", @@ -103,6 +104,7 @@ "ts-node": "^3.3.0", "tslint": "^5.8.0", "typescript": "^2.6.1", + "uuid": "^3.1.0", "wait-on": "^2.0.2", "winston": "^2.4.0" }, diff --git a/src/config/CustomConfig.ts b/src/config/CustomConfig.ts index 357714f1..7ec6a4c6 100644 --- a/src/config/CustomConfig.ts +++ b/src/config/CustomConfig.ts @@ -5,8 +5,12 @@ * Define all log adapters for this application and chose one. */ +import * as express from 'express'; +import * as uuid from 'uuid'; + import { Logger } from '../core/Logger'; import { App, Configurable } from '../core/App'; +import { Environment } from '../core/helpers/Environment'; export class CustomConfig implements Configurable { @@ -15,6 +19,13 @@ export class CustomConfig implements Configurable { public configure(app: App): void { this.log.debug('configuring', app.Express.get('port')); + + app.Express.use((req: express.Request, res: express.Response, next: express.NextFunction) => { + res.setHeader('X-API-VERSION', Environment.getPkg().version); + res.setHeader('X-Request-Id', uuid.v4()); + next(); + }); + } } diff --git a/src/core/ApiInfo.ts b/src/core/ApiInfo.ts index ebfb56d6..829922c8 100644 --- a/src/core/ApiInfo.ts +++ b/src/core/ApiInfo.ts @@ -2,7 +2,7 @@ import * as express from 'express'; import { Environment } from './helpers/Environment'; import { SwaggerUI } from './SwaggerUI'; import { ApiMonitor } from './ApiMonitor'; -import { BasicAuthenticate } from './BasicAuthenticate'; +// import { BasicAuthenticate } from './BasicAuthenticate'; export class ApiInfo { @@ -16,8 +16,6 @@ export class ApiInfo { application.get( ApiInfo.getRoute(), // @ts-ignore: False type definitions from express - BasicAuthenticate(), - // @ts-ignore: False type definitions from express (req: myExpress.Request, res: myExpress.Response) => { const pkg = Environment.getPkg(); const links = { diff --git a/yarn.lock b/yarn.lock index 82b6780d..56896f59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -270,6 +270,12 @@ dependencies: "@types/node" "*" +"@types/uuid@^3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.3.tgz#121ace265f5569ce40f4f6d0ff78a338c732a754" + dependencies: + "@types/node" "*" + "@types/winston@^2.3.7": version "2.3.7" resolved "https://registry.yarnpkg.com/@types/winston/-/winston-2.3.7.tgz#2ea18b2dc772d459b6af0f587447704df31afec2" From cea55f43998806415ce11916cda38241c881b5a8 Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Fri, 17 Nov 2017 23:25:01 +0100 Subject: [PATCH 05/14] Rename CustomHeaderConfig --- src/app.ts | 4 ++-- src/config/{CustomConfig.ts => CustomHeaderConfig.ts} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/config/{CustomConfig.ts => CustomHeaderConfig.ts} (85%) diff --git a/src/app.ts b/src/app.ts index a8c27503..5da4e7a4 100644 --- a/src/app.ts +++ b/src/app.ts @@ -12,13 +12,13 @@ import 'reflect-metadata'; import { App } from './core/App'; -import { CustomConfig } from './config/CustomConfig'; +import { CustomHeaderConfig } from './config/CustomHeaderConfig'; export const app = new App(); // Here you can add more custom configurations -app.configure(new CustomConfig()); +app.configure(new CustomHeaderConfig()); // Launch the server with all his awesome features. app.bootstrap(); diff --git a/src/config/CustomConfig.ts b/src/config/CustomHeaderConfig.ts similarity index 85% rename from src/config/CustomConfig.ts rename to src/config/CustomHeaderConfig.ts index 7ec6a4c6..b9d445f9 100644 --- a/src/config/CustomConfig.ts +++ b/src/config/CustomHeaderConfig.ts @@ -13,12 +13,12 @@ import { App, Configurable } from '../core/App'; import { Environment } from '../core/helpers/Environment'; -export class CustomConfig implements Configurable { +export class CustomHeaderConfig implements Configurable { private log = new Logger(__filename); public configure(app: App): void { - this.log.debug('configuring', app.Express.get('port')); + this.log.debug('Add custom headers'); app.Express.use((req: express.Request, res: express.Response, next: express.NextFunction) => { res.setHeader('X-API-VERSION', Environment.getPkg().version); From b851cf96c8077b8853b188502c2d7066e3f2edb1 Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 09:45:51 +0100 Subject: [PATCH 06/14] Remove unused import --- src/core/ApiInfo.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/ApiInfo.ts b/src/core/ApiInfo.ts index 829922c8..23edecac 100644 --- a/src/core/ApiInfo.ts +++ b/src/core/ApiInfo.ts @@ -2,7 +2,6 @@ import * as express from 'express'; import { Environment } from './helpers/Environment'; import { SwaggerUI } from './SwaggerUI'; import { ApiMonitor } from './ApiMonitor'; -// import { BasicAuthenticate } from './BasicAuthenticate'; export class ApiInfo { From 6b886c8c05dc56d38ebd49bc318f0f7c0fbd9e4b Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 09:48:05 +0100 Subject: [PATCH 07/14] Rename BasicAuthentication --- src/core/ApiMonitor.ts | 4 ++-- src/core/{BasicAuthenticate.ts => BasicAuthentication.ts} | 2 +- src/core/SwaggerUI.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) rename src/core/{BasicAuthenticate.ts => BasicAuthentication.ts} (81%) diff --git a/src/core/ApiMonitor.ts b/src/core/ApiMonitor.ts index b6f5d7bf..c9dd020e 100644 --- a/src/core/ApiMonitor.ts +++ b/src/core/ApiMonitor.ts @@ -1,7 +1,7 @@ import * as express from 'express'; import * as monitor from 'express-status-monitor'; import { Environment } from './helpers/Environment'; -import { BasicAuthenticate } from './BasicAuthenticate'; +import { BasicAuthentication } from './BasicAuthentication'; export class ApiMonitor { @@ -13,7 +13,7 @@ export class ApiMonitor { public setup(app: express.Application): void { if (Environment.isTruthy(process.env.MONITOR_ENABLED)) { app.use(monitor()); - app.get(ApiMonitor.getRoute(), BasicAuthenticate(), monitor().pageRoute); + app.get(ApiMonitor.getRoute(), BasicAuthentication(), monitor().pageRoute); } } } diff --git a/src/core/BasicAuthenticate.ts b/src/core/BasicAuthentication.ts similarity index 81% rename from src/core/BasicAuthenticate.ts rename to src/core/BasicAuthentication.ts index 085706b9..61584b89 100644 --- a/src/core/BasicAuthenticate.ts +++ b/src/core/BasicAuthentication.ts @@ -1,7 +1,7 @@ import * as basicAuth from 'express-basic-auth'; -export const BasicAuthenticate = (): any => { +export const BasicAuthentication = (): any => { return basicAuth({ users: { [process.env.APP_BASIC_USER]: process.env.APP_BASIC_PASSWORD diff --git a/src/core/SwaggerUI.ts b/src/core/SwaggerUI.ts index 822ebaff..eac1eef9 100644 --- a/src/core/SwaggerUI.ts +++ b/src/core/SwaggerUI.ts @@ -2,7 +2,7 @@ import * as express from 'express'; import * as path from 'path'; import * as swaggerUi from 'swagger-ui-express'; import { Environment } from './helpers/Environment'; -import { BasicAuthenticate } from './BasicAuthenticate'; +import { BasicAuthentication } from './BasicAuthentication'; export class SwaggerUI { @@ -26,7 +26,7 @@ export class SwaggerUI { }; // Initialize swagger-jsdoc -> returns validated swagger spec in json format - app.use(SwaggerUI.getRoute(), BasicAuthenticate(), swaggerUi.serve, swaggerUi.setup(swaggerFile)); + app.use(SwaggerUI.getRoute(), BasicAuthentication(), swaggerUi.serve, swaggerUi.setup(swaggerFile)); } } } From d16c2c0ec03e9a7d1b8bb42bdb991c1eec7301be Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 09:56:35 +0100 Subject: [PATCH 08/14] Add custom validator --- src/api/requests/user/UserCreateRequest.ts | 4 +++- src/api/requests/user/UserUpdateRequest.ts | 4 +++- src/api/validators/EndsWithValidator.ts | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/api/validators/EndsWithValidator.ts diff --git a/src/api/requests/user/UserCreateRequest.ts b/src/api/requests/user/UserCreateRequest.ts index cb0d7d23..1d552fa7 100644 --- a/src/api/requests/user/UserCreateRequest.ts +++ b/src/api/requests/user/UserCreateRequest.ts @@ -1,5 +1,6 @@ -import { IsEmail, IsNotEmpty } from 'class-validator'; +import { IsEmail, IsNotEmpty, Validate } from 'class-validator'; import { RequestBody } from '../../../core/api/RequestBody'; +import { EndsWithValidator } from '../../Validators/EndsWithValidator'; /** * This class is used for create request. Create a new instance @@ -20,6 +21,7 @@ export class UserCreateRequest extends RequestBody { @IsNotEmpty() @IsEmail() + @Validate(EndsWithValidator, ['@gmail.com', '@w3tec.ch']) public email: string; public picture: string; diff --git a/src/api/requests/user/UserUpdateRequest.ts b/src/api/requests/user/UserUpdateRequest.ts index 52aaa531..7042d48d 100644 --- a/src/api/requests/user/UserUpdateRequest.ts +++ b/src/api/requests/user/UserUpdateRequest.ts @@ -1,5 +1,6 @@ -import { IsEmail, IsNotEmpty } from 'class-validator'; +import { IsEmail, IsNotEmpty, Validate } from 'class-validator'; import { RequestBody } from '../../../core/api/RequestBody'; +import { EndsWithValidator } from '../../Validators/EndsWithValidator'; /** * This class is used for update request. Create a new instance @@ -19,6 +20,7 @@ export class UserUpdateRequest extends RequestBody { public lastName: string; @IsEmail() + @Validate(EndsWithValidator, ['@gmail.com', '@w3tec.ch']) public email: string; @IsNotEmpty() diff --git a/src/api/validators/EndsWithValidator.ts b/src/api/validators/EndsWithValidator.ts new file mode 100644 index 00000000..da51ad1c --- /dev/null +++ b/src/api/validators/EndsWithValidator.ts @@ -0,0 +1,21 @@ +import * as _ from 'lodash'; +import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from 'class-validator'; + + +@ValidatorConstraint({ name: 'endsWith', async: false }) +export class EndsWithValidator implements ValidatorConstraintInterface { + + public validate(text: string, args: ValidationArguments): boolean { + for (const ending of args.constraints) { + if (_.endsWith(text, ending)) { + return true; + } + } + return false; + } + + public defaultMessage(args: ValidationArguments): string { + return 'Incorrect suffix'; + } + +} From a31beabe29622285571c40787e5b329220192915 Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 09:59:33 +0100 Subject: [PATCH 09/14] Update readme documentation --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0880877f..bfc4c910 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ Try it!! We are happy to hear your feedback or any kind of new features. - **Easy Exception Handling** with our own simple and easy to adopt logic. You will love it. - **Easy Data Seeding** with our own factories. - **Custom Commands** are also available in our setup and really easy to use or even extend. +- **Custom Validators** to validate your request even better and stricter. [custom-validation-classes](https://github.com/pleerock/class-validator#custom-validation-classes) - **Scaffolding Commands** will speed up your development tremendously as you should focus on business code and not scaffolding. - **Smart Validation** thanks to [class-validator](https://github.com/pleerock/class-validator) with some nice annotations. - **API Documentation** thanks to [swagger](http://swagger.io/). @@ -152,7 +153,7 @@ All script are defined in the package.json file, but the most important ones are * There is also a vscode task for this called `lint`. ### Tests -* Run the unit tests using `npm test` (There is also a vscode task for this called `test`). +* Run the unit tests using `nps test` (There is also a vscode task for this called `test`). * Run the e2e tests using `nps test:e2e` and don't forget to start your application and your [Auth0 Mock Server](https://github.com/hirsch88/auth0-mock-server). ### Running in dev mode @@ -230,6 +231,7 @@ The route prefix is `/api` by default, but you can change this in the .env file. | **src/api/repositories/** | Repository / DB layer | | **src/api/requests/** | Request bodys with validations | | **src/api/services/** | Service layer | +| **src/api/validators/** | Custom validators, which can be used in the request classes | | **src/api/** swagger.json | Swagger documentation | | **src/console/** | Command line scripts | | **src/config/** | Configurations like database or logger | From 86bb29b9e7860641be8f919630bb2236c75fea5a Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 10:02:29 +0100 Subject: [PATCH 10/14] Adjust e2e user test --- test/e2e/User.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/User.test.ts b/test/e2e/User.test.ts index 9b682a43..93dbdeb1 100644 --- a/test/e2e/User.test.ts +++ b/test/e2e/User.test.ts @@ -10,14 +10,14 @@ describe('/users', () => { const testUser = { firstName: 'Hans', lastName: 'Muster', - email: 'hans@muster.ch', + email: 'hans@gmail.com', auth0UserId: '1234' }; const testUserUpdated = { firstName: 'Horst', lastName: 'Maier', - email: 'horst@maier.ch' + email: 'horst@gmail.com' }; let token; From 35624eaf32820c64b0d4b8c0183573e2c7a4b876 Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 10:07:21 +0100 Subject: [PATCH 11/14] Add validotor command --- README.md | 1 + src/console/MakeValidatorCommand.ts | 20 ++++++++++++++++++++ src/console/templates/validator.hbs | 17 +++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 src/console/MakeValidatorCommand.ts create mode 100644 src/console/templates/validator.hbs diff --git a/README.md b/README.md index bfc4c910..de8af330 100644 --- a/README.md +++ b/README.md @@ -186,6 +186,7 @@ All the templates for the commands are located in `src/console/templates`. * `npm run console make:request ` - Generates a basic request. * `npm run console make:listener ` - Generates a basic listener. * `npm run console make:exception ` - Generates a basic exception. +* `npm run console make:validator ` - Generates a custom validator. * `npm run console update:targets ` - Reads all the API files and generate a new `constants/Targets.ts` file out of it. **Example** diff --git a/src/console/MakeValidatorCommand.ts b/src/console/MakeValidatorCommand.ts new file mode 100644 index 00000000..918dab6d --- /dev/null +++ b/src/console/MakeValidatorCommand.ts @@ -0,0 +1,20 @@ +/** + * MakeValidatorCommand + * ------------------------------------- + * + */ +import { AbstractMakeCommand } from './lib/AbstractMakeCommand'; + + +export class MakeValidatorCommand extends AbstractMakeCommand { + + public static command = 'make:validator'; + public static description = 'Generate new validator'; + + public type = 'Validator'; + public suffix = 'Validator'; + public template = 'validator.hbs'; + public target = 'api/validators'; + public updateTargets = false; + +} diff --git a/src/console/templates/validator.hbs b/src/console/templates/validator.hbs new file mode 100644 index 00000000..5ab5f713 --- /dev/null +++ b/src/console/templates/validator.hbs @@ -0,0 +1,17 @@ +import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from 'class-validator'; + + +@ValidatorConstraint({ name: '{{name.normal}}', async: false }) +export class {{name.capitalize}}Validator implements ValidatorConstraintInterface { + + public validate(text: string, args: ValidationArguments): boolean { + // Place your validation here + return true; + } + + public defaultMessage(args: ValidationArguments): string { + // Error message if the validation fails + return 'Incorrect value'; + } + +} From 0de48ae43f6094d77a4bb7a0504f0539f3f5b40b Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 10:12:53 +0100 Subject: [PATCH 12/14] Upgrade dependencies --- yarn.lock | 574 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 351 insertions(+), 223 deletions(-) diff --git a/yarn.lock b/yarn.lock index 56896f59..2efa821b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -283,8 +283,8 @@ "@types/node" "*" abab@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" + version "1.0.4" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" abbrev@1: version "1.1.0" @@ -375,13 +375,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750" - dependencies: - color-convert "^1.0.0" - -ansi-styles@^3.2.0: +ansi-styles@^3.1.0, ansi-styles@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -428,13 +422,17 @@ arr-diff@^2.0.0: arr-flatten "^1.0.1" arr-flatten@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -443,6 +441,14 @@ array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -507,15 +513,15 @@ aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: - chalk "^1.1.0" + chalk "^1.1.3" esutils "^2.0.2" - js-tokens "^3.0.0" + js-tokens "^3.0.2" -babel-core@^6.0.0, babel-core@^6.24.1: +babel-core@^6.0.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" dependencies: @@ -539,17 +545,41 @@ babel-core@^6.0.0, babel-core@^6.24.1: slash "^1.0.0" source-map "^0.5.0" -babel-generator@^6.18.0, babel-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" +babel-core@^6.24.1, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.18.0, babel-generator@^6.24.1, babel-generator@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" detect-indent "^4.0.0" jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" + lodash "^4.17.4" + source-map "^0.5.6" trim-right "^1.0.1" babel-helpers@^6.24.1: @@ -572,7 +602,7 @@ babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-istanbul@^4.0.0, babel-plugin-istanbul@^4.1.4: +babel-plugin-istanbul@^4.0.0: version "4.1.4" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz#18dde84bf3ce329fddf3f4103fae921456d8e587" dependencies: @@ -580,6 +610,14 @@ babel-plugin-istanbul@^4.0.0, babel-plugin-istanbul@^4.1.4: istanbul-lib-instrument "^1.7.2" test-exclude "^4.1.1" +babel-plugin-istanbul@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" + dependencies: + find-up "^2.1.0" + istanbul-lib-instrument "^1.7.5" + test-exclude "^4.1.1" + babel-plugin-jest-hoist@^21.2.0: version "21.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006" @@ -589,13 +627,13 @@ babel-plugin-syntax-object-rest-spread@^6.13.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" dependencies: babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" @@ -611,69 +649,76 @@ babel-preset-jest@^21.2.0: babel-plugin-jest-hoist "^21.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" -babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" +babel-register@^6.24.1, babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" home-or-tmp "^2.0.0" - lodash "^4.2.0" + lodash "^4.17.4" mkdirp "^0.5.1" - source-map-support "^0.4.2" + source-map-support "^0.4.15" -babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.6.1: +babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.6.1: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" dependencies: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.16.0, babel-template@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" +babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - lodash "^4.2.0" + core-js "^2.4.0" + regenerator-runtime "^0.11.0" -babel-traverse@^6.18.0, babel-traverse@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: - babel-code-frame "^6.22.0" + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" -babel-types@^6.18.0, babel-types@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" +babel-types@^6.18.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: - babel-runtime "^6.22.0" + babel-runtime "^6.26.0" esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" + lodash "^4.17.4" + to-fast-properties "^1.0.3" -babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0: - version "6.17.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f" +babylon@^6.11.0, babylon@^6.13.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" base64-arraybuffer@0.1.5: version "0.1.5" @@ -804,10 +849,10 @@ boxen@^1.2.1: widest-line "^1.0.0" brace-expansion@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" dependencies: - balanced-match "^0.4.1" + balanced-match "^1.0.0" concat-map "0.0.1" braces@^1.8.2: @@ -910,7 +955,7 @@ chalk@0.5.1: strip-ansi "^0.3.0" supports-color "^0.2.0" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -920,7 +965,7 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^1.7.0: +chokidar@^1.6.0, chokidar@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -983,15 +1028,15 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -color-convert@^1.0.0, color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" dependencies: color-name "^1.1.1" color-name@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" colors@1.0.x: version "1.0.3" @@ -1104,14 +1149,14 @@ content-security-policy-builder@1.1.0: dashify "^0.2.0" content-type-parser@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -convert-source-map@^1.1.0, convert-source-map@^1.4.0: +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -1134,11 +1179,15 @@ copyfiles@^1.2.0: noms "0.0.0" through2 "^2.0.1" -core-js@^2.4.0, core-js@^2.4.1: +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" + +core-js@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1161,6 +1210,22 @@ cp-file@^3.1.0: pinkie-promise "^2.0.0" readable-stream "^2.1.4" +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + cpy-cli@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cpy-cli/-/cpy-cli-1.0.1.tgz#67fb5a4a2dec28ca8abff375de4b9e71f6a7561c" @@ -1210,13 +1275,6 @@ cross-spawn-async@^2.1.1: lru-cache "^4.0.0" which "^1.2.8" -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -1325,10 +1383,14 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -diff@^3.1.0, diff@^3.2.0: +diff@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" +diff@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" + dns-prefetch-control@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz#60ddb457774e178f1f9415f0cabb0e85b0b300b2" @@ -1370,7 +1432,7 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" -duplexer@~0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -1463,27 +1525,27 @@ escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" escodegen@^1.6.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + version "1.9.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" + esprima "^3.1.3" + estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: - source-map "~0.2.0" + source-map "~0.5.6" -esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" +estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" esutils@^2.0.2: version "2.0.2" @@ -1522,18 +1584,6 @@ execa@^0.4.0: path-key "^1.0.0" strip-eof "^1.0.0" -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -1647,9 +1697,9 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" eyes@0.1.x: version "0.1.8" @@ -1728,6 +1778,10 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1806,7 +1860,7 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^4.0.0: +fs-extra@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" dependencies: @@ -1871,13 +1925,6 @@ get-stdin@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1901,6 +1948,12 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + glob@^6.0.1: version "6.0.4" resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" @@ -1944,9 +1997,9 @@ global-prefix@^0.1.4: is-windows "^0.2.0" which "^1.2.12" -globals@^9.0.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" globby@^4.0.0: version "4.1.0" @@ -2126,8 +2179,8 @@ homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" hpkp@2.0.0: version "2.0.0" @@ -2138,8 +2191,8 @@ hsts@2.1.0: resolved "https://registry.yarnpkg.com/hsts/-/hsts-2.1.0.tgz#cbd6c918a2385fee1dd5680bfb2b3a194c0121cc" html-encoding-sniffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" dependencies: whatwg-encoding "^1.0.1" @@ -2160,10 +2213,6 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@0.4.13: - version "0.4.13" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" - iconv-lite@0.4.19, iconv-lite@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -2240,21 +2289,21 @@ interpret@^0.6.5: version "0.6.6" resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b" -invariant@^2.2.0: +invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: loose-envify "^1.0.0" inversify-express-utils@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/inversify-express-utils/-/inversify-express-utils-4.1.0.tgz#3b5b3479a679772a05ecf73309dc3eca2cd26714" + version "4.2.2" + resolved "https://registry.yarnpkg.com/inversify-express-utils/-/inversify-express-utils-4.2.2.tgz#dd0a733cfdc7250a09132f7e694afd928ede6583" dependencies: express "4.16.2" inversify@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/inversify/-/inversify-4.5.0.tgz#1a575ddf1db216ed3292d9b0f70f497de275874e" + version "4.5.1" + resolved "https://registry.yarnpkg.com/inversify/-/inversify-4.5.1.tgz#2f8a249e1fc5346e4f28b4b86dfae5af1b673178" invert-kv@^1.0.0: version "1.0.0" @@ -2275,8 +2324,8 @@ is-binary-path@^1.0.0: binary-extensions "^1.0.0" is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" is-builtin-module@^1.0.0: version "1.0.0" @@ -2291,8 +2340,8 @@ is-ci@^1.0.10: ci-info "^1.0.0" is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" is-equal-shallow@^0.1.3: version "0.1.3" @@ -2341,12 +2390,18 @@ is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" -is-number@^2.0.2, is-number@^2.1.0: +is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" dependencies: kind-of "^3.0.2" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -2457,7 +2512,7 @@ istanbul-lib-hook@^1.0.7: dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.2: +istanbul-lib-instrument@^1.4.2: version "1.7.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz#6014b03d3470fb77638d5802508c255c06312e56" dependencies: @@ -2469,6 +2524,18 @@ istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.2: istanbul-lib-coverage "^1.1.1" semver "^5.3.0" +istanbul-lib-instrument@^1.7.2, istanbul-lib-instrument@^1.7.5: + version "1.9.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.1.1" + semver "^5.3.0" + istanbul-lib-report@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" @@ -2723,12 +2790,6 @@ jest@^21.2.1: dependencies: jest-cli "^21.2.1" -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - joi@^9.2.0: version "9.2.0" resolved "https://registry.yarnpkg.com/joi/-/joi-9.2.0.tgz#3385ac790192130cbe230e802ec02c9215bbfeda" @@ -2739,9 +2800,9 @@ joi@^9.2.0: moment "2.x.x" topo "2.x.x" -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" js-yaml@^3.4.6, js-yaml@^3.7.0, js-yaml@^3.8.4, js-yaml@^3.9.0: version "3.10.0" @@ -2814,7 +2875,7 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json5@^0.5.0: +json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -2850,13 +2911,13 @@ jsonwebtoken@^8.1.0: xtend "^4.0.1" jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" dependencies: assert-plus "1.0.0" - extsprintf "1.0.2" + extsprintf "1.3.0" json-schema "0.2.3" - verror "1.3.6" + verror "1.10.0" jwa@^1.1.4: version "1.1.5" @@ -2881,6 +2942,12 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -3122,13 +3189,20 @@ lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" -lru-cache@^4.0.0, lru-cache@^4.0.1: +lru-cache@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" dependencies: pseudomap "^1.0.1" yallist "^2.0.0" +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + ltcdr@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ltcdr/-/ltcdr-2.2.1.tgz#5ab87ad1d4c1dab8e8c08bbf037ee0c1902287cf" @@ -3248,7 +3322,7 @@ minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -3391,7 +3465,16 @@ nopt@~1.0.10: dependencies: abbrev "1" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" dependencies: @@ -3464,8 +3547,8 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" "nwmatcher@>= 1.3.9 < 2.0.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.0.tgz#b4389362170e7ef9798c3c7716d80ebc0106fccf" + version "1.4.3" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" oauth-sign@~0.8.2: version "0.8.2" @@ -3552,10 +3635,10 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" os-locale@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" dependencies: - execa "^0.5.0" + execa "^0.7.0" lcid "^1.0.0" mem "^1.1.0" @@ -3655,7 +3738,7 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -3786,9 +3869,9 @@ pretty-format@^21.2.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -private@^0.1.6: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" +private@^0.1.6, private@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" process-nextick-args@~1.0.6: version "1.0.7" @@ -3815,7 +3898,7 @@ ps-tree@^1.1.0: dependencies: event-stream "~3.3.0" -pseudomap@^1.0.1: +pseudomap@^1.0.1, pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -3828,11 +3911,11 @@ qs@6.5.1, qs@~6.5.1: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" + is-number "^3.0.0" + kind-of "^4.0.0" range-parser@~1.2.0: version "1.2.0" @@ -3965,12 +4048,15 @@ regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" dependencies: is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" registry-auth-token@^3.0.1: version "3.3.1" @@ -3986,8 +4072,8 @@ registry-url@^3.0.3: rc "^1.0.1" remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" repeat-element@^1.1.2: version "1.1.2" @@ -4142,8 +4228,8 @@ sane@^2.0.0: fsevents "^1.1.1" sax@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" semver-diff@^2.0.0: version "2.1.0" @@ -4151,7 +4237,11 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +semver@^5.0.3, semver@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -4218,6 +4308,15 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + shellwords@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14" @@ -4281,12 +4380,18 @@ socket.io@^2.0.3: socket.io-client "2.0.4" socket.io-parser "~3.1.1" -source-map-support@^0.4.0, source-map-support@^0.4.2: +source-map-support@^0.4.0: version "0.4.15" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" dependencies: source-map "^0.5.6" +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + source-map-support@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.0.tgz#2018a7ad2bdf8faf2691e5fddab26bed5a2bacab" @@ -4299,7 +4404,11 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: +source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.5.3, source-map@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -4307,12 +4416,6 @@ source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - spawn-command-with-kill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/spawn-command-with-kill/-/spawn-command-with-kill-1.0.0.tgz#803ad79f2f56e44dd926183768aac2faec7d0ce6" @@ -4353,8 +4456,8 @@ sqlstring@2.3.0: resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.0.tgz#525b8a4fd26d6f71aa61e822a6caf976d31ad2a8" sshpk@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -4363,7 +4466,6 @@ sshpk@^1.7.0: optionalDependencies: bcrypt-pbkdf "^1.0.0" ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" jsbn "~0.1.0" tweetnacl "~0.14.0" @@ -4375,7 +4477,11 @@ starts-with@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/starts-with/-/starts-with-1.0.2.tgz#16793a729d89d4cf3d4fb2eda2f908ae357f196f" -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: +"statuses@>= 1.3.1 < 2": + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -4404,7 +4510,14 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0: +string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.0.tgz#030664561fc146c9423ec7d978fe2457437fe6d0" dependencies: @@ -4467,6 +4580,12 @@ strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + supports-color@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" @@ -4482,8 +4601,8 @@ supports-color@^3.1.2, supports-color@^3.2.3: has-flag "^1.0.0" supports-color@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.0.tgz#ad986dc7eb2315d009b4d77c8169c2231a684037" + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" dependencies: has-flag "^2.0.0" @@ -4521,8 +4640,8 @@ swagger-schema-official@2.0.0-bab6bed: resolved "https://registry.yarnpkg.com/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz#70070468d6d2977ca5237b2e519ca7d06a2ea3fd" swagger-ui-express@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-2.0.9.tgz#290b86f06bca9f749245b3ac9bc1c809dfb5679c" + version "2.0.10" + resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-2.0.10.tgz#a7beb3e44ad0abd3c9915afc6b41cb87a91aa3e7" symbol-tree@^3.2.1: version "3.2.2" @@ -4619,7 +4738,7 @@ to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" -to-fast-properties@^1.0.1: +to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -4679,14 +4798,15 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" ts-jest@^21.1.4: - version "21.1.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-21.1.4.tgz#6b720cd4ebfacbc935468e60dd395392f817095b" + version "21.2.3" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-21.2.3.tgz#d90cd143c433e8dfd9b8df54921c7f3f1d8b9819" dependencies: babel-core "^6.24.1" babel-plugin-istanbul "^4.1.4" babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-preset-jest "^21.2.0" - fs-extra "^4.0.0" + cpx "^1.5.0" + fs-extra "^4.0.2" jest-config "^21.2.1" jest-util "^21.2.1" pkg-dir "^2.0.0" @@ -4804,8 +4924,8 @@ unique-string@^1.0.0: crypto-random-string "^1.0.0" universalify@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" @@ -4917,11 +5037,13 @@ vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" dependencies: - extsprintf "1.0.2" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" wait-on@^2.0.2: version "2.0.2" @@ -4951,14 +5073,14 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" webidl-conversions@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0" + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" whatwg-encoding@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" + version "1.0.3" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" dependencies: - iconv-lite "0.4.13" + iconv-lite "0.4.19" whatwg-url@^4.3.0: version "4.8.0" @@ -4971,12 +5093,18 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.12, which@^1.2.8, which@^1.2.9: +which@^1.2.12, which@^1.2.8: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: isexe "^2.0.0" +which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" @@ -5104,7 +5232,7 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yallist@^2.0.0: +yallist@^2.0.0, yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" From e003c5ed213ae5e93b304bfcd21e9e447efc6490 Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 10:13:41 +0100 Subject: [PATCH 13/14] Upgrade typings --- yarn.lock | 66 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2efa821b..d962c7fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11,15 +11,15 @@ resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.18.tgz#6a60435d4663e290f3709898a4f75014f279c4d6" "@types/body-parser@*", "@types/body-parser@^1.16.7": - version "1.16.7" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.16.7.tgz#455fc23fd0ddaaeda6cd6cbb653558276e5920fa" + version "1.16.8" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.16.8.tgz#687ec34140624a3bec2b1a8ea9268478ae8f3be3" dependencies: "@types/express" "*" "@types/node" "*" "@types/bookshelf@^0.9.6": - version "0.9.6" - resolved "https://registry.yarnpkg.com/@types/bookshelf/-/bookshelf-0.9.6.tgz#0305fba1759cb9a4bbc3963cffb169224ae0d3ea" + version "0.9.7" + resolved "https://registry.yarnpkg.com/@types/bookshelf/-/bookshelf-0.9.7.tgz#6911d62992b095b9088fa8254f7d0bf6b4547666" dependencies: "@types/bluebird" "*" "@types/create-error" "*" @@ -39,8 +39,8 @@ "@types/node" "*" "@types/cors@^2.8.1": - version "2.8.1" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.1.tgz#54073caf3b7a741e67fb82483f83a6cadfba7501" + version "2.8.3" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.3.tgz#eaf6e476da0d36bee6b061a24d57e343ddce86d6" dependencies: "@types/express" "*" @@ -55,8 +55,8 @@ "@types/node" "*" "@types/express-serve-static-core@*": - version "4.0.45" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.45.tgz#71bb1f87d7187482d0d8851f5b294458e1c78667" + version "4.0.56" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.56.tgz#4ed556dcff9012cce6b016e214fdc5ef6e99db7d" dependencies: "@types/node" "*" @@ -69,12 +69,12 @@ "@types/serve-static" "*" "@types/faker@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@types/faker/-/faker-4.1.1.tgz#989666efde54c07b7f960a552b5fceb5d5e570e0" + version "4.1.2" + resolved "https://registry.yarnpkg.com/@types/faker/-/faker-4.1.2.tgz#f8ab50c9f9af68c160dd71b63f83e24b712d0df5" "@types/form-data@*": - version "0.0.33" - resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + version "2.2.1" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-2.2.1.tgz#ee2b3b8eaa11c0938289953606b745b738c54b1e" dependencies: "@types/node" "*" @@ -103,8 +103,8 @@ "@types/through" "*" "@types/jest@^21.1.5": - version "21.1.5" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-21.1.5.tgz#3db93d069d12602ca115d3604550e15131d8eb7a" + version "21.1.6" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-21.1.6.tgz#9467945ce33261e4fdd14276576951aa130515aa" "@types/jsonwebtoken@^7.2.3": version "7.2.3" @@ -112,7 +112,14 @@ dependencies: "@types/node" "*" -"@types/knex@*", "@types/knex@^0.0.64": +"@types/knex@*": + version "0.0.65" + resolved "https://registry.yarnpkg.com/@types/knex/-/knex-0.0.65.tgz#e65a70b5bb617f11e65aac301070ef7f1eeddfd8" + dependencies: + "@types/bluebird" "*" + "@types/node" "*" + +"@types/knex@^0.0.64": version "0.0.64" resolved "https://registry.yarnpkg.com/@types/knex/-/knex-0.0.64.tgz#919d91cec9ddb9e9c44794425068a256b4a72b7b" dependencies: @@ -120,12 +127,12 @@ "@types/node" "*" "@types/lodash@*", "@types/lodash@^4.14.80": - version "4.14.80" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.80.tgz#a6b8b7900e6a7dcbc2e90d9b6dfbe3f6a7f69951" + version "4.14.85" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.85.tgz#a16fbf942422f6eca5622b6910492c496c35069b" "@types/mime@*": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-0.0.29.tgz#fbcfd330573b912ef59eeee14602bface630754b" + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b" "@types/minimatch@*": version "2.0.29" @@ -138,8 +145,8 @@ "@types/express" "*" "@types/node@*": - version "7.0.22" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.22.tgz#4593f4d828bdd612929478ea40c67b4f403ca255" + version "8.0.53" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8" "@types/pluralize@^0.0.28": version "0.0.28" @@ -156,13 +163,20 @@ "@types/bluebird" "*" "@types/request" "*" -"@types/request@*", "@types/request@^2.0.7": +"@types/request@*": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/request/-/request-2.0.7.tgz#a2aa5a57317c21971d9b024e393091ab2c99ab98" dependencies: "@types/form-data" "*" "@types/node" "*" +"@types/request@^2.0.7": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@types/request/-/request-2.0.8.tgz#424d3de255868107ed4dd6695c65c5f1766aba80" + dependencies: + "@types/form-data" "*" + "@types/node" "*" + "@types/rx-core-binding@*": version "4.0.4" resolved "https://registry.yarnpkg.com/@types/rx-core-binding/-/rx-core-binding-4.0.4.tgz#d969d32f15a62b89e2862c17b3ee78fe329818d3" @@ -252,14 +266,14 @@ "@types/rx-lite-virtualtime" "*" "@types/serve-favicon@^2.2.29": - version "2.2.29" - resolved "https://registry.yarnpkg.com/@types/serve-favicon/-/serve-favicon-2.2.29.tgz#879296aa0a65fe0d9832abbaee5a24bbb862e4c8" + version "2.2.30" + resolved "https://registry.yarnpkg.com/@types/serve-favicon/-/serve-favicon-2.2.30.tgz#5bea4ead966a9ad5e0f409141edba0cebf20da73" dependencies: "@types/express" "*" "@types/serve-static@*": - version "1.7.31" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.7.31.tgz#15456de8d98d6b4cff31be6c6af7492ae63f521a" + version "1.13.1" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.1.tgz#1d2801fa635d274cd97d4ec07e26b21b44127492" dependencies: "@types/express-serve-static-core" "*" "@types/mime" "*" From e4faa9e738c131e965353fa4b8dc430cba4d78db Mon Sep 17 00:00:00 2001 From: hirsch88 Date: Sat, 18 Nov 2017 10:15:45 +0100 Subject: [PATCH 14/14] Bump new version 2.0.0-beta.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1b4110ee..ef4599c6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "express-typescript-boilerplate", - "version": "2.0.0-beta.5", + "version": "2.0.0-beta.6", "description": "A delightful way to building a RESTful API with NodeJs & TypeScript", "main": "src/app.ts", "engines": {