diff --git a/.travis.yml b/.travis.yml index 45fe0029..d6c67b5e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,4 @@ install: - npm i script: - - npm run test:e2e | coveralls + - npm run test:e2e -- --coverageReporters=text-lcov | coveralls diff --git a/README.md b/README.md index 0c17b808..89b05d3b 100644 --- a/README.md +++ b/README.md @@ -33,15 +33,16 @@ - [Service](#service) - [Controller](#controller) - [API Endpoints](#api-endpoints) +- [Swagger](#swagger) - [Query Parameters](#query-parameters) - [Repository Service](#repository-service) - [Restful Options](#restful-options) - [Crud Controller](#crud-controller) + - [Restful Options merge](#restful-options-merge) + - [Path Filter](#path-filter) - [Validation](#validation) - [IntelliSense](#intellisense) - [Method Override](#method-override) - - [Restful Options merge](#restful-options-merge) - - [Path Filter](#path-filter) - [Additional Decorators](#additional-decorators) - [Example Project](#example-project) - [Contribution](#contribution) @@ -184,6 +185,10 @@ _Request Params:_ `:id` - entity id _Result:_: empty | error object _Status codes:_ 200 | 404 +## Swagger + +[Swagger](https://docs.nestjs.com/recipes/swagger) support is present out of the box, including [Query Parameters](#query-parameters) and [Path Filter](#path-filter). + ## Query Parameters `GET` endpoints that are generated by CRUD controller support some useful query parameters (all of them are _optional_): @@ -194,7 +199,7 @@ _Status codes:_ 200 | 404 - [**`sort`**](#sort) (alias: `sort[]`) - sort GET result by some `field` in `ASC | DESC` order - [**`join`**](#join) (alias: `join[]`) - receive joined relational entities in GET result (with all or selected fields) - [**`limit`**](#limit) (alias `per_page`) - receive `N` amount of entities -- [**`offset`**](#offset) (alias `skip`) - offset `N` amount of entities +- [**`offset`**](#offset) - offset `N` amount of entities - [**`page`**](#page) - receive a portion of `limit` (`per_page`) entities (alternative to `offset`) - [**`cache`**](#cache) - reset cache (if was enabled) and receive entities from the DB @@ -533,7 +538,70 @@ Cache can be [reseted](#cache) by using the query parameter in your `GET` reques ## Crud Controller -Our newly generated working horse. Let's dive in some details. +Our newly generated working horse. `@Crud()` decorator accepts two arguments - Entity class and `CrudOptions` object. Let's dive in some details. + +### Restful Options merge + +```typescript +... +import { Crud } from '@nestjsx/crud'; + +@Crud(Hero, { + options: { + // RestfulOptions goes here + } +}) +@Controller('heroes') +export class HeroesCrudController { + constructor(public service: HeroesService) {} +} +``` + +`CrudOptions` object may have `options` parameter which is the same object as [Restful Options](#restful-options). + +**_Notice:_** If you have this options set up in your `RepositoryService`, in that case they will be **merged**. + +### Path Filter + +`CrudOptions` object may have `params` parameter that will be used for auto filtering by URL path parameters. + +Assume, you have an entity `User` that belongs to some `Company` and has a field `companyId`. And you whant to create `UsersController` so that an admin could access users from his own Company only. Let's do this: + +```typescript +... +import { Crud } from '@nestjsx/crud'; + +@Crud(Hero, { + params: ['companyId'] +}) +@Controller('/company/:companyId/users') +export class UsersCrud { + constructor(public service: UsersService) {} +} +``` + +In this example you're URL param name `companyId` should match the name of `User.companyId` field. If not, you can do mapping, like this: + +```typescript +... +import { Crud } from '@nestjsx/crud'; + +@Crud(Hero, { + params: { + company: 'companyId' + } +}) +@Controller('/company/:company/users') +export class UsersCrud { + constructor(public service: UsersService) {} +} +``` + +Where `company` is the name of the URL param, and `companyId` is the name of the entity field. + +As you might guess, all request will add `companyId` to the DB queries alongside with the `:id` of `GET`, `PATCH`, `DELETE` requests. On `POST` (both: one and bulk) requests, `companyId` will be added to the `dto` automatically. + +When you done with the controller, you'll need to add some logic to your `AuthGuard` or any other interface, where you do the authorization of a requester. You will need to match `companyId` URL param with the `user.companyId` entity that has been validated from the DB. ### Validation @@ -723,67 +791,6 @@ export class HeroesCrud implements CrudController { } ``` -### Restful Options merge - -```typescript -... -import { Crud, CrudController, RestfulOptions } from '@nestjsx/crud'; - -@Crud(Hero) -@Controller('heroes') -export class HeroesCrud implements CrudController { - options: RestfulOptions = {}; - - constructor(public service: HeroesService) {} -} -``` - -Controller can accept optioanl `options` parameter and it's the same object as [Restful Options](#restful-options). It's very useful when you have one `RepositoryService` and several controllers. - -**_Notice:_** If you have this options set up in your `RepositoryService`, in that case they will be **merged**. - -### Path Filter - -Assume, you have an entity `User` that belongs to some `Company` and has a field `companyId`. And you whant to create `UsersController` so that an admin could access users from his own Company only. Let's do this: - -```typescript -... -import { Crud, CrudController } from '@nestjsx/crud'; - -@Crud(Hero) -@Controller('/company/:companyId/users') -export class UsersCrud implements CrudController { - paramsFilter = ['companyId']; - - constructor(public service: UsersService) {} -} -``` - -A property `paramsFilter` is designed fo that purpose. - -In this example you're URL param name `companyId` should match the name of `User.companyId` field. If not, you can do mapping, like this: - -```typescript -... -import { Crud, CrudController } from '@nestjsx/crud'; - -@Crud(Hero) -@Controller('/company/:company/users') -export class UsersCrud implements CrudController { - paramsFilter = { - company: 'companyId' - }; - - constructor(public service: UsersService) {} -} -``` - -Where `company` - name of the URL param, and `companyId` - name of the entity field. - -As you might guess, all request will add `companyId` to the DB queries alongside with the `:id` of `GET`, `PATCH`, `DELETE` requests. On `POST` (both: one and bulk) requests, `companyId` will be added to the `dto` automatically. - -When you done with the controller, you'll need to add some logic to your `AuthGuard` or any other interface, where you do the authorization of a requester. You will need to match `companyId` URL param with the `user.companyId` entity that has been validated from the DB. - ### Additional Decorators There are two additional decorators that come out of the box: `@Feature()` and `@Action()`: @@ -816,17 +823,20 @@ enum CrudActions { `ACLGuard` dummy example: ```typescript +import { Reflector } from '@nestjs/core'; import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; -import { FEAUTURE_NAME_METADATA, ACTION_NAME_METADATA } from '@nestjsx/crud'; +import { getFeature, getAction } from '@nestjsx/crud'; @Injectable() export class ACLGuard implements CanActivate { + constructor(private reflector: Reflector) {} + canActivate(ctx: ExecutionContext): boolean { const handler = ctx.getHandler(); const controller = ctx.getClass(); - const feature = this.reflector.get(FEAUTURE_NAME_METADATA, controller); - const action = this.reflector.get(ACTION_NAME_METADATA, handler); + const feature = getFeature(controller); + const action = getAction(handler); console.log(`${feature}-${action}`); // e.g. 'Heroes-Read-All' diff --git a/dist/README.md b/dist/README.md index 0c17b808..89b05d3b 100644 --- a/dist/README.md +++ b/dist/README.md @@ -33,15 +33,16 @@ - [Service](#service) - [Controller](#controller) - [API Endpoints](#api-endpoints) +- [Swagger](#swagger) - [Query Parameters](#query-parameters) - [Repository Service](#repository-service) - [Restful Options](#restful-options) - [Crud Controller](#crud-controller) + - [Restful Options merge](#restful-options-merge) + - [Path Filter](#path-filter) - [Validation](#validation) - [IntelliSense](#intellisense) - [Method Override](#method-override) - - [Restful Options merge](#restful-options-merge) - - [Path Filter](#path-filter) - [Additional Decorators](#additional-decorators) - [Example Project](#example-project) - [Contribution](#contribution) @@ -184,6 +185,10 @@ _Request Params:_ `:id` - entity id _Result:_: empty | error object _Status codes:_ 200 | 404 +## Swagger + +[Swagger](https://docs.nestjs.com/recipes/swagger) support is present out of the box, including [Query Parameters](#query-parameters) and [Path Filter](#path-filter). + ## Query Parameters `GET` endpoints that are generated by CRUD controller support some useful query parameters (all of them are _optional_): @@ -194,7 +199,7 @@ _Status codes:_ 200 | 404 - [**`sort`**](#sort) (alias: `sort[]`) - sort GET result by some `field` in `ASC | DESC` order - [**`join`**](#join) (alias: `join[]`) - receive joined relational entities in GET result (with all or selected fields) - [**`limit`**](#limit) (alias `per_page`) - receive `N` amount of entities -- [**`offset`**](#offset) (alias `skip`) - offset `N` amount of entities +- [**`offset`**](#offset) - offset `N` amount of entities - [**`page`**](#page) - receive a portion of `limit` (`per_page`) entities (alternative to `offset`) - [**`cache`**](#cache) - reset cache (if was enabled) and receive entities from the DB @@ -533,7 +538,70 @@ Cache can be [reseted](#cache) by using the query parameter in your `GET` reques ## Crud Controller -Our newly generated working horse. Let's dive in some details. +Our newly generated working horse. `@Crud()` decorator accepts two arguments - Entity class and `CrudOptions` object. Let's dive in some details. + +### Restful Options merge + +```typescript +... +import { Crud } from '@nestjsx/crud'; + +@Crud(Hero, { + options: { + // RestfulOptions goes here + } +}) +@Controller('heroes') +export class HeroesCrudController { + constructor(public service: HeroesService) {} +} +``` + +`CrudOptions` object may have `options` parameter which is the same object as [Restful Options](#restful-options). + +**_Notice:_** If you have this options set up in your `RepositoryService`, in that case they will be **merged**. + +### Path Filter + +`CrudOptions` object may have `params` parameter that will be used for auto filtering by URL path parameters. + +Assume, you have an entity `User` that belongs to some `Company` and has a field `companyId`. And you whant to create `UsersController` so that an admin could access users from his own Company only. Let's do this: + +```typescript +... +import { Crud } from '@nestjsx/crud'; + +@Crud(Hero, { + params: ['companyId'] +}) +@Controller('/company/:companyId/users') +export class UsersCrud { + constructor(public service: UsersService) {} +} +``` + +In this example you're URL param name `companyId` should match the name of `User.companyId` field. If not, you can do mapping, like this: + +```typescript +... +import { Crud } from '@nestjsx/crud'; + +@Crud(Hero, { + params: { + company: 'companyId' + } +}) +@Controller('/company/:company/users') +export class UsersCrud { + constructor(public service: UsersService) {} +} +``` + +Where `company` is the name of the URL param, and `companyId` is the name of the entity field. + +As you might guess, all request will add `companyId` to the DB queries alongside with the `:id` of `GET`, `PATCH`, `DELETE` requests. On `POST` (both: one and bulk) requests, `companyId` will be added to the `dto` automatically. + +When you done with the controller, you'll need to add some logic to your `AuthGuard` or any other interface, where you do the authorization of a requester. You will need to match `companyId` URL param with the `user.companyId` entity that has been validated from the DB. ### Validation @@ -723,67 +791,6 @@ export class HeroesCrud implements CrudController { } ``` -### Restful Options merge - -```typescript -... -import { Crud, CrudController, RestfulOptions } from '@nestjsx/crud'; - -@Crud(Hero) -@Controller('heroes') -export class HeroesCrud implements CrudController { - options: RestfulOptions = {}; - - constructor(public service: HeroesService) {} -} -``` - -Controller can accept optioanl `options` parameter and it's the same object as [Restful Options](#restful-options). It's very useful when you have one `RepositoryService` and several controllers. - -**_Notice:_** If you have this options set up in your `RepositoryService`, in that case they will be **merged**. - -### Path Filter - -Assume, you have an entity `User` that belongs to some `Company` and has a field `companyId`. And you whant to create `UsersController` so that an admin could access users from his own Company only. Let's do this: - -```typescript -... -import { Crud, CrudController } from '@nestjsx/crud'; - -@Crud(Hero) -@Controller('/company/:companyId/users') -export class UsersCrud implements CrudController { - paramsFilter = ['companyId']; - - constructor(public service: UsersService) {} -} -``` - -A property `paramsFilter` is designed fo that purpose. - -In this example you're URL param name `companyId` should match the name of `User.companyId` field. If not, you can do mapping, like this: - -```typescript -... -import { Crud, CrudController } from '@nestjsx/crud'; - -@Crud(Hero) -@Controller('/company/:company/users') -export class UsersCrud implements CrudController { - paramsFilter = { - company: 'companyId' - }; - - constructor(public service: UsersService) {} -} -``` - -Where `company` - name of the URL param, and `companyId` - name of the entity field. - -As you might guess, all request will add `companyId` to the DB queries alongside with the `:id` of `GET`, `PATCH`, `DELETE` requests. On `POST` (both: one and bulk) requests, `companyId` will be added to the `dto` automatically. - -When you done with the controller, you'll need to add some logic to your `AuthGuard` or any other interface, where you do the authorization of a requester. You will need to match `companyId` URL param with the `user.companyId` entity that has been validated from the DB. - ### Additional Decorators There are two additional decorators that come out of the box: `@Feature()` and `@Action()`: @@ -816,17 +823,20 @@ enum CrudActions { `ACLGuard` dummy example: ```typescript +import { Reflector } from '@nestjs/core'; import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; -import { FEAUTURE_NAME_METADATA, ACTION_NAME_METADATA } from '@nestjsx/crud'; +import { getFeature, getAction } from '@nestjsx/crud'; @Injectable() export class ACLGuard implements CanActivate { + constructor(private reflector: Reflector) {} + canActivate(ctx: ExecutionContext): boolean { const handler = ctx.getHandler(); const controller = ctx.getClass(); - const feature = this.reflector.get(FEAUTURE_NAME_METADATA, controller); - const action = this.reflector.get(ACTION_NAME_METADATA, handler); + const feature = getFeature(controller); + const action = getAction(handler); console.log(`${feature}-${action}`); // e.g. 'Heroes-Read-All' diff --git a/dist/classes/restful-service.class.d.ts b/dist/classes/restful-service.class.d.ts index ef3e0bb7..24472266 100644 --- a/dist/classes/restful-service.class.d.ts +++ b/dist/classes/restful-service.class.d.ts @@ -10,5 +10,5 @@ export declare abstract class RestfulService { abstract updateOne(...args: any[]): Promise; abstract deleteOne(...args: any[]): Promise; throwBadRequestException(msg?: any): BadRequestException; - throwNotFoundException(name?: string): NotFoundException; + throwNotFoundException(name: string): NotFoundException; } diff --git a/dist/classes/restful-service.class.js b/dist/classes/restful-service.class.js index 4a5d7225..9c70642d 100644 --- a/dist/classes/restful-service.class.js +++ b/dist/classes/restful-service.class.js @@ -7,8 +7,7 @@ class RestfulService { throw new common_1.BadRequestException(msg); } throwNotFoundException(name) { - const msg = name ? `${name} not found` : `Not found`; - throw new common_1.NotFoundException(msg); + throw new common_1.NotFoundException(`${name} not found`); } } exports.RestfulService = RestfulService; diff --git a/dist/classes/restful-service.class.js.map b/dist/classes/restful-service.class.js.map index 9e492973..c4677376 100644 --- a/dist/classes/restful-service.class.js.map +++ b/dist/classes/restful-service.class.js.map @@ -1 +1 @@ -{"version":3,"file":"restful-service.class.js","sourceRoot":"","sources":["../../src/classes/restful-service.class.ts"],"names":[],"mappings":";;AAAA,2CAAwE;AAIxE,MAAsB,cAAc;IAGlC,gBAAe,CAAC;IAShB,wBAAwB,CAAC,GAAS;QAChC,MAAM,IAAI,4BAAmB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,sBAAsB,CAAC,IAAa;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QACrD,MAAM,IAAI,0BAAiB,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;CACF;AApBD,wCAoBC"} \ No newline at end of file +{"version":3,"file":"restful-service.class.js","sourceRoot":"","sources":["../../src/classes/restful-service.class.ts"],"names":[],"mappings":";;AAAA,2CAAwE;AAIxE,MAAsB,cAAc;IAGlC,gBAAe,CAAC;IAShB,wBAAwB,CAAC,GAAS;QAChC,MAAM,IAAI,4BAAmB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,sBAAsB,CAAC,IAAY;QACjC,MAAM,IAAI,0BAAiB,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;IACnD,CAAC;CACF;AAnBD,wCAmBC"} \ No newline at end of file diff --git a/dist/decorators/crud.decorator.d.ts b/dist/decorators/crud.decorator.d.ts index d261caf0..1d167278 100644 --- a/dist/decorators/crud.decorator.d.ts +++ b/dist/decorators/crud.decorator.d.ts @@ -1,7 +1,5 @@ -import { ValidationPipeOptions } from '@nestjs/common'; -interface CrudOptions { - validation?: ValidationPipeOptions; -} +import { CrudOptions } from '../interfaces'; +declare type BaseRouteName = 'getManyBase' | 'getOneBase' | 'createOneBase' | 'createManyBase' | 'updateOneBase' | 'deleteOneBase'; export declare const Crud: (dto: any, crudOptions?: CrudOptions) => (target: object) => void; -export declare const Override: (name?: "getManyBase" | "getOneBase" | "createOneBase" | "updateOneBase" | "deleteOneBase") => (target: any, key: any, descriptor: PropertyDescriptor) => PropertyDescriptor; +export declare const Override: (name?: BaseRouteName) => (target: any, key: any, descriptor: PropertyDescriptor) => PropertyDescriptor; export {}; diff --git a/dist/decorators/crud.decorator.js b/dist/decorators/crud.decorator.js index 0fd1cb08..ceea2f5f 100644 --- a/dist/decorators/crud.decorator.js +++ b/dist/decorators/crud.decorator.js @@ -11,12 +11,12 @@ var __metadata = (this && this.__metadata) || function (k, v) { Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("@nestjs/common"); const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum"); -const constants_1 = require("@nestjs/common/constants"); const dto_1 = require("../dto"); const enums_1 = require("../enums"); const interceptors_1 = require("../interceptors"); -const constants_2 = require("../constants"); +const constants_1 = require("../constants"); const utils_1 = require("../utils"); +const helpers_1 = require("./helpers"); exports.Crud = (dto, crudOptions = {}) => (target) => { const prototype = target.prototype; const baseRoutes = { @@ -51,75 +51,80 @@ exports.Crud = (dto, crudOptions = {}) => (target) => { method: common_1.RequestMethod.DELETE, }, }; - getParamsFilter(prototype); - getMergedOptions(prototype); - getManyBase(target, baseRoutes.getManyBase.name); - getOneBase(target, baseRoutes.getOneBase.name); - createOneBase(target, baseRoutes.createOneBase.name, dto, crudOptions); - createManyBase(target, baseRoutes.createManyBase.name, dto, crudOptions); - updateOneBase(target, baseRoutes.updateOneBase.name, dto, crudOptions); - deleteOneBase(target, baseRoutes.deleteOneBase.name); + getParamsFilterInit(prototype, crudOptions); + getMergedOptionsInit(prototype, crudOptions); + getManyBaseInit(target, baseRoutes.getManyBase.name, dto, crudOptions); + getOneBaseInit(target, baseRoutes.getOneBase.name, dto, crudOptions); + createOneBaseInit(target, baseRoutes.createOneBase.name, dto, crudOptions); + createManyBaseInit(target, baseRoutes.createManyBase.name, dto, crudOptions); + updateOneBaseInit(target, baseRoutes.updateOneBase.name, dto, crudOptions); + deleteOneBaseInit(target, baseRoutes.deleteOneBase.name, crudOptions); Object.getOwnPropertyNames(prototype).forEach((name) => { - const overrided = getOverrideMetadata(prototype[name]); + const overrided = helpers_1.getOverrideMetadata(prototype[name]); const route = baseRoutes[overrided]; if (overrided && route) { - const interceptors = getInterceptors(prototype[name]) || []; - const baseInterceptors = getInterceptors(prototype[overrided]) || []; - const baseAction = getAction(prototype[overrided]); - setInterceptors([...interceptors, ...baseInterceptors], prototype[name]); - setAction(baseAction, prototype[name]); - setRoute(route.path, route.method, prototype[name]); + const interceptors = helpers_1.getInterceptors(prototype[name]) || []; + const baseInterceptors = helpers_1.getInterceptors(prototype[overrided]) || []; + const baseAction = helpers_1.getAction(prototype[overrided]); + helpers_1.setInterceptors([...interceptors, ...baseInterceptors], prototype[name]); + helpers_1.setAction(baseAction, prototype[name]); + helpers_1.setRoute(route.path, route.method, prototype[name]); route.override = true; } }); Object.keys(baseRoutes).forEach((name) => { const route = baseRoutes[name]; if (!route.override) { - setRoute(route.path, route.method, prototype[route.name]); + helpers_1.setRoute(route.path, route.method, prototype[route.name]); } }); }; exports.Override = (name) => (target, key, descriptor) => { - Reflect.defineMetadata(constants_2.OVERRIDE_METHOD_METADATA, name || `${key}Base`, target[key]); + Reflect.defineMetadata(constants_1.OVERRIDE_METHOD_METADATA, name || `${key}Base`, target[key]); return descriptor; }; -function getManyBase(target, name) { +function getManyBaseInit(target, name, dto, crudOptions) { const prototype = target.prototype; - prototype[name] = function (params, query) { + prototype[name] = function getManyBase(params, query) { const mergedOptions = this.getMergedOptions(params); return this.service.getMany(query, mergedOptions); }; - setParams(Object.assign({}, createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0), createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.QUERY, 1)), target, name); - setParamTypes([Object, dto_1.RestfulParamsDto], prototype, name); - setInterceptors([interceptors_1.RestfulQueryInterceptor], prototype[name]); - setAction(enums_1.CrudActions.ReadAll, prototype[name]); -} -function getOneBase(target, name) { + helpers_1.setParams(Object.assign({}, helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.QUERY, 1)), target, name); + helpers_1.setParamTypes([Object, dto_1.RestfulParamsDto], prototype, name); + helpers_1.setInterceptors([interceptors_1.RestfulQueryInterceptor], prototype[name]); + helpers_1.setAction(enums_1.CrudActions.ReadAll, prototype[name]); + helpers_1.setSwaggerParams(prototype[name], crudOptions); + helpers_1.setSwaggerQueryGetMany(prototype[name], dto.name); +} +function getOneBaseInit(target, name, dto, crudOptions) { const prototype = target.prototype; - prototype[name] = function (id, params, query) { + prototype[name] = function getOneBase(id, params, query) { const mergedOptions = this.getMergedOptions(params); return this.service.getOne(id, query, mergedOptions); }; - setParams(Object.assign({}, createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0, [setParseIntPipe()], 'id'), createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 1), createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.QUERY, 2)), target, name); - setParamTypes([Number, Object, dto_1.RestfulParamsDto], prototype, name); - setInterceptors([interceptors_1.RestfulQueryInterceptor], prototype[name]); - setAction(enums_1.CrudActions.ReadOne, prototype[name]); -} -function createOneBase(target, name, dto, crudOptions) { + helpers_1.setParams(Object.assign({}, helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0, [helpers_1.setParseIntPipe()], 'id'), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 1), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.QUERY, 2)), target, name); + helpers_1.setParamTypes([Number, Object, dto_1.RestfulParamsDto], prototype, name); + helpers_1.setInterceptors([interceptors_1.RestfulQueryInterceptor], prototype[name]); + helpers_1.setAction(enums_1.CrudActions.ReadOne, prototype[name]); + helpers_1.setSwaggerParams(prototype[name], crudOptions); + helpers_1.setSwaggerQueryGetOne(prototype[name], dto.name); +} +function createOneBaseInit(target, name, dto, crudOptions) { const prototype = target.prototype; - prototype[name] = function (params, body) { + prototype[name] = function createOneBase(params, body) { const paramsFilter = this.getParamsFilter(params); return this.service.createOne(body, paramsFilter); }; - setParams(Object.assign({}, createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0), createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ - setValidationPipe(crudOptions, enums_1.CrudValidate.CREATE), + helpers_1.setParams(Object.assign({}, helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ + helpers_1.setValidationPipe(crudOptions, enums_1.CrudValidate.CREATE), ])), target, name); - setParamTypes([Object, dto], prototype, name); - setAction(enums_1.CrudActions.CreateOne, prototype[name]); + helpers_1.setParamTypes([Object, dto], prototype, name); + helpers_1.setAction(enums_1.CrudActions.CreateOne, prototype[name]); + helpers_1.setSwaggerParams(prototype[name], crudOptions); } -function createManyBase(target, name, dto, crudOptions) { +function createManyBaseInit(target, name, dto, crudOptions) { const prototype = target.prototype; - prototype[name] = function (params, body) { + prototype[name] = function createManyBase(params, body) { const paramsFilter = this.getParamsFilter(params); return this.service.createMany(body, paramsFilter); }; @@ -136,53 +141,56 @@ function createManyBase(target, name, dto, crudOptions) { Type((t) => dto), __metadata("design:type", Array) ], BulkDto.prototype, "bulk", void 0); - setParams(Object.assign({}, createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0), createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ - setValidationPipe(crudOptions, enums_1.CrudValidate.CREATE), + helpers_1.setParams(Object.assign({}, helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ + helpers_1.setValidationPipe(crudOptions, enums_1.CrudValidate.CREATE), ])), target, name); - setParamTypes([Object, utils_1.hasValidator ? BulkDto : {}], prototype, name); - setAction(enums_1.CrudActions.CreateMany, prototype[name]); + helpers_1.setParamTypes([Object, utils_1.hasValidator ? BulkDto : {}], prototype, name); + helpers_1.setAction(enums_1.CrudActions.CreateMany, prototype[name]); + helpers_1.setSwaggerParams(prototype[name], crudOptions); } -function updateOneBase(target, name, dto, crudOptions) { +function updateOneBaseInit(target, name, dto, crudOptions) { const prototype = target.prototype; - prototype[name] = function (id, params, body) { + prototype[name] = function updateOneBase(id, params, body) { const paramsFilter = this.getParamsFilter(params); return this.service.updateOne(id, body, paramsFilter); }; - setParams(Object.assign({}, createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0, [setParseIntPipe()], 'id'), createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 1), createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 2, [ - setValidationPipe(crudOptions, enums_1.CrudValidate.UPDATE), + helpers_1.setParams(Object.assign({}, helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0, [helpers_1.setParseIntPipe()], 'id'), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 1), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 2, [ + helpers_1.setValidationPipe(crudOptions, enums_1.CrudValidate.UPDATE), ])), target, name); - setParamTypes([Number, Object, dto], prototype, name); - setAction(enums_1.CrudActions.UpdateOne, prototype[name]); + helpers_1.setParamTypes([Number, Object, dto], prototype, name); + helpers_1.setAction(enums_1.CrudActions.UpdateOne, prototype[name]); + helpers_1.setSwaggerParams(prototype[name], crudOptions); } -function deleteOneBase(target, name) { +function deleteOneBaseInit(target, name, crudOptions) { const prototype = target.prototype; - prototype[name] = function (id, params) { + prototype[name] = function deleteOneBase(id, params) { const paramsFilter = this.getParamsFilter(params); return this.service.deleteOne(id, paramsFilter); }; - setParams(Object.assign({}, createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0, [setParseIntPipe()], 'id'), createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 1)), target, name); - setParamTypes([Number, Object], prototype, name); - setAction(enums_1.CrudActions.DeleteOne, prototype[name]); -} -function getParamsFilter(prototype) { - prototype['getParamsFilter'] = function (params) { - if (!this.paramsFilter || !params) { + helpers_1.setParams(Object.assign({}, helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 0, [helpers_1.setParseIntPipe()], 'id'), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.PARAM, 1)), target, name); + helpers_1.setParamTypes([Number, Object], prototype, name); + helpers_1.setAction(enums_1.CrudActions.DeleteOne, prototype[name]); + helpers_1.setSwaggerParams(prototype[name], crudOptions); +} +function getParamsFilterInit(prototype, crudOptions) { + prototype['getParamsFilter'] = function getParamsFilter(params) { + if (!crudOptions.params || !params) { return []; } - const isArray = Array.isArray(this.paramsFilter); - return (isArray ? this.paramsFilter : Object.keys(this.paramsFilter)) + const isArray = Array.isArray(crudOptions.params); + return (isArray ? crudOptions.params : Object.keys(crudOptions.params)) .filter((field) => !!params[field]) .map((field) => ({ - field: isArray ? field : this.paramsFilter[field], + field: isArray ? field : crudOptions.params[field], operator: 'eq', value: params[field], })); }; } -function getMergedOptions(prototype) { - prototype['getMergedOptions'] = function (params) { +function getMergedOptionsInit(prototype, crudOptions) { + prototype['getMergedOptions'] = function getMergedOptions(params) { const paramsFilter = this.getParamsFilter(params); - const options = this.options || {}; + const options = Object.assign({}, crudOptions.options || {}); const optionsFilter = options.filter || []; const filter = [...optionsFilter, ...paramsFilter]; if (filter.length) { @@ -191,47 +199,4 @@ function getMergedOptions(prototype) { return options; }; } -function setRoute(path, method, func) { - Reflect.defineMetadata(constants_1.PATH_METADATA, path, func); - Reflect.defineMetadata(constants_1.METHOD_METADATA, method, func); -} -function setParamTypes(args, prototype, name) { - Reflect.defineMetadata(constants_1.PARAMTYPES_METADATA, args, prototype, name); -} -function setParams(metadata, target, name) { - Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, metadata, target, name); -} -function setInterceptors(interceptors, func) { - Reflect.defineMetadata(constants_1.INTERCEPTORS_METADATA, interceptors, func); -} -function setAction(action, func) { - Reflect.defineMetadata(constants_2.ACTION_NAME_METADATA, action, func); -} -function createParamMetadata(paramtype, index, pipes = [], data = undefined) { - return { - [`${paramtype}:${index}`]: { - index, - pipes, - data, - }, - }; -} -function getOverrideMetadata(func) { - return Reflect.getMetadata(constants_2.OVERRIDE_METHOD_METADATA, func); -} -function getInterceptors(func) { - return Reflect.getMetadata(constants_1.INTERCEPTORS_METADATA, func); -} -function getAction(func) { - return Reflect.getMetadata(constants_2.ACTION_NAME_METADATA, func); -} -function setValidationPipe(crudOptions = {}, group) { - const options = crudOptions.validation || {}; - return utils_1.hasValidator - ? new common_1.ValidationPipe(Object.assign({}, options, { groups: [group], transform: false })) - : undefined; -} -function setParseIntPipe() { - return utils_1.hasTypeorm ? new common_1.ParseIntPipe() : undefined; -} //# sourceMappingURL=crud.decorator.js.map \ No newline at end of file diff --git a/dist/decorators/crud.decorator.js.map b/dist/decorators/crud.decorator.js.map index b3f3b157..05028b89 100644 --- a/dist/decorators/crud.decorator.js.map +++ b/dist/decorators/crud.decorator.js.map @@ -1 +1 @@ -{"version":3,"file":"crud.decorator.js","sourceRoot":"","sources":["../../src/decorators/crud.decorator.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"crud.decorator.js","sourceRoot":"","sources":["../../src/decorators/crud.decorator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/decorators/feature-action.decorator.d.ts b/dist/decorators/feature-action.decorator.d.ts index 5bcca3cd..618d26a7 100644 --- a/dist/decorators/feature-action.decorator.d.ts +++ b/dist/decorators/feature-action.decorator.d.ts @@ -1,2 +1,5 @@ +import { Type } from '@nestjs/common'; export declare const Feature: (name: string) => (target: object, key?: any, descriptor?: any) => any; export declare const Action: (name: string) => (target: object, key?: any, descriptor?: any) => any; +export declare const getFeature: (target: Type) => any; +export declare const getAction: (target: Function) => any; diff --git a/dist/decorators/feature-action.decorator.js b/dist/decorators/feature-action.decorator.js index 2e349434..83279b6b 100644 --- a/dist/decorators/feature-action.decorator.js +++ b/dist/decorators/feature-action.decorator.js @@ -4,4 +4,6 @@ const common_1 = require("@nestjs/common"); const constants_1 = require("../constants"); exports.Feature = (name) => common_1.ReflectMetadata(constants_1.FEAUTURE_NAME_METADATA, name); exports.Action = (name) => common_1.ReflectMetadata(constants_1.ACTION_NAME_METADATA, name); +exports.getFeature = (target) => Reflect.getMetadata(constants_1.FEAUTURE_NAME_METADATA, target); +exports.getAction = (target) => Reflect.getMetadata(constants_1.ACTION_NAME_METADATA, target); //# sourceMappingURL=feature-action.decorator.js.map \ No newline at end of file diff --git a/dist/decorators/feature-action.decorator.js.map b/dist/decorators/feature-action.decorator.js.map index e1810d06..f9e56dda 100644 --- a/dist/decorators/feature-action.decorator.js.map +++ b/dist/decorators/feature-action.decorator.js.map @@ -1 +1 @@ -{"version":3,"file":"feature-action.decorator.js","sourceRoot":"","sources":["../../src/decorators/feature-action.decorator.ts"],"names":[],"mappings":";;AAAA,2CAAiD;AAEjD,4CAA4E;AAG/D,QAAA,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,wBAAe,CAAC,kCAAsB,EAAE,IAAI,CAAC,CAAC;AAC1E,QAAA,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,wBAAe,CAAC,gCAAoB,EAAE,IAAI,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"feature-action.decorator.js","sourceRoot":"","sources":["../../src/decorators/feature-action.decorator.ts"],"names":[],"mappings":";;AAAA,2CAAuD;AAEvD,4CAA4E;AAE/D,QAAA,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,wBAAe,CAAC,kCAAsB,EAAE,IAAI,CAAC,CAAC;AAC1E,QAAA,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,wBAAe,CAAC,gCAAoB,EAAE,IAAI,CAAC,CAAC;AACvE,QAAA,UAAU,GAAG,CAAU,MAAe,EAAE,EAAE,CACrD,OAAO,CAAC,WAAW,CAAC,kCAAsB,EAAE,MAAM,CAAC,CAAC;AACzC,QAAA,SAAS,GAAG,CAAC,MAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,gCAAoB,EAAE,MAAM,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/decorators/helpers.d.ts b/dist/decorators/helpers.d.ts new file mode 100644 index 00000000..91a52305 --- /dev/null +++ b/dist/decorators/helpers.d.ts @@ -0,0 +1,18 @@ +import { RequestMethod, ParseIntPipe, ValidationPipe } from '@nestjs/common'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; +import { CrudActions, CrudValidate } from '../enums'; +import { CrudOptions } from '../interfaces'; +export declare function setRoute(path: string, method: RequestMethod, func: Function): void; +export declare function setParamTypes(args: any[], prototype: any, name: string): void; +export declare function setParams(metadata: any, target: object, name: string): void; +export declare function setInterceptors(interceptors: any[], func: Function): void; +export declare function setAction(action: CrudActions, func: Function): void; +export declare function setSwaggerParams(func: Function, crudOptions: CrudOptions): void; +export declare function setSwaggerQueryGetOne(func: Function, name: string): void; +export declare function setSwaggerQueryGetMany(func: Function, name: string): void; +export declare function createParamMetadata(paramtype: RouteParamtypes, index: number, pipes?: any[], data?: any): any; +export declare function getOverrideMetadata(func: Function): string; +export declare function getInterceptors(func: Function): any[]; +export declare function getAction(func: Function): CrudActions; +export declare function setValidationPipe(crudOptions: CrudOptions, group: CrudValidate): ValidationPipe; +export declare function setParseIntPipe(): ParseIntPipe; diff --git a/dist/decorators/helpers.js b/dist/decorators/helpers.js new file mode 100644 index 00000000..0b60bcf5 --- /dev/null +++ b/dist/decorators/helpers.js @@ -0,0 +1,182 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const common_1 = require("@nestjs/common"); +const constants_1 = require("@nestjs/common/constants"); +const constants_2 = require("../constants"); +const utils_1 = require("../utils"); +function setRoute(path, method, func) { + Reflect.defineMetadata(constants_1.PATH_METADATA, path, func); + Reflect.defineMetadata(constants_1.METHOD_METADATA, method, func); +} +exports.setRoute = setRoute; +function setParamTypes(args, prototype, name) { + Reflect.defineMetadata(constants_1.PARAMTYPES_METADATA, args, prototype, name); +} +exports.setParamTypes = setParamTypes; +function setParams(metadata, target, name) { + Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, metadata, target, name); +} +exports.setParams = setParams; +function setInterceptors(interceptors, func) { + Reflect.defineMetadata(constants_1.INTERCEPTORS_METADATA, interceptors, func); +} +exports.setInterceptors = setInterceptors; +function setAction(action, func) { + Reflect.defineMetadata(constants_2.ACTION_NAME_METADATA, action, func); +} +exports.setAction = setAction; +function setSwaggerParams(func, crudOptions) { + if (utils_1.swagger && crudOptions.params) { + const list = Array.isArray(crudOptions.params) + ? crudOptions.params + : Object.keys(crudOptions.params); + if (list.length) { + const params = list.map((name) => ({ + name, + required: true, + in: 'path', + type: Number, + })); + setSwagger(params, func); + } + } +} +exports.setSwaggerParams = setSwaggerParams; +function setSwaggerQueryGetOne(func, name) { + if (utils_1.swagger) { + const params = [ + { + name: 'fields', + description: `${name} fields`, + required: false, + in: 'query', + type: String, + }, + { + name: 'join', + description: `Join relational entity with ${name}`, + required: false, + in: 'query', + type: String, + }, + { + name: 'cache', + description: `Reset cached result`, + required: false, + in: 'query', + type: Number, + }, + ]; + setSwagger(params, func); + } +} +exports.setSwaggerQueryGetOne = setSwaggerQueryGetOne; +function setSwaggerQueryGetMany(func, name) { + if (utils_1.swagger) { + const params = [ + { + name: 'fields', + description: `${name} fields in the collection`, + required: false, + in: 'query', + type: String, + }, + { + name: 'filter', + description: `Filter ${name} collection with condition`, + required: false, + in: 'query', + type: String, + }, + { + name: 'or', + description: `Filter ${name} collection with condition (OR)`, + required: false, + in: 'query', + type: String, + }, + { + name: 'sort', + description: `Sort ${name} collection by field and order`, + required: false, + in: 'query', + type: String, + }, + { + name: 'join', + description: `Join relational entity with ${name}`, + required: false, + in: 'query', + type: String, + }, + { + name: 'limit', + description: `Limit ${name} collection`, + required: false, + in: 'query', + type: Number, + }, + { + name: 'offset', + description: `Offset ${name} collection`, + required: false, + in: 'query', + type: Number, + }, + { + name: 'page', + description: `Set page of ${name} collection`, + required: false, + in: 'query', + type: Number, + }, + { + name: 'cache', + description: `Reset cached result`, + required: false, + in: 'query', + type: Number, + }, + ]; + setSwagger(params, func); + } +} +exports.setSwaggerQueryGetMany = setSwaggerQueryGetMany; +function createParamMetadata(paramtype, index, pipes = [], data = undefined) { + return { + [`${paramtype}:${index}`]: { + index, + pipes, + data, + }, + }; +} +exports.createParamMetadata = createParamMetadata; +function getOverrideMetadata(func) { + return Reflect.getMetadata(constants_2.OVERRIDE_METHOD_METADATA, func); +} +exports.getOverrideMetadata = getOverrideMetadata; +function getInterceptors(func) { + return Reflect.getMetadata(constants_1.INTERCEPTORS_METADATA, func); +} +exports.getInterceptors = getInterceptors; +function getAction(func) { + return Reflect.getMetadata(constants_2.ACTION_NAME_METADATA, func); +} +exports.getAction = getAction; +function setValidationPipe(crudOptions, group) { + const options = crudOptions.validation || {}; + return utils_1.hasValidator + ? new common_1.ValidationPipe(Object.assign({}, options, { groups: [group], transform: false })) + : undefined; +} +exports.setValidationPipe = setValidationPipe; +function setParseIntPipe() { + return utils_1.hasTypeorm ? new common_1.ParseIntPipe() : undefined; +} +exports.setParseIntPipe = setParseIntPipe; +function setSwagger(params, func) { + const metadata = Reflect.getMetadata(utils_1.swagger.DECORATORS.API_PARAMETERS, func) || []; + Reflect.defineMetadata(utils_1.swagger.DECORATORS.API_PARAMETERS, [...metadata, ...params], func); +} +//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/dist/decorators/helpers.js.map b/dist/decorators/helpers.js.map new file mode 100644 index 00000000..45931a53 --- /dev/null +++ b/dist/decorators/helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/decorators/helpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/interfaces/crud-controller.interface.d.ts b/dist/interfaces/crud-controller.interface.d.ts index 31a6be9d..cf2ce356 100644 --- a/dist/interfaces/crud-controller.interface.d.ts +++ b/dist/interfaces/crud-controller.interface.d.ts @@ -1,11 +1,10 @@ +import { ValidationPipeOptions } from '@nestjs/common'; import { ObjectLiteral } from './object-literal.interface'; import { RestfulOptions } from './restful-options.interface'; import { RestfulParamsDto } from '../dto/restful-params.dto'; import { RestfulService } from '../classes/restful-service.class'; export interface CrudController, T> { service: S; - paramsFilter?: string[] | ObjectLiteral; - options?: RestfulOptions; getManyBase?(params: ObjectLiteral, query: RestfulParamsDto): Promise; getOneBase?(id: number, params: ObjectLiteral, query: RestfulParamsDto): Promise; createOneBase?(params: ObjectLiteral, dto: T): Promise; @@ -16,3 +15,8 @@ export interface CrudController, T> { export interface EntitiesBulk { bulk: T[]; } +export interface CrudOptions { + options?: RestfulOptions; + params?: ObjectLiteral | string[]; + validation?: ValidationPipeOptions; +} diff --git a/dist/package.json b/dist/package.json index dbb8ad9b..de770b06 100644 --- a/dist/package.json +++ b/dist/package.json @@ -1,6 +1,6 @@ { "name": "@nestjsx/crud", - "version": "1.1.3", + "version": "2.0.0", "description": "NestJs CRUD for RESTful APIs", "main": "index.js", "types": "index.d.ts", diff --git a/dist/typeorm/repository-service.class.d.ts b/dist/typeorm/repository-service.class.d.ts index 99826e2b..24ea878e 100644 --- a/dist/typeorm/repository-service.class.d.ts +++ b/dist/typeorm/repository-service.class.d.ts @@ -19,7 +19,7 @@ export declare class RepositoryService extends RestfulService { updateOne(id: number, data: DeepPartial, paramsFilter?: FilterParamParsed[]): Promise; deleteOne(id: number, paramsFilter?: FilterParamParsed[]): Promise; private getOneOrFail; - private query; + private buildQuery; private plainToClass; private onInitMapEntityColumns; private onInitMapRelations; diff --git a/dist/typeorm/repository-service.class.js b/dist/typeorm/repository-service.class.js index b6fbddb4..61503e9f 100644 --- a/dist/typeorm/repository-service.class.js +++ b/dist/typeorm/repository-service.class.js @@ -31,7 +31,7 @@ class RepositoryService extends restful_service_class_1.RestfulService { } getMany(query = {}, options = {}) { return __awaiter(this, void 0, void 0, function* () { - const builder = yield this.query(query, options); + const builder = yield this.buildQuery(query, options); return builder.getMany(); }); } @@ -88,7 +88,7 @@ class RepositoryService extends restful_service_class_1.RestfulService { } getOneOrFail({ filter, fields, join, cache } = {}, options = {}) { return __awaiter(this, void 0, void 0, function* () { - const builder = yield this.query({ filter, fields, join, cache }, options, false); + const builder = yield this.buildQuery({ filter, fields, join, cache }, options, false); const found = yield builder.getOne(); if (!found) { this.throwNotFoundException(this.alias); @@ -96,7 +96,7 @@ class RepositoryService extends restful_service_class_1.RestfulService { return found; }); } - query(query, options = {}, many = true) { + buildQuery(query, options = {}, many = true) { return __awaiter(this, void 0, void 0, function* () { const mergedOptions = Object.assign({}, this.options, options); const select = this.getSelect(query, mergedOptions); @@ -176,11 +176,11 @@ class RepositoryService extends restful_service_class_1.RestfulService { if (query.cache === 0 && this.repo.metadata.connection.queryResultCache && this.repo.metadata.connection.queryResultCache.remove) { - const cacheId = this.getCacheId(query); + const cacheId = this.getCacheId(query, options); yield this.repo.metadata.connection.queryResultCache.remove([cacheId]); } if (mergedOptions.cache) { - const cacheId = this.getCacheId(query); + const cacheId = this.getCacheId(query, options); builder.cache(cacheId, mergedOptions.cache); } return builder; @@ -275,8 +275,8 @@ class RepositoryService extends restful_service_class_1.RestfulService { const { str, params } = this.mapOperatorsToQuery(cond, `orWhere${i}`); builder.orWhere(str, params); } - getCacheId(query) { - return JSON.stringify(Object.assign({}, query, { cache: undefined })); + getCacheId(query, options) { + return JSON.stringify({ query, options, cache: undefined }); } getSelect(query, options) { const allowed = this.getAllowedColumns(this.entityColumns, options); diff --git a/dist/typeorm/repository-service.class.js.map b/dist/typeorm/repository-service.class.js.map index 7199a621..ad7a485d 100644 --- a/dist/typeorm/repository-service.class.js.map +++ b/dist/typeorm/repository-service.class.js.map @@ -1 +1 @@ -{"version":3,"file":"repository-service.class.js","sourceRoot":"","sources":["../../src/typeorm/repository-service.class.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qCAAgG;AAChG,oEAA6D;AAC7D,yDAAiD;AAGjD,4EAAkE;AASlE,oCAAuC;AAEvC,MAAa,iBAAqB,SAAQ,sCAAiB;IAOzD,YAAsB,IAAmB;QACvC,KAAK,EAAE,CAAC;QADY,SAAI,GAAJ,IAAI,CAAe;QAN/B,YAAO,GAAmB,EAAE,CAAC;QAG/B,sBAAiB,GAAkB,EAAE,CAAC;QACtC,wBAAmB,GAAkB,EAAE,CAAC;QAK9C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAsB,CAAC;IAC1C,CAAC;IAED,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IACvC,CAAC;IAOY,OAAO,CAClB,QAA6B,EAAE,EAC/B,UAA0B,EAAE;;YAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KAAA;IAQY,MAAM,CACjB,EAAU,EACV,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,KAA0B,EAAE,EACjD,UAA0B,EAAE;;YAE5B,OAAO,IAAI,CAAC,YAAY,CACtB;gBACE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;gBACpD,MAAM;gBACN,IAAI;gBACJ,KAAK;aACN,EACD,OAAO,CACR,CAAC;QACJ,CAAC;KAAA;IAOY,SAAS,CAAC,IAAoB,EAAE,eAAoC,EAAE;;YACjF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAErD,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,wBAAwB,CAAC,8BAA8B,CAAC,CAAC;aAC/D;YAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,MAAM,CAAC,CAAC;QACrC,CAAC;KAAA;IAOY,UAAU,CACrB,IAAgC,EAChC,eAAoC,EAAE;;YAEtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC5C,IAAI,CAAC,wBAAwB,CAAC,8BAA8B,CAAC,CAAC;aAC/D;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;iBACnB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;iBAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,wBAAwB,CAAC,8BAA8B,CAAC,CAAC;aAC/D;YAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;KAAA;IAQY,SAAS,CACpB,EAAU,EACV,IAAoB,EACpB,eAAoC,EAAE;;YAGtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;gBACpC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC;aACtE,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAIrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,MAAM,CAAC,CAAC;QACrC,CAAC;KAAA;IAOY,SAAS,CAAC,EAAU,EAAE,eAAoC,EAAE;;YACvE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;gBACpC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC;aACtE,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;KAAA;IAEa,YAAY,CACxB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,KAA0B,EAAE,EACzD,UAA0B,EAAE;;YAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAClF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAErC,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAQa,KAAK,CACjB,KAA0B,EAC1B,UAA0B,EAAE,EAC5B,IAAI,GAAG,IAAI;;YAGX,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAGpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAGzD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAGvB,IAAI,mBAAW,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;gBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;iBACzE;aACF;YAED,MAAM,SAAS,GAAG,mBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,mBAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAEpC,IAAI,SAAS,IAAI,KAAK,EAAE;gBACtB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;oBAEtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBACrD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;iBAC9C;qBAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACpC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBACtD,OAAO,CAAC,OAAO,CACb,IAAI,kBAAQ,CAAC,CAAC,EAAE,EAAE,EAAE;wBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACxC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,EAAS,CAAC,CAAC;yBACpD;oBACH,CAAC,CAAC,CACH,CAAC;iBACH;qBAAM,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;oBAChC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC9C,OAAO,CAAC,OAAO,CACb,IAAI,kBAAQ,CAAC,CAAC,EAAE,EAAE,EAAE;wBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,EAAS,CAAC,CAAC;yBAC5D;oBACH,CAAC,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,OAAO,CAAC,QAAQ,CACd,IAAI,kBAAQ,CAAC,CAAC,EAAE,EAAE,EAAE;wBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,EAAS,CAAC,CAAC;yBAC5D;oBACH,CAAC,CAAC,CACH,CAAC;oBACF,OAAO,CAAC,OAAO,CACb,IAAI,kBAAQ,CAAC,CAAC,EAAE,EAAE,EAAE;wBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACxC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,EAAS,CAAC,CAAC;yBACpD;oBACH,CAAC,CAAC,CACH,CAAC;iBACH;aACF;iBAAM,IAAI,KAAK,EAAE;gBAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACxC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;iBACjD;aACF;iBAAM,IAAI,SAAS,EAAE;gBAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;iBAC1D;aACF;YAGD,IAAI,mBAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC3B,MAAM,WAAW,qBACZ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5C,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CACtC,CAAC;gBAEF,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;oBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;qBACnD;iBACF;aACF;YAED,IAAI,IAAI,EAAE;gBAER,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBAChD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAGtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBAChD,IAAI,IAAI,EAAE;oBACR,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpB;gBAGD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACvC,IAAI,IAAI,EAAE;oBACR,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpB;aACF;YAGD,IACE,KAAK,CAAC,KAAK,KAAK,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB;gBAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EACrD;gBACA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;aACxE;YAGD,IAAI,aAAa,CAAC,KAAK,EAAE;gBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;aAC7C;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;IAEO,YAAY,CAAC,IAAoB,EAAE,eAAoC,EAAE;QAC/E,IAAI,CAAC,uBAAQ,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,YAAY,CAAC,MAAM,EAAE;YACvB,KAAK,IAAI,MAAM,IAAI,YAAY,EAAE;gBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;aACnC;SACF;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAC7B,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,gCAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;YACjD,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAC5D,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,mBACX,IAAI,IACP,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBACnB,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;gBACzC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC;gBAC1E,gBAAgB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM;oBACxC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;oBACrB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CACtC,CAAC,gBAAgB,CAAC,YAAY;aAChC,IACD,EACF,EAAE,CACH,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,YAAoB;QACtC,QAAQ,YAAY,EAAE;YACpB,KAAK,aAAa,CAAC;YACnB,KAAK,YAAY;gBACf,OAAO,WAAW,CAAC;YAErB;gBACE,OAAO,UAAU,CAAC;SACrB;IACH,CAAC;IAEO,SAAS,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACtC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC3B,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,MAAM,GAAG,CAAC,CAAC;SAClE;IACH,CAAC;IAEO,iBAAiB,CAAC,OAAiB,EAAE,OAAsB;QACjE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YAClD,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,MAAM,CACZ,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM;gBACxC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC;gBACT,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM;oBACpC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC;oBAC7C,CAAC,CAAC,IAAI,CAAC,CACZ,CAAC;IACR,CAAC;IAEO,OAAO,CAAC,IAAqB,EAAE,WAAwB,EAAE,OAA8B;QAC7F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAElE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;YAED,MAAM,OAAO,GACX,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;gBACjC,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAElE,MAAM,MAAM,GAAG;gBACb,QAAQ,CAAC,gBAAgB;gBACzB,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,GAAG,OAAO;aACX,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YAE1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAC3B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW,CAAC,IAAuB,EAAE,CAAM,EAAE,OAA8B;QACjF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAEO,UAAU,CAAC,IAAuB,EAAE,CAAM,EAAE,OAA8B;QAChF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,KAA0B;QAC3C,OAAO,IAAI,CAAC,SAAS,mBAAM,KAAK,IAAE,KAAK,EAAE,SAAS,IAAG,CAAC;IACxD,CAAC;IAEO,SAAS,CAAC,KAA0B,EAAE,OAAuB;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEpE,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM;YACjC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;YACtE,CAAC,CAAC,OAAO,CAAC;QAEd,MAAM,MAAM,GAAG;YACb,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,OAAO;YACV,IAAI;SACL,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QAEvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,OAAO,CAAC,KAA0B,EAAE,IAAY;QACtD,OAAO,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAEO,OAAO,CAAC,KAA0B,EAAE,OAAuB;QACjE,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,OAAO,OAAO,CAAC,QAAQ;gBACrB,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ;oBAC/B,CAAC,CAAC,KAAK,CAAC,KAAK;oBACb,CAAC,CAAC,OAAO,CAAC,QAAQ;gBACpB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;SACjB;QAED,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,OAAO,OAAO,CAAC,QAAQ;gBACrB,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ;oBACjC,CAAC,CAAC,OAAO,CAAC,KAAK;oBACf,CAAC,CAAC,OAAO,CAAC,QAAQ;gBACpB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;SACnB;QAED,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAEO,OAAO,CAAC,KAA0B,EAAE,OAAuB;QACjE,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;YACpC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1B,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;gBACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC5B,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAEO,OAAO,CAAC,IAAqB;QACnC,IAAI,MAAM,GAAkB,EAAE,CAAC;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SAC1D;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,mBAAmB,CACzB,IAAuB,EACvB,KAAU;QAEV,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,GAAW,CAAC;QAChB,IAAI,MAAqB,CAAC;QAE1B,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACrB,KAAK,IAAI;gBACP,GAAG,GAAG,GAAG,KAAK,OAAO,KAAK,EAAE,CAAC;gBAC7B,MAAM;YAER,KAAK,IAAI;gBACP,GAAG,GAAG,GAAG,KAAK,QAAQ,KAAK,EAAE,CAAC;gBAC9B,MAAM;YAER,KAAK,IAAI;gBACP,GAAG,GAAG,GAAG,KAAK,OAAO,KAAK,EAAE,CAAC;gBAC7B,MAAM;YAER,KAAK,IAAI;gBACP,GAAG,GAAG,GAAG,KAAK,OAAO,KAAK,EAAE,CAAC;gBAC7B,MAAM;YAER,KAAK,KAAK;gBACR,GAAG,GAAG,GAAG,KAAK,QAAQ,KAAK,EAAE,CAAC;gBAC9B,MAAM;YAER,KAAK,KAAK;gBACR,GAAG,GAAG,GAAG,KAAK,QAAQ,KAAK,EAAE,CAAC;gBAC9B,MAAM;YAER,KAAK,QAAQ;gBACX,GAAG,GAAG,GAAG,KAAK,UAAU,KAAK,EAAE,CAAC;gBAChC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvC,MAAM;YAER,KAAK,MAAM;gBACT,GAAG,GAAG,GAAG,KAAK,UAAU,KAAK,EAAE,CAAC;gBAChC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvC,MAAM;YAER,KAAK,MAAM;gBACT,GAAG,GAAG,GAAG,KAAK,UAAU,KAAK,EAAE,CAAC;gBAChC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxC,MAAM;YAER,KAAK,MAAM;gBACT,GAAG,GAAG,GAAG,KAAK,cAAc,KAAK,EAAE,CAAC;gBACpC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxC,MAAM;YAER,KAAK,IAAI;gBACP,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACpD,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;iBACvE;gBACD,GAAG,GAAG,GAAG,KAAK,YAAY,KAAK,GAAG,CAAC;gBACnC,MAAM;YAER,KAAK,OAAO;gBACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACpD,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;iBACvE;gBACD,GAAG,GAAG,GAAG,KAAK,gBAAgB,KAAK,GAAG,CAAC;gBACvC,MAAM;YAER,KAAK,QAAQ;gBACX,GAAG,GAAG,GAAG,KAAK,UAAU,CAAC;gBACzB,MAAM,GAAG,EAAE,CAAC;gBACZ,MAAM;YAER,KAAK,SAAS;gBACZ,GAAG,GAAG,GAAG,KAAK,cAAc,CAAC;gBAC7B,MAAM,GAAG,EAAE,CAAC;gBACZ,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC9E,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;iBACvE;gBACD,GAAG,GAAG,GAAG,KAAK,aAAa,KAAK,UAAU,KAAK,GAAG,CAAC;gBACnD,MAAM,GAAG;oBACP,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC5B,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC7B,CAAC;gBACF,MAAM;YAER;gBACE,GAAG,GAAG,GAAG,KAAK,OAAO,KAAK,EAAE,CAAC;gBAC7B,MAAM;SACT;QAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAClC;QAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;CACF;AAnjBD,8CAmjBC"} \ No newline at end of file +{"version":3,"file":"repository-service.class.js","sourceRoot":"","sources":["../../src/typeorm/repository-service.class.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils.d.ts b/dist/utils.d.ts index 7e32b701..d6a61519 100644 --- a/dist/utils.d.ts +++ b/dist/utils.d.ts @@ -1,3 +1,4 @@ +export declare const swagger: any; export declare const hasValidator: boolean; export declare const hasTypeorm: boolean; export declare const isArrayFull: (obj: any) => boolean; diff --git a/dist/utils.js b/dist/utils.js index dc36c11b..61edb8c7 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -1,27 +1,33 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -let classValidator; -let classTransformer; -let typeorm; +let classValidatorPkg; +let classTransformerPkg; +let typeormPkg; +let swaggerPkg; try { - classValidator = require('class-validator'); + classValidatorPkg = require('class-validator'); } catch (error) { } try { - classTransformer = require('class-transformer'); + classTransformerPkg = require('class-transformer'); } catch (error) { } try { - typeorm = require('typeorm/decorator/entity/Entity'); + typeormPkg = require('typeorm/decorator/entity/Entity'); } catch (error) { } -exports.hasValidator = !!classValidator; -exports.hasTypeorm = !!typeorm; +try { + swaggerPkg = require('@nestjs/swagger/dist/constants'); +} +catch (error) { } +exports.swagger = swaggerPkg ? swaggerPkg : null; +exports.hasValidator = !!classValidatorPkg; +exports.hasTypeorm = !!typeormPkg; exports.isArrayFull = (obj) => Array.isArray(obj) && obj.length !== 0; -exports.mockValidatorDecorator = (name) => classValidator && classValidator[name] - ? classValidator[name] +exports.mockValidatorDecorator = (name) => classValidatorPkg && classValidatorPkg[name] + ? classValidatorPkg[name] : (...args) => (target, key) => { }; -exports.mockTransformerDecorator = (name) => classTransformer && classTransformer[name] - ? classTransformer[name] +exports.mockTransformerDecorator = (name) => classTransformerPkg && classTransformerPkg[name] + ? classTransformerPkg[name] : (...args) => (target, key) => { }; //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/utils.js.map b/dist/utils.js.map index d6211e18..f469b47a 100644 --- a/dist/utils.js.map +++ b/dist/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAAA,IAAI,cAAmB,CAAC;AACxB,IAAI,gBAAqB,CAAC;AAC1B,IAAI,OAAY,CAAC;AAEjB,IAAI;IACF,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7C;AAAC,OAAO,KAAK,EAAE,GAAE;AAClB,IAAI;IACF,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACjD;AAAC,OAAO,KAAK,EAAE,GAAE;AAClB,IAAI;IACF,OAAO,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;CACtD;AAAC,OAAO,KAAK,EAAE,GAAE;AAEL,QAAA,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC;AAChC,QAAA,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;AAEvB,QAAA,WAAW,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;AAE9D,QAAA,sBAAsB,GAAG,CAAC,IAAY,EAAE,EAAE,CACrD,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC;IACpC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;IACtB,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAE,CAAC,CAAC;AACjC,QAAA,wBAAwB,GAAG,CAAC,IAAY,EAAE,EAAE,CACvD,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,CAAC;IACxC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACxB,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAE,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAAA,IAAI,iBAAsB,CAAC;AAC3B,IAAI,mBAAwB,CAAC;AAC7B,IAAI,UAAe,CAAC;AACpB,IAAI,UAAe,CAAC;AAEpB,IAAI;IACF,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChD;AAAC,OAAO,KAAK,EAAE,GAAE;AAClB,IAAI;IACF,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACpD;AAAC,OAAO,KAAK,EAAE,GAAE;AAClB,IAAI;IACF,UAAU,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;CACzD;AAAC,OAAO,KAAK,EAAE,GAAE;AAClB,IAAI;IACF,UAAU,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC;CACxD;AAAC,OAAO,KAAK,EAAE,GAAE;AAEL,QAAA,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,QAAA,YAAY,GAAG,CAAC,CAAC,iBAAiB,CAAC;AACnC,QAAA,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;AAE1B,QAAA,WAAW,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;AAC9D,QAAA,sBAAsB,GAAG,CAAC,IAAY,EAAE,EAAE,CACrD,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,CAAC;IAC1C,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACzB,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAE,CAAC,CAAC;AACjC,QAAA,wBAAwB,GAAG,CAAC,IAAY,EAAE,EAAE,CACvD,mBAAmB,IAAI,mBAAmB,CAAC,IAAI,CAAC;IAC9C,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/integration/typeorm/package-lock.json b/integration/typeorm/package-lock.json index d7ba530d..04508fb7 100644 --- a/integration/typeorm/package-lock.json +++ b/integration/typeorm/package-lock.json @@ -4,34 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - } - } - }, "@nestjs/common": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-5.5.0.tgz", @@ -61,6 +33,18 @@ "uuid": "3.3.2" } }, + "@nestjs/swagger": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-2.5.1.tgz", + "integrity": "sha512-pixAD2+mOLOyvvFjkyRaPxNcFVygOBhCt1Jn2FO2QAYjuuxjaNckytMpJD+iMvLDCpb5eAbd7qjhJ6LiGhRLug==", + "requires": { + "@nestjs/common": "^5.0.0", + "@nestjs/core": "^5.0.0", + "lodash": "^4.17.4", + "path-to-regexp": "^2.2.1", + "swagger-ui-express": "^3.0.8" + } + }, "@nestjs/testing": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-5.5.0.tgz", @@ -79,9 +63,9 @@ } }, "@nestjsx/crud": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nestjsx/crud/-/crud-1.0.2.tgz", - "integrity": "sha512-Nm+m+7VJhwtTIby4SN8C8LpGsZRf0Uc0mqytemunH2OhN4//3Zbnnb63XtXzV+QymPe2ffOiTQSWWAfB4QcLOA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nestjsx/crud/-/crud-1.1.3.tgz", + "integrity": "sha512-pVKYr4lyNX8chL0ulSTK8hA6jf+/58RpT/Em2foPNLp0NmuxPcieIST3ACarA6BuJiavBCLbov9qNeRN6b6f6Q==" }, "@nuxtjs/opencollective": { "version": "0.1.0", @@ -94,23 +78,11 @@ "node-fetch": "^2.2.0" } }, - "@types/cookiejar": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.0.tgz", - "integrity": "sha512-EIjmpvnHj+T4nMcKwHwxZKUfDmphIKJc2qnEMhSoOvr1lYEQpuRKRz8orWr//krYIIArS/KGGLfL2YGVUYXmIA==", - "dev": true - }, "@types/events": { "version": "1.2.0", "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" }, - "@types/jest": { - "version": "23.3.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.3.10.tgz", - "integrity": "sha512-DC8xTuW/6TYgvEg3HEXS7cu9OijFqprVDXXiOcdOKZCU/5PJNLZU37VVvmZHdtMiGOa8wAA/We+JzbdxFzQTRQ==", - "dev": true - }, "@types/json5": { "version": "0.0.29", "resolved": "http://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -131,30 +103,10 @@ "@types/node": "*" } }, - "@types/superagent": { - "version": "3.8.5", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-3.8.5.tgz", - "integrity": "sha512-h7dQyzEGQFY3Ya8pIu0fxcWaMWC2DDSKR78gHrh6GVnXUqXo/+93wd4RObXA13rKp4ETyym3yq2A0AxROx9AxQ==", - "dev": true, - "requires": { - "@types/cookiejar": "*", - "@types/node": "*" - } - }, - "@types/supertest": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.7.tgz", - "integrity": "sha512-GibTh4OTkal71btYe2fpZP/rVHIPnnUsYphEaoywVHo+mo2a/LhlOFkIm5wdN0H0DA0Hx8x+tKgCYMD9elHu5w==", - "dev": true, - "requires": { - "@types/superagent": "*" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", - "dev": true + "@types/swagger-schema-official": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@types/swagger-schema-official/-/swagger-schema-official-2.0.14.tgz", + "integrity": "sha512-xPlMRuQvmyFVm/aPXy6L92aOJ31xWpPex6MnHYaTFc+weYfs7fDjNvn9xhl6he2wWEpkkRGUD9S754alW+dwzw==" }, "abbrev": { "version": "1.1.1", @@ -176,36 +128,6 @@ "negotiator": "0.6.1" } }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", - "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", - "dev": true - }, "ajv": { "version": "6.5.5", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", @@ -226,12 +148,6 @@ "string-width": "^2.0.0" } }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -555,15 +471,6 @@ "resolved": "https://registry.npmjs.org/append-field/-/append-field-0.1.0.tgz", "integrity": "sha1-bdxY+gg8e8VF08WZWygwzCNm1Eo=" }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -572,15 +479,6 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", @@ -593,83 +491,29 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-equal": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -685,18 +529,6 @@ "fastq": "^1.6.0" } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, "axios": { "version": "0.18.0", "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", @@ -706,254 +538,6 @@ "is-buffer": "^1.1.5" } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "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.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "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.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", - "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", - "dev": true, - "requires": { - "babel-plugin-istanbul": "^4.1.6", - "babel-preset-jest": "^23.2.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" - } - }, - "babel-plugin-jest-hoist": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", - "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-preset-jest": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", - "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^23.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "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": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1031,15 +615,6 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "binary-extensions": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", @@ -1097,50 +672,6 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, "buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", @@ -1160,12 +691,6 @@ "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "busboy": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", @@ -1205,38 +730,17 @@ } } }, - "callsites": { - "version": "2.0.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, - "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", - "dev": true, - "requires": { - "rsvp": "^3.3.3" - } - }, "capture-stack-trace": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", @@ -1476,12 +980,6 @@ "wrap-ansi": "^2.0.0" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -1510,21 +1008,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", @@ -1611,15 +1094,6 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", @@ -1630,24 +1104,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "core-js": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz", - "integrity": "sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1694,21 +1156,6 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", - "dev": true - }, - "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, "d": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", @@ -1717,39 +1164,6 @@ "es5-ext": "^0.10.9" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -1775,35 +1189,11 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, "deepmerge": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -1857,12 +1247,6 @@ } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -1878,21 +1262,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, "dicer": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", @@ -1908,15 +1277,6 @@ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -1942,16 +1302,6 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1970,39 +1320,6 @@ "once": "^1.4.0" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es5-ext": { "version": "0.10.46", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", @@ -2053,34 +1370,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, "esm": { "version": "3.0.84", "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.84.tgz", @@ -2091,18 +1380,6 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -2117,15 +1394,6 @@ "es5-ext": "~0.10.14" } }, - "exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", - "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", - "dev": true, - "requires": { - "merge": "^1.2.0" - } - }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -2140,44 +1408,6 @@ "strip-eof": "^1.0.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "expect": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", - "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^23.6.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0" - } - }, "express": { "version": "4.16.3", "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", @@ -2301,12 +1531,6 @@ } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -2328,21 +1552,6 @@ } } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, "fast-decode-uri-component": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.0.tgz", @@ -2372,12 +1581,6 @@ "deepmerge": "^2.1.1" } }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, "fast-safe-stringify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.0.tgz", @@ -2420,6 +1623,47 @@ "semver": "^5.5.0" } }, + "fastify-static": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fastify-static/-/fastify-static-1.0.0.tgz", + "integrity": "sha512-qavr2wsKCch/ZL4qa4twwkxO/g0e5UvwfZNbXo9xPNDMxrzgPkXa/UTHwfH58yWdLmKlEpFSj/5lo5ZFUQfJiw==", + "requires": { + "fastify-plugin": "^1.2.0", + "readable-stream": "^3.0.2", + "send": "^0.16.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.0.tgz", + "integrity": "sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fastify-swagger": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/fastify-swagger/-/fastify-swagger-0.16.2.tgz", + "integrity": "sha512-xA4x2LjupkqkPbbI6LYOoi4kQkQF2whA5s2w3TP7eM4qUKbSqBmE8Gias7wSvcTjmUIWfWlBcbSeuxNvrT1Qcg==", + "requires": { + "@types/swagger-schema-official": "^2.0.13", + "fastify-plugin": "^1.2.0", + "fastify-static": "^1.0.0", + "js-yaml": "^3.12.0" + } + }, "fastq": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", @@ -2428,15 +1672,6 @@ "reusify": "^1.0.0" } }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "requires": { - "bser": "^2.0.0" - } - }, "figlet": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.2.1.tgz", @@ -2450,35 +1685,6 @@ "escape-string-regexp": "^1.0.5" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, "finalhandler": { "version": "1.1.1", "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", @@ -2545,38 +1751,6 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "dev": true - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -2642,14 +1816,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2664,20 +1836,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2794,8 +1963,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -2807,7 +1975,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2822,7 +1989,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2830,14 +1996,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2856,7 +2020,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2937,8 +2100,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -2950,7 +2112,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3072,7 +2233,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3144,12 +2304,6 @@ } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -3166,15 +2320,6 @@ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -3188,25 +2333,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -3216,12 +2342,6 @@ "ini": "^1.3.4" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, "google-libphonenumber": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.1.tgz", @@ -3252,61 +2372,10 @@ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", - "dev": true, - "requires": { - "async": "^2.5.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { "ansi-regex": "^2.0.0" } @@ -3316,12 +2385,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3387,31 +2450,6 @@ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==" }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, "http-errors": { "version": "1.6.3", "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -3423,17 +2461,6 @@ "statuses": ">= 1.4.0 < 2" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", @@ -3459,16 +2486,6 @@ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3495,15 +2512,6 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -3523,12 +2531,6 @@ "kind-of": "^3.0.2" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -3543,21 +2545,6 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, "is-ci": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", @@ -3575,12 +2562,6 @@ "kind-of": "^3.0.2" } }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -3600,62 +2581,17 @@ } } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, "is-installed-globally": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", @@ -3672,15 +2608,6 @@ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", "dev": true }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-obj": { "version": "1.0.1", "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -3713,18 +2640,6 @@ } } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -3736,15 +2651,6 @@ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", @@ -3756,27 +2662,6 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -3793,2499 +2678,836 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, + "iterare": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-0.0.8.tgz", + "integrity": "sha1-qWmoCh+/9rePKHdllNe8K9+raq0=" + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "requires": { - "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "istanbul-api": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", - "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "async": "^2.1.4", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.1", - "istanbul-lib-hook": "^1.2.2", - "istanbul-lib-instrument": "^1.10.2", - "istanbul-lib-report": "^1.1.5", - "istanbul-lib-source-maps": "^1.2.6", - "istanbul-reports": "^1.5.1", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" + "is-buffer": "^1.1.5" } }, - "istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", - "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "append-transform": "^0.4.0" + "package-json": "^4.0.0" } }, - "istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", - "dev": true, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "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.2.1", - "semver": "^5.3.0" + "invert-kv": "^1.0.0" } }, - "istanbul-lib-report": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", - "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", - "dev": true, + "light-my-request": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-3.1.0.tgz", + "integrity": "sha512-ZSFO3XnQNSKsHR/E2ZMga5btdiIa3sNoT6CZIZ8Hr1VHJWBNcRRurVYpQlaJqvQqwg3aOl09QpVOnjB9ajnYHQ==", "requires": { - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" + "ajv": "^6.0.0", + "readable-stream": "^3.0.0" }, "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + "readable-stream": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz", + "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", "requires": { - "has-flag": "^1.0.0" + "safe-buffer": "~5.1.0" } } } }, - "istanbul-lib-source-maps": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", - "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", - "dev": true, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, - "istanbul-reports": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", - "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, - "iterare": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-0.0.8.tgz", - "integrity": "sha1-qWmoCh+/9rePKHdllNe8K9+raq0=" + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true }, - "jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", - "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", - "dev": true, - "requires": { - "import-local": "^1.0.0", - "jest-cli": "^23.6.0" - }, - "dependencies": { - "jest-cli": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", - "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.3.1", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-source-maps": "^1.2.4", - "jest-changed-files": "^23.4.2", - "jest-config": "^23.6.0", - "jest-environment-jsdom": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve-dependencies": "^23.6.0", - "jest-runner": "^23.6.0", - "jest-runtime": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "jest-watcher": "^23.4.0", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "prompts": "^0.1.9", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^11.0.0" - } - } - } + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true }, - "jest-changed-files": { - "version": "23.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", - "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", - "dev": true, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "requires": { - "throat": "^4.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "jest-config": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", - "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^23.6.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^23.4.0", - "jest-environment-node": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^23.6.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "pretty-format": "^23.6.0" - } - }, - "jest-diff": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", - "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", - "dev": true, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" + "es5-ext": "~0.10.2" } }, - "jest-docblock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", - "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", - "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "pretty-format": "^23.6.0" + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, - "jest-environment-jsdom": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", - "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0", - "jsdom": "^11.5.1" - } + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true }, - "jest-environment-node": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", - "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0" + "object-visit": "^1.0.0" } }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "jest-haste-map": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", - "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", - "dev": true, - "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "invariant": "^2.2.4", - "jest-docblock": "^23.2.0", - "jest-serializer": "^23.0.1", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "sane": "^2.0.0" - } - }, - "jest-jasmine2": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", - "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", - "dev": true, - "requires": { - "babel-traverse": "^6.0.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^23.6.0", - "is-generator-fn": "^1.0.0", - "jest-diff": "^23.6.0", - "jest-each": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "pretty-format": "^23.6.0" - } - }, - "jest-leak-detector": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", - "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", - "dev": true, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "pretty-format": "^23.6.0" + "mimic-fn": "^1.0.0" } }, - "jest-matcher-utils": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", - "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", - "dev": true, + "memoizee": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", + "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" + "d": "1", + "es5-ext": "^0.10.45", + "es6-weak-map": "^2.0.2", + "event-emitter": "^0.3.5", + "is-promise": "^2.1", + "lru-queue": "0.1", + "next-tick": "1", + "timers-ext": "^0.1.5" } }, - "jest-message-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", - "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", - "dev": true, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "middie": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/middie/-/middie-3.2.0.tgz", + "integrity": "sha512-anXJ0QJfQcgneQvcWAJBwVvNckRLI68zWNEUv/7/7z/Wb/UMFTHmugpM93T4Q75+DclC9FHdms8cTseDQEV3yA==", "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" + "path-to-regexp": "^2.0.0", + "reusify": "^1.0.2" } }, - "jest-mock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", - "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", - "dev": true + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" }, - "jest-regex-util": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", - "dev": true + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" }, - "jest-resolve": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", - "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", - "dev": true, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", "requires": { - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "realpath-native": "^1.0.0" + "mime-db": "~1.37.0" } }, - "jest-resolve-dependencies": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", - "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", - "dev": true, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "jest-regex-util": "^23.3.0", - "jest-snapshot": "^23.6.0" + "brace-expansion": "^1.1.7" } }, - "jest-runner": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", - "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-docblock": "^23.2.0", - "jest-haste-map": "^23.6.0", - "jest-jasmine2": "^23.6.0", - "jest-leak-detector": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-runtime": "^23.6.0", - "jest-util": "^23.4.0", - "jest-worker": "^23.2.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "is-plain-object": "^2.0.4" } } } }, - "jest-runtime": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", - "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", - "dev": true, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { - "babel-core": "^6.0.0", - "babel-plugin-istanbul": "^4.1.6", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^11.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } + "minimist": "0.0.8" } }, - "jest-serializer": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", - "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", - "dev": true + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "jest-snapshot": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", - "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", - "dev": true, + "multer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.3.0.tgz", + "integrity": "sha1-CSsmcPaEb6SRSWXvyM+Uwg/sbNI=", "requires": { - "babel-types": "^6.0.0", - "chalk": "^2.0.1", - "jest-diff": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-resolve": "^23.6.0", + "append-field": "^0.1.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.0", "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^23.6.0", - "semver": "^5.5.0" + "object-assign": "^3.0.0", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" } }, - "jest-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", - "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", - "dev": true, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^23.4.0", - "mkdirp": "^0.5.1", - "slash": "^1.0.0", - "source-map": "^0.6.0" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" } } }, - "jest-validate": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", - "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^23.6.0" - } - }, - "jest-watcher": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", - "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "string-length": "^2.0.0" - } - }, - "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", "dev": true, - "requires": { - "merge-stream": "^1.0.1" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "optional": true }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "parse5": { + "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, - "jsesc": { - "version": "1.3.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "next-tick": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, - "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "node-fetch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", + "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "nodemon": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.8.tgz", + "integrity": "sha512-CgC/JdCf+CT7Z+K6wWaV30t8GU1DPtXpr/6PuXC1/LboXCmUQNKOaz0AEMjoWDTt2AdHOBFxgv41dyC0i79SbA==", "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "chokidar": "^2.0.4", + "debug": "^3.1.0", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.3", + "semver": "^5.5.0", + "supports-color": "^5.2.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.2", + "update-notifier": "^2.5.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "abbrev": "1" } }, - "kleur": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", - "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==", - "dev": true - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "package-json": "^4.0.0" + "remove-trailing-separator": "^1.0.1" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "invert-kv": "^1.0.0" + "path-key": "^2.0.0" } }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "light-my-request": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-3.1.0.tgz", - "integrity": "sha512-ZSFO3XnQNSKsHR/E2ZMga5btdiIa3sNoT6CZIZ8Hr1VHJWBNcRRurVYpQlaJqvQqwg3aOl09QpVOnjB9ajnYHQ==", - "requires": { - "ajv": "^6.0.0", - "readable-stream": "^3.0.0" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { - "readable-stream": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz", - "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "is-descriptor": "^0.1.0" } } } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "object-hash": { + "version": "1.3.0", + "resolved": "http://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz", + "integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } }, - "loose-envify": { + "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "wrappy": "1" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "optional": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz", + "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==" }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "es5-ext": "~0.10.2" + "p-try": "^1.0.0" } }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "p-limit": "^1.1.0" } }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "tmpl": "1.0.x" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "packet-reader": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.3.1.tgz", + "integrity": "sha1-zWLmCvjX/qinBexP+ZCHHEaHHyc=" }, - "map-visit": { + "parent-require": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memoizee": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", - "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", - "requires": { - "d": "1", - "es5-ext": "^0.10.45", - "es6-weak-map": "^2.0.2", - "event-emitter": "^0.3.5", - "is-promise": "^2.1", - "lru-queue": "0.1", - "next-tick": "1", - "timers-ext": "^0.1.5" - } - }, - "merge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", - "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", - "dev": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "middie": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/middie/-/middie-3.2.0.tgz", - "integrity": "sha512-anXJ0QJfQcgneQvcWAJBwVvNckRLI68zWNEUv/7/7z/Wb/UMFTHmugpM93T4Q75+DclC9FHdms8cTseDQEV3yA==", - "requires": { - "path-to-regexp": "^2.0.0", - "reusify": "^1.0.2" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "requires": { - "mime-db": "~1.37.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.3.0.tgz", - "integrity": "sha1-CSsmcPaEb6SRSWXvyM+Uwg/sbNI=", - "requires": { - "append-field": "^0.1.0", - "busboy": "^0.2.11", - "concat-stream": "^1.5.0", - "mkdirp": "^0.5.1", - "object-assign": "^3.0.0", - "on-finished": "^2.3.0", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - } - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - } - } - }, - "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-notifier": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.3.0.tgz", - "integrity": "sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "nodemon": { - "version": "1.18.8", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.8.tgz", - "integrity": "sha512-CgC/JdCf+CT7Z+K6wWaV30t8GU1DPtXpr/6PuXC1/LboXCmUQNKOaz0AEMjoWDTt2AdHOBFxgv41dyC0i79SbA==", - "dev": true, - "requires": { - "chokidar": "^2.0.4", - "debug": "^3.1.0", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.3", - "semver": "^5.5.0", - "supports-color": "^5.2.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^2.5.0" - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "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-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nwsapi": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", - "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-hash": { - "version": "1.3.0", - "resolved": "http://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz", - "integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==" - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "optional": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz", - "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==" - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, - "packet-reader": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.3.1.tgz", - "integrity": "sha1-zWLmCvjX/qinBexP+ZCHHEaHHyc=" - }, - "parent-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", - "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=" - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "requires": { - "@types/node": "*" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pg": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-7.7.1.tgz", - "integrity": "sha512-p3I0mXOmUvCoVlCMFW6iYSrnguPol6q8He15NGgSIdM3sPGjFc+8JGCeKclw8ZR4ETd+Jxy2KNiaPUcocHZeMw==", - "requires": { - "buffer-writer": "2.0.0", - "packet-reader": "0.3.1", - "pg-connection-string": "0.1.3", - "pg-pool": "^2.0.4", - "pg-types": "~1.12.1", - "pgpass": "1.x", - "semver": "4.3.2" - }, - "dependencies": { - "semver": { - "version": "4.3.2", - "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=" - } - } - }, - "pg-connection-string": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", - "integrity": "sha1-2hhHsglA5C7hSSvq9l1J2RskXfc=" - }, - "pg-pool": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.5.tgz", - "integrity": "sha512-T4W9qzP2LjItXuXbW6jgAF2AY0jHp6IoTxRhM3GB7yzfBxzDnA3GCm0sAduzmmiCybMqD0+V1HiqIG5X2YWqlQ==" - }, - "pg-types": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.12.1.tgz", - "integrity": "sha1-1kCH45A7WP+q0nnnWVxSIIoUw9I=", - "requires": { - "postgres-array": "~1.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.0", - "postgres-interval": "^1.1.0" - } - }, - "pgpass": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz", - "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=", - "requires": { - "split": "^1.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pino": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/pino/-/pino-4.17.6.tgz", - "integrity": "sha512-LFDwmhyWLBnmwO/2UFbWu1jEGVDzaPupaVdx0XcZ3tIAx1EDEBauzxXf2S0UcFK7oe+X9MApjH0hx9U1XMgfCA==", - "requires": { - "chalk": "^2.4.1", - "fast-json-parse": "^1.0.3", - "fast-safe-stringify": "^1.2.3", - "flatstr": "^1.0.5", - "pino-std-serializers": "^2.0.0", - "pump": "^3.0.0", - "quick-format-unescaped": "^1.1.2", - "split2": "^2.2.0" - }, - "dependencies": { - "fast-safe-stringify": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", - "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==" - } - } - }, - "pino-std-serializers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.3.0.tgz", - "integrity": "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw==" - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postgres-array": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.3.tgz", - "integrity": "sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ==" - }, - "postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" - }, - "postgres-date": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", - "integrity": "sha1-4tiXAu/bJY/52c7g/pG9BpdSV6g=" - }, - "postgres-interval": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.1.2.tgz", - "integrity": "sha512-fC3xNHeTskCxL1dC8KOtxXt7YeFmlbTYtn7ul8MkVERuTmf7pI4DrkAxcw3kh1fQ9uz4wQmd03a1mRiXUZChfQ==", - "requires": { - "xtend": "^4.0.0" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "prompts": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", - "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", - "dev": true, - "requires": { - "kleur": "^2.0.1", - "sisteransi": "^0.1.1" - } - }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", - "dev": true - }, - "pstree.remy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.4.tgz", - "integrity": "sha512-3kSyTN/iTJMxtL87idnFgTyOp2vQ6B/49QcHUO26kh2M2qahlUivFI1zWJ9FRFPoB+KgcP820JMOuIhkBJAP3Q==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "quick-format-unescaped": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz", - "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", - "requires": { - "fast-safe-stringify": "^1.0.8" - } - }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "realpath-native": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz", - "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } + "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", + "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=" }, - "redis": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", - "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "requires": { - "double-ended-queue": "^2.1.0-0", - "redis-commands": "^1.2.0", - "redis-parser": "^2.6.0" + "@types/node": "*" } }, - "redis-commands": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz", - "integrity": "sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw==" - }, - "redis-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", - "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" }, - "reflect-metadata": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", - "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==" + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, - "regex-not": { + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "pg": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-7.7.1.tgz", + "integrity": "sha512-p3I0mXOmUvCoVlCMFW6iYSrnguPol6q8He15NGgSIdM3sPGjFc+8JGCeKclw8ZR4ETd+Jxy2KNiaPUcocHZeMw==", "requires": { - "rc": "^1.0.1" + "buffer-writer": "2.0.0", + "packet-reader": "0.3.1", + "pg-connection-string": "0.1.3", + "pg-pool": "^2.0.4", + "pg-types": "~1.12.1", + "pgpass": "1.x", + "semver": "4.3.2" + }, + "dependencies": { + "semver": { + "version": "4.3.2", + "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.2.tgz", + "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=" + } } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true + "pg-connection-string": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", + "integrity": "sha1-2hhHsglA5C7hSSvq9l1J2RskXfc=" }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "pg-pool": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.5.tgz", + "integrity": "sha512-T4W9qzP2LjItXuXbW6jgAF2AY0jHp6IoTxRhM3GB7yzfBxzDnA3GCm0sAduzmmiCybMqD0+V1HiqIG5X2YWqlQ==" }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "pg-types": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.12.1.tgz", + "integrity": "sha1-1kCH45A7WP+q0nnnWVxSIIoUw9I=", + "requires": { + "postgres-array": "~1.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.0", + "postgres-interval": "^1.1.0" + } }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, + "pgpass": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz", + "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=", "requires": { - "is-finite": "^1.0.0" + "split": "^1.0.0" } }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, + "pino": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/pino/-/pino-4.17.6.tgz", + "integrity": "sha512-LFDwmhyWLBnmwO/2UFbWu1jEGVDzaPupaVdx0XcZ3tIAx1EDEBauzxXf2S0UcFK7oe+X9MApjH0hx9U1XMgfCA==", "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "chalk": "^2.4.1", + "fast-json-parse": "^1.0.3", + "fast-safe-stringify": "^1.2.3", + "flatstr": "^1.0.5", + "pino-std-serializers": "^2.0.0", + "pump": "^3.0.0", + "quick-format-unescaped": "^1.1.2", + "split2": "^2.2.0" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } + "fast-safe-stringify": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", + "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==" } } }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "^4.13.1" - } + "pino-std-serializers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.3.0.tgz", + "integrity": "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw==" }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true, - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" - } + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "postgres-array": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.3.tgz", + "integrity": "sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ==" }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" + }, + "postgres-date": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", + "integrity": "sha1-4tiXAu/bJY/52c7g/pG9BpdSV6g=" + }, + "postgres-interval": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.1.2.tgz", + "integrity": "sha512-fC3xNHeTskCxL1dC8KOtxXt7YeFmlbTYtn7ul8MkVERuTmf7pI4DrkAxcw3kh1fQ9uz4wQmd03a1mRiXUZChfQ==", + "requires": { + "xtend": "^4.0.0" + } }, - "resolve": { - "version": "1.1.7", - "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, - "resolve-cwd": { + "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "requires": { - "resolve-from": "^3.0.0" + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" } }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "pstree.remy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.4.tgz", + "integrity": "sha512-3kSyTN/iTJMxtL87idnFgTyOp2vQ6B/49QcHUO26kh2M2qahlUivFI1zWJ9FRFPoB+KgcP820JMOuIhkBJAP3Q==", "dev": true }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, + "quick-format-unescaped": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz", + "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", "requires": { - "glob": "^7.0.5" + "fast-safe-stringify": "^1.0.8" } }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" }, - "rxjs": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", - "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", "requires": { - "tslib": "^1.9.0" + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, "requires": { - "ret": "~0.1.10" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } }, - "sane": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" }, "dependencies": { "arr-diff": { @@ -6538,6 +3760,12 @@ } } }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -6571,14 +3799,156 @@ "to-regex": "^3.0.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, + "redis": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", + "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", + "requires": { + "double-ended-queue": "^2.1.0-0", + "redis-commands": "^1.2.0", + "redis-parser": "^2.6.0" + } + }, + "redis-commands": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz", + "integrity": "sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw==" + }, + "redis-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", + "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" + }, + "reflect-metadata": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", + "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -6695,28 +4065,10 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sisteransi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", - "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "snapdragon": { "version": "0.8.2", @@ -6854,53 +4206,12 @@ "urix": "^0.1.0" } }, - "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.6" - } - }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", - "dev": true - }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", @@ -6931,29 +4242,6 @@ "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "sshpk": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", - "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6988,27 +4276,11 @@ "is-ci": "^1.1.0" } }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, "streamsearch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -7038,15 +4310,6 @@ } } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, "strip-eof": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -7058,66 +4321,6 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "dev": true, - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "supertest": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.3.0.tgz", - "integrity": "sha512-dMQSzYdaZRSANH5LL8kX3UpgK9G1LRh/jnggs/TI0W2Sz7rkMx9Y48uia3K9NgcaWEV28tYkBnXE4tiFC77ygQ==", - "dev": true, - "requires": { - "methods": "^1.1.2", - "superagent": "^3.8.3" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -7126,11 +4329,10 @@ "has-flag": "^3.0.0" } }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true + "swagger-ui-express": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-3.0.10.tgz", + "integrity": "sha1-xysyEHpXpHkT87RgA+j9Yqc3jqI=" }, "term-size": { "version": "1.2.0", @@ -7141,27 +4343,6 @@ "execa": "^0.7.0" } }, - "test-exclude": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", - "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } - } - }, "thenify": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", @@ -7178,12 +4359,6 @@ "thenify": ">= 3.1.0 < 4" } }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -7247,18 +4422,6 @@ "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-2.0.0.tgz", "integrity": "sha512-LcvsiH/JYkeItdNK5w8EJjlHcOuaULkpjA97cfLBMvylHKlXAcccNFqKUw4EGhbYaFnhn6q7xqfTyO0xIOj59Q==" }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -7310,74 +4473,6 @@ "nopt": "~1.0.10" } }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "ts-jest": { - "version": "23.10.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-23.10.5.tgz", - "integrity": "sha512-MRCs9qnGoyKgFc8adDEntAOP64fWK1vZKnOYU1o2HxaqjdJvGqmkLCPCnVq1/If4zkUmEjKPnCiUisTrlX2p2A==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "json5": "2.x", - "make-error": "1.x", - "mkdirp": "0.x", - "resolve": "1.x", - "semver": "^5.5", - "yargs-parser": "10.x" - }, - "dependencies": { - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, "ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", @@ -7459,70 +4554,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, - "tslint": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", - "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", - "dev": true, - "requires": { - "babel-code-frame": "^6.22.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.7.0", - "minimatch": "^3.0.4", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.27.2" - }, - "dependencies": { - "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - } - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, "type-is": { "version": "1.6.16", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", @@ -7563,26 +4594,6 @@ "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==", "dev": true }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, "undefsafe": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", @@ -7768,16 +4779,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -7788,16 +4789,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "validator": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz", @@ -7808,96 +4799,6 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "watch": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", - "dev": true, - "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -7920,12 +4821,6 @@ "string-width": "^2.1.1" } }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, "wrap-ansi": { "version": "2.1.0", "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -7979,27 +4874,12 @@ "signal-exit": "^3.0.2" } }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", diff --git a/integration/typeorm/package.json b/integration/typeorm/package.json index 2a82c612..6062305c 100644 --- a/integration/typeorm/package.json +++ b/integration/typeorm/package.json @@ -13,13 +13,15 @@ "dependencies": { "@nestjs/common": "^5.5.0", "@nestjs/core": "^5.5.0", + "@nestjs/swagger": "^2.5.1", "@nestjs/testing": "^5.5.0", "@nestjs/typeorm": "^5.2.2", - "@nestjsx/crud": "^1.0.2", + "@nestjsx/crud": "^1.1.3", "class-transformer": "^0.2.0", "class-validator": "^0.9.1", "fastify": "^1.13.1", "fastify-formbody": "^2.0.3", + "fastify-swagger": "^0.16.2", "js-yaml": "^3.12.0", "pg": "^7.7.1", "redis": "^2.8.0", diff --git a/integration/typeorm/src/companies/companies.controller.ts b/integration/typeorm/src/companies/companies.controller.ts index 465a1972..e7bd4780 100644 --- a/integration/typeorm/src/companies/companies.controller.ts +++ b/integration/typeorm/src/companies/companies.controller.ts @@ -1,22 +1,24 @@ import { Controller } from '@nestjs/common'; -import { Crud, CrudController, RestfulOptions } from '@nestjsx/crud'; +import { ApiUseTags } from '@nestjs/swagger'; +import { Crud, CrudController } from '@nestjsx/crud'; import { Company } from './company.entity'; import { CompaniesService } from './companies.service'; -@Crud(Company) -@Controller('/companies') -export class CompaniesController implements CrudController { - paramsFilter = []; - - options: RestfulOptions = { +@Crud(Company, { + options: { join: { - users: {}, + users: { + exclude: ['password'], + }, }, sort: [{ field: 'id', order: 'DESC' }], - maxLimit: 10, + maxLimit: 5, cache: 3000, - }; - + }, +}) +@ApiUseTags('companies') +@Controller('companies') +export class CompaniesController implements CrudController { constructor(public service: CompaniesService) {} } diff --git a/integration/typeorm/src/index.ts b/integration/typeorm/src/index.ts index cbe4a46b..6fcf354f 100644 --- a/integration/typeorm/src/index.ts +++ b/integration/typeorm/src/index.ts @@ -1,14 +1,26 @@ import { NestFactory } from '@nestjs/core'; import { ValidationPipe } from '@nestjs/common'; import { FastifyAdapter } from '@nestjs/core/adapters'; +import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; import { HttpExceptionFilter } from './https-exception.filter'; import { AppModule } from './app.module'; async function bootstrap() { - const app = await NestFactory.create(AppModule, new FastifyAdapter()); + // const app = await NestFactory.create(AppModule, new FastifyAdapter()); + const app = await NestFactory.create(AppModule); + app.useGlobalPipes(new ValidationPipe()); app.useGlobalFilters(new HttpExceptionFilter()); + + const options = new DocumentBuilder() + .setTitle('@nestjsx/crud Swagger example') + .setDescription('Some cool description') + .setVersion('1.0') + .build(); + const document = SwaggerModule.createDocument(app, options); + SwaggerModule.setup('docs', app, document); + await app.listen(process.env.PORT || 3333); } diff --git a/integration/typeorm/src/users/users.controller.ts b/integration/typeorm/src/users/users.controller.ts index 9659b68d..57e4c2ae 100644 --- a/integration/typeorm/src/users/users.controller.ts +++ b/integration/typeorm/src/users/users.controller.ts @@ -1,10 +1,22 @@ import { Controller } from '@nestjs/common'; +import { ApiUseTags } from '@nestjs/swagger'; import { Crud, CrudController, RestfulOptions } from '@nestjsx/crud'; import { User } from './user.entity'; import { UsersService } from './users.service'; @Crud(User, { + options: { + exclude: ['password'], + join: { + profile: { + allow: ['firstName', 'lastName'], + }, + }, + maxLimit: 10, + cache: 3000, + }, + params: ['companyId'], validation: { validationError: { target: false, @@ -12,20 +24,8 @@ import { UsersService } from './users.service'; }, }, }) +@ApiUseTags('company users') @Controller('/companies/:companyId/users') export class UsersController implements CrudController { - paramsFilter = ['companyId']; - - options: RestfulOptions = { - exclude: ['password'], - join: { - profile: { - allow: ['firstName', 'lastName'], - }, - }, - maxLimit: 10, - cache: 3000, - }; - constructor(public service: UsersService) {} } diff --git a/jest.json b/jest.json index 663d1f0d..a046e059 100644 --- a/jest.json +++ b/jest.json @@ -18,6 +18,7 @@ "!src/**/dto/*.ts", "!src/**/index.ts", "!src/**/enums/*.ts", + "!src/decorators/feature-action.decorator.ts", "!src/constants.ts", "!src/crud.module.ts", "!src/operators.list.ts", diff --git a/package.json b/package.json index 1e825ae2..a802c2ff 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "@nestjsx/crud", - "version": "0.1.6", + "version": "2.0.0", "description": "Nest CRUD for RESTful APIs", "scripts": { "docker:up": "docker-compose up -d", "docker:down": "docker-compose down", - "test:e2e": "node_modules/.bin/jest --verbose --coverage --config ./jest.json --coverageReporters=text-lcov", + "test:e2e": "node_modules/.bin/jest --verbose --coverage --config ./jest.json", "pretest:e2e": "npm run test:e2e:typeorm:prepare", "posttest:e2e": "npm run test:e2e:typeorm:clean", "test:e2e:typeorm:prepare": "cd integration/typeorm && npm run db:sync -- -f=e2e/orm && npm run db:flush -- -f=e2e/orm && npm run db:seeds -- -f=e2e/orm", diff --git a/src/classes/restful-service.class.ts b/src/classes/restful-service.class.ts index b77147a9..b413ae8b 100644 --- a/src/classes/restful-service.class.ts +++ b/src/classes/restful-service.class.ts @@ -18,8 +18,7 @@ export abstract class RestfulService { throw new BadRequestException(msg); } - throwNotFoundException(name?: string): NotFoundException { - const msg = name ? `${name} not found` : `Not found`; - throw new NotFoundException(msg); + throwNotFoundException(name: string): NotFoundException { + throw new NotFoundException(`${name} not found`); } } diff --git a/src/decorators/crud.decorator.ts b/src/decorators/crud.decorator.ts index 2eff8a7b..3a8b027d 100644 --- a/src/decorators/crud.decorator.ts +++ b/src/decorators/crud.decorator.ts @@ -1,38 +1,51 @@ -import { RequestMethod, ParseIntPipe, ValidationPipe, ValidationPipeOptions } from '@nestjs/common'; +import { RequestMethod } from '@nestjs/common'; import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; -import { - PATH_METADATA, - METHOD_METADATA, - INTERCEPTORS_METADATA, - ROUTE_ARGS_METADATA, - PARAMTYPES_METADATA, -} from '@nestjs/common/constants'; import { RestfulParamsDto } from '../dto'; import { CrudActions, CrudValidate } from '../enums'; import { RestfulQueryInterceptor } from '../interceptors'; -import { FilterParamParsed, ObjectLiteral, EntitiesBulk } from '../interfaces'; -import { ACTION_NAME_METADATA, OVERRIDE_METHOD_METADATA } from '../constants'; +import { CrudOptions, FilterParamParsed, ObjectLiteral, EntitiesBulk } from '../interfaces'; +import { OVERRIDE_METHOD_METADATA } from '../constants'; +import { mockValidatorDecorator, mockTransformerDecorator, hasValidator } from '../utils'; import { - mockValidatorDecorator, - mockTransformerDecorator, - hasValidator, - hasTypeorm, -} from '../utils'; + getOverrideMetadata, + getInterceptors, + getAction, + setAction, + setInterceptors, + setParamTypes, + setParams, + setRoute, + setSwaggerQueryGetMany, + setSwaggerQueryGetOne, + setSwaggerParams, + setValidationPipe, + setParseIntPipe, + createParamMetadata, +} from './helpers'; + +type BaseRouteName = + | 'getManyBase' + | 'getOneBase' + | 'createOneBase' + | 'createManyBase' + | 'updateOneBase' + | 'deleteOneBase'; interface BaseRoutes { [key: string]: { - name: string; + name: BaseRouteName; path: string; method: RequestMethod; override?: boolean; }; } -interface CrudOptions { - validation?: ValidationPipeOptions; -} - +/** + * @Crud() decorator + * @param dto + * @param crudOptions + */ export const Crud = (dto: any, crudOptions: CrudOptions = {}) => (target: object) => { const prototype = (target as any).prototype; const baseRoutes: BaseRoutes = { @@ -69,15 +82,15 @@ export const Crud = (dto: any, crudOptions: CrudOptions = {}) => (target: object }; // set helpers - getParamsFilter(prototype); - getMergedOptions(prototype); + getParamsFilterInit(prototype, crudOptions); + getMergedOptionsInit(prototype, crudOptions); // set routes - getManyBase(target, baseRoutes.getManyBase.name); - getOneBase(target, baseRoutes.getOneBase.name); - createOneBase(target, baseRoutes.createOneBase.name, dto, crudOptions); - createManyBase(target, baseRoutes.createManyBase.name, dto, crudOptions); - updateOneBase(target, baseRoutes.updateOneBase.name, dto, crudOptions); - deleteOneBase(target, baseRoutes.deleteOneBase.name); + getManyBaseInit(target, baseRoutes.getManyBase.name, dto, crudOptions); + getOneBaseInit(target, baseRoutes.getOneBase.name, dto, crudOptions); + createOneBaseInit(target, baseRoutes.createOneBase.name, dto, crudOptions); + createManyBaseInit(target, baseRoutes.createManyBase.name, dto, crudOptions); + updateOneBaseInit(target, baseRoutes.updateOneBase.name, dto, crudOptions); + deleteOneBaseInit(target, baseRoutes.deleteOneBase.name, crudOptions); // method override Object.getOwnPropertyNames(prototype).forEach((name) => { @@ -110,9 +123,11 @@ export const Crud = (dto: any, crudOptions: CrudOptions = {}) => (target: object }); }; -export const Override = ( - name?: 'getManyBase' | 'getOneBase' | 'createOneBase' | 'updateOneBase' | 'deleteOneBase', -) => (target, key, descriptor: PropertyDescriptor) => { +/** + * @Override() decorator + * @param name + */ +export const Override = (name?: BaseRouteName) => (target, key, descriptor: PropertyDescriptor) => { Reflect.defineMetadata(OVERRIDE_METHOD_METADATA, name || `${key}Base`, target[key]); return descriptor; }; @@ -122,10 +137,10 @@ export const Override = ( /** * Get meny entities base route */ -function getManyBase(target: object, name: string) { +function getManyBaseInit(target: object, name: string, dto: any, crudOptions: CrudOptions) { const prototype = (target as any).prototype; - prototype[name] = function(params: ObjectLiteral, query: RestfulParamsDto) { + prototype[name] = function getManyBase(params: ObjectLiteral, query: RestfulParamsDto) { const mergedOptions = this.getMergedOptions(params); return this.service.getMany(query, mergedOptions); @@ -142,16 +157,22 @@ function getManyBase(target: object, name: string) { setParamTypes([Object, RestfulParamsDto], prototype, name); setInterceptors([RestfulQueryInterceptor], prototype[name]); setAction(CrudActions.ReadAll, prototype[name]); + setSwaggerParams(prototype[name], crudOptions); + setSwaggerQueryGetMany(prototype[name], dto.name); } /** * Get one entity base route */ -function getOneBase(target: object, name: string) { +function getOneBaseInit(target: object, name: string, dto: any, crudOptions: CrudOptions) { const prototype = (target as any).prototype; - prototype[name] = function(id: string, params: ObjectLiteral, query: RestfulParamsDto) { + prototype[name] = function getOneBase( + id: string, + params: ObjectLiteral, + query: RestfulParamsDto, + ) { const mergedOptions = this.getMergedOptions(params); return this.service.getOne(id, query, mergedOptions); @@ -169,16 +190,18 @@ function getOneBase(target: object, name: string) { setParamTypes([Number, Object, RestfulParamsDto], prototype, name); setInterceptors([RestfulQueryInterceptor], prototype[name]); setAction(CrudActions.ReadOne, prototype[name]); + setSwaggerParams(prototype[name], crudOptions); + setSwaggerQueryGetOne(prototype[name], dto.name); } /** * Create one entity base route */ -function createOneBase(target: object, name: string, dto: any, crudOptions: CrudOptions) { +function createOneBaseInit(target: object, name: string, dto: any, crudOptions: CrudOptions) { const prototype = (target as any).prototype; - prototype[name] = function(params: ObjectLiteral, body: any) { + prototype[name] = function createOneBase(params: ObjectLiteral, body: any) { const paramsFilter = this.getParamsFilter(params); return this.service.createOne(body, paramsFilter); @@ -196,15 +219,16 @@ function createOneBase(target: object, name: string, dto: any, crudOptions: Crud ); setParamTypes([Object, dto], prototype, name); setAction(CrudActions.CreateOne, prototype[name]); + setSwaggerParams(prototype[name], crudOptions); } /** * Create many entities base route */ -function createManyBase(target: object, name: string, dto: any, crudOptions: CrudOptions) { +function createManyBaseInit(target: object, name: string, dto: any, crudOptions: CrudOptions) { const prototype = (target as any).prototype; - prototype[name] = function(params: ObjectLiteral, body: any) { + prototype[name] = function createManyBase(params: ObjectLiteral, body: any) { const paramsFilter = this.getParamsFilter(params); return this.service.createMany(body, paramsFilter); @@ -235,15 +259,16 @@ function createManyBase(target: object, name: string, dto: any, crudOptions: Cru ); setParamTypes([Object, hasValidator ? BulkDto : {}], prototype, name); setAction(CrudActions.CreateMany, prototype[name]); + setSwaggerParams(prototype[name], crudOptions); } /** * Update one entity base route */ -function updateOneBase(target: object, name: string, dto: any, crudOptions: CrudOptions) { +function updateOneBaseInit(target: object, name: string, dto: any, crudOptions: CrudOptions) { const prototype = (target as any).prototype; - prototype[name] = function(id: string, params: ObjectLiteral, body) { + prototype[name] = function updateOneBase(id: string, params: ObjectLiteral, body) { const paramsFilter = this.getParamsFilter(params); return this.service.updateOne(id, body, paramsFilter); @@ -262,15 +287,16 @@ function updateOneBase(target: object, name: string, dto: any, crudOptions: Crud ); setParamTypes([Number, Object, dto], prototype, name); setAction(CrudActions.UpdateOne, prototype[name]); + setSwaggerParams(prototype[name], crudOptions); } /** * Delete one entity route base */ -function deleteOneBase(target: object, name: string) { +function deleteOneBaseInit(target: object, name: string, crudOptions: CrudOptions) { const prototype = (target as any).prototype; - prototype[name] = function(id: number, params: ObjectLiteral) { + prototype[name] = function deleteOneBase(id: number, params: ObjectLiteral) { const paramsFilter = this.getParamsFilter(params); return this.service.deleteOne(id, paramsFilter); }; @@ -285,24 +311,27 @@ function deleteOneBase(target: object, name: string) { ); setParamTypes([Number, Object], prototype, name); setAction(CrudActions.DeleteOne, prototype[name]); + setSwaggerParams(prototype[name], crudOptions); } // Helpers -function getParamsFilter(prototype: any) { - prototype['getParamsFilter'] = function(params: ObjectLiteral): FilterParamParsed[] { - if (!this.paramsFilter || !params) { +function getParamsFilterInit(prototype: any, crudOptions: CrudOptions) { + prototype['getParamsFilter'] = function getParamsFilter( + params: ObjectLiteral, + ): FilterParamParsed[] { + if (!crudOptions.params || !params) { return []; } - const isArray = Array.isArray(this.paramsFilter); + const isArray = Array.isArray(crudOptions.params); - return (isArray ? this.paramsFilter : Object.keys(this.paramsFilter)) + return (isArray ? crudOptions.params : Object.keys(crudOptions.params)) .filter((field) => !!params[field]) .map( (field) => ({ - field: isArray ? field : this.paramsFilter[field], + field: isArray ? field : crudOptions.params[field], operator: 'eq', value: params[field], } as FilterParamParsed), @@ -310,10 +339,10 @@ function getParamsFilter(prototype: any) { }; } -function getMergedOptions(prototype: any) { - prototype['getMergedOptions'] = function(params: ObjectLiteral) { +function getMergedOptionsInit(prototype: any, crudOptions: CrudOptions) { + prototype['getMergedOptions'] = function getMergedOptions(params: ObjectLiteral) { const paramsFilter = this.getParamsFilter(params); - const options = this.options || {}; + const options = Object.assign({}, crudOptions.options || {}); const optionsFilter = options.filter || []; const filter = [...optionsFilter, ...paramsFilter]; @@ -324,73 +353,3 @@ function getMergedOptions(prototype: any) { return options; }; } - -// Metadata Setters - -function setRoute(path: string, method: RequestMethod, func: Function) { - Reflect.defineMetadata(PATH_METADATA, path, func); - Reflect.defineMetadata(METHOD_METADATA, method, func); -} - -function setParamTypes(args: any[], prototype: any, name: string) { - Reflect.defineMetadata(PARAMTYPES_METADATA, args, prototype, name); -} - -function setParams(metadata: any, target: object, name: string) { - Reflect.defineMetadata(ROUTE_ARGS_METADATA, metadata, target, name); -} - -function setInterceptors(interceptors: any[], func: Function) { - Reflect.defineMetadata(INTERCEPTORS_METADATA, interceptors, func); -} - -function setAction(action: CrudActions, func: Function) { - Reflect.defineMetadata(ACTION_NAME_METADATA, action, func); -} - -// Metadata Getters - -function createParamMetadata( - paramtype: RouteParamtypes, - index: number, - pipes: any[] = [], - data = undefined, -): any { - return { - [`${paramtype}:${index}`]: { - index, - pipes, - data, - }, - }; -} - -function getOverrideMetadata(func: Function): string { - return Reflect.getMetadata(OVERRIDE_METHOD_METADATA, func); -} - -function getInterceptors(func: Function): any[] { - return Reflect.getMetadata(INTERCEPTORS_METADATA, func); -} - -function getAction(func: Function): CrudActions { - return Reflect.getMetadata(ACTION_NAME_METADATA, func); -} - -// Pipes - -function setValidationPipe(crudOptions: CrudOptions = {}, group: CrudValidate) { - const options = crudOptions.validation || {}; - - return hasValidator - ? new ValidationPipe({ - ...options, - groups: [group], - transform: false, - }) - : undefined; -} - -function setParseIntPipe() { - return hasTypeorm ? new ParseIntPipe() : undefined; -} diff --git a/src/decorators/feature-action.decorator.ts b/src/decorators/feature-action.decorator.ts index 6d517f7c..70564ec5 100644 --- a/src/decorators/feature-action.decorator.ts +++ b/src/decorators/feature-action.decorator.ts @@ -1,14 +1,9 @@ -import { ReflectMetadata } from '@nestjs/common'; +import { ReflectMetadata, Type } from '@nestjs/common'; import { FEAUTURE_NAME_METADATA, ACTION_NAME_METADATA } from '../constants'; -// import { CrudActions } from '../enums'; export const Feature = (name: string) => ReflectMetadata(FEAUTURE_NAME_METADATA, name); export const Action = (name: string) => ReflectMetadata(ACTION_NAME_METADATA, name); -// export const ReadAll = () => Action(CrudActions.ReadAll); -// export const ReadOne = () => Action(CrudActions.ReadOne); -// export const CreateMany = () => Action(CrudActions.CreateMany); -// export const CreateOne = () => Action(CrudActions.CreateOne); -// export const UpdateOne = () => Action(CrudActions.UpdateOne); -// export const DeleteOne = () => Action(CrudActions.DeleteOne); -// export const DeleteAll = () => Action(CrudActions.DeleteAll); +export const getFeature = (target: Type) => + Reflect.getMetadata(FEAUTURE_NAME_METADATA, target); +export const getAction = (target: Function) => Reflect.getMetadata(ACTION_NAME_METADATA, target); diff --git a/src/decorators/helpers.ts b/src/decorators/helpers.ts new file mode 100644 index 00000000..2c683acb --- /dev/null +++ b/src/decorators/helpers.ts @@ -0,0 +1,204 @@ +import { RequestMethod, ParseIntPipe, ValidationPipe } from '@nestjs/common'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; +import { + PATH_METADATA, + METHOD_METADATA, + INTERCEPTORS_METADATA, + ROUTE_ARGS_METADATA, + PARAMTYPES_METADATA, +} from '@nestjs/common/constants'; + +import { CrudActions, CrudValidate } from '../enums'; +import { CrudOptions } from '../interfaces'; +import { ACTION_NAME_METADATA, OVERRIDE_METHOD_METADATA } from '../constants'; +import { swagger, hasValidator, hasTypeorm } from '../utils'; + +export function setRoute(path: string, method: RequestMethod, func: Function) { + Reflect.defineMetadata(PATH_METADATA, path, func); + Reflect.defineMetadata(METHOD_METADATA, method, func); +} + +export function setParamTypes(args: any[], prototype: any, name: string) { + Reflect.defineMetadata(PARAMTYPES_METADATA, args, prototype, name); +} + +export function setParams(metadata: any, target: object, name: string) { + Reflect.defineMetadata(ROUTE_ARGS_METADATA, metadata, target, name); +} + +export function setInterceptors(interceptors: any[], func: Function) { + Reflect.defineMetadata(INTERCEPTORS_METADATA, interceptors, func); +} + +export function setAction(action: CrudActions, func: Function) { + Reflect.defineMetadata(ACTION_NAME_METADATA, action, func); +} + +export function setSwaggerParams(func: Function, crudOptions: CrudOptions) { + if (swagger && crudOptions.params) { + const list = Array.isArray(crudOptions.params) + ? crudOptions.params + : Object.keys(crudOptions.params); + + if (list.length) { + const params = list.map((name: string) => ({ + name, + required: true, + in: 'path', + type: Number, + })); + + setSwagger(params, func); + } + } +} + +export function setSwaggerQueryGetOne(func: Function, name: string) { + if (swagger) { + const params = [ + { + name: 'fields', + description: `${name} fields`, + required: false, + in: 'query', + type: String, + }, + { + name: 'join', + description: `Join relational entity with ${name}`, + required: false, + in: 'query', + type: String, + }, + { + name: 'cache', + description: `Reset cached result`, + required: false, + in: 'query', + type: Number, + }, + ]; + + setSwagger(params, func); + } +} + +export function setSwaggerQueryGetMany(func: Function, name: string) { + if (swagger) { + const params = [ + { + name: 'fields', + description: `${name} fields in the collection`, + required: false, + in: 'query', + type: String, + }, + { + name: 'filter', + description: `Filter ${name} collection with condition`, + required: false, + in: 'query', + type: String, + }, + { + name: 'or', + description: `Filter ${name} collection with condition (OR)`, + required: false, + in: 'query', + type: String, + }, + { + name: 'sort', + description: `Sort ${name} collection by field and order`, + required: false, + in: 'query', + type: String, + }, + { + name: 'join', + description: `Join relational entity with ${name}`, + required: false, + in: 'query', + type: String, + }, + { + name: 'limit', + description: `Limit ${name} collection`, + required: false, + in: 'query', + type: Number, + }, + { + name: 'offset', + description: `Offset ${name} collection`, + required: false, + in: 'query', + type: Number, + }, + { + name: 'page', + description: `Set page of ${name} collection`, + required: false, + in: 'query', + type: Number, + }, + { + name: 'cache', + description: `Reset cached result`, + required: false, + in: 'query', + type: Number, + }, + ]; + + setSwagger(params, func); + } +} + +export function createParamMetadata( + paramtype: RouteParamtypes, + index: number, + pipes: any[] = [], + data = undefined, +): any { + return { + [`${paramtype}:${index}`]: { + index, + pipes, + data, + }, + }; +} + +export function getOverrideMetadata(func: Function): string { + return Reflect.getMetadata(OVERRIDE_METHOD_METADATA, func); +} + +export function getInterceptors(func: Function): any[] { + return Reflect.getMetadata(INTERCEPTORS_METADATA, func); +} + +export function getAction(func: Function): CrudActions { + return Reflect.getMetadata(ACTION_NAME_METADATA, func); +} + +export function setValidationPipe(crudOptions: CrudOptions, group: CrudValidate) { + const options = crudOptions.validation || {}; + + return hasValidator + ? new ValidationPipe({ + ...options, + groups: [group], + transform: false, + }) + : undefined; +} + +export function setParseIntPipe() { + return hasTypeorm ? new ParseIntPipe() : undefined; +} + +function setSwagger(params: any[], func: Function) { + const metadata = Reflect.getMetadata(swagger.DECORATORS.API_PARAMETERS, func) || []; + Reflect.defineMetadata(swagger.DECORATORS.API_PARAMETERS, [...metadata, ...params], func); +} diff --git a/src/interfaces/crud-controller.interface.ts b/src/interfaces/crud-controller.interface.ts index 2830d7be..4e1cfd37 100644 --- a/src/interfaces/crud-controller.interface.ts +++ b/src/interfaces/crud-controller.interface.ts @@ -1,3 +1,5 @@ +import { ValidationPipeOptions } from '@nestjs/common'; + import { ObjectLiteral } from './object-literal.interface'; import { RestfulOptions } from './restful-options.interface'; import { RestfulParamsDto } from '../dto/restful-params.dto'; @@ -5,8 +7,6 @@ import { RestfulService } from '../classes/restful-service.class'; export interface CrudController, T> { service: S; - paramsFilter?: string[] | ObjectLiteral; - options?: RestfulOptions; getManyBase?(params: ObjectLiteral, query: RestfulParamsDto): Promise; getOneBase?(id: number, params: ObjectLiteral, query: RestfulParamsDto): Promise; createOneBase?(params: ObjectLiteral, dto: T): Promise; @@ -18,3 +18,9 @@ export interface CrudController, T> { export interface EntitiesBulk { bulk: T[]; } + +export interface CrudOptions { + options?: RestfulOptions; + params?: ObjectLiteral | string[]; + validation?: ValidationPipeOptions; +} diff --git a/src/typeorm/repository-service.class.ts b/src/typeorm/repository-service.class.ts index 72edaee8..87ac604a 100644 --- a/src/typeorm/repository-service.class.ts +++ b/src/typeorm/repository-service.class.ts @@ -45,7 +45,7 @@ export class RepositoryService extends RestfulService { query: RequestParamsParsed = {}, options: RestfulOptions = {}, ): Promise { - const builder = await this.query(query, options); + const builder = await this.buildQuery(query, options); return builder.getMany(); } @@ -151,7 +151,7 @@ export class RepositoryService extends RestfulService { { filter, fields, join, cache }: RequestParamsParsed = {}, options: RestfulOptions = {}, ): Promise { - const builder = await this.query({ filter, fields, join, cache }, options, false); + const builder = await this.buildQuery({ filter, fields, join, cache }, options, false); const found = await builder.getOne(); if (!found) { @@ -167,7 +167,7 @@ export class RepositoryService extends RestfulService { * @param options * @param many */ - private async query( + private async buildQuery( query: RequestParamsParsed, options: RestfulOptions = {}, many = true, @@ -282,13 +282,13 @@ export class RepositoryService extends RestfulService { this.repo.metadata.connection.queryResultCache && this.repo.metadata.connection.queryResultCache.remove ) { - const cacheId = this.getCacheId(query); + const cacheId = this.getCacheId(query, options); await this.repo.metadata.connection.queryResultCache.remove([cacheId]); } // set cache if (mergedOptions.cache) { - const cacheId = this.getCacheId(query); + const cacheId = this.getCacheId(query, options); builder.cache(cacheId, mergedOptions.cache); } @@ -414,8 +414,8 @@ export class RepositoryService extends RestfulService { builder.orWhere(str, params); } - private getCacheId(query: RequestParamsParsed): string { - return JSON.stringify({ ...query, cache: undefined }); + private getCacheId(query: RequestParamsParsed, options: RestfulOptions): string { + return JSON.stringify({ query, options, cache: undefined }); } private getSelect(query: RequestParamsParsed, options: RestfulOptions): string[] { diff --git a/src/utils.ts b/src/utils.ts index db1a1380..87029161 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,27 +1,31 @@ -let classValidator: any; -let classTransformer: any; -let typeorm: any; +let classValidatorPkg: any; +let classTransformerPkg: any; +let typeormPkg: any; +let swaggerPkg: any; try { - classValidator = require('class-validator'); + classValidatorPkg = require('class-validator'); } catch (error) {} try { - classTransformer = require('class-transformer'); + classTransformerPkg = require('class-transformer'); } catch (error) {} try { - typeorm = require('typeorm/decorator/entity/Entity'); + typeormPkg = require('typeorm/decorator/entity/Entity'); +} catch (error) {} +try { + swaggerPkg = require('@nestjs/swagger/dist/constants'); } catch (error) {} -export const hasValidator = !!classValidator; -export const hasTypeorm = !!typeorm; +export const swagger = swaggerPkg ? swaggerPkg : null; +export const hasValidator = !!classValidatorPkg; +export const hasTypeorm = !!typeormPkg; export const isArrayFull = (obj) => Array.isArray(obj) && obj.length !== 0; - export const mockValidatorDecorator = (name: string) => - classValidator && classValidator[name] - ? classValidator[name] + classValidatorPkg && classValidatorPkg[name] + ? classValidatorPkg[name] : (...args: any[]) => (target, key) => {}; export const mockTransformerDecorator = (name: string) => - classTransformer && classTransformer[name] - ? classTransformer[name] + classTransformerPkg && classTransformerPkg[name] + ? classTransformerPkg[name] : (...args: any[]) => (target, key) => {}; diff --git a/test/typeorm/filtered-route.spec.ts b/test/typeorm/filtered-route.spec.ts index 5c0a44cb..310e082d 100644 --- a/test/typeorm/filtered-route.spec.ts +++ b/test/typeorm/filtered-route.spec.ts @@ -7,27 +7,23 @@ import { UserProfile, User, Company, ormConfig } from '../../integration/typeorm import { Crud, CrudController, RestfulOptions, Feature, Action, Override } from '../../src'; import { RepositoryService } from '../../src/typeorm'; -let serviceOptions: RestfulOptions = { - limit: 10, - maxLimit: 20, -}; - -let controllerOptions: RestfulOptions = {}; - @Injectable() class UsersService extends RepositoryService { - protected options = serviceOptions; + protected options: RestfulOptions = { + limit: 10, + maxLimit: 20, + }; + constructor(@InjectRepository(User) repo) { super(repo); } } -@Crud(User) +@Crud(User, { + params: ['companyId'], +}) @Controller('/companies/:companyId/users') class UsersController implements CrudController { - options = controllerOptions; - paramsFilter = ['companyId']; - constructor(public service: UsersService) {} } diff --git a/test/typeorm/simple-route.spec.ts b/test/typeorm/simple-route.spec.ts index f7541a1e..71863eee 100644 --- a/test/typeorm/simple-route.spec.ts +++ b/test/typeorm/simple-route.spec.ts @@ -7,36 +7,34 @@ import { UserProfile, User, Company, ormConfig } from '../../integration/typeorm import { Crud, CrudController, RestfulOptions, Feature, Action, Override } from '../../src'; import { RepositoryService } from '../../src/typeorm'; -let serviceOptions: RestfulOptions = { - persist: ['id'], - filter: [{ field: 'id', operator: 'notnull' }], - sort: [{ field: 'id', order: 'ASC' }], -}; - -let controllerOptions: RestfulOptions = { - cache: 1000, - filter: [{ field: 'id', operator: 'notnull' }], - join: { - users: { - persist: ['id'], - exclude: ['password'], - }, - }, -}; - @Injectable() class CompaniesService extends RepositoryService { - protected options = serviceOptions; + protected options: RestfulOptions = { + persist: ['id'], + filter: [{ field: 'id', operator: 'notnull' }], + sort: [{ field: 'id', order: 'ASC' }], + }; + constructor(@InjectRepository(Company) repo) { super(repo); } } @Feature('Companies') -@Crud(Company) +@Crud(Company, { + options: { + cache: 1000, + filter: [{ field: 'id', operator: 'notnull' }], + join: { + users: { + persist: ['id'], + exclude: ['password'], + }, + }, + }, +}) @Controller('companies') class CompaniesController implements CrudController { - options = controllerOptions; constructor(public service: CompaniesService) {} @Action('test')