From ece8623582bd1c7f3053987e188a0782fb010ced Mon Sep 17 00:00:00 2001 From: ede3238 Date: Tue, 24 Apr 2018 22:24:26 +0200 Subject: [PATCH 1/7] Updates packages to run with angular packages --- README.md | 16 +++++----------- index.ts | 2 +- package.json | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 78e77d6..f9d580c 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,14 @@ It contains: - Annotations for http methods (@GET, @POST, @PUT, @DELETE, @OPTIONS, @HEAD, @PATCH) - Annotations for adding headers, setting produces results and intercepting response - - Params anotations + - Params annotations ### Installation Install through npm: ```sh -$ npm install ngx-http-rest --save +$ npm install ngx-http-annotations --save ``` @@ -39,7 +39,7 @@ export class AppModule { ```typescript -import { HttpRestService, GET, Path, PathParam, QueryParam, QueryParams } from 'ngx-http-rest'; +import { HttpRestService, GET, Path, PathParam, QueryParam, QueryParams } from 'ngx-http-annotations'; import { Injectable } from '@angular/core'; import RestConfig from 'app/core/configs/rest.config'; @@ -71,7 +71,6 @@ export class SomeRestService extends HttpRestService { getGoodsItemById(@PathParam('id') itemId: number): any {} @GET - @Interceptor(SomeRestService.logInterceptor) /* Set response interceptor */ @Path('/:id/child/:childId') /* Few path params */ getChildrenOfSomeGoods(@PathParam('id') id: number, @PathParam('childId') childId: number @@ -83,13 +82,9 @@ export class SomeRestService extends HttpRestService { createGoods(@Body /* Body of POST request */ goodsObject: GoodsItem): any {} @DELETE - @NoResponse /* This method doesn`t process the body of response */ @Path('/:id') removeGoodsById(@PathParam('id') itemId: number): any {} - private static logInterceptor(response: any) { - console.log(response); - } } ``` @@ -125,9 +120,8 @@ Available annotations: - @Path - set path of url for request. Combined class @Path annotation value and current method @Path. Path params passed with ":". For example @Path('/someurl/:someParam') - @Headers - set headers for request (if annotate class, then all class methods getting this headers. method Headers merge with class Headers) - @Produces - setting expected response type. By default Reponse transformed by .json() method - - @NoResponse (alias for @Produces(null)) - if expected empty response body, you need to set that annotation - - @DefaultResponse (alias for @Produces(Response)) - response doesn`t transformed with .json() method. Returned pure Response object -3) Parameters + - @Observes - setting http observes. + 3) Parameters - @PathParam (or @Path) - pass current parameter by name to collected url. Example: someFunc(@PathParam('id') itemId: number) {} - @Body - pass body object into request. Ex.: someMethod(@Body bodyObject: any){} - @QueryParam - pass single query parameters into request. Ex.: someMethod(@QueryParam('a') a: any, @QueryParam('b') b: any) {}. someMethod(1, 2) -> ..requested_url..?a=1&b=2 diff --git a/index.ts b/index.ts index bb7f54f..49a2db3 100644 --- a/index.ts +++ b/index.ts @@ -17,7 +17,7 @@ export let Headers = headers; export let Produces = produces; // Request methods -export const GET = HttpRestUtils.requestMethod('Get') +export let GET = HttpRestUtils.requestMethod('Get'); export let POST = HttpRestUtils.requestMethod('Post'); export let PUT = HttpRestUtils.requestMethod('Put'); export let DELETE = HttpRestUtils.requestMethod('Delete'); diff --git a/package.json b/package.json index 10aa12e..ff101a5 100644 --- a/package.json +++ b/package.json @@ -1,21 +1,30 @@ { - "name": "ngx-http-rest", - "version": "0.4.0", + "name": "ngx-http-annotations", + "version": "0.5.0", + "main": "index.ts", + "files": [ + "src" + ], + "directories": { + "src": "src" + }, "devDependencies": { "@angular/http": "^4.0.0", "@angular/core": "^4.0.0", "rxjs": "^5.0.1", "typescript": "^2.2.2" }, - "author": "Mixalloff", + "author": "Mixalloff, manudss", "keywords": [ "angular", "ng2", "ngx", "http", "rest", + "annotations", + "annotations", "api" ], "license": "MIT", - "repository": "https://github.com/Mixalloff/ngx-http-rest" + "repository": "https://github.com/manudss/ngx-http-annotations" } \ No newline at end of file From 38e601a7917ec0407a83fd1f4742c8c014da5e9d Mon Sep 17 00:00:00 2001 From: ede3238 Date: Tue, 24 Apr 2018 22:57:29 +0200 Subject: [PATCH 2/7] Updates packages to run with angular packages 2 --- index.ts => index.d.ts | 4 ++-- package.json | 4 ++-- ...gx-http-rest.module.ts => ngx-http-annotations.module.ts} | 2 +- ...{ngx-http-rest.utils.ts => ngx-http-annotations.utils.ts} | 0 tsconfig.json | 5 +++++ 5 files changed, 10 insertions(+), 5 deletions(-) rename index.ts => index.d.ts (89%) rename src/{ngx-http-rest.module.ts => ngx-http-annotations.module.ts} (88%) rename src/{ngx-http-rest.utils.ts => ngx-http-annotations.utils.ts} (100%) diff --git a/index.ts b/index.d.ts similarity index 89% rename from index.ts rename to index.d.ts index 49a2db3..b0fa1ec 100644 --- a/index.ts +++ b/index.d.ts @@ -1,6 +1,6 @@ -export * from './src/ngx-http-rest.module'; +export * from './src/ngx-http-annotations.module'; import { Response } from '@angular/http'; -import { HttpRestUtils, path, body, query, headers, produces, observe } from "ngx-http-rest/src/ngx-http-rest.utils"; +import { HttpRestUtils, path, body, query, headers, produces, observe } from "src/ngx-http-annotations.utils"; export let Path = path; export let PathParam = path; diff --git a/package.json b/package.json index ff101a5..d8beaff 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ngx-http-annotations", - "version": "0.5.0", - "main": "index.ts", + "version": "0.5.1", + "main": "index.d.ts", "files": [ "src" ], diff --git a/src/ngx-http-rest.module.ts b/src/ngx-http-annotations.module.ts similarity index 88% rename from src/ngx-http-rest.module.ts rename to src/ngx-http-annotations.module.ts index 066e50a..eb910e9 100644 --- a/src/ngx-http-rest.module.ts +++ b/src/ngx-http-annotations.module.ts @@ -1,5 +1,5 @@ import { NgModule, APP_INITIALIZER } from '@angular/core'; -import { HttpRestUtils } from "./ngx-http-rest.utils"; +import { HttpRestUtils } from "./ngx-http-annotations.utils"; import { HttpClient } from "@angular/common/http"; import { HttpClientModule } from "@angular/common/http"; diff --git a/src/ngx-http-rest.utils.ts b/src/ngx-http-annotations.utils.ts similarity index 100% rename from src/ngx-http-rest.utils.ts rename to src/ngx-http-annotations.utils.ts diff --git a/tsconfig.json b/tsconfig.json index 40fe5c0..89c7f4a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,6 +16,11 @@ "target": "es5", "typeRoots": [ "../node_modules/@types" + ], + "files": [ + "index.d.ts", + "src/ngx-http-annotations.module.ts", + "src/ngx-http-annotations.module.ts" ] } } From e6d6ff4a1bb11d46398207c42dc7c3f2caf20e21 Mon Sep 17 00:00:00 2001 From: Emmanuel De Saint Steban Date: Tue, 29 May 2018 17:05:48 +0200 Subject: [PATCH 3/7] publication version 0.5.2 to npm with use ng-packagr --- .metadata.json | 4 + dist/ngx-http-annotations/README.md | 137 +++++ .../bundles/ngx-http-annotations.umd.js | 514 ++++++++++++++++++ .../bundles/ngx-http-annotations.umd.js.map | 1 + .../bundles/ngx-http-annotations.umd.min.js | 2 + .../ngx-http-annotations.umd.min.js.map | 1 + .../esm2015/ngx-http-annotations.js | 10 + .../esm2015/public_api.js | 28 + .../src/ngx-http-annotations.module.js | 38 ++ .../esm2015/src/ngx-http-annotations.utils.js | 302 ++++++++++ .../esm5/ngx-http-annotations.js | 10 + dist/ngx-http-annotations/esm5/public_api.js | 28 + .../esm5/src/ngx-http-annotations.module.js | 42 ++ .../esm5/src/ngx-http-annotations.utils.js | 415 ++++++++++++++ .../fesm2015/ngx-http-annotations.js | 325 +++++++++++ .../fesm2015/ngx-http-annotations.js.map | 1 + .../fesm5/ngx-http-annotations.js | 440 +++++++++++++++ .../fesm5/ngx-http-annotations.js.map | 1 + .../ngx-http-annotations.d.ts | 4 + .../ngx-http-annotations.metadata.json | 1 + dist/ngx-http-annotations/package.json | 57 ++ dist/ngx-http-annotations/public_api.d.ts | 19 + .../src/ngx-http-annotations.module.d.ts | 4 + .../src/ngx-http-annotations.utils.d.ts | 27 + ng-package.json | 17 + package.json | 31 +- index.d.ts => public_api.ts | 3 +- src/ngx-http-annotations.module.ts | 2 +- src/ngx-http-annotations.utils.ts | 5 +- tsconfig.json | 8 +- 30 files changed, 2465 insertions(+), 12 deletions(-) create mode 100644 .metadata.json create mode 100644 dist/ngx-http-annotations/README.md create mode 100644 dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js create mode 100644 dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js.map create mode 100644 dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js create mode 100644 dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js.map create mode 100644 dist/ngx-http-annotations/esm2015/ngx-http-annotations.js create mode 100644 dist/ngx-http-annotations/esm2015/public_api.js create mode 100644 dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.module.js create mode 100644 dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.utils.js create mode 100644 dist/ngx-http-annotations/esm5/ngx-http-annotations.js create mode 100644 dist/ngx-http-annotations/esm5/public_api.js create mode 100644 dist/ngx-http-annotations/esm5/src/ngx-http-annotations.module.js create mode 100644 dist/ngx-http-annotations/esm5/src/ngx-http-annotations.utils.js create mode 100644 dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js create mode 100644 dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js.map create mode 100644 dist/ngx-http-annotations/fesm5/ngx-http-annotations.js create mode 100644 dist/ngx-http-annotations/fesm5/ngx-http-annotations.js.map create mode 100644 dist/ngx-http-annotations/ngx-http-annotations.d.ts create mode 100644 dist/ngx-http-annotations/ngx-http-annotations.metadata.json create mode 100644 dist/ngx-http-annotations/package.json create mode 100644 dist/ngx-http-annotations/public_api.d.ts create mode 100644 dist/ngx-http-annotations/src/ngx-http-annotations.module.d.ts create mode 100644 dist/ngx-http-annotations/src/ngx-http-annotations.utils.d.ts create mode 100644 ng-package.json rename index.d.ts => public_api.ts (89%) diff --git a/.metadata.json b/.metadata.json new file mode 100644 index 0000000..14a3744 --- /dev/null +++ b/.metadata.json @@ -0,0 +1,4 @@ +{ + "skipMetadataEmit": true, + "skipTemplateCodegen": true +} \ No newline at end of file diff --git a/dist/ngx-http-annotations/README.md b/dist/ngx-http-annotations/README.md new file mode 100644 index 0000000..e434ed1 --- /dev/null +++ b/dist/ngx-http-annotations/README.md @@ -0,0 +1,137 @@ +# ngx-http-annotations + +This library allows to interact with rest api in your angular app. +It contains: + + - Annotations for http methods (@GET, @POST, @PUT, @DELETE, @OPTIONS, @HEAD, @PATCH) + - Annotations for adding headers, setting produces results and intercepting response + - Params annotations + +### Installation + +Install through npm: + +```sh +$ npm install ngx-http-annotations --save +``` + + +### Development + +Example of using library. + +1) Plug the HttpRestModule into your AppModule + +```typescript +import { HttpRestModule } from 'ngx-http-annotations'; +import { NgModule } from '@angular/core'; + +@NgModule({ + imports: [ + HttpRestModule + ] +}) +export class AppModule { +} +``` + +2) Create a service to work with rest api. Inherit it from HttpRestService from 'ngx-http-annotations'. Put annotations on the class, methods and params. + + +```typescript +import { HttpRestService, GET, Path, PathParam, QueryParam, QueryParams } from 'ngx-http-annotations'; +import { Injectable } from '@angular/core'; +import RestConfig from 'app/core/configs/rest.config'; + +interface GoodsItem { + id: number, + name: string, + price: number, + sales?: boolean; + desc?: string; + children?: Array; +} + +@Injectable() +@Headers({ + 'someHeader1': 'headerValue1', + 'someHeader2': 'headerValue2' +}) +@Path(`/test/goods`) +export class SomeRestService extends HttpRestService { + + @GET + getGoods(@QueryParams /* Object with queryParams { [name: string]: [value: any] } */ queryObj?: any): any {} + + @GET + getGoodsBySomeParam(@QueryParam('sales') /* ...?sales= */ isSold: boolean): any {} + + @GET + @Path('/:id') + getGoodsItemById(@PathParam('id') itemId: number): any {} + + @GET + @Path('/:id/child/:childId') /* Few path params */ + getChildrenOfSomeGoods(@PathParam('id') id: number, + @PathParam('childId') childId: number + @QueryParam('sales') isSold: boolean, + @QueryParam('someParam') some: any): any {} + + @POST + @Path('/create') + createGoods(@Body /* Body of POST request */ goodsObject: GoodsItem): any {} + + @DELETE + @Path('/:id') + removeGoodsById(@PathParam('id') itemId: number): any {} + + +} +``` + +3) Call the request method from component + +```typescript +import { Component, OnInit } from '@angular/core'; +import { SomeRestService } from './some-rest.service'; + +@Component({ + selector: 'some-test-component', + templateUrl: './test-component.component.html', + styleUrls: ['./test-component.component.css'], + providers: [SomeRestService] +}) +export class TestComponent implements OnInit { + constructor(private someRestService: SomeRestService){} + + ngOnInit() { + this.someRestService + .getGoods() + .subscribe( goods => console.log(goods) ); + } +} +``` + +### Description +Available annotations: +1) Request methods +@GET, @POST, @PUT, @DELETE, @OPTIONS, @HEAD, @PATCH - marks methods implementing the corresponding requests +2) Added settings + - @Path - set path of url for request. Combined class @Path annotation value and current method @Path. Path params passed with ":". For example @Path('/someurl/:someParam') + - @Headers - set headers for request (if annotate class, then all class methods getting this headers. method Headers merge with class Headers) + - @Produces - setting expected response type. By default Reponse transformed by .json() method + - @Observes - setting http observes. + 3) Parameters + - @PathParam (or @Path) - pass current parameter by name to collected url. Example: someFunc(@PathParam('id') itemId: number) {} + - @Body - pass body object into request. Ex.: someMethod(@Body bodyObject: any){} + - @QueryParam - pass single query parameters into request. Ex.: someMethod(@QueryParam('a') a: any, @QueryParam('b') b: any) {}. someMethod(1, 2) -> ..requested_url..?a=1&b=2 + - @QueryParams - pass object with few query params. Ex.: someMethod(@QueryParams queryObj: any){}. someMethod({x: 1, y: 2, z: 3}) -> ..requested_url..?x=1&y=2&z=3 + + + ### Credits + + Originaly created by "Mixalloff" + forked from https://github.com/Mixalloff/ngx-http-rest + + Updated by Manudss. + \ No newline at end of file diff --git a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js new file mode 100644 index 0000000..73d92dd --- /dev/null +++ b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js @@ -0,0 +1,514 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common/http'), require('@angular/core')) : + typeof define === 'function' && define.amd ? define('ngx-http-annotations', ['exports', '@angular/common/http', '@angular/core'], factory) : + (factory((global['ngx-http-annotations'] = {}),global.ng.common.http,global.ng.core)); +}(this, (function (exports,http,core) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) + return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } + catch (error) { + e = { error: error }; + } + finally { + try { + if (r && !r.done && (m = i["return"])) + m.call(i); + } + finally { + if (e) + throw e.error; + } + } + return ar; + } + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ + /** + * @param {?} annotations + * @return {?} + */ + function observe(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['observe', annotations], args)); + }; + } + /** + * @param {?} annotations + * @return {?} + */ + function path(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['path', annotations], args)); + }; + } + /** + * @param {?} annotations + * @return {?} + */ + function body(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['body', annotations], args)); + }; + } + /** + * @param {?} annotations + * @return {?} + */ + function query(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['query', annotations], args)); + }; + } + /** + * @param {?} annotations + * @return {?} + */ + function headers(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['headers', annotations], args)); + }; + } + /** + * @param {?} annotations + * @return {?} + */ + function produces(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['produces', annotations], args)); + }; + } + var /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; + var HttpRestUtils = (function () { + function HttpRestUtils() { + } + /** + * @param {?} decoratorName + * @param {?} annotations + * @param {...?} args + * @return {?} + */ + HttpRestUtils.decorate = /** + * @param {?} decoratorName + * @param {?} annotations + * @param {...?} args + * @return {?} + */ + function (decoratorName, annotations) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + switch (args.length) { + case 1: { + var _a = __read(args, 1), target = _a[0]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); + break; + } + case 2: { + var _b = __read(args, 2), target = _b[0], key = _b[1]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); + break; + } + case 3: + if (typeof args[2] === 'number') { + var _c = __read(args, 3), target = _c[0], keyName = _c[1], index = _c[2]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName: keyName, index: index }]); + break; + } + else { + var _d = __read(args, 3), target = _d[0], keyName = _d[1], descriptor = _d[2]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName: keyName }]); + break; + } + default: + throw new Error('Decorators are not valid here!'); + } + }; + /** + * Set up metadada + * @param {?} metaName Decorator name + * @param {?} entityType + * @param {?} value Value of metadata + * @param {?} target Prototype of current object + * @param {?=} entityData Entity extra data + * @return {?} + */ + HttpRestUtils.constructMetadata = /** + * Set up metadada + * @param {?} metaName Decorator name + * @param {?} entityType + * @param {?} value Value of metadata + * @param {?} target Prototype of current object + * @param {?=} entityData Entity extra data + * @return {?} + */ + function (metaName, entityType, value, target, entityData) { + target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; + target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; + var /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; + var /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; + if (entityData && entityData.keyName) { + metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; + } + if (entityData && entityData.index != null) { + metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; + } + switch (entityType) { + case 'class': + metadataObj[metaName] = value; + break; + case 'props': + metadataObj[metaName] = value; + break; + case 'methods': + metadataObj[entityData.keyName][metaName] = value; + break; + case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; + } + target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; + }; + /** + * @param {?} requestMethodName + * @return {?} + */ + HttpRestUtils.requestMethod = /** + * @param {?} requestMethodName + * @return {?} + */ + function (requestMethodName) { + // @dynamic + return function (target, key, descriptor) { + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); + var /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); + var /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); + var /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); + var /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); + var /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); + var /** @type {?} */ params = { + body: body, + params: search, + headers: headers, + responseType: producesType, + observe: observe + }; + return HttpRestUtils.http.request(requestMethodName, url, params); + }; + }; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.getObserve = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; + } + return undefined; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.produce = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; + } + return undefined; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectUrl = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + var /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class + ? target[RESOURSE_METADATA_ROOT].class.path + : ''; + var /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].path + : ''; + var /** @type {?} */ isRelativePath = ("" + baseUrl + methodUrl)[0] === '/'; + var /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] + .filter(function (path) { return path; }) + .join('/') + .split('/') + .map(function (path) { + if (path[0] === ':') { + var /** @type {?} */ paramName = path.substring(1); + var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params + && target[RESOURSE_METADATA_ROOT].params[methodName] + && target[RESOURSE_METADATA_ROOT].params[methodName].path + ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] + : ''; + return args[index]; + } + return path; + }) + .filter(function (path) { return path; }) + .join('/'); + if (!isRelativePath) { + var _a = __read(methodUrlWithParams.split('/')), absolutePrefix = _a[0], paths = _a.slice(1); + return absolutePrefix + "//" + paths.join('/'); + } + return "/" + methodUrlWithParams; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectBody = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].body) + return undefined; + var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; + return args[index]; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectQueryParams = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].query) + return undefined; + var /** @type {?} */ queryParams = new http.HttpParams(); + var /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; + var /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; + var /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined + ? args[queryParamsObjectIndex] + : Object.keys(queryMetadata).reduce(function (mergedObj, paramName) { + return Object.assign(mergedObj, (_a = {}, _a[paramName] = args[queryMetadata[paramName]], _a)); + var _a; + }, {}); + Object.keys(queryParamsCollection) + .forEach(function (paramName) { + var /** @type {?} */ value = queryParamsCollection[paramName]; + if (!Array.isArray(value)) { + value = [value]; + } + value.forEach(function (curParam) { return queryParams = queryParams.append(paramName, curParam); }); + }); + return queryParams; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectHeaders = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + var /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; + var /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers + : {}; + var /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); + var /** @type {?} */ httpHeaders = new http.HttpHeaders(); + for (var /** @type {?} */ header in mergedHeaders) { + httpHeaders.append(header, mergedHeaders[header]); + } + return httpHeaders; + }; + HttpRestUtils.http = null; + return HttpRestUtils; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ + var HttpRestModule = (function () { + function HttpRestModule() { + } + HttpRestModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [http.HttpClientModule], + providers: [ + { provide: core.APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [http.HttpClient] } + ] + },] }, + ]; + return HttpRestModule; + }()); + /** + * @param {?} http + * @return {?} + */ + function onAppInit(http$$1) { + return function () { + HttpRestUtils.http = http$$1; + }; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ + var /** @type {?} */ Path = path; + var /** @type {?} */ PathParam = path; + var /** @type {?} */ Body = body(null); + var /** @type {?} */ Query = query(null); + var /** @type {?} */ QueryParam = query; + var /** @type {?} */ QueryParams = query(null); + var /** @type {?} */ Observe = observe; + // Headers + var /** @type {?} */ Headers = headers; + // Produces + var /** @type {?} */ Produces = produces; + // Request methods + var /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); + var /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); + var /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); + var /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); + var /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); + var /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); + var /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ + + exports.Path = Path; + exports.PathParam = PathParam; + exports.Body = Body; + exports.Query = Query; + exports.QueryParam = QueryParam; + exports.QueryParams = QueryParams; + exports.Observe = Observe; + exports.Headers = Headers; + exports.Produces = Produces; + exports.GET = GET; + exports.POST = POST; + exports.PUT = PUT; + exports.DELETE = DELETE; + exports.OPTIONS = OPTIONS; + exports.HEAD = HEAD; + exports.PATCH = PATCH; + exports.HttpRestModule = HttpRestModule; + exports.onAppInit = onAppInit; + exports.observe = observe; + exports.path = path; + exports.body = body; + exports.query = query; + exports.headers = headers; + exports.produces = produces; + exports.HttpRestUtils = HttpRestUtils; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMudW1kLmpzLm1hcCIsInNvdXJjZXMiOltudWxsLCJuZzovL25neC1odHRwLWFubm90YXRpb25zL3NyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZS50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvcHVibGljX2FwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMClcclxuICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IHlbb3BbMF0gJiAyID8gXCJyZXR1cm5cIiA6IG9wWzBdID8gXCJ0aHJvd1wiIDogXCJuZXh0XCJdKSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFswLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBIdHRwT2JzZXJ2ZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cC9zcmMvY2xpZW50XCI7XHJcblxyXG5pbnRlcmZhY2UgaHR0cFJlcXVlc3RPcHRpb25zIHtcclxuICBib2R5PzogYW55O1xyXG4gIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICBwYXJhbXM/OiBIdHRwUGFyYW1zO1xyXG4gIG9ic2VydmU/OiBIdHRwT2JzZXJ2ZTtcclxuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmUoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydvYnNlcnZlJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gcGF0aChhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3BhdGgnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBib2R5KGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnYm9keScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5KGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsncXVlcnknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBoZWFkZXJzKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnaGVhZGVycycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y2VzKGFubm90YXRpb25zOiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnKSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3Byb2R1Y2VzJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5cclxudHlwZSBSZXNvdXJjZU1ldGFkYXRhVHlwZSA9ICdjbGFzcyd8J21ldGhvZHMnfCdwYXJhbXMnfCdwcm9wcyc7XHJcbmludGVyZmFjZSBFeHRyYUVudGl0eURhdGEge1xyXG4gIGtleU5hbWU6IHN0cmluZztcclxuICBpbmRleDogbnVtYmVyO1xyXG59XHJcbmNvbnN0IFJFU09VUlNFX01FVEFEQVRBX1JPT1QgPSAncmVzb3VyY2VzX21ldGFkYXRhJztcclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXN0VXRpbHMge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlY29yYXRlKGRlY29yYXRvck5hbWU6IHN0cmluZywgYW5ub3RhdGlvbnM6IGFueSwgLi4uYXJnczogYW55W10pIHtcclxuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDE6IHtcclxuICAgICAgICAgIGNvbnN0IFt0YXJnZXRdID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAnY2xhc3MnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LnByb3RvdHlwZSBdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgIGNvbnN0IFt0YXJnZXQsIGtleV0gPSBhcmdzO1xyXG4gICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwcm9wcycsIGFubm90YXRpb25zLCB0YXJnZXQgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzJdID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXlOYW1lLCBpbmRleF0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ3BhcmFtcycsIGFubm90YXRpb25zLCB0YXJnZXQsIHsga2V5TmFtZSwgaW5kZXggfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXlOYW1lLCBkZXNjcmlwdG9yXSA9IGFyZ3M7XHJcbiAgICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAnbWV0aG9kcycsIGFubm90YXRpb25zLCB0YXJnZXQsIHsga2V5TmFtZSB9IF0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZSEnKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHVwIG1ldGFkYWRhXHJcbiAgICogQHBhcmFtIHR5cGUgRW50aXR5IHR5cGVcclxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgb2YgbWV0YWRhdGFcclxuICAgKiBAcGFyYW0gdGFyZ2V0IFByb3RvdHlwZSBvZiBjdXJyZW50IG9iamVjdFxyXG4gICAqIEBwYXJhbSBtZXRhTmFtZSBEZWNvcmF0b3IgbmFtZVxyXG4gICAqIEBwYXJhbSBlbnRpdHlEYXRhIEVudGl0eSBleHRyYSBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29uc3RydWN0TWV0YWRhdGEobWV0YU5hbWU6IHN0cmluZywgZW50aXR5VHlwZTogUmVzb3VyY2VNZXRhZGF0YVR5cGUsIHZhbHVlOiBhbnksIHRhcmdldDogYW55LCBlbnRpdHlEYXRhPzogRXh0cmFFbnRpdHlEYXRhKSB7XHJcbiAgICB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gfHwge307XHJcbiAgICB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV0gPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV0gfHwge307XHJcblxyXG4gICAgY29uc3Qgcm9vdE1ldGFkYXRhID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdO1xyXG4gICAgY29uc3QgbWV0YWRhdGFPYmogPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV07XHJcbiAgICBpZiAoZW50aXR5RGF0YSAmJiBlbnRpdHlEYXRhLmtleU5hbWUpIHtcclxuICAgICAgbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXSA9IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBpZiAoZW50aXR5RGF0YSAmJiBlbnRpdHlEYXRhLmluZGV4ICE9IG51bGwpIHtcclxuICAgICAgbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdW21ldGFOYW1lXSB8fCB7fTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoZW50aXR5VHlwZSkge1xyXG4gICAgICBjYXNlICdjbGFzcyc6IG1ldGFkYXRhT2JqW21ldGFOYW1lXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAncHJvcHMnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21ldGhvZHMnOiBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdW21ldGFOYW1lXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAncGFyYW1zJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV1bdmFsdWUgfHwgJ2RlZmF1bHQnXSA9IGVudGl0eURhdGEuaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gbWV0YWRhdGFPYmo7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlcXVlc3RNZXRob2QocmVxdWVzdE1ldGhvZE5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgIC8vIEBkeW5hbWljXHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogYW55KSA9PiB7XHJcbiAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RVcmwodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RCb2R5KHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBzZWFyY2ggPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RRdWVyeVBhcmFtcyh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IEh0dHBSZXN0VXRpbHMuY29sbGVjdEhlYWRlcnModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y2VzVHlwZSA9IEh0dHBSZXN0VXRpbHMucHJvZHVjZSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZSA9IEh0dHBSZXN0VXRpbHMuZ2V0T2JzZXJ2ZSh0YXJnZXQsIGtleSwgYXJncylcclxuICAgICAgICBjb25zdCBwYXJhbXM6IGh0dHBSZXF1ZXN0T3B0aW9ucyA9IHtcclxuICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICBwYXJhbXM6IHNlYXJjaCxcclxuICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICByZXNwb25zZVR5cGU6IHByb2R1Y2VzVHlwZSxcclxuICAgICAgICAgIG9ic2VydmVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBIdHRwUmVzdFV0aWxzLmh0dHAucmVxdWVzdChyZXF1ZXN0TWV0aG9kTmFtZSwgdXJsLCBwYXJhbXMpO1xyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldE9ic2VydmUodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICh0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1xyXG4gICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXSkge1xyXG4gICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLm9ic2VydmU7XHJcbiAgICAgfVxyXG4gICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9kdWNlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXSkge1xyXG4gICAgICByZXR1cm4gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0ucHJvZHVjZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFVybCh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgYmFzZVVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXSAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3NcclxuICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MucGF0aFxyXG4gICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgbWV0aG9kVXJsID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHMgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgaXNSZWxhdGl2ZVBhdGggPSBgJHtiYXNlVXJsfSR7bWV0aG9kVXJsfWBbMF0gPT09ICcvJztcclxuICAgIGNvbnN0IG1ldGhvZFVybFdpdGhQYXJhbXNcclxuICAgICAgPSBbYmFzZVVybCwgbWV0aG9kVXJsXVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJylcclxuICAgICAgICAuc3BsaXQoJy8nKVxyXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XHJcbiAgICAgICAgICBpZiAoIHBhdGhbMF0gPT09ICc6Jykge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXRoLnN1YnN0cmluZygxKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucGF0aFtwYXJhbU5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgICAgIHJldHVybiBhcmdzW2luZGV4XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbHRlcihwYXRoID0+IHBhdGgpXHJcbiAgICAgICAgLmpvaW4oJy8nKTtcclxuXHJcbiAgICBpZiAoIWlzUmVsYXRpdmVQYXRoKSB7XHJcbiAgICAgIGNvbnN0IFthYnNvbHV0ZVByZWZpeCwgLi4ucGF0aHNdID0gbWV0aG9kVXJsV2l0aFBhcmFtcy5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gYCR7IGFic29sdXRlUHJlZml4IH0vLyR7IHBhdGhzLmpvaW4oJy8nKSB9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBgLyR7IG1ldGhvZFVybFdpdGhQYXJhbXMgfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0Qm9keSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKCF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5ib2R5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5ib2R5LmRlZmF1bHQ7XHJcbiAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnkpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zT2JqZWN0SW5kZXggPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5LmRlZmF1bHQ7XHJcbiAgICBjb25zdCBxdWVyeU1ldGFkYXRhID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zQ29sbGVjdGlvbiA9IHF1ZXJ5UGFyYW1zT2JqZWN0SW5kZXggIT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhcmdzW3F1ZXJ5UGFyYW1zT2JqZWN0SW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBPYmplY3Qua2V5cyhxdWVyeU1ldGFkYXRhKS5yZWR1Y2UoKG1lcmdlZE9iaiwgcGFyYW1OYW1lKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihtZXJnZWRPYmosIHsgW3BhcmFtTmFtZV06IGFyZ3NbcXVlcnlNZXRhZGF0YVtwYXJhbU5hbWVdXSB9KSwge31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zQ29sbGVjdGlvbilcclxuICAgICAgLmZvckVhY2gocGFyYW1OYW1lID0+IHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBxdWVyeVBhcmFtc0NvbGxlY3Rpb25bcGFyYW1OYW1lXTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7IHZhbHVlID0gWyB2YWx1ZSBdOyB9XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgoY3VyUGFyYW06IGFueSkgPT4gcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcy5hcHBlbmQocGFyYW1OYW1lLCBjdXJQYXJhbSkpO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RIZWFkZXJzKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBjb25zdCBjbGFzc0hlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MuaGVhZGVycyA6IHt9O1xyXG4gICAgY29uc3QgbWV0aG9kSGVhZGVycyA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0uaGVhZGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xyXG4gICAgY29uc3QgbWVyZ2VkSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIGNsYXNzSGVhZGVycywgbWV0aG9kSGVhZGVycyk7XHJcblxyXG4gICAgY29uc3QgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGZvciAoY29uc3QgaGVhZGVyIGluIG1lcmdlZEhlYWRlcnMpIHtcclxuICAgICAgaHR0cEhlYWRlcnMuYXBwZW5kKGhlYWRlciwgbWVyZ2VkSGVhZGVyc1toZWFkZXJdKTtcclxuICAgIH1cclxuICAgIHJldHVybiBodHRwSGVhZGVycztcclxuICB9XHJcbn0iLCJpbXBvcnQgeyBOZ01vZHVsZSwgQVBQX0lOSVRJQUxJWkVSIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXN0VXRpbHMgfSBmcm9tIFwiLi9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlsc1wiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuLy8gQGR5bmFtaWNcclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtIdHRwQ2xpZW50TW9kdWxlXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICB7IHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUiwgdXNlRmFjdG9yeTogb25BcHBJbml0LCBtdWx0aTogdHJ1ZSwgZGVwczogW0h0dHBDbGllbnRdIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXN0TW9kdWxlIHtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9uQXBwSW5pdChodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgIEh0dHBSZXN0VXRpbHMuaHR0cCA9IGh0dHA7XHJcbiAgfVxyXG59IiwiZXhwb3J0ICogZnJvbSAnLi9zcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHMnO1xyXG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnO1xyXG5pbXBvcnQgeyBIdHRwUmVzdFV0aWxzLCBwYXRoLCBib2R5LCBxdWVyeSwgaGVhZGVycywgcHJvZHVjZXMsIG9ic2VydmUgfSBmcm9tIFwiLi9zcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHNcIjtcclxuXHJcbmV4cG9ydCBsZXQgUGF0aCA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgUGF0aFBhcmFtID0gcGF0aDtcclxuZXhwb3J0IGxldCBCb2R5ID0gYm9keShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeSA9IHF1ZXJ5KG51bGwpO1xyXG5leHBvcnQgbGV0IFF1ZXJ5UGFyYW0gPSBxdWVyeTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtcyA9IHF1ZXJ5KG51bGwpO1xyXG5leHBvcnQgbGV0IE9ic2VydmUgPSBvYnNlcnZlO1xyXG5cclxuLy8gSGVhZGVyc1xyXG5leHBvcnQgbGV0IEhlYWRlcnMgPSBoZWFkZXJzO1xyXG5cclxuLy8gUHJvZHVjZXNcclxuZXhwb3J0IGxldCBQcm9kdWNlcyA9IHByb2R1Y2VzO1xyXG5cclxuLy8gUmVxdWVzdCBtZXRob2RzXHJcbmV4cG9ydCBsZXQgR0VUID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdHZXQnKTtcclxuZXhwb3J0IGxldCBQT1NUID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQb3N0Jyk7XHJcbmV4cG9ydCBsZXQgUFVUID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQdXQnKTtcclxuZXhwb3J0IGxldCBERUxFVEUgPSBIdHRwUmVzdFV0aWxzLnJlcXVlc3RNZXRob2QoJ0RlbGV0ZScpO1xyXG5leHBvcnQgbGV0IE9QVElPTlMgPSBIdHRwUmVzdFV0aWxzLnJlcXVlc3RNZXRob2QoJ09wdGlvbnMnKTtcclxuZXhwb3J0IGxldCBIRUFEID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdIZWFkJyk7XHJcbmV4cG9ydCBsZXQgUEFUQ0ggPSBIdHRwUmVzdFV0aWxzLnJlcXVlc3RNZXRob2QoJ1BhdGNoJyk7Il0sIm5hbWVzIjpbIkh0dHBQYXJhbXMiLCJIdHRwSGVhZGVycyIsIk5nTW9kdWxlIiwiSHR0cENsaWVudE1vZHVsZSIsIkFQUF9JTklUSUFMSVpFUiIsIkh0dHBDbGllbnQiLCJodHRwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFjQSxvQkFpR3VCLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSTtZQUNBLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUk7Z0JBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FD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 \ No newline at end of file diff --git a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js.map b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js.map new file mode 100644 index 0000000..54790e5 --- /dev/null +++ b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ngx-http-annotations.umd.js.map","sources":[null,"ng://ngx-http-annotations/src/ngx-http-annotations.utils.ts","ng://ngx-http-annotations/src/ngx-http-annotations.module.ts","ng://ngx-http-annotations/public_api.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from \"@angular/common/http\";\r\nimport { HttpObserve } from \"@angular/common/http/src/client\";\r\n\r\ninterface httpRequestOptions {\r\n body?: any;\r\n headers?: HttpHeaders;\r\n params?: HttpParams;\r\n observe?: HttpObserve;\r\n reportProgress?: boolean;\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n withCredentials?: boolean;\r\n}\r\n\r\n\r\nexport function observe(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]);\r\n}\r\nexport function path(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]);\r\n}\r\nexport function body(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]);\r\n}\r\nexport function query(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]);\r\n}\r\nexport function headers(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]);\r\n}\r\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]);\r\n}\r\n\r\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\r\ninterface ExtraEntityData {\r\n keyName: string;\r\n index: number;\r\n}\r\nconst RESOURSE_METADATA_ROOT = 'resources_metadata';\r\n// @dynamic\r\nexport class HttpRestUtils {\r\n\r\n public static http: HttpClient = null;\r\n\r\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\r\n switch (args.length) {\r\n case 1: {\r\n const [target] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]);\r\n break;\r\n }\r\n case 2: {\r\n const [target, key] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'props', annotations, target ]);\r\n break;\r\n }\r\n case 3:\r\n if (typeof args[2] === 'number') {\r\n const [target, keyName, index] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'params', annotations, target, { keyName, index } ]);\r\n break;\r\n } else {\r\n const [target, keyName, descriptor] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'methods', annotations, target, { keyName } ]);\r\n break;\r\n }\r\n default:\r\n throw new Error('Decorators are not valid here!');\r\n }\r\n }\r\n\r\n /**\r\n * Set up metadada\r\n * @param type Entity type\r\n * @param value Value of metadata\r\n * @param target Prototype of current object\r\n * @param metaName Decorator name\r\n * @param entityData Entity extra data\r\n */\r\n private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) {\r\n target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {};\r\n target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {};\r\n\r\n const rootMetadata = target[RESOURSE_METADATA_ROOT];\r\n const metadataObj = target[RESOURSE_METADATA_ROOT][entityType];\r\n if (entityData && entityData.keyName) {\r\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\r\n }\r\n if (entityData && entityData.index != null) {\r\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\r\n }\r\n switch (entityType) {\r\n case 'class': metadataObj[metaName] = value; break;\r\n case 'props': metadataObj[metaName] = value; break;\r\n case 'methods': metadataObj[entityData.keyName][metaName] = value; break;\r\n case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index;\r\n }\r\n\r\n target[RESOURSE_METADATA_ROOT][entityType] = metadataObj;\r\n }\r\n\r\n public static requestMethod(requestMethodName: string): any {\r\n // @dynamic\r\n return (target: any, key: string, descriptor: any) => {\r\n descriptor.value = function (...args: any[]) {\r\n const url = HttpRestUtils.collectUrl(target, key, args);\r\n const body = HttpRestUtils.collectBody(target, key, args);\r\n const search = HttpRestUtils.collectQueryParams(target, key, args);\r\n const headers = HttpRestUtils.collectHeaders(target, key, args);\r\n const producesType = HttpRestUtils.produce(target, key, args);\r\n const observe = HttpRestUtils.getObserve(target, key, args)\r\n const params: httpRequestOptions = {\r\n body,\r\n params: search,\r\n headers,\r\n responseType: producesType,\r\n observe\r\n };\r\n return HttpRestUtils.http.request(requestMethodName, url, params);\r\n };\r\n };\r\n }\r\n\r\n private static getObserve(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].observe;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static produce(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].produces;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static collectUrl(target: any, methodName: string, args: any[]) {\r\n const baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class\r\n ? target[RESOURSE_METADATA_ROOT].class.path\r\n : '';\r\n const methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].path\r\n : '';\r\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\r\n const methodUrlWithParams\r\n = [baseUrl, methodUrl]\r\n .filter(path => path)\r\n .join('/')\r\n .split('/')\r\n .map(path => {\r\n if ( path[0] === ':') {\r\n const paramName = path.substring(1);\r\n const index = target[RESOURSE_METADATA_ROOT].params\r\n && target[RESOURSE_METADATA_ROOT].params[methodName]\r\n && target[RESOURSE_METADATA_ROOT].params[methodName].path\r\n ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName]\r\n : '';\r\n return args[index];\r\n }\r\n return path;\r\n })\r\n .filter(path => path)\r\n .join('/');\r\n\r\n if (!isRelativePath) {\r\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\r\n return `${ absolutePrefix }//${ paths.join('/') }`;\r\n }\r\n return `/${ methodUrlWithParams }`;\r\n }\r\n\r\n private static collectBody(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].body) return undefined;\r\n\r\n const index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default;\r\n return args[index];\r\n }\r\n\r\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined;\r\n\r\n let queryParams = new HttpParams();\r\n const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default;\r\n const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query;\r\n const queryParamsCollection = queryParamsObjectIndex != undefined\r\n ? args[queryParamsObjectIndex]\r\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\r\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\r\n );\r\n\r\n Object.keys(queryParamsCollection)\r\n .forEach(paramName => {\r\n let value = queryParamsCollection[paramName];\r\n if (!Array.isArray(value)) { value = [ value ]; }\r\n value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam));\r\n });\r\n return queryParams;\r\n }\r\n\r\n private static collectHeaders(target: any, methodName: string, args: any[]) {\r\n const classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {};\r\n const methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers\r\n : {};\r\n const mergedHeaders = Object.assign({}, classHeaders, methodHeaders);\r\n\r\n const httpHeaders = new HttpHeaders();\r\n for (const header in mergedHeaders) {\r\n httpHeaders.append(header, mergedHeaders[header]);\r\n }\r\n return httpHeaders;\r\n }\r\n}","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpRestUtils } from \"./ngx-http-annotations.utils\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n// @dynamic\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [\r\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] }\r\n ]\r\n})\r\nexport class HttpRestModule {\r\n}\r\n\r\nexport function onAppInit(http: HttpClient) {\r\n return function () {\r\n HttpRestUtils.http = http;\r\n }\r\n}","export * from './src/ngx-http-annotations.module';\r\nexport * from './src/ngx-http-annotations.utils';\r\nimport { Response } from '@angular/http';\r\nimport { HttpRestUtils, path, body, query, headers, produces, observe } from \"./src/ngx-http-annotations.utils\";\r\n\r\nexport let Path = path;\r\nexport let PathParam = path;\r\nexport let Body = body(null);\r\nexport let Query = query(null);\r\nexport let QueryParam = query;\r\nexport let QueryParams = query(null);\r\nexport let Observe = observe;\r\n\r\n// Headers\r\nexport let Headers = headers;\r\n\r\n// Produces\r\nexport let Produces = produces;\r\n\r\n// Request methods\r\nexport let GET = HttpRestUtils.requestMethod('Get');\r\nexport let POST = HttpRestUtils.requestMethod('Post');\r\nexport let PUT = HttpRestUtils.requestMethod('Put');\r\nexport let DELETE = HttpRestUtils.requestMethod('Delete');\r\nexport let OPTIONS = HttpRestUtils.requestMethod('Options');\r\nexport let HEAD = HttpRestUtils.requestMethod('Head');\r\nexport let PATCH = HttpRestUtils.requestMethod('Patch');"],"names":["HttpParams","HttpHeaders","NgModule","HttpClientModule","APP_INITIALIZER","HttpClient","http"],"mappings":"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"} diff --git a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js new file mode 100644 index 0000000..0b2e698 --- /dev/null +++ b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common/http"),require("@angular/core")):"function"==typeof define&&define.amd?define("ngx-http-annotations",["exports","@angular/common/http","@angular/core"],t):t(e["ngx-http-annotations"]={},e.ng.common.http,e.ng.core)}(this,function(e,c,t){"use strict";function p(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var a,n,o=r.call(e),u=[];try{for(;(void 0===t||0= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from \"@angular/common/http\";\r\nimport { HttpObserve } from \"@angular/common/http/src/client\";\r\n\r\ninterface httpRequestOptions {\r\n body?: any;\r\n headers?: HttpHeaders;\r\n params?: HttpParams;\r\n observe?: HttpObserve;\r\n reportProgress?: boolean;\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n withCredentials?: boolean;\r\n}\r\n\r\n\r\nexport function observe(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]);\r\n}\r\nexport function path(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]);\r\n}\r\nexport function body(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]);\r\n}\r\nexport function query(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]);\r\n}\r\nexport function headers(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]);\r\n}\r\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]);\r\n}\r\n\r\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\r\ninterface ExtraEntityData {\r\n keyName: string;\r\n index: number;\r\n}\r\nconst RESOURSE_METADATA_ROOT = 'resources_metadata';\r\n// @dynamic\r\nexport class HttpRestUtils {\r\n\r\n public static http: HttpClient = null;\r\n\r\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\r\n switch (args.length) {\r\n case 1: {\r\n const [target] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]);\r\n break;\r\n }\r\n case 2: {\r\n const [target, key] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'props', annotations, target ]);\r\n break;\r\n }\r\n case 3:\r\n if (typeof args[2] === 'number') {\r\n const [target, keyName, index] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'params', annotations, target, { keyName, index } ]);\r\n break;\r\n } else {\r\n const [target, keyName, descriptor] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'methods', annotations, target, { keyName } ]);\r\n break;\r\n }\r\n default:\r\n throw new Error('Decorators are not valid here!');\r\n }\r\n }\r\n\r\n /**\r\n * Set up metadada\r\n * @param type Entity type\r\n * @param value Value of metadata\r\n * @param target Prototype of current object\r\n * @param metaName Decorator name\r\n * @param entityData Entity extra data\r\n */\r\n private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) {\r\n target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {};\r\n target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {};\r\n\r\n const rootMetadata = target[RESOURSE_METADATA_ROOT];\r\n const metadataObj = target[RESOURSE_METADATA_ROOT][entityType];\r\n if (entityData && entityData.keyName) {\r\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\r\n }\r\n if (entityData && entityData.index != null) {\r\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\r\n }\r\n switch (entityType) {\r\n case 'class': metadataObj[metaName] = value; break;\r\n case 'props': metadataObj[metaName] = value; break;\r\n case 'methods': metadataObj[entityData.keyName][metaName] = value; break;\r\n case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index;\r\n }\r\n\r\n target[RESOURSE_METADATA_ROOT][entityType] = metadataObj;\r\n }\r\n\r\n public static requestMethod(requestMethodName: string): any {\r\n // @dynamic\r\n return (target: any, key: string, descriptor: any) => {\r\n descriptor.value = function (...args: any[]) {\r\n const url = HttpRestUtils.collectUrl(target, key, args);\r\n const body = HttpRestUtils.collectBody(target, key, args);\r\n const search = HttpRestUtils.collectQueryParams(target, key, args);\r\n const headers = HttpRestUtils.collectHeaders(target, key, args);\r\n const producesType = HttpRestUtils.produce(target, key, args);\r\n const observe = HttpRestUtils.getObserve(target, key, args)\r\n const params: httpRequestOptions = {\r\n body,\r\n params: search,\r\n headers,\r\n responseType: producesType,\r\n observe\r\n };\r\n return HttpRestUtils.http.request(requestMethodName, url, params);\r\n };\r\n };\r\n }\r\n\r\n private static getObserve(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].observe;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static produce(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].produces;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static collectUrl(target: any, methodName: string, args: any[]) {\r\n const baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class\r\n ? target[RESOURSE_METADATA_ROOT].class.path\r\n : '';\r\n const methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].path\r\n : '';\r\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\r\n const methodUrlWithParams\r\n = [baseUrl, methodUrl]\r\n .filter(path => path)\r\n .join('/')\r\n .split('/')\r\n .map(path => {\r\n if ( path[0] === ':') {\r\n const paramName = path.substring(1);\r\n const index = target[RESOURSE_METADATA_ROOT].params\r\n && target[RESOURSE_METADATA_ROOT].params[methodName]\r\n && target[RESOURSE_METADATA_ROOT].params[methodName].path\r\n ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName]\r\n : '';\r\n return args[index];\r\n }\r\n return path;\r\n })\r\n .filter(path => path)\r\n .join('/');\r\n\r\n if (!isRelativePath) {\r\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\r\n return `${ absolutePrefix }//${ paths.join('/') }`;\r\n }\r\n return `/${ methodUrlWithParams }`;\r\n }\r\n\r\n private static collectBody(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].body) return undefined;\r\n\r\n const index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default;\r\n return args[index];\r\n }\r\n\r\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined;\r\n\r\n let queryParams = new HttpParams();\r\n const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default;\r\n const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query;\r\n const queryParamsCollection = queryParamsObjectIndex != undefined\r\n ? args[queryParamsObjectIndex]\r\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\r\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\r\n );\r\n\r\n Object.keys(queryParamsCollection)\r\n .forEach(paramName => {\r\n let value = queryParamsCollection[paramName];\r\n if (!Array.isArray(value)) { value = [ value ]; }\r\n value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam));\r\n });\r\n return queryParams;\r\n }\r\n\r\n private static collectHeaders(target: any, methodName: string, args: any[]) {\r\n const classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {};\r\n const methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers\r\n : {};\r\n const mergedHeaders = Object.assign({}, classHeaders, methodHeaders);\r\n\r\n const httpHeaders = new HttpHeaders();\r\n for (const header in mergedHeaders) {\r\n httpHeaders.append(header, mergedHeaders[header]);\r\n }\r\n return httpHeaders;\r\n }\r\n}","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpRestUtils } from \"./ngx-http-annotations.utils\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n// @dynamic\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [\r\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] }\r\n ]\r\n})\r\nexport class HttpRestModule {\r\n}\r\n\r\nexport function onAppInit(http: HttpClient) {\r\n return function () {\r\n HttpRestUtils.http = http;\r\n }\r\n}","export * from './src/ngx-http-annotations.module';\r\nexport * from './src/ngx-http-annotations.utils';\r\nimport { Response } from '@angular/http';\r\nimport { HttpRestUtils, path, body, query, headers, produces, observe } from \"./src/ngx-http-annotations.utils\";\r\n\r\nexport let Path = path;\r\nexport let PathParam = path;\r\nexport let Body = body(null);\r\nexport let Query = query(null);\r\nexport let QueryParam = query;\r\nexport let QueryParams = query(null);\r\nexport let Observe = observe;\r\n\r\n// Headers\r\nexport let Headers = headers;\r\n\r\n// Produces\r\nexport let Produces = produces;\r\n\r\n// Request methods\r\nexport let GET = HttpRestUtils.requestMethod('Get');\r\nexport let POST = HttpRestUtils.requestMethod('Post');\r\nexport let PUT = HttpRestUtils.requestMethod('Put');\r\nexport let DELETE = HttpRestUtils.requestMethod('Delete');\r\nexport let OPTIONS = HttpRestUtils.requestMethod('Options');\r\nexport let HEAD = HttpRestUtils.requestMethod('Head');\r\nexport let PATCH = HttpRestUtils.requestMethod('Patch');"]} \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm2015/ngx-http-annotations.js b/dist/ngx-http-annotations/esm2015/ngx-http-annotations.js new file mode 100644 index 0000000..d7b7e6b --- /dev/null +++ b/dist/ngx-http-annotations/esm2015/ngx-http-annotations.js @@ -0,0 +1,10 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { Path, PathParam, Body, Query, QueryParam, QueryParams, Observe, Headers, Produces, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, HttpRestModule, onAppInit, observe, path, body, query, headers, produces, HttpRestUtils } from './public_api'; + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1hbm5vdGF0aW9ucy8iLCJzb3VyY2VzIjpbIm5neC1odHRwLWFubm90YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx5T0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm2015/public_api.js b/dist/ngx-http-annotations/esm2015/public_api.js new file mode 100644 index 0000000..f8d2454 --- /dev/null +++ b/dist/ngx-http-annotations/esm2015/public_api.js @@ -0,0 +1,28 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +export { HttpRestModule, onAppInit } from './src/ngx-http-annotations.module'; +export { observe, path, body, query, headers, produces, HttpRestUtils } from './src/ngx-http-annotations.utils'; +import { HttpRestUtils, path, body, query, headers, produces, observe } from "./src/ngx-http-annotations.utils"; +export let /** @type {?} */ Path = path; +export let /** @type {?} */ PathParam = path; +export let /** @type {?} */ Body = body(null); +export let /** @type {?} */ Query = query(null); +export let /** @type {?} */ QueryParam = query; +export let /** @type {?} */ QueryParams = query(null); +export let /** @type {?} */ Observe = observe; +// Headers +export let /** @type {?} */ Headers = headers; +// Produces +export let /** @type {?} */ Produces = produces; +// Request methods +export let /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); +export let /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); +export let /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); +export let /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); +export let /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); +export let /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); +export let /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1odHRwLWFubm90YXRpb25zLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMENBQWMsbUNBQW1DLENBQUM7QUFDbEQsNkVBQWMsa0NBQWtDLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhILE1BQU0sQ0FBQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQU0sQ0FBQyxxQkFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzVCLE1BQU0sQ0FBQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxxQkFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxxQkFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE1BQU0sQ0FBQyxxQkFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxxQkFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUc3QixNQUFNLENBQUMscUJBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFHN0IsTUFBTSxDQUFDLHFCQUFJLFFBQVEsR0FBRyxRQUFRLENBQUM7O0FBRy9CLE1BQU0sQ0FBQyxxQkFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxNQUFNLENBQUMscUJBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEQsTUFBTSxDQUFDLHFCQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELE1BQU0sQ0FBQyxxQkFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxNQUFNLENBQUMscUJBQUksT0FBTyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUQsTUFBTSxDQUFDLHFCQUFJLElBQUksR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxxQkFBSSxLQUFLLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzJztcclxuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscywgcGF0aCwgYm9keSwgcXVlcnksIGhlYWRlcnMsIHByb2R1Y2VzLCBvYnNlcnZlIH0gZnJvbSBcIi4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgbGV0IFBhdGggPSBwYXRoO1xyXG5leHBvcnQgbGV0IFBhdGhQYXJhbSA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgQm9keSA9IGJvZHkobnVsbCk7XHJcbmV4cG9ydCBsZXQgUXVlcnkgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtID0gcXVlcnk7XHJcbmV4cG9ydCBsZXQgUXVlcnlQYXJhbXMgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBPYnNlcnZlID0gb2JzZXJ2ZTtcclxuXHJcbi8vIEhlYWRlcnNcclxuZXhwb3J0IGxldCBIZWFkZXJzID0gaGVhZGVycztcclxuXHJcbi8vIFByb2R1Y2VzXHJcbmV4cG9ydCBsZXQgUHJvZHVjZXMgPSBwcm9kdWNlcztcclxuXHJcbi8vIFJlcXVlc3QgbWV0aG9kc1xyXG5leHBvcnQgbGV0IEdFVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnR2V0Jyk7XHJcbmV4cG9ydCBsZXQgUE9TVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUG9zdCcpO1xyXG5leHBvcnQgbGV0IFBVVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUHV0Jyk7XHJcbmV4cG9ydCBsZXQgREVMRVRFID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdEZWxldGUnKTtcclxuZXhwb3J0IGxldCBPUFRJT05TID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdPcHRpb25zJyk7XHJcbmV4cG9ydCBsZXQgSEVBRCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnSGVhZCcpO1xyXG5leHBvcnQgbGV0IFBBVENIID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQYXRjaCcpOyJdfQ== \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.module.js b/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.module.js new file mode 100644 index 0000000..febfc10 --- /dev/null +++ b/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.module.js @@ -0,0 +1,38 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +import { NgModule, APP_INITIALIZER } from '@angular/core'; +import { HttpRestUtils } from "./ngx-http-annotations.utils"; +import { HttpClient } from "@angular/common/http"; +import { HttpClientModule } from "@angular/common/http"; +export class HttpRestModule { +} +HttpRestModule.decorators = [ + { type: NgModule, args: [{ + imports: [HttpClientModule], + providers: [ + { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } + ] + },] }, +]; +function HttpRestModule_tsickle_Closure_declarations() { + /** @type {!Array<{type: !Function, args: (undefined|!Array)}>} */ + HttpRestModule.decorators; + /** + * @nocollapse + * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array)}>)})>} + */ + HttpRestModule.ctorParameters; +} +/** + * @param {?} http + * @return {?} + */ +export function onAppInit(http) { + return function () { + HttpRestUtils.http = http; + }; +} + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvIiwic291cmNlcyI6WyJzcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUXhELE1BQU07OztZQU5MLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0IsU0FBUyxFQUFFO29CQUNULEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUU7aUJBQ3JGO2FBQ0o7Ozs7Ozs7Ozs7Ozs7OztBQUlELE1BQU0sb0JBQW9CLElBQWdCO0lBQ3hDLE1BQU0sQ0FBQztRQUNMLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0tBQzNCLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBBUFBfSU5JVElBTElaRVIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscyB9IGZyb20gXCIuL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG4vLyBAZHluYW1pY1xyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGVdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgIHsgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLCB1c2VGYWN0b3J5OiBvbkFwcEluaXQsIG11bHRpOiB0cnVlLCBkZXBzOiBbSHR0cENsaWVudF0gfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cFJlc3RNb2R1bGUge1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb25BcHBJbml0KGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgSHR0cFJlc3RVdGlscy5odHRwID0gaHR0cDtcclxuICB9XHJcbn0iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.utils.js b/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.utils.js new file mode 100644 index 0000000..8a99cad --- /dev/null +++ b/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.utils.js @@ -0,0 +1,302 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +import { HttpParams, HttpHeaders } from "@angular/common/http"; +/** + * @record + */ +function httpRequestOptions() { } +function httpRequestOptions_tsickle_Closure_declarations() { + /** @type {?|undefined} */ + httpRequestOptions.prototype.body; + /** @type {?|undefined} */ + httpRequestOptions.prototype.headers; + /** @type {?|undefined} */ + httpRequestOptions.prototype.params; + /** @type {?|undefined} */ + httpRequestOptions.prototype.observe; + /** @type {?|undefined} */ + httpRequestOptions.prototype.reportProgress; + /** @type {?|undefined} */ + httpRequestOptions.prototype.responseType; + /** @type {?|undefined} */ + httpRequestOptions.prototype.withCredentials; +} +/** + * @param {?} annotations + * @return {?} + */ +export function observe(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +export function path(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +export function body(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +export function query(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +export function headers(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +export function produces(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]); +} +/** + * @record + */ +function ExtraEntityData() { } +function ExtraEntityData_tsickle_Closure_declarations() { + /** @type {?} */ + ExtraEntityData.prototype.keyName; + /** @type {?} */ + ExtraEntityData.prototype.index; +} +const /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; +export class HttpRestUtils { + /** + * @param {?} decoratorName + * @param {?} annotations + * @param {...?} args + * @return {?} + */ + static decorate(decoratorName, annotations, ...args) { + switch (args.length) { + case 1: { + const [target] = args; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); + break; + } + case 2: { + const [target, key] = args; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); + break; + } + case 3: + if (typeof args[2] === 'number') { + const [target, keyName, index] = args; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName, index }]); + break; + } + else { + const [target, keyName, descriptor] = args; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName }]); + break; + } + default: + throw new Error('Decorators are not valid here!'); + } + } + /** + * Set up metadada + * @param {?} metaName Decorator name + * @param {?} entityType + * @param {?} value Value of metadata + * @param {?} target Prototype of current object + * @param {?=} entityData Entity extra data + * @return {?} + */ + static constructMetadata(metaName, entityType, value, target, entityData) { + target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; + target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; + const /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; + const /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; + if (entityData && entityData.keyName) { + metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; + } + if (entityData && entityData.index != null) { + metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; + } + switch (entityType) { + case 'class': + metadataObj[metaName] = value; + break; + case 'props': + metadataObj[metaName] = value; + break; + case 'methods': + metadataObj[entityData.keyName][metaName] = value; + break; + case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; + } + target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; + } + /** + * @param {?} requestMethodName + * @return {?} + */ + static requestMethod(requestMethodName) { + // @dynamic + return (target, key, descriptor) => { + descriptor.value = function (...args) { + const /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); + const /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); + const /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); + const /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); + const /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); + const /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); + const /** @type {?} */ params = { + body, + params: search, + headers, + responseType: producesType, + observe + }; + return HttpRestUtils.http.request(requestMethodName, url, params); + }; + }; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static getObserve(target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; + } + return undefined; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static produce(target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; + } + return undefined; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static collectUrl(target, methodName, args) { + const /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class + ? target[RESOURSE_METADATA_ROOT].class.path + : ''; + const /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].path + : ''; + const /** @type {?} */ isRelativePath = `${baseUrl}${methodUrl}`[0] === '/'; + const /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] + .filter(path => path) + .join('/') + .split('/') + .map(path => { + if (path[0] === ':') { + const /** @type {?} */ paramName = path.substring(1); + const /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params + && target[RESOURSE_METADATA_ROOT].params[methodName] + && target[RESOURSE_METADATA_ROOT].params[methodName].path + ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] + : ''; + return args[index]; + } + return path; + }) + .filter(path => path) + .join('/'); + if (!isRelativePath) { + const [absolutePrefix, ...paths] = methodUrlWithParams.split('/'); + return `${absolutePrefix}//${paths.join('/')}`; + } + return `/${methodUrlWithParams}`; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static collectBody(target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].body) + return undefined; + const /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; + return args[index]; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static collectQueryParams(target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].query) + return undefined; + let /** @type {?} */ queryParams = new HttpParams(); + const /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; + const /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; + const /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined + ? args[queryParamsObjectIndex] + : Object.keys(queryMetadata).reduce((mergedObj, paramName) => Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}); + Object.keys(queryParamsCollection) + .forEach(paramName => { + let /** @type {?} */ value = queryParamsCollection[paramName]; + if (!Array.isArray(value)) { + value = [value]; + } + value.forEach((curParam) => queryParams = queryParams.append(paramName, curParam)); + }); + return queryParams; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static collectHeaders(target, methodName, args) { + const /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; + const /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers + : {}; + const /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); + const /** @type {?} */ httpHeaders = new HttpHeaders(); + for (const /** @type {?} */ header in mergedHeaders) { + httpHeaders.append(header, mergedHeaders[header]); + } + return httpHeaders; + } +} +HttpRestUtils.http = null; +function HttpRestUtils_tsickle_Closure_declarations() { + /** @type {?} */ + HttpRestUtils.http; +} + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1hbm5vdGF0aW9ucy8iLCJzb3VyY2VzIjpbInNyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWMzRSxNQUFNLGtCQUFrQixXQUFnQjtJQUN0QyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDbEc7Ozs7O0FBQ0QsTUFBTSxlQUFlLFdBQWdCO0lBQ25DLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztDQUMvRjs7Ozs7QUFDRCxNQUFNLGVBQWUsV0FBZ0I7SUFDbkMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQy9GOzs7OztBQUNELE1BQU0sZ0JBQWdCLFdBQWdCO0lBQ3BDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENB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QUFXLEVBQUUsVUFBa0IsRUFBRSxJQUFXO1FBQ3hFLHVCQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5Ryx1QkFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDOUYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPO1lBQzVELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekIsdUJBQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVyRSx1QkFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUN0QyxHQUFHLENBQUMsQ0FBQyx1QkFBTSxNQUFNLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNuQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNuRDtRQUNELE1BQU0sQ0FBQyxXQUFXLENBQUM7OztxQkEvS1ksSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBIdHRwT2JzZXJ2ZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cC9zcmMvY2xpZW50XCI7XHJcblxyXG5pbnRlcmZhY2UgaHR0cFJlcXVlc3RPcHRpb25zIHtcclxuICBib2R5PzogYW55O1xyXG4gIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICBwYXJhbXM/OiBIdHRwUGFyYW1zO1xyXG4gIG9ic2VydmU/OiBIdHRwT2JzZXJ2ZTtcclxuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmUoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydvYnNlcnZlJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gcGF0aChhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3BhdGgnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBib2R5KGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnYm9keScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5KGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsncXVlcnknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBoZWFkZXJzKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnaGVhZGVycycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y2VzKGFubm90YXRpb25zOiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnKSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3Byb2R1Y2VzJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5cclxudHlwZSBSZXNvdXJjZU1ldGFkYXRhVHlwZSA9ICdjbGFzcyd8J21ldGhvZHMnfCdwYXJhbXMnfCdwcm9wcyc7XHJcbmludGVyZmFjZSBFeHRyYUVudGl0eURhdGEge1xyXG4gIGtleU5hbWU6IHN0cmluZztcclxuICBpbmRleDogbnVtYmVyO1xyXG59XHJcbmNvbnN0IFJFU09VUlNFX01FVEFEQVRBX1JPT1QgPSAncmVzb3VyY2VzX21ldGFkYXRhJztcclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXN0VXRpbHMge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlY29yYXRlKGRlY29yYXRvck5hbWU6IHN0cmluZywgYW5ub3RhdGlvbnM6IGFueSwgLi4uYXJnczogYW55W10pIHtcclxuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDE6IHtcclxuICAgICAgICAgIGNvbnN0IFt0YXJnZXRdID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAnY2xhc3MnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LnByb3RvdHlwZSBdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgIGNvbnN0IFt0YXJnZXQsIGtleV0gPSBhcmdzO1xyXG4gICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwcm9wcycsIGFubm90YXRpb25zLCB0YXJnZXQgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzJdID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXlOYW1lLCBpbmRleF0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ3BhcmFtcycsIGFubm90YXRpb25zLCB0YXJnZXQsIHsga2V5TmFtZSwgaW5kZXggfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXlOYW1lLCBkZXNjcmlwdG9yXSA9IGFyZ3M7XHJcbiAgICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAnbWV0aG9kcycsIGFubm90YXRpb25zLCB0YXJnZXQsIHsga2V5TmFtZSB9IF0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZSEnKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHVwIG1ldGFkYWRhXHJcbiAgICogQHBhcmFtIHR5cGUgRW50aXR5IHR5cGVcclxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgb2YgbWV0YWRhdGFcclxuICAgKiBAcGFyYW0gdGFyZ2V0IFByb3RvdHlwZSBvZiBjdXJyZW50IG9iamVjdFxyXG4gICAqIEBwYXJhbSBtZXRhTmFtZSBEZWNvcmF0b3IgbmFtZVxyXG4gICAqIEBwYXJhbSBlbnRpdHlEYXRhIEVudGl0eSBleHRyYSBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29uc3RydWN0TWV0YWRhdGEobWV0YU5hbWU6IHN0cmluZywgZW50aXR5VHlwZTogUmVzb3VyY2VNZXRhZGF0YVR5cGUsIHZhbHVlOiBhbnksIHRhcmdldDogYW55LCBlbnRpdHlEYXRhPzogRXh0cmFFbnRpdHlEYXRhKSB7XHJcbiAgICB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gfHwge307XHJcbiAgICB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV0gPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV0gfHwge307XHJcblxyXG4gICAgY29uc3Qgcm9vdE1ldGFkYXRhID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdO1xyXG4gICAgY29uc3QgbWV0YWRhdGFPYmogPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV07XHJcbiAgICBpZiAoZW50aXR5RGF0YSAmJiBlbnRpdHlEYXRhLmtleU5hbWUpIHtcclxuICAgICAgbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXSA9IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBpZiAoZW50aXR5RGF0YSAmJiBlbnRpdHlEYXRhLmluZGV4ICE9IG51bGwpIHtcclxuICAgICAgbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdW21ldGFOYW1lXSB8fCB7fTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoZW50aXR5VHlwZSkge1xyXG4gICAgICBjYXNlICdjbGFzcyc6IG1ldGFkYXRhT2JqW21ldGFOYW1lXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAncHJvcHMnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21ldGhvZHMnOiBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdW21ldGFOYW1lXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAncGFyYW1zJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV1bdmFsdWUgfHwgJ2RlZmF1bHQnXSA9IGVudGl0eURhdGEuaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gbWV0YWRhdGFPYmo7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlcXVlc3RNZXRob2QocmVxdWVzdE1ldGhvZE5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgIC8vIEBkeW5hbWljXHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogYW55KSA9PiB7XHJcbiAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RVcmwodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RCb2R5KHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBzZWFyY2ggPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RRdWVyeVBhcmFtcyh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IEh0dHBSZXN0VXRpbHMuY29sbGVjdEhlYWRlcnModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y2VzVHlwZSA9IEh0dHBSZXN0VXRpbHMucHJvZHVjZSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZSA9IEh0dHBSZXN0VXRpbHMuZ2V0T2JzZXJ2ZSh0YXJnZXQsIGtleSwgYXJncylcclxuICAgICAgICBjb25zdCBwYXJhbXM6IGh0dHBSZXF1ZXN0T3B0aW9ucyA9IHtcclxuICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICBwYXJhbXM6IHNlYXJjaCxcclxuICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICByZXNwb25zZVR5cGU6IHByb2R1Y2VzVHlwZSxcclxuICAgICAgICAgIG9ic2VydmVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBIdHRwUmVzdFV0aWxzLmh0dHAucmVxdWVzdChyZXF1ZXN0TWV0aG9kTmFtZSwgdXJsLCBwYXJhbXMpO1xyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldE9ic2VydmUodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICh0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1xyXG4gICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXSkge1xyXG4gICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLm9ic2VydmU7XHJcbiAgICAgfVxyXG4gICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9kdWNlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXSkge1xyXG4gICAgICByZXR1cm4gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0ucHJvZHVjZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFVybCh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgYmFzZVVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXSAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3NcclxuICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MucGF0aFxyXG4gICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgbWV0aG9kVXJsID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHMgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgaXNSZWxhdGl2ZVBhdGggPSBgJHtiYXNlVXJsfSR7bWV0aG9kVXJsfWBbMF0gPT09ICcvJztcclxuICAgIGNvbnN0IG1ldGhvZFVybFdpdGhQYXJhbXNcclxuICAgICAgPSBbYmFzZVVybCwgbWV0aG9kVXJsXVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJylcclxuICAgICAgICAuc3BsaXQoJy8nKVxyXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XHJcbiAgICAgICAgICBpZiAoIHBhdGhbMF0gPT09ICc6Jykge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXRoLnN1YnN0cmluZygxKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucGF0aFtwYXJhbU5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgICAgIHJldHVybiBhcmdzW2luZGV4XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbHRlcihwYXRoID0+IHBhdGgpXHJcbiAgICAgICAgLmpvaW4oJy8nKTtcclxuXHJcbiAgICBpZiAoIWlzUmVsYXRpdmVQYXRoKSB7XHJcbiAgICAgIGNvbnN0IFthYnNvbHV0ZVByZWZpeCwgLi4ucGF0aHNdID0gbWV0aG9kVXJsV2l0aFBhcmFtcy5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gYCR7IGFic29sdXRlUHJlZml4IH0vLyR7IHBhdGhzLmpvaW4oJy8nKSB9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBgLyR7IG1ldGhvZFVybFdpdGhQYXJhbXMgfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0Qm9keSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKCF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5ib2R5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5ib2R5LmRlZmF1bHQ7XHJcbiAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnkpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zT2JqZWN0SW5kZXggPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5LmRlZmF1bHQ7XHJcbiAgICBjb25zdCBxdWVyeU1ldGFkYXRhID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zQ29sbGVjdGlvbiA9IHF1ZXJ5UGFyYW1zT2JqZWN0SW5kZXggIT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhcmdzW3F1ZXJ5UGFyYW1zT2JqZWN0SW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBPYmplY3Qua2V5cyhxdWVyeU1ldGFkYXRhKS5yZWR1Y2UoKG1lcmdlZE9iaiwgcGFyYW1OYW1lKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihtZXJnZWRPYmosIHsgW3BhcmFtTmFtZV06IGFyZ3NbcXVlcnlNZXRhZGF0YVtwYXJhbU5hbWVdXSB9KSwge31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zQ29sbGVjdGlvbilcclxuICAgICAgLmZvckVhY2gocGFyYW1OYW1lID0+IHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBxdWVyeVBhcmFtc0NvbGxlY3Rpb25bcGFyYW1OYW1lXTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7IHZhbHVlID0gWyB2YWx1ZSBdOyB9XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgoY3VyUGFyYW06IGFueSkgPT4gcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcy5hcHBlbmQocGFyYW1OYW1lLCBjdXJQYXJhbSkpO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RIZWFkZXJzKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBjb25zdCBjbGFzc0hlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MuaGVhZGVycyA6IHt9O1xyXG4gICAgY29uc3QgbWV0aG9kSGVhZGVycyA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0uaGVhZGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xyXG4gICAgY29uc3QgbWVyZ2VkSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIGNsYXNzSGVhZGVycywgbWV0aG9kSGVhZGVycyk7XHJcblxyXG4gICAgY29uc3QgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGZvciAoY29uc3QgaGVhZGVyIGluIG1lcmdlZEhlYWRlcnMpIHtcclxuICAgICAgaHR0cEhlYWRlcnMuYXBwZW5kKGhlYWRlciwgbWVyZ2VkSGVhZGVyc1toZWFkZXJdKTtcclxuICAgIH1cclxuICAgIHJldHVybiBodHRwSGVhZGVycztcclxuICB9XHJcbn0iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm5/ngx-http-annotations.js b/dist/ngx-http-annotations/esm5/ngx-http-annotations.js new file mode 100644 index 0000000..d7b7e6b --- /dev/null +++ b/dist/ngx-http-annotations/esm5/ngx-http-annotations.js @@ -0,0 +1,10 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { Path, PathParam, Body, Query, QueryParam, QueryParams, Observe, Headers, Produces, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, HttpRestModule, onAppInit, observe, path, body, query, headers, produces, HttpRestUtils } from './public_api'; + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1hbm5vdGF0aW9ucy8iLCJzb3VyY2VzIjpbIm5neC1odHRwLWFubm90YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx5T0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm5/public_api.js b/dist/ngx-http-annotations/esm5/public_api.js new file mode 100644 index 0000000..a9af003 --- /dev/null +++ b/dist/ngx-http-annotations/esm5/public_api.js @@ -0,0 +1,28 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +export { HttpRestModule, onAppInit } from './src/ngx-http-annotations.module'; +export { observe, path, body, query, headers, produces, HttpRestUtils } from './src/ngx-http-annotations.utils'; +import { HttpRestUtils, path, body, query, headers, produces, observe } from "./src/ngx-http-annotations.utils"; +export var /** @type {?} */ Path = path; +export var /** @type {?} */ PathParam = path; +export var /** @type {?} */ Body = body(null); +export var /** @type {?} */ Query = query(null); +export var /** @type {?} */ QueryParam = query; +export var /** @type {?} */ QueryParams = query(null); +export var /** @type {?} */ Observe = observe; +// Headers +export var /** @type {?} */ Headers = headers; +// Produces +export var /** @type {?} */ Produces = produces; +// Request methods +export var /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); +export var /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); +export var /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); +export var /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); +export var /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); +export var /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); +export var /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1odHRwLWFubm90YXRpb25zLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMENBQWMsbUNBQW1DLENBQUM7QUFDbEQsNkVBQWMsa0NBQWtDLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhILE1BQU0sQ0FBQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQU0sQ0FBQyxxQkFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzVCLE1BQU0sQ0FBQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxxQkFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxxQkFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE1BQU0sQ0FBQyxxQkFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxxQkFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUc3QixNQUFNLENBQUMscUJBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFHN0IsTUFBTSxDQUFDLHFCQUFJLFFBQVEsR0FBRyxRQUFRLENBQUM7O0FBRy9CLE1BQU0sQ0FBQyxxQkFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxNQUFNLENBQUMscUJBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEQsTUFBTSxDQUFDLHFCQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELE1BQU0sQ0FBQyxxQkFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxNQUFNLENBQUMscUJBQUksT0FBTyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUQsTUFBTSxDQUFDLHFCQUFJLElBQUksR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxxQkFBSSxLQUFLLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzJztcclxuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscywgcGF0aCwgYm9keSwgcXVlcnksIGhlYWRlcnMsIHByb2R1Y2VzLCBvYnNlcnZlIH0gZnJvbSBcIi4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgbGV0IFBhdGggPSBwYXRoO1xyXG5leHBvcnQgbGV0IFBhdGhQYXJhbSA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgQm9keSA9IGJvZHkobnVsbCk7XHJcbmV4cG9ydCBsZXQgUXVlcnkgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtID0gcXVlcnk7XHJcbmV4cG9ydCBsZXQgUXVlcnlQYXJhbXMgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBPYnNlcnZlID0gb2JzZXJ2ZTtcclxuXHJcbi8vIEhlYWRlcnNcclxuZXhwb3J0IGxldCBIZWFkZXJzID0gaGVhZGVycztcclxuXHJcbi8vIFByb2R1Y2VzXHJcbmV4cG9ydCBsZXQgUHJvZHVjZXMgPSBwcm9kdWNlcztcclxuXHJcbi8vIFJlcXVlc3QgbWV0aG9kc1xyXG5leHBvcnQgbGV0IEdFVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnR2V0Jyk7XHJcbmV4cG9ydCBsZXQgUE9TVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUG9zdCcpO1xyXG5leHBvcnQgbGV0IFBVVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUHV0Jyk7XHJcbmV4cG9ydCBsZXQgREVMRVRFID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdEZWxldGUnKTtcclxuZXhwb3J0IGxldCBPUFRJT05TID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdPcHRpb25zJyk7XHJcbmV4cG9ydCBsZXQgSEVBRCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnSGVhZCcpO1xyXG5leHBvcnQgbGV0IFBBVENIID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQYXRjaCcpOyJdfQ== \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.module.js b/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.module.js new file mode 100644 index 0000000..144e197 --- /dev/null +++ b/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.module.js @@ -0,0 +1,42 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +import { NgModule, APP_INITIALIZER } from '@angular/core'; +import { HttpRestUtils } from "./ngx-http-annotations.utils"; +import { HttpClient } from "@angular/common/http"; +import { HttpClientModule } from "@angular/common/http"; +var HttpRestModule = /** @class */ (function () { + function HttpRestModule() { + } + HttpRestModule.decorators = [ + { type: NgModule, args: [{ + imports: [HttpClientModule], + providers: [ + { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } + ] + },] }, + ]; + return HttpRestModule; +}()); +export { HttpRestModule }; +function HttpRestModule_tsickle_Closure_declarations() { + /** @type {!Array<{type: !Function, args: (undefined|!Array)}>} */ + HttpRestModule.decorators; + /** + * @nocollapse + * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array)}>)})>} + */ + HttpRestModule.ctorParameters; +} +/** + * @param {?} http + * @return {?} + */ +export function onAppInit(http) { + return function () { + HttpRestUtils.http = http; + }; +} + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvIiwic291cmNlcyI6WyJzcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztnQkFFdkQsUUFBUSxTQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRTtxQkFDckY7aUJBQ0o7O3lCQVZEOztTQVdhLGNBQWM7Ozs7Ozs7Ozs7Ozs7O0FBRzNCLE1BQU0sb0JBQW9CLElBQWdCO0lBQ3hDLE1BQU0sQ0FBQztRQUNMLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0tBQzNCLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBBUFBfSU5JVElBTElaRVIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscyB9IGZyb20gXCIuL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG4vLyBAZHluYW1pY1xyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGVdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgIHsgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLCB1c2VGYWN0b3J5OiBvbkFwcEluaXQsIG11bHRpOiB0cnVlLCBkZXBzOiBbSHR0cENsaWVudF0gfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cFJlc3RNb2R1bGUge1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb25BcHBJbml0KGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgSHR0cFJlc3RVdGlscy5odHRwID0gaHR0cDtcclxuICB9XHJcbn0iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.utils.js b/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.utils.js new file mode 100644 index 0000000..6c7f479 --- /dev/null +++ b/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.utils.js @@ -0,0 +1,415 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { HttpParams, HttpHeaders } from "@angular/common/http"; +/** + * @record + */ +function httpRequestOptions() { } +function httpRequestOptions_tsickle_Closure_declarations() { + /** @type {?|undefined} */ + httpRequestOptions.prototype.body; + /** @type {?|undefined} */ + httpRequestOptions.prototype.headers; + /** @type {?|undefined} */ + httpRequestOptions.prototype.params; + /** @type {?|undefined} */ + httpRequestOptions.prototype.observe; + /** @type {?|undefined} */ + httpRequestOptions.prototype.reportProgress; + /** @type {?|undefined} */ + httpRequestOptions.prototype.responseType; + /** @type {?|undefined} */ + httpRequestOptions.prototype.withCredentials; +} +/** + * @param {?} annotations + * @return {?} + */ +export function observe(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['observe', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +export function path(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['path', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +export function body(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['body', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +export function query(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['query', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +export function headers(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['headers', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +export function produces(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['produces', annotations], args)); + }; +} +/** + * @record + */ +function ExtraEntityData() { } +function ExtraEntityData_tsickle_Closure_declarations() { + /** @type {?} */ + ExtraEntityData.prototype.keyName; + /** @type {?} */ + ExtraEntityData.prototype.index; +} +var /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; +var HttpRestUtils = /** @class */ (function () { + function HttpRestUtils() { + } + /** + * @param {?} decoratorName + * @param {?} annotations + * @param {...?} args + * @return {?} + */ + HttpRestUtils.decorate = /** + * @param {?} decoratorName + * @param {?} annotations + * @param {...?} args + * @return {?} + */ + function (decoratorName, annotations) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + switch (args.length) { + case 1: { + var _a = tslib_1.__read(args, 1), target = _a[0]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); + break; + } + case 2: { + var _b = tslib_1.__read(args, 2), target = _b[0], key = _b[1]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); + break; + } + case 3: + if (typeof args[2] === 'number') { + var _c = tslib_1.__read(args, 3), target = _c[0], keyName = _c[1], index = _c[2]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName: keyName, index: index }]); + break; + } + else { + var _d = tslib_1.__read(args, 3), target = _d[0], keyName = _d[1], descriptor = _d[2]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName: keyName }]); + break; + } + default: + throw new Error('Decorators are not valid here!'); + } + }; + /** + * Set up metadada + * @param {?} metaName Decorator name + * @param {?} entityType + * @param {?} value Value of metadata + * @param {?} target Prototype of current object + * @param {?=} entityData Entity extra data + * @return {?} + */ + HttpRestUtils.constructMetadata = /** + * Set up metadada + * @param {?} metaName Decorator name + * @param {?} entityType + * @param {?} value Value of metadata + * @param {?} target Prototype of current object + * @param {?=} entityData Entity extra data + * @return {?} + */ + function (metaName, entityType, value, target, entityData) { + target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; + target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; + var /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; + var /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; + if (entityData && entityData.keyName) { + metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; + } + if (entityData && entityData.index != null) { + metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; + } + switch (entityType) { + case 'class': + metadataObj[metaName] = value; + break; + case 'props': + metadataObj[metaName] = value; + break; + case 'methods': + metadataObj[entityData.keyName][metaName] = value; + break; + case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; + } + target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; + }; + /** + * @param {?} requestMethodName + * @return {?} + */ + HttpRestUtils.requestMethod = /** + * @param {?} requestMethodName + * @return {?} + */ + function (requestMethodName) { + // @dynamic + return function (target, key, descriptor) { + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); + var /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); + var /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); + var /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); + var /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); + var /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); + var /** @type {?} */ params = { + body: body, + params: search, + headers: headers, + responseType: producesType, + observe: observe + }; + return HttpRestUtils.http.request(requestMethodName, url, params); + }; + }; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.getObserve = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; + } + return undefined; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.produce = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; + } + return undefined; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectUrl = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + var /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class + ? target[RESOURSE_METADATA_ROOT].class.path + : ''; + var /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].path + : ''; + var /** @type {?} */ isRelativePath = ("" + baseUrl + methodUrl)[0] === '/'; + var /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] + .filter(function (path) { return path; }) + .join('/') + .split('/') + .map(function (path) { + if (path[0] === ':') { + var /** @type {?} */ paramName = path.substring(1); + var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params + && target[RESOURSE_METADATA_ROOT].params[methodName] + && target[RESOURSE_METADATA_ROOT].params[methodName].path + ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] + : ''; + return args[index]; + } + return path; + }) + .filter(function (path) { return path; }) + .join('/'); + if (!isRelativePath) { + var _a = tslib_1.__read(methodUrlWithParams.split('/')), absolutePrefix = _a[0], paths = _a.slice(1); + return absolutePrefix + "//" + paths.join('/'); + } + return "/" + methodUrlWithParams; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectBody = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].body) + return undefined; + var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; + return args[index]; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectQueryParams = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].query) + return undefined; + var /** @type {?} */ queryParams = new HttpParams(); + var /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; + var /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; + var /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined + ? args[queryParamsObjectIndex] + : Object.keys(queryMetadata).reduce(function (mergedObj, paramName) { + return Object.assign(mergedObj, (_a = {}, _a[paramName] = args[queryMetadata[paramName]], _a)); + var _a; + }, {}); + Object.keys(queryParamsCollection) + .forEach(function (paramName) { + var /** @type {?} */ value = queryParamsCollection[paramName]; + if (!Array.isArray(value)) { + value = [value]; + } + value.forEach(function (curParam) { return queryParams = queryParams.append(paramName, curParam); }); + }); + return queryParams; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectHeaders = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + var /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; + var /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers + : {}; + var /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); + var /** @type {?} */ httpHeaders = new HttpHeaders(); + for (var /** @type {?} */ header in mergedHeaders) { + httpHeaders.append(header, mergedHeaders[header]); + } + return httpHeaders; + }; + HttpRestUtils.http = null; + return HttpRestUtils; +}()); +export { HttpRestUtils }; +function HttpRestUtils_tsickle_Closure_declarations() { + /** @type {?} */ + HttpRestUtils.http; +} + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1hbm5vdGF0aW9ucy8iLCJzb3VyY2VzIjpbInNyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBYyxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjM0UsTUFBTSxrQkFBa0IsV0FBZ0I7SUFBeEMsaUJBRUM7SUFEQyxNQUFNLENBQUM7UUFBQyxjQUFjO2FBQWQsVUFBYyxFQUFkLHFCQUFjLEVBQWQsSUFBYztZQUFkLHlCQUFjOztRQUFLLE9BQUEsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSSxvQkFBRyxTQUFTLEVBQUUsV0FBVyxHQUFLLElBQUksRUFBRTtJQUFyRSxDQUFxRSxDQUFDO0NBQ2xHOzs7OztBQUNELE1BQU0sZUFBZSxXQUFnQjtJQUFyQyxpQkFFQztJQURDLE1BQU0sQ0FBQztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLG9CQUFHLE1BQU0sRUFBRSxXQUFXLEdBQUssSUFBSSxFQUFFO0lBQWxFLENBQWtFLENBQUM7Q0FDL0Y7Ozs7O0FBQ0QsTUFBTSxlQUFlLFdBQWdCO0lBQXJDLGlCQUVDO0lBREMsTUFBTSxDQUFDO1FBQUMsY0FBYzthQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7WUFBZCx5QkFBYzs7UUFBSyxPQUFBLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUksb0JBQUcsTUFBTSxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7SUFBbEUsQ0FBa0UsQ0FBQztDQUMvRjs7Ozs7QUFDRCxNQUFNLGdCQUFnQixXQUFnQjtJ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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cE9ic2VydmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHAvc3JjL2NsaWVudFwiO1xyXG5cclxuaW50ZXJmYWNlIGh0dHBSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgYm9keT86IGFueTtcclxuICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgcGFyYW1zPzogSHR0cFBhcmFtcztcclxuICBvYnNlcnZlPzogSHR0cE9ic2VydmU7XHJcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnb2JzZXJ2ZScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHBhdGgoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwYXRoJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gYm9keShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2JvZHknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBxdWVyeShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3F1ZXJ5JywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaGVhZGVycyhhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2hlYWRlcnMnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlcyhhbm5vdGF0aW9uczogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jykge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwcm9kdWNlcycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuXHJcbnR5cGUgUmVzb3VyY2VNZXRhZGF0YVR5cGUgPSAnY2xhc3MnfCdtZXRob2RzJ3wncGFyYW1zJ3wncHJvcHMnO1xyXG5pbnRlcmZhY2UgRXh0cmFFbnRpdHlEYXRhIHtcclxuICBrZXlOYW1lOiBzdHJpbmc7XHJcbiAgaW5kZXg6IG51bWJlcjtcclxufVxyXG5jb25zdCBSRVNPVVJTRV9NRVRBREFUQV9ST09UID0gJ3Jlc291cmNlc19tZXRhZGF0YSc7XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdFV0aWxzIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBodHRwOiBIdHRwQ2xpZW50ID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWNvcmF0ZShkZWNvcmF0b3JOYW1lOiBzdHJpbmcsIGFubm90YXRpb25zOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAxOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0XSA9IGFyZ3M7XHJcbiAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ2NsYXNzJywgYW5ub3RhdGlvbnMsIHRhcmdldC5wcm90b3R5cGUgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXldID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAncHJvcHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0IF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1syXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgaW5kZXhdID0gYXJncztcclxuICAgICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwYXJhbXMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUsIGluZGV4IH0gXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgZGVzY3JpcHRvcl0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ21ldGhvZHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUgfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVjb3JhdG9ycyBhcmUgbm90IHZhbGlkIGhlcmUhJyk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB1cCBtZXRhZGFkYVxyXG4gICAqIEBwYXJhbSB0eXBlIEVudGl0eSB0eXBlXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIG9mIG1ldGFkYXRhXHJcbiAgICogQHBhcmFtIHRhcmdldCBQcm90b3R5cGUgb2YgY3VycmVudCBvYmplY3RcclxuICAgKiBAcGFyYW0gbWV0YU5hbWUgRGVjb3JhdG9yIG5hbWVcclxuICAgKiBAcGFyYW0gZW50aXR5RGF0YSBFbnRpdHkgZXh0cmEgZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGNvbnN0cnVjdE1ldGFkYXRhKG1ldGFOYW1lOiBzdHJpbmcsIGVudGl0eVR5cGU6IFJlc291cmNlTWV0YWRhdGFUeXBlLCB2YWx1ZTogYW55LCB0YXJnZXQ6IGFueSwgZW50aXR5RGF0YT86IEV4dHJhRW50aXR5RGF0YSkge1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdIHx8IHt9O1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IHJvb3RNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXTtcclxuICAgIGNvbnN0IG1ldGFkYXRhT2JqID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdO1xyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5rZXlOYW1lKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5pbmRleCAhPSBudWxsKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdID0gbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGVudGl0eVR5cGUpIHtcclxuICAgICAgY2FzZSAnY2xhc3MnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Byb3BzJzogbWV0YWRhdGFPYmpbbWV0YU5hbWVdID0gdmFsdWU7IGJyZWFrO1xyXG4gICAgICBjYXNlICdtZXRob2RzJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhcmFtcyc6IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdW3ZhbHVlIHx8ICdkZWZhdWx0J10gPSBlbnRpdHlEYXRhLmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXVtlbnRpdHlUeXBlXSA9IG1ldGFkYXRhT2JqO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0TWV0aG9kKHJlcXVlc3RNZXRob2ROYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAvLyBAZHluYW1pY1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IGFueSkgPT4ge1xyXG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0VXJsKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBib2R5ID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0Qm9keSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RIZWFkZXJzKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBwcm9kdWNlc1R5cGUgPSBIdHRwUmVzdFV0aWxzLnByb2R1Y2UodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmUgPSBIdHRwUmVzdFV0aWxzLmdldE9ic2VydmUodGFyZ2V0LCBrZXksIGFyZ3MpXHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBodHRwUmVxdWVzdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgcGFyYW1zOiBzZWFyY2gsXHJcbiAgICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiBwcm9kdWNlc1R5cGUsXHJcbiAgICAgICAgICBvYnNlcnZlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gSHR0cFJlc3RVdGlscy5odHRwLnJlcXVlc3QocmVxdWVzdE1ldGhvZE5hbWUsIHVybCwgcGFyYW1zKTtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRPYnNlcnZlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgIHJldHVybiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5vYnNlcnZlO1xyXG4gICAgIH1cclxuICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvZHVjZSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzXHJcbiAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnByb2R1Y2VzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RVcmwodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzXHJcbiAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLnBhdGhcclxuICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IG1ldGhvZFVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5wYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IGlzUmVsYXRpdmVQYXRoID0gYCR7YmFzZVVybH0ke21ldGhvZFVybH1gWzBdID09PSAnLyc7XHJcbiAgICBjb25zdCBtZXRob2RVcmxXaXRoUGFyYW1zXHJcbiAgICAgID0gW2Jhc2VVcmwsIG1ldGhvZFVybF1cclxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gcGF0aClcclxuICAgICAgICAuam9pbignLycpXHJcbiAgICAgICAgLnNwbGl0KCcvJylcclxuICAgICAgICAubWFwKHBhdGggPT4ge1xyXG4gICAgICAgICAgaWYgKCBwYXRoWzBdID09PSAnOicpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhbcGFyYW1OYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJyk7XHJcblxyXG4gICAgaWYgKCFpc1JlbGF0aXZlUGF0aCkge1xyXG4gICAgICBjb25zdCBbYWJzb2x1dGVQcmVmaXgsIC4uLnBhdGhzXSA9IG1ldGhvZFVybFdpdGhQYXJhbXMuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIGAkeyBhYnNvbHV0ZVByZWZpeCB9Ly8keyBwYXRocy5qb2luKCcvJykgfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYC8keyBtZXRob2RVcmxXaXRoUGFyYW1zIH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdEJvZHkodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keS5kZWZhdWx0O1xyXG4gICAgcmV0dXJuIGFyZ3NbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFF1ZXJ5UGFyYW1zKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAoIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNcclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBxdWVyeVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc09iamVjdEluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeS5kZWZhdWx0O1xyXG4gICAgY29uc3QgcXVlcnlNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc0NvbGxlY3Rpb24gPSBxdWVyeVBhcmFtc09iamVjdEluZGV4ICE9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXJnc1txdWVyeVBhcmFtc09iamVjdEluZGV4XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LmtleXMocXVlcnlNZXRhZGF0YSkucmVkdWNlKChtZXJnZWRPYmosIHBhcmFtTmFtZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obWVyZ2VkT2JqLCB7IFtwYXJhbU5hbWVdOiBhcmdzW3F1ZXJ5TWV0YWRhdGFbcGFyYW1OYW1lXV0gfSksIHt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhxdWVyeVBhcmFtc0NvbGxlY3Rpb24pXHJcbiAgICAgIC5mb3JFYWNoKHBhcmFtTmFtZSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gcXVlcnlQYXJhbXNDb2xsZWN0aW9uW3BhcmFtTmFtZV07XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgeyB2YWx1ZSA9IFsgdmFsdWUgXTsgfVxyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKGN1clBhcmFtOiBhbnkpID0+IHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMuYXBwZW5kKHBhcmFtTmFtZSwgY3VyUGFyYW0pKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0SGVhZGVycyh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgY2xhc3NIZWFkZXJzID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLmhlYWRlcnMgOiB7fTtcclxuICAgIGNvbnN0IG1ldGhvZEhlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kcyAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLmhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcclxuICAgIGNvbnN0IG1lcmdlZEhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBjbGFzc0hlYWRlcnMsIG1ldGhvZEhlYWRlcnMpO1xyXG5cclxuICAgIGNvbnN0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiBtZXJnZWRIZWFkZXJzKSB7XHJcbiAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChoZWFkZXIsIG1lcmdlZEhlYWRlcnNbaGVhZGVyXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHR0cEhlYWRlcnM7XHJcbiAgfVxyXG59Il19 \ No newline at end of file diff --git a/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js b/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js new file mode 100644 index 0000000..3138a25 --- /dev/null +++ b/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js @@ -0,0 +1,325 @@ +import { HttpParams, HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http'; +import { NgModule, APP_INITIALIZER } from '@angular/core'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * @param {?} annotations + * @return {?} + */ +function observe(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +function path(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +function body(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +function query(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +function headers(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]); +} +/** + * @param {?} annotations + * @return {?} + */ +function produces(annotations) { + return (...args) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]); +} +const /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; +class HttpRestUtils { + /** + * @param {?} decoratorName + * @param {?} annotations + * @param {...?} args + * @return {?} + */ + static decorate(decoratorName, annotations, ...args) { + switch (args.length) { + case 1: { + const [target] = args; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); + break; + } + case 2: { + const [target, key] = args; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); + break; + } + case 3: + if (typeof args[2] === 'number') { + const [target, keyName, index] = args; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName, index }]); + break; + } + else { + const [target, keyName, descriptor] = args; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName }]); + break; + } + default: + throw new Error('Decorators are not valid here!'); + } + } + /** + * Set up metadada + * @param {?} metaName Decorator name + * @param {?} entityType + * @param {?} value Value of metadata + * @param {?} target Prototype of current object + * @param {?=} entityData Entity extra data + * @return {?} + */ + static constructMetadata(metaName, entityType, value, target, entityData) { + target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; + target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; + const /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; + const /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; + if (entityData && entityData.keyName) { + metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; + } + if (entityData && entityData.index != null) { + metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; + } + switch (entityType) { + case 'class': + metadataObj[metaName] = value; + break; + case 'props': + metadataObj[metaName] = value; + break; + case 'methods': + metadataObj[entityData.keyName][metaName] = value; + break; + case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; + } + target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; + } + /** + * @param {?} requestMethodName + * @return {?} + */ + static requestMethod(requestMethodName) { + // @dynamic + return (target, key, descriptor) => { + descriptor.value = function (...args) { + const /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); + const /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); + const /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); + const /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); + const /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); + const /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); + const /** @type {?} */ params = { + body, + params: search, + headers, + responseType: producesType, + observe + }; + return HttpRestUtils.http.request(requestMethodName, url, params); + }; + }; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static getObserve(target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; + } + return undefined; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static produce(target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; + } + return undefined; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static collectUrl(target, methodName, args) { + const /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class + ? target[RESOURSE_METADATA_ROOT].class.path + : ''; + const /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].path + : ''; + const /** @type {?} */ isRelativePath = `${baseUrl}${methodUrl}`[0] === '/'; + const /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] + .filter(path => path) + .join('/') + .split('/') + .map(path => { + if (path[0] === ':') { + const /** @type {?} */ paramName = path.substring(1); + const /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params + && target[RESOURSE_METADATA_ROOT].params[methodName] + && target[RESOURSE_METADATA_ROOT].params[methodName].path + ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] + : ''; + return args[index]; + } + return path; + }) + .filter(path => path) + .join('/'); + if (!isRelativePath) { + const [absolutePrefix, ...paths] = methodUrlWithParams.split('/'); + return `${absolutePrefix}//${paths.join('/')}`; + } + return `/${methodUrlWithParams}`; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static collectBody(target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].body) + return undefined; + const /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; + return args[index]; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static collectQueryParams(target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].query) + return undefined; + let /** @type {?} */ queryParams = new HttpParams(); + const /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; + const /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; + const /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined + ? args[queryParamsObjectIndex] + : Object.keys(queryMetadata).reduce((mergedObj, paramName) => Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}); + Object.keys(queryParamsCollection) + .forEach(paramName => { + let /** @type {?} */ value = queryParamsCollection[paramName]; + if (!Array.isArray(value)) { + value = [value]; + } + value.forEach((curParam) => queryParams = queryParams.append(paramName, curParam)); + }); + return queryParams; + } + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + static collectHeaders(target, methodName, args) { + const /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; + const /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers + : {}; + const /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); + const /** @type {?} */ httpHeaders = new HttpHeaders(); + for (const /** @type {?} */ header in mergedHeaders) { + httpHeaders.append(header, mergedHeaders[header]); + } + return httpHeaders; + } +} +HttpRestUtils.http = null; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +class HttpRestModule { +} +HttpRestModule.decorators = [ + { type: NgModule, args: [{ + imports: [HttpClientModule], + providers: [ + { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } + ] + },] }, +]; +/** + * @param {?} http + * @return {?} + */ +function onAppInit(http) { + return function () { + HttpRestUtils.http = http; + }; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +let /** @type {?} */ Path = path; +let /** @type {?} */ PathParam = path; +let /** @type {?} */ Body = body(null); +let /** @type {?} */ Query = query(null); +let /** @type {?} */ QueryParam = query; +let /** @type {?} */ QueryParams = query(null); +let /** @type {?} */ Observe = observe; +// Headers +let /** @type {?} */ Headers = headers; +// Produces +let /** @type {?} */ Produces = produces; +// Request methods +let /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); +let /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); +let /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); +let /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); +let /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); +let /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); +let /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ + +export { Path, PathParam, Body, Query, QueryParam, QueryParams, Observe, Headers, Produces, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, HttpRestModule, onAppInit, observe, path, body, query, headers, produces, HttpRestUtils }; + +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1odHRwLWFubm90YXRpb25zL3NyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZS50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvcHVibGljX2FwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cE9ic2VydmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHAvc3JjL2NsaWVudFwiO1xyXG5cclxuaW50ZXJmYWNlIGh0dHBSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgYm9keT86IGFueTtcclxuICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgcGFyYW1zPzogSHR0cFBhcmFtcztcclxuICBvYnNlcnZlPzogSHR0cE9ic2VydmU7XHJcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnb2JzZXJ2ZScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHBhdGgoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwYXRoJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gYm9keShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2JvZHknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBxdWVyeShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3F1ZXJ5JywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaGVhZGVycyhhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2hlYWRlcnMnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlcyhhbm5vdGF0aW9uczogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jykge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwcm9kdWNlcycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuXHJcbnR5cGUgUmVzb3VyY2VNZXRhZGF0YVR5cGUgPSAnY2xhc3MnfCdtZXRob2RzJ3wncGFyYW1zJ3wncHJvcHMnO1xyXG5pbnRlcmZhY2UgRXh0cmFFbnRpdHlEYXRhIHtcclxuICBrZXlOYW1lOiBzdHJpbmc7XHJcbiAgaW5kZXg6IG51bWJlcjtcclxufVxyXG5jb25zdCBSRVNPVVJTRV9NRVRBREFUQV9ST09UID0gJ3Jlc291cmNlc19tZXRhZGF0YSc7XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdFV0aWxzIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBodHRwOiBIdHRwQ2xpZW50ID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWNvcmF0ZShkZWNvcmF0b3JOYW1lOiBzdHJpbmcsIGFubm90YXRpb25zOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAxOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0XSA9IGFyZ3M7XHJcbiAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ2NsYXNzJywgYW5ub3RhdGlvbnMsIHRhcmdldC5wcm90b3R5cGUgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXldID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAncHJvcHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0IF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1syXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgaW5kZXhdID0gYXJncztcclxuICAgICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwYXJhbXMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUsIGluZGV4IH0gXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgZGVzY3JpcHRvcl0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ21ldGhvZHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUgfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVjb3JhdG9ycyBhcmUgbm90IHZhbGlkIGhlcmUhJyk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB1cCBtZXRhZGFkYVxyXG4gICAqIEBwYXJhbSB0eXBlIEVudGl0eSB0eXBlXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIG9mIG1ldGFkYXRhXHJcbiAgICogQHBhcmFtIHRhcmdldCBQcm90b3R5cGUgb2YgY3VycmVudCBvYmplY3RcclxuICAgKiBAcGFyYW0gbWV0YU5hbWUgRGVjb3JhdG9yIG5hbWVcclxuICAgKiBAcGFyYW0gZW50aXR5RGF0YSBFbnRpdHkgZXh0cmEgZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGNvbnN0cnVjdE1ldGFkYXRhKG1ldGFOYW1lOiBzdHJpbmcsIGVudGl0eVR5cGU6IFJlc291cmNlTWV0YWRhdGFUeXBlLCB2YWx1ZTogYW55LCB0YXJnZXQ6IGFueSwgZW50aXR5RGF0YT86IEV4dHJhRW50aXR5RGF0YSkge1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdIHx8IHt9O1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IHJvb3RNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXTtcclxuICAgIGNvbnN0IG1ldGFkYXRhT2JqID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdO1xyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5rZXlOYW1lKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5pbmRleCAhPSBudWxsKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdID0gbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGVudGl0eVR5cGUpIHtcclxuICAgICAgY2FzZSAnY2xhc3MnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Byb3BzJzogbWV0YWRhdGFPYmpbbWV0YU5hbWVdID0gdmFsdWU7IGJyZWFrO1xyXG4gICAgICBjYXNlICdtZXRob2RzJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhcmFtcyc6IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdW3ZhbHVlIHx8ICdkZWZhdWx0J10gPSBlbnRpdHlEYXRhLmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXVtlbnRpdHlUeXBlXSA9IG1ldGFkYXRhT2JqO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0TWV0aG9kKHJlcXVlc3RNZXRob2ROYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAvLyBAZHluYW1pY1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IGFueSkgPT4ge1xyXG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0VXJsKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBib2R5ID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0Qm9keSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RIZWFkZXJzKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBwcm9kdWNlc1R5cGUgPSBIdHRwUmVzdFV0aWxzLnByb2R1Y2UodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmUgPSBIdHRwUmVzdFV0aWxzLmdldE9ic2VydmUodGFyZ2V0LCBrZXksIGFyZ3MpXHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBodHRwUmVxdWVzdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgcGFyYW1zOiBzZWFyY2gsXHJcbiAgICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiBwcm9kdWNlc1R5cGUsXHJcbiAgICAgICAgICBvYnNlcnZlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gSHR0cFJlc3RVdGlscy5odHRwLnJlcXVlc3QocmVxdWVzdE1ldGhvZE5hbWUsIHVybCwgcGFyYW1zKTtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRPYnNlcnZlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgIHJldHVybiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5vYnNlcnZlO1xyXG4gICAgIH1cclxuICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvZHVjZSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzXHJcbiAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnByb2R1Y2VzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RVcmwodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzXHJcbiAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLnBhdGhcclxuICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IG1ldGhvZFVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5wYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IGlzUmVsYXRpdmVQYXRoID0gYCR7YmFzZVVybH0ke21ldGhvZFVybH1gWzBdID09PSAnLyc7XHJcbiAgICBjb25zdCBtZXRob2RVcmxXaXRoUGFyYW1zXHJcbiAgICAgID0gW2Jhc2VVcmwsIG1ldGhvZFVybF1cclxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gcGF0aClcclxuICAgICAgICAuam9pbignLycpXHJcbiAgICAgICAgLnNwbGl0KCcvJylcclxuICAgICAgICAubWFwKHBhdGggPT4ge1xyXG4gICAgICAgICAgaWYgKCBwYXRoWzBdID09PSAnOicpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhbcGFyYW1OYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJyk7XHJcblxyXG4gICAgaWYgKCFpc1JlbGF0aXZlUGF0aCkge1xyXG4gICAgICBjb25zdCBbYWJzb2x1dGVQcmVmaXgsIC4uLnBhdGhzXSA9IG1ldGhvZFVybFdpdGhQYXJhbXMuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIGAkeyBhYnNvbHV0ZVByZWZpeCB9Ly8keyBwYXRocy5qb2luKCcvJykgfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYC8keyBtZXRob2RVcmxXaXRoUGFyYW1zIH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdEJvZHkodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keS5kZWZhdWx0O1xyXG4gICAgcmV0dXJuIGFyZ3NbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFF1ZXJ5UGFyYW1zKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAoIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNcclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBxdWVyeVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc09iamVjdEluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeS5kZWZhdWx0O1xyXG4gICAgY29uc3QgcXVlcnlNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc0NvbGxlY3Rpb24gPSBxdWVyeVBhcmFtc09iamVjdEluZGV4ICE9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXJnc1txdWVyeVBhcmFtc09iamVjdEluZGV4XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LmtleXMocXVlcnlNZXRhZGF0YSkucmVkdWNlKChtZXJnZWRPYmosIHBhcmFtTmFtZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obWVyZ2VkT2JqLCB7IFtwYXJhbU5hbWVdOiBhcmdzW3F1ZXJ5TWV0YWRhdGFbcGFyYW1OYW1lXV0gfSksIHt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhxdWVyeVBhcmFtc0NvbGxlY3Rpb24pXHJcbiAgICAgIC5mb3JFYWNoKHBhcmFtTmFtZSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gcXVlcnlQYXJhbXNDb2xsZWN0aW9uW3BhcmFtTmFtZV07XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgeyB2YWx1ZSA9IFsgdmFsdWUgXTsgfVxyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKGN1clBhcmFtOiBhbnkpID0+IHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMuYXBwZW5kKHBhcmFtTmFtZSwgY3VyUGFyYW0pKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0SGVhZGVycyh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgY2xhc3NIZWFkZXJzID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLmhlYWRlcnMgOiB7fTtcclxuICAgIGNvbnN0IG1ldGhvZEhlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kcyAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLmhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcclxuICAgIGNvbnN0IG1lcmdlZEhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBjbGFzc0hlYWRlcnMsIG1ldGhvZEhlYWRlcnMpO1xyXG5cclxuICAgIGNvbnN0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiBtZXJnZWRIZWFkZXJzKSB7XHJcbiAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChoZWFkZXIsIG1lcmdlZEhlYWRlcnNbaGVhZGVyXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHR0cEhlYWRlcnM7XHJcbiAgfVxyXG59IiwiaW1wb3J0IHsgTmdNb2R1bGUsIEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVzdFV0aWxzIH0gZnJvbSBcIi4vbmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHNcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbi8vIEBkeW5hbWljXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbSHR0cENsaWVudE1vZHVsZV0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgeyBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsIHVzZUZhY3Rvcnk6IG9uQXBwSW5pdCwgbXVsdGk6IHRydWUsIGRlcHM6IFtIdHRwQ2xpZW50XSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdE1vZHVsZSB7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvbkFwcEluaXQoaHR0cDogSHR0cENsaWVudCkge1xyXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICBIdHRwUmVzdFV0aWxzLmh0dHAgPSBodHRwO1xyXG4gIH1cclxufSIsImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzJztcclxuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscywgcGF0aCwgYm9keSwgcXVlcnksIGhlYWRlcnMsIHByb2R1Y2VzLCBvYnNlcnZlIH0gZnJvbSBcIi4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgbGV0IFBhdGggPSBwYXRoO1xyXG5leHBvcnQgbGV0IFBhdGhQYXJhbSA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgQm9keSA9IGJvZHkobnVsbCk7XHJcbmV4cG9ydCBsZXQgUXVlcnkgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtID0gcXVlcnk7XHJcbmV4cG9ydCBsZXQgUXVlcnlQYXJhbXMgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBPYnNlcnZlID0gb2JzZXJ2ZTtcclxuXHJcbi8vIEhlYWRlcnNcclxuZXhwb3J0IGxldCBIZWFkZXJzID0gaGVhZGVycztcclxuXHJcbi8vIFByb2R1Y2VzXHJcbmV4cG9ydCBsZXQgUHJvZHVjZXMgPSBwcm9kdWNlcztcclxuXHJcbi8vIFJlcXVlc3QgbWV0aG9kc1xyXG5leHBvcnQgbGV0IEdFVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnR2V0Jyk7XHJcbmV4cG9ydCBsZXQgUE9TVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUG9zdCcpO1xyXG5leHBvcnQgbGV0IFBVVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUHV0Jyk7XHJcbmV4cG9ydCBsZXQgREVMRVRFID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdEZWxldGUnKTtcclxuZXhwb3J0IGxldCBPUFRJT05TID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdPcHRpb25zJyk7XHJcbmV4cG9ydCBsZXQgSEVBRCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnSGVhZCcpO1xyXG5leHBvcnQgbGV0IFBBVENIID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQYXRjaCcpOyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7QUFjQSxpQkFBd0IsV0FBZ0I7SUFDdEMsT0FBTyxDQUFDLEdBQUcsSUFBVyxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQ2xHOzs7OztBQUNELGNBQXFCLFdBQWdCO0lBQ25DLE9BQU8sQ0FBQyxHQUFHLElBQVcsS0FBSyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztDQUMvRjs7Ozs7QUFDRCxjQUFxQixXQUFnQjtJQUNuQyxPQUFPLENBQUMsR0FBRyxJQUFXLEtBQUssYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDL0Y7Ozs7O0FBQ0QsZUFBc0IsV0FBZ0I7SUFDcEMsT0FBTyxDQUFDLEdBQUcsSUFBVyxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQ2hHOzs7OztBQUNELGlCQUF3QixXQUFnQjtJQUN0QyxPQUFPLENBQUMsR0FBRyxJQUFXLEtBQUssYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDbEc7Ozs7O0FBQ0Qsa0JBQXlCLFdBQXFEO0lBQzVFLE9BQU8sQ0FBQyxHQUFH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 \ No newline at end of file diff --git a/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js.map b/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js.map new file mode 100644 index 0000000..143b8e1 --- /dev/null +++ b/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ngx-http-annotations.js.map","sources":["ng://ngx-http-annotations/src/ngx-http-annotations.utils.ts","ng://ngx-http-annotations/src/ngx-http-annotations.module.ts","ng://ngx-http-annotations/public_api.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from \"@angular/common/http\";\r\nimport { HttpObserve } from \"@angular/common/http/src/client\";\r\n\r\ninterface httpRequestOptions {\r\n body?: any;\r\n headers?: HttpHeaders;\r\n params?: HttpParams;\r\n observe?: HttpObserve;\r\n reportProgress?: boolean;\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n withCredentials?: boolean;\r\n}\r\n\r\n\r\nexport function observe(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]);\r\n}\r\nexport function path(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]);\r\n}\r\nexport function body(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]);\r\n}\r\nexport function query(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]);\r\n}\r\nexport function headers(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]);\r\n}\r\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]);\r\n}\r\n\r\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\r\ninterface ExtraEntityData {\r\n keyName: string;\r\n index: number;\r\n}\r\nconst RESOURSE_METADATA_ROOT = 'resources_metadata';\r\n// @dynamic\r\nexport class HttpRestUtils {\r\n\r\n public static http: HttpClient = null;\r\n\r\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\r\n switch (args.length) {\r\n case 1: {\r\n const [target] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]);\r\n break;\r\n }\r\n case 2: {\r\n const [target, key] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'props', annotations, target ]);\r\n break;\r\n }\r\n case 3:\r\n if (typeof args[2] === 'number') {\r\n const [target, keyName, index] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'params', annotations, target, { keyName, index } ]);\r\n break;\r\n } else {\r\n const [target, keyName, descriptor] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'methods', annotations, target, { keyName } ]);\r\n break;\r\n }\r\n default:\r\n throw new Error('Decorators are not valid here!');\r\n }\r\n }\r\n\r\n /**\r\n * Set up metadada\r\n * @param type Entity type\r\n * @param value Value of metadata\r\n * @param target Prototype of current object\r\n * @param metaName Decorator name\r\n * @param entityData Entity extra data\r\n */\r\n private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) {\r\n target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {};\r\n target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {};\r\n\r\n const rootMetadata = target[RESOURSE_METADATA_ROOT];\r\n const metadataObj = target[RESOURSE_METADATA_ROOT][entityType];\r\n if (entityData && entityData.keyName) {\r\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\r\n }\r\n if (entityData && entityData.index != null) {\r\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\r\n }\r\n switch (entityType) {\r\n case 'class': metadataObj[metaName] = value; break;\r\n case 'props': metadataObj[metaName] = value; break;\r\n case 'methods': metadataObj[entityData.keyName][metaName] = value; break;\r\n case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index;\r\n }\r\n\r\n target[RESOURSE_METADATA_ROOT][entityType] = metadataObj;\r\n }\r\n\r\n public static requestMethod(requestMethodName: string): any {\r\n // @dynamic\r\n return (target: any, key: string, descriptor: any) => {\r\n descriptor.value = function (...args: any[]) {\r\n const url = HttpRestUtils.collectUrl(target, key, args);\r\n const body = HttpRestUtils.collectBody(target, key, args);\r\n const search = HttpRestUtils.collectQueryParams(target, key, args);\r\n const headers = HttpRestUtils.collectHeaders(target, key, args);\r\n const producesType = HttpRestUtils.produce(target, key, args);\r\n const observe = HttpRestUtils.getObserve(target, key, args)\r\n const params: httpRequestOptions = {\r\n body,\r\n params: search,\r\n headers,\r\n responseType: producesType,\r\n observe\r\n };\r\n return HttpRestUtils.http.request(requestMethodName, url, params);\r\n };\r\n };\r\n }\r\n\r\n private static getObserve(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].observe;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static produce(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].produces;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static collectUrl(target: any, methodName: string, args: any[]) {\r\n const baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class\r\n ? target[RESOURSE_METADATA_ROOT].class.path\r\n : '';\r\n const methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].path\r\n : '';\r\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\r\n const methodUrlWithParams\r\n = [baseUrl, methodUrl]\r\n .filter(path => path)\r\n .join('/')\r\n .split('/')\r\n .map(path => {\r\n if ( path[0] === ':') {\r\n const paramName = path.substring(1);\r\n const index = target[RESOURSE_METADATA_ROOT].params\r\n && target[RESOURSE_METADATA_ROOT].params[methodName]\r\n && target[RESOURSE_METADATA_ROOT].params[methodName].path\r\n ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName]\r\n : '';\r\n return args[index];\r\n }\r\n return path;\r\n })\r\n .filter(path => path)\r\n .join('/');\r\n\r\n if (!isRelativePath) {\r\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\r\n return `${ absolutePrefix }//${ paths.join('/') }`;\r\n }\r\n return `/${ methodUrlWithParams }`;\r\n }\r\n\r\n private static collectBody(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].body) return undefined;\r\n\r\n const index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default;\r\n return args[index];\r\n }\r\n\r\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined;\r\n\r\n let queryParams = new HttpParams();\r\n const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default;\r\n const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query;\r\n const queryParamsCollection = queryParamsObjectIndex != undefined\r\n ? args[queryParamsObjectIndex]\r\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\r\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\r\n );\r\n\r\n Object.keys(queryParamsCollection)\r\n .forEach(paramName => {\r\n let value = queryParamsCollection[paramName];\r\n if (!Array.isArray(value)) { value = [ value ]; }\r\n value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam));\r\n });\r\n return queryParams;\r\n }\r\n\r\n private static collectHeaders(target: any, methodName: string, args: any[]) {\r\n const classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {};\r\n const methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers\r\n : {};\r\n const mergedHeaders = Object.assign({}, classHeaders, methodHeaders);\r\n\r\n const httpHeaders = new HttpHeaders();\r\n for (const header in mergedHeaders) {\r\n httpHeaders.append(header, mergedHeaders[header]);\r\n }\r\n return httpHeaders;\r\n }\r\n}","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpRestUtils } from \"./ngx-http-annotations.utils\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n// @dynamic\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [\r\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] }\r\n ]\r\n})\r\nexport class HttpRestModule {\r\n}\r\n\r\nexport function onAppInit(http: HttpClient) {\r\n return function () {\r\n HttpRestUtils.http = http;\r\n }\r\n}","export * from './src/ngx-http-annotations.module';\r\nexport * from './src/ngx-http-annotations.utils';\r\nimport { Response } from '@angular/http';\r\nimport { HttpRestUtils, path, body, query, headers, produces, observe } from \"./src/ngx-http-annotations.utils\";\r\n\r\nexport let Path = path;\r\nexport let PathParam = path;\r\nexport let Body = body(null);\r\nexport let Query = query(null);\r\nexport let QueryParam = query;\r\nexport let QueryParams = query(null);\r\nexport let Observe = observe;\r\n\r\n// Headers\r\nexport let Headers = headers;\r\n\r\n// Produces\r\nexport let Produces = produces;\r\n\r\n// Request methods\r\nexport let GET = HttpRestUtils.requestMethod('Get');\r\nexport let POST = HttpRestUtils.requestMethod('Post');\r\nexport let PUT = HttpRestUtils.requestMethod('Put');\r\nexport let DELETE = HttpRestUtils.requestMethod('Delete');\r\nexport let OPTIONS = HttpRestUtils.requestMethod('Options');\r\nexport let HEAD = HttpRestUtils.requestMethod('Head');\r\nexport let PATCH = HttpRestUtils.requestMethod('Patch');"],"names":[],"mappings":"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"} diff --git a/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js b/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js new file mode 100644 index 0000000..2d48e17 --- /dev/null +++ b/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js @@ -0,0 +1,440 @@ +import { __spread, __read } from 'tslib'; +import { HttpParams, HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http'; +import { NgModule, APP_INITIALIZER } from '@angular/core'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * @param {?} annotations + * @return {?} + */ +function observe(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['observe', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +function path(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['path', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +function body(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['body', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +function query(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['query', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +function headers(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['headers', annotations], args)); + }; +} +/** + * @param {?} annotations + * @return {?} + */ +function produces(annotations) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return HttpRestUtils.decorate.apply(_this, __spread(['produces', annotations], args)); + }; +} +var /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; +var HttpRestUtils = /** @class */ (function () { + function HttpRestUtils() { + } + /** + * @param {?} decoratorName + * @param {?} annotations + * @param {...?} args + * @return {?} + */ + HttpRestUtils.decorate = /** + * @param {?} decoratorName + * @param {?} annotations + * @param {...?} args + * @return {?} + */ + function (decoratorName, annotations) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + switch (args.length) { + case 1: { + var _a = __read(args, 1), target = _a[0]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); + break; + } + case 2: { + var _b = __read(args, 2), target = _b[0], key = _b[1]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); + break; + } + case 3: + if (typeof args[2] === 'number') { + var _c = __read(args, 3), target = _c[0], keyName = _c[1], index = _c[2]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName: keyName, index: index }]); + break; + } + else { + var _d = __read(args, 3), target = _d[0], keyName = _d[1], descriptor = _d[2]; + HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName: keyName }]); + break; + } + default: + throw new Error('Decorators are not valid here!'); + } + }; + /** + * Set up metadada + * @param {?} metaName Decorator name + * @param {?} entityType + * @param {?} value Value of metadata + * @param {?} target Prototype of current object + * @param {?=} entityData Entity extra data + * @return {?} + */ + HttpRestUtils.constructMetadata = /** + * Set up metadada + * @param {?} metaName Decorator name + * @param {?} entityType + * @param {?} value Value of metadata + * @param {?} target Prototype of current object + * @param {?=} entityData Entity extra data + * @return {?} + */ + function (metaName, entityType, value, target, entityData) { + target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; + target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; + var /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; + var /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; + if (entityData && entityData.keyName) { + metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; + } + if (entityData && entityData.index != null) { + metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; + } + switch (entityType) { + case 'class': + metadataObj[metaName] = value; + break; + case 'props': + metadataObj[metaName] = value; + break; + case 'methods': + metadataObj[entityData.keyName][metaName] = value; + break; + case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; + } + target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; + }; + /** + * @param {?} requestMethodName + * @return {?} + */ + HttpRestUtils.requestMethod = /** + * @param {?} requestMethodName + * @return {?} + */ + function (requestMethodName) { + // @dynamic + return function (target, key, descriptor) { + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); + var /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); + var /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); + var /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); + var /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); + var /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); + var /** @type {?} */ params = { + body: body, + params: search, + headers: headers, + responseType: producesType, + observe: observe + }; + return HttpRestUtils.http.request(requestMethodName, url, params); + }; + }; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.getObserve = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; + } + return undefined; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.produce = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (target[RESOURSE_METADATA_ROOT].methods + && target[RESOURSE_METADATA_ROOT].methods[methodName]) { + return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; + } + return undefined; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectUrl = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + var /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class + ? target[RESOURSE_METADATA_ROOT].class.path + : ''; + var /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].path + : ''; + var /** @type {?} */ isRelativePath = ("" + baseUrl + methodUrl)[0] === '/'; + var /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] + .filter(function (path) { return path; }) + .join('/') + .split('/') + .map(function (path) { + if (path[0] === ':') { + var /** @type {?} */ paramName = path.substring(1); + var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params + && target[RESOURSE_METADATA_ROOT].params[methodName] + && target[RESOURSE_METADATA_ROOT].params[methodName].path + ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] + : ''; + return args[index]; + } + return path; + }) + .filter(function (path) { return path; }) + .join('/'); + if (!isRelativePath) { + var _a = __read(methodUrlWithParams.split('/')), absolutePrefix = _a[0], paths = _a.slice(1); + return absolutePrefix + "//" + paths.join('/'); + } + return "/" + methodUrlWithParams; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectBody = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].body) + return undefined; + var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; + return args[index]; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectQueryParams = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].query) + return undefined; + var /** @type {?} */ queryParams = new HttpParams(); + var /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; + var /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; + var /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined + ? args[queryParamsObjectIndex] + : Object.keys(queryMetadata).reduce(function (mergedObj, paramName) { + return Object.assign(mergedObj, (_a = {}, _a[paramName] = args[queryMetadata[paramName]], _a)); + var _a; + }, {}); + Object.keys(queryParamsCollection) + .forEach(function (paramName) { + var /** @type {?} */ value = queryParamsCollection[paramName]; + if (!Array.isArray(value)) { + value = [value]; + } + value.forEach(function (curParam) { return queryParams = queryParams.append(paramName, curParam); }); + }); + return queryParams; + }; + /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + HttpRestUtils.collectHeaders = /** + * @param {?} target + * @param {?} methodName + * @param {?} args + * @return {?} + */ + function (target, methodName, args) { + var /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; + var /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] + ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers + : {}; + var /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); + var /** @type {?} */ httpHeaders = new HttpHeaders(); + for (var /** @type {?} */ header in mergedHeaders) { + httpHeaders.append(header, mergedHeaders[header]); + } + return httpHeaders; + }; + HttpRestUtils.http = null; + return HttpRestUtils; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +var HttpRestModule = /** @class */ (function () { + function HttpRestModule() { + } + HttpRestModule.decorators = [ + { type: NgModule, args: [{ + imports: [HttpClientModule], + providers: [ + { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } + ] + },] }, + ]; + return HttpRestModule; +}()); +/** + * @param {?} http + * @return {?} + */ +function onAppInit(http) { + return function () { + HttpRestUtils.http = http; + }; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +var /** @type {?} */ Path = path; +var /** @type {?} */ PathParam = path; +var /** @type {?} */ Body = body(null); +var /** @type {?} */ Query = query(null); +var /** @type {?} */ QueryParam = query; +var /** @type {?} */ QueryParams = query(null); +var /** @type {?} */ Observe = observe; +// Headers +var /** @type {?} */ Headers = headers; +// Produces +var /** @type {?} */ Produces = produces; +// Request methods +var /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); +var /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); +var /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); +var /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); +var /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); +var /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); +var /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ + +export { Path, PathParam, Body, Query, QueryParam, QueryParams, Observe, Headers, Produces, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, HttpRestModule, onAppInit, observe, path, body, query, headers, produces, HttpRestUtils }; + +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1odHRwLWFubm90YXRpb25zL3NyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZS50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvcHVibGljX2FwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cE9ic2VydmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHAvc3JjL2NsaWVudFwiO1xyXG5cclxuaW50ZXJmYWNlIGh0dHBSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgYm9keT86IGFueTtcclxuICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgcGFyYW1zPzogSHR0cFBhcmFtcztcclxuICBvYnNlcnZlPzogSHR0cE9ic2VydmU7XHJcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnb2JzZXJ2ZScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHBhdGgoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwYXRoJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gYm9keShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2JvZHknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBxdWVyeShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3F1ZXJ5JywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaGVhZGVycyhhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2hlYWRlcnMnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlcyhhbm5vdGF0aW9uczogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jykge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwcm9kdWNlcycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuXHJcbnR5cGUgUmVzb3VyY2VNZXRhZGF0YVR5cGUgPSAnY2xhc3MnfCdtZXRob2RzJ3wncGFyYW1zJ3wncHJvcHMnO1xyXG5pbnRlcmZhY2UgRXh0cmFFbnRpdHlEYXRhIHtcclxuICBrZXlOYW1lOiBzdHJpbmc7XHJcbiAgaW5kZXg6IG51bWJlcjtcclxufVxyXG5jb25zdCBSRVNPVVJTRV9NRVRBREFUQV9ST09UID0gJ3Jlc291cmNlc19tZXRhZGF0YSc7XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdFV0aWxzIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBodHRwOiBIdHRwQ2xpZW50ID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWNvcmF0ZShkZWNvcmF0b3JOYW1lOiBzdHJpbmcsIGFubm90YXRpb25zOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAxOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0XSA9IGFyZ3M7XHJcbiAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ2NsYXNzJywgYW5ub3RhdGlvbnMsIHRhcmdldC5wcm90b3R5cGUgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXldID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAncHJvcHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0IF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1syXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgaW5kZXhdID0gYXJncztcclxuICAgICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwYXJhbXMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUsIGluZGV4IH0gXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgZGVzY3JpcHRvcl0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ21ldGhvZHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUgfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVjb3JhdG9ycyBhcmUgbm90IHZhbGlkIGhlcmUhJyk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB1cCBtZXRhZGFkYVxyXG4gICAqIEBwYXJhbSB0eXBlIEVudGl0eSB0eXBlXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIG9mIG1ldGFkYXRhXHJcbiAgICogQHBhcmFtIHRhcmdldCBQcm90b3R5cGUgb2YgY3VycmVudCBvYmplY3RcclxuICAgKiBAcGFyYW0gbWV0YU5hbWUgRGVjb3JhdG9yIG5hbWVcclxuICAgKiBAcGFyYW0gZW50aXR5RGF0YSBFbnRpdHkgZXh0cmEgZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGNvbnN0cnVjdE1ldGFkYXRhKG1ldGFOYW1lOiBzdHJpbmcsIGVudGl0eVR5cGU6IFJlc291cmNlTWV0YWRhdGFUeXBlLCB2YWx1ZTogYW55LCB0YXJnZXQ6IGFueSwgZW50aXR5RGF0YT86IEV4dHJhRW50aXR5RGF0YSkge1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdIHx8IHt9O1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IHJvb3RNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXTtcclxuICAgIGNvbnN0IG1ldGFkYXRhT2JqID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdO1xyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5rZXlOYW1lKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5pbmRleCAhPSBudWxsKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdID0gbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGVudGl0eVR5cGUpIHtcclxuICAgICAgY2FzZSAnY2xhc3MnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Byb3BzJzogbWV0YWRhdGFPYmpbbWV0YU5hbWVdID0gdmFsdWU7IGJyZWFrO1xyXG4gICAgICBjYXNlICdtZXRob2RzJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhcmFtcyc6IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdW3ZhbHVlIHx8ICdkZWZhdWx0J10gPSBlbnRpdHlEYXRhLmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXVtlbnRpdHlUeXBlXSA9IG1ldGFkYXRhT2JqO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0TWV0aG9kKHJlcXVlc3RNZXRob2ROYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAvLyBAZHluYW1pY1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IGFueSkgPT4ge1xyXG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0VXJsKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBib2R5ID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0Qm9keSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RIZWFkZXJzKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBwcm9kdWNlc1R5cGUgPSBIdHRwUmVzdFV0aWxzLnByb2R1Y2UodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmUgPSBIdHRwUmVzdFV0aWxzLmdldE9ic2VydmUodGFyZ2V0LCBrZXksIGFyZ3MpXHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBodHRwUmVxdWVzdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgcGFyYW1zOiBzZWFyY2gsXHJcbiAgICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiBwcm9kdWNlc1R5cGUsXHJcbiAgICAgICAgICBvYnNlcnZlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gSHR0cFJlc3RVdGlscy5odHRwLnJlcXVlc3QocmVxdWVzdE1ldGhvZE5hbWUsIHVybCwgcGFyYW1zKTtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRPYnNlcnZlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgIHJldHVybiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5vYnNlcnZlO1xyXG4gICAgIH1cclxuICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvZHVjZSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzXHJcbiAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnByb2R1Y2VzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RVcmwodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzXHJcbiAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLnBhdGhcclxuICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IG1ldGhvZFVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5wYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IGlzUmVsYXRpdmVQYXRoID0gYCR7YmFzZVVybH0ke21ldGhvZFVybH1gWzBdID09PSAnLyc7XHJcbiAgICBjb25zdCBtZXRob2RVcmxXaXRoUGFyYW1zXHJcbiAgICAgID0gW2Jhc2VVcmwsIG1ldGhvZFVybF1cclxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gcGF0aClcclxuICAgICAgICAuam9pbignLycpXHJcbiAgICAgICAgLnNwbGl0KCcvJylcclxuICAgICAgICAubWFwKHBhdGggPT4ge1xyXG4gICAgICAgICAgaWYgKCBwYXRoWzBdID09PSAnOicpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhbcGFyYW1OYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJyk7XHJcblxyXG4gICAgaWYgKCFpc1JlbGF0aXZlUGF0aCkge1xyXG4gICAgICBjb25zdCBbYWJzb2x1dGVQcmVmaXgsIC4uLnBhdGhzXSA9IG1ldGhvZFVybFdpdGhQYXJhbXMuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIGAkeyBhYnNvbHV0ZVByZWZpeCB9Ly8keyBwYXRocy5qb2luKCcvJykgfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYC8keyBtZXRob2RVcmxXaXRoUGFyYW1zIH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdEJvZHkodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keS5kZWZhdWx0O1xyXG4gICAgcmV0dXJuIGFyZ3NbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFF1ZXJ5UGFyYW1zKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAoIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNcclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBxdWVyeVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc09iamVjdEluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeS5kZWZhdWx0O1xyXG4gICAgY29uc3QgcXVlcnlNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc0NvbGxlY3Rpb24gPSBxdWVyeVBhcmFtc09iamVjdEluZGV4ICE9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXJnc1txdWVyeVBhcmFtc09iamVjdEluZGV4XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LmtleXMocXVlcnlNZXRhZGF0YSkucmVkdWNlKChtZXJnZWRPYmosIHBhcmFtTmFtZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obWVyZ2VkT2JqLCB7IFtwYXJhbU5hbWVdOiBhcmdzW3F1ZXJ5TWV0YWRhdGFbcGFyYW1OYW1lXV0gfSksIHt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhxdWVyeVBhcmFtc0NvbGxlY3Rpb24pXHJcbiAgICAgIC5mb3JFYWNoKHBhcmFtTmFtZSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gcXVlcnlQYXJhbXNDb2xsZWN0aW9uW3BhcmFtTmFtZV07XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgeyB2YWx1ZSA9IFsgdmFsdWUgXTsgfVxyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKGN1clBhcmFtOiBhbnkpID0+IHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMuYXBwZW5kKHBhcmFtTmFtZSwgY3VyUGFyYW0pKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0SGVhZGVycyh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgY2xhc3NIZWFkZXJzID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLmhlYWRlcnMgOiB7fTtcclxuICAgIGNvbnN0IG1ldGhvZEhlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kcyAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLmhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcclxuICAgIGNvbnN0IG1lcmdlZEhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBjbGFzc0hlYWRlcnMsIG1ldGhvZEhlYWRlcnMpO1xyXG5cclxuICAgIGNvbnN0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiBtZXJnZWRIZWFkZXJzKSB7XHJcbiAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChoZWFkZXIsIG1lcmdlZEhlYWRlcnNbaGVhZGVyXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHR0cEhlYWRlcnM7XHJcbiAgfVxyXG59IiwiaW1wb3J0IHsgTmdNb2R1bGUsIEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVzdFV0aWxzIH0gZnJvbSBcIi4vbmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHNcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbi8vIEBkeW5hbWljXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbSHR0cENsaWVudE1vZHVsZV0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgeyBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsIHVzZUZhY3Rvcnk6IG9uQXBwSW5pdCwgbXVsdGk6IHRydWUsIGRlcHM6IFtIdHRwQ2xpZW50XSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdE1vZHVsZSB7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvbkFwcEluaXQoaHR0cDogSHR0cENsaWVudCkge1xyXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICBIdHRwUmVzdFV0aWxzLmh0dHAgPSBodHRwO1xyXG4gIH1cclxufSIsImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzJztcclxuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscywgcGF0aCwgYm9keSwgcXVlcnksIGhlYWRlcnMsIHByb2R1Y2VzLCBvYnNlcnZlIH0gZnJvbSBcIi4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgbGV0IFBhdGggPSBwYXRoO1xyXG5leHBvcnQgbGV0IFBhdGhQYXJhbSA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgQm9keSA9IGJvZHkobnVsbCk7XHJcbmV4cG9ydCBsZXQgUXVlcnkgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtID0gcXVlcnk7XHJcbmV4cG9ydCBsZXQgUXVlcnlQYXJhbXMgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBPYnNlcnZlID0gb2JzZXJ2ZTtcclxuXHJcbi8vIEhlYWRlcnNcclxuZXhwb3J0IGxldCBIZWFkZXJzID0gaGVhZGVycztcclxuXHJcbi8vIFByb2R1Y2VzXHJcbmV4cG9ydCBsZXQgUHJvZHVjZXMgPSBwcm9kdWNlcztcclxuXHJcbi8vIFJlcXVlc3QgbWV0aG9kc1xyXG5leHBvcnQgbGV0IEdFVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnR2V0Jyk7XHJcbmV4cG9ydCBsZXQgUE9TVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUG9zdCcpO1xyXG5leHBvcnQgbGV0IFBVVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUHV0Jyk7XHJcbmV4cG9ydCBsZXQgREVMRVRFID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdEZWxldGUnKTtcclxuZXhwb3J0IGxldCBPUFRJT05TID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdPcHRpb25zJyk7XHJcbmV4cG9ydCBsZXQgSEVBRCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnSGVhZCcpO1xyXG5leHBvcnQgbGV0IFBBVENIID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQYXRjaCcpOyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFnQkEsaUJBQXdCLFdBQWdCO0lBQXhDLGlCQUVDO0lBREMsT0FBTztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLFlBQUcsU0FBUyxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7S0FBQSxDQUFDO0NBQ2xHOzs7OztBQUNELGNBQXFCLFdBQWdCO0lBQXJDLGlCQUVDO0lBREMsT0FBTztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLFlBQUcsTUFBTSxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7S0FBQSxDQUFDO0NBQy9GOzs7OztBQUNELGNBQXFCLFdBQWdCO0lBQXJDLGlCQUVDO0lBREMsT0FBTztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLFlBQUcsTUFBTSxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7S0FBQSxDQUFDO0NBQy9GOzs7OztBQUNELGVBQXNCLFdBQWdCO0lBQXRDLGlCQUVDO0lBREMsT0FBTztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLFlBQUcsT0FBTyxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7S0FBQSxDQUFDO0NBQ2hHOzs7OztBQUNELGlCQUF3QixX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 \ No newline at end of file diff --git a/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js.map b/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js.map new file mode 100644 index 0000000..bd818c4 --- /dev/null +++ b/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ngx-http-annotations.js.map","sources":["ng://ngx-http-annotations/src/ngx-http-annotations.utils.ts","ng://ngx-http-annotations/src/ngx-http-annotations.module.ts","ng://ngx-http-annotations/public_api.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from \"@angular/common/http\";\r\nimport { HttpObserve } from \"@angular/common/http/src/client\";\r\n\r\ninterface httpRequestOptions {\r\n body?: any;\r\n headers?: HttpHeaders;\r\n params?: HttpParams;\r\n observe?: HttpObserve;\r\n reportProgress?: boolean;\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n withCredentials?: boolean;\r\n}\r\n\r\n\r\nexport function observe(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]);\r\n}\r\nexport function path(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]);\r\n}\r\nexport function body(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]);\r\n}\r\nexport function query(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]);\r\n}\r\nexport function headers(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]);\r\n}\r\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]);\r\n}\r\n\r\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\r\ninterface ExtraEntityData {\r\n keyName: string;\r\n index: number;\r\n}\r\nconst RESOURSE_METADATA_ROOT = 'resources_metadata';\r\n// @dynamic\r\nexport class HttpRestUtils {\r\n\r\n public static http: HttpClient = null;\r\n\r\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\r\n switch (args.length) {\r\n case 1: {\r\n const [target] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]);\r\n break;\r\n }\r\n case 2: {\r\n const [target, key] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'props', annotations, target ]);\r\n break;\r\n }\r\n case 3:\r\n if (typeof args[2] === 'number') {\r\n const [target, keyName, index] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'params', annotations, target, { keyName, index } ]);\r\n break;\r\n } else {\r\n const [target, keyName, descriptor] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'methods', annotations, target, { keyName } ]);\r\n break;\r\n }\r\n default:\r\n throw new Error('Decorators are not valid here!');\r\n }\r\n }\r\n\r\n /**\r\n * Set up metadada\r\n * @param type Entity type\r\n * @param value Value of metadata\r\n * @param target Prototype of current object\r\n * @param metaName Decorator name\r\n * @param entityData Entity extra data\r\n */\r\n private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) {\r\n target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {};\r\n target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {};\r\n\r\n const rootMetadata = target[RESOURSE_METADATA_ROOT];\r\n const metadataObj = target[RESOURSE_METADATA_ROOT][entityType];\r\n if (entityData && entityData.keyName) {\r\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\r\n }\r\n if (entityData && entityData.index != null) {\r\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\r\n }\r\n switch (entityType) {\r\n case 'class': metadataObj[metaName] = value; break;\r\n case 'props': metadataObj[metaName] = value; break;\r\n case 'methods': metadataObj[entityData.keyName][metaName] = value; break;\r\n case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index;\r\n }\r\n\r\n target[RESOURSE_METADATA_ROOT][entityType] = metadataObj;\r\n }\r\n\r\n public static requestMethod(requestMethodName: string): any {\r\n // @dynamic\r\n return (target: any, key: string, descriptor: any) => {\r\n descriptor.value = function (...args: any[]) {\r\n const url = HttpRestUtils.collectUrl(target, key, args);\r\n const body = HttpRestUtils.collectBody(target, key, args);\r\n const search = HttpRestUtils.collectQueryParams(target, key, args);\r\n const headers = HttpRestUtils.collectHeaders(target, key, args);\r\n const producesType = HttpRestUtils.produce(target, key, args);\r\n const observe = HttpRestUtils.getObserve(target, key, args)\r\n const params: httpRequestOptions = {\r\n body,\r\n params: search,\r\n headers,\r\n responseType: producesType,\r\n observe\r\n };\r\n return HttpRestUtils.http.request(requestMethodName, url, params);\r\n };\r\n };\r\n }\r\n\r\n private static getObserve(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].observe;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static produce(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].produces;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static collectUrl(target: any, methodName: string, args: any[]) {\r\n const baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class\r\n ? target[RESOURSE_METADATA_ROOT].class.path\r\n : '';\r\n const methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].path\r\n : '';\r\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\r\n const methodUrlWithParams\r\n = [baseUrl, methodUrl]\r\n .filter(path => path)\r\n .join('/')\r\n .split('/')\r\n .map(path => {\r\n if ( path[0] === ':') {\r\n const paramName = path.substring(1);\r\n const index = target[RESOURSE_METADATA_ROOT].params\r\n && target[RESOURSE_METADATA_ROOT].params[methodName]\r\n && target[RESOURSE_METADATA_ROOT].params[methodName].path\r\n ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName]\r\n : '';\r\n return args[index];\r\n }\r\n return path;\r\n })\r\n .filter(path => path)\r\n .join('/');\r\n\r\n if (!isRelativePath) {\r\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\r\n return `${ absolutePrefix }//${ paths.join('/') }`;\r\n }\r\n return `/${ methodUrlWithParams }`;\r\n }\r\n\r\n private static collectBody(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].body) return undefined;\r\n\r\n const index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default;\r\n return args[index];\r\n }\r\n\r\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined;\r\n\r\n let queryParams = new HttpParams();\r\n const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default;\r\n const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query;\r\n const queryParamsCollection = queryParamsObjectIndex != undefined\r\n ? args[queryParamsObjectIndex]\r\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\r\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\r\n );\r\n\r\n Object.keys(queryParamsCollection)\r\n .forEach(paramName => {\r\n let value = queryParamsCollection[paramName];\r\n if (!Array.isArray(value)) { value = [ value ]; }\r\n value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam));\r\n });\r\n return queryParams;\r\n }\r\n\r\n private static collectHeaders(target: any, methodName: string, args: any[]) {\r\n const classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {};\r\n const methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers\r\n : {};\r\n const mergedHeaders = Object.assign({}, classHeaders, methodHeaders);\r\n\r\n const httpHeaders = new HttpHeaders();\r\n for (const header in mergedHeaders) {\r\n httpHeaders.append(header, mergedHeaders[header]);\r\n }\r\n return httpHeaders;\r\n }\r\n}","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpRestUtils } from \"./ngx-http-annotations.utils\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n// @dynamic\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [\r\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] }\r\n ]\r\n})\r\nexport class HttpRestModule {\r\n}\r\n\r\nexport function onAppInit(http: HttpClient) {\r\n return function () {\r\n HttpRestUtils.http = http;\r\n }\r\n}","export * from './src/ngx-http-annotations.module';\r\nexport * from './src/ngx-http-annotations.utils';\r\nimport { Response } from '@angular/http';\r\nimport { HttpRestUtils, path, body, query, headers, produces, observe } from \"./src/ngx-http-annotations.utils\";\r\n\r\nexport let Path = path;\r\nexport let PathParam = path;\r\nexport let Body = body(null);\r\nexport let Query = query(null);\r\nexport let QueryParam = query;\r\nexport let QueryParams = query(null);\r\nexport let Observe = observe;\r\n\r\n// Headers\r\nexport let Headers = headers;\r\n\r\n// Produces\r\nexport let Produces = produces;\r\n\r\n// Request methods\r\nexport let GET = HttpRestUtils.requestMethod('Get');\r\nexport let POST = HttpRestUtils.requestMethod('Post');\r\nexport let PUT = HttpRestUtils.requestMethod('Put');\r\nexport let DELETE = HttpRestUtils.requestMethod('Delete');\r\nexport let OPTIONS = HttpRestUtils.requestMethod('Options');\r\nexport let HEAD = HttpRestUtils.requestMethod('Head');\r\nexport let PATCH = HttpRestUtils.requestMethod('Patch');"],"names":[],"mappings":"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"} diff --git a/dist/ngx-http-annotations/ngx-http-annotations.d.ts b/dist/ngx-http-annotations/ngx-http-annotations.d.ts new file mode 100644 index 0000000..7417cc8 --- /dev/null +++ b/dist/ngx-http-annotations/ngx-http-annotations.d.ts @@ -0,0 +1,4 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public_api'; diff --git a/dist/ngx-http-annotations/ngx-http-annotations.metadata.json b/dist/ngx-http-annotations/ngx-http-annotations.metadata.json new file mode 100644 index 0000000..c53df0a --- /dev/null +++ b/dist/ngx-http-annotations/ngx-http-annotations.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"metadata":{"Path":{"__symbolic":"reference","name":"path"},"PathParam":{"__symbolic":"reference","name":"path"},"Body":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"body"},"arguments":[null]},"Query":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"query"},"arguments":[null]},"QueryParam":{"__symbolic":"reference","name":"query"},"QueryParams":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"query"},"arguments":[null]},"Observe":{"__symbolic":"reference","name":"observe"},"Headers":{"__symbolic":"reference","name":"headers"},"Produces":{"__symbolic":"reference","name":"produces"},"GET":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Get"]},"POST":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Post"]},"PUT":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Put"]},"DELETE":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Delete"]},"OPTIONS":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Options"]},"HEAD":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Head"]},"PATCH":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Patch"]},"HttpRestModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":6,"character":14}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_INITIALIZER","line":8,"character":17},"useFactory":{"__symbolic":"reference","name":"onAppInit"},"multi":true,"deps":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":8,"character":77}]}]}]}],"members":{}},"onAppInit":{"__symbolic":"function","parameters":["http"],"value":{"__symbolic":"error","message":"Lambda not supported","line":15,"character":9,"module":"./src/ngx-http-annotations.module"}},"observe":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":17,"character":9,"module":"./src/ngx-http-annotations.utils"}},"path":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":20,"character":9,"module":"./src/ngx-http-annotations.utils"}},"body":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":23,"character":9,"module":"./src/ngx-http-annotations.utils"}},"query":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":26,"character":9,"module":"./src/ngx-http-annotations.utils"}},"headers":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":29,"character":9,"module":"./src/ngx-http-annotations.utils"}},"produces":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":32,"character":9,"module":"./src/ngx-http-annotations.utils"}},"HttpRestUtils":{"__symbolic":"class","members":{},"statics":{"http":null,"requestMethod":{"__symbolic":"function","parameters":["requestMethodName"],"value":{"__symbolic":"error","message":"Lambda not supported","line":105,"character":11,"module":"./src/ngx-http-annotations.utils"}}}}},"origins":{"Path":"./src/ngx-http-annotations.utils","PathParam":"./src/ngx-http-annotations.utils","Body":"./public_api","Query":"./public_api","QueryParam":"./src/ngx-http-annotations.utils","QueryParams":"./public_api","Observe":"./src/ngx-http-annotations.utils","Headers":"./src/ngx-http-annotations.utils","Produces":"./src/ngx-http-annotations.utils","GET":"./public_api","POST":"./public_api","PUT":"./public_api","DELETE":"./public_api","OPTIONS":"./public_api","HEAD":"./public_api","PATCH":"./public_api","HttpRestModule":"./src/ngx-http-annotations.module","onAppInit":"./src/ngx-http-annotations.module","observe":"./src/ngx-http-annotations.utils","path":"./src/ngx-http-annotations.utils","body":"./src/ngx-http-annotations.utils","query":"./src/ngx-http-annotations.utils","headers":"./src/ngx-http-annotations.utils","produces":"./src/ngx-http-annotations.utils","HttpRestUtils":"./src/ngx-http-annotations.utils"},"importAs":"ngx-http-annotations"} \ No newline at end of file diff --git a/dist/ngx-http-annotations/package.json b/dist/ngx-http-annotations/package.json new file mode 100644 index 0000000..2044434 --- /dev/null +++ b/dist/ngx-http-annotations/package.json @@ -0,0 +1,57 @@ +{ + "name": "ngx-http-annotations", + "description": "Somes annotations to call http with angular like @GET, @PUT, @POST etc...", + "version": "0.5.2", + "main": "bundles/ngx-http-annotations.umd.js", + "files": [ + "src" + ], + "directories": { + "src": "src" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.6.0", + "@angular-devkit/schematics": "^0.6.0", + "@angular/cli": "6.0.5", + "@angular/common": "6.0.3", + "@angular/compiler": "6.0.3", + "@angular/compiler-cli": "6.0.3", + "@angular/core": "6.0.3", + "@angular/forms": "6.0.3", + "@angular/http": "6.0.3", + "@angular/language-service": "6.0.3", + "@angular/platform-browser": "6.0.3", + "@angular/platform-browser-dynamic": "6.0.3", + "@angular/router": "6.0.3", + "core-js": "^2.4.1", + "ng-packagr": "^3.0.0", + "rxjs": "^6.0.0-beta.1", + "typescript": "2.7.2", + "zone.js": "0.8.26" + }, + "author": "Mixalloff, Manudss", + "keywords": [ + "angular", + "ng2", + "ngx", + "http", + "rest", + "annotations", + "annotations", + "api" + ], + "license": "MIT", + "repository": "https://github.com/manudss/ngx-http-annotations", + "module": "fesm5/ngx-http-annotations.js", + "es2015": "fesm2015/ngx-http-annotations.js", + "esm5": "esm5/ngx-http-annotations.js", + "esm2015": "esm2015/ngx-http-annotations.js", + "fesm5": "fesm5/ngx-http-annotations.js", + "fesm2015": "fesm2015/ngx-http-annotations.js", + "typings": "ngx-http-annotations.d.ts", + "metadata": "ngx-http-annotations.metadata.json", + "sideEffects": false, + "dependencies": { + "tslib": "^1.9.0" + } +} diff --git a/dist/ngx-http-annotations/public_api.d.ts b/dist/ngx-http-annotations/public_api.d.ts new file mode 100644 index 0000000..e07ec65 --- /dev/null +++ b/dist/ngx-http-annotations/public_api.d.ts @@ -0,0 +1,19 @@ +export * from './src/ngx-http-annotations.module'; +export * from './src/ngx-http-annotations.utils'; +import { path, query, headers, produces, observe } from "./src/ngx-http-annotations.utils"; +export declare let Path: typeof path; +export declare let PathParam: typeof path; +export declare let Body: (...args: any[]) => any; +export declare let Query: (...args: any[]) => any; +export declare let QueryParam: typeof query; +export declare let QueryParams: (...args: any[]) => any; +export declare let Observe: typeof observe; +export declare let Headers: typeof headers; +export declare let Produces: typeof produces; +export declare let GET: any; +export declare let POST: any; +export declare let PUT: any; +export declare let DELETE: any; +export declare let OPTIONS: any; +export declare let HEAD: any; +export declare let PATCH: any; diff --git a/dist/ngx-http-annotations/src/ngx-http-annotations.module.d.ts b/dist/ngx-http-annotations/src/ngx-http-annotations.module.d.ts new file mode 100644 index 0000000..0cbbe66 --- /dev/null +++ b/dist/ngx-http-annotations/src/ngx-http-annotations.module.d.ts @@ -0,0 +1,4 @@ +import { HttpClient } from "@angular/common/http"; +export declare class HttpRestModule { +} +export declare function onAppInit(http: HttpClient): () => void; diff --git a/dist/ngx-http-annotations/src/ngx-http-annotations.utils.d.ts b/dist/ngx-http-annotations/src/ngx-http-annotations.utils.d.ts new file mode 100644 index 0000000..4973f0c --- /dev/null +++ b/dist/ngx-http-annotations/src/ngx-http-annotations.utils.d.ts @@ -0,0 +1,27 @@ +import { HttpClient } from "@angular/common/http"; +export declare function observe(annotations: any): (...args: any[]) => any; +export declare function path(annotations: any): (...args: any[]) => any; +export declare function body(annotations: any): (...args: any[]) => any; +export declare function query(annotations: any): (...args: any[]) => any; +export declare function headers(annotations: any): (...args: any[]) => any; +export declare function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text'): (...args: any[]) => any; +export declare class HttpRestUtils { + static http: HttpClient; + static decorate(decoratorName: string, annotations: any, ...args: any[]): void; + /** + * Set up metadada + * @param type Entity type + * @param value Value of metadata + * @param target Prototype of current object + * @param metaName Decorator name + * @param entityData Entity extra data + */ + private static constructMetadata(metaName, entityType, value, target, entityData?); + static requestMethod(requestMethodName: string): any; + private static getObserve(target, methodName, args); + private static produce(target, methodName, args); + private static collectUrl(target, methodName, args); + private static collectBody(target, methodName, args); + private static collectQueryParams(target, methodName, args); + private static collectHeaders(target, methodName, args); +} diff --git a/ng-package.json b/ng-package.json new file mode 100644 index 0000000..8d28531 --- /dev/null +++ b/ng-package.json @@ -0,0 +1,17 @@ +{ + "name": "ngx-http-annotations", + "version": "0.5.2", + "$schema": "./node_modules/ng-packagr/ng-package.schema.json", + "src": "src", + "dest": "dist/ngx-http-annotations", + "workingDirectory": ".ng_build", + "lib": { + "entryFile": "public_api.ts" + }, + "ngPackage": { + "lib": { + "entryFile": "public_api.ts" + } + } + +} diff --git a/package.json b/package.json index d8beaff..98571c3 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,35 @@ { "name": "ngx-http-annotations", - "version": "0.5.1", - "main": "index.d.ts", + "version": "0.5.2", + "main": "public_api.ts", "files": [ "src" ], + "scripts": { + "build": "ng-packagr -p ng-package.json" + }, "directories": { "src": "src" }, "devDependencies": { - "@angular/http": "^4.0.0", - "@angular/core": "^4.0.0", - "rxjs": "^5.0.1", - "typescript": "^2.2.2" + "@angular-devkit/build-angular": "~0.6.0", + "@angular-devkit/schematics": "^0.6.0", + "@angular/cli": "6.0.5", + "@angular/common": "6.0.3", + "@angular/compiler": "6.0.3", + "@angular/compiler-cli": "6.0.3", + "@angular/core": "6.0.3", + "@angular/forms": "6.0.3", + "@angular/http": "6.0.3", + "@angular/language-service": "6.0.3", + "@angular/platform-browser": "6.0.3", + "@angular/platform-browser-dynamic": "6.0.3", + "@angular/router": "6.0.3", + "core-js": "^2.4.1", + "ng-packagr": "^3.0.0", + "rxjs": "^6.0.0-beta.1", + "typescript": "2.7.2", + "zone.js": "0.8.26" }, "author": "Mixalloff, manudss", "keywords": [ @@ -27,4 +44,4 @@ ], "license": "MIT", "repository": "https://github.com/manudss/ngx-http-annotations" -} \ No newline at end of file +} diff --git a/index.d.ts b/public_api.ts similarity index 89% rename from index.d.ts rename to public_api.ts index b0fa1ec..57787e9 100644 --- a/index.d.ts +++ b/public_api.ts @@ -1,6 +1,7 @@ export * from './src/ngx-http-annotations.module'; +export * from './src/ngx-http-annotations.utils'; import { Response } from '@angular/http'; -import { HttpRestUtils, path, body, query, headers, produces, observe } from "src/ngx-http-annotations.utils"; +import { HttpRestUtils, path, body, query, headers, produces, observe } from "./src/ngx-http-annotations.utils"; export let Path = path; export let PathParam = path; diff --git a/src/ngx-http-annotations.module.ts b/src/ngx-http-annotations.module.ts index eb910e9..bba71eb 100644 --- a/src/ngx-http-annotations.module.ts +++ b/src/ngx-http-annotations.module.ts @@ -2,7 +2,7 @@ import { NgModule, APP_INITIALIZER } from '@angular/core'; import { HttpRestUtils } from "./ngx-http-annotations.utils"; import { HttpClient } from "@angular/common/http"; import { HttpClientModule } from "@angular/common/http"; - +// @dynamic @NgModule({ imports: [HttpClientModule], providers: [ diff --git a/src/ngx-http-annotations.utils.ts b/src/ngx-http-annotations.utils.ts index c24226f..8c26664 100644 --- a/src/ngx-http-annotations.utils.ts +++ b/src/ngx-http-annotations.utils.ts @@ -39,10 +39,10 @@ interface ExtraEntityData { index: number; } const RESOURSE_METADATA_ROOT = 'resources_metadata'; - +// @dynamic export class HttpRestUtils { - public static http: HttpClient; + public static http: HttpClient = null; public static decorate(decoratorName: string, annotations: any, ...args: any[]) { switch (args.length) { @@ -102,6 +102,7 @@ export class HttpRestUtils { } public static requestMethod(requestMethodName: string): any { + // @dynamic return (target: any, key: string, descriptor: any) => { descriptor.value = function (...args: any[]) { const url = HttpRestUtils.collectUrl(target, key, args); diff --git a/tsconfig.json b/tsconfig.json index 89c7f4a..41a4eb7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,8 @@ "baseUrl": "", "declaration": false, "emitDecoratorMetadata": true, + "skipMetadataEmit": true, + "skipTemplateCodegen": true, "experimentalDecorators": true, "lib": [ "es2016", @@ -18,9 +20,13 @@ "../node_modules/@types" ], "files": [ - "index.d.ts", + "public_api.ts", "src/ngx-http-annotations.module.ts", "src/ngx-http-annotations.module.ts" ] + }, + "angularCompilerOptions": { + "skipMetadataEmit": true, + "skipTemplateCodegen": true } } From 76b9dadba3739a08cfe956e1881d819b0cac75ec Mon Sep 17 00:00:00 2001 From: Emmanuel De Saint Steban Date: Wed, 30 May 2018 16:53:32 +0200 Subject: [PATCH 4/7] WIP : demo app to test and use the data. --- .gitignore | 3 +- src/ngx-http-annotations.module.ts | 7 +- src/ngx-http-annotations.utils.ts | 18 +- test-api/.editorconfig | 13 + test-api/.gitignore | 39 + test-api/README.md | 27 + test-api/angular.json | 122 + test-api/e2e/protractor.conf.js | 28 + test-api/e2e/src/app.e2e-spec.ts | 14 + test-api/e2e/src/app.po.ts | 11 + test-api/e2e/tsconfig.e2e.json | 13 + test-api/package-lock.json | 10013 ++++++++++++++++ test-api/package.json | 48 + test-api/src/app/app.component.css | 0 test-api/src/app/app.component.html | 11 + test-api/src/app/app.component.spec.ts | 27 + test-api/src/app/app.component.ts | 28 + test-api/src/app/app.module.ts | 33 + test-api/src/app/services/api.service.spec.ts | 15 + test-api/src/app/services/api.service.ts | 33 + test-api/src/assets/.gitkeep | 0 test-api/src/browserslist | 9 + test-api/src/environments/environment.prod.ts | 3 + test-api/src/environments/environment.ts | 15 + test-api/src/favicon.ico | Bin 0 -> 5430 bytes test-api/src/index.html | 14 + test-api/src/karma.conf.js | 31 + test-api/src/main.ts | 12 + test-api/src/polyfills.ts | 80 + test-api/src/styles.css | 1 + test-api/src/test.ts | 20 + test-api/src/tsconfig.app.json | 12 + test-api/src/tsconfig.spec.json | 19 + test-api/src/tslint.json | 17 + test-api/tsconfig.json | 20 + test-api/tslint.json | 130 + 36 files changed, 10879 insertions(+), 7 deletions(-) create mode 100644 test-api/.editorconfig create mode 100644 test-api/.gitignore create mode 100644 test-api/README.md create mode 100644 test-api/angular.json create mode 100644 test-api/e2e/protractor.conf.js create mode 100644 test-api/e2e/src/app.e2e-spec.ts create mode 100644 test-api/e2e/src/app.po.ts create mode 100644 test-api/e2e/tsconfig.e2e.json create mode 100644 test-api/package-lock.json create mode 100644 test-api/package.json create mode 100644 test-api/src/app/app.component.css create mode 100644 test-api/src/app/app.component.html create mode 100644 test-api/src/app/app.component.spec.ts create mode 100644 test-api/src/app/app.component.ts create mode 100644 test-api/src/app/app.module.ts create mode 100644 test-api/src/app/services/api.service.spec.ts create mode 100644 test-api/src/app/services/api.service.ts create mode 100644 test-api/src/assets/.gitkeep create mode 100644 test-api/src/browserslist create mode 100644 test-api/src/environments/environment.prod.ts create mode 100644 test-api/src/environments/environment.ts create mode 100644 test-api/src/favicon.ico create mode 100644 test-api/src/index.html create mode 100644 test-api/src/karma.conf.js create mode 100644 test-api/src/main.ts create mode 100644 test-api/src/polyfills.ts create mode 100644 test-api/src/styles.css create mode 100644 test-api/src/test.ts create mode 100644 test-api/src/tsconfig.app.json create mode 100644 test-api/src/tsconfig.spec.json create mode 100644 test-api/src/tslint.json create mode 100644 test-api/tsconfig.json create mode 100644 test-api/tslint.json diff --git a/.gitignore b/.gitignore index b512c09..b3888fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules \ No newline at end of file +node_modules +/test-api/node_modules/ diff --git a/src/ngx-http-annotations.module.ts b/src/ngx-http-annotations.module.ts index bba71eb..9175e6e 100644 --- a/src/ngx-http-annotations.module.ts +++ b/src/ngx-http-annotations.module.ts @@ -1,18 +1,21 @@ -import { NgModule, APP_INITIALIZER } from '@angular/core'; +import {NgModule, APP_INITIALIZER, Inject} from '@angular/core'; import { HttpRestUtils } from "./ngx-http-annotations.utils"; import { HttpClient } from "@angular/common/http"; import { HttpClientModule } from "@angular/common/http"; +import {CommonModule} from "@angular/common"; // @dynamic @NgModule({ - imports: [HttpClientModule], + imports: [CommonModule, HttpClientModule], providers: [ { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } ] }) export class HttpRestModule { + } export function onAppInit(http: HttpClient) { + console.log('App Init : ', http, HttpRestUtils.http); return function () { HttpRestUtils.http = http; } diff --git a/src/ngx-http-annotations.utils.ts b/src/ngx-http-annotations.utils.ts index 8c26664..1213eb2 100644 --- a/src/ngx-http-annotations.utils.ts +++ b/src/ngx-http-annotations.utils.ts @@ -17,8 +17,14 @@ interface httpRequestOptions { export function observe(annotations: any) { return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]); } -export function path(annotations: any) { - return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]); +export function path(annotations: any | null) { + return (...args: any[]) => { + if (!annotations) { // if not given, use args name function; + annotations = args[0]; + } + console.log('Path : ', annotations, ...args); + return HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]); + } } export function body(annotations: any) { return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]); @@ -80,6 +86,8 @@ export class HttpRestUtils { * @param entityData Entity extra data */ private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) { + console.log('constructMetadata :', metaName, entityType, value, target, entityData); + target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; @@ -110,15 +118,17 @@ export class HttpRestUtils { const search = HttpRestUtils.collectQueryParams(target, key, args); const headers = HttpRestUtils.collectHeaders(target, key, args); const producesType = HttpRestUtils.produce(target, key, args); - const observe = HttpRestUtils.getObserve(target, key, args) + const observe = HttpRestUtils.getObserve(target, key, args); const params: httpRequestOptions = { body, params: search, - headers, + // headers, responseType: producesType, observe }; + console.log('before request ', requestMethodName, url, params, headers); return HttpRestUtils.http.request(requestMethodName, url, params); + // return HttpRestUtils.http.request(requestMethodName, url); }; }; } diff --git a/test-api/.editorconfig b/test-api/.editorconfig new file mode 100644 index 0000000..6e87a00 --- /dev/null +++ b/test-api/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/test-api/.gitignore b/test-api/.gitignore new file mode 100644 index 0000000..ee5c9d8 --- /dev/null +++ b/test-api/.gitignore @@ -0,0 +1,39 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/test-api/README.md b/test-api/README.md new file mode 100644 index 0000000..32ef9c1 --- /dev/null +++ b/test-api/README.md @@ -0,0 +1,27 @@ +# TestApi + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.5. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/test-api/angular.json b/test-api/angular.json new file mode 100644 index 0000000..dcbdc61 --- /dev/null +++ b/test-api/angular.json @@ -0,0 +1,122 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "test-api": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": {}, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/test-api", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.css" + ], + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "test-api:build" + }, + "configurations": { + "production": { + "browserTarget": "test-api:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "test-api:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.css" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "test-api-e2e": { + "root": "e2e/", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "test-api:serve" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "test-api" +} \ No newline at end of file diff --git a/test-api/e2e/protractor.conf.js b/test-api/e2e/protractor.conf.js new file mode 100644 index 0000000..86776a3 --- /dev/null +++ b/test-api/e2e/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/test-api/e2e/src/app.e2e-spec.ts b/test-api/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..e42d1f9 --- /dev/null +++ b/test-api/e2e/src/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to app!'); + }); +}); diff --git a/test-api/e2e/src/app.po.ts b/test-api/e2e/src/app.po.ts new file mode 100644 index 0000000..82ea75b --- /dev/null +++ b/test-api/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/test-api/e2e/tsconfig.e2e.json b/test-api/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..a6dd622 --- /dev/null +++ b/test-api/e2e/tsconfig.e2e.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} \ No newline at end of file diff --git a/test-api/package-lock.json b/test-api/package-lock.json new file mode 100644 index 0000000..de46a64 --- /dev/null +++ b/test-api/package-lock.json @@ -0,0 +1,10013 @@ +{ + "name": "test-api", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.7.tgz", + "integrity": "sha512-ULn46EmEJ9/AD9LJ9DwFtT1CcujpC3x1FSYjpPWqmyv1CH0vsjtMSgUCBUPIonqM4jRjDvIuxclpWJrsH/t9og==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.7", + "rxjs": "6.2.0" + } + }, + "@angular-devkit/build-angular": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.6.7.tgz", + "integrity": "sha512-lrSVYdHSA6Ku+Owr0oEUtzjEr4oeKm582uRRK5kqjAvhGWjvXVrtwF1G4plDTDI0ba7dF6856UbJh1jqY19tuA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.6.7", + "@angular-devkit/build-optimizer": "0.6.7", + "@angular-devkit/core": "0.6.7", + "@ngtools/webpack": "6.0.7", + "ajv": "6.4.0", + "autoprefixer": "8.5.1", + "cache-loader": "1.2.2", + "chalk": "2.2.2", + "circular-dependency-plugin": "5.0.2", + "clean-css": "4.1.11", + "copy-webpack-plugin": "4.5.1", + "file-loader": "1.1.11", + "glob": "7.1.2", + "html-webpack-plugin": "3.2.0", + "istanbul": "0.4.5", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.3.0", + "less": "3.0.4", + "less-loader": "4.1.0", + "license-webpack-plugin": "1.3.1", + "lodash": "4.17.10", + "memory-fs": "0.4.1", + "mini-css-extract-plugin": "0.4.0", + "minimatch": "3.0.4", + "node-sass": "4.9.0", + "opn": "5.3.0", + "parse5": "4.0.0", + "portfinder": "1.0.13", + "postcss": "6.0.22", + "postcss-import": "11.1.0", + "postcss-loader": "2.1.5", + "postcss-url": "7.3.2", + "raw-loader": "0.5.1", + "resolve": "1.7.1", + "rxjs": "6.2.0", + "sass-loader": "7.0.1", + "silent-error": "1.1.0", + "source-map-support": "0.5.6", + "stats-webpack-plugin": "0.6.2", + "style-loader": "0.21.0", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "tree-kill": "1.2.0", + "uglifyjs-webpack-plugin": "1.2.5", + "url-loader": "1.0.1", + "webpack": "4.8.3", + "webpack-dev-middleware": "3.1.3", + "webpack-dev-server": "3.1.4", + "webpack-merge": "4.1.2", + "webpack-sources": "1.1.0", + "webpack-subresource-integrity": "1.1.0-rc.4" + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.6.7.tgz", + "integrity": "sha512-5ZlRrWM0QJSFhrOSfEVoUp3HGna/y6SsFajMnfMQJtkk/wD3+M9a5/CQfKUangwcQB64mr8nKsurbv+IVHqUXQ==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.7", + "typescript": "2.7.2", + "webpack-sources": "1.1.0" + } + }, + "@angular-devkit/core": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.7.tgz", + "integrity": "sha512-kzNI95g3of8C0an2U/lUa2ixqABFKQt06VfzSz6pUCl/RJblLnxua9dgsSb8jc0eDQ5ZmekXN0UgkED0JDYXsQ==", + "dev": true, + "requires": { + "ajv": "6.4.0", + "chokidar": "2.0.3", + "rxjs": "6.2.0", + "source-map": "0.5.7" + } + }, + "@angular-devkit/schematics": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.6.7.tgz", + "integrity": "sha512-DdVYUJls09w+efSZAN96WdcwrAZ6dnJGcUeep7TvImCTu26UPmckEw/yy0HvfM1rSZZsu/VN8r1PoaQTbGc2vw==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.7", + "rxjs": "6.2.0" + } + }, + "@angular/animations": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.0.3.tgz", + "integrity": "sha512-X8ey0dvh2ielxPCJOCcdNPAmKW5toCpzHdbjdZqlR9o6uP1UmzEKHd7Un7jVIINRtq9ZB7vnFWIJl0BA7C8U0g==", + "requires": { + "tslib": "1.9.2" + } + }, + "@angular/cli": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.7.tgz", + "integrity": "sha512-rPFhPjT6TegRV5qENEgg0MwQKFDuqbF+OoEqgE5QjTQC2gQhnG/sHOgyqixHtvdLOaPfZczCjEltGQj/ELArqw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.6.7", + "@angular-devkit/core": "0.6.7", + "@angular-devkit/schematics": "0.6.7", + "@schematics/angular": "0.6.7", + "@schematics/update": "0.6.7", + "opn": "5.3.0", + "resolve": "1.7.1", + "rxjs": "6.2.0", + "semver": "5.5.0", + "silent-error": "1.1.0", + "symbol-observable": "1.2.0", + "yargs-parser": "10.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "yargs-parser": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz", + "integrity": "sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "@angular/common": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.0.3.tgz", + "integrity": "sha512-tqEYeEXoaw2kzSUfTrmC3ruJ87trS61SHayIf56f/jtEVn+4pbgJDTNvLSnB6QEaMTn7sX6QBroauMWmdTVSvA==", + "requires": { + "tslib": "1.9.2" + } + }, + "@angular/compiler": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.0.3.tgz", + "integrity": "sha512-nS65UI6f7grs2k+ggtkwXSBUQ1D/LVSFfXjWR5olxATx25QbIKABec90JphPE4FfhhVm1uonQ/vaSVCjh83Euw==", + "requires": { + "tslib": "1.9.2" + } + }, + "@angular/compiler-cli": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.3.tgz", + "integrity": "sha512-n7L/g2leGSl1LffZ3ZuB5bY4sJoZWjkG5tg9IafXQ8nAIUtKPl+ovoiNUhAaA4CvlUlgYHMcbezKpc9285LnyQ==", + "dev": true, + "requires": { + "chokidar": "1.7.0", + "minimist": "1.2.0", + "reflect-metadata": "0.1.12", + "tsickle": "0.27.5" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "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.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "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.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "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.1" + } + }, + "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" + } + }, + "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.1" + } + }, + "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-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" + } + }, + "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.6" + } + }, + "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.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "@angular/core": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.0.3.tgz", + "integrity": "sha512-YJk0kS/V9C2JFKMHfiw6TNxmfkYWGW4HzqGOm/VoPkvj9O4Erkz/OtOOc8hYGmXFmQz1UpOAByzY2XIlEi72XQ==", + "requires": { + "tslib": "1.9.2" + } + }, + "@angular/forms": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.3.tgz", + "integrity": "sha512-YAjRMERggkzb3cIo8iKOz1xB89Ko4fSh4A1suqrv9o2Xu41Qxs6LwrWVW+6x+N5kBzvbKFZyADqSz1otMQP83Q==", + "requires": { + "tslib": "1.9.2" + } + }, + "@angular/http": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-6.0.3.tgz", + "integrity": "sha512-9GF4hEsm/mK/kk+skn1y54IpsSGcgGnFxHctEFSSyUKTub9gFirkbuLOx9T9fXIKtXqCxnXolHCE7ncfOfS7GA==", + "requires": { + "tslib": "1.9.2" + } + }, + "@angular/language-service": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.0.3.tgz", + "integrity": "sha512-yeEMS8GwEhyMKD4nlzg/0Ug56k5Zb58uShjVlh+kr6WWHMRzAtecvNHePlakPjxyWzf/EIDWnMJV31HGOGQYZg==", + "dev": true + }, + "@angular/platform-browser": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.0.3.tgz", + "integrity": "sha512-OTgOE6WzytV9fnnCwvoyyXI4Avzmfu9RbBUhVRVontov6LlN9XL8BrzLidT7/lPAEQmHuoRCuNrSSY8TokPJCA==", + "requires": { + "tslib": "1.9.2" + } + }, + "@angular/platform-browser-dynamic": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.3.tgz", + "integrity": "sha512-OSaBiog3jH52c+pJhG6qsZjVipzw3ThTcFaymetlBwdRkZ9ch7eIQFhlIXPe4oM3wJt39LTG7peRymWPbnx4uw==", + "requires": { + "tslib": "1.9.2" + } + }, + "@angular/router": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.0.3.tgz", + "integrity": "sha512-7pQYu5DnNXwZ8nZrKtTpBo3HQoirKSP2hGAoHA0rPsqZvavBfuhUzsksYVvKvFEtoPmBe69uEYydhr115MTTNQ==", + "requires": { + "tslib": "1.9.2" + } + }, + "@ngtools/webpack": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.7.tgz", + "integrity": "sha512-4kq1RwjMkmL0zC7A9vlhIvBruPiFW351gyDSxoOimXNIv9N/8Br9oxcNKOvDCwHWepKeoPpIznzUiIOJNbJO6g==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.7", + "tree-kill": "1.2.0", + "webpack-sources": "1.1.0" + } + }, + "@schematics/angular": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.6.7.tgz", + "integrity": "sha512-gO7xSSzBQhj1t8aD3qBd03rj3hJ1XIWJ9rzLsPpC5hVfmMCpsc6cBnwm2asJ+eZlZUah46ZDhwlnMFEu8Sfczw==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.7", + "@angular-devkit/schematics": "0.6.7", + "typescript": "2.7.2" + } + }, + "@schematics/update": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.6.7.tgz", + "integrity": "sha512-uogLzGy3+/VlbQdevn/7WFTfs2Utl5ffwN17eCNayRuXmNyHlytKtz7cx8m1w9oj/VYxZXPbWTDVM1Hlnd/mqQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.7", + "@angular-devkit/schematics": "0.6.7", + "npm-registry-client": "8.5.1", + "rxjs": "6.2.0", + "semver": "5.5.0", + "semver-intersect": "1.3.1" + } + }, + "@types/jasmine": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.7.tgz", + "integrity": "sha512-RdbrPcW1aD78UmdLiDa9ZCKrbR5Go8PXh6GCpb4oIOkWVEusubSJJDrP4c5RYOu8m/CBz+ygZpicj6Pgms5a4Q==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz", + "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==", + "dev": true, + "requires": { + "@types/jasmine": "2.8.7" + } + }, + "@types/node": { + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "2.53.43", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz", + "integrity": "sha512-UBYHWph6P3tutkbXpW6XYg9ZPbTKjw/YC2hGG1/GEvWwTbvezBUv3h+mmUFw79T3RFPnmedpiXdOBbXX+4l0jg==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.4.3.tgz", + "integrity": "sha512-S6npYhPcTHDYe9nlsKa9CyWByFi8Vj8HovcAgtmMAQZUOczOZbQ8CnwMYKYC5HEZzxEE+oY0jfQk4cVlI3J59Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "debug": "3.1.0", + "webassemblyjs": "1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz", + "integrity": "sha512-3zTkSFswwZOPNHnzkP9ONq4bjJSeKVMcuahGXubrlLmZP8fmTIJ58dW7h/zOVWiFSuG2em3/HH3BlCN7wyu9Rw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz", + "integrity": "sha512-e8+KZHh+RV8MUvoSRtuT1sFXskFnWG9vbDy47Oa166xX+l0dD5sERJ21g5/tcH8Yo95e9IN3u7Jc3NbhnUcSkw==", + "dev": true, + "requires": { + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz", + "integrity": "sha512-9FgHEtNsZQYaKrGCtsjswBil48Qp1agrzRcPzCbQloCoaTbOXLJ9IRmqT+uEZbenpULLRNFugz3I4uw18hJM8w==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.4.3" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz", + "integrity": "sha512-JINY76U+702IRf7ePukOt037RwmtH59JHvcdWbTTyHi18ixmQ+uOuNhcdCcQHTquDAH35/QgFlp3Y9KqtyJsCQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz", + "integrity": "sha512-I7bS+HaO0K07Io89qhJv+z1QipTpuramGwUSDkwEaficbSvCcL92CUZEtgykfNtk5wb0CoLQwWlmXTwGbNZUeQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz", + "integrity": "sha512-p0yeeO/h2r30PyjnJX9xXSR6EDcvJd/jC6xa/Pxg4lpfcNi7JUswOpqDToZQ55HMMVhXDih/yqkaywHWGLxqyQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/leb128": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.4.3.tgz", + "integrity": "sha512-4u0LJLSPzuRDWHwdqsrThYn+WqMFVqbI2ltNrHvZZkzFPO8XOZ0HFQ5eVc4jY/TNHgXcnwrHjONhPGYuuf//KQ==", + "dev": true, + "requires": { + "leb": "0.3.0" + } + }, + "@webassemblyjs/validation": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.4.3.tgz", + "integrity": "sha512-R+rRMKfhd9mq0rj2mhU9A9NKI2l/Rw65vIYzz4lui7eTKPcCu1l7iZNi4b9Gen8D42Sqh/KGiaQNk/x5Tn/iBQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3" + } + }, + "@webassemblyjs/wasm-edit": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz", + "integrity": "sha512-qzuwUn771PV6/LilqkXcS0ozJYAeY/OKbXIWU3a8gexuqb6De2p4ya/baBeH5JQ2WJdfhWhSvSbu86Vienttpw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/helper-wasm-section": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "@webassemblyjs/wasm-opt": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-printer": "1.4.3", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz", + "integrity": "sha512-eR394T8dHZfpLJ7U/Z5pFSvxl1L63JdREebpv9gYc55zLhzzdJPAuxjBYT4XqevUdW67qU2s0nNA3kBuNJHbaQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/leb128": "1.4.3" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz", + "integrity": "sha512-7Gp+nschuKiDuAL1xmp4Xz0rgEbxioFXw4nCFYEmy+ytynhBnTeGc9W9cB1XRu1w8pqRU2lbj2VBBA4cL5Z2Kw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz", + "integrity": "sha512-KXBjtlwA3BVukR/yWHC9GF+SCzBcgj0a7lm92kTOaa4cbjaTaa47bCjXw6cX4SGQpkncB9PU2hHGYVyyI7wFRg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/leb128": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "webassemblyjs": "1.4.3" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz", + "integrity": "sha512-QhCsQzqV0CpsEkRYyTzQDilCNUZ+5j92f+g35bHHNqS22FppNTywNFfHPq8ZWZfYCgbectc+PoghD+xfzVFh1Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/floating-point-hex-parser": "1.4.3", + "@webassemblyjs/helper-code-frame": "1.4.3", + "@webassemblyjs/helper-fsm": "1.4.3", + "long": "3.2.0", + "webassemblyjs": "1.4.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz", + "integrity": "sha512-EgXk4anf8jKmuZJsqD8qy5bz2frEQhBvZruv+bqwNoLWUItjNSFygk8ywL3JTEz9KtxTlAmqTXNrdD1d9gNDtg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "long": "3.2.0" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "5.5.3" + } + }, + "adm-zip": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz", + "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", + "dev": true, + "requires": { + "es6-promisify": "5.0.0" + } + }, + "ajv": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1", + "uri-js": "3.0.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + }, + "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.6" + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "app-root-path": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", + "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", + "dev": true + }, + "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" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "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 + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.11.0" + } + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "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 + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "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 + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "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-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true, + "optional": 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.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true + }, + "autoprefixer": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.1.tgz", + "integrity": "sha512-0zXQ6OqbnVaplQKkKTASxHFPMNy6WfrXS5QRDJ4zTDxEBB3r7NPDSK4h9KCyQi1tq0tX5MsN4RdzChVBn2k/aw==", + "dev": true, + "requires": { + "browserslist": "3.2.8", + "caniuse-lite": "1.0.30000846", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.22", + "postcss-value-parser": "3.3.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.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true + }, + "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": "https://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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "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-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.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "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.26.0" + } + }, + "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.5.7", + "regenerator-runtime": "0.11.1" + } + }, + "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.10" + } + }, + "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.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.10" + } + }, + "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.10", + "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 + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.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.2" + } + }, + "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.2" + } + }, + "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.2" + } + }, + "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" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "optional": true, + "requires": { + "inherits": "2.0.3" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.3", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "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.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "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.1" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "1.2.0", + "browserify-des": "1.0.1", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.1" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000846", + "electron-to-chromium": "1.3.48" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.3.0", + "ieee754": "1.1.11", + "isarray": "1.0.0" + } + }, + "buffer-from": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "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 + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "cache-loader": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.2.tgz", + "integrity": "sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mkdirp": "0.5.1", + "neo-async": "2.5.1", + "schema-utils": "0.4.5" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30000846", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz", + "integrity": "sha512-qxUOHr5mTaadWH1ap0ueivHd8x42Bnemcn+JutVr7GWmm2bU4zoBhjuv5QdXgALQnnT626lOQros7cCDf8PwCg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz", + "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.1.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "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.6" + } + } + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "6.0.2", + "shallow-clone": "1.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", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", + "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==", + "dev": true, + "requires": { + "app-root-path": "2.0.1", + "css-selector-tokenizer": "0.7.0", + "cssauron": "1.4.0", + "semver-dsl": "1.0.1", + "source-map": "0.5.7", + "sprintf-js": "1.0.3" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-lists": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true, + "requires": { + "lodash": "4.17.10" + } + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.2.1.tgz", + "integrity": "sha512-2y2nHcopMG/NAyk6vWXlLs86XeM9sik4jmx1tKIgzMi9/RQ2eo758RGpxQO3ErihHmg0RlQITPqgz73y6s7quA==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "bytes": "3.0.0", + "compressible": "2.0.13", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "1.1.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz", + "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "globby": "7.1.1", + "is-glob": "4.0.0", + "loader-utils": "1.1.0", + "minimatch": "3.0.4", + "p-limit": "1.2.0", + "serialize-javascript": "1.5.0" + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.11.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "md5.js": "1.3.4", + "ripemd160": "2.0.2", + "sha.js": "2.4.11" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "inherits": "2.0.3", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "4.1.3", + "which": "1.3.1" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.1", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.3", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", + "inherits": "2.0.3", + "pbkdf2": "3.0.16", + "public-encrypt": "4.0.2", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.44" + } + }, + "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" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "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" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "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 + }, + "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.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "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.2" + } + }, + "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.2" + } + }, + "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" + } + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "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 + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "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.1" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.2" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "1.0.1", + "ent": "2.2.0", + "extend": "3.0.1", + "void-elements": "2.0.1" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.48", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", + "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "engine.io": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", + "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "1.1.2" + }, + "dependencies": { + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true, + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "1.1.2", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } + }, + "enhanced-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", + "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "tapable": "1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "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.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.44", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz", + "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.44", + "es6-symbol": "3.1.1" + } + }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "4.2.4" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.44" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "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", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.1" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.2" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "requires": { + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "braces": "0.1.5" + }, + "dependencies": { + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true, + "requires": { + "expand-range": "0.1.1" + } + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true, + "requires": { + "is-number": "0.1.1", + "repeat-string": "0.2.2" + } + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "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.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.6" + } + }, + "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.1" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.4" + }, + "dependencies": { + "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.1.0", + "randomatic": "3.0.0", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "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.2.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "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.6" + } + } + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.3", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "1.4.0", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "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" + } + } + } + }, + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.2" + } + }, + "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.1" + } + }, + "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.2" + } + }, + "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.2" + } + }, + "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" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "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 + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.4.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.1.2", + "minimatch": "3.0.4" + } + }, + "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.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.1" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.3.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "follow-redirects": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "dev": true, + "requires": { + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "1.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "optional": true, + "requires": { + "globule": "1.2.1" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true, + "optional": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "optional": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "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.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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.1" + }, + "dependencies": { + "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.1" + } + }, + "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-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" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.8", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.10", + "minimatch": "3.0.4" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": 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.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "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=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "wbuf": "1.7.3" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.16.tgz", + "integrity": "sha512-zP5EfLSpiLRp0aAgud4CQXPQZm9kXwWjR/cF0PfdOj+jjWnOaCgeZcll4kYXSvIBPeUMmyaSc7mM4IDtA+kboA==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.11", + "commander": "2.15.1", + "he": "1.1.1", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.28" + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "3.5.16", + "loader-utils": "0.2.17", + "lodash": "4.17.10", + "pretty-error": "2.1.1", + "tapable": "1.0.0", + "toposort": "1.0.7", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.4.0" + } + }, + "http-parser-js": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "3.1.0", + "follow-redirects": "1.5.0", + "requires-port": "1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "1.17.0", + "is-glob": "4.0.0", + "lodash": "4.17.10", + "micromatch": "3.1.10" + } + }, + "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.4.1", + "sshpk": "1.14.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ieee754": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "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", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true, + "optional": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "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.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.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.6" + } + } + } + }, + "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", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.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.6" + } + } + } + }, + "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", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "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 + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "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": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "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.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true, + "optional": true + }, + "is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "dev": true, + "optional": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "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.2.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.6" + } + } + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "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 + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "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-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true, + "optional": 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-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "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", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", + "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "glob": "5.0.15", + "handlebars": "4.0.11", + "js-yaml": "3.11.0", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.4.0", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.3.1", + "wordwrap": "1.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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 + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-api": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", + "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", + "dev": true, + "requires": { + "async": "2.6.1", + "compare-versions": "3.2.1", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.2.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-report": "1.1.4", + "istanbul-lib-source-maps": "1.2.4", + "istanbul-reports": "1.3.0", + "js-yaml": "3.11.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + }, + "dependencies": { + "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" + } + } + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "1.5.1", + "istanbul-lib-instrument": "1.10.1", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz", + "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "dev": true, + "requires": { + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.0", + "semver": "5.5.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", + "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "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 + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", + "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "7.1.2", + "jasmine-core": "2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "js-base64": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", + "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", + "dev": true, + "optional": true + }, + "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.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://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.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "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 + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "dev": true, + "requires": { + "core-js": "2.3.0", + "es6-promise": "3.0.2", + "lie": "3.1.1", + "pako": "1.0.6", + "readable-stream": "2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", + "dev": true + }, + "es6-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "karma": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", + "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "body-parser": "1.18.2", + "chokidar": "1.7.0", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.6", + "core-js": "2.5.7", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "http-proxy": "1.17.0", + "isbinaryfile": "3.0.2", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.6.0", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.2.0", + "range-parser": "1.2.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.2", + "socket.io": "1.7.3", + "source-map": "0.5.7", + "tmp": "0.0.31", + "useragent": "2.3.0" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "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.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "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.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "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.1" + } + }, + "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" + } + }, + "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.1" + } + }, + "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-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" + } + }, + "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.6" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "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.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "1.0.1", + "which": "1.3.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.3.tgz", + "integrity": "sha1-O13/RmT6W41RlrmInj9hwforgNk=", + "dev": true, + "requires": { + "istanbul-api": "1.3.1", + "minimatch": "3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "1.1.2" + } + }, + "karma-source-map-support": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz", + "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==", + "dev": true, + "requires": { + "source-map-support": "0.5.6" + } + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "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 + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "leb": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", + "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", + "dev": true + }, + "less": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/less/-/less-3.0.4.tgz", + "integrity": "sha512-q3SyEnPKbk9zh4l36PGeW2fgynKu+FpbhiUNx/yaiBUQ3V0CbACCgb9FzYWcRgI2DJlP6eI4jc8XPrCTi55YcQ==", + "dev": true, + "requires": { + "errno": "0.1.7", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.87.0", + "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 + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "2.1.1", + "loader-utils": "1.1.0", + "pify": "3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "license-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-NqAFodJdpBUuf1iD+Ij8hQvF0rCFKlO2KaieoQzAPhFgzLCtJnC7Z7x5gQbGNjoe++wOKAtAmwVEIBLqq2Yp1A==", + "dev": true, + "requires": { + "ejs": "2.6.1" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "3.0.6" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true, + "optional": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true, + "optional": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "2.2.2" + } + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "semver": "4.3.6" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "3.1.1", + "object.assign": "4.1.0" + } + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "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": { + "pify": "3.0.0" + } + }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "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 + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "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": { + "object-visit": "1.0.1" + } + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.6" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "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=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "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.2", + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.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==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz", + "integrity": "sha512-2Zik6PhUZ/MbiboG6SDS9UTPL4XXy4qnyGjSdCIWRrr8xb6PwLtHE+AYOjkXJWdF0OG8vo/yrJ8CgS5WbMpzIg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "webpack-sources": "1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.5.1", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "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" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "1.3.1", + "thunky": "1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "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-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.87.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.6", + "stream-browserify": "2.0.1", + "stream-http": "2.8.2", + "string_decoder": "1.1.1", + "timers-browserify": "2.0.10", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-sass": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz", + "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==", + "dev": true, + "optional": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.3", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.1", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.10.0", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.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 + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "optional": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.15.1", + "is-my-json-valid": "2.17.2", + "pinkie-promise": "2.0.1" + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true, + "optional": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.7.0", + "caseless": "0.11.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.6", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3", + "uuid": "3.2.1" + } + }, + "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 + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true, + "optional": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.0.9" + } + }, + "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.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "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.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "npm-registry-client": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz", + "integrity": "sha512-7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "graceful-fs": "4.1.11", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.1.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "request": "2.87.0", + "retry": "0.10.1", + "safe-buffer": "5.1.2", + "semver": "5.5.0", + "slide": "1.1.6", + "ssri": "5.3.0" + } + }, + "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=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "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=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "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=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "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.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "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.6" + } + }, + "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.6" + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "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.1" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.11" + } + }, + "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.11.0" + } + }, + "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.5", + "is-extendable": "0.1.1" + }, + "dependencies": { + "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.2" + } + } + } + }, + "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" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "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.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "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.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "original": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz", + "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==", + "dev": true, + "requires": { + "url-parse": "1.4.0" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "optional": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "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=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "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=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.2.0", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.16" + } + }, + "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.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "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-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" + } + } + } + }, + "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.3.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "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=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "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=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "dev": true, + "requires": { + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "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.4" + } + }, + "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" + } + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + } + }, + "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 + }, + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "source-map": "0.6.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "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 + } + } + }, + "postcss-import": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", + "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", + "dev": true, + "requires": { + "postcss": "6.0.22", + "postcss-value-parser": "3.3.0", + "read-cache": "1.0.0", + "resolve": "1.7.1" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz", + "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.22", + "postcss-load-config": "1.2.0", + "schema-utils": "0.4.5" + } + }, + "postcss-url": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz", + "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==", + "dev": true, + "requires": { + "mime": "1.6.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "postcss": "6.0.22", + "xxhashjs": "0.2.2" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "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 + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "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==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "protractor": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.3.2.tgz", + "integrity": "sha512-pw4uwwiy5lHZjIguxNpkEwJJa7hVz+bJsvaTI+IbXlfn2qXwzbF8eghW/RmrZwE2sGx82I8etb8lVjQ+JrjejA==", + "dev": true, + "requires": { + "@types/node": "6.0.111", + "@types/q": "0.0.32", + "@types/selenium-webdriver": "2.53.43", + "blocking-proxy": "1.0.1", + "chalk": "1.1.3", + "glob": "7.1.2", + "jasmine": "2.8.0", + "jasminewd2": "2.2.0", + "optimist": "0.6.1", + "q": "1.4.1", + "saucelabs": "1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "0.4.18", + "webdriver-js-extender": "1.0.0", + "webdriver-manager": "12.0.6" + }, + "dependencies": { + "@types/node": { + "version": "6.0.111", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.111.tgz", + "integrity": "sha512-DoWK5a544Jcr6C1qBadalyj3gQT5V9B87qFBb+uOOq1Id309Lbe10zwsCGCURZEOBoS/pOsmbDN4FnD4sOwJaw==", + "dev": true + }, + "adm-zip": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz", + "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==", + "dev": true + }, + "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": "https://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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "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 + }, + "webdriver-manager": { + "version": "12.0.6", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.0.6.tgz", + "integrity": "sha1-PfGkgZdwELTL+MnYXHpXeCjA5ws=", + "dev": true, + "requires": { + "adm-zip": "0.4.11", + "chalk": "1.1.3", + "del": "2.2.2", + "glob": "7.1.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "q": "1.4.1", + "request": "2.87.0", + "rimraf": "2.6.2", + "semver": "5.5.0", + "xml2js": "0.4.19" + } + } + } + }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "parse-asn1": "5.1.1", + "randombytes": "2.0.6" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "3.6.0", + "inherits": "2.0.3", + "pump": "2.0.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==", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", + "dev": true + }, + "randomatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "dev": true, + "requires": { + "is-number": "4.0.0", + "kind-of": "6.0.2", + "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 + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.2" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "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.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + }, + "dependencies": { + "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.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "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.1.2", + "read-pkg": "1.1.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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "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.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://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.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.6", + "set-immediate-shim": "1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "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==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "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" + } + }, + "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" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "1.4.0", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "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 + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "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 + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.7.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "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=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.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 + }, + "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==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rxjs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.0.tgz", + "integrity": "sha512-qBzf5uu6eOKiCZuAE0SgZ0/Qp+l54oeVxFfC2t+mJ2SFI6IB8gmMdJHs5DUMu5kqifqcCtsKS2XHjhZu6RKvAw==", + "requires": { + "tslib": "1.9.2" + } + }, + "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==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.10", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true, + "optional": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + } + } + } + }, + "sass-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.0.1.tgz", + "integrity": "sha512-MeVVJFejJELlAbA7jrRchi88PGP6U9yIfqyiG+bBC4a9s2PX+ulJB9h8bbEohtPBfZmlLhNZ0opQM9hovRXvlw==", + "dev": true, + "requires": { + "clone-deep": "2.0.2", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "neo-async": "2.5.1", + "pify": "3.0.0" + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.4.0", + "ajv-keywords": "3.2.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "optional": true, + "requires": { + "js-base64": "2.4.5", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "3.1.5", + "rimraf": "2.6.2", + "tmp": "0.0.30", + "xml2js": "0.4.19" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + } + } + }, + "selfsigned": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", + "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "semver-intersect": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.3.1.tgz", + "integrity": "sha1-j6hKnhAovSOeRTDRo+GB5pjYhLo=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.3", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.3", + "mime-types": "2.1.18", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.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.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "5.1.0", + "mixin-object": "2.0.1" + }, + "dependencies": { + "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 + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "silent-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz", + "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=", + "dev": true, + "requires": { + "debug": "2.6.9" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.0" + }, + "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.6" + } + }, + "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.1" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "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.2" + } + }, + "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.2" + } + }, + "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.2" + } + }, + "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" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.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.6" + } + } + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "socket.io": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", + "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "1.8.3", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "1.8.3", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "3.2.1" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.4.0" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "2.1.1", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "dev": true, + "requires": { + "buffer-from": "1.1.0", + "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 + } + } + }, + "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.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "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.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.2", + "select-hose": "2.0.0", + "spdy-transport": "2.1.0" + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "safe-buffer": "5.1.2", + "wbuf": "1.7.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "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.6" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz", + "integrity": "sha1-LFlJtTHgf4eojm6k3PrFOqjHWis=", + "dev": true, + "requires": { + "lodash": "4.17.10" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "2.3.6" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://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.2" + } + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "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.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "style-loader": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", + "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.4.5" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.0", + "debug": "2.6.9", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "lodash.clonedeep": "4.5.0", + "when": "3.6.4" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "optional": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + } + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "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", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.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.6" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "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 + }, + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "optional": true, + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "optional": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "ts-node": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-5.0.1.tgz", + "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "chalk": "2.4.1", + "diff": "3.5.0", + "make-error": "1.3.4", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map-support": "0.5.6", + "yn": "2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "tsickle": { + "version": "0.27.5", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.27.5.tgz", + "integrity": "sha512-NP+CjM1EXza/M8mOXBLH3vkFEJiu1zfEAlC5WdJxHPn8l96QPz5eooP6uAgYtw1CcKfuSyIiheNUdKxtDWCNeg==", + "dev": true, + "requires": { + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map": "0.6.1", + "source-map-support": "0.5.6" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "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 + } + } + }, + "tslib": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", + "integrity": "sha512-AVP5Xol3WivEr7hnssHDsaM+lVrVXWUvd1cfXTRkTj80b//6g2wIFEH6hZG0muGZRnHGrfttpdzRk3YlBkWjKw==" + }, + "tslint": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.4.1", + "commander": "2.15.1", + "diff": "3.5.0", + "glob": "7.1.2", + "js-yaml": "3.11.0", + "minimatch": "3.0.4", + "resolve": "1.7.1", + "semver": "5.5.0", + "tslib": "1.9.2", + "tsutils": "2.27.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + } + } + }, + "tsutils": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz", + "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==", + "dev": true, + "requires": { + "tslib": "1.9.2" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "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.1.2" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": 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", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "dev": true + }, + "uglify-js": { + "version": "3.3.28", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.28.tgz", + "integrity": "sha512-68Rc/aA6cswiaQ5SrE979UJcXX+ADA1z33/ZsPd+fbAiVdjZ16OXdbtGO+rJUUBgK6qdf3SOPhQf3K/ybF5Miw==", + "dev": true, + "requires": { + "commander": "2.15.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 + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.5.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.6.0" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "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 + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } + } + } + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "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.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", + "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "dev": true, + "requires": { + "punycode": "2.1.1" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, + "url-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.0.1.tgz", + "integrity": "sha512-rAonpHy7231fmweBKUFe0bYnlGDty77E+fm53NZdij7j/YOpyGzc7ttqG1nAXl3aRs0k41o0PC3TvGXQiw2Zvw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "2.3.1", + "schema-utils": "0.4.5" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", + "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "dev": true, + "requires": { + "querystringify": "2.0.0", + "requires-port": "1.0.0" + } + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "tmp": "0.0.31" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "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" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "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.3.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "2.0.3", + "graceful-fs": "4.1.11", + "neo-async": "2.5.1" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.1" + } + }, + "webassemblyjs": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.4.3.tgz", + "integrity": "sha512-4lOV1Lv6olz0PJkDGQEp82HempAn147e6BXijWDzz9g7/2nSebVP9GVg62Fz5ZAs55mxq13GA0XLyvY8XkyDjg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/validation": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "long": "3.2.0" + } + }, + "webdriver-js-extender": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz", + "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=", + "dev": true, + "requires": { + "@types/selenium-webdriver": "2.53.43", + "selenium-webdriver": "2.53.3" + }, + "dependencies": { + "sax": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", + "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=", + "dev": true + }, + "selenium-webdriver": { + "version": "2.53.3", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", + "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=", + "dev": true, + "requires": { + "adm-zip": "0.4.4", + "rimraf": "2.6.2", + "tmp": "0.0.24", + "ws": "1.1.2", + "xml2js": "0.4.4" + } + }, + "tmp": { + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", + "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=", + "dev": true + }, + "xml2js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", + "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=", + "dev": true, + "requires": { + "sax": "0.6.1", + "xmlbuilder": "9.0.7" + } + } + } + }, + "webpack": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.3.tgz", + "integrity": "sha512-/hfAjBISycdK597lxONjKEFX7dSIU1PsYwC3XlXUXoykWBlv9QV5HnO+ql3HvrrgfBJ7WXdnjO9iGPR2aAc5sw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/wasm-edit": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "acorn": "5.5.3", + "acorn-dynamic-import": "3.0.0", + "ajv": "6.4.0", + "ajv-keywords": "3.2.0", + "chrome-trace-event": "0.1.3", + "enhanced-resolve": "4.0.0", + "eslint-scope": "3.7.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "micromatch": "3.1.10", + "mkdirp": "0.5.1", + "neo-async": "2.5.1", + "node-libs-browser": "2.1.0", + "schema-utils": "0.4.5", + "tapable": "1.0.0", + "uglifyjs-webpack-plugin": "1.2.5", + "watchpack": "1.6.0", + "webpack-sources": "1.1.0" + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "0.1.8", + "source-map": "0.4.4" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz", + "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==", + "dev": true, + "requires": { + "loud-rejection": "1.6.0", + "memory-fs": "0.4.1", + "mime": "2.3.1", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "url-join": "4.0.0", + "webpack-log": "1.2.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz", + "integrity": "sha512-itcIUDFkHuj1/QQxzUFOEXXmxOj5bku2ScLEsOFPapnq2JRTm58gPdtnBphBJOKL2+M3p6+xygL64bI+3eyzzw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.3", + "compression": "1.7.2", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.3", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.18.0", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.3.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.3", + "serve-index": "1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.4.0", + "webpack-dev-middleware": "3.1.3", + "webpack-log": "1.2.0", + "yargs": "11.0.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 + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.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=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "dev": true, + "requires": { + "chalk": "2.2.2", + "log-symbols": "2.2.0", + "loglevelnext": "1.0.5", + "uuid": "3.2.1" + } + }, + "webpack-merge": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", + "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", + "dev": true, + "requires": { + "lodash": "4.17.10" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "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 + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.4", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz", + "integrity": "sha1-xcTj1pD50vZKlVDgeodn+Xlqpdg=", + "dev": true, + "requires": { + "webpack-core": "0.6.9" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.13", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.7" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "0.2.2" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz", + "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA==" + } + } +} diff --git a/test-api/package.json b/test-api/package.json new file mode 100644 index 0000000..9d6dc54 --- /dev/null +++ b/test-api/package.json @@ -0,0 +1,48 @@ +{ + "name": "test-api", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^6.0.3", + "@angular/common": "^6.0.3", + "@angular/compiler": "^6.0.3", + "@angular/core": "^6.0.3", + "@angular/forms": "^6.0.3", + "@angular/http": "^6.0.3", + "@angular/platform-browser": "^6.0.3", + "@angular/platform-browser-dynamic": "^6.0.3", + "@angular/router": "^6.0.3", + "core-js": "^2.5.4", + "rxjs": "^6.0.0", + "zone.js": "^0.8.26" + }, + "devDependencies": { + "@angular/compiler-cli": "^6.0.3", + "@angular-devkit/build-angular": "~0.6.5", + "typescript": "~2.7.2", + "@angular/cli": "~6.0.5", + "@angular/language-service": "^6.0.3", + "@types/jasmine": "~2.8.6", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "~4.2.1", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~1.7.1", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~1.4.2", + "karma-jasmine": "~1.1.1", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.3.0", + "ts-node": "~5.0.1", + "tslint": "~5.9.1" + } +} diff --git a/test-api/src/app/app.component.css b/test-api/src/app/app.component.css new file mode 100644 index 0000000..e69de29 diff --git a/test-api/src/app/app.component.html b/test-api/src/app/app.component.html new file mode 100644 index 0000000..5e2d6fa --- /dev/null +++ b/test-api/src/app/app.component.html @@ -0,0 +1,11 @@ + +
+

+ Welcome to {{ title }}! +

+ Angular Logo +
+

Here are some links to help you start:

+{{post1 | json}} +{{post2 | json}} + diff --git a/test-api/src/app/app.component.spec.ts b/test-api/src/app/app.component.spec.ts new file mode 100644 index 0000000..1d55ced --- /dev/null +++ b/test-api/src/app/app.component.spec.ts @@ -0,0 +1,27 @@ +import { TestBed, async } from '@angular/core/testing'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + it(`should have as title 'app'`, async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('app'); + })); + it('should render title in a h1 tag', async(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to test-api!'); + })); +}); diff --git a/test-api/src/app/app.component.ts b/test-api/src/app/app.component.ts new file mode 100644 index 0000000..1636b57 --- /dev/null +++ b/test-api/src/app/app.component.ts @@ -0,0 +1,28 @@ +import {Component, OnInit} from '@angular/core'; +import {ApiService} from "./services/api.service"; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent implements OnInit { + title = 'app'; + + public post1: any; + public post2: any; + + constructor(private api: ApiService) {} + + ngOnInit(): void { + this.api.getPost(1).subscribe((post)=>this.post1=post); + this.api.getPost(2).subscribe((post)=>this.post2=post); + } + + + + /*getPost(id: number) { + return this.api.getPost(id); + }*/ + +} diff --git a/test-api/src/app/app.module.ts b/test-api/src/app/app.module.ts new file mode 100644 index 0000000..2dba31a --- /dev/null +++ b/test-api/src/app/app.module.ts @@ -0,0 +1,33 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppComponent } from './app.component'; +import {HttpRestModule} from "../../../src/ngx-http-annotations.module"; +import {HttpClient, HttpClientModule} from "@angular/common/http"; +import {ApiService} from "./services/api.service"; +import {CommonModule} from "@angular/common"; +import {HttpRestUtils} from "../../../src/ngx-http-annotations.utils"; + +@NgModule({ + declarations: [ + AppComponent, + ], + imports: [ + CommonModule, + BrowserModule, + HttpClientModule, + HttpRestModule + ], + providers: [ApiService], + bootstrap: [AppComponent] +}) +export class AppModule { + constructor(private http: HttpClient) { + console.log('AppModule constructor 1 : ', HttpRestUtils.http, http); + if (!HttpRestUtils.http) { + HttpRestUtils.http = http; + console.log('AppModule constructor 2 : ', http, HttpRestUtils.http); + } + + } +} diff --git a/test-api/src/app/services/api.service.spec.ts b/test-api/src/app/services/api.service.spec.ts new file mode 100644 index 0000000..65b6c71 --- /dev/null +++ b/test-api/src/app/services/api.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { ApiService } from './api.service'; + +describe('ApiService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ApiService] + }); + }); + + it('should be created', inject([ApiService], (service: ApiService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/test-api/src/app/services/api.service.ts b/test-api/src/app/services/api.service.ts new file mode 100644 index 0000000..82434fe --- /dev/null +++ b/test-api/src/app/services/api.service.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@angular/core'; +import {GET, Path, PathParam, Headers} from "../../../../public_api"; +import {HttpClient} from "@angular/common/http"; +import {Observable} from "rxjs"; + +@Injectable({ + providedIn: 'root' +}) +@Path('https://jsonplaceholder.typicode.com/') +@Headers({ + 'someHeader1': 'headerValue1', + 'someHeader2': 'headerValue2' +}) +export class ApiService { + + constructor(private http: HttpClient) { } + + @GET + @Path('posts/:id') + public getPost(@PathParam('id') id: number): Observable { + //return this.http.request('GET', 'https://jsonplaceholder.typicode.com/posts/'+id); + return null; + } + + + public func1(@PathParam('aaa') bbb: number) { + return bbb; + } + + public func2(@PathParam(null) ccc: number) { + return ccc; + } +} diff --git a/test-api/src/assets/.gitkeep b/test-api/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/test-api/src/browserslist b/test-api/src/browserslist new file mode 100644 index 0000000..8e09ab4 --- /dev/null +++ b/test-api/src/browserslist @@ -0,0 +1,9 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# For IE 9-11 support, please uncomment the last line of the file and adjust as needed +> 0.5% +last 2 versions +Firefox ESR +not dead +# IE 9-11 \ No newline at end of file diff --git a/test-api/src/environments/environment.prod.ts b/test-api/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/test-api/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/test-api/src/environments/environment.ts b/test-api/src/environments/environment.ts new file mode 100644 index 0000000..012182e --- /dev/null +++ b/test-api/src/environments/environment.ts @@ -0,0 +1,15 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * In development mode, to ignore zone related error stack frames such as + * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can + * import the following file, but please comment it out in production mode + * because it will have performance impact when throw error + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/test-api/src/favicon.ico b/test-api/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- + + + + TestApi + + + + + + + + + diff --git a/test-api/src/karma.conf.js b/test-api/src/karma.conf.js new file mode 100644 index 0000000..b6e0042 --- /dev/null +++ b/test-api/src/karma.conf.js @@ -0,0 +1,31 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; \ No newline at end of file diff --git a/test-api/src/main.ts b/test-api/src/main.ts new file mode 100644 index 0000000..91ec6da --- /dev/null +++ b/test-api/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/test-api/src/polyfills.ts b/test-api/src/polyfills.ts new file mode 100644 index 0000000..d310405 --- /dev/null +++ b/test-api/src/polyfills.ts @@ -0,0 +1,80 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/test-api/src/styles.css b/test-api/src/styles.css new file mode 100644 index 0000000..90d4ee0 --- /dev/null +++ b/test-api/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/test-api/src/test.ts b/test-api/src/test.ts new file mode 100644 index 0000000..1631789 --- /dev/null +++ b/test-api/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/test-api/src/tsconfig.app.json b/test-api/src/tsconfig.app.json new file mode 100644 index 0000000..722c370 --- /dev/null +++ b/test-api/src/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "es2015", + "types": [] + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/test-api/src/tsconfig.spec.json b/test-api/src/tsconfig.spec.json new file mode 100644 index 0000000..8f7cede --- /dev/null +++ b/test-api/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "module": "commonjs", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/test-api/src/tslint.json b/test-api/src/tslint.json new file mode 100644 index 0000000..52e2c1a --- /dev/null +++ b/test-api/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/test-api/tsconfig.json b/test-api/tsconfig.json new file mode 100644 index 0000000..ef44e28 --- /dev/null +++ b/test-api/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/test-api/tslint.json b/test-api/tslint.json new file mode 100644 index 0000000..3ea984c --- /dev/null +++ b/test-api/tslint.json @@ -0,0 +1,130 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} From 474fca0d3338db3c9776b230ce3236f87a6f28f3 Mon Sep 17 00:00:00 2001 From: Emmanuel De Saint Steban Date: Mon, 5 Nov 2018 15:22:14 +0100 Subject: [PATCH 5/7] Can edit the response with @ResponseObservable + demo app to test and use the data. --- README.md | 37 +++++++++++++-- public_api.ts | 5 +- src/ngx-http-annotations.utils.ts | 58 ++++++++++++++++++------ test-api/src/app/app.component.html | 14 ++++-- test-api/src/app/app.component.ts | 28 +++++++++++- test-api/src/app/services/api.service.ts | 56 +++++++++++++++++++---- 6 files changed, 165 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index f9d580c..b3eba2e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ngx-http-rest +# ngx-http-annotations This library allows to interact with rest api in your angular app. It contains: @@ -6,6 +6,8 @@ It contains: - Annotations for http methods (@GET, @POST, @PUT, @DELETE, @OPTIONS, @HEAD, @PATCH) - Annotations for adding headers, setting produces results and intercepting response - Params annotations + + forked from : https://github.com/Mixalloff/ngx-http-rest ### Installation @@ -23,7 +25,7 @@ Example of using library. 1) Plug the HttpRestModule into your AppModule ```typescript -import { HttpRestModule } from 'ngx-http-rest'; +import { HttpRestModule } from 'ngx-http-annotations'; import { NgModule } from '@angular/core'; @NgModule({ @@ -39,7 +41,7 @@ export class AppModule { ```typescript -import { HttpRestService, GET, Path, PathParam, QueryParam, QueryParams } from 'ngx-http-annotations'; +import { HttpRestService, GET, POST, DELETE, Path, PathParam, Body, QueryParam, QueryParams, ResponseObservable } from 'ngx-http-annotations'; import { Injectable } from '@angular/core'; import RestConfig from 'app/core/configs/rest.config'; @@ -84,6 +86,15 @@ export class SomeRestService extends HttpRestService { @DELETE @Path('/:id') removeGoodsById(@PathParam('id') itemId: number): any {} + + @GET + @Path('posts') + /** + * getPostForUserId(3, 2) : call the the url /posts?userId=2 and only take 3 results + */ + public getPostForUserId(number: number, @QueryParam('userId') userId: number, @ResponseObservable res: Observable = undefined): Observable { + return res.pipe(map((response) => response.slice(0, number))); + } } @@ -125,4 +136,22 @@ Available annotations: - @PathParam (or @Path) - pass current parameter by name to collected url. Example: someFunc(@PathParam('id') itemId: number) {} - @Body - pass body object into request. Ex.: someMethod(@Body bodyObject: any){} - @QueryParam - pass single query parameters into request. Ex.: someMethod(@QueryParam('a') a: any, @QueryParam('b') b: any) {}. someMethod(1, 2) -> ..requested_url..?a=1&b=2 - - @QueryParams - pass object with few query params. Ex.: someMethod(@QueryParams queryObj: any){}. someMethod({x: 1, y: 2, z: 3}) -> ..requested_url..?x=1&y=2&z=3 \ No newline at end of file + - @QueryParams - pass object with few query params. Ex.: someMethod(@QueryParams queryObj: any){}. someMethod({x: 1, y: 2, z: 3}) -> ..requested_url..?x=1&y=2&z=3 + - @ResponseObservable - specify in witch function params, the response observable will be added. Ex.: someMethod(@ResponseObservable res: Observable = undefined){ /* transform request */ return res; }. need to initialise as undefined to pass compile error, and return a response. + + + #### Transform response with all rxjs function + + By adding the parameters @ResponseObservable you can specify, where add the observable response, + + ```typescript + + @GET + @Path('posts') + /** + * getPostForUserId(3, 2) : call the the url /posts?userId=2 and only take 3 results + */ + public getPostForUserId(number: number, @QueryParam('userId') userId: number, @ResponseObservable res: Observable = undefined): Observable { + return res.pipe(map((response) => response.slice(0, number))); + } + ``` \ No newline at end of file diff --git a/public_api.ts b/public_api.ts index 57787e9..6ae8c65 100644 --- a/public_api.ts +++ b/public_api.ts @@ -1,14 +1,13 @@ export * from './src/ngx-http-annotations.module'; export * from './src/ngx-http-annotations.utils'; -import { Response } from '@angular/http'; -import { HttpRestUtils, path, body, query, headers, produces, observe } from "./src/ngx-http-annotations.utils"; +import {HttpRestUtils, path, body, query, headers, produces, observe, response} from "./src/ngx-http-annotations.utils"; export let Path = path; export let PathParam = path; export let Body = body(null); +export let ResponseObservable = response(null); export let Query = query(null); export let QueryParam = query; -export let QueryParams = query(null); export let Observe = observe; // Headers diff --git a/src/ngx-http-annotations.utils.ts b/src/ngx-http-annotations.utils.ts index 1213eb2..d2506ff 100644 --- a/src/ngx-http-annotations.utils.ts +++ b/src/ngx-http-annotations.utils.ts @@ -17,18 +17,19 @@ interface httpRequestOptions { export function observe(annotations: any) { return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]); } -export function path(annotations: any | null) { +export function path(annotations: any) { return (...args: any[]) => { - if (!annotations) { // if not given, use args name function; - annotations = args[0]; - } - console.log('Path : ', annotations, ...args); return HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]); } } export function body(annotations: any) { return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]); } + +export function response(annotations: any) { + return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['response', annotations, ...args]); +} + export function query(annotations: any) { return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]); } @@ -51,6 +52,7 @@ export class HttpRestUtils { public static http: HttpClient = null; public static decorate(decoratorName: string, annotations: any, ...args: any[]) { + console.info ('decorate : ', decoratorName, annotations, args); switch (args.length) { case 1: { const [target] = args; @@ -112,6 +114,7 @@ export class HttpRestUtils { public static requestMethod(requestMethodName: string): any { // @dynamic return (target: any, key: string, descriptor: any) => { + let originalFunction = descriptor.value; descriptor.value = function (...args: any[]) { const url = HttpRestUtils.collectUrl(target, key, args); const body = HttpRestUtils.collectBody(target, key, args); @@ -119,15 +122,32 @@ export class HttpRestUtils { const headers = HttpRestUtils.collectHeaders(target, key, args); const producesType = HttpRestUtils.produce(target, key, args); const observe = HttpRestUtils.getObserve(target, key, args); - const params: httpRequestOptions = { + const params: any = { body, params: search, - // headers, + headers, responseType: producesType, observe }; - console.log('before request ', requestMethodName, url, params, headers); - return HttpRestUtils.http.request(requestMethodName, url, params); + console.log('before request ', requestMethodName, url, params); + let request = HttpRestUtils.http.request(requestMethodName, url, params); + + const responseIndex = HttpRestUtils.collectResponseIndex(target, key, args); + + console.warn('responseIndex : ', responseIndex, args); + if (responseIndex >= 0) { + const newArgs = args; + if (args.length > responseIndex) { + newArgs[responseIndex] = request; + } else { + newArgs.splice(responseIndex, 0, request); + } + + console.warn('call orininal function : ', newArgs); + return originalFunction(...newArgs); + } + + return request; // return HttpRestUtils.http.request(requestMethodName, url); }; }; @@ -146,7 +166,7 @@ export class HttpRestUtils { && target[RESOURSE_METADATA_ROOT].methods[methodName]) { return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; } - return undefined; + return 'json'; } private static collectUrl(target: any, methodName: string, args: any[]) { @@ -193,12 +213,21 @@ export class HttpRestUtils { return args[index]; } + private static collectResponseIndex(target: any, methodName: string, args: any[]) { + if (!target[RESOURSE_METADATA_ROOT].params + || !target[RESOURSE_METADATA_ROOT].params[methodName] + || !target[RESOURSE_METADATA_ROOT].params[methodName].response) return undefined; + + const index = target[RESOURSE_METADATA_ROOT].params[methodName].response.default; + return index; + } + private static collectQueryParams(target: any, methodName: string, args: any[]) { if (!target[RESOURSE_METADATA_ROOT].params || !target[RESOURSE_METADATA_ROOT].params[methodName] || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined; - let queryParams = new HttpParams(); + let queryParams = {}; const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; const queryParamsCollection = queryParamsObjectIndex != undefined @@ -211,7 +240,7 @@ export class HttpRestUtils { .forEach(paramName => { let value = queryParamsCollection[paramName]; if (!Array.isArray(value)) { value = [ value ]; } - value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam)); + value.forEach((curParam: any) => queryParams [paramName] = curParam); }); return queryParams; } @@ -223,10 +252,11 @@ export class HttpRestUtils { : {}; const mergedHeaders = Object.assign({}, classHeaders, methodHeaders); - const httpHeaders = new HttpHeaders(); + /*const httpHeaders = new HttpHeaders(); for (const header in mergedHeaders) { httpHeaders.append(header, mergedHeaders[header]); } - return httpHeaders; + return httpHeaders;*/ + return mergedHeaders; } } \ No newline at end of file diff --git a/test-api/src/app/app.component.html b/test-api/src/app/app.component.html index 5e2d6fa..d644d06 100644 --- a/test-api/src/app/app.component.html +++ b/test-api/src/app/app.component.html @@ -1,11 +1,19 @@

- Welcome to {{ title }}! + ngx-http-annotations test application !

- Angular Logo
-

Here are some links to help you start:

+

Test call for https://jsonplaceholder.typicode.com/:

+ +

Post 1

{{post1 | json}} +

Post 2

{{post2 | json}} +

Post 3 (New)

+{{post3 | json}} +

Post 4 (Update)

+{{post4 | json}} +

Post 5 (Delete)

+{{post5 | json}} diff --git a/test-api/src/app/app.component.ts b/test-api/src/app/app.component.ts index 1636b57..70c5d9e 100644 --- a/test-api/src/app/app.component.ts +++ b/test-api/src/app/app.component.ts @@ -11,12 +11,38 @@ export class AppComponent implements OnInit { public post1: any; public post2: any; + public post3: any; + public post4: any; + public post5: any; constructor(private api: ApiService) {} ngOnInit(): void { this.api.getPost(1).subscribe((post)=>this.post1=post); - this.api.getPost(2).subscribe((post)=>this.post2=post); + this.api.getPostForUserId(3, 2).subscribe((post) => { + console.log('Post2 :', post); + this.post2=post; + + let post3 = {...post[0], title: 'new title ', id: null}; + this.api.setPost(post3).subscribe((post)=> { + console.log('SetPosts :', post); + this.post3 = post; + }); + + + let post4 = {...post[0], title: 'Updated post ', body: 'This is an updated Post '}; + this.api.putPost(null, post4, post4.id).subscribe((post)=> { + console.log('updates post :', post); + this.post4 = post; + }); + + this.api.deletePost(post[1].id).subscribe((post)=> { + console.log('deleted post :', post); + this.post5 = post; + }); + + } + ); } diff --git a/test-api/src/app/services/api.service.ts b/test-api/src/app/services/api.service.ts index 82434fe..ffef010 100644 --- a/test-api/src/app/services/api.service.ts +++ b/test-api/src/app/services/api.service.ts @@ -1,33 +1,73 @@ import { Injectable } from '@angular/core'; -import {GET, Path, PathParam, Headers} from "../../../../public_api"; +import { + GET, + Path, + PathParam, + Headers, + QueryParam, + POST, + Body, + ResponseObservable, + PUT, + DELETE +} from '../../../../public_api'; import {HttpClient} from "@angular/common/http"; -import {Observable} from "rxjs"; +import {from, Observable} from "rxjs"; +import {flatMap, map, mergeAll, take, tap} from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) -@Path('https://jsonplaceholder.typicode.com/') @Headers({ 'someHeader1': 'headerValue1', - 'someHeader2': 'headerValue2' + 'someHeader2': 'headerValue2', + 'Content-type': 'application/json; charset=UTF-8' }) +@Path('https://jsonplaceholder.typicode.com/') export class ApiService { constructor(private http: HttpClient) { } @GET @Path('posts/:id') + @Headers({ + 'someHeader2': 'hackedHeader2', + }) public getPost(@PathParam('id') id: number): Observable { //return this.http.request('GET', 'https://jsonplaceholder.typicode.com/posts/'+id); return null; } - public func1(@PathParam('aaa') bbb: number) { - return bbb; + @GET + @Path('posts') + public getPostForUserId(number: number, @QueryParam('userId') userId: number, @ResponseObservable res: Observable = undefined): Observable { + return res.pipe(map((response) => response.slice(0, number))); } - public func2(@PathParam(null) ccc: number) { - return ccc; + @POST + @Headers({ + 'someHeader3': 'headerValue3', + }) + @Path('posts') + public setPost(@Body post: any): Observable { + //return this.http.request('POST', 'https://jsonplaceholder.typicode.com/posts/', post); + return null; + } + + @PUT + @Path('posts/:id') + public putPost(@ResponseObservable res: Observable, @Body post: any, @PathParam('id') postId: number): Observable { + //return this.http.request('PUT', 'https://jsonplaceholder.typicode.com/posts/'+id, post); + return res.pipe(tap(data => console.log(`putPost for Post (${postId}) :`, data))); } + + @DELETE + @Path('posts/:id') + public deletePost(@PathParam('id') postId: number): Observable { + //return this.http.request('DELETE', 'https://jsonplaceholder.typicode.com/posts/'+id); + return null; + } + + } From 207b1aa42ff10826704f9ef0d7c1b8920e0efcdf Mon Sep 17 00:00:00 2001 From: Emmanuel De Saint Steban Date: Mon, 5 Nov 2018 18:04:25 +0100 Subject: [PATCH 6/7] remove console.log + add new exemple --- .gitignore | 1 + package.json | 4 ++-- src/ngx-http-annotations.module.ts | 1 - src/ngx-http-annotations.utils.ts | 14 ++------------ test-api/src/app/app.component.html | 3 +++ test-api/src/app/app.component.ts | 9 +++++++-- test-api/src/app/services/api.service.ts | 14 +++++++++++--- 7 files changed, 26 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index b3888fc..2a01ff7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules /test-api/node_modules/ +/dist diff --git a/package.json b/package.json index 98571c3..dbf88fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ngx-http-annotations", - "version": "0.5.2", + "version": "0.6.1", "main": "public_api.ts", "files": [ "src" @@ -26,7 +26,7 @@ "@angular/platform-browser-dynamic": "6.0.3", "@angular/router": "6.0.3", "core-js": "^2.4.1", - "ng-packagr": "^3.0.0", + "ng-packagr": "^4.4.0", "rxjs": "^6.0.0-beta.1", "typescript": "2.7.2", "zone.js": "0.8.26" diff --git a/src/ngx-http-annotations.module.ts b/src/ngx-http-annotations.module.ts index 9175e6e..77448b2 100644 --- a/src/ngx-http-annotations.module.ts +++ b/src/ngx-http-annotations.module.ts @@ -15,7 +15,6 @@ export class HttpRestModule { } export function onAppInit(http: HttpClient) { - console.log('App Init : ', http, HttpRestUtils.http); return function () { HttpRestUtils.http = http; } diff --git a/src/ngx-http-annotations.utils.ts b/src/ngx-http-annotations.utils.ts index d2506ff..80a463b 100644 --- a/src/ngx-http-annotations.utils.ts +++ b/src/ngx-http-annotations.utils.ts @@ -52,8 +52,7 @@ export class HttpRestUtils { public static http: HttpClient = null; public static decorate(decoratorName: string, annotations: any, ...args: any[]) { - console.info ('decorate : ', decoratorName, annotations, args); - switch (args.length) { + switch (args.length) { case 1: { const [target] = args; HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]); @@ -88,7 +87,6 @@ export class HttpRestUtils { * @param entityData Entity extra data */ private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) { - console.log('constructMetadata :', metaName, entityType, value, target, entityData); target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; @@ -129,12 +127,10 @@ export class HttpRestUtils { responseType: producesType, observe }; - console.log('before request ', requestMethodName, url, params); let request = HttpRestUtils.http.request(requestMethodName, url, params); const responseIndex = HttpRestUtils.collectResponseIndex(target, key, args); - console.warn('responseIndex : ', responseIndex, args); if (responseIndex >= 0) { const newArgs = args; if (args.length > responseIndex) { @@ -143,12 +139,10 @@ export class HttpRestUtils { newArgs.splice(responseIndex, 0, request); } - console.warn('call orininal function : ', newArgs); return originalFunction(...newArgs); } return request; - // return HttpRestUtils.http.request(requestMethodName, url); }; }; } @@ -252,11 +246,7 @@ export class HttpRestUtils { : {}; const mergedHeaders = Object.assign({}, classHeaders, methodHeaders); - /*const httpHeaders = new HttpHeaders(); - for (const header in mergedHeaders) { - httpHeaders.append(header, mergedHeaders[header]); - } - return httpHeaders;*/ + return mergedHeaders; } } \ No newline at end of file diff --git a/test-api/src/app/app.component.html b/test-api/src/app/app.component.html index d644d06..592fbfb 100644 --- a/test-api/src/app/app.component.html +++ b/test-api/src/app/app.component.html @@ -17,3 +17,6 @@

Post 4 (Update)

Post 5 (Delete)

{{post5 | json}} +

todos (with rxjs filter)

+{{todos | json}} + diff --git a/test-api/src/app/app.component.ts b/test-api/src/app/app.component.ts index 70c5d9e..dc3718b 100644 --- a/test-api/src/app/app.component.ts +++ b/test-api/src/app/app.component.ts @@ -14,6 +14,7 @@ export class AppComponent implements OnInit { public post3: any; public post4: any; public post5: any; + public todos: any; constructor(private api: ApiService) {} @@ -41,8 +42,12 @@ export class AppComponent implements OnInit { this.post5 = post; }); - } - ); + }); + + this.api.getTodosNotDone().subscribe((todos)=> { + console.log('todos :', todos); + this.todos = todos; + }); } diff --git a/test-api/src/app/services/api.service.ts b/test-api/src/app/services/api.service.ts index ffef010..1eac346 100644 --- a/test-api/src/app/services/api.service.ts +++ b/test-api/src/app/services/api.service.ts @@ -11,9 +11,9 @@ import { PUT, DELETE } from '../../../../public_api'; -import {HttpClient} from "@angular/common/http"; -import {from, Observable} from "rxjs"; -import {flatMap, map, mergeAll, take, tap} from 'rxjs/operators'; +import {HttpClient} from '@angular/common/http'; +import {from, Observable} from 'rxjs'; +import {flatMap, map, mergeAll, take, tap, filter} from 'rxjs/operators'; @Injectable({ providedIn: 'root' @@ -69,5 +69,13 @@ export class ApiService { return null; } + @GET + @Path('todos') + public getTodosNotDone(@ResponseObservable res: Observable = undefined): Observable { + //return this.http.request('GET', 'https://jsonplaceholder.typicode.com/todos'); + return res.pipe( + map(todos => todos.filter(todo => !todo.completed))); + } + } From 39041d7d39f0c59481db7a2b4702840b3dc924dd Mon Sep 17 00:00:00 2001 From: Emmanuel De Saint Steban Date: Wed, 7 Nov 2018 11:40:36 +0100 Subject: [PATCH 7/7] chore : ignore dist --- .gitignore | 2 + dist/ngx-http-annotations/README.md | 137 ----- .../bundles/ngx-http-annotations.umd.js | 514 ------------------ .../bundles/ngx-http-annotations.umd.js.map | 1 - .../bundles/ngx-http-annotations.umd.min.js | 2 - .../ngx-http-annotations.umd.min.js.map | 1 - .../esm2015/ngx-http-annotations.js | 10 - .../esm2015/public_api.js | 28 - .../src/ngx-http-annotations.module.js | 38 -- .../esm2015/src/ngx-http-annotations.utils.js | 302 ---------- .../esm5/ngx-http-annotations.js | 10 - dist/ngx-http-annotations/esm5/public_api.js | 28 - .../esm5/src/ngx-http-annotations.module.js | 42 -- .../esm5/src/ngx-http-annotations.utils.js | 415 -------------- .../fesm2015/ngx-http-annotations.js | 325 ----------- .../fesm2015/ngx-http-annotations.js.map | 1 - .../fesm5/ngx-http-annotations.js | 440 --------------- .../fesm5/ngx-http-annotations.js.map | 1 - .../ngx-http-annotations.d.ts | 4 - .../ngx-http-annotations.metadata.json | 1 - dist/ngx-http-annotations/package.json | 57 -- dist/ngx-http-annotations/public_api.d.ts | 19 - .../src/ngx-http-annotations.module.d.ts | 4 - .../src/ngx-http-annotations.utils.d.ts | 27 - 24 files changed, 2 insertions(+), 2407 deletions(-) delete mode 100644 dist/ngx-http-annotations/README.md delete mode 100644 dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js delete mode 100644 dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js.map delete mode 100644 dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js delete mode 100644 dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js.map delete mode 100644 dist/ngx-http-annotations/esm2015/ngx-http-annotations.js delete mode 100644 dist/ngx-http-annotations/esm2015/public_api.js delete mode 100644 dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.module.js delete mode 100644 dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.utils.js delete mode 100644 dist/ngx-http-annotations/esm5/ngx-http-annotations.js delete mode 100644 dist/ngx-http-annotations/esm5/public_api.js delete mode 100644 dist/ngx-http-annotations/esm5/src/ngx-http-annotations.module.js delete mode 100644 dist/ngx-http-annotations/esm5/src/ngx-http-annotations.utils.js delete mode 100644 dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js delete mode 100644 dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js.map delete mode 100644 dist/ngx-http-annotations/fesm5/ngx-http-annotations.js delete mode 100644 dist/ngx-http-annotations/fesm5/ngx-http-annotations.js.map delete mode 100644 dist/ngx-http-annotations/ngx-http-annotations.d.ts delete mode 100644 dist/ngx-http-annotations/ngx-http-annotations.metadata.json delete mode 100644 dist/ngx-http-annotations/package.json delete mode 100644 dist/ngx-http-annotations/public_api.d.ts delete mode 100644 dist/ngx-http-annotations/src/ngx-http-annotations.module.d.ts delete mode 100644 dist/ngx-http-annotations/src/ngx-http-annotations.utils.d.ts diff --git a/.gitignore b/.gitignore index 2a01ff7..d35b56b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules /test-api/node_modules/ /dist + +*.lock diff --git a/dist/ngx-http-annotations/README.md b/dist/ngx-http-annotations/README.md deleted file mode 100644 index e434ed1..0000000 --- a/dist/ngx-http-annotations/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# ngx-http-annotations - -This library allows to interact with rest api in your angular app. -It contains: - - - Annotations for http methods (@GET, @POST, @PUT, @DELETE, @OPTIONS, @HEAD, @PATCH) - - Annotations for adding headers, setting produces results and intercepting response - - Params annotations - -### Installation - -Install through npm: - -```sh -$ npm install ngx-http-annotations --save -``` - - -### Development - -Example of using library. - -1) Plug the HttpRestModule into your AppModule - -```typescript -import { HttpRestModule } from 'ngx-http-annotations'; -import { NgModule } from '@angular/core'; - -@NgModule({ - imports: [ - HttpRestModule - ] -}) -export class AppModule { -} -``` - -2) Create a service to work with rest api. Inherit it from HttpRestService from 'ngx-http-annotations'. Put annotations on the class, methods and params. - - -```typescript -import { HttpRestService, GET, Path, PathParam, QueryParam, QueryParams } from 'ngx-http-annotations'; -import { Injectable } from '@angular/core'; -import RestConfig from 'app/core/configs/rest.config'; - -interface GoodsItem { - id: number, - name: string, - price: number, - sales?: boolean; - desc?: string; - children?: Array; -} - -@Injectable() -@Headers({ - 'someHeader1': 'headerValue1', - 'someHeader2': 'headerValue2' -}) -@Path(`/test/goods`) -export class SomeRestService extends HttpRestService { - - @GET - getGoods(@QueryParams /* Object with queryParams { [name: string]: [value: any] } */ queryObj?: any): any {} - - @GET - getGoodsBySomeParam(@QueryParam('sales') /* ...?sales= */ isSold: boolean): any {} - - @GET - @Path('/:id') - getGoodsItemById(@PathParam('id') itemId: number): any {} - - @GET - @Path('/:id/child/:childId') /* Few path params */ - getChildrenOfSomeGoods(@PathParam('id') id: number, - @PathParam('childId') childId: number - @QueryParam('sales') isSold: boolean, - @QueryParam('someParam') some: any): any {} - - @POST - @Path('/create') - createGoods(@Body /* Body of POST request */ goodsObject: GoodsItem): any {} - - @DELETE - @Path('/:id') - removeGoodsById(@PathParam('id') itemId: number): any {} - - -} -``` - -3) Call the request method from component - -```typescript -import { Component, OnInit } from '@angular/core'; -import { SomeRestService } from './some-rest.service'; - -@Component({ - selector: 'some-test-component', - templateUrl: './test-component.component.html', - styleUrls: ['./test-component.component.css'], - providers: [SomeRestService] -}) -export class TestComponent implements OnInit { - constructor(private someRestService: SomeRestService){} - - ngOnInit() { - this.someRestService - .getGoods() - .subscribe( goods => console.log(goods) ); - } -} -``` - -### Description -Available annotations: -1) Request methods -@GET, @POST, @PUT, @DELETE, @OPTIONS, @HEAD, @PATCH - marks methods implementing the corresponding requests -2) Added settings - - @Path - set path of url for request. Combined class @Path annotation value and current method @Path. Path params passed with ":". For example @Path('/someurl/:someParam') - - @Headers - set headers for request (if annotate class, then all class methods getting this headers. method Headers merge with class Headers) - - @Produces - setting expected response type. By default Reponse transformed by .json() method - - @Observes - setting http observes. - 3) Parameters - - @PathParam (or @Path) - pass current parameter by name to collected url. Example: someFunc(@PathParam('id') itemId: number) {} - - @Body - pass body object into request. Ex.: someMethod(@Body bodyObject: any){} - - @QueryParam - pass single query parameters into request. Ex.: someMethod(@QueryParam('a') a: any, @QueryParam('b') b: any) {}. someMethod(1, 2) -> ..requested_url..?a=1&b=2 - - @QueryParams - pass object with few query params. Ex.: someMethod(@QueryParams queryObj: any){}. someMethod({x: 1, y: 2, z: 3}) -> ..requested_url..?x=1&y=2&z=3 - - - ### Credits - - Originaly created by "Mixalloff" - forked from https://github.com/Mixalloff/ngx-http-rest - - Updated by Manudss. - \ No newline at end of file diff --git a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js deleted file mode 100644 index 73d92dd..0000000 --- a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js +++ /dev/null @@ -1,514 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common/http'), require('@angular/core')) : - typeof define === 'function' && define.amd ? define('ngx-http-annotations', ['exports', '@angular/common/http', '@angular/core'], factory) : - (factory((global['ngx-http-annotations'] = {}),global.ng.common.http,global.ng.core)); -}(this, (function (exports,http,core) { 'use strict'; - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) - return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) - ar.push(r.value); - } - catch (error) { - e = { error: error }; - } - finally { - try { - if (r && !r.done && (m = i["return"])) - m.call(i); - } - finally { - if (e) - throw e.error; - } - } - return ar; - } - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; - } - - /** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ - /** - * @param {?} annotations - * @return {?} - */ - function observe(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['observe', annotations], args)); - }; - } - /** - * @param {?} annotations - * @return {?} - */ - function path(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['path', annotations], args)); - }; - } - /** - * @param {?} annotations - * @return {?} - */ - function body(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['body', annotations], args)); - }; - } - /** - * @param {?} annotations - * @return {?} - */ - function query(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['query', annotations], args)); - }; - } - /** - * @param {?} annotations - * @return {?} - */ - function headers(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['headers', annotations], args)); - }; - } - /** - * @param {?} annotations - * @return {?} - */ - function produces(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['produces', annotations], args)); - }; - } - var /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; - var HttpRestUtils = (function () { - function HttpRestUtils() { - } - /** - * @param {?} decoratorName - * @param {?} annotations - * @param {...?} args - * @return {?} - */ - HttpRestUtils.decorate = /** - * @param {?} decoratorName - * @param {?} annotations - * @param {...?} args - * @return {?} - */ - function (decoratorName, annotations) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - switch (args.length) { - case 1: { - var _a = __read(args, 1), target = _a[0]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); - break; - } - case 2: { - var _b = __read(args, 2), target = _b[0], key = _b[1]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); - break; - } - case 3: - if (typeof args[2] === 'number') { - var _c = __read(args, 3), target = _c[0], keyName = _c[1], index = _c[2]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName: keyName, index: index }]); - break; - } - else { - var _d = __read(args, 3), target = _d[0], keyName = _d[1], descriptor = _d[2]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName: keyName }]); - break; - } - default: - throw new Error('Decorators are not valid here!'); - } - }; - /** - * Set up metadada - * @param {?} metaName Decorator name - * @param {?} entityType - * @param {?} value Value of metadata - * @param {?} target Prototype of current object - * @param {?=} entityData Entity extra data - * @return {?} - */ - HttpRestUtils.constructMetadata = /** - * Set up metadada - * @param {?} metaName Decorator name - * @param {?} entityType - * @param {?} value Value of metadata - * @param {?} target Prototype of current object - * @param {?=} entityData Entity extra data - * @return {?} - */ - function (metaName, entityType, value, target, entityData) { - target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; - target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; - var /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; - var /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; - if (entityData && entityData.keyName) { - metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; - } - if (entityData && entityData.index != null) { - metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; - } - switch (entityType) { - case 'class': - metadataObj[metaName] = value; - break; - case 'props': - metadataObj[metaName] = value; - break; - case 'methods': - metadataObj[entityData.keyName][metaName] = value; - break; - case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; - } - target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; - }; - /** - * @param {?} requestMethodName - * @return {?} - */ - HttpRestUtils.requestMethod = /** - * @param {?} requestMethodName - * @return {?} - */ - function (requestMethodName) { - // @dynamic - return function (target, key, descriptor) { - descriptor.value = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); - var /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); - var /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); - var /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); - var /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); - var /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); - var /** @type {?} */ params = { - body: body, - params: search, - headers: headers, - responseType: producesType, - observe: observe - }; - return HttpRestUtils.http.request(requestMethodName, url, params); - }; - }; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.getObserve = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; - } - return undefined; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.produce = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; - } - return undefined; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectUrl = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - var /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class - ? target[RESOURSE_METADATA_ROOT].class.path - : ''; - var /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].path - : ''; - var /** @type {?} */ isRelativePath = ("" + baseUrl + methodUrl)[0] === '/'; - var /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] - .filter(function (path) { return path; }) - .join('/') - .split('/') - .map(function (path) { - if (path[0] === ':') { - var /** @type {?} */ paramName = path.substring(1); - var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params - && target[RESOURSE_METADATA_ROOT].params[methodName] - && target[RESOURSE_METADATA_ROOT].params[methodName].path - ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] - : ''; - return args[index]; - } - return path; - }) - .filter(function (path) { return path; }) - .join('/'); - if (!isRelativePath) { - var _a = __read(methodUrlWithParams.split('/')), absolutePrefix = _a[0], paths = _a.slice(1); - return absolutePrefix + "//" + paths.join('/'); - } - return "/" + methodUrlWithParams; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectBody = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].body) - return undefined; - var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; - return args[index]; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectQueryParams = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].query) - return undefined; - var /** @type {?} */ queryParams = new http.HttpParams(); - var /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; - var /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; - var /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined - ? args[queryParamsObjectIndex] - : Object.keys(queryMetadata).reduce(function (mergedObj, paramName) { - return Object.assign(mergedObj, (_a = {}, _a[paramName] = args[queryMetadata[paramName]], _a)); - var _a; - }, {}); - Object.keys(queryParamsCollection) - .forEach(function (paramName) { - var /** @type {?} */ value = queryParamsCollection[paramName]; - if (!Array.isArray(value)) { - value = [value]; - } - value.forEach(function (curParam) { return queryParams = queryParams.append(paramName, curParam); }); - }); - return queryParams; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectHeaders = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - var /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; - var /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers - : {}; - var /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); - var /** @type {?} */ httpHeaders = new http.HttpHeaders(); - for (var /** @type {?} */ header in mergedHeaders) { - httpHeaders.append(header, mergedHeaders[header]); - } - return httpHeaders; - }; - HttpRestUtils.http = null; - return HttpRestUtils; - }()); - - /** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ - var HttpRestModule = (function () { - function HttpRestModule() { - } - HttpRestModule.decorators = [ - { type: core.NgModule, args: [{ - imports: [http.HttpClientModule], - providers: [ - { provide: core.APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [http.HttpClient] } - ] - },] }, - ]; - return HttpRestModule; - }()); - /** - * @param {?} http - * @return {?} - */ - function onAppInit(http$$1) { - return function () { - HttpRestUtils.http = http$$1; - }; - } - - /** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ - var /** @type {?} */ Path = path; - var /** @type {?} */ PathParam = path; - var /** @type {?} */ Body = body(null); - var /** @type {?} */ Query = query(null); - var /** @type {?} */ QueryParam = query; - var /** @type {?} */ QueryParams = query(null); - var /** @type {?} */ Observe = observe; - // Headers - var /** @type {?} */ Headers = headers; - // Produces - var /** @type {?} */ Produces = produces; - // Request methods - var /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); - var /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); - var /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); - var /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); - var /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); - var /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); - var /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); - - /** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ - - exports.Path = Path; - exports.PathParam = PathParam; - exports.Body = Body; - exports.Query = Query; - exports.QueryParam = QueryParam; - exports.QueryParams = QueryParams; - exports.Observe = Observe; - exports.Headers = Headers; - exports.Produces = Produces; - exports.GET = GET; - exports.POST = POST; - exports.PUT = PUT; - exports.DELETE = DELETE; - exports.OPTIONS = OPTIONS; - exports.HEAD = HEAD; - exports.PATCH = PATCH; - exports.HttpRestModule = HttpRestModule; - exports.onAppInit = onAppInit; - exports.observe = observe; - exports.path = path; - exports.body = body; - exports.query = query; - exports.headers = headers; - exports.produces = produces; - exports.HttpRestUtils = HttpRestUtils; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMudW1kLmpzLm1hcCIsInNvdXJjZXMiOltudWxsLCJuZzovL25neC1odHRwLWFubm90YXRpb25zL3NyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZS50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvcHVibGljX2FwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMClcclxuICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IHlbb3BbMF0gJiAyID8gXCJyZXR1cm5cIiA6IG9wWzBdID8gXCJ0aHJvd1wiIDogXCJuZXh0XCJdKSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFswLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBIdHRwT2JzZXJ2ZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cC9zcmMvY2xpZW50XCI7XHJcblxyXG5pbnRlcmZhY2UgaHR0cFJlcXVlc3RPcHRpb25zIHtcclxuICBib2R5PzogYW55O1xyXG4gIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICBwYXJhbXM/OiBIdHRwUGFyYW1zO1xyXG4gIG9ic2VydmU/OiBIdHRwT2JzZXJ2ZTtcclxuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmUoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydvYnNlcnZlJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gcGF0aChhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3BhdGgnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBib2R5KGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnYm9keScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5KGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsncXVlcnknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBoZWFkZXJzKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnaGVhZGVycycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y2VzKGFubm90YXRpb25zOiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnKSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3Byb2R1Y2VzJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5cclxudHlwZSBSZXNvdXJjZU1ldGFkYXRhVHlwZSA9ICdjbGFzcyd8J21ldGhvZHMnfCdwYXJhbXMnfCdwcm9wcyc7XHJcbmludGVyZmFjZSBFeHRyYUVudGl0eURhdGEge1xyXG4gIGtleU5hbWU6IHN0cmluZztcclxuICBpbmRleDogbnVtYmVyO1xyXG59XHJcbmNvbnN0IFJFU09VUlNFX01FVEFEQVRBX1JPT1QgPSAncmVzb3VyY2VzX21ldGFkYXRhJztcclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXN0VXRpbHMge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlY29yYXRlKGRlY29yYXRvck5hbWU6IHN0cmluZywgYW5ub3RhdGlvbnM6IGFueSwgLi4uYXJnczogYW55W10pIHtcclxuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDE6IHtcclxuICAgICAgICAgIGNvbnN0IFt0YXJnZXRdID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAnY2xhc3MnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LnByb3RvdHlwZSBdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgIGNvbnN0IFt0YXJnZXQsIGtleV0gPSBhcmdzO1xyXG4gICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwcm9wcycsIGFubm90YXRpb25zLCB0YXJnZXQgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzJdID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXlOYW1lLCBpbmRleF0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ3BhcmFtcycsIGFubm90YXRpb25zLCB0YXJnZXQsIHsga2V5TmFtZSwgaW5kZXggfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXlOYW1lLCBkZXNjcmlwdG9yXSA9IGFyZ3M7XHJcbiAgICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAnbWV0aG9kcycsIGFubm90YXRpb25zLCB0YXJnZXQsIHsga2V5TmFtZSB9IF0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZSEnKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHVwIG1ldGFkYWRhXHJcbiAgICogQHBhcmFtIHR5cGUgRW50aXR5IHR5cGVcclxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgb2YgbWV0YWRhdGFcclxuICAgKiBAcGFyYW0gdGFyZ2V0IFByb3RvdHlwZSBvZiBjdXJyZW50IG9iamVjdFxyXG4gICAqIEBwYXJhbSBtZXRhTmFtZSBEZWNvcmF0b3IgbmFtZVxyXG4gICAqIEBwYXJhbSBlbnRpdHlEYXRhIEVudGl0eSBleHRyYSBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29uc3RydWN0TWV0YWRhdGEobWV0YU5hbWU6IHN0cmluZywgZW50aXR5VHlwZTogUmVzb3VyY2VNZXRhZGF0YVR5cGUsIHZhbHVlOiBhbnksIHRhcmdldDogYW55LCBlbnRpdHlEYXRhPzogRXh0cmFFbnRpdHlEYXRhKSB7XHJcbiAgICB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gfHwge307XHJcbiAgICB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV0gPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV0gfHwge307XHJcblxyXG4gICAgY29uc3Qgcm9vdE1ldGFkYXRhID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdO1xyXG4gICAgY29uc3QgbWV0YWRhdGFPYmogPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV07XHJcbiAgICBpZiAoZW50aXR5RGF0YSAmJiBlbnRpdHlEYXRhLmtleU5hbWUpIHtcclxuICAgICAgbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXSA9IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBpZiAoZW50aXR5RGF0YSAmJiBlbnRpdHlEYXRhLmluZGV4ICE9IG51bGwpIHtcclxuICAgICAgbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdW21ldGFOYW1lXSB8fCB7fTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoZW50aXR5VHlwZSkge1xyXG4gICAgICBjYXNlICdjbGFzcyc6IG1ldGFkYXRhT2JqW21ldGFOYW1lXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAncHJvcHMnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21ldGhvZHMnOiBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdW21ldGFOYW1lXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAncGFyYW1zJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV1bdmFsdWUgfHwgJ2RlZmF1bHQnXSA9IGVudGl0eURhdGEuaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gbWV0YWRhdGFPYmo7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlcXVlc3RNZXRob2QocmVxdWVzdE1ldGhvZE5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgIC8vIEBkeW5hbWljXHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogYW55KSA9PiB7XHJcbiAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RVcmwodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RCb2R5KHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBzZWFyY2ggPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RRdWVyeVBhcmFtcyh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IEh0dHBSZXN0VXRpbHMuY29sbGVjdEhlYWRlcnModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y2VzVHlwZSA9IEh0dHBSZXN0VXRpbHMucHJvZHVjZSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZSA9IEh0dHBSZXN0VXRpbHMuZ2V0T2JzZXJ2ZSh0YXJnZXQsIGtleSwgYXJncylcclxuICAgICAgICBjb25zdCBwYXJhbXM6IGh0dHBSZXF1ZXN0T3B0aW9ucyA9IHtcclxuICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICBwYXJhbXM6IHNlYXJjaCxcclxuICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICByZXNwb25zZVR5cGU6IHByb2R1Y2VzVHlwZSxcclxuICAgICAgICAgIG9ic2VydmVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBIdHRwUmVzdFV0aWxzLmh0dHAucmVxdWVzdChyZXF1ZXN0TWV0aG9kTmFtZSwgdXJsLCBwYXJhbXMpO1xyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldE9ic2VydmUodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICh0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1xyXG4gICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXSkge1xyXG4gICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLm9ic2VydmU7XHJcbiAgICAgfVxyXG4gICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9kdWNlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXSkge1xyXG4gICAgICByZXR1cm4gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0ucHJvZHVjZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFVybCh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgYmFzZVVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXSAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3NcclxuICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MucGF0aFxyXG4gICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgbWV0aG9kVXJsID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHMgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgaXNSZWxhdGl2ZVBhdGggPSBgJHtiYXNlVXJsfSR7bWV0aG9kVXJsfWBbMF0gPT09ICcvJztcclxuICAgIGNvbnN0IG1ldGhvZFVybFdpdGhQYXJhbXNcclxuICAgICAgPSBbYmFzZVVybCwgbWV0aG9kVXJsXVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJylcclxuICAgICAgICAuc3BsaXQoJy8nKVxyXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XHJcbiAgICAgICAgICBpZiAoIHBhdGhbMF0gPT09ICc6Jykge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXRoLnN1YnN0cmluZygxKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucGF0aFtwYXJhbU5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgICAgIHJldHVybiBhcmdzW2luZGV4XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbHRlcihwYXRoID0+IHBhdGgpXHJcbiAgICAgICAgLmpvaW4oJy8nKTtcclxuXHJcbiAgICBpZiAoIWlzUmVsYXRpdmVQYXRoKSB7XHJcbiAgICAgIGNvbnN0IFthYnNvbHV0ZVByZWZpeCwgLi4ucGF0aHNdID0gbWV0aG9kVXJsV2l0aFBhcmFtcy5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gYCR7IGFic29sdXRlUHJlZml4IH0vLyR7IHBhdGhzLmpvaW4oJy8nKSB9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBgLyR7IG1ldGhvZFVybFdpdGhQYXJhbXMgfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0Qm9keSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKCF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5ib2R5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5ib2R5LmRlZmF1bHQ7XHJcbiAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnkpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zT2JqZWN0SW5kZXggPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5LmRlZmF1bHQ7XHJcbiAgICBjb25zdCBxdWVyeU1ldGFkYXRhID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zQ29sbGVjdGlvbiA9IHF1ZXJ5UGFyYW1zT2JqZWN0SW5kZXggIT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhcmdzW3F1ZXJ5UGFyYW1zT2JqZWN0SW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBPYmplY3Qua2V5cyhxdWVyeU1ldGFkYXRhKS5yZWR1Y2UoKG1lcmdlZE9iaiwgcGFyYW1OYW1lKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihtZXJnZWRPYmosIHsgW3BhcmFtTmFtZV06IGFyZ3NbcXVlcnlNZXRhZGF0YVtwYXJhbU5hbWVdXSB9KSwge31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zQ29sbGVjdGlvbilcclxuICAgICAgLmZvckVhY2gocGFyYW1OYW1lID0+IHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBxdWVyeVBhcmFtc0NvbGxlY3Rpb25bcGFyYW1OYW1lXTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7IHZhbHVlID0gWyB2YWx1ZSBdOyB9XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgoY3VyUGFyYW06IGFueSkgPT4gcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcy5hcHBlbmQocGFyYW1OYW1lLCBjdXJQYXJhbSkpO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RIZWFkZXJzKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBjb25zdCBjbGFzc0hlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MuaGVhZGVycyA6IHt9O1xyXG4gICAgY29uc3QgbWV0aG9kSGVhZGVycyA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0uaGVhZGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xyXG4gICAgY29uc3QgbWVyZ2VkSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIGNsYXNzSGVhZGVycywgbWV0aG9kSGVhZGVycyk7XHJcblxyXG4gICAgY29uc3QgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGZvciAoY29uc3QgaGVhZGVyIGluIG1lcmdlZEhlYWRlcnMpIHtcclxuICAgICAgaHR0cEhlYWRlcnMuYXBwZW5kKGhlYWRlciwgbWVyZ2VkSGVhZGVyc1toZWFkZXJdKTtcclxuICAgIH1cclxuICAgIHJldHVybiBodHRwSGVhZGVycztcclxuICB9XHJcbn0iLCJpbXBvcnQgeyBOZ01vZHVsZSwgQVBQX0lOSVRJQUxJWkVSIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXN0VXRpbHMgfSBmcm9tIFwiLi9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlsc1wiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuLy8gQGR5bmFtaWNcclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtIdHRwQ2xpZW50TW9kdWxlXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICB7IHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUiwgdXNlRmFjdG9yeTogb25BcHBJbml0LCBtdWx0aTogdHJ1ZSwgZGVwczogW0h0dHBDbGllbnRdIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXN0TW9kdWxlIHtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9uQXBwSW5pdChodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgIEh0dHBSZXN0VXRpbHMuaHR0cCA9IGh0dHA7XHJcbiAgfVxyXG59IiwiZXhwb3J0ICogZnJvbSAnLi9zcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHMnO1xyXG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnO1xyXG5pbXBvcnQgeyBIdHRwUmVzdFV0aWxzLCBwYXRoLCBib2R5LCBxdWVyeSwgaGVhZGVycywgcHJvZHVjZXMsIG9ic2VydmUgfSBmcm9tIFwiLi9zcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHNcIjtcclxuXHJcbmV4cG9ydCBsZXQgUGF0aCA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgUGF0aFBhcmFtID0gcGF0aDtcclxuZXhwb3J0IGxldCBCb2R5ID0gYm9keShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeSA9IHF1ZXJ5KG51bGwpO1xyXG5leHBvcnQgbGV0IFF1ZXJ5UGFyYW0gPSBxdWVyeTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtcyA9IHF1ZXJ5KG51bGwpO1xyXG5leHBvcnQgbGV0IE9ic2VydmUgPSBvYnNlcnZlO1xyXG5cclxuLy8gSGVhZGVyc1xyXG5leHBvcnQgbGV0IEhlYWRlcnMgPSBoZWFkZXJzO1xyXG5cclxuLy8gUHJvZHVjZXNcclxuZXhwb3J0IGxldCBQcm9kdWNlcyA9IHByb2R1Y2VzO1xyXG5cclxuLy8gUmVxdWVzdCBtZXRob2RzXHJcbmV4cG9ydCBsZXQgR0VUID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdHZXQnKTtcclxuZXhwb3J0IGxldCBQT1NUID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQb3N0Jyk7XHJcbmV4cG9ydCBsZXQgUFVUID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQdXQnKTtcclxuZXhwb3J0IGxldCBERUxFVEUgPSBIdHRwUmVzdFV0aWxzLnJlcXVlc3RNZXRob2QoJ0RlbGV0ZScpO1xyXG5leHBvcnQgbGV0IE9QVElPTlMgPSBIdHRwUmVzdFV0aWxzLnJlcXVlc3RNZXRob2QoJ09wdGlvbnMnKTtcclxuZXhwb3J0IGxldCBIRUFEID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdIZWFkJyk7XHJcbmV4cG9ydCBsZXQgUEFUQ0ggPSBIdHRwUmVzdFV0aWxzLnJlcXVlc3RNZXRob2QoJ1BhdGNoJyk7Il0sIm5hbWVzIjpbIkh0dHBQYXJhbXMiLCJIdHRwSGVhZGVycyIsIk5nTW9kdWxlIiwiSHR0cENsaWVudE1vZHVsZSIsIkFQUF9JTklUSUFMSVpFUiIsIkh0dHBDbGllbnQiLCJodHRwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFjQSxvQkFpR3VCLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSTtZQUNBLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUk7Z0JBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FD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 \ No newline at end of file diff --git a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js.map b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js.map deleted file mode 100644 index 54790e5..0000000 --- a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ngx-http-annotations.umd.js.map","sources":[null,"ng://ngx-http-annotations/src/ngx-http-annotations.utils.ts","ng://ngx-http-annotations/src/ngx-http-annotations.module.ts","ng://ngx-http-annotations/public_api.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from \"@angular/common/http\";\r\nimport { HttpObserve } from \"@angular/common/http/src/client\";\r\n\r\ninterface httpRequestOptions {\r\n body?: any;\r\n headers?: HttpHeaders;\r\n params?: HttpParams;\r\n observe?: HttpObserve;\r\n reportProgress?: boolean;\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n withCredentials?: boolean;\r\n}\r\n\r\n\r\nexport function observe(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]);\r\n}\r\nexport function path(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]);\r\n}\r\nexport function body(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]);\r\n}\r\nexport function query(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]);\r\n}\r\nexport function headers(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]);\r\n}\r\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]);\r\n}\r\n\r\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\r\ninterface ExtraEntityData {\r\n keyName: string;\r\n index: number;\r\n}\r\nconst RESOURSE_METADATA_ROOT = 'resources_metadata';\r\n// @dynamic\r\nexport class HttpRestUtils {\r\n\r\n public static http: HttpClient = null;\r\n\r\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\r\n switch (args.length) {\r\n case 1: {\r\n const [target] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]);\r\n break;\r\n }\r\n case 2: {\r\n const [target, key] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'props', annotations, target ]);\r\n break;\r\n }\r\n case 3:\r\n if (typeof args[2] === 'number') {\r\n const [target, keyName, index] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'params', annotations, target, { keyName, index } ]);\r\n break;\r\n } else {\r\n const [target, keyName, descriptor] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'methods', annotations, target, { keyName } ]);\r\n break;\r\n }\r\n default:\r\n throw new Error('Decorators are not valid here!');\r\n }\r\n }\r\n\r\n /**\r\n * Set up metadada\r\n * @param type Entity type\r\n * @param value Value of metadata\r\n * @param target Prototype of current object\r\n * @param metaName Decorator name\r\n * @param entityData Entity extra data\r\n */\r\n private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) {\r\n target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {};\r\n target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {};\r\n\r\n const rootMetadata = target[RESOURSE_METADATA_ROOT];\r\n const metadataObj = target[RESOURSE_METADATA_ROOT][entityType];\r\n if (entityData && entityData.keyName) {\r\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\r\n }\r\n if (entityData && entityData.index != null) {\r\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\r\n }\r\n switch (entityType) {\r\n case 'class': metadataObj[metaName] = value; break;\r\n case 'props': metadataObj[metaName] = value; break;\r\n case 'methods': metadataObj[entityData.keyName][metaName] = value; break;\r\n case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index;\r\n }\r\n\r\n target[RESOURSE_METADATA_ROOT][entityType] = metadataObj;\r\n }\r\n\r\n public static requestMethod(requestMethodName: string): any {\r\n // @dynamic\r\n return (target: any, key: string, descriptor: any) => {\r\n descriptor.value = function (...args: any[]) {\r\n const url = HttpRestUtils.collectUrl(target, key, args);\r\n const body = HttpRestUtils.collectBody(target, key, args);\r\n const search = HttpRestUtils.collectQueryParams(target, key, args);\r\n const headers = HttpRestUtils.collectHeaders(target, key, args);\r\n const producesType = HttpRestUtils.produce(target, key, args);\r\n const observe = HttpRestUtils.getObserve(target, key, args)\r\n const params: httpRequestOptions = {\r\n body,\r\n params: search,\r\n headers,\r\n responseType: producesType,\r\n observe\r\n };\r\n return HttpRestUtils.http.request(requestMethodName, url, params);\r\n };\r\n };\r\n }\r\n\r\n private static getObserve(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].observe;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static produce(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].produces;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static collectUrl(target: any, methodName: string, args: any[]) {\r\n const baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class\r\n ? target[RESOURSE_METADATA_ROOT].class.path\r\n : '';\r\n const methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].path\r\n : '';\r\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\r\n const methodUrlWithParams\r\n = [baseUrl, methodUrl]\r\n .filter(path => path)\r\n .join('/')\r\n .split('/')\r\n .map(path => {\r\n if ( path[0] === ':') {\r\n const paramName = path.substring(1);\r\n const index = target[RESOURSE_METADATA_ROOT].params\r\n && target[RESOURSE_METADATA_ROOT].params[methodName]\r\n && target[RESOURSE_METADATA_ROOT].params[methodName].path\r\n ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName]\r\n : '';\r\n return args[index];\r\n }\r\n return path;\r\n })\r\n .filter(path => path)\r\n .join('/');\r\n\r\n if (!isRelativePath) {\r\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\r\n return `${ absolutePrefix }//${ paths.join('/') }`;\r\n }\r\n return `/${ methodUrlWithParams }`;\r\n }\r\n\r\n private static collectBody(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].body) return undefined;\r\n\r\n const index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default;\r\n return args[index];\r\n }\r\n\r\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined;\r\n\r\n let queryParams = new HttpParams();\r\n const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default;\r\n const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query;\r\n const queryParamsCollection = queryParamsObjectIndex != undefined\r\n ? args[queryParamsObjectIndex]\r\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\r\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\r\n );\r\n\r\n Object.keys(queryParamsCollection)\r\n .forEach(paramName => {\r\n let value = queryParamsCollection[paramName];\r\n if (!Array.isArray(value)) { value = [ value ]; }\r\n value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam));\r\n });\r\n return queryParams;\r\n }\r\n\r\n private static collectHeaders(target: any, methodName: string, args: any[]) {\r\n const classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {};\r\n const methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers\r\n : {};\r\n const mergedHeaders = Object.assign({}, classHeaders, methodHeaders);\r\n\r\n const httpHeaders = new HttpHeaders();\r\n for (const header in mergedHeaders) {\r\n httpHeaders.append(header, mergedHeaders[header]);\r\n }\r\n return httpHeaders;\r\n }\r\n}","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpRestUtils } from \"./ngx-http-annotations.utils\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n// @dynamic\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [\r\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] }\r\n ]\r\n})\r\nexport class HttpRestModule {\r\n}\r\n\r\nexport function onAppInit(http: HttpClient) {\r\n return function () {\r\n HttpRestUtils.http = http;\r\n }\r\n}","export * from './src/ngx-http-annotations.module';\r\nexport * from './src/ngx-http-annotations.utils';\r\nimport { Response } from '@angular/http';\r\nimport { HttpRestUtils, path, body, query, headers, produces, observe } from \"./src/ngx-http-annotations.utils\";\r\n\r\nexport let Path = path;\r\nexport let PathParam = path;\r\nexport let Body = body(null);\r\nexport let Query = query(null);\r\nexport let QueryParam = query;\r\nexport let QueryParams = query(null);\r\nexport let Observe = observe;\r\n\r\n// Headers\r\nexport let Headers = headers;\r\n\r\n// Produces\r\nexport let Produces = produces;\r\n\r\n// Request methods\r\nexport let GET = HttpRestUtils.requestMethod('Get');\r\nexport let POST = HttpRestUtils.requestMethod('Post');\r\nexport let PUT = HttpRestUtils.requestMethod('Put');\r\nexport let DELETE = HttpRestUtils.requestMethod('Delete');\r\nexport let OPTIONS = HttpRestUtils.requestMethod('Options');\r\nexport let HEAD = HttpRestUtils.requestMethod('Head');\r\nexport let PATCH = HttpRestUtils.requestMethod('Patch');"],"names":["HttpParams","HttpHeaders","NgModule","HttpClientModule","APP_INITIALIZER","HttpClient","http"],"mappings":"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"} diff --git a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js b/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js deleted file mode 100644 index 0b2e698..0000000 --- a/dist/ngx-http-annotations/bundles/ngx-http-annotations.umd.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common/http"),require("@angular/core")):"function"==typeof define&&define.amd?define("ngx-http-annotations",["exports","@angular/common/http","@angular/core"],t):t(e["ngx-http-annotations"]={},e.ng.common.http,e.ng.core)}(this,function(e,c,t){"use strict";function p(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var a,n,o=r.call(e),u=[];try{for(;(void 0===t||0= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from \"@angular/common/http\";\r\nimport { HttpObserve } from \"@angular/common/http/src/client\";\r\n\r\ninterface httpRequestOptions {\r\n body?: any;\r\n headers?: HttpHeaders;\r\n params?: HttpParams;\r\n observe?: HttpObserve;\r\n reportProgress?: boolean;\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n withCredentials?: boolean;\r\n}\r\n\r\n\r\nexport function observe(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]);\r\n}\r\nexport function path(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]);\r\n}\r\nexport function body(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]);\r\n}\r\nexport function query(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]);\r\n}\r\nexport function headers(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]);\r\n}\r\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]);\r\n}\r\n\r\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\r\ninterface ExtraEntityData {\r\n keyName: string;\r\n index: number;\r\n}\r\nconst RESOURSE_METADATA_ROOT = 'resources_metadata';\r\n// @dynamic\r\nexport class HttpRestUtils {\r\n\r\n public static http: HttpClient = null;\r\n\r\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\r\n switch (args.length) {\r\n case 1: {\r\n const [target] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]);\r\n break;\r\n }\r\n case 2: {\r\n const [target, key] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'props', annotations, target ]);\r\n break;\r\n }\r\n case 3:\r\n if (typeof args[2] === 'number') {\r\n const [target, keyName, index] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'params', annotations, target, { keyName, index } ]);\r\n break;\r\n } else {\r\n const [target, keyName, descriptor] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'methods', annotations, target, { keyName } ]);\r\n break;\r\n }\r\n default:\r\n throw new Error('Decorators are not valid here!');\r\n }\r\n }\r\n\r\n /**\r\n * Set up metadada\r\n * @param type Entity type\r\n * @param value Value of metadata\r\n * @param target Prototype of current object\r\n * @param metaName Decorator name\r\n * @param entityData Entity extra data\r\n */\r\n private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) {\r\n target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {};\r\n target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {};\r\n\r\n const rootMetadata = target[RESOURSE_METADATA_ROOT];\r\n const metadataObj = target[RESOURSE_METADATA_ROOT][entityType];\r\n if (entityData && entityData.keyName) {\r\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\r\n }\r\n if (entityData && entityData.index != null) {\r\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\r\n }\r\n switch (entityType) {\r\n case 'class': metadataObj[metaName] = value; break;\r\n case 'props': metadataObj[metaName] = value; break;\r\n case 'methods': metadataObj[entityData.keyName][metaName] = value; break;\r\n case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index;\r\n }\r\n\r\n target[RESOURSE_METADATA_ROOT][entityType] = metadataObj;\r\n }\r\n\r\n public static requestMethod(requestMethodName: string): any {\r\n // @dynamic\r\n return (target: any, key: string, descriptor: any) => {\r\n descriptor.value = function (...args: any[]) {\r\n const url = HttpRestUtils.collectUrl(target, key, args);\r\n const body = HttpRestUtils.collectBody(target, key, args);\r\n const search = HttpRestUtils.collectQueryParams(target, key, args);\r\n const headers = HttpRestUtils.collectHeaders(target, key, args);\r\n const producesType = HttpRestUtils.produce(target, key, args);\r\n const observe = HttpRestUtils.getObserve(target, key, args)\r\n const params: httpRequestOptions = {\r\n body,\r\n params: search,\r\n headers,\r\n responseType: producesType,\r\n observe\r\n };\r\n return HttpRestUtils.http.request(requestMethodName, url, params);\r\n };\r\n };\r\n }\r\n\r\n private static getObserve(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].observe;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static produce(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].produces;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static collectUrl(target: any, methodName: string, args: any[]) {\r\n const baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class\r\n ? target[RESOURSE_METADATA_ROOT].class.path\r\n : '';\r\n const methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].path\r\n : '';\r\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\r\n const methodUrlWithParams\r\n = [baseUrl, methodUrl]\r\n .filter(path => path)\r\n .join('/')\r\n .split('/')\r\n .map(path => {\r\n if ( path[0] === ':') {\r\n const paramName = path.substring(1);\r\n const index = target[RESOURSE_METADATA_ROOT].params\r\n && target[RESOURSE_METADATA_ROOT].params[methodName]\r\n && target[RESOURSE_METADATA_ROOT].params[methodName].path\r\n ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName]\r\n : '';\r\n return args[index];\r\n }\r\n return path;\r\n })\r\n .filter(path => path)\r\n .join('/');\r\n\r\n if (!isRelativePath) {\r\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\r\n return `${ absolutePrefix }//${ paths.join('/') }`;\r\n }\r\n return `/${ methodUrlWithParams }`;\r\n }\r\n\r\n private static collectBody(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].body) return undefined;\r\n\r\n const index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default;\r\n return args[index];\r\n }\r\n\r\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined;\r\n\r\n let queryParams = new HttpParams();\r\n const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default;\r\n const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query;\r\n const queryParamsCollection = queryParamsObjectIndex != undefined\r\n ? args[queryParamsObjectIndex]\r\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\r\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\r\n );\r\n\r\n Object.keys(queryParamsCollection)\r\n .forEach(paramName => {\r\n let value = queryParamsCollection[paramName];\r\n if (!Array.isArray(value)) { value = [ value ]; }\r\n value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam));\r\n });\r\n return queryParams;\r\n }\r\n\r\n private static collectHeaders(target: any, methodName: string, args: any[]) {\r\n const classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {};\r\n const methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers\r\n : {};\r\n const mergedHeaders = Object.assign({}, classHeaders, methodHeaders);\r\n\r\n const httpHeaders = new HttpHeaders();\r\n for (const header in mergedHeaders) {\r\n httpHeaders.append(header, mergedHeaders[header]);\r\n }\r\n return httpHeaders;\r\n }\r\n}","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpRestUtils } from \"./ngx-http-annotations.utils\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n// @dynamic\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [\r\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] }\r\n ]\r\n})\r\nexport class HttpRestModule {\r\n}\r\n\r\nexport function onAppInit(http: HttpClient) {\r\n return function () {\r\n HttpRestUtils.http = http;\r\n }\r\n}","export * from './src/ngx-http-annotations.module';\r\nexport * from './src/ngx-http-annotations.utils';\r\nimport { Response } from '@angular/http';\r\nimport { HttpRestUtils, path, body, query, headers, produces, observe } from \"./src/ngx-http-annotations.utils\";\r\n\r\nexport let Path = path;\r\nexport let PathParam = path;\r\nexport let Body = body(null);\r\nexport let Query = query(null);\r\nexport let QueryParam = query;\r\nexport let QueryParams = query(null);\r\nexport let Observe = observe;\r\n\r\n// Headers\r\nexport let Headers = headers;\r\n\r\n// Produces\r\nexport let Produces = produces;\r\n\r\n// Request methods\r\nexport let GET = HttpRestUtils.requestMethod('Get');\r\nexport let POST = HttpRestUtils.requestMethod('Post');\r\nexport let PUT = HttpRestUtils.requestMethod('Put');\r\nexport let DELETE = HttpRestUtils.requestMethod('Delete');\r\nexport let OPTIONS = HttpRestUtils.requestMethod('Options');\r\nexport let HEAD = HttpRestUtils.requestMethod('Head');\r\nexport let PATCH = HttpRestUtils.requestMethod('Patch');"]} \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm2015/ngx-http-annotations.js b/dist/ngx-http-annotations/esm2015/ngx-http-annotations.js deleted file mode 100644 index d7b7e6b..0000000 --- a/dist/ngx-http-annotations/esm2015/ngx-http-annotations.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -/** - * Generated bundle index. Do not edit. - */ -export { Path, PathParam, Body, Query, QueryParam, QueryParams, Observe, Headers, Produces, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, HttpRestModule, onAppInit, observe, path, body, query, headers, produces, HttpRestUtils } from './public_api'; - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1hbm5vdGF0aW9ucy8iLCJzb3VyY2VzIjpbIm5neC1odHRwLWFubm90YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx5T0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm2015/public_api.js b/dist/ngx-http-annotations/esm2015/public_api.js deleted file mode 100644 index f8d2454..0000000 --- a/dist/ngx-http-annotations/esm2015/public_api.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -export { HttpRestModule, onAppInit } from './src/ngx-http-annotations.module'; -export { observe, path, body, query, headers, produces, HttpRestUtils } from './src/ngx-http-annotations.utils'; -import { HttpRestUtils, path, body, query, headers, produces, observe } from "./src/ngx-http-annotations.utils"; -export let /** @type {?} */ Path = path; -export let /** @type {?} */ PathParam = path; -export let /** @type {?} */ Body = body(null); -export let /** @type {?} */ Query = query(null); -export let /** @type {?} */ QueryParam = query; -export let /** @type {?} */ QueryParams = query(null); -export let /** @type {?} */ Observe = observe; -// Headers -export let /** @type {?} */ Headers = headers; -// Produces -export let /** @type {?} */ Produces = produces; -// Request methods -export let /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); -export let /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); -export let /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); -export let /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); -export let /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); -export let /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); -export let /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1odHRwLWFubm90YXRpb25zLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMENBQWMsbUNBQW1DLENBQUM7QUFDbEQsNkVBQWMsa0NBQWtDLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhILE1BQU0sQ0FBQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQU0sQ0FBQyxxQkFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzVCLE1BQU0sQ0FBQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxxQkFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxxQkFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE1BQU0sQ0FBQyxxQkFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxxQkFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUc3QixNQUFNLENBQUMscUJBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFHN0IsTUFBTSxDQUFDLHFCQUFJLFFBQVEsR0FBRyxRQUFRLENBQUM7O0FBRy9CLE1BQU0sQ0FBQyxxQkFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxNQUFNLENBQUMscUJBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEQsTUFBTSxDQUFDLHFCQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELE1BQU0sQ0FBQyxxQkFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxNQUFNLENBQUMscUJBQUksT0FBTyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUQsTUFBTSxDQUFDLHFCQUFJLElBQUksR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxxQkFBSSxLQUFLLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzJztcclxuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscywgcGF0aCwgYm9keSwgcXVlcnksIGhlYWRlcnMsIHByb2R1Y2VzLCBvYnNlcnZlIH0gZnJvbSBcIi4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgbGV0IFBhdGggPSBwYXRoO1xyXG5leHBvcnQgbGV0IFBhdGhQYXJhbSA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgQm9keSA9IGJvZHkobnVsbCk7XHJcbmV4cG9ydCBsZXQgUXVlcnkgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtID0gcXVlcnk7XHJcbmV4cG9ydCBsZXQgUXVlcnlQYXJhbXMgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBPYnNlcnZlID0gb2JzZXJ2ZTtcclxuXHJcbi8vIEhlYWRlcnNcclxuZXhwb3J0IGxldCBIZWFkZXJzID0gaGVhZGVycztcclxuXHJcbi8vIFByb2R1Y2VzXHJcbmV4cG9ydCBsZXQgUHJvZHVjZXMgPSBwcm9kdWNlcztcclxuXHJcbi8vIFJlcXVlc3QgbWV0aG9kc1xyXG5leHBvcnQgbGV0IEdFVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnR2V0Jyk7XHJcbmV4cG9ydCBsZXQgUE9TVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUG9zdCcpO1xyXG5leHBvcnQgbGV0IFBVVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUHV0Jyk7XHJcbmV4cG9ydCBsZXQgREVMRVRFID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdEZWxldGUnKTtcclxuZXhwb3J0IGxldCBPUFRJT05TID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdPcHRpb25zJyk7XHJcbmV4cG9ydCBsZXQgSEVBRCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnSGVhZCcpO1xyXG5leHBvcnQgbGV0IFBBVENIID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQYXRjaCcpOyJdfQ== \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.module.js b/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.module.js deleted file mode 100644 index febfc10..0000000 --- a/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.module.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -import { NgModule, APP_INITIALIZER } from '@angular/core'; -import { HttpRestUtils } from "./ngx-http-annotations.utils"; -import { HttpClient } from "@angular/common/http"; -import { HttpClientModule } from "@angular/common/http"; -export class HttpRestModule { -} -HttpRestModule.decorators = [ - { type: NgModule, args: [{ - imports: [HttpClientModule], - providers: [ - { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } - ] - },] }, -]; -function HttpRestModule_tsickle_Closure_declarations() { - /** @type {!Array<{type: !Function, args: (undefined|!Array)}>} */ - HttpRestModule.decorators; - /** - * @nocollapse - * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array)}>)})>} - */ - HttpRestModule.ctorParameters; -} -/** - * @param {?} http - * @return {?} - */ -export function onAppInit(http) { - return function () { - HttpRestUtils.http = http; - }; -} - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvIiwic291cmNlcyI6WyJzcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUXhELE1BQU07OztZQU5MLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0IsU0FBUyxFQUFFO29CQUNULEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUU7aUJBQ3JGO2FBQ0o7Ozs7Ozs7Ozs7Ozs7OztBQUlELE1BQU0sb0JBQW9CLElBQWdCO0lBQ3hDLE1BQU0sQ0FBQztRQUNMLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0tBQzNCLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBBUFBfSU5JVElBTElaRVIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscyB9IGZyb20gXCIuL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG4vLyBAZHluYW1pY1xyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGVdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgIHsgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLCB1c2VGYWN0b3J5OiBvbkFwcEluaXQsIG11bHRpOiB0cnVlLCBkZXBzOiBbSHR0cENsaWVudF0gfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cFJlc3RNb2R1bGUge1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb25BcHBJbml0KGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgSHR0cFJlc3RVdGlscy5odHRwID0gaHR0cDtcclxuICB9XHJcbn0iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.utils.js b/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.utils.js deleted file mode 100644 index 8a99cad..0000000 --- a/dist/ngx-http-annotations/esm2015/src/ngx-http-annotations.utils.js +++ /dev/null @@ -1,302 +0,0 @@ -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -import { HttpParams, HttpHeaders } from "@angular/common/http"; -/** - * @record - */ -function httpRequestOptions() { } -function httpRequestOptions_tsickle_Closure_declarations() { - /** @type {?|undefined} */ - httpRequestOptions.prototype.body; - /** @type {?|undefined} */ - httpRequestOptions.prototype.headers; - /** @type {?|undefined} */ - httpRequestOptions.prototype.params; - /** @type {?|undefined} */ - httpRequestOptions.prototype.observe; - /** @type {?|undefined} */ - httpRequestOptions.prototype.reportProgress; - /** @type {?|undefined} */ - httpRequestOptions.prototype.responseType; - /** @type {?|undefined} */ - httpRequestOptions.prototype.withCredentials; -} -/** - * @param {?} annotations - * @return {?} - */ -export function observe(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -export function path(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -export function body(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -export function query(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -export function headers(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -export function produces(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]); -} -/** - * @record - */ -function ExtraEntityData() { } -function ExtraEntityData_tsickle_Closure_declarations() { - /** @type {?} */ - ExtraEntityData.prototype.keyName; - /** @type {?} */ - ExtraEntityData.prototype.index; -} -const /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; -export class HttpRestUtils { - /** - * @param {?} decoratorName - * @param {?} annotations - * @param {...?} args - * @return {?} - */ - static decorate(decoratorName, annotations, ...args) { - switch (args.length) { - case 1: { - const [target] = args; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); - break; - } - case 2: { - const [target, key] = args; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); - break; - } - case 3: - if (typeof args[2] === 'number') { - const [target, keyName, index] = args; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName, index }]); - break; - } - else { - const [target, keyName, descriptor] = args; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName }]); - break; - } - default: - throw new Error('Decorators are not valid here!'); - } - } - /** - * Set up metadada - * @param {?} metaName Decorator name - * @param {?} entityType - * @param {?} value Value of metadata - * @param {?} target Prototype of current object - * @param {?=} entityData Entity extra data - * @return {?} - */ - static constructMetadata(metaName, entityType, value, target, entityData) { - target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; - target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; - const /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; - const /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; - if (entityData && entityData.keyName) { - metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; - } - if (entityData && entityData.index != null) { - metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; - } - switch (entityType) { - case 'class': - metadataObj[metaName] = value; - break; - case 'props': - metadataObj[metaName] = value; - break; - case 'methods': - metadataObj[entityData.keyName][metaName] = value; - break; - case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; - } - target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; - } - /** - * @param {?} requestMethodName - * @return {?} - */ - static requestMethod(requestMethodName) { - // @dynamic - return (target, key, descriptor) => { - descriptor.value = function (...args) { - const /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); - const /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); - const /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); - const /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); - const /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); - const /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); - const /** @type {?} */ params = { - body, - params: search, - headers, - responseType: producesType, - observe - }; - return HttpRestUtils.http.request(requestMethodName, url, params); - }; - }; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static getObserve(target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; - } - return undefined; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static produce(target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; - } - return undefined; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static collectUrl(target, methodName, args) { - const /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class - ? target[RESOURSE_METADATA_ROOT].class.path - : ''; - const /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].path - : ''; - const /** @type {?} */ isRelativePath = `${baseUrl}${methodUrl}`[0] === '/'; - const /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] - .filter(path => path) - .join('/') - .split('/') - .map(path => { - if (path[0] === ':') { - const /** @type {?} */ paramName = path.substring(1); - const /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params - && target[RESOURSE_METADATA_ROOT].params[methodName] - && target[RESOURSE_METADATA_ROOT].params[methodName].path - ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] - : ''; - return args[index]; - } - return path; - }) - .filter(path => path) - .join('/'); - if (!isRelativePath) { - const [absolutePrefix, ...paths] = methodUrlWithParams.split('/'); - return `${absolutePrefix}//${paths.join('/')}`; - } - return `/${methodUrlWithParams}`; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static collectBody(target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].body) - return undefined; - const /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; - return args[index]; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static collectQueryParams(target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].query) - return undefined; - let /** @type {?} */ queryParams = new HttpParams(); - const /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; - const /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; - const /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined - ? args[queryParamsObjectIndex] - : Object.keys(queryMetadata).reduce((mergedObj, paramName) => Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}); - Object.keys(queryParamsCollection) - .forEach(paramName => { - let /** @type {?} */ value = queryParamsCollection[paramName]; - if (!Array.isArray(value)) { - value = [value]; - } - value.forEach((curParam) => queryParams = queryParams.append(paramName, curParam)); - }); - return queryParams; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static collectHeaders(target, methodName, args) { - const /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; - const /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers - : {}; - const /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); - const /** @type {?} */ httpHeaders = new HttpHeaders(); - for (const /** @type {?} */ header in mergedHeaders) { - httpHeaders.append(header, mergedHeaders[header]); - } - return httpHeaders; - } -} -HttpRestUtils.http = null; -function HttpRestUtils_tsickle_Closure_declarations() { - /** @type {?} */ - HttpRestUtils.http; -} - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1hbm5vdGF0aW9ucy8iLCJzb3VyY2VzIjpbInNyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWMzRSxNQUFNLGtCQUFrQixXQUFnQjtJQUN0QyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDbEc7Ozs7O0FBQ0QsTUFBTSxlQUFlLFdBQWdCO0lBQ25DLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztDQUMvRjs7Ozs7QUFDRCxNQUFNLGVBQWUsV0FBZ0I7SUFDbkMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQy9GOzs7OztBQUNELE1BQU0sZ0JBQWdCLFdBQWdCO0lBQ3BDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENB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QUFXLEVBQUUsVUFBa0IsRUFBRSxJQUFXO1FBQ3hFLHVCQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5Ryx1QkFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDOUYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPO1lBQzVELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekIsdUJBQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVyRSx1QkFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUN0QyxHQUFHLENBQUMsQ0FBQyx1QkFBTSxNQUFNLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNuQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNuRDtRQUNELE1BQU0sQ0FBQyxXQUFXLENBQUM7OztxQkEvS1ksSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBIdHRwT2JzZXJ2ZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cC9zcmMvY2xpZW50XCI7XHJcblxyXG5pbnRlcmZhY2UgaHR0cFJlcXVlc3RPcHRpb25zIHtcclxuICBib2R5PzogYW55O1xyXG4gIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICBwYXJhbXM/OiBIdHRwUGFyYW1zO1xyXG4gIG9ic2VydmU/OiBIdHRwT2JzZXJ2ZTtcclxuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmUoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydvYnNlcnZlJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gcGF0aChhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3BhdGgnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBib2R5KGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnYm9keScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5KGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsncXVlcnknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBoZWFkZXJzKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnaGVhZGVycycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y2VzKGFubm90YXRpb25zOiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnKSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3Byb2R1Y2VzJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5cclxudHlwZSBSZXNvdXJjZU1ldGFkYXRhVHlwZSA9ICdjbGFzcyd8J21ldGhvZHMnfCdwYXJhbXMnfCdwcm9wcyc7XHJcbmludGVyZmFjZSBFeHRyYUVudGl0eURhdGEge1xyXG4gIGtleU5hbWU6IHN0cmluZztcclxuICBpbmRleDogbnVtYmVyO1xyXG59XHJcbmNvbnN0IFJFU09VUlNFX01FVEFEQVRBX1JPT1QgPSAncmVzb3VyY2VzX21ldGFkYXRhJztcclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXN0VXRpbHMge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlY29yYXRlKGRlY29yYXRvck5hbWU6IHN0cmluZywgYW5ub3RhdGlvbnM6IGFueSwgLi4uYXJnczogYW55W10pIHtcclxuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDE6IHtcclxuICAgICAgICAgIGNvbnN0IFt0YXJnZXRdID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAnY2xhc3MnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LnByb3RvdHlwZSBdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgIGNvbnN0IFt0YXJnZXQsIGtleV0gPSBhcmdzO1xyXG4gICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwcm9wcycsIGFubm90YXRpb25zLCB0YXJnZXQgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzJdID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXlOYW1lLCBpbmRleF0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ3BhcmFtcycsIGFubm90YXRpb25zLCB0YXJnZXQsIHsga2V5TmFtZSwgaW5kZXggfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXlOYW1lLCBkZXNjcmlwdG9yXSA9IGFyZ3M7XHJcbiAgICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAnbWV0aG9kcycsIGFubm90YXRpb25zLCB0YXJnZXQsIHsga2V5TmFtZSB9IF0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZSEnKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHVwIG1ldGFkYWRhXHJcbiAgICogQHBhcmFtIHR5cGUgRW50aXR5IHR5cGVcclxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgb2YgbWV0YWRhdGFcclxuICAgKiBAcGFyYW0gdGFyZ2V0IFByb3RvdHlwZSBvZiBjdXJyZW50IG9iamVjdFxyXG4gICAqIEBwYXJhbSBtZXRhTmFtZSBEZWNvcmF0b3IgbmFtZVxyXG4gICAqIEBwYXJhbSBlbnRpdHlEYXRhIEVudGl0eSBleHRyYSBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29uc3RydWN0TWV0YWRhdGEobWV0YU5hbWU6IHN0cmluZywgZW50aXR5VHlwZTogUmVzb3VyY2VNZXRhZGF0YVR5cGUsIHZhbHVlOiBhbnksIHRhcmdldDogYW55LCBlbnRpdHlEYXRhPzogRXh0cmFFbnRpdHlEYXRhKSB7XHJcbiAgICB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gfHwge307XHJcbiAgICB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV0gPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV0gfHwge307XHJcblxyXG4gICAgY29uc3Qgcm9vdE1ldGFkYXRhID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdO1xyXG4gICAgY29uc3QgbWV0YWRhdGFPYmogPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF1bZW50aXR5VHlwZV07XHJcbiAgICBpZiAoZW50aXR5RGF0YSAmJiBlbnRpdHlEYXRhLmtleU5hbWUpIHtcclxuICAgICAgbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXSA9IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBpZiAoZW50aXR5RGF0YSAmJiBlbnRpdHlEYXRhLmluZGV4ICE9IG51bGwpIHtcclxuICAgICAgbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdW21ldGFOYW1lXSB8fCB7fTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoZW50aXR5VHlwZSkge1xyXG4gICAgICBjYXNlICdjbGFzcyc6IG1ldGFkYXRhT2JqW21ldGFOYW1lXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAncHJvcHMnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21ldGhvZHMnOiBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdW21ldGFOYW1lXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAncGFyYW1zJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV1bdmFsdWUgfHwgJ2RlZmF1bHQnXSA9IGVudGl0eURhdGEuaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gbWV0YWRhdGFPYmo7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlcXVlc3RNZXRob2QocmVxdWVzdE1ldGhvZE5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgIC8vIEBkeW5hbWljXHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogYW55KSA9PiB7XHJcbiAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RVcmwodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RCb2R5KHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBzZWFyY2ggPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RRdWVyeVBhcmFtcyh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IEh0dHBSZXN0VXRpbHMuY29sbGVjdEhlYWRlcnModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y2VzVHlwZSA9IEh0dHBSZXN0VXRpbHMucHJvZHVjZSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZSA9IEh0dHBSZXN0VXRpbHMuZ2V0T2JzZXJ2ZSh0YXJnZXQsIGtleSwgYXJncylcclxuICAgICAgICBjb25zdCBwYXJhbXM6IGh0dHBSZXF1ZXN0T3B0aW9ucyA9IHtcclxuICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICBwYXJhbXM6IHNlYXJjaCxcclxuICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICByZXNwb25zZVR5cGU6IHByb2R1Y2VzVHlwZSxcclxuICAgICAgICAgIG9ic2VydmVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBIdHRwUmVzdFV0aWxzLmh0dHAucmVxdWVzdChyZXF1ZXN0TWV0aG9kTmFtZSwgdXJsLCBwYXJhbXMpO1xyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldE9ic2VydmUodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICh0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1xyXG4gICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXSkge1xyXG4gICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLm9ic2VydmU7XHJcbiAgICAgfVxyXG4gICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9kdWNlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXSkge1xyXG4gICAgICByZXR1cm4gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0ucHJvZHVjZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFVybCh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgYmFzZVVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXSAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3NcclxuICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MucGF0aFxyXG4gICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgbWV0aG9kVXJsID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHMgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgaXNSZWxhdGl2ZVBhdGggPSBgJHtiYXNlVXJsfSR7bWV0aG9kVXJsfWBbMF0gPT09ICcvJztcclxuICAgIGNvbnN0IG1ldGhvZFVybFdpdGhQYXJhbXNcclxuICAgICAgPSBbYmFzZVVybCwgbWV0aG9kVXJsXVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJylcclxuICAgICAgICAuc3BsaXQoJy8nKVxyXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XHJcbiAgICAgICAgICBpZiAoIHBhdGhbMF0gPT09ICc6Jykge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXRoLnN1YnN0cmluZygxKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucGF0aFtwYXJhbU5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgICAgIHJldHVybiBhcmdzW2luZGV4XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbHRlcihwYXRoID0+IHBhdGgpXHJcbiAgICAgICAgLmpvaW4oJy8nKTtcclxuXHJcbiAgICBpZiAoIWlzUmVsYXRpdmVQYXRoKSB7XHJcbiAgICAgIGNvbnN0IFthYnNvbHV0ZVByZWZpeCwgLi4ucGF0aHNdID0gbWV0aG9kVXJsV2l0aFBhcmFtcy5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gYCR7IGFic29sdXRlUHJlZml4IH0vLyR7IHBhdGhzLmpvaW4oJy8nKSB9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBgLyR7IG1ldGhvZFVybFdpdGhQYXJhbXMgfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0Qm9keSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKCF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5ib2R5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5ib2R5LmRlZmF1bHQ7XHJcbiAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnkpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zT2JqZWN0SW5kZXggPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5LmRlZmF1bHQ7XHJcbiAgICBjb25zdCBxdWVyeU1ldGFkYXRhID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeTtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zQ29sbGVjdGlvbiA9IHF1ZXJ5UGFyYW1zT2JqZWN0SW5kZXggIT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhcmdzW3F1ZXJ5UGFyYW1zT2JqZWN0SW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBPYmplY3Qua2V5cyhxdWVyeU1ldGFkYXRhKS5yZWR1Y2UoKG1lcmdlZE9iaiwgcGFyYW1OYW1lKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihtZXJnZWRPYmosIHsgW3BhcmFtTmFtZV06IGFyZ3NbcXVlcnlNZXRhZGF0YVtwYXJhbU5hbWVdXSB9KSwge31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zQ29sbGVjdGlvbilcclxuICAgICAgLmZvckVhY2gocGFyYW1OYW1lID0+IHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBxdWVyeVBhcmFtc0NvbGxlY3Rpb25bcGFyYW1OYW1lXTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7IHZhbHVlID0gWyB2YWx1ZSBdOyB9XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgoY3VyUGFyYW06IGFueSkgPT4gcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcy5hcHBlbmQocGFyYW1OYW1lLCBjdXJQYXJhbSkpO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RIZWFkZXJzKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBjb25zdCBjbGFzc0hlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0uY2xhc3MuaGVhZGVycyA6IHt9O1xyXG4gICAgY29uc3QgbWV0aG9kSGVhZGVycyA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0uaGVhZGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xyXG4gICAgY29uc3QgbWVyZ2VkSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIGNsYXNzSGVhZGVycywgbWV0aG9kSGVhZGVycyk7XHJcblxyXG4gICAgY29uc3QgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGZvciAoY29uc3QgaGVhZGVyIGluIG1lcmdlZEhlYWRlcnMpIHtcclxuICAgICAgaHR0cEhlYWRlcnMuYXBwZW5kKGhlYWRlciwgbWVyZ2VkSGVhZGVyc1toZWFkZXJdKTtcclxuICAgIH1cclxuICAgIHJldHVybiBodHRwSGVhZGVycztcclxuICB9XHJcbn0iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm5/ngx-http-annotations.js b/dist/ngx-http-annotations/esm5/ngx-http-annotations.js deleted file mode 100644 index d7b7e6b..0000000 --- a/dist/ngx-http-annotations/esm5/ngx-http-annotations.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -/** - * Generated bundle index. Do not edit. - */ -export { Path, PathParam, Body, Query, QueryParam, QueryParams, Observe, Headers, Produces, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, HttpRestModule, onAppInit, observe, path, body, query, headers, produces, HttpRestUtils } from './public_api'; - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1hbm5vdGF0aW9ucy8iLCJzb3VyY2VzIjpbIm5neC1odHRwLWFubm90YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx5T0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm5/public_api.js b/dist/ngx-http-annotations/esm5/public_api.js deleted file mode 100644 index a9af003..0000000 --- a/dist/ngx-http-annotations/esm5/public_api.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -export { HttpRestModule, onAppInit } from './src/ngx-http-annotations.module'; -export { observe, path, body, query, headers, produces, HttpRestUtils } from './src/ngx-http-annotations.utils'; -import { HttpRestUtils, path, body, query, headers, produces, observe } from "./src/ngx-http-annotations.utils"; -export var /** @type {?} */ Path = path; -export var /** @type {?} */ PathParam = path; -export var /** @type {?} */ Body = body(null); -export var /** @type {?} */ Query = query(null); -export var /** @type {?} */ QueryParam = query; -export var /** @type {?} */ QueryParams = query(null); -export var /** @type {?} */ Observe = observe; -// Headers -export var /** @type {?} */ Headers = headers; -// Produces -export var /** @type {?} */ Produces = produces; -// Request methods -export var /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); -export var /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); -export var /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); -export var /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); -export var /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); -export var /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); -export var /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1odHRwLWFubm90YXRpb25zLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMENBQWMsbUNBQW1DLENBQUM7QUFDbEQsNkVBQWMsa0NBQWtDLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhILE1BQU0sQ0FBQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQU0sQ0FBQyxxQkFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzVCLE1BQU0sQ0FBQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxxQkFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxxQkFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE1BQU0sQ0FBQyxxQkFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxxQkFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUc3QixNQUFNLENBQUMscUJBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFHN0IsTUFBTSxDQUFDLHFCQUFJLFFBQVEsR0FBRyxRQUFRLENBQUM7O0FBRy9CLE1BQU0sQ0FBQyxxQkFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxNQUFNLENBQUMscUJBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEQsTUFBTSxDQUFDLHFCQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELE1BQU0sQ0FBQyxxQkFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxNQUFNLENBQUMscUJBQUksT0FBTyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUQsTUFBTSxDQUFDLHFCQUFJLElBQUksR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxxQkFBSSxLQUFLLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzJztcclxuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscywgcGF0aCwgYm9keSwgcXVlcnksIGhlYWRlcnMsIHByb2R1Y2VzLCBvYnNlcnZlIH0gZnJvbSBcIi4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgbGV0IFBhdGggPSBwYXRoO1xyXG5leHBvcnQgbGV0IFBhdGhQYXJhbSA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgQm9keSA9IGJvZHkobnVsbCk7XHJcbmV4cG9ydCBsZXQgUXVlcnkgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtID0gcXVlcnk7XHJcbmV4cG9ydCBsZXQgUXVlcnlQYXJhbXMgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBPYnNlcnZlID0gb2JzZXJ2ZTtcclxuXHJcbi8vIEhlYWRlcnNcclxuZXhwb3J0IGxldCBIZWFkZXJzID0gaGVhZGVycztcclxuXHJcbi8vIFByb2R1Y2VzXHJcbmV4cG9ydCBsZXQgUHJvZHVjZXMgPSBwcm9kdWNlcztcclxuXHJcbi8vIFJlcXVlc3QgbWV0aG9kc1xyXG5leHBvcnQgbGV0IEdFVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnR2V0Jyk7XHJcbmV4cG9ydCBsZXQgUE9TVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUG9zdCcpO1xyXG5leHBvcnQgbGV0IFBVVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUHV0Jyk7XHJcbmV4cG9ydCBsZXQgREVMRVRFID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdEZWxldGUnKTtcclxuZXhwb3J0IGxldCBPUFRJT05TID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdPcHRpb25zJyk7XHJcbmV4cG9ydCBsZXQgSEVBRCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnSGVhZCcpO1xyXG5leHBvcnQgbGV0IFBBVENIID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQYXRjaCcpOyJdfQ== \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.module.js b/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.module.js deleted file mode 100644 index 144e197..0000000 --- a/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.module.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -import { NgModule, APP_INITIALIZER } from '@angular/core'; -import { HttpRestUtils } from "./ngx-http-annotations.utils"; -import { HttpClient } from "@angular/common/http"; -import { HttpClientModule } from "@angular/common/http"; -var HttpRestModule = /** @class */ (function () { - function HttpRestModule() { - } - HttpRestModule.decorators = [ - { type: NgModule, args: [{ - imports: [HttpClientModule], - providers: [ - { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } - ] - },] }, - ]; - return HttpRestModule; -}()); -export { HttpRestModule }; -function HttpRestModule_tsickle_Closure_declarations() { - /** @type {!Array<{type: !Function, args: (undefined|!Array)}>} */ - HttpRestModule.decorators; - /** - * @nocollapse - * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array)}>)})>} - */ - HttpRestModule.ctorParameters; -} -/** - * @param {?} http - * @return {?} - */ -export function onAppInit(http) { - return function () { - HttpRestUtils.http = http; - }; -} - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvIiwic291cmNlcyI6WyJzcmMvbmd4LWh0dHAtYW5ub3RhdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztnQkFFdkQsUUFBUSxTQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRTtxQkFDckY7aUJBQ0o7O3lCQVZEOztTQVdhLGNBQWM7Ozs7Ozs7Ozs7Ozs7O0FBRzNCLE1BQU0sb0JBQW9CLElBQWdCO0lBQ3hDLE1BQU0sQ0FBQztRQUNMLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0tBQzNCLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBBUFBfSU5JVElBTElaRVIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscyB9IGZyb20gXCIuL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG4vLyBAZHluYW1pY1xyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGVdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgIHsgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLCB1c2VGYWN0b3J5OiBvbkFwcEluaXQsIG11bHRpOiB0cnVlLCBkZXBzOiBbSHR0cENsaWVudF0gfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cFJlc3RNb2R1bGUge1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb25BcHBJbml0KGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgSHR0cFJlc3RVdGlscy5odHRwID0gaHR0cDtcclxuICB9XHJcbn0iXX0= \ No newline at end of file diff --git a/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.utils.js b/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.utils.js deleted file mode 100644 index 6c7f479..0000000 --- a/dist/ngx-http-annotations/esm5/src/ngx-http-annotations.utils.js +++ /dev/null @@ -1,415 +0,0 @@ -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -import * as tslib_1 from "tslib"; -import { HttpParams, HttpHeaders } from "@angular/common/http"; -/** - * @record - */ -function httpRequestOptions() { } -function httpRequestOptions_tsickle_Closure_declarations() { - /** @type {?|undefined} */ - httpRequestOptions.prototype.body; - /** @type {?|undefined} */ - httpRequestOptions.prototype.headers; - /** @type {?|undefined} */ - httpRequestOptions.prototype.params; - /** @type {?|undefined} */ - httpRequestOptions.prototype.observe; - /** @type {?|undefined} */ - httpRequestOptions.prototype.reportProgress; - /** @type {?|undefined} */ - httpRequestOptions.prototype.responseType; - /** @type {?|undefined} */ - httpRequestOptions.prototype.withCredentials; -} -/** - * @param {?} annotations - * @return {?} - */ -export function observe(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['observe', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -export function path(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['path', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -export function body(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['body', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -export function query(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['query', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -export function headers(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['headers', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -export function produces(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, tslib_1.__spread(['produces', annotations], args)); - }; -} -/** - * @record - */ -function ExtraEntityData() { } -function ExtraEntityData_tsickle_Closure_declarations() { - /** @type {?} */ - ExtraEntityData.prototype.keyName; - /** @type {?} */ - ExtraEntityData.prototype.index; -} -var /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; -var HttpRestUtils = /** @class */ (function () { - function HttpRestUtils() { - } - /** - * @param {?} decoratorName - * @param {?} annotations - * @param {...?} args - * @return {?} - */ - HttpRestUtils.decorate = /** - * @param {?} decoratorName - * @param {?} annotations - * @param {...?} args - * @return {?} - */ - function (decoratorName, annotations) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - switch (args.length) { - case 1: { - var _a = tslib_1.__read(args, 1), target = _a[0]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); - break; - } - case 2: { - var _b = tslib_1.__read(args, 2), target = _b[0], key = _b[1]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); - break; - } - case 3: - if (typeof args[2] === 'number') { - var _c = tslib_1.__read(args, 3), target = _c[0], keyName = _c[1], index = _c[2]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName: keyName, index: index }]); - break; - } - else { - var _d = tslib_1.__read(args, 3), target = _d[0], keyName = _d[1], descriptor = _d[2]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName: keyName }]); - break; - } - default: - throw new Error('Decorators are not valid here!'); - } - }; - /** - * Set up metadada - * @param {?} metaName Decorator name - * @param {?} entityType - * @param {?} value Value of metadata - * @param {?} target Prototype of current object - * @param {?=} entityData Entity extra data - * @return {?} - */ - HttpRestUtils.constructMetadata = /** - * Set up metadada - * @param {?} metaName Decorator name - * @param {?} entityType - * @param {?} value Value of metadata - * @param {?} target Prototype of current object - * @param {?=} entityData Entity extra data - * @return {?} - */ - function (metaName, entityType, value, target, entityData) { - target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; - target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; - var /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; - var /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; - if (entityData && entityData.keyName) { - metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; - } - if (entityData && entityData.index != null) { - metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; - } - switch (entityType) { - case 'class': - metadataObj[metaName] = value; - break; - case 'props': - metadataObj[metaName] = value; - break; - case 'methods': - metadataObj[entityData.keyName][metaName] = value; - break; - case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; - } - target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; - }; - /** - * @param {?} requestMethodName - * @return {?} - */ - HttpRestUtils.requestMethod = /** - * @param {?} requestMethodName - * @return {?} - */ - function (requestMethodName) { - // @dynamic - return function (target, key, descriptor) { - descriptor.value = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); - var /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); - var /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); - var /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); - var /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); - var /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); - var /** @type {?} */ params = { - body: body, - params: search, - headers: headers, - responseType: producesType, - observe: observe - }; - return HttpRestUtils.http.request(requestMethodName, url, params); - }; - }; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.getObserve = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; - } - return undefined; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.produce = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; - } - return undefined; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectUrl = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - var /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class - ? target[RESOURSE_METADATA_ROOT].class.path - : ''; - var /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].path - : ''; - var /** @type {?} */ isRelativePath = ("" + baseUrl + methodUrl)[0] === '/'; - var /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] - .filter(function (path) { return path; }) - .join('/') - .split('/') - .map(function (path) { - if (path[0] === ':') { - var /** @type {?} */ paramName = path.substring(1); - var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params - && target[RESOURSE_METADATA_ROOT].params[methodName] - && target[RESOURSE_METADATA_ROOT].params[methodName].path - ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] - : ''; - return args[index]; - } - return path; - }) - .filter(function (path) { return path; }) - .join('/'); - if (!isRelativePath) { - var _a = tslib_1.__read(methodUrlWithParams.split('/')), absolutePrefix = _a[0], paths = _a.slice(1); - return absolutePrefix + "//" + paths.join('/'); - } - return "/" + methodUrlWithParams; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectBody = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].body) - return undefined; - var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; - return args[index]; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectQueryParams = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].query) - return undefined; - var /** @type {?} */ queryParams = new HttpParams(); - var /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; - var /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; - var /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined - ? args[queryParamsObjectIndex] - : Object.keys(queryMetadata).reduce(function (mergedObj, paramName) { - return Object.assign(mergedObj, (_a = {}, _a[paramName] = args[queryMetadata[paramName]], _a)); - var _a; - }, {}); - Object.keys(queryParamsCollection) - .forEach(function (paramName) { - var /** @type {?} */ value = queryParamsCollection[paramName]; - if (!Array.isArray(value)) { - value = [value]; - } - value.forEach(function (curParam) { return queryParams = queryParams.append(paramName, curParam); }); - }); - return queryParams; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectHeaders = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - var /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; - var /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers - : {}; - var /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); - var /** @type {?} */ httpHeaders = new HttpHeaders(); - for (var /** @type {?} */ header in mergedHeaders) { - httpHeaders.append(header, mergedHeaders[header]); - } - return httpHeaders; - }; - HttpRestUtils.http = null; - return HttpRestUtils; -}()); -export { HttpRestUtils }; -function HttpRestUtils_tsickle_Closure_declarations() { - /** @type {?} */ - HttpRestUtils.http; -} - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1hbm5vdGF0aW9ucy8iLCJzb3VyY2VzIjpbInNyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBYyxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjM0UsTUFBTSxrQkFBa0IsV0FBZ0I7SUFBeEMsaUJBRUM7SUFEQyxNQUFNLENBQUM7UUFBQyxjQUFjO2FBQWQsVUFBYyxFQUFkLHFCQUFjLEVBQWQsSUFBYztZQUFkLHlCQUFjOztRQUFLLE9BQUEsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSSxvQkFBRyxTQUFTLEVBQUUsV0FBVyxHQUFLLElBQUksRUFBRTtJQUFyRSxDQUFxRSxDQUFDO0NBQ2xHOzs7OztBQUNELE1BQU0sZUFBZSxXQUFnQjtJQUFyQyxpQkFFQztJQURDLE1BQU0sQ0FBQztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLG9CQUFHLE1BQU0sRUFBRSxXQUFXLEdBQUssSUFBSSxFQUFFO0lBQWxFLENBQWtFLENBQUM7Q0FDL0Y7Ozs7O0FBQ0QsTUFBTSxlQUFlLFdBQWdCO0lBQXJDLGlCQUVDO0lBREMsTUFBTSxDQUFDO1FBQUMsY0FBYzthQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7WUFBZCx5QkFBYzs7UUFBSyxPQUFBLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUksb0JBQUcsTUFBTSxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7SUFBbEUsQ0FBa0UsQ0FBQztDQUMvRjs7Ozs7QUFDRCxNQUFNLGdCQUFnQixXQUFnQjtJ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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cE9ic2VydmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHAvc3JjL2NsaWVudFwiO1xyXG5cclxuaW50ZXJmYWNlIGh0dHBSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgYm9keT86IGFueTtcclxuICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgcGFyYW1zPzogSHR0cFBhcmFtcztcclxuICBvYnNlcnZlPzogSHR0cE9ic2VydmU7XHJcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnb2JzZXJ2ZScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHBhdGgoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwYXRoJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gYm9keShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2JvZHknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBxdWVyeShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3F1ZXJ5JywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaGVhZGVycyhhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2hlYWRlcnMnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlcyhhbm5vdGF0aW9uczogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jykge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwcm9kdWNlcycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuXHJcbnR5cGUgUmVzb3VyY2VNZXRhZGF0YVR5cGUgPSAnY2xhc3MnfCdtZXRob2RzJ3wncGFyYW1zJ3wncHJvcHMnO1xyXG5pbnRlcmZhY2UgRXh0cmFFbnRpdHlEYXRhIHtcclxuICBrZXlOYW1lOiBzdHJpbmc7XHJcbiAgaW5kZXg6IG51bWJlcjtcclxufVxyXG5jb25zdCBSRVNPVVJTRV9NRVRBREFUQV9ST09UID0gJ3Jlc291cmNlc19tZXRhZGF0YSc7XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdFV0aWxzIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBodHRwOiBIdHRwQ2xpZW50ID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWNvcmF0ZShkZWNvcmF0b3JOYW1lOiBzdHJpbmcsIGFubm90YXRpb25zOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAxOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0XSA9IGFyZ3M7XHJcbiAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ2NsYXNzJywgYW5ub3RhdGlvbnMsIHRhcmdldC5wcm90b3R5cGUgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXldID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAncHJvcHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0IF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1syXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgaW5kZXhdID0gYXJncztcclxuICAgICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwYXJhbXMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUsIGluZGV4IH0gXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgZGVzY3JpcHRvcl0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ21ldGhvZHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUgfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVjb3JhdG9ycyBhcmUgbm90IHZhbGlkIGhlcmUhJyk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB1cCBtZXRhZGFkYVxyXG4gICAqIEBwYXJhbSB0eXBlIEVudGl0eSB0eXBlXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIG9mIG1ldGFkYXRhXHJcbiAgICogQHBhcmFtIHRhcmdldCBQcm90b3R5cGUgb2YgY3VycmVudCBvYmplY3RcclxuICAgKiBAcGFyYW0gbWV0YU5hbWUgRGVjb3JhdG9yIG5hbWVcclxuICAgKiBAcGFyYW0gZW50aXR5RGF0YSBFbnRpdHkgZXh0cmEgZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGNvbnN0cnVjdE1ldGFkYXRhKG1ldGFOYW1lOiBzdHJpbmcsIGVudGl0eVR5cGU6IFJlc291cmNlTWV0YWRhdGFUeXBlLCB2YWx1ZTogYW55LCB0YXJnZXQ6IGFueSwgZW50aXR5RGF0YT86IEV4dHJhRW50aXR5RGF0YSkge1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdIHx8IHt9O1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IHJvb3RNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXTtcclxuICAgIGNvbnN0IG1ldGFkYXRhT2JqID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdO1xyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5rZXlOYW1lKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5pbmRleCAhPSBudWxsKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdID0gbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGVudGl0eVR5cGUpIHtcclxuICAgICAgY2FzZSAnY2xhc3MnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Byb3BzJzogbWV0YWRhdGFPYmpbbWV0YU5hbWVdID0gdmFsdWU7IGJyZWFrO1xyXG4gICAgICBjYXNlICdtZXRob2RzJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhcmFtcyc6IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdW3ZhbHVlIHx8ICdkZWZhdWx0J10gPSBlbnRpdHlEYXRhLmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXVtlbnRpdHlUeXBlXSA9IG1ldGFkYXRhT2JqO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0TWV0aG9kKHJlcXVlc3RNZXRob2ROYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAvLyBAZHluYW1pY1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IGFueSkgPT4ge1xyXG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0VXJsKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBib2R5ID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0Qm9keSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RIZWFkZXJzKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBwcm9kdWNlc1R5cGUgPSBIdHRwUmVzdFV0aWxzLnByb2R1Y2UodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmUgPSBIdHRwUmVzdFV0aWxzLmdldE9ic2VydmUodGFyZ2V0LCBrZXksIGFyZ3MpXHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBodHRwUmVxdWVzdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgcGFyYW1zOiBzZWFyY2gsXHJcbiAgICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiBwcm9kdWNlc1R5cGUsXHJcbiAgICAgICAgICBvYnNlcnZlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gSHR0cFJlc3RVdGlscy5odHRwLnJlcXVlc3QocmVxdWVzdE1ldGhvZE5hbWUsIHVybCwgcGFyYW1zKTtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRPYnNlcnZlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgIHJldHVybiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5vYnNlcnZlO1xyXG4gICAgIH1cclxuICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvZHVjZSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzXHJcbiAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnByb2R1Y2VzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RVcmwodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzXHJcbiAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLnBhdGhcclxuICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IG1ldGhvZFVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5wYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IGlzUmVsYXRpdmVQYXRoID0gYCR7YmFzZVVybH0ke21ldGhvZFVybH1gWzBdID09PSAnLyc7XHJcbiAgICBjb25zdCBtZXRob2RVcmxXaXRoUGFyYW1zXHJcbiAgICAgID0gW2Jhc2VVcmwsIG1ldGhvZFVybF1cclxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gcGF0aClcclxuICAgICAgICAuam9pbignLycpXHJcbiAgICAgICAgLnNwbGl0KCcvJylcclxuICAgICAgICAubWFwKHBhdGggPT4ge1xyXG4gICAgICAgICAgaWYgKCBwYXRoWzBdID09PSAnOicpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhbcGFyYW1OYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJyk7XHJcblxyXG4gICAgaWYgKCFpc1JlbGF0aXZlUGF0aCkge1xyXG4gICAgICBjb25zdCBbYWJzb2x1dGVQcmVmaXgsIC4uLnBhdGhzXSA9IG1ldGhvZFVybFdpdGhQYXJhbXMuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIGAkeyBhYnNvbHV0ZVByZWZpeCB9Ly8keyBwYXRocy5qb2luKCcvJykgfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYC8keyBtZXRob2RVcmxXaXRoUGFyYW1zIH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdEJvZHkodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keS5kZWZhdWx0O1xyXG4gICAgcmV0dXJuIGFyZ3NbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFF1ZXJ5UGFyYW1zKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAoIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNcclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBxdWVyeVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc09iamVjdEluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeS5kZWZhdWx0O1xyXG4gICAgY29uc3QgcXVlcnlNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc0NvbGxlY3Rpb24gPSBxdWVyeVBhcmFtc09iamVjdEluZGV4ICE9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXJnc1txdWVyeVBhcmFtc09iamVjdEluZGV4XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LmtleXMocXVlcnlNZXRhZGF0YSkucmVkdWNlKChtZXJnZWRPYmosIHBhcmFtTmFtZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obWVyZ2VkT2JqLCB7IFtwYXJhbU5hbWVdOiBhcmdzW3F1ZXJ5TWV0YWRhdGFbcGFyYW1OYW1lXV0gfSksIHt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhxdWVyeVBhcmFtc0NvbGxlY3Rpb24pXHJcbiAgICAgIC5mb3JFYWNoKHBhcmFtTmFtZSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gcXVlcnlQYXJhbXNDb2xsZWN0aW9uW3BhcmFtTmFtZV07XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgeyB2YWx1ZSA9IFsgdmFsdWUgXTsgfVxyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKGN1clBhcmFtOiBhbnkpID0+IHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMuYXBwZW5kKHBhcmFtTmFtZSwgY3VyUGFyYW0pKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0SGVhZGVycyh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgY2xhc3NIZWFkZXJzID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLmhlYWRlcnMgOiB7fTtcclxuICAgIGNvbnN0IG1ldGhvZEhlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kcyAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLmhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcclxuICAgIGNvbnN0IG1lcmdlZEhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBjbGFzc0hlYWRlcnMsIG1ldGhvZEhlYWRlcnMpO1xyXG5cclxuICAgIGNvbnN0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiBtZXJnZWRIZWFkZXJzKSB7XHJcbiAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChoZWFkZXIsIG1lcmdlZEhlYWRlcnNbaGVhZGVyXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHR0cEhlYWRlcnM7XHJcbiAgfVxyXG59Il19 \ No newline at end of file diff --git a/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js b/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js deleted file mode 100644 index 3138a25..0000000 --- a/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js +++ /dev/null @@ -1,325 +0,0 @@ -import { HttpParams, HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http'; -import { NgModule, APP_INITIALIZER } from '@angular/core'; - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -/** - * @param {?} annotations - * @return {?} - */ -function observe(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -function path(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -function body(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -function query(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -function headers(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]); -} -/** - * @param {?} annotations - * @return {?} - */ -function produces(annotations) { - return (...args) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]); -} -const /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; -class HttpRestUtils { - /** - * @param {?} decoratorName - * @param {?} annotations - * @param {...?} args - * @return {?} - */ - static decorate(decoratorName, annotations, ...args) { - switch (args.length) { - case 1: { - const [target] = args; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); - break; - } - case 2: { - const [target, key] = args; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); - break; - } - case 3: - if (typeof args[2] === 'number') { - const [target, keyName, index] = args; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName, index }]); - break; - } - else { - const [target, keyName, descriptor] = args; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName }]); - break; - } - default: - throw new Error('Decorators are not valid here!'); - } - } - /** - * Set up metadada - * @param {?} metaName Decorator name - * @param {?} entityType - * @param {?} value Value of metadata - * @param {?} target Prototype of current object - * @param {?=} entityData Entity extra data - * @return {?} - */ - static constructMetadata(metaName, entityType, value, target, entityData) { - target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; - target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; - const /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; - const /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; - if (entityData && entityData.keyName) { - metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; - } - if (entityData && entityData.index != null) { - metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; - } - switch (entityType) { - case 'class': - metadataObj[metaName] = value; - break; - case 'props': - metadataObj[metaName] = value; - break; - case 'methods': - metadataObj[entityData.keyName][metaName] = value; - break; - case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; - } - target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; - } - /** - * @param {?} requestMethodName - * @return {?} - */ - static requestMethod(requestMethodName) { - // @dynamic - return (target, key, descriptor) => { - descriptor.value = function (...args) { - const /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); - const /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); - const /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); - const /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); - const /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); - const /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); - const /** @type {?} */ params = { - body, - params: search, - headers, - responseType: producesType, - observe - }; - return HttpRestUtils.http.request(requestMethodName, url, params); - }; - }; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static getObserve(target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; - } - return undefined; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static produce(target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; - } - return undefined; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static collectUrl(target, methodName, args) { - const /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class - ? target[RESOURSE_METADATA_ROOT].class.path - : ''; - const /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].path - : ''; - const /** @type {?} */ isRelativePath = `${baseUrl}${methodUrl}`[0] === '/'; - const /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] - .filter(path => path) - .join('/') - .split('/') - .map(path => { - if (path[0] === ':') { - const /** @type {?} */ paramName = path.substring(1); - const /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params - && target[RESOURSE_METADATA_ROOT].params[methodName] - && target[RESOURSE_METADATA_ROOT].params[methodName].path - ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] - : ''; - return args[index]; - } - return path; - }) - .filter(path => path) - .join('/'); - if (!isRelativePath) { - const [absolutePrefix, ...paths] = methodUrlWithParams.split('/'); - return `${absolutePrefix}//${paths.join('/')}`; - } - return `/${methodUrlWithParams}`; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static collectBody(target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].body) - return undefined; - const /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; - return args[index]; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static collectQueryParams(target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].query) - return undefined; - let /** @type {?} */ queryParams = new HttpParams(); - const /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; - const /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; - const /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined - ? args[queryParamsObjectIndex] - : Object.keys(queryMetadata).reduce((mergedObj, paramName) => Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}); - Object.keys(queryParamsCollection) - .forEach(paramName => { - let /** @type {?} */ value = queryParamsCollection[paramName]; - if (!Array.isArray(value)) { - value = [value]; - } - value.forEach((curParam) => queryParams = queryParams.append(paramName, curParam)); - }); - return queryParams; - } - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - static collectHeaders(target, methodName, args) { - const /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; - const /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers - : {}; - const /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); - const /** @type {?} */ httpHeaders = new HttpHeaders(); - for (const /** @type {?} */ header in mergedHeaders) { - httpHeaders.append(header, mergedHeaders[header]); - } - return httpHeaders; - } -} -HttpRestUtils.http = null; - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -class HttpRestModule { -} -HttpRestModule.decorators = [ - { type: NgModule, args: [{ - imports: [HttpClientModule], - providers: [ - { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } - ] - },] }, -]; -/** - * @param {?} http - * @return {?} - */ -function onAppInit(http) { - return function () { - HttpRestUtils.http = http; - }; -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -let /** @type {?} */ Path = path; -let /** @type {?} */ PathParam = path; -let /** @type {?} */ Body = body(null); -let /** @type {?} */ Query = query(null); -let /** @type {?} */ QueryParam = query; -let /** @type {?} */ QueryParams = query(null); -let /** @type {?} */ Observe = observe; -// Headers -let /** @type {?} */ Headers = headers; -// Produces -let /** @type {?} */ Produces = produces; -// Request methods -let /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); -let /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); -let /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); -let /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); -let /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); -let /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); -let /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ - -export { Path, PathParam, Body, Query, QueryParam, QueryParams, Observe, Headers, Produces, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, HttpRestModule, onAppInit, observe, path, body, query, headers, produces, HttpRestUtils }; - -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1odHRwLWFubm90YXRpb25zL3NyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZS50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvcHVibGljX2FwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cE9ic2VydmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHAvc3JjL2NsaWVudFwiO1xyXG5cclxuaW50ZXJmYWNlIGh0dHBSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgYm9keT86IGFueTtcclxuICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgcGFyYW1zPzogSHR0cFBhcmFtcztcclxuICBvYnNlcnZlPzogSHR0cE9ic2VydmU7XHJcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnb2JzZXJ2ZScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHBhdGgoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwYXRoJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gYm9keShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2JvZHknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBxdWVyeShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3F1ZXJ5JywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaGVhZGVycyhhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2hlYWRlcnMnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlcyhhbm5vdGF0aW9uczogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jykge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwcm9kdWNlcycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuXHJcbnR5cGUgUmVzb3VyY2VNZXRhZGF0YVR5cGUgPSAnY2xhc3MnfCdtZXRob2RzJ3wncGFyYW1zJ3wncHJvcHMnO1xyXG5pbnRlcmZhY2UgRXh0cmFFbnRpdHlEYXRhIHtcclxuICBrZXlOYW1lOiBzdHJpbmc7XHJcbiAgaW5kZXg6IG51bWJlcjtcclxufVxyXG5jb25zdCBSRVNPVVJTRV9NRVRBREFUQV9ST09UID0gJ3Jlc291cmNlc19tZXRhZGF0YSc7XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdFV0aWxzIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBodHRwOiBIdHRwQ2xpZW50ID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWNvcmF0ZShkZWNvcmF0b3JOYW1lOiBzdHJpbmcsIGFubm90YXRpb25zOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAxOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0XSA9IGFyZ3M7XHJcbiAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ2NsYXNzJywgYW5ub3RhdGlvbnMsIHRhcmdldC5wcm90b3R5cGUgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXldID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAncHJvcHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0IF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1syXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgaW5kZXhdID0gYXJncztcclxuICAgICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwYXJhbXMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUsIGluZGV4IH0gXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgZGVzY3JpcHRvcl0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ21ldGhvZHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUgfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVjb3JhdG9ycyBhcmUgbm90IHZhbGlkIGhlcmUhJyk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB1cCBtZXRhZGFkYVxyXG4gICAqIEBwYXJhbSB0eXBlIEVudGl0eSB0eXBlXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIG9mIG1ldGFkYXRhXHJcbiAgICogQHBhcmFtIHRhcmdldCBQcm90b3R5cGUgb2YgY3VycmVudCBvYmplY3RcclxuICAgKiBAcGFyYW0gbWV0YU5hbWUgRGVjb3JhdG9yIG5hbWVcclxuICAgKiBAcGFyYW0gZW50aXR5RGF0YSBFbnRpdHkgZXh0cmEgZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGNvbnN0cnVjdE1ldGFkYXRhKG1ldGFOYW1lOiBzdHJpbmcsIGVudGl0eVR5cGU6IFJlc291cmNlTWV0YWRhdGFUeXBlLCB2YWx1ZTogYW55LCB0YXJnZXQ6IGFueSwgZW50aXR5RGF0YT86IEV4dHJhRW50aXR5RGF0YSkge1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdIHx8IHt9O1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IHJvb3RNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXTtcclxuICAgIGNvbnN0IG1ldGFkYXRhT2JqID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdO1xyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5rZXlOYW1lKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5pbmRleCAhPSBudWxsKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdID0gbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGVudGl0eVR5cGUpIHtcclxuICAgICAgY2FzZSAnY2xhc3MnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Byb3BzJzogbWV0YWRhdGFPYmpbbWV0YU5hbWVdID0gdmFsdWU7IGJyZWFrO1xyXG4gICAgICBjYXNlICdtZXRob2RzJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhcmFtcyc6IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdW3ZhbHVlIHx8ICdkZWZhdWx0J10gPSBlbnRpdHlEYXRhLmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXVtlbnRpdHlUeXBlXSA9IG1ldGFkYXRhT2JqO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0TWV0aG9kKHJlcXVlc3RNZXRob2ROYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAvLyBAZHluYW1pY1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IGFueSkgPT4ge1xyXG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0VXJsKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBib2R5ID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0Qm9keSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RIZWFkZXJzKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBwcm9kdWNlc1R5cGUgPSBIdHRwUmVzdFV0aWxzLnByb2R1Y2UodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmUgPSBIdHRwUmVzdFV0aWxzLmdldE9ic2VydmUodGFyZ2V0LCBrZXksIGFyZ3MpXHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBodHRwUmVxdWVzdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgcGFyYW1zOiBzZWFyY2gsXHJcbiAgICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiBwcm9kdWNlc1R5cGUsXHJcbiAgICAgICAgICBvYnNlcnZlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gSHR0cFJlc3RVdGlscy5odHRwLnJlcXVlc3QocmVxdWVzdE1ldGhvZE5hbWUsIHVybCwgcGFyYW1zKTtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRPYnNlcnZlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgIHJldHVybiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5vYnNlcnZlO1xyXG4gICAgIH1cclxuICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvZHVjZSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzXHJcbiAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnByb2R1Y2VzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RVcmwodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzXHJcbiAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLnBhdGhcclxuICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IG1ldGhvZFVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5wYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IGlzUmVsYXRpdmVQYXRoID0gYCR7YmFzZVVybH0ke21ldGhvZFVybH1gWzBdID09PSAnLyc7XHJcbiAgICBjb25zdCBtZXRob2RVcmxXaXRoUGFyYW1zXHJcbiAgICAgID0gW2Jhc2VVcmwsIG1ldGhvZFVybF1cclxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gcGF0aClcclxuICAgICAgICAuam9pbignLycpXHJcbiAgICAgICAgLnNwbGl0KCcvJylcclxuICAgICAgICAubWFwKHBhdGggPT4ge1xyXG4gICAgICAgICAgaWYgKCBwYXRoWzBdID09PSAnOicpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhbcGFyYW1OYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJyk7XHJcblxyXG4gICAgaWYgKCFpc1JlbGF0aXZlUGF0aCkge1xyXG4gICAgICBjb25zdCBbYWJzb2x1dGVQcmVmaXgsIC4uLnBhdGhzXSA9IG1ldGhvZFVybFdpdGhQYXJhbXMuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIGAkeyBhYnNvbHV0ZVByZWZpeCB9Ly8keyBwYXRocy5qb2luKCcvJykgfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYC8keyBtZXRob2RVcmxXaXRoUGFyYW1zIH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdEJvZHkodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keS5kZWZhdWx0O1xyXG4gICAgcmV0dXJuIGFyZ3NbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFF1ZXJ5UGFyYW1zKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAoIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNcclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBxdWVyeVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc09iamVjdEluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeS5kZWZhdWx0O1xyXG4gICAgY29uc3QgcXVlcnlNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc0NvbGxlY3Rpb24gPSBxdWVyeVBhcmFtc09iamVjdEluZGV4ICE9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXJnc1txdWVyeVBhcmFtc09iamVjdEluZGV4XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LmtleXMocXVlcnlNZXRhZGF0YSkucmVkdWNlKChtZXJnZWRPYmosIHBhcmFtTmFtZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obWVyZ2VkT2JqLCB7IFtwYXJhbU5hbWVdOiBhcmdzW3F1ZXJ5TWV0YWRhdGFbcGFyYW1OYW1lXV0gfSksIHt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhxdWVyeVBhcmFtc0NvbGxlY3Rpb24pXHJcbiAgICAgIC5mb3JFYWNoKHBhcmFtTmFtZSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gcXVlcnlQYXJhbXNDb2xsZWN0aW9uW3BhcmFtTmFtZV07XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgeyB2YWx1ZSA9IFsgdmFsdWUgXTsgfVxyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKGN1clBhcmFtOiBhbnkpID0+IHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMuYXBwZW5kKHBhcmFtTmFtZSwgY3VyUGFyYW0pKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0SGVhZGVycyh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgY2xhc3NIZWFkZXJzID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLmhlYWRlcnMgOiB7fTtcclxuICAgIGNvbnN0IG1ldGhvZEhlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kcyAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLmhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcclxuICAgIGNvbnN0IG1lcmdlZEhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBjbGFzc0hlYWRlcnMsIG1ldGhvZEhlYWRlcnMpO1xyXG5cclxuICAgIGNvbnN0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiBtZXJnZWRIZWFkZXJzKSB7XHJcbiAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChoZWFkZXIsIG1lcmdlZEhlYWRlcnNbaGVhZGVyXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHR0cEhlYWRlcnM7XHJcbiAgfVxyXG59IiwiaW1wb3J0IHsgTmdNb2R1bGUsIEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVzdFV0aWxzIH0gZnJvbSBcIi4vbmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHNcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbi8vIEBkeW5hbWljXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbSHR0cENsaWVudE1vZHVsZV0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgeyBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsIHVzZUZhY3Rvcnk6IG9uQXBwSW5pdCwgbXVsdGk6IHRydWUsIGRlcHM6IFtIdHRwQ2xpZW50XSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdE1vZHVsZSB7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvbkFwcEluaXQoaHR0cDogSHR0cENsaWVudCkge1xyXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICBIdHRwUmVzdFV0aWxzLmh0dHAgPSBodHRwO1xyXG4gIH1cclxufSIsImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzJztcclxuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscywgcGF0aCwgYm9keSwgcXVlcnksIGhlYWRlcnMsIHByb2R1Y2VzLCBvYnNlcnZlIH0gZnJvbSBcIi4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgbGV0IFBhdGggPSBwYXRoO1xyXG5leHBvcnQgbGV0IFBhdGhQYXJhbSA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgQm9keSA9IGJvZHkobnVsbCk7XHJcbmV4cG9ydCBsZXQgUXVlcnkgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtID0gcXVlcnk7XHJcbmV4cG9ydCBsZXQgUXVlcnlQYXJhbXMgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBPYnNlcnZlID0gb2JzZXJ2ZTtcclxuXHJcbi8vIEhlYWRlcnNcclxuZXhwb3J0IGxldCBIZWFkZXJzID0gaGVhZGVycztcclxuXHJcbi8vIFByb2R1Y2VzXHJcbmV4cG9ydCBsZXQgUHJvZHVjZXMgPSBwcm9kdWNlcztcclxuXHJcbi8vIFJlcXVlc3QgbWV0aG9kc1xyXG5leHBvcnQgbGV0IEdFVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnR2V0Jyk7XHJcbmV4cG9ydCBsZXQgUE9TVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUG9zdCcpO1xyXG5leHBvcnQgbGV0IFBVVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUHV0Jyk7XHJcbmV4cG9ydCBsZXQgREVMRVRFID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdEZWxldGUnKTtcclxuZXhwb3J0IGxldCBPUFRJT05TID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdPcHRpb25zJyk7XHJcbmV4cG9ydCBsZXQgSEVBRCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnSGVhZCcpO1xyXG5leHBvcnQgbGV0IFBBVENIID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQYXRjaCcpOyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7QUFjQSxpQkFBd0IsV0FBZ0I7SUFDdEMsT0FBTyxDQUFDLEdBQUcsSUFBVyxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQ2xHOzs7OztBQUNELGNBQXFCLFdBQWdCO0lBQ25DLE9BQU8sQ0FBQyxHQUFHLElBQVcsS0FBSyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztDQUMvRjs7Ozs7QUFDRCxjQUFxQixXQUFnQjtJQUNuQyxPQUFPLENBQUMsR0FBRyxJQUFXLEtBQUssYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDL0Y7Ozs7O0FBQ0QsZUFBc0IsV0FBZ0I7SUFDcEMsT0FBTyxDQUFDLEdBQUcsSUFBVyxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQ2hHOzs7OztBQUNELGlCQUF3QixXQUFnQjtJQUN0QyxPQUFPLENBQUMsR0FBRyxJQUFXLEtBQUssYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDbEc7Ozs7O0FBQ0Qsa0JBQXlCLFdBQXFEO0lBQzVFLE9BQU8sQ0FBQyxHQUFH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 \ No newline at end of file diff --git a/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js.map b/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js.map deleted file mode 100644 index 143b8e1..0000000 --- a/dist/ngx-http-annotations/fesm2015/ngx-http-annotations.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ngx-http-annotations.js.map","sources":["ng://ngx-http-annotations/src/ngx-http-annotations.utils.ts","ng://ngx-http-annotations/src/ngx-http-annotations.module.ts","ng://ngx-http-annotations/public_api.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from \"@angular/common/http\";\r\nimport { HttpObserve } from \"@angular/common/http/src/client\";\r\n\r\ninterface httpRequestOptions {\r\n body?: any;\r\n headers?: HttpHeaders;\r\n params?: HttpParams;\r\n observe?: HttpObserve;\r\n reportProgress?: boolean;\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n withCredentials?: boolean;\r\n}\r\n\r\n\r\nexport function observe(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]);\r\n}\r\nexport function path(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]);\r\n}\r\nexport function body(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]);\r\n}\r\nexport function query(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]);\r\n}\r\nexport function headers(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]);\r\n}\r\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]);\r\n}\r\n\r\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\r\ninterface ExtraEntityData {\r\n keyName: string;\r\n index: number;\r\n}\r\nconst RESOURSE_METADATA_ROOT = 'resources_metadata';\r\n// @dynamic\r\nexport class HttpRestUtils {\r\n\r\n public static http: HttpClient = null;\r\n\r\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\r\n switch (args.length) {\r\n case 1: {\r\n const [target] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]);\r\n break;\r\n }\r\n case 2: {\r\n const [target, key] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'props', annotations, target ]);\r\n break;\r\n }\r\n case 3:\r\n if (typeof args[2] === 'number') {\r\n const [target, keyName, index] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'params', annotations, target, { keyName, index } ]);\r\n break;\r\n } else {\r\n const [target, keyName, descriptor] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'methods', annotations, target, { keyName } ]);\r\n break;\r\n }\r\n default:\r\n throw new Error('Decorators are not valid here!');\r\n }\r\n }\r\n\r\n /**\r\n * Set up metadada\r\n * @param type Entity type\r\n * @param value Value of metadata\r\n * @param target Prototype of current object\r\n * @param metaName Decorator name\r\n * @param entityData Entity extra data\r\n */\r\n private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) {\r\n target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {};\r\n target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {};\r\n\r\n const rootMetadata = target[RESOURSE_METADATA_ROOT];\r\n const metadataObj = target[RESOURSE_METADATA_ROOT][entityType];\r\n if (entityData && entityData.keyName) {\r\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\r\n }\r\n if (entityData && entityData.index != null) {\r\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\r\n }\r\n switch (entityType) {\r\n case 'class': metadataObj[metaName] = value; break;\r\n case 'props': metadataObj[metaName] = value; break;\r\n case 'methods': metadataObj[entityData.keyName][metaName] = value; break;\r\n case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index;\r\n }\r\n\r\n target[RESOURSE_METADATA_ROOT][entityType] = metadataObj;\r\n }\r\n\r\n public static requestMethod(requestMethodName: string): any {\r\n // @dynamic\r\n return (target: any, key: string, descriptor: any) => {\r\n descriptor.value = function (...args: any[]) {\r\n const url = HttpRestUtils.collectUrl(target, key, args);\r\n const body = HttpRestUtils.collectBody(target, key, args);\r\n const search = HttpRestUtils.collectQueryParams(target, key, args);\r\n const headers = HttpRestUtils.collectHeaders(target, key, args);\r\n const producesType = HttpRestUtils.produce(target, key, args);\r\n const observe = HttpRestUtils.getObserve(target, key, args)\r\n const params: httpRequestOptions = {\r\n body,\r\n params: search,\r\n headers,\r\n responseType: producesType,\r\n observe\r\n };\r\n return HttpRestUtils.http.request(requestMethodName, url, params);\r\n };\r\n };\r\n }\r\n\r\n private static getObserve(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].observe;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static produce(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].produces;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static collectUrl(target: any, methodName: string, args: any[]) {\r\n const baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class\r\n ? target[RESOURSE_METADATA_ROOT].class.path\r\n : '';\r\n const methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].path\r\n : '';\r\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\r\n const methodUrlWithParams\r\n = [baseUrl, methodUrl]\r\n .filter(path => path)\r\n .join('/')\r\n .split('/')\r\n .map(path => {\r\n if ( path[0] === ':') {\r\n const paramName = path.substring(1);\r\n const index = target[RESOURSE_METADATA_ROOT].params\r\n && target[RESOURSE_METADATA_ROOT].params[methodName]\r\n && target[RESOURSE_METADATA_ROOT].params[methodName].path\r\n ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName]\r\n : '';\r\n return args[index];\r\n }\r\n return path;\r\n })\r\n .filter(path => path)\r\n .join('/');\r\n\r\n if (!isRelativePath) {\r\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\r\n return `${ absolutePrefix }//${ paths.join('/') }`;\r\n }\r\n return `/${ methodUrlWithParams }`;\r\n }\r\n\r\n private static collectBody(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].body) return undefined;\r\n\r\n const index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default;\r\n return args[index];\r\n }\r\n\r\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined;\r\n\r\n let queryParams = new HttpParams();\r\n const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default;\r\n const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query;\r\n const queryParamsCollection = queryParamsObjectIndex != undefined\r\n ? args[queryParamsObjectIndex]\r\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\r\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\r\n );\r\n\r\n Object.keys(queryParamsCollection)\r\n .forEach(paramName => {\r\n let value = queryParamsCollection[paramName];\r\n if (!Array.isArray(value)) { value = [ value ]; }\r\n value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam));\r\n });\r\n return queryParams;\r\n }\r\n\r\n private static collectHeaders(target: any, methodName: string, args: any[]) {\r\n const classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {};\r\n const methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers\r\n : {};\r\n const mergedHeaders = Object.assign({}, classHeaders, methodHeaders);\r\n\r\n const httpHeaders = new HttpHeaders();\r\n for (const header in mergedHeaders) {\r\n httpHeaders.append(header, mergedHeaders[header]);\r\n }\r\n return httpHeaders;\r\n }\r\n}","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpRestUtils } from \"./ngx-http-annotations.utils\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n// @dynamic\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [\r\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] }\r\n ]\r\n})\r\nexport class HttpRestModule {\r\n}\r\n\r\nexport function onAppInit(http: HttpClient) {\r\n return function () {\r\n HttpRestUtils.http = http;\r\n }\r\n}","export * from './src/ngx-http-annotations.module';\r\nexport * from './src/ngx-http-annotations.utils';\r\nimport { Response } from '@angular/http';\r\nimport { HttpRestUtils, path, body, query, headers, produces, observe } from \"./src/ngx-http-annotations.utils\";\r\n\r\nexport let Path = path;\r\nexport let PathParam = path;\r\nexport let Body = body(null);\r\nexport let Query = query(null);\r\nexport let QueryParam = query;\r\nexport let QueryParams = query(null);\r\nexport let Observe = observe;\r\n\r\n// Headers\r\nexport let Headers = headers;\r\n\r\n// Produces\r\nexport let Produces = produces;\r\n\r\n// Request methods\r\nexport let GET = HttpRestUtils.requestMethod('Get');\r\nexport let POST = HttpRestUtils.requestMethod('Post');\r\nexport let PUT = HttpRestUtils.requestMethod('Put');\r\nexport let DELETE = HttpRestUtils.requestMethod('Delete');\r\nexport let OPTIONS = HttpRestUtils.requestMethod('Options');\r\nexport let HEAD = HttpRestUtils.requestMethod('Head');\r\nexport let PATCH = HttpRestUtils.requestMethod('Patch');"],"names":[],"mappings":"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"} diff --git a/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js b/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js deleted file mode 100644 index 2d48e17..0000000 --- a/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js +++ /dev/null @@ -1,440 +0,0 @@ -import { __spread, __read } from 'tslib'; -import { HttpParams, HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http'; -import { NgModule, APP_INITIALIZER } from '@angular/core'; - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -/** - * @param {?} annotations - * @return {?} - */ -function observe(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['observe', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -function path(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['path', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -function body(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['body', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -function query(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['query', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -function headers(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['headers', annotations], args)); - }; -} -/** - * @param {?} annotations - * @return {?} - */ -function produces(annotations) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return HttpRestUtils.decorate.apply(_this, __spread(['produces', annotations], args)); - }; -} -var /** @type {?} */ RESOURSE_METADATA_ROOT = 'resources_metadata'; -var HttpRestUtils = /** @class */ (function () { - function HttpRestUtils() { - } - /** - * @param {?} decoratorName - * @param {?} annotations - * @param {...?} args - * @return {?} - */ - HttpRestUtils.decorate = /** - * @param {?} decoratorName - * @param {?} annotations - * @param {...?} args - * @return {?} - */ - function (decoratorName, annotations) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - switch (args.length) { - case 1: { - var _a = __read(args, 1), target = _a[0]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'class', annotations, target.prototype]); - break; - } - case 2: { - var _b = __read(args, 2), target = _b[0], key = _b[1]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'props', annotations, target]); - break; - } - case 3: - if (typeof args[2] === 'number') { - var _c = __read(args, 3), target = _c[0], keyName = _c[1], index = _c[2]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'params', annotations, target, { keyName: keyName, index: index }]); - break; - } - else { - var _d = __read(args, 3), target = _d[0], keyName = _d[1], descriptor = _d[2]; - HttpRestUtils.constructMetadata.apply(this, [decoratorName, 'methods', annotations, target, { keyName: keyName }]); - break; - } - default: - throw new Error('Decorators are not valid here!'); - } - }; - /** - * Set up metadada - * @param {?} metaName Decorator name - * @param {?} entityType - * @param {?} value Value of metadata - * @param {?} target Prototype of current object - * @param {?=} entityData Entity extra data - * @return {?} - */ - HttpRestUtils.constructMetadata = /** - * Set up metadada - * @param {?} metaName Decorator name - * @param {?} entityType - * @param {?} value Value of metadata - * @param {?} target Prototype of current object - * @param {?=} entityData Entity extra data - * @return {?} - */ - function (metaName, entityType, value, target, entityData) { - target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {}; - target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {}; - var /** @type {?} */ rootMetadata = target[RESOURSE_METADATA_ROOT]; - var /** @type {?} */ metadataObj = target[RESOURSE_METADATA_ROOT][entityType]; - if (entityData && entityData.keyName) { - metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {}; - } - if (entityData && entityData.index != null) { - metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {}; - } - switch (entityType) { - case 'class': - metadataObj[metaName] = value; - break; - case 'props': - metadataObj[metaName] = value; - break; - case 'methods': - metadataObj[entityData.keyName][metaName] = value; - break; - case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index; - } - target[RESOURSE_METADATA_ROOT][entityType] = metadataObj; - }; - /** - * @param {?} requestMethodName - * @return {?} - */ - HttpRestUtils.requestMethod = /** - * @param {?} requestMethodName - * @return {?} - */ - function (requestMethodName) { - // @dynamic - return function (target, key, descriptor) { - descriptor.value = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var /** @type {?} */ url = HttpRestUtils.collectUrl(target, key, args); - var /** @type {?} */ body = HttpRestUtils.collectBody(target, key, args); - var /** @type {?} */ search = HttpRestUtils.collectQueryParams(target, key, args); - var /** @type {?} */ headers = HttpRestUtils.collectHeaders(target, key, args); - var /** @type {?} */ producesType = HttpRestUtils.produce(target, key, args); - var /** @type {?} */ observe = HttpRestUtils.getObserve(target, key, args); - var /** @type {?} */ params = { - body: body, - params: search, - headers: headers, - responseType: producesType, - observe: observe - }; - return HttpRestUtils.http.request(requestMethodName, url, params); - }; - }; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.getObserve = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].observe; - } - return undefined; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.produce = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (target[RESOURSE_METADATA_ROOT].methods - && target[RESOURSE_METADATA_ROOT].methods[methodName]) { - return target[RESOURSE_METADATA_ROOT].methods[methodName].produces; - } - return undefined; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectUrl = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - var /** @type {?} */ baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class - ? target[RESOURSE_METADATA_ROOT].class.path - : ''; - var /** @type {?} */ methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].path - : ''; - var /** @type {?} */ isRelativePath = ("" + baseUrl + methodUrl)[0] === '/'; - var /** @type {?} */ methodUrlWithParams = [baseUrl, methodUrl] - .filter(function (path) { return path; }) - .join('/') - .split('/') - .map(function (path) { - if (path[0] === ':') { - var /** @type {?} */ paramName = path.substring(1); - var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params - && target[RESOURSE_METADATA_ROOT].params[methodName] - && target[RESOURSE_METADATA_ROOT].params[methodName].path - ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName] - : ''; - return args[index]; - } - return path; - }) - .filter(function (path) { return path; }) - .join('/'); - if (!isRelativePath) { - var _a = __read(methodUrlWithParams.split('/')), absolutePrefix = _a[0], paths = _a.slice(1); - return absolutePrefix + "//" + paths.join('/'); - } - return "/" + methodUrlWithParams; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectBody = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].body) - return undefined; - var /** @type {?} */ index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default; - return args[index]; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectQueryParams = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - if (!target[RESOURSE_METADATA_ROOT].params - || !target[RESOURSE_METADATA_ROOT].params[methodName] - || !target[RESOURSE_METADATA_ROOT].params[methodName].query) - return undefined; - var /** @type {?} */ queryParams = new HttpParams(); - var /** @type {?} */ queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default; - var /** @type {?} */ queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query; - var /** @type {?} */ queryParamsCollection = queryParamsObjectIndex != undefined - ? args[queryParamsObjectIndex] - : Object.keys(queryMetadata).reduce(function (mergedObj, paramName) { - return Object.assign(mergedObj, (_a = {}, _a[paramName] = args[queryMetadata[paramName]], _a)); - var _a; - }, {}); - Object.keys(queryParamsCollection) - .forEach(function (paramName) { - var /** @type {?} */ value = queryParamsCollection[paramName]; - if (!Array.isArray(value)) { - value = [value]; - } - value.forEach(function (curParam) { return queryParams = queryParams.append(paramName, curParam); }); - }); - return queryParams; - }; - /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - HttpRestUtils.collectHeaders = /** - * @param {?} target - * @param {?} methodName - * @param {?} args - * @return {?} - */ - function (target, methodName, args) { - var /** @type {?} */ classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {}; - var /** @type {?} */ methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName] - ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers - : {}; - var /** @type {?} */ mergedHeaders = Object.assign({}, classHeaders, methodHeaders); - var /** @type {?} */ httpHeaders = new HttpHeaders(); - for (var /** @type {?} */ header in mergedHeaders) { - httpHeaders.append(header, mergedHeaders[header]); - } - return httpHeaders; - }; - HttpRestUtils.http = null; - return HttpRestUtils; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -var HttpRestModule = /** @class */ (function () { - function HttpRestModule() { - } - HttpRestModule.decorators = [ - { type: NgModule, args: [{ - imports: [HttpClientModule], - providers: [ - { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] } - ] - },] }, - ]; - return HttpRestModule; -}()); -/** - * @param {?} http - * @return {?} - */ -function onAppInit(http) { - return function () { - HttpRestUtils.http = http; - }; -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ -var /** @type {?} */ Path = path; -var /** @type {?} */ PathParam = path; -var /** @type {?} */ Body = body(null); -var /** @type {?} */ Query = query(null); -var /** @type {?} */ QueryParam = query; -var /** @type {?} */ QueryParams = query(null); -var /** @type {?} */ Observe = observe; -// Headers -var /** @type {?} */ Headers = headers; -// Produces -var /** @type {?} */ Produces = produces; -// Request methods -var /** @type {?} */ GET = HttpRestUtils.requestMethod('Get'); -var /** @type {?} */ POST = HttpRestUtils.requestMethod('Post'); -var /** @type {?} */ PUT = HttpRestUtils.requestMethod('Put'); -var /** @type {?} */ DELETE = HttpRestUtils.requestMethod('Delete'); -var /** @type {?} */ OPTIONS = HttpRestUtils.requestMethod('Options'); -var /** @type {?} */ HEAD = HttpRestUtils.requestMethod('Head'); -var /** @type {?} */ PATCH = HttpRestUtils.requestMethod('Patch'); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes} checked by tsc - */ - -export { Path, PathParam, Body, Query, QueryParam, QueryParams, Observe, Headers, Produces, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, HttpRestModule, onAppInit, observe, path, body, query, headers, produces, HttpRestUtils }; - -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtYW5ub3RhdGlvbnMuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1odHRwLWFubm90YXRpb25zL3NyYy9uZ3gtaHR0cC1hbm5vdGF0aW9ucy51dGlscy50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZS50cyIsIm5nOi8vbmd4LWh0dHAtYW5ub3RhdGlvbnMvcHVibGljX2FwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSHR0cE9ic2VydmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHAvc3JjL2NsaWVudFwiO1xyXG5cclxuaW50ZXJmYWNlIGh0dHBSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgYm9keT86IGFueTtcclxuICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgcGFyYW1zPzogSHR0cFBhcmFtcztcclxuICBvYnNlcnZlPzogSHR0cE9ic2VydmU7XHJcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlKGFubm90YXRpb25zOiBhbnkpIHtcclxuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwUmVzdFV0aWxzLmRlY29yYXRlLmFwcGx5KHRoaXMsIFsnb2JzZXJ2ZScsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHBhdGgoYW5ub3RhdGlvbnM6IGFueSkge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwYXRoJywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gYm9keShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2JvZHknLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBxdWVyeShhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ3F1ZXJ5JywgYW5ub3RhdGlvbnMsIC4uLmFyZ3NdKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaGVhZGVycyhhbm5vdGF0aW9uczogYW55KSB7XHJcbiAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gSHR0cFJlc3RVdGlscy5kZWNvcmF0ZS5hcHBseSh0aGlzLCBbJ2hlYWRlcnMnLCBhbm5vdGF0aW9ucywgLi4uYXJnc10pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlcyhhbm5vdGF0aW9uczogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jykge1xyXG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IEh0dHBSZXN0VXRpbHMuZGVjb3JhdGUuYXBwbHkodGhpcywgWydwcm9kdWNlcycsIGFubm90YXRpb25zLCAuLi5hcmdzXSk7XHJcbn1cclxuXHJcbnR5cGUgUmVzb3VyY2VNZXRhZGF0YVR5cGUgPSAnY2xhc3MnfCdtZXRob2RzJ3wncGFyYW1zJ3wncHJvcHMnO1xyXG5pbnRlcmZhY2UgRXh0cmFFbnRpdHlEYXRhIHtcclxuICBrZXlOYW1lOiBzdHJpbmc7XHJcbiAgaW5kZXg6IG51bWJlcjtcclxufVxyXG5jb25zdCBSRVNPVVJTRV9NRVRBREFUQV9ST09UID0gJ3Jlc291cmNlc19tZXRhZGF0YSc7XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdFV0aWxzIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBodHRwOiBIdHRwQ2xpZW50ID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWNvcmF0ZShkZWNvcmF0b3JOYW1lOiBzdHJpbmcsIGFubm90YXRpb25zOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAxOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0XSA9IGFyZ3M7XHJcbiAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ2NsYXNzJywgYW5ub3RhdGlvbnMsIHRhcmdldC5wcm90b3R5cGUgXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyOiB7XHJcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0LCBrZXldID0gYXJncztcclxuICAgICAgICAgIEh0dHBSZXN0VXRpbHMuY29uc3RydWN0TWV0YWRhdGEuYXBwbHkodGhpcywgWyBkZWNvcmF0b3JOYW1lLCAncHJvcHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0IF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1syXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgaW5kZXhdID0gYXJncztcclxuICAgICAgICAgICAgSHR0cFJlc3RVdGlscy5jb25zdHJ1Y3RNZXRhZGF0YS5hcHBseSh0aGlzLCBbIGRlY29yYXRvck5hbWUsICdwYXJhbXMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUsIGluZGV4IH0gXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgW3RhcmdldCwga2V5TmFtZSwgZGVzY3JpcHRvcl0gPSBhcmdzO1xyXG4gICAgICAgICAgICBIdHRwUmVzdFV0aWxzLmNvbnN0cnVjdE1ldGFkYXRhLmFwcGx5KHRoaXMsIFsgZGVjb3JhdG9yTmFtZSwgJ21ldGhvZHMnLCBhbm5vdGF0aW9ucywgdGFyZ2V0LCB7IGtleU5hbWUgfSBdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVjb3JhdG9ycyBhcmUgbm90IHZhbGlkIGhlcmUhJyk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB1cCBtZXRhZGFkYVxyXG4gICAqIEBwYXJhbSB0eXBlIEVudGl0eSB0eXBlXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIG9mIG1ldGFkYXRhXHJcbiAgICogQHBhcmFtIHRhcmdldCBQcm90b3R5cGUgb2YgY3VycmVudCBvYmplY3RcclxuICAgKiBAcGFyYW0gbWV0YU5hbWUgRGVjb3JhdG9yIG5hbWVcclxuICAgKiBAcGFyYW0gZW50aXR5RGF0YSBFbnRpdHkgZXh0cmEgZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGNvbnN0cnVjdE1ldGFkYXRhKG1ldGFOYW1lOiBzdHJpbmcsIGVudGl0eVR5cGU6IFJlc291cmNlTWV0YWRhdGFUeXBlLCB2YWx1ZTogYW55LCB0YXJnZXQ6IGFueSwgZW50aXR5RGF0YT86IEV4dHJhRW50aXR5RGF0YSkge1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdIHx8IHt9O1xyXG4gICAgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IHJvb3RNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXTtcclxuICAgIGNvbnN0IG1ldGFkYXRhT2JqID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdW2VudGl0eVR5cGVdO1xyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5rZXlOYW1lKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV0gPSBtZXRhZGF0YU9ialtlbnRpdHlEYXRhLmtleU5hbWVdIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKGVudGl0eURhdGEgJiYgZW50aXR5RGF0YS5pbmRleCAhPSBudWxsKSB7XHJcbiAgICAgIG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdID0gbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gfHwge307XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGVudGl0eVR5cGUpIHtcclxuICAgICAgY2FzZSAnY2xhc3MnOiBtZXRhZGF0YU9ialttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Byb3BzJzogbWV0YWRhdGFPYmpbbWV0YU5hbWVdID0gdmFsdWU7IGJyZWFrO1xyXG4gICAgICBjYXNlICdtZXRob2RzJzogbWV0YWRhdGFPYmpbZW50aXR5RGF0YS5rZXlOYW1lXVttZXRhTmFtZV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhcmFtcyc6IG1ldGFkYXRhT2JqW2VudGl0eURhdGEua2V5TmFtZV1bbWV0YU5hbWVdW3ZhbHVlIHx8ICdkZWZhdWx0J10gPSBlbnRpdHlEYXRhLmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXVtlbnRpdHlUeXBlXSA9IG1ldGFkYXRhT2JqO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0TWV0aG9kKHJlcXVlc3RNZXRob2ROYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAvLyBAZHluYW1pY1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IGFueSkgPT4ge1xyXG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0VXJsKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBib2R5ID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0Qm9keSh0YXJnZXQsIGtleSwgYXJncyk7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gSHR0cFJlc3RVdGlscy5jb2xsZWN0UXVlcnlQYXJhbXModGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBIdHRwUmVzdFV0aWxzLmNvbGxlY3RIZWFkZXJzKHRhcmdldCwga2V5LCBhcmdzKTtcclxuICAgICAgICBjb25zdCBwcm9kdWNlc1R5cGUgPSBIdHRwUmVzdFV0aWxzLnByb2R1Y2UodGFyZ2V0LCBrZXksIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmUgPSBIdHRwUmVzdFV0aWxzLmdldE9ic2VydmUodGFyZ2V0LCBrZXksIGFyZ3MpXHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBodHRwUmVxdWVzdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgcGFyYW1zOiBzZWFyY2gsXHJcbiAgICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiBwcm9kdWNlc1R5cGUsXHJcbiAgICAgICAgICBvYnNlcnZlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gSHR0cFJlc3RVdGlscy5odHRwLnJlcXVlc3QocmVxdWVzdE1ldGhvZE5hbWUsIHVybCwgcGFyYW1zKTtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRPYnNlcnZlKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNcclxuICAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgIHJldHVybiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5vYnNlcnZlO1xyXG4gICAgIH1cclxuICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvZHVjZSh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzXHJcbiAgICAgJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLm1ldGhvZHNbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgcmV0dXJuIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLnByb2R1Y2VzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbGxlY3RVcmwodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0gJiYgdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzXHJcbiAgICAgICAgICAgICAgICAgID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLnBhdGhcclxuICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IG1ldGhvZFVybCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXS5wYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IGlzUmVsYXRpdmVQYXRoID0gYCR7YmFzZVVybH0ke21ldGhvZFVybH1gWzBdID09PSAnLyc7XHJcbiAgICBjb25zdCBtZXRob2RVcmxXaXRoUGFyYW1zXHJcbiAgICAgID0gW2Jhc2VVcmwsIG1ldGhvZFVybF1cclxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gcGF0aClcclxuICAgICAgICAuam9pbignLycpXHJcbiAgICAgICAgLnNwbGl0KCcvJylcclxuICAgICAgICAubWFwKHBhdGggPT4ge1xyXG4gICAgICAgICAgaWYgKCBwYXRoWzBdID09PSAnOicpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnBhdGhbcGFyYW1OYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBwYXRoKVxyXG4gICAgICAgIC5qb2luKCcvJyk7XHJcblxyXG4gICAgaWYgKCFpc1JlbGF0aXZlUGF0aCkge1xyXG4gICAgICBjb25zdCBbYWJzb2x1dGVQcmVmaXgsIC4uLnBhdGhzXSA9IG1ldGhvZFVybFdpdGhQYXJhbXMuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIGAkeyBhYnNvbHV0ZVByZWZpeCB9Ly8keyBwYXRocy5qb2luKCcvJykgfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYC8keyBtZXRob2RVcmxXaXRoUGFyYW1zIH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdEJvZHkodGFyZ2V0OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pIHtcclxuICAgIGlmICghdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1xyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdXHJcbiAgICAgfHwgIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0uYm9keS5kZWZhdWx0O1xyXG4gICAgcmV0dXJuIGFyZ3NbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFF1ZXJ5UGFyYW1zKHRhcmdldDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAoIXRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNcclxuICAgICB8fCAhdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXVxyXG4gICAgIHx8ICF0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ucGFyYW1zW21ldGhvZE5hbWVdLnF1ZXJ5KSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBxdWVyeVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc09iamVjdEluZGV4ID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLnBhcmFtc1ttZXRob2ROYW1lXS5xdWVyeS5kZWZhdWx0O1xyXG4gICAgY29uc3QgcXVlcnlNZXRhZGF0YSA9IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5wYXJhbXNbbWV0aG9kTmFtZV0ucXVlcnk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtc0NvbGxlY3Rpb24gPSBxdWVyeVBhcmFtc09iamVjdEluZGV4ICE9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXJnc1txdWVyeVBhcmFtc09iamVjdEluZGV4XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LmtleXMocXVlcnlNZXRhZGF0YSkucmVkdWNlKChtZXJnZWRPYmosIHBhcmFtTmFtZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obWVyZ2VkT2JqLCB7IFtwYXJhbU5hbWVdOiBhcmdzW3F1ZXJ5TWV0YWRhdGFbcGFyYW1OYW1lXV0gfSksIHt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhxdWVyeVBhcmFtc0NvbGxlY3Rpb24pXHJcbiAgICAgIC5mb3JFYWNoKHBhcmFtTmFtZSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gcXVlcnlQYXJhbXNDb2xsZWN0aW9uW3BhcmFtTmFtZV07XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgeyB2YWx1ZSA9IFsgdmFsdWUgXTsgfVxyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKGN1clBhcmFtOiBhbnkpID0+IHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMuYXBwZW5kKHBhcmFtTmFtZSwgY3VyUGFyYW0pKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb2xsZWN0SGVhZGVycyh0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgY2xhc3NIZWFkZXJzID0gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzID8gdGFyZ2V0W1JFU09VUlNFX01FVEFEQVRBX1JPT1RdLmNsYXNzLmhlYWRlcnMgOiB7fTtcclxuICAgIGNvbnN0IG1ldGhvZEhlYWRlcnMgPSB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kcyAmJiB0YXJnZXRbUkVTT1VSU0VfTUVUQURBVEFfUk9PVF0ubWV0aG9kc1ttZXRob2ROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFtSRVNPVVJTRV9NRVRBREFUQV9ST09UXS5tZXRob2RzW21ldGhvZE5hbWVdLmhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcclxuICAgIGNvbnN0IG1lcmdlZEhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBjbGFzc0hlYWRlcnMsIG1ldGhvZEhlYWRlcnMpO1xyXG5cclxuICAgIGNvbnN0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiBtZXJnZWRIZWFkZXJzKSB7XHJcbiAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChoZWFkZXIsIG1lcmdlZEhlYWRlcnNbaGVhZGVyXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHR0cEhlYWRlcnM7XHJcbiAgfVxyXG59IiwiaW1wb3J0IHsgTmdNb2R1bGUsIEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVzdFV0aWxzIH0gZnJvbSBcIi4vbmd4LWh0dHAtYW5ub3RhdGlvbnMudXRpbHNcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbi8vIEBkeW5hbWljXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbSHR0cENsaWVudE1vZHVsZV0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgeyBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsIHVzZUZhY3Rvcnk6IG9uQXBwSW5pdCwgbXVsdGk6IHRydWUsIGRlcHM6IFtIdHRwQ2xpZW50XSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzdE1vZHVsZSB7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvbkFwcEluaXQoaHR0cDogSHR0cENsaWVudCkge1xyXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICBIdHRwUmVzdFV0aWxzLmh0dHAgPSBodHRwO1xyXG4gIH1cclxufSIsImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzJztcclxuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cFJlc3RVdGlscywgcGF0aCwgYm9keSwgcXVlcnksIGhlYWRlcnMsIHByb2R1Y2VzLCBvYnNlcnZlIH0gZnJvbSBcIi4vc3JjL25neC1odHRwLWFubm90YXRpb25zLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgbGV0IFBhdGggPSBwYXRoO1xyXG5leHBvcnQgbGV0IFBhdGhQYXJhbSA9IHBhdGg7XHJcbmV4cG9ydCBsZXQgQm9keSA9IGJvZHkobnVsbCk7XHJcbmV4cG9ydCBsZXQgUXVlcnkgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBRdWVyeVBhcmFtID0gcXVlcnk7XHJcbmV4cG9ydCBsZXQgUXVlcnlQYXJhbXMgPSBxdWVyeShudWxsKTtcclxuZXhwb3J0IGxldCBPYnNlcnZlID0gb2JzZXJ2ZTtcclxuXHJcbi8vIEhlYWRlcnNcclxuZXhwb3J0IGxldCBIZWFkZXJzID0gaGVhZGVycztcclxuXHJcbi8vIFByb2R1Y2VzXHJcbmV4cG9ydCBsZXQgUHJvZHVjZXMgPSBwcm9kdWNlcztcclxuXHJcbi8vIFJlcXVlc3QgbWV0aG9kc1xyXG5leHBvcnQgbGV0IEdFVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnR2V0Jyk7XHJcbmV4cG9ydCBsZXQgUE9TVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUG9zdCcpO1xyXG5leHBvcnQgbGV0IFBVVCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnUHV0Jyk7XHJcbmV4cG9ydCBsZXQgREVMRVRFID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdEZWxldGUnKTtcclxuZXhwb3J0IGxldCBPUFRJT05TID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdPcHRpb25zJyk7XHJcbmV4cG9ydCBsZXQgSEVBRCA9IEh0dHBSZXN0VXRpbHMucmVxdWVzdE1ldGhvZCgnSGVhZCcpO1xyXG5leHBvcnQgbGV0IFBBVENIID0gSHR0cFJlc3RVdGlscy5yZXF1ZXN0TWV0aG9kKCdQYXRjaCcpOyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFnQkEsaUJBQXdCLFdBQWdCO0lBQXhDLGlCQUVDO0lBREMsT0FBTztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLFlBQUcsU0FBUyxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7S0FBQSxDQUFDO0NBQ2xHOzs7OztBQUNELGNBQXFCLFdBQWdCO0lBQXJDLGlCQUVDO0lBREMsT0FBTztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLFlBQUcsTUFBTSxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7S0FBQSxDQUFDO0NBQy9GOzs7OztBQUNELGNBQXFCLFdBQWdCO0lBQXJDLGlCQUVDO0lBREMsT0FBTztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLFlBQUcsTUFBTSxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7S0FBQSxDQUFDO0NBQy9GOzs7OztBQUNELGVBQXNCLFdBQWdCO0lBQXRDLGlCQUVDO0lBREMsT0FBTztRQUFDLGNBQWM7YUFBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1lBQWQseUJBQWM7O1FBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLFlBQUcsT0FBTyxFQUFFLFdBQVcsR0FBSyxJQUFJLEVBQUU7S0FBQSxDQUFDO0NBQ2hHOzs7OztBQUNELGlCQUF3QixX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 \ No newline at end of file diff --git a/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js.map b/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js.map deleted file mode 100644 index bd818c4..0000000 --- a/dist/ngx-http-annotations/fesm5/ngx-http-annotations.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ngx-http-annotations.js.map","sources":["ng://ngx-http-annotations/src/ngx-http-annotations.utils.ts","ng://ngx-http-annotations/src/ngx-http-annotations.module.ts","ng://ngx-http-annotations/public_api.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from \"@angular/common/http\";\r\nimport { HttpObserve } from \"@angular/common/http/src/client\";\r\n\r\ninterface httpRequestOptions {\r\n body?: any;\r\n headers?: HttpHeaders;\r\n params?: HttpParams;\r\n observe?: HttpObserve;\r\n reportProgress?: boolean;\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n withCredentials?: boolean;\r\n}\r\n\r\n\r\nexport function observe(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['observe', annotations, ...args]);\r\n}\r\nexport function path(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['path', annotations, ...args]);\r\n}\r\nexport function body(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['body', annotations, ...args]);\r\n}\r\nexport function query(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['query', annotations, ...args]);\r\n}\r\nexport function headers(annotations: any) {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['headers', annotations, ...args]);\r\n}\r\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\r\n return (...args: any[]) => HttpRestUtils.decorate.apply(this, ['produces', annotations, ...args]);\r\n}\r\n\r\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\r\ninterface ExtraEntityData {\r\n keyName: string;\r\n index: number;\r\n}\r\nconst RESOURSE_METADATA_ROOT = 'resources_metadata';\r\n// @dynamic\r\nexport class HttpRestUtils {\r\n\r\n public static http: HttpClient = null;\r\n\r\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\r\n switch (args.length) {\r\n case 1: {\r\n const [target] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'class', annotations, target.prototype ]);\r\n break;\r\n }\r\n case 2: {\r\n const [target, key] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'props', annotations, target ]);\r\n break;\r\n }\r\n case 3:\r\n if (typeof args[2] === 'number') {\r\n const [target, keyName, index] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'params', annotations, target, { keyName, index } ]);\r\n break;\r\n } else {\r\n const [target, keyName, descriptor] = args;\r\n HttpRestUtils.constructMetadata.apply(this, [ decoratorName, 'methods', annotations, target, { keyName } ]);\r\n break;\r\n }\r\n default:\r\n throw new Error('Decorators are not valid here!');\r\n }\r\n }\r\n\r\n /**\r\n * Set up metadada\r\n * @param type Entity type\r\n * @param value Value of metadata\r\n * @param target Prototype of current object\r\n * @param metaName Decorator name\r\n * @param entityData Entity extra data\r\n */\r\n private static constructMetadata(metaName: string, entityType: ResourceMetadataType, value: any, target: any, entityData?: ExtraEntityData) {\r\n target[RESOURSE_METADATA_ROOT] = target[RESOURSE_METADATA_ROOT] || {};\r\n target[RESOURSE_METADATA_ROOT][entityType] = target[RESOURSE_METADATA_ROOT][entityType] || {};\r\n\r\n const rootMetadata = target[RESOURSE_METADATA_ROOT];\r\n const metadataObj = target[RESOURSE_METADATA_ROOT][entityType];\r\n if (entityData && entityData.keyName) {\r\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\r\n }\r\n if (entityData && entityData.index != null) {\r\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\r\n }\r\n switch (entityType) {\r\n case 'class': metadataObj[metaName] = value; break;\r\n case 'props': metadataObj[metaName] = value; break;\r\n case 'methods': metadataObj[entityData.keyName][metaName] = value; break;\r\n case 'params': metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index;\r\n }\r\n\r\n target[RESOURSE_METADATA_ROOT][entityType] = metadataObj;\r\n }\r\n\r\n public static requestMethod(requestMethodName: string): any {\r\n // @dynamic\r\n return (target: any, key: string, descriptor: any) => {\r\n descriptor.value = function (...args: any[]) {\r\n const url = HttpRestUtils.collectUrl(target, key, args);\r\n const body = HttpRestUtils.collectBody(target, key, args);\r\n const search = HttpRestUtils.collectQueryParams(target, key, args);\r\n const headers = HttpRestUtils.collectHeaders(target, key, args);\r\n const producesType = HttpRestUtils.produce(target, key, args);\r\n const observe = HttpRestUtils.getObserve(target, key, args)\r\n const params: httpRequestOptions = {\r\n body,\r\n params: search,\r\n headers,\r\n responseType: producesType,\r\n observe\r\n };\r\n return HttpRestUtils.http.request(requestMethodName, url, params);\r\n };\r\n };\r\n }\r\n\r\n private static getObserve(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].observe;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static produce(target: any, methodName: string, args: any[]) {\r\n if (target[RESOURSE_METADATA_ROOT].methods\r\n && target[RESOURSE_METADATA_ROOT].methods[methodName]) {\r\n return target[RESOURSE_METADATA_ROOT].methods[methodName].produces;\r\n }\r\n return undefined;\r\n }\r\n\r\n private static collectUrl(target: any, methodName: string, args: any[]) {\r\n const baseUrl = target[RESOURSE_METADATA_ROOT] && target[RESOURSE_METADATA_ROOT].class\r\n ? target[RESOURSE_METADATA_ROOT].class.path\r\n : '';\r\n const methodUrl = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].path\r\n : '';\r\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\r\n const methodUrlWithParams\r\n = [baseUrl, methodUrl]\r\n .filter(path => path)\r\n .join('/')\r\n .split('/')\r\n .map(path => {\r\n if ( path[0] === ':') {\r\n const paramName = path.substring(1);\r\n const index = target[RESOURSE_METADATA_ROOT].params\r\n && target[RESOURSE_METADATA_ROOT].params[methodName]\r\n && target[RESOURSE_METADATA_ROOT].params[methodName].path\r\n ? target[RESOURSE_METADATA_ROOT].params[methodName].path[paramName]\r\n : '';\r\n return args[index];\r\n }\r\n return path;\r\n })\r\n .filter(path => path)\r\n .join('/');\r\n\r\n if (!isRelativePath) {\r\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\r\n return `${ absolutePrefix }//${ paths.join('/') }`;\r\n }\r\n return `/${ methodUrlWithParams }`;\r\n }\r\n\r\n private static collectBody(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].body) return undefined;\r\n\r\n const index = target[RESOURSE_METADATA_ROOT].params[methodName].body.default;\r\n return args[index];\r\n }\r\n\r\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\r\n if (!target[RESOURSE_METADATA_ROOT].params\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName]\r\n || !target[RESOURSE_METADATA_ROOT].params[methodName].query) return undefined;\r\n\r\n let queryParams = new HttpParams();\r\n const queryParamsObjectIndex = target[RESOURSE_METADATA_ROOT].params[methodName].query.default;\r\n const queryMetadata = target[RESOURSE_METADATA_ROOT].params[methodName].query;\r\n const queryParamsCollection = queryParamsObjectIndex != undefined\r\n ? args[queryParamsObjectIndex]\r\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\r\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\r\n );\r\n\r\n Object.keys(queryParamsCollection)\r\n .forEach(paramName => {\r\n let value = queryParamsCollection[paramName];\r\n if (!Array.isArray(value)) { value = [ value ]; }\r\n value.forEach((curParam: any) => queryParams = queryParams.append(paramName, curParam));\r\n });\r\n return queryParams;\r\n }\r\n\r\n private static collectHeaders(target: any, methodName: string, args: any[]) {\r\n const classHeaders = target[RESOURSE_METADATA_ROOT].class ? target[RESOURSE_METADATA_ROOT].class.headers : {};\r\n const methodHeaders = target[RESOURSE_METADATA_ROOT].methods && target[RESOURSE_METADATA_ROOT].methods[methodName]\r\n ? target[RESOURSE_METADATA_ROOT].methods[methodName].headers\r\n : {};\r\n const mergedHeaders = Object.assign({}, classHeaders, methodHeaders);\r\n\r\n const httpHeaders = new HttpHeaders();\r\n for (const header in mergedHeaders) {\r\n httpHeaders.append(header, mergedHeaders[header]);\r\n }\r\n return httpHeaders;\r\n }\r\n}","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpRestUtils } from \"./ngx-http-annotations.utils\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n// @dynamic\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [\r\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] }\r\n ]\r\n})\r\nexport class HttpRestModule {\r\n}\r\n\r\nexport function onAppInit(http: HttpClient) {\r\n return function () {\r\n HttpRestUtils.http = http;\r\n }\r\n}","export * from './src/ngx-http-annotations.module';\r\nexport * from './src/ngx-http-annotations.utils';\r\nimport { Response } from '@angular/http';\r\nimport { HttpRestUtils, path, body, query, headers, produces, observe } from \"./src/ngx-http-annotations.utils\";\r\n\r\nexport let Path = path;\r\nexport let PathParam = path;\r\nexport let Body = body(null);\r\nexport let Query = query(null);\r\nexport let QueryParam = query;\r\nexport let QueryParams = query(null);\r\nexport let Observe = observe;\r\n\r\n// Headers\r\nexport let Headers = headers;\r\n\r\n// Produces\r\nexport let Produces = produces;\r\n\r\n// Request methods\r\nexport let GET = HttpRestUtils.requestMethod('Get');\r\nexport let POST = HttpRestUtils.requestMethod('Post');\r\nexport let PUT = HttpRestUtils.requestMethod('Put');\r\nexport let DELETE = HttpRestUtils.requestMethod('Delete');\r\nexport let OPTIONS = HttpRestUtils.requestMethod('Options');\r\nexport let HEAD = HttpRestUtils.requestMethod('Head');\r\nexport let PATCH = HttpRestUtils.requestMethod('Patch');"],"names":[],"mappings":"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"} diff --git a/dist/ngx-http-annotations/ngx-http-annotations.d.ts b/dist/ngx-http-annotations/ngx-http-annotations.d.ts deleted file mode 100644 index 7417cc8..0000000 --- a/dist/ngx-http-annotations/ngx-http-annotations.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Generated bundle index. Do not edit. - */ -export * from './public_api'; diff --git a/dist/ngx-http-annotations/ngx-http-annotations.metadata.json b/dist/ngx-http-annotations/ngx-http-annotations.metadata.json deleted file mode 100644 index c53df0a..0000000 --- a/dist/ngx-http-annotations/ngx-http-annotations.metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"__symbolic":"module","version":4,"metadata":{"Path":{"__symbolic":"reference","name":"path"},"PathParam":{"__symbolic":"reference","name":"path"},"Body":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"body"},"arguments":[null]},"Query":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"query"},"arguments":[null]},"QueryParam":{"__symbolic":"reference","name":"query"},"QueryParams":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"query"},"arguments":[null]},"Observe":{"__symbolic":"reference","name":"observe"},"Headers":{"__symbolic":"reference","name":"headers"},"Produces":{"__symbolic":"reference","name":"produces"},"GET":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Get"]},"POST":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Post"]},"PUT":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Put"]},"DELETE":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Delete"]},"OPTIONS":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Options"]},"HEAD":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Head"]},"PATCH":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"HttpRestUtils"},"member":"requestMethod"},"arguments":["Patch"]},"HttpRestModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":6,"character":14}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_INITIALIZER","line":8,"character":17},"useFactory":{"__symbolic":"reference","name":"onAppInit"},"multi":true,"deps":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":8,"character":77}]}]}]}],"members":{}},"onAppInit":{"__symbolic":"function","parameters":["http"],"value":{"__symbolic":"error","message":"Lambda not supported","line":15,"character":9,"module":"./src/ngx-http-annotations.module"}},"observe":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":17,"character":9,"module":"./src/ngx-http-annotations.utils"}},"path":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":20,"character":9,"module":"./src/ngx-http-annotations.utils"}},"body":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":23,"character":9,"module":"./src/ngx-http-annotations.utils"}},"query":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":26,"character":9,"module":"./src/ngx-http-annotations.utils"}},"headers":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":29,"character":9,"module":"./src/ngx-http-annotations.utils"}},"produces":{"__symbolic":"function","parameters":["annotations"],"value":{"__symbolic":"error","message":"Lambda not supported","line":32,"character":9,"module":"./src/ngx-http-annotations.utils"}},"HttpRestUtils":{"__symbolic":"class","members":{},"statics":{"http":null,"requestMethod":{"__symbolic":"function","parameters":["requestMethodName"],"value":{"__symbolic":"error","message":"Lambda not supported","line":105,"character":11,"module":"./src/ngx-http-annotations.utils"}}}}},"origins":{"Path":"./src/ngx-http-annotations.utils","PathParam":"./src/ngx-http-annotations.utils","Body":"./public_api","Query":"./public_api","QueryParam":"./src/ngx-http-annotations.utils","QueryParams":"./public_api","Observe":"./src/ngx-http-annotations.utils","Headers":"./src/ngx-http-annotations.utils","Produces":"./src/ngx-http-annotations.utils","GET":"./public_api","POST":"./public_api","PUT":"./public_api","DELETE":"./public_api","OPTIONS":"./public_api","HEAD":"./public_api","PATCH":"./public_api","HttpRestModule":"./src/ngx-http-annotations.module","onAppInit":"./src/ngx-http-annotations.module","observe":"./src/ngx-http-annotations.utils","path":"./src/ngx-http-annotations.utils","body":"./src/ngx-http-annotations.utils","query":"./src/ngx-http-annotations.utils","headers":"./src/ngx-http-annotations.utils","produces":"./src/ngx-http-annotations.utils","HttpRestUtils":"./src/ngx-http-annotations.utils"},"importAs":"ngx-http-annotations"} \ No newline at end of file diff --git a/dist/ngx-http-annotations/package.json b/dist/ngx-http-annotations/package.json deleted file mode 100644 index 2044434..0000000 --- a/dist/ngx-http-annotations/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "ngx-http-annotations", - "description": "Somes annotations to call http with angular like @GET, @PUT, @POST etc...", - "version": "0.5.2", - "main": "bundles/ngx-http-annotations.umd.js", - "files": [ - "src" - ], - "directories": { - "src": "src" - }, - "devDependencies": { - "@angular-devkit/build-angular": "~0.6.0", - "@angular-devkit/schematics": "^0.6.0", - "@angular/cli": "6.0.5", - "@angular/common": "6.0.3", - "@angular/compiler": "6.0.3", - "@angular/compiler-cli": "6.0.3", - "@angular/core": "6.0.3", - "@angular/forms": "6.0.3", - "@angular/http": "6.0.3", - "@angular/language-service": "6.0.3", - "@angular/platform-browser": "6.0.3", - "@angular/platform-browser-dynamic": "6.0.3", - "@angular/router": "6.0.3", - "core-js": "^2.4.1", - "ng-packagr": "^3.0.0", - "rxjs": "^6.0.0-beta.1", - "typescript": "2.7.2", - "zone.js": "0.8.26" - }, - "author": "Mixalloff, Manudss", - "keywords": [ - "angular", - "ng2", - "ngx", - "http", - "rest", - "annotations", - "annotations", - "api" - ], - "license": "MIT", - "repository": "https://github.com/manudss/ngx-http-annotations", - "module": "fesm5/ngx-http-annotations.js", - "es2015": "fesm2015/ngx-http-annotations.js", - "esm5": "esm5/ngx-http-annotations.js", - "esm2015": "esm2015/ngx-http-annotations.js", - "fesm5": "fesm5/ngx-http-annotations.js", - "fesm2015": "fesm2015/ngx-http-annotations.js", - "typings": "ngx-http-annotations.d.ts", - "metadata": "ngx-http-annotations.metadata.json", - "sideEffects": false, - "dependencies": { - "tslib": "^1.9.0" - } -} diff --git a/dist/ngx-http-annotations/public_api.d.ts b/dist/ngx-http-annotations/public_api.d.ts deleted file mode 100644 index e07ec65..0000000 --- a/dist/ngx-http-annotations/public_api.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export * from './src/ngx-http-annotations.module'; -export * from './src/ngx-http-annotations.utils'; -import { path, query, headers, produces, observe } from "./src/ngx-http-annotations.utils"; -export declare let Path: typeof path; -export declare let PathParam: typeof path; -export declare let Body: (...args: any[]) => any; -export declare let Query: (...args: any[]) => any; -export declare let QueryParam: typeof query; -export declare let QueryParams: (...args: any[]) => any; -export declare let Observe: typeof observe; -export declare let Headers: typeof headers; -export declare let Produces: typeof produces; -export declare let GET: any; -export declare let POST: any; -export declare let PUT: any; -export declare let DELETE: any; -export declare let OPTIONS: any; -export declare let HEAD: any; -export declare let PATCH: any; diff --git a/dist/ngx-http-annotations/src/ngx-http-annotations.module.d.ts b/dist/ngx-http-annotations/src/ngx-http-annotations.module.d.ts deleted file mode 100644 index 0cbbe66..0000000 --- a/dist/ngx-http-annotations/src/ngx-http-annotations.module.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { HttpClient } from "@angular/common/http"; -export declare class HttpRestModule { -} -export declare function onAppInit(http: HttpClient): () => void; diff --git a/dist/ngx-http-annotations/src/ngx-http-annotations.utils.d.ts b/dist/ngx-http-annotations/src/ngx-http-annotations.utils.d.ts deleted file mode 100644 index 4973f0c..0000000 --- a/dist/ngx-http-annotations/src/ngx-http-annotations.utils.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { HttpClient } from "@angular/common/http"; -export declare function observe(annotations: any): (...args: any[]) => any; -export declare function path(annotations: any): (...args: any[]) => any; -export declare function body(annotations: any): (...args: any[]) => any; -export declare function query(annotations: any): (...args: any[]) => any; -export declare function headers(annotations: any): (...args: any[]) => any; -export declare function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text'): (...args: any[]) => any; -export declare class HttpRestUtils { - static http: HttpClient; - static decorate(decoratorName: string, annotations: any, ...args: any[]): void; - /** - * Set up metadada - * @param type Entity type - * @param value Value of metadata - * @param target Prototype of current object - * @param metaName Decorator name - * @param entityData Entity extra data - */ - private static constructMetadata(metaName, entityType, value, target, entityData?); - static requestMethod(requestMethodName: string): any; - private static getObserve(target, methodName, args); - private static produce(target, methodName, args); - private static collectUrl(target, methodName, args); - private static collectBody(target, methodName, args); - private static collectQueryParams(target, methodName, args); - private static collectHeaders(target, methodName, args); -}