diff --git a/package.json b/package.json index 8ed4284..177f8a9 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@ngrx/router-store": "^5.2.0", "@ngrx/store": "^5.2.0", "@ngrx/store-devtools": "^5.2.0", - "angular-tree-component": "^7.0.2", + "angular-tree-component": "^7.1.0", "angularx-qrcode": "^1.0.1", "angular-l10n": "^4.1.5", "core-js": "^2.5.3", @@ -39,6 +39,7 @@ "ngx-cookie-service": "^1.0.10", "ngx-perfect-scrollbar": "^5.3.1", "nvd3": "^1.8.6", + "reflect-metadata": "^0.1.12", "rxjs": "^5.5.6", "zone.js": "^0.8.20", "ip-cidr": "^1.1.2" diff --git a/src/@loafer/core/error.ts b/src/@loafer/core/error.ts new file mode 100644 index 0000000..e1e727b --- /dev/null +++ b/src/@loafer/core/error.ts @@ -0,0 +1,6 @@ +export class IllegalArgumentError extends Error { + public constructor(message?: string) { + super(message); + Object.setPrototypeOf(this, new.target.prototype); + } +} diff --git a/src/@loafer/core/index.ts b/src/@loafer/core/index.ts new file mode 100644 index 0000000..b38ebc9 --- /dev/null +++ b/src/@loafer/core/index.ts @@ -0,0 +1 @@ +export * from './type'; diff --git a/src/@loafer/core/reflect/AccessibleObject.ts b/src/@loafer/core/reflect/AccessibleObject.ts new file mode 100644 index 0000000..5e31fab --- /dev/null +++ b/src/@loafer/core/reflect/AccessibleObject.ts @@ -0,0 +1,64 @@ +import { + Type, +} from '../type'; + +import { + TypeUtil, +} from '../util/TypeUtil'; + +import { AnnotatedElement } from './AnnotatedElement'; +import { Annotation } from './Annotation'; + +export abstract class AccessibleObject implements AnnotatedElement { + private _annotations: Map, Annotation>; + + protected constructor() { + this._annotations = new Map(); + } + + public _addAnnotation(annotation: AnnotationType): void { + this._annotations.set(TypeUtil.getType(annotation), annotation); + } + + public isAnnotationPresent(annotationClass: Type): boolean { + return null !== this.getAnnotation(annotationClass); + } + + public getOwnAnnotation(annotationClass: Type): AnnotationType | undefined { + return this._annotations.get(annotationClass); + } + + public getOwnAnnotations(): Map, Annotation> { + return this._annotations; + } + + public getOwnAnnotationsByType(annotationClass: Type) + : AnnotationType[] | undefined { + if (0 === this._annotations.size) { + return undefined; + } + const results: AnnotationType[] = []; + for (const classType of Array.from(this._annotations.keys())) { + if (classType === annotationClass) { + results.push(this._annotations.get(classType)); + } + } + if (0 === results.length) { + return undefined; + } + return results; + } + + public getAnnotation(annotationClass: Type): AnnotationType | undefined { + return this.getOwnAnnotation(annotationClass); + } + + public getAnnotations(): Map, Annotation> { + return this.getOwnAnnotations(); + } + + public getAnnotationsByType(annotationClass: Type) + : AnnotationType[] | undefined { + return this.getOwnAnnotationsByType(annotationClass); + } +} diff --git a/src/@loafer/core/reflect/AnnotatedElement.ts b/src/@loafer/core/reflect/AnnotatedElement.ts new file mode 100644 index 0000000..3cd1663 --- /dev/null +++ b/src/@loafer/core/reflect/AnnotatedElement.ts @@ -0,0 +1,17 @@ +import { + Type, +} from '../type'; + +import { Annotation } from './Annotation'; + +export interface AnnotatedElement { + _addAnnotation(annotation: AnnotationType): void; + + isAnnotationPresent(annotationClass: Type): boolean; + getOwnAnnotation(annotationClass: Type): AnnotationType | undefined; + getOwnAnnotations(): Map, Annotation>; + getOwnAnnotationsByType(annotationClass: Type): AnnotationType[] | undefined; + getAnnotation(annotationClass: Type): AnnotationType | undefined; + getAnnotations(): Map, Annotation>; + getAnnotationsByType(annotationClass: Type): AnnotationType[] | undefined; +} diff --git a/src/@loafer/core/reflect/Annotation.ts b/src/@loafer/core/reflect/Annotation.ts new file mode 100644 index 0000000..7155b2d --- /dev/null +++ b/src/@loafer/core/reflect/Annotation.ts @@ -0,0 +1,7 @@ +export abstract class Annotation { + public readonly attribute: Attribute; + + public constructor(attribute?: Attribute) { + this.attribute = attribute; + } +} diff --git a/src/@loafer/core/reflect/Class.ts b/src/@loafer/core/reflect/Class.ts new file mode 100644 index 0000000..4e4636d --- /dev/null +++ b/src/@loafer/core/reflect/Class.ts @@ -0,0 +1,228 @@ +import { + Type, + PropertyKeyType, +} from '../type'; + +import { + TypeUtil, +} from '../util/TypeUtil'; + +import { AccessibleObject } from './AccessibleObject'; +import { Annotation } from './Annotation'; +import { SystemClassRegistry } from './ClassRegistry'; +import { Constructor } from './Constructor'; +import { Field } from './Field'; +import { Method } from './Method'; +import { Metadata } from './Metadata'; + + + +export class Class extends AccessibleObject { + private _type: Type; + private _constructor: Constructor; + private _fields: Map; + private _methods: Map; + + /** + * forClass + */ + public static forType(type: Type): Class | undefined { + return SystemClassRegistry.get(type); + } + + /** + * _defineClass + */ + public static _defineClass(type: Type): Class { + let clazz: Class = Class.forType(type); + if (undefined === clazz) { + clazz = new Class(type); + SystemClassRegistry.set(type, clazz); + } + + if (null === clazz._constructor) { + const parameterTypes = Metadata.getOwnParamTypes(type); + if (undefined !== parameterTypes) { + clazz._constructor = new Constructor(clazz, parameterTypes); + } + } + + return clazz; + } + + private constructor(type: Type) { + super(); + this._type = type; + this._fields = new Map(); + this._methods = new Map(); + } + + /** + * _defineField + */ + public _defineConstructor(parameterTypes: any[]): Constructor { + let cons: Constructor = this._constructor; + if (undefined === cons) { + cons = new Constructor(this, parameterTypes); + this._constructor = cons; + } + return cons; + } + + /** + * _defineField + */ + public _defineField(propertyKey: PropertyKeyType, propertyType: any): Field { + let field: Field = this._fields.get(propertyKey); + if (undefined === field) { + field = new Field(this, propertyKey, propertyType); + this._fields.set(propertyKey, field); + } + return field; + } + + /** + * _defineMethod + */ + public _defineMethod(propertyKey: PropertyKeyType, parameterTypes: any[], returnType: any): Method { + let method: Method = this._methods.get(propertyKey); + if (undefined === method) { + method = new Method(this, propertyKey, parameterTypes, returnType); + this._methods.set(propertyKey, method); + } + return method; + } + + public getType(): Type { + return this._type; + } + + public getConstructor(): Constructor { + if (undefined === this._constructor) { + this._constructor = new Constructor(this, undefined); + } + return this._constructor; + } + + public getOwnField(propertyKey: PropertyKeyType): Field | undefined { + return this._fields.get(propertyKey); + } + + public getOwnFields(): Map { + return this._fields; + } + + public getField(propertyKey: PropertyKeyType): Field | undefined { + const fields = this.getFields(); + + return fields.get(propertyKey); + } + + public getFields(): Map { + const fields: Map = new Map(); + + const types = TypeUtil.ancestorsOf(this._type); + if (null === types || 0 === types.length) { + return fields; + } + for (let i = 0; i < types.length; i++) { + const tType = types[i]; + const tClazz = Class.forType(tType); + if (undefined === tClazz) { + continue; + } + + tClazz.getOwnFields().forEach((value: Field, key: PropertyKeyType, map: Map): void => { + fields.set(key, value); + }); + } + + return fields; + } + + public getOwnMethod(propertyKey: PropertyKeyType): Method | undefined { + return this._methods.get(propertyKey); + } + + public getOwnMethods(): Map { + return this._methods; + } + + public getMethod(propertyKey: PropertyKeyType): Method | undefined { + const methods = this.getMethods(); + + return methods.get(propertyKey); + } + + public getMethods(): Map { + const methods: Map = new Map(); + + const types = TypeUtil.ancestorsOf(this._type); + if (null === types || 0 === types.length) { + return methods; + } + for (let i = 0; i < types.length; i++) { + const tClazzType = types[i]; + const tClazz = Class.forType(tClazzType); + if (undefined === tClazz) { + continue; + } + + tClazz.getOwnMethods().forEach((value: Method, key: PropertyKeyType, map: Map): void => { + methods.set(key, value); + }); + } + + return methods; + } + + public getAnnotation(annotationClass: Type): AnnotationType | undefined { + const annotations = this.getAnnotations(); + + return annotations.get(annotationClass); + } + + public getAnnotations(): Map, Annotation> { + const annotations: Map, Annotation> = new Map(); + + const types = TypeUtil.ancestorsOf(this._type); + if (null === types || 0 === types.length) { + return annotations; + } + for (let i = 0; i < types.length; i++) { + const tClazzType = types[i]; + const tClazz = Class.forType(tClazzType); + if (undefined === tClazz) { + continue; + } + + tClazz.getOwnAnnotations().forEach((value: Annotation, key: Type, map: Map, Annotation>): void => { + annotations.set(key, value); + }); + } + + return annotations; + } + + public getAnnotationsByType(annotationClass: Type) + : AnnotationType[] | undefined { + const annotations = this.getAnnotations(); + if (0 === annotations.size) { + return undefined; + } + const results: AnnotationType[] = []; + for (const classType of Array.from(annotations.keys())) { + if (classType === annotationClass) { + results.push(annotations.get(classType)); + } + } + if (0 === results.length) { + return undefined; + } + return results; + } + + public getName(): string { + return this._type.name; + } +} diff --git a/src/@loafer/core/reflect/ClassRegistry.ts b/src/@loafer/core/reflect/ClassRegistry.ts new file mode 100644 index 0000000..b559da1 --- /dev/null +++ b/src/@loafer/core/reflect/ClassRegistry.ts @@ -0,0 +1,12 @@ +import { Type } from '../type'; +import { Registry } from '../util/Registry'; + +import { Class } from './Class'; + +export class ClassRegistry extends Registry, Class> { + public constructor(parent?: ClassRegistry) { + super(parent); + } +} + +export const SystemClassRegistry = new ClassRegistry(); diff --git a/src/@loafer/core/reflect/Constructor.ts b/src/@loafer/core/reflect/Constructor.ts new file mode 100644 index 0000000..f68b523 --- /dev/null +++ b/src/@loafer/core/reflect/Constructor.ts @@ -0,0 +1,26 @@ +import { + PropertyKeyType, +} from '../type'; + +import { + TypeUtil, +} from '../util/TypeUtil'; + +import { Class } from './Class'; +import { Executable } from './Executable'; + +export class Constructor extends Executable { + private _rawConstructor: Function; + + public constructor(declaringClazz: Class, parameterTypes?: any[]) { + super(declaringClazz, CONSTRUCTOR_NAME, parameterTypes); + this._rawConstructor = TypeUtil.getPrototype(declaringClazz.getType())[CONSTRUCTOR_NAME]; + } + + public newInstance(...args: any[]): any { + const ctor = this.getDeclaringClass().getType(); + return new (ctor.bind.apply(ctor, [null].concat(args)))(); + } +} + +const CONSTRUCTOR_NAME = 'constructor'; diff --git a/src/@loafer/core/reflect/Executable.ts b/src/@loafer/core/reflect/Executable.ts new file mode 100644 index 0000000..8f4cc01 --- /dev/null +++ b/src/@loafer/core/reflect/Executable.ts @@ -0,0 +1,75 @@ +import { + PropertyKeyType, +} from '../type'; + +import { + TypeUtil, +} from '../util/TypeUtil'; + +import { AccessibleObject } from './AccessibleObject'; +import { Class } from './Class'; +import { Member } from './Member'; +import { Parameter } from './Parameter'; + +export abstract class Executable extends AccessibleObject implements Member { + private _clazz: Class; + private _name: PropertyKeyType; + private _parameters: Parameter[]; + + protected constructor(declaringClazz: Class, name: PropertyKeyType, parameterTypes?: any[]) { + super(); + + this._clazz = declaringClazz; + this._name = name; + + if (undefined === parameterTypes) { + return; + } + + const parameterNames = TypeUtil.getParameterNames(declaringClazz.getType(), name); + this._parameters = []; + + for (let i = 0; i < parameterTypes.length; i++) { + const parameterType = parameterTypes[i]; + const parameterName = parameterNames[i]; + const parameter: Parameter = new Parameter(this, parameterType, parameterName, i); + this._parameters.push(parameter); + } + } + + public getDeclaringClass(): Class { + return this._clazz; + } + + public getName(): PropertyKeyType { + return this._name; + } + + /** + * getParameterCount + */ + public getParameterCount(): number { + if (null === this._parameters) { + return 0; + } + return this._parameters.length; + } + /** + * getParameters + */ + public getParameters(): Parameter[] | undefined { + return this._parameters; + } + /** + * getParameter + */ + public getParameter(index: number): Parameter | undefined { + if (null === this._parameters) { + return undefined; + } + if (0 > index || this._parameters.length <= index) { + return undefined; + } + return this._parameters[index]; + } +} diff --git a/src/@loafer/core/reflect/Field.ts b/src/@loafer/core/reflect/Field.ts new file mode 100644 index 0000000..9e0cbbe --- /dev/null +++ b/src/@loafer/core/reflect/Field.ts @@ -0,0 +1,33 @@ +import { + PropertyKeyType, +} from '../type'; + +import { AccessibleObject } from './AccessibleObject'; +import { Class } from './Class'; +import { Member } from './Member'; + +export class Field extends AccessibleObject implements Member { + private _clazz: Class; + private _name: PropertyKeyType; + private _type: any; + + public constructor(declaringClazz: Class, name: PropertyKeyType, fieldType: any) { + super(); + this._clazz = declaringClazz; + this._name = name; + this._type = fieldType; + } + + public getDeclaringClass(): Class { + return this._clazz; + } + + public getName(): PropertyKeyType { + return this._name; + } + + public getType(): any { + return this._type; + } + +} diff --git a/src/@loafer/core/reflect/Member.ts b/src/@loafer/core/reflect/Member.ts new file mode 100644 index 0000000..f3b045f --- /dev/null +++ b/src/@loafer/core/reflect/Member.ts @@ -0,0 +1,10 @@ +import { + PropertyKeyType, +} from '../type'; + +import { Class } from './Class'; + +export interface Member { + getDeclaringClass(): Class; + getName(): PropertyKeyType; +} diff --git a/src/@loafer/core/reflect/Metadata.ts b/src/@loafer/core/reflect/Metadata.ts new file mode 100644 index 0000000..caab825 --- /dev/null +++ b/src/@loafer/core/reflect/Metadata.ts @@ -0,0 +1,521 @@ +import { + MetadataKeyType, + PropertyKeyType, +} from '../type'; + +import { TypeUtil } from '../util/TypeUtil'; + + +export class Metadata { + /** + * Gets the metadata value for the provided metadata key on the target object or its prototype chain. + * @param key A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Metadata.get("custom:annotation", Example); + * + * // property (on constructor) + * result = Metadata.get("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Metadata.get("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Metadata.get("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Metadata.get("custom:annotation", Example.prototype, "method"); + * ``` + * + */ + public static get(key: MetadataKeyType, target: any, propertyKey?: PropertyKeyType): any { + return Reflect.getMetadata(key, TypeUtil.getType(target), propertyKey); + } + + /** + * Gets the metadata value for the provided metadata key on the target object or its prototype chain. + * @param key A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Metadata.getOwn("custom:annotation", Example); + * + * // property (on constructor) + * result = Metadata.getOwn("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Metadata.getOwn("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Metadata.getOwn("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Metadata.getOwn("custom:annotation", Example.prototype, "method"); + * ``` + * + */ + public static getOwn(key: MetadataKeyType, target: any, propertyKey?: PropertyKeyType): any { + return Reflect.getOwnMetadata(key, TypeUtil.getType(target), propertyKey); + } + + /** + * Gets the metadata value for the provided metadata DESIGN_TYPE on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // on contructor + * result = Metadata.getType(Example); + * + * // property (on constructor) + * result = Metadata.getType(Example, "staticProperty"); + * + * // method (on constructor) + * result = Metadata.getType(Example, "staticMethod"); + * ``` + * + */ + public static getType(target: any, propertyKey?: PropertyKeyType): any { + return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey); + } + + /** + * Gets the metadata value for the provided metadata DESIGN_TYPE on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // on contructor + * result = Metadata.getOwnType(Example); + * + * // property (on constructor) + * result = Metadata.getOwnType(Example, "staticProperty"); + * + * // method (on constructor) + * result = Metadata.getOwnType(Example, "staticMethod"); + * ``` + * + */ + public static getOwnType(target: any, propertyKey?: PropertyKeyType): any { + return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey); + } + + /** + * Gets the metadata value for the provided metadata DESIGN_RETURN_TYPE on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // on contructor + * result = Metadata.getReturnType(Example); + * + * // property (on constructor) + * result = Metadata.getReturnType(Example, "staticProperty"); + * + * // method (on constructor) + * result = Metadata.getReturnType(Example, "staticMethod"); + * ``` + * + */ + public static getReturnType(target: any, propertyKey?: PropertyKeyType): any { + return Reflect.getMetadata(DESIGN_RETURN_TYPE, target, propertyKey); + } + + /** + * Gets the metadata value for the provided metadata DESIGN_RETURN_TYPE on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // on contructor + * result = Metadata.getOwnReturnType(Example); + * + * // property (on constructor) + * result = Metadata.getOwnReturnType(Example, "staticProperty"); + * + * // method (on constructor) + * result = Metadata.getOwnReturnType(Example, "staticMethod"); + * ``` + * + */ + public static getOwnReturnType(target: any, propertyKey?: PropertyKeyType): any { + return Reflect.getOwnMetadata(DESIGN_RETURN_TYPE, target, propertyKey); + } + + /** + * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined. + * @param key A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Metadata.has("custom:annotation", Example); + * + * // property (on constructor) + * result = Metadata.has("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Metadata.has("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Metadata.has("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Metadata.has("custom:annotation", Example.prototype, "method"); + * ``` + * + */ + public static has(key: MetadataKeyType, target: any, propertyKey?: PropertyKeyType): boolean { + return Reflect.hasMetadata(key, TypeUtil.getType(target), propertyKey); + } + + /** + * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined. + * @param key A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Metadata.has("custom:annotation", Example); + * + * // property (on constructor) + * result = Metadata.hasOwn("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Metadata.hasOwn("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Metadata.hasOwn("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Metadata.hasOwn("custom:annotation", Example.prototype, "method"); + * ``` + * + */ + public static hasOwn(key: MetadataKeyType, target: any, propertyKey?: PropertyKeyType): boolean { + return Reflect.hasOwnMetadata(key, TypeUtil.getType(target), propertyKey); + } + + /** + * Deletes the metadata entry from the target object with the provided key. + * @param key A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns `true` if the metadata entry was found and deleted; otherwise, false. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Metadata.delete("custom:annotation", Example); + * + * // property (on constructor) + * result = Metadata.delete("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Metadata.delete("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Metadata.delete("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Metadata.delete("custom:annotation", Example.prototype, "method"); + * ``` + * + */ + public static delete(key: MetadataKeyType, target: any, propertyKey?: PropertyKeyType): boolean { + return Reflect.deleteMetadata(key, TypeUtil.getType(target), propertyKey); + } + + /** + * Set the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @param value A value that contains attached metadata. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // on contructor + * result = Metadata.setParamTypes(Example, undefined, [Object]); + * + * // property (on constructor) + * result = Metadata.setParamTypes(Example, "staticProperty", [Object]); + * + * // property (on prototype) + * result = Metadata.setParamTypes(Example.prototype, "property", [Object]); + * + * // method (on constructor) + * result = Metadata.setParamTypes(Example, "staticMethod", [Object]); + * + * // method (on prototype) + * result = Metadata.setParamTypes(Example.prototype, "method", [Object]); + * ``` + * + */ + public static setParamTypes(target: any, propertyKey: PropertyKeyType, value: any): void { + return this.set(DESIGN_PARAM_TYPES, value, target.prototype, propertyKey); + } + + /** + * Get all metadata for a metadataKey. + * @param metadataKey + */ + public static getTargetsFromPropertyKey = (metadataKey: MetadataKeyType): any[] => + PROPERTIES.has(metadataKey) ? PROPERTIES.get(metadataKey) || [] : [] + + /** + * Define a unique metadata entry on the target. + * @param key A key used to store and retrieve metadata. + * @param value A value that contains attached metadata. + * @param target The target object on which to define metadata. + * @param propertyKey The property key for the target. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * Reflect.defineMetadata("custom:annotation", options, Example); + * + * // property (on constructor) + * Reflect.defineMetadata("custom:annotation", Number, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.defineMetadata("custom:annotation", Number, Example.prototype, "property"); + * + * // method (on constructor) + * Reflect.defineMetadata("custom:annotation", Number, Example, "staticMethod"); + * + * // method (on prototype) + * Reflect.defineMetadata("custom:annotation", Number, Example.prototype, "method"); + * + * // decorator factory as metadata-producing annotation. + * function MyAnnotation(options): PropertyDecorator { + * return (target, key) => Reflect.defineMetadata("custom:annotation", options, target, key); + * } + * ``` + * + */ + public static set(key: MetadataKeyType, value: any, target: any, propertyKey?: PropertyKeyType): void { + + const targets: any[] = PROPERTIES.has(key) ? PROPERTIES.get(key) || [] : []; + const classConstructor = TypeUtil.getType(target); + + if (targets.indexOf(classConstructor) === -1) { + targets.push(classConstructor); + PROPERTIES.set(key, targets); + } + + Reflect.defineMetadata(key, value, TypeUtil.getType(target), propertyKey); + } + + /** + * Gets the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // on contructor + * result = Metadata.getParamTypes(Example); + * + * // property (on constructor) + * result = Metadata.getParamTypes(Example, "staticProperty"); + * + * // method (on constructor) + * result = Metadata.getParamTypes(Example, "staticMethod"); + * ``` + * + */ + public static getParamTypes(target: any, propertyKey?: PropertyKeyType): any[] { + return Reflect.getMetadata(DESIGN_PARAM_TYPES, target, propertyKey); + } + + /** + * Gets the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * ```typescript + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // on contructor + * result = Metadata.getParamTypes(Example); + * + * // property (on constructor) + * result = Metadata.getParamTypes(Example, "staticProperty"); + * + * // method (on constructor) + * result = Metadata.getParamTypes(Example, "staticMethod"); + * ``` + * + */ + public static getOwnParamTypes(target: any, propertyKey?: PropertyKeyType): any[] { + return Reflect.getOwnMetadata(DESIGN_PARAM_TYPES, target, propertyKey); + } +} + + +/** + * Metadata key + * @private + * @type {string} + */ +const DESIGN_PARAM_TYPES = 'design:paramtypes'; +/** + * Metadata key + * @private + * @type {string} + */ +const DESIGN_TYPE = 'design:type'; +/** + * Metadata key + * @private + * @type {string} + */ +const DESIGN_RETURN_TYPE = 'design:returntype'; +/** + * Properties collections + * @private + * @type {string} + */ +const PROPERTIES: Map = new Map(); diff --git a/src/@loafer/core/reflect/Method.ts b/src/@loafer/core/reflect/Method.ts new file mode 100644 index 0000000..82997c6 --- /dev/null +++ b/src/@loafer/core/reflect/Method.ts @@ -0,0 +1,29 @@ +import { + PropertyKeyType, +} from '../type'; + +import { + TypeUtil, +} from '../util/TypeUtil'; + +import { Class } from './Class'; +import { Executable } from './Executable'; + +export class Method extends Executable { + private _returnType: any; + private _rawMethod: Function; + + public constructor(declaringClazz: Class, name: PropertyKeyType, parameterTypes: any[], returnType: any) { + super(declaringClazz, name, parameterTypes); + this._returnType = returnType; + this._rawMethod = TypeUtil.getPrototype(declaringClazz.getType())[name]; + } + + public getReturnType(): any { + return this._returnType; + } + + public invoke(instance: Object, ...args: any[]): any { + return this._rawMethod.apply(instance, args); + } +} diff --git a/src/@loafer/core/reflect/Parameter.ts b/src/@loafer/core/reflect/Parameter.ts new file mode 100644 index 0000000..19d515a --- /dev/null +++ b/src/@loafer/core/reflect/Parameter.ts @@ -0,0 +1,33 @@ +import { AccessibleObject } from './AccessibleObject'; +import { Executable } from './Executable'; + +export class Parameter extends AccessibleObject { + private _executable: Executable; + private _type: any; + private _index: number; + private _name: string; + + public constructor(executable: Executable, parameterType: any, name: string, index: number) { + super(); + this._executable = executable; + this._type = parameterType; + this._name = name; + this._index = index; + } + + public getDeclaringExecutable(): Executable { + return this._executable; + } + + public getType(): any { + return this._type; + } + + public getName(): string { + return this._name; + } + + public getIndex(): number { + return this._index; + } +} diff --git a/src/@loafer/core/reflect/index.ts b/src/@loafer/core/reflect/index.ts new file mode 100644 index 0000000..0dbbe0f --- /dev/null +++ b/src/@loafer/core/reflect/index.ts @@ -0,0 +1,12 @@ +export * from './AccessibleObject'; +export * from './AnnotatedElement'; +export * from './Annotation'; +export * from './Class'; +export * from './Constructor'; + +export * from './Executable'; +export * from './Field'; +export * from './Member'; +export * from './Metadata'; +export * from './Method'; +export * from './Parameter'; diff --git a/src/@loafer/core/type.ts b/src/@loafer/core/type.ts new file mode 100644 index 0000000..e1683d4 --- /dev/null +++ b/src/@loafer/core/type.ts @@ -0,0 +1,16 @@ +export declare const Type: FunctionConstructor; +export declare function isType(v: any): v is Type; +export interface Type extends Function { + new (...args: any[]): T; +} + +export declare type IdentityType = T | symbol; +export declare type PropertyKeyType = IdentityType; +export declare type MetadataKeyType = IdentityType; + +export enum PrimitiveType { + ANY = 'any', + STRING = 'string', + NUMBER = 'number', + BOOLEAN = 'boolean', +} diff --git a/src/@loafer/core/util/AnnotationUtil.ts b/src/@loafer/core/util/AnnotationUtil.ts new file mode 100644 index 0000000..c070cb3 --- /dev/null +++ b/src/@loafer/core/util/AnnotationUtil.ts @@ -0,0 +1,39 @@ +import { Class, Annotation } from '../reflect'; +import { Type } from '../type'; + +export abstract class AnnotationUtils { + public static hasAnnotation(type: Type, annotationClass: Type): boolean { + const annotation = AnnotationUtils.getAnnotation(type, annotationClass); + if (undefined !== annotation) { + return true; + } + return false; + } + + public static getAnnotation(type: Type, annotationClass: Type): T | undefined { + const clazz = Class.forType(type); + if (undefined === clazz) { + return undefined; + } + + const annotations = clazz.getAnnotations(); + if (0 === annotations.size) { + return undefined; + } + + for (const annonClassType of Array.from(annotations.keys())) { + if (annonClassType === annotationClass) { + return annotations.get(annonClassType); + } + const annotation = AnnotationUtils.getAnnotation(annonClassType, annotationClass); + if (undefined !== annotation) { + return annotation; + } + } + + return undefined; + } + + + +} diff --git a/src/@loafer/core/util/Registry.ts b/src/@loafer/core/util/Registry.ts new file mode 100644 index 0000000..1e0428d --- /dev/null +++ b/src/@loafer/core/util/Registry.ts @@ -0,0 +1,66 @@ +export abstract class Registry { + private _parent: Registry; + private _map: Map; + + protected constructor(parent?: Registry) { + this._parent = parent; + this._map = new Map(); + } + + public get parent(): Registry | undefined { + return this._parent; + } + + public get size(): number { + return this._map.size; + } + + public get(key: K): V | undefined { + let v = this._map.get(key); + if (undefined === v && undefined !== this._parent) { + v = this._parent.get(key); + } + + return v; + } + + public has(key: K): boolean { + let exist = this._map.has(key); + if (!exist && undefined !== this._parent) { + exist = this._parent.has(key); + } + return exist; + } + + public set(key: K, value: V): void { + this._map.set(key, value); + } + + public entries(): IterableIterator<[K, V]> { + return this._map.entries(); + } + + public keys(): IterableIterator { + return this._map.keys(); + } + + public values(): IterableIterator { + return this._map.values(); + } + + public clear(): void { + this._map.clear(); + } + + public delete(key: K): boolean { + let result = this._map.delete(key); + if (!result && undefined !== this._parent) { + result = this._parent.delete(key); + } + return result; + } + + public forEach(callback: (vlaue: V, key: K, map: Map) => void, thisArg?: any): void { + this._map.forEach(callback, thisArg); + } +} diff --git a/src/@loafer/core/util/TypeUtil.ts b/src/@loafer/core/util/TypeUtil.ts new file mode 100644 index 0000000..2161fd4 --- /dev/null +++ b/src/@loafer/core/util/TypeUtil.ts @@ -0,0 +1,407 @@ +import { + Type, + PrimitiveType, + PropertyKeyType, +} from '../type'; + + +export class TypeUtil { + /** + * Get the provide constructor. + * @param target + */ + public static getContructor(target: any): Type { + return typeof target === 'function' ? target : target.constructor; + } + + /** + * Get the provide constructor if target is an instance. + * @param target + * @returns {*} + */ + public static getType(target: any): Type { + return target.prototype ? target : target.constructor; + } + + /** + * Get the provide prototype if target is an instance. + * @param target + * @returns {*} + */ + public static getPrototype(target: any): Object { + return typeof target === 'function' ? target.prototype : target; + } + + /** + * + * @param target + * @returns {symbol} + */ + public static getTypeOrSymbol(target: any): any { + return typeof target === 'symbol' ? target : TypeUtil.getType(target); + } + + /** + * Return true if the given obj is a primitive. + * @param target + * @returns {boolean} + */ + public static isPrimitiveOrPrimitiveType(target: any): boolean { + return TypeUtil.isString(target) + || TypeUtil.isNumber(target) + || TypeUtil.isBoolean(target); + } + + /** + * + * @param target + * @returns {PrimitiveType} + */ + public static primitiveOf(target: any): PrimitiveType { + if (TypeUtil.isString(target)) { + return PrimitiveType.STRING; + } + if (TypeUtil.isNumber(target)) { + return PrimitiveType.NUMBER; + } + if (TypeUtil.isBoolean(target)) { + return PrimitiveType.BOOLEAN; + } + return PrimitiveType.ANY; + } + + /** + * + * @param target + * @returns {boolean} + */ + public static isString(target: any): boolean { + return typeof target === 'string' || target instanceof String || target === String; + } + + /** + * + * @param target + * @returns {boolean} + */ + public static isNumber(target: any): boolean { + return typeof target === 'number' || target instanceof Number || target === Number; + } + + /** + * + * @param target + * @returns {boolean} + */ + public static isBoolean(target: any): boolean { + return typeof target === 'boolean' || target instanceof Boolean || target === Boolean; + } + + /** + * + * @param target + * @returns {Boolean} + */ + public static isArray(target: any): boolean { + return Array.isArray(target); + } + + /** + * Return true if the clazz is an array. + * @param target + * @returns {boolean} + */ + public static isArrayOrArrayType(target: any): boolean { + if (target === Array) { + return true; + } + return TypeUtil.isArray(target); + } + + /** + * Return true if the target. + * @param target + * @returns {boolean} + */ + public static isCollection(target: any): boolean { + return TypeUtil.isArrayOrArrayType(target) + || target === Map + || target instanceof Map + || target === Set + || target instanceof Set + || target === WeakMap + || target instanceof WeakMap + || target === WeakSet + || target instanceof WeakSet; + } + + /** + * + * @param target + * @returns {boolean} + */ + public static isDate(target: any): boolean { + return target === Date || target instanceof Date; + } + + /** + * + * @param target + * @returns {boolean} + */ + public static isMethod(target: any, propertyKey: PropertyKeyType): boolean { + if (typeof(target[propertyKey]) === undefined) { + return false; + } + return typeof target[propertyKey] === 'function'; + } + + /** + * + * @param target + * @returns {boolean} + */ + public static isObject(target: any): boolean { + return target === Object; + } + + /** + * + * @param target + * @returns {boolean} + */ + public static isType(target: any): boolean { + return !TypeUtil.isPrimitiveOrPrimitiveType(target) + && !TypeUtil.isObject(target) + && !TypeUtil.isDate(target) + && target !== undefined + && !TypeUtil.isPromise(target); + } + + /** + * Return true if the value is an empty string, null or undefined. + * @param value + * @returns {boolean} + */ + public static isEmpty(value: any): boolean { + return value === '' || value === null || value === undefined; + } + + /** + * Get object name + */ + public static nameOf(obj: any): string { + switch (typeof obj) { + default: + return '' + obj; + case 'symbol': + return TypeUtil.nameOfSymbol(obj); + case 'function': + return TypeUtil.nameOfType(obj); + } + } + + /** + * Get the provide name. + * @param target + */ + public static nameOfType(target: any): string { + return typeof target === 'function' + ? target.name + : target.constructor.name; + } + /** + * Get symbol name. + * @param sym + */ + public static nameOfSymbol(sym: symbol): string { + return sym.toString().replace('Symbol(', '').replace(')', ''); + } + /** + * + * @param out + * @param obj + * @param {{[p: string]: (collection: any[], value: any) => any}} reducers + * @returns {any} + */ + public static deepExtends(out: any, obj: any, reducers: { [key: string]: (collection: any[], value: any) => any } = {}): any { + + if (obj === undefined || obj === null) { + return obj; + } + + if (TypeUtil.isPrimitiveOrPrimitiveType(obj) || typeof obj === 'symbol' || typeof obj === 'function') { + return obj; + } + + if (TypeUtil.isArrayOrArrayType(obj)) { + out = out || []; + } else { + out = out || {}; + } + + const defaultReducer = reducers.default ? reducers.default : (collection: any[], value: any) => { + collection.push(value); + return collection; + }; + const set = (key: string | number, value: any) => { + if (TypeUtil.isArrayOrArrayType(obj)) { + out.push(value); + } else { + out[key] = value; + } + }; + + Object.keys(obj).forEach(key => { + let value = obj[key]; + + if (value === undefined || value === null) { + return; + } + + if (value === '' && out[key] !== '') { + return; + } + + if (TypeUtil.isPrimitiveOrPrimitiveType(value) || typeof value === 'function') { + set(key, value); + return; + } + + if (TypeUtil.isArrayOrArrayType(value)) { + + value = value.map((v: any) => TypeUtil.deepExtends(undefined, v)); + + set(key, [] + .concat(out[key] || [], value) + .reduce((collection: any[], v: any) => + reducers[key] ? reducers[key](collection, v) : defaultReducer(collection, v), + [])); + return; + } + + // Object + if (TypeUtil.isArrayOrArrayType(obj)) { + set(key, TypeUtil.deepExtends(undefined, value, reducers)); + } else { + set(key, TypeUtil.deepExtends(out[key], value, reducers)); + } + }); + + if (TypeUtil.isArrayOrArrayType(out)) { + out.reduce((collection: any[], value: any) => defaultReducer(collection, value), []); + } + + return out; + } + + /** + * + * @param target + * @returns {boolean} + */ + public static isPromise(target: any): boolean { + return target === Promise || target instanceof Promise; + } + + /** + * + * @param target + * @returns {any} + */ + public static getInheritedType(target: Type): Type { + return Object.getPrototypeOf(target); + } + + /** + * + * @param target + * @param {PropertyKeyType} propertyKey + * @returns {PropertyDescriptor} + */ + public static descriptorOf(target: any, propertyKey: PropertyKeyType): PropertyDescriptor { + return Object.getOwnPropertyDescriptor(target && target.prototype || target, propertyKey); + } + + /** + * + * @param target + * @param {PropertyKeyType} propertyKey + * @returns {string[]} + */ + public static getParameterNames(target: any, propertyKey: PropertyKeyType): string[] { + const rawType = TypeUtil.getPrototype(target); + const fn: Function = rawType[propertyKey]; + + const code = fn.toString() + .replace(COMMENTS, '') + .replace(FAT_ARROWS, '') + .replace(DEFAULT_PARAMS, ''); + + const result = code.slice(code.indexOf('(') + 1, code.indexOf(')')).match(/([^\s,]+)/g); + + return result === null + ? [] + : result; + } + + /** + * + * @param target + * @returns {Array} + */ + public static ancestorsOf(target: Type): Type[] { + const classes: Type[] = []; + + let currentTarget = TypeUtil.getType(target); + + while (TypeUtil.nameOf(currentTarget) !== '') { + classes.unshift(currentTarget); + currentTarget = TypeUtil.getInheritedType(currentTarget); + } + + return classes; + } + + /** + * + * @param target + * @param {string} name + * @param {Function} callback + */ + public static applyBefore(target: any, name: string, callback: Function): void { + const original = target[name]; + target[name] = function (...args: any[]): any { + callback(...args); + return original.apply(this, args); + }; + } + + /** + * + * @param {Promise} promise + * @param {number} time + * @returns {Promise} + */ + public static promiseTimeout(promise: Promise, time: number = 1000): Promise<{ ok: boolean, response: any }> { + const timeout = (p: Promise, t: number) => new Promise((resolve) => { + p.then((response) => { + resolve(); + return response; + }); + setTimeout(() => resolve({ok: false}), t); + }); + + promise = promise.then((response) => ({ok: true, response})); + + return Promise.race([ + promise, + timeout(promise, time), + ]); + } + +} + +const COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; +const DEFAULT_PARAMS = /=[^,]+/mg; +const FAT_ARROWS = /=>.*$/mg; diff --git a/src/@loafer/decorator/Decorator.ts b/src/@loafer/decorator/Decorator.ts new file mode 100644 index 0000000..2fb4d7f --- /dev/null +++ b/src/@loafer/decorator/Decorator.ts @@ -0,0 +1,22 @@ +import { + Type, + PropertyKeyType, +} from '@loafer/core'; + +import { + Annotation, +} from '@loafer/core/reflect'; + +export interface Decorator { + classDecorator?: (target: TFunction) => TFunction | void; + propertyDecorator?: (target: Object, propertyKey: PropertyKeyType) => void; + methodDecorator?: (target: Object, propertyKey: PropertyKeyType, + descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; + parameterDecorator?: (target: Object, propertyKey: PropertyKeyType, parameterIndex: number) => void; +} + +export abstract class Decorator extends Annotation { + public constructor(attribute?: Attribute) { + super(attribute); + } +} diff --git a/src/@loafer/decorator/DecoratorFactory.ts b/src/@loafer/decorator/DecoratorFactory.ts new file mode 100644 index 0000000..ea3a21b --- /dev/null +++ b/src/@loafer/decorator/DecoratorFactory.ts @@ -0,0 +1,107 @@ +import { + Type, + MetadataKeyType, +} from '@loafer/core'; + +import { + Annotation, + Class, + Constructor, + Field, + Method, + Parameter, + Metadata, +} from '@loafer/core/reflect'; + +import { + TypeUtil, +} from '@loafer/core/util/TypeUtil'; + +import { Decorator } from './Decorator'; +import { DecoratorUtil } from './util'; +import { DecoratorType } from './type'; +import { NotSupportedDecoratorError } from './error'; + + +export class DecoratorFactory { + public static create = (DecoratorClass: Type>) => { + return (attribute: Attribute) => { + const annotation: Decorator = new DecoratorClass(attribute); + const name: string = DecoratorClass.name; + + return (...decoratorArgs: any[]) => { + const decoratorType: DecoratorType = DecoratorUtil.getDecoratorType(decoratorArgs); + + const [target, propertyKey, descriptorOrParameterIndex] = decoratorArgs; + + const clazz: Class = Class._defineClass(TypeUtil.getType(target)); + let field: Field = null; + let method: Method = null; + let parameter: Parameter = null; + let cons: Constructor = null; + + switch (decoratorType) { + case DecoratorType.CLASS: + try { + cons = clazz._defineConstructor(Metadata.getOwnParamTypes(target)); + clazz._addAnnotation(annotation); + return annotation.classDecorator.call(annotation, target); + } catch (e) { + if (e instanceof NotSupportedDecoratorError) { + throw new NotSupportedDecoratorError(`Cannot apply @${name} decorator on Class.`); + } + throw e; + } + case DecoratorType.PROPERTY: + try { + field = clazz._defineField(propertyKey, Metadata.getOwnType(target, propertyKey)); + field._addAnnotation(annotation); + return annotation.propertyDecorator.call(annotation, target, propertyKey); + } catch (e) { + if (e instanceof NotSupportedDecoratorError) { + throw new NotSupportedDecoratorError(`Cannot apply @${name} decorator on Property.`); + } + throw e; + } + case DecoratorType.METHOD: + try { + method = clazz._defineMethod(propertyKey, + Metadata.getOwnParamTypes(target, propertyKey), + Metadata.getOwnReturnType(target, propertyKey)); + method._addAnnotation(annotation); + + return annotation.methodDecorator.call(annotation, target, propertyKey, descriptorOrParameterIndex); + } catch (e) { + if (e instanceof NotSupportedDecoratorError) { + throw new NotSupportedDecoratorError(`Cannot apply @${name} decorator on Method.`); + } + throw e; + } + case DecoratorType.PARAMETER: + try { + if (undefined === propertyKey) { + cons = clazz.getConstructor(); + parameter = cons.getParameter(descriptorOrParameterIndex); + } else { + method = clazz._defineMethod(propertyKey, + Metadata.getOwnParamTypes(target, propertyKey), + Metadata.getOwnReturnType(target, propertyKey)); + parameter = method.getParameter(descriptorOrParameterIndex); + } + parameter._addAnnotation(annotation); + + return annotation.parameterDecorator.call(annotation, target, propertyKey, descriptorOrParameterIndex); + } catch (e) { + if (e instanceof NotSupportedDecoratorError) { + throw new NotSupportedDecoratorError(`Cannot apply @${name} decorator on Parameter.`); + } + throw e; + } + default: + throw new NotSupportedDecoratorError(`Cannot determine decorator[@${name}] type.`); + } + }; + }; + } + +} diff --git a/src/@loafer/decorator/error.ts b/src/@loafer/decorator/error.ts new file mode 100644 index 0000000..5aaf4e9 --- /dev/null +++ b/src/@loafer/decorator/error.ts @@ -0,0 +1,13 @@ +export class NotSupportedDecoratorError extends Error { + public constructor(message?: string) { + super(message); + Object.setPrototypeOf(this, new.target.prototype); + } +} + +export class NotDecoratedClassError extends Error { + public constructor(message?: string) { + super(message); + Object.setPrototypeOf(this, new.target.prototype); + } +} diff --git a/src/@loafer/decorator/index.ts b/src/@loafer/decorator/index.ts new file mode 100644 index 0000000..1543e2e --- /dev/null +++ b/src/@loafer/decorator/index.ts @@ -0,0 +1,5 @@ +export * from './Decorator'; +export * from './DecoratorFactory'; +export * from './error'; +export * from './type'; +export * from './util'; diff --git a/src/@loafer/decorator/type.ts b/src/@loafer/decorator/type.ts new file mode 100644 index 0000000..8781acd --- /dev/null +++ b/src/@loafer/decorator/type.ts @@ -0,0 +1,8 @@ +export enum DecoratorType { + CLASS = 'Clazz', + PROPERTY = 'Property', + METHOD = 'Method', + PARAMETER = 'Parameter', +} + +export type DecoratorParametersType = [any, string | symbol, number | PropertyDescriptor]; diff --git a/src/@loafer/decorator/util.ts b/src/@loafer/decorator/util.ts new file mode 100644 index 0000000..70b34e0 --- /dev/null +++ b/src/@loafer/decorator/util.ts @@ -0,0 +1,48 @@ +import { + PropertyKeyType, +} from '@loafer/core'; + +import { + TypeUtil, +} from '@loafer/core/util/TypeUtil'; + + +import { + DecoratorType, + DecoratorParametersType, +} from './type'; + +export class DecoratorUtil { + /** + * + * @param {any[]} args + * @returns {DecoratorType} + */ + public static getDecoratorType(args: any[]): DecoratorType { + const [, propertyKey, descriptor] = args; + + if (typeof descriptor === 'number') { + return DecoratorType.PARAMETER; + } + + if (propertyKey && descriptor === undefined || descriptor && (descriptor.get || descriptor.set)) { + return DecoratorType.PROPERTY; + } + return (descriptor && descriptor.value) ? DecoratorType.METHOD : DecoratorType.CLASS; + } + + /** + * + * @param target + * @param {string} propertyKey + * @returns {DecoratorParametersType} + */ + public static decoratorArgs(target: any, propertyKey: PropertyKeyType): DecoratorParametersType { + return [ + target, + propertyKey, + TypeUtil.descriptorOf(target, propertyKey), + ]; + } + +} diff --git a/src/packages/core/rest/client/RESTClient.ts b/src/@loafer/ng-rest/client/RESTClient.ts similarity index 89% rename from src/packages/core/rest/client/RESTClient.ts rename to src/@loafer/ng-rest/client/RESTClient.ts index 38a592f..77dd5da 100644 --- a/src/packages/core/rest/client/RESTClient.ts +++ b/src/@loafer/ng-rest/client/RESTClient.ts @@ -11,8 +11,8 @@ import 'rxjs/add/observable/throw'; import { RESTError, - RESTServerError, -} from '../error'; + RESTClientError, +} from '../protocol'; export class RESTClient { constructor( @@ -42,7 +42,7 @@ export class RESTClient { .request(method, Location.joinWithSlash(this._baseURL, entry), options) .map(response => response) .catch((error: HttpErrorResponse) => { - const restError: RESTError = { + const restClientError: RESTClientError = { request: { method: method, entry: entry, @@ -51,14 +51,14 @@ export class RESTClient { response: error.error, }; - console.error(restError); + console.error(restClientError); // const aryMsg = error.error.message.split('|'); // const resError: RESTError = { // code: error.error.code, // message: aryMsg[0], // data: aryMsg[1] === 'null' ? '' : aryMsg[1], // }; - return Observable.throw(restError); + return Observable.throw(restClientError); }); } } diff --git a/src/@loafer/ng-rest/client/index.ts b/src/@loafer/ng-rest/client/index.ts new file mode 100644 index 0000000..74509a3 --- /dev/null +++ b/src/@loafer/ng-rest/client/index.ts @@ -0,0 +1 @@ +export * from './RESTClient'; diff --git a/src/@loafer/ng-rest/core/index.ts b/src/@loafer/ng-rest/core/index.ts new file mode 100644 index 0000000..6b36029 --- /dev/null +++ b/src/@loafer/ng-rest/core/index.ts @@ -0,0 +1 @@ +export * from './token'; diff --git a/src/@loafer/ng-rest/core/token.ts b/src/@loafer/ng-rest/core/token.ts new file mode 100644 index 0000000..f869f67 --- /dev/null +++ b/src/@loafer/ng-rest/core/token.ts @@ -0,0 +1,3 @@ +import { InjectionToken } from '@angular/core'; + +export const _REST_BASE_URL = new InjectionToken('@loafer/ng-rest Internal Base URL'); diff --git a/src/@loafer/ng-rest/index.ts b/src/@loafer/ng-rest/index.ts new file mode 100644 index 0000000..5f8d09b --- /dev/null +++ b/src/@loafer/ng-rest/index.ts @@ -0,0 +1 @@ +export * from './ng-rest.module'; diff --git a/src/@loafer/ng-rest/ng-rest.module.ts b/src/@loafer/ng-rest/ng-rest.module.ts new file mode 100644 index 0000000..9ce3f62 --- /dev/null +++ b/src/@loafer/ng-rest/ng-rest.module.ts @@ -0,0 +1,68 @@ +import { + NgModule, + ModuleWithProviders, + Type, + Inject, + InjectionToken, +} from '@angular/core'; + +import { + _REST_BASE_URL, +} from './core'; + +import { + SERVICES, RESTService, +} from './service'; + +export interface RESTFeatureModuleConfig { + url?: any; +} + +export interface RESTRootModuleConfig { + baseURL: string; +} + +@NgModule({}) +export class RESTRootModule { + constructor( + private restService: RESTService, + ) { + } +} + +@NgModule({}) +export class RESTFeatureModule { + constructor( + private restService: RESTService, + private root: RESTRootModule, + ) { + } +} + +@NgModule({}) +export class RESTModule { + static forRoot(config: RESTRootModuleConfig): ModuleWithProviders { + return { + ngModule: RESTRootModule, + providers: [ + { + provide: _REST_BASE_URL, + useValue: config.baseURL, + }, + SERVICES, + ], + }; + } + + static forFeature(config: RESTFeatureModuleConfig): ModuleWithProviders { + return { + ngModule: RESTFeatureModule, + providers: [ + ], + }; + } +} + +export function createSourceInstances(...instances: any[]) { + return instances; +} diff --git a/src/packages/core/rest/error.ts b/src/@loafer/ng-rest/protocol/RESTError.ts similarity index 71% rename from src/packages/core/rest/error.ts rename to src/@loafer/ng-rest/protocol/RESTError.ts index 659418c..4431349 100644 --- a/src/packages/core/rest/error.ts +++ b/src/@loafer/ng-rest/protocol/RESTError.ts @@ -1,13 +1,13 @@ -export interface RESTError { +export interface RESTClientError { request: { method: string; entry: string; options?: any; }; - response: RESTServerError; + response: RESTError; } -export interface RESTServerError { +export interface RESTError { code: number; message: string; data?: any; diff --git a/src/@loafer/ng-rest/protocol/index.ts b/src/@loafer/ng-rest/protocol/index.ts new file mode 100644 index 0000000..b025dd3 --- /dev/null +++ b/src/@loafer/ng-rest/protocol/index.ts @@ -0,0 +1 @@ +export * from './RESTError'; diff --git a/src/@loafer/ng-rest/service/index.ts b/src/@loafer/ng-rest/service/index.ts new file mode 100644 index 0000000..20da8fb --- /dev/null +++ b/src/@loafer/ng-rest/service/index.ts @@ -0,0 +1,7 @@ +export * from './rest.service'; + +import { RESTService } from './rest.service'; + +export const SERVICES = [ + RESTService, +]; diff --git a/src/app/commons/service/rest.service.spec.ts b/src/@loafer/ng-rest/service/rest.service.spec.ts similarity index 100% rename from src/app/commons/service/rest.service.spec.ts rename to src/@loafer/ng-rest/service/rest.service.spec.ts diff --git a/src/app/commons/service/rest.service.ts b/src/@loafer/ng-rest/service/rest.service.ts similarity index 81% rename from src/app/commons/service/rest.service.ts rename to src/@loafer/ng-rest/service/rest.service.ts index 3ac27e4..f5f63ec 100644 --- a/src/app/commons/service/rest.service.ts +++ b/src/@loafer/ng-rest/service/rest.service.ts @@ -11,16 +11,16 @@ import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/timeout'; import 'rxjs/add/observable/throw'; -import { RESTClient } from 'packages/core/rest/client/RESTClient'; +import { _REST_BASE_URL } from '../core'; +import { RESTClient } from '../client'; @Injectable() export class RESTService extends RESTClient { constructor( - @Inject('REST_BASE_URL') _baseURL: string, + @Inject(_REST_BASE_URL) _baseURL: string, @Inject(HttpClient) _httpClient: HttpClient, ) { super(_baseURL, _httpClient); } - } diff --git a/src/packages/core/rpc/client/RPCClient.ts b/src/@loafer/ng-rpc/client/RPCClient.ts similarity index 90% rename from src/packages/core/rpc/client/RPCClient.ts rename to src/@loafer/ng-rpc/client/RPCClient.ts index d8eb9e8..4f808a8 100644 --- a/src/packages/core/rpc/client/RPCClient.ts +++ b/src/@loafer/ng-rpc/client/RPCClient.ts @@ -1,9 +1,8 @@ import { Observable } from 'rxjs/Observable'; import { Subject } from 'rxjs/Subject'; - -import { RPCError } from '../error'; -import { RPCClientRWC } from './rwc/RPCClientRWC'; +import { RPCClientError } from '../protocol/RPCError'; +import { RPCClientRWC } from './RPCClientRWC'; import { RPCClientCodec, @@ -48,6 +47,7 @@ export abstract class RPCClient { this.onMessage(value); }, (error: any) => { + console.error(error); }, () => { @@ -113,9 +113,7 @@ export abstract class RPCClient { const resCodec = this._codec.response(message); if (resCodec.isNotification()) { - const noti = resCodec.notification(); - console.log(`RPC Notification: ${noti}`); - this.onNotification(noti); + this.onNotification(resCodec.notification()); } else { this.onResponse(resCodec); } @@ -134,12 +132,12 @@ export abstract class RPCClient { if (undefined !== result) { reqState.subject.next(result); } else if (undefined !== error) { - const rpcError: RPCError = { + const rpcClientError: RPCClientError = { request: reqState.request, response: error, }; - console.error(rpcError); - reqState.subject.error(rpcError); + console.error(rpcClientError); + reqState.subject.error(rpcClientError); } } diff --git a/src/@loafer/ng-rpc/client/RPCClientRWC.ts b/src/@loafer/ng-rpc/client/RPCClientRWC.ts new file mode 100644 index 0000000..406d4ee --- /dev/null +++ b/src/@loafer/ng-rpc/client/RPCClientRWC.ts @@ -0,0 +1,11 @@ +import { InjectionToken } from '@angular/core'; + +import { Observable } from 'rxjs/Observable'; + +export interface RPCClientRWC { + connect(queryString?: string): void; + readResponse(): Observable; + writeRequest(data: any): void; + disconnect(): void; + connectionStatus(): Observable; +} diff --git a/src/@loafer/ng-rpc/client/index.ts b/src/@loafer/ng-rpc/client/index.ts new file mode 100644 index 0000000..efdf231 --- /dev/null +++ b/src/@loafer/ng-rpc/client/index.ts @@ -0,0 +1,2 @@ +export * from './RPCClient'; +export * from './RPCClientRWC'; diff --git a/src/packages/core/rpc/client/rwc/websocket/RPCClientWebsocketRWC.ts b/src/@loafer/ng-rpc/client/rwc/websocket/RPCClientWebsocketRWC.ts similarity index 89% rename from src/packages/core/rpc/client/rwc/websocket/RPCClientWebsocketRWC.ts rename to src/@loafer/ng-rpc/client/rwc/websocket/RPCClientWebsocketRWC.ts index 81c5b27..f2d0849 100644 --- a/src/packages/core/rpc/client/rwc/websocket/RPCClientWebsocketRWC.ts +++ b/src/@loafer/ng-rpc/client/rwc/websocket/RPCClientWebsocketRWC.ts @@ -5,18 +5,17 @@ import { map } from 'rxjs/operator/map'; import { RxWebsocketSubject, RxWebsocketSubjectConfig, -} from 'packages/core/websocket/RxWebsocketSubject'; +} from './RxWebsocketSubject'; -import { RPCClientRWC } from '../RPCClientRWC'; +import { RPCClientRWC } from '../../RPCClientRWC'; -export class RPCClientWebsocketRWC extends RPCClientRWC { +export class RPCClientWebsocketRWC implements RPCClientRWC { private _wsSocketSubject: RxWebsocketSubject; private _responseSubject: Subject; public constructor( private _config: RxWebsocketSubjectConfig, ) { - super(); this._wsSocketSubject = new RxWebsocketSubject(this._config); } @@ -37,6 +36,7 @@ export class RPCClientWebsocketRWC extends RPCClientRWC { } }, () => { + console.log('sss'); } ); } diff --git a/src/packages/core/websocket/RxWebsocketSubject.ts b/src/@loafer/ng-rpc/client/rwc/websocket/RxWebsocketSubject.ts similarity index 100% rename from src/packages/core/websocket/RxWebsocketSubject.ts rename to src/@loafer/ng-rpc/client/rwc/websocket/RxWebsocketSubject.ts diff --git a/src/@loafer/ng-rpc/client/rwc/websocket/index.ts b/src/@loafer/ng-rpc/client/rwc/websocket/index.ts new file mode 100644 index 0000000..80de9d0 --- /dev/null +++ b/src/@loafer/ng-rpc/client/rwc/websocket/index.ts @@ -0,0 +1,2 @@ +export * from './RPCClientWebsocketRWC'; +export * from './RxWebsocketSubject'; diff --git a/src/@loafer/ng-rpc/core/index.ts b/src/@loafer/ng-rpc/core/index.ts new file mode 100644 index 0000000..6b36029 --- /dev/null +++ b/src/@loafer/ng-rpc/core/index.ts @@ -0,0 +1 @@ +export * from './token'; diff --git a/src/@loafer/ng-rpc/core/token.ts b/src/@loafer/ng-rpc/core/token.ts new file mode 100644 index 0000000..fe8bd6e --- /dev/null +++ b/src/@loafer/ng-rpc/core/token.ts @@ -0,0 +1,8 @@ +import { InjectionToken } from '@angular/core'; + +export const RPC_CODEC = new InjectionToken('@loafer/ng-rpc RPC codec'); +export const RPC_RWC = new InjectionToken('@loafer/ng-rpc RPC rwc'); + +export const _ROOT_SUBSCRIBERS = new InjectionToken('@loafer/ng-rpc RPC root subscribers'); +export const _FEATURE_SUBSCRIBERS = new InjectionToken('@loafer/ng-rpc RPC feature subscribers'); + diff --git a/src/@loafer/ng-rpc/decorator/index.ts b/src/@loafer/ng-rpc/decorator/index.ts new file mode 100644 index 0000000..f75f0fd --- /dev/null +++ b/src/@loafer/ng-rpc/decorator/index.ts @@ -0,0 +1 @@ +export * from './rpc-subscriber.decorator'; diff --git a/src/@loafer/ng-rpc/decorator/rpc-subscriber.decorator.ts b/src/@loafer/ng-rpc/decorator/rpc-subscriber.decorator.ts new file mode 100644 index 0000000..8aeadf5 --- /dev/null +++ b/src/@loafer/ng-rpc/decorator/rpc-subscriber.decorator.ts @@ -0,0 +1,26 @@ +import { + Type, + PropertyKeyType, +} from '@loafer/core'; + +import { + Decorator, + DecoratorFactory, +} from '@loafer/decorator'; + +export interface RPCSubscriberDecoratorAttribute { + method: string; +} + +export class RPCSubscriberDecorator extends Decorator { + public constructor(config: RPCSubscriberDecoratorAttribute) { + super(config); + } + + public methodDecorator = (target: Object, propertyKey: PropertyKeyType, + descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor | void => { + } + +} + +export const RPCSubscriber = DecoratorFactory.create(RPCSubscriberDecorator); diff --git a/src/@loafer/ng-rpc/index.ts b/src/@loafer/ng-rpc/index.ts new file mode 100644 index 0000000..e96ec44 --- /dev/null +++ b/src/@loafer/ng-rpc/index.ts @@ -0,0 +1 @@ +export * from './ng-rpc.module'; diff --git a/src/@loafer/ng-rpc/ng-rpc.module.ts b/src/@loafer/ng-rpc/ng-rpc.module.ts new file mode 100644 index 0000000..34f2139 --- /dev/null +++ b/src/@loafer/ng-rpc/ng-rpc.module.ts @@ -0,0 +1,109 @@ +import { + NgModule, + ModuleWithProviders, + Type, + Inject, + InjectionToken, +} from '@angular/core'; + +import { + RPC_CODEC, + RPC_RWC, + + _ROOT_SUBSCRIBERS, + _FEATURE_SUBSCRIBERS, +} from './core'; + +import { + RPCClientRWC, +} from './client/RPCClientRWC'; + +import { + RPCClientCodec, +} from './protocol'; + +import { + SERVICES, RPCService, +} from './service'; + +import { + SUBSCRIBERS, RPCSubscribeService, +} from './subscribe'; + +export interface RPCFeatureModuleConfig { + subscribers?: Type[]; +} + +export interface RPCRootModuleConfig { + subscribers?: Type[]; +} + +@NgModule({}) +export class RPCRootModule { + constructor( + private rpcService: RPCService, + private rpcSubscribeService: RPCSubscribeService, + @Inject(_ROOT_SUBSCRIBERS) rootSubscribers: any[], + ) { + rootSubscribers.forEach((subscriber) => { + rpcSubscribeService.addSubscriber(subscriber); + }); + } +} + +@NgModule({}) +export class RPCFeatureModule { + constructor( + private rpcService: RPCService, + private rpcSubscribeService: RPCSubscribeService, + @Inject(_FEATURE_SUBSCRIBERS) featureSubscribersGroups: any[][], + private root: RPCRootModule, + ) { + featureSubscribersGroups.forEach((featureSubscribers) => { + featureSubscribers.forEach((subscriber) => { + rpcSubscribeService.addSubscriber(subscriber); + }); + }); + } +} + +@NgModule({}) +export class RPCModule { + static forRoot(config: RPCRootModuleConfig): ModuleWithProviders { + const subscribers = undefined === config.subscribers ? [] : config.subscribers; + return { + ngModule: RPCRootModule, + providers: [ + subscribers, + { + provide: _ROOT_SUBSCRIBERS, + deps: subscribers, + useFactory: createSourceInstances, + }, + SERVICES, + SUBSCRIBERS, + ], + }; + } + + static forFeature(config: RPCFeatureModuleConfig): ModuleWithProviders { + const subscribers = undefined === config.subscribers ? [] : config.subscribers; + + return { + ngModule: RPCFeatureModule, + providers: [ + subscribers, + { + provide: _FEATURE_SUBSCRIBERS, + multi: true, + deps: subscribers, + useFactory: createSourceInstances, + }, + ], + }; + } +} + +export function createSourceInstances(...instances: any[]) { + return instances; +} diff --git a/src/@loafer/ng-rpc/protocol/RPCClientCodec.ts b/src/@loafer/ng-rpc/protocol/RPCClientCodec.ts new file mode 100644 index 0000000..94af99e --- /dev/null +++ b/src/@loafer/ng-rpc/protocol/RPCClientCodec.ts @@ -0,0 +1,20 @@ +import { RPCError } from './RPCError'; + +export interface RPCClientCodec { + request(method: string, args: any[], id: number): any; + response(res: any): RPCClientResponseCodec; +} + +export interface RPCClientResponseCodec { + id(): number | undefined; + error(): RPCError | undefined; + result(): any | undefined; + + isNotification(): boolean; + notification(): RPCClientNotificationCodec | undefined; +} + +export interface RPCClientNotificationCodec { + method(): string; + params(): any | undefined; +} diff --git a/src/packages/core/rpc/error.ts b/src/@loafer/ng-rpc/protocol/RPCError.ts similarity index 89% rename from src/packages/core/rpc/error.ts rename to src/@loafer/ng-rpc/protocol/RPCError.ts index 6997e0c..91f4aac 100644 --- a/src/packages/core/rpc/error.ts +++ b/src/@loafer/ng-rpc/protocol/RPCError.ts @@ -1,17 +1,17 @@ -export interface RPCError { +export interface RPCClientError { request: { method: string, params: any[], }; - response: RPCServerError; + response: RPCError; } /** * Error object representation when a method invocation fails. */ -export interface RPCServerError { +export interface RPCError { /** Indicates the error type that occurred. */ - code: ErrorCode; + code: RPCErrorCode; /** A short description of the error. */ message: string; @@ -21,7 +21,7 @@ export interface RPCServerError { }/* /** Error codes are same as xml-rpc codes. See http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php */ -export const enum ErrorCode { +export const enum RPCErrorCode { /** Parse error Invalid JSON was received by the Server. */ ParseError = -32700, diff --git a/src/@loafer/ng-rpc/protocol/index.ts b/src/@loafer/ng-rpc/protocol/index.ts new file mode 100644 index 0000000..a9d3a36 --- /dev/null +++ b/src/@loafer/ng-rpc/protocol/index.ts @@ -0,0 +1,2 @@ +export * from './RPCClientCodec'; +export * from './RPCError'; diff --git a/src/packages/core/rpc/protocol/json/RPCClientJSONCodec.ts b/src/@loafer/ng-rpc/protocol/json/JSONRPCClientCodec.ts similarity index 84% rename from src/packages/core/rpc/protocol/json/RPCClientJSONCodec.ts rename to src/@loafer/ng-rpc/protocol/json/JSONRPCClientCodec.ts index cb0ba5c..27d3980 100644 --- a/src/packages/core/rpc/protocol/json/RPCClientJSONCodec.ts +++ b/src/@loafer/ng-rpc/protocol/json/JSONRPCClientCodec.ts @@ -5,8 +5,8 @@ import { } from '../RPCClientCodec'; import { - RPCServerError, -} from '../../error'; + RPCError, +} from '../RPCError'; export interface ClientNotification { method: string; @@ -23,11 +23,11 @@ export interface ClientRequest { export interface ClientResponse { jsonrpc: string; result?: any; - error?: RPCServerError; + error?: RPCError; id?: number; } -export class RPCClientJSONCodec extends RPCClientCodec { +export class JSONRPCClientCodec implements RPCClientCodec { public request(method: string, args: any[], id?: number): any { const params = convertParamsToStringArray(args); @@ -46,7 +46,7 @@ export class RPCClientJSONCodec extends RPCClientCodec { result: res.result, error: res.error, }; - return new RPCClientJSONResponseCodec(_res); + return new JSONRPCClientResponseCodec(_res); } } @@ -79,15 +79,14 @@ function convertParamsToStringArray(args: any[]): string[] | undefined { return values; } -export class RPCClientJSONResponseCodec extends RPCClientResponseCodec { +export class JSONRPCClientResponseCodec implements RPCClientResponseCodec { public constructor(private _res: ClientResponse) { - super(); } public id(): number | undefined { return this._res.id; } - public error(): RPCServerError | undefined { + public error(): RPCError | undefined { return this._res.error; } public result(): any | undefined { @@ -109,13 +108,12 @@ export class RPCClientJSONResponseCodec extends RPCClientResponseCodec { method: this._res.result.method, params: this._res.result.params, }; - return new RPCClientJSONNotificationCodec(_noti); + return new JSONRPCClientNotificationCodec(_noti); } } -export class RPCClientJSONNotificationCodec extends RPCClientNotificationCodec { +export class JSONRPCClientNotificationCodec implements RPCClientNotificationCodec { public constructor(private _noti: ClientNotification) { - super(); } public method(): string { diff --git a/src/@loafer/ng-rpc/protocol/json/index.ts b/src/@loafer/ng-rpc/protocol/json/index.ts new file mode 100644 index 0000000..2ef50ad --- /dev/null +++ b/src/@loafer/ng-rpc/protocol/json/index.ts @@ -0,0 +1 @@ +export * from './JSONRPCClientCodec'; diff --git a/src/@loafer/ng-rpc/service/index.ts b/src/@loafer/ng-rpc/service/index.ts new file mode 100644 index 0000000..18154a6 --- /dev/null +++ b/src/@loafer/ng-rpc/service/index.ts @@ -0,0 +1,7 @@ +export * from './rpc.service'; + +import { RPCService } from './rpc.service'; + +export const SERVICES = [ + RPCService, +]; diff --git a/src/@loafer/ng-rpc/service/rpc.service.ts b/src/@loafer/ng-rpc/service/rpc.service.ts new file mode 100644 index 0000000..b263dd6 --- /dev/null +++ b/src/@loafer/ng-rpc/service/rpc.service.ts @@ -0,0 +1,39 @@ +import { Injectable, Inject } from '@angular/core'; +import { Store, select } from '@ngrx/store'; + +import { Observable } from 'rxjs/Observable'; +import { Subject } from 'rxjs/Subject'; + +import { + RPC_CODEC, + RPC_RWC, +} from '../core'; + +import { + RPCClient, + RPCClientRWC, +} from '../client'; + +import { + RPCClientCodec, + RPCClientNotificationCodec, +} from '../protocol'; + +import { + RPCSubscribeService, +} from '../subscribe'; + +@Injectable() +export class RPCService extends RPCClient { + constructor( + @Inject(RPC_CODEC) rpcClientCodec: RPCClientCodec, + @Inject(RPC_RWC) rpcClientRWC: RPCClientRWC, + private rpcSubscribeService: RPCSubscribeService, + ) { + super(rpcClientCodec, rpcClientRWC); + } + + protected onNotification(notiCodec: RPCClientNotificationCodec): void { + this.rpcSubscribeService.notify(notiCodec); + } +} diff --git a/src/@loafer/ng-rpc/subscribe/index.ts b/src/@loafer/ng-rpc/subscribe/index.ts new file mode 100644 index 0000000..d877f8d --- /dev/null +++ b/src/@loafer/ng-rpc/subscribe/index.ts @@ -0,0 +1,7 @@ +export * from './subscribe.service'; + +import { RPCSubscribeService } from './subscribe.service'; + +export const SUBSCRIBERS = [ + RPCSubscribeService, +]; diff --git a/src/@loafer/ng-rpc/subscribe/subscribe.service.ts b/src/@loafer/ng-rpc/subscribe/subscribe.service.ts new file mode 100644 index 0000000..ab86fb1 --- /dev/null +++ b/src/@loafer/ng-rpc/subscribe/subscribe.service.ts @@ -0,0 +1,56 @@ +import { Injectable, Inject } from '@angular/core'; +import { Store, select } from '@ngrx/store'; + +import { + Type, +} from '@loafer/core'; + +import { TypeUtil } from '@loafer/core/util/TypeUtil'; + +import { + Class, + Metadata, +} from '@loafer/core/reflect'; + +import { RPCSubscriberDecorator } from '../decorator'; + +import { + RPCClientNotificationCodec, +} from '../protocol'; + +@Injectable() +export class RPCSubscribeService { + private subscribers: Set; + + constructor( + ) { + this.subscribers = new Set(); + } + + public addSubscriber(subscriber: Type): void { + const type = TypeUtil.getType(subscriber); + + if (this.subscribers.has(subscriber)) { + console.log(`Subscriber[${type.name}] has been added`); + return; + } + + this.subscribers.add(subscriber); + + const clazz = Class.forType(type); + if (undefined === clazz) { + console.log(`Type[${subscriber.name}] is not decorated type`); + return; + } + + const methods = clazz.getMethods(); + methods.forEach((method, propertyKey) => { + const annon = method.getAnnotation(RPCSubscriberDecorator); + console.log(`subscriber method[${annon.attribute.method}]`); + }); + } + + public notify(codec: RPCClientNotificationCodec): void { + console.log(`notify method[${codec.method()}] params[${codec.params()}]`); + } +} diff --git a/src/app/app-rest.module.ts b/src/app/app-rest.module.ts new file mode 100644 index 0000000..a89917b --- /dev/null +++ b/src/app/app-rest.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RESTModule } from '@loafer/ng-rest'; + +import { environment } from '../environments/environment'; + + +@NgModule({ + exports: [ + RESTModule, + ], + imports: [ + RESTModule.forRoot({baseURL: environment.restBaseURL}), + ], + providers: [ + ] +}) +export class AppRESTModule { } diff --git a/src/app/app-rpc.module.ts b/src/app/app-rpc.module.ts new file mode 100644 index 0000000..7e7d167 --- /dev/null +++ b/src/app/app-rpc.module.ts @@ -0,0 +1,36 @@ +import { NgModule } from '@angular/core'; +import { RPCModule } from '@loafer/ng-rpc'; + +import { + RPC_CODEC, + RPC_RWC, +} from '@loafer/ng-rpc/core'; +import { JSONRPCClientCodec } from '@loafer/ng-rpc/protocol/json'; +import { + RPCClientWebsocketRWC, + RxWebsocketSubjectConfig, +} from '@loafer/ng-rpc/client/rwc/websocket'; + +import { environment } from '../environments/environment'; + + +@NgModule({ + exports: [ + RPCModule, + ], + imports: [ + RPCModule.forRoot({}), + ], + providers: [ + {provide: 'WEBAPP_RPC_CONFIG', useValue: environment.webappRPCConfig}, + + {provide: RPC_CODEC, useFactory: () => new JSONRPCClientCodec()}, + { + provide: RPC_RWC, + useFactory: (config: RxWebsocketSubjectConfig) => new RPCClientWebsocketRWC(config), + deps: ['WEBAPP_RPC_CONFIG'] + }, + + ] +}) +export class AppRPCModule { } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 1304c9d..4ed89c1 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -9,32 +9,18 @@ import { CookieService } from 'ngx-cookie-service'; import { MemberModule } from 'packages/member/member.module'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; -import { RPCClientCodec } from 'packages/core/rpc/protocol/RPCClientCodec'; -import { RPCClientJSONCodec } from 'packages/core/rpc/protocol/json/RPCClientJSONCodec'; - -import { RPCClientRWC } from 'packages/core/rpc/client/rwc/RPCClientRWC'; -import { RPCClientWebsocketRWC } from 'packages/core/rpc/client/rwc/websocket/RPCClientWebsocketRWC'; -import { RxWebsocketSubjectConfig } from 'packages/core/websocket/RxWebsocketSubject'; - -import { RESTClient } from 'packages/core/rest/client/RESTClient'; - import { AppRoutingModule } from './app-routing.module'; import { AppStoreModule } from './app-store.module'; import { AppL10NModule } from './app-l10n.module'; +import { AppRPCModule } from './app-rpc.module'; +import { AppRESTModule } from './app-rest.module'; import { MaterialModule } from 'packages/commons/material/material.module'; import { AppComponent } from './app.component'; -import { environment } from '../environments/environment'; -import { RPCService } from './commons/service/rpc.service'; -import { RESTService } from './commons/service/rest.service'; - - import { AuthGuard } from './commons/guard/auth.guard'; - @NgModule({ imports: [ BrowserModule, @@ -42,27 +28,13 @@ import { AuthGuard } from './commons/guard/auth.guard'; AppRoutingModule, AppStoreModule, AppL10NModule, + AppRPCModule, + AppRESTModule, MaterialModule, HttpClientModule, MemberModule, ], providers: [ - {provide: 'REST_BASE_URL', useValue: environment.restBaseURL}, - {provide: 'WEBAPP_RPC_CONFIG', useValue: environment.webappRPCConfig}, - - {provide: RPCClientCodec, useFactory: () => new RPCClientJSONCodec()}, - { - provide: RPCClientRWC, - useFactory: (config: RxWebsocketSubjectConfig) => new RPCClientWebsocketRWC(config), - deps: ['WEBAPP_RPC_CONFIG'] - }, - { - provide: RESTClient, useClass: RESTService - }, - { - provide: RPCClient, useClass: RPCService - }, - CookieService, AuthGuard, ], diff --git a/src/app/commons/service/rpc.service.spec.ts b/src/app/commons/service/rpc.service.spec.ts deleted file mode 100644 index 1e3a148..0000000 --- a/src/app/commons/service/rpc.service.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { TestBed, inject } from '@angular/core/testing'; - -import { RPCService } from './rpc.service'; - -describe('RPCService', () => { - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [RPCService] - }); - }); - - it('should be created', inject([RPCService], (service: RPCService) => { - expect(service).toBeTruthy(); - })); - - it('apiService connect to server', inject([RPCService], (service: RPCService) => { - service.connect(); - service.getConnectionStatus().subscribe( - (isConnected: boolean) => { - console.log('isConnected:' + isConnected); - } - ); - - expect(service).toBeTruthy(); - })); - -}); diff --git a/src/app/commons/service/rpc.service.ts b/src/app/commons/service/rpc.service.ts deleted file mode 100644 index 7febfb0..0000000 --- a/src/app/commons/service/rpc.service.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Injectable, Inject } from '@angular/core'; -import { Store, select } from '@ngrx/store'; - -import { Observable } from 'rxjs/Observable'; -import { Subject } from 'rxjs/Subject'; - -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; -import { RPCClientCodec } from 'packages/core/rpc/protocol/RPCClientCodec'; -import { RPCClientRWC } from 'packages/core/rpc/client/rwc/RPCClientRWC'; -import { RPCClientNotificationCodec } from 'packages/core/rpc/protocol/RPCClientCodec'; - -import { notificationAction } from 'packages/core/rpc/store/notification'; - -import * as AppStore from '../store'; - - -@Injectable() -export class RPCService extends RPCClient { - constructor( - private _rpcClientCodec: RPCClientCodec, - private _rpcClientRWC: RPCClientRWC, - private store: Store, - ) { - super(_rpcClientCodec, _rpcClientRWC); - } - - protected onNotification(notiCodec: RPCClientNotificationCodec): void { - this.store.dispatch(notificationAction(notiCodec.method(), notiCodec.params())); - } -} diff --git a/src/app/commons/store/signin-init/signin-init.effect.ts b/src/app/commons/store/signin-init/signin-init.effect.ts index 5f944b1..07b6efa 100644 --- a/src/app/commons/store/signin-init/signin-init.effect.ts +++ b/src/app/commons/store/signin-init/signin-init.effect.ts @@ -16,7 +16,7 @@ import 'rxjs/add/operator/take'; import { CookieService } from 'ngx-cookie-service'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { SigninSuccess, @@ -29,7 +29,7 @@ export class Effects { constructor( private actions$: Actions, - private rpcClient: RPCClient, + private rpcService: RPCService, private cookieService: CookieService, ) { } @@ -48,7 +48,7 @@ export class Effects { const queryString = `authToken=${authToken}`; - this.rpcClient.connect(queryString); + this.rpcService.connect(queryString); } ); @@ -62,7 +62,7 @@ export class Effects { // console.log(`authToken: ${authToken}`); const queryString = `authToken=${authToken}`; - this.rpcClient.connect(queryString); + this.rpcService.connect(queryString); } ); } diff --git a/src/packages/core/rpc/client/rwc/RPCClientRWC.ts b/src/packages/core/rpc/client/rwc/RPCClientRWC.ts deleted file mode 100644 index c18eb70..0000000 --- a/src/packages/core/rpc/client/rwc/RPCClientRWC.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { InjectionToken } from '@angular/core'; - -import { Observable } from 'rxjs/Observable'; - -export abstract class RPCClientRWC { - public abstract connect(queryString?: string): void; - public abstract readResponse(): Observable; - public abstract writeRequest(data: any): void; - public abstract disconnect(): void; - public abstract connectionStatus(): Observable; -} diff --git a/src/packages/core/rpc/protocol/RPCClientCodec.ts b/src/packages/core/rpc/protocol/RPCClientCodec.ts deleted file mode 100644 index 433ad9f..0000000 --- a/src/packages/core/rpc/protocol/RPCClientCodec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { RPCServerError } from '../error'; - -export abstract class RPCClientCodec { - abstract request(method: string, args: any[], id: number): any; - abstract response(res: any): RPCClientResponseCodec; -} - -export abstract class RPCClientResponseCodec { - abstract id(): number | undefined; - abstract error(): RPCServerError | undefined; - abstract result(): any | undefined; - - abstract isNotification(): boolean; - abstract notification(): RPCClientNotificationCodec | undefined; -} - -export abstract class RPCClientNotificationCodec { - public abstract method(): string; - public abstract params(): any | undefined; -} diff --git a/src/packages/core/rpc/store/notification/index.ts b/src/packages/core/rpc/store/notification/index.ts deleted file mode 100644 index 2bf53bc..0000000 --- a/src/packages/core/rpc/store/notification/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './notification.action'; diff --git a/src/packages/core/rpc/store/notification/notification.action.ts b/src/packages/core/rpc/store/notification/notification.action.ts deleted file mode 100644 index aba52eb..0000000 --- a/src/packages/core/rpc/store/notification/notification.action.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Action } from '@ngrx/store'; - -export const NOTIFICATION_ACTION_TYPE_PREFIX = '@@NOTIFICATION'; - -export interface NotificationAction extends Action { - payload?: any; -} - -export function notificationActionEnum(method: string): string { - return `[${NOTIFICATION_ACTION_TYPE_PREFIX}] ${method}`; -} - -export function notificationAction(method: string, params: any): Action { - const action: NotificationAction = { - type: notificationActionEnum(method), - payload: params, - }; - return action; -} - diff --git a/src/packages/discovery/component/setting/setting.component.ts b/src/packages/discovery/component/setting/setting.component.ts index cefe0a0..b8d514e 100644 --- a/src/packages/discovery/component/setting/setting.component.ts +++ b/src/packages/discovery/component/setting/setting.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, AfterContentInit } from '@angular/core'; import { MatCheckboxChange } from '@angular/material'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DiscoveryStartInfo, DiscoveryZone, @@ -59,7 +59,7 @@ export class SettingComponent implements OnInit, AfterContentInit { this.started = true; } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); @@ -68,7 +68,7 @@ export class SettingComponent implements OnInit, AfterContentInit { (zone: Zone) => { this.convertTreeView(zone); }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/discovery/discovery-rpc.module.ts b/src/packages/discovery/discovery-rpc.module.ts new file mode 100644 index 0000000..0dc1006 --- /dev/null +++ b/src/packages/discovery/discovery-rpc.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { RPCModule } from '@loafer/ng-rpc'; + +import { + SUBSCRIBERS, +} from './subscriber'; + +@NgModule({ + imports: [ + RPCModule.forFeature({subscribers: SUBSCRIBERS}), + ], +}) +export class DiscoveryRPCModule { } diff --git a/src/packages/discovery/discovery.module.ts b/src/packages/discovery/discovery.module.ts index 84a0914..bff106b 100644 --- a/src/packages/discovery/discovery.module.ts +++ b/src/packages/discovery/discovery.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from '@angular/core'; +import { NgModule, Inject } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; @@ -7,6 +7,8 @@ import { MaterialModule } from 'packages/commons/material/material.module'; import { InputChipModule } from 'packages/commons/component/input-chip/input-chip.module'; import { DiscoveryStoreModule } from './discovery-store.module'; +import { DiscoveryRPCModule } from './discovery-rpc.module'; + import { COMPONENTS } from './component'; import { SERVICES } from './service'; import { TreeModule } from 'angular-tree-component'; @@ -18,6 +20,7 @@ import { TreeModule } from 'angular-tree-component'; InputChipModule, FormsModule, DiscoveryStoreModule, + DiscoveryRPCModule, TreeModule ], declarations: [ @@ -30,4 +33,5 @@ import { TreeModule } from 'angular-tree-component'; SERVICES, ], }) -export class DiscoveryModule { } +export class DiscoveryModule { +} diff --git a/src/packages/discovery/service/discovery.service.ts b/src/packages/discovery/service/discovery.service.ts index ab229e0..26c1cd8 100644 --- a/src/packages/discovery/service/discovery.service.ts +++ b/src/packages/discovery/service/discovery.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { DiscoveryStartInfo, DiscoveryZone, @@ -17,26 +17,26 @@ import { export class DiscoveryService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public start(dsInfo: DiscoveryStartInfo): Observable { - return this.rpcClient.call('DiscoveryService.startDiscovery', dsInfo); + return this.rpcService.call('DiscoveryService.startDiscovery', dsInfo); } public discoverZone(probeID: string, discoveryZone: DiscoveryZone): void { - this.rpcClient.send('DiscoveryService.discoverZone', probeID, discoveryZone); + this.rpcService.send('DiscoveryService.discoverZone', probeID, discoveryZone); } public discoverHost(probeID: string, zone: Zone, discoveryHost: DiscoveryHost): void { - this.rpcClient.send('DiscoveryService.discoverHost', probeID, zone, discoveryHost); + this.rpcService.send('DiscoveryService.discoverHost', probeID, zone, discoveryHost); } public discoverPort(probeID: string, host: Host, discoveryPort: DiscoveryPort): void { - this.rpcClient.send('DiscoveryService.discoverPort', probeID, host, discoveryPort); + this.rpcService.send('DiscoveryService.discoverPort', probeID, host, discoveryPort); } public discoverService(probeID: string, port: Port, discoveryService: M_DiscoveryService): void { - this.rpcClient.send('DiscoveryService.discoverService', probeID, port, discoveryService); + this.rpcService.send('DiscoveryService.discoverService', probeID, port, discoveryService); } } diff --git a/src/packages/discovery/service/target-discovery.service.ts b/src/packages/discovery/service/target-discovery.service.ts index ba3f504..1f4ec64 100644 --- a/src/packages/discovery/service/target-discovery.service.ts +++ b/src/packages/discovery/service/target-discovery.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { DiscoveryStartInfo, DiscoveryZone, @@ -18,14 +18,14 @@ import { Probe } from 'packages/probe/model'; export class TargetDiscoveryService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public saveAllTarget(hosts: Host[], probe: Probe): Observable { - return this.rpcClient.call('TargetDiscoveryService.saveAllTarget', hosts, probe); + return this.rpcService.call('TargetDiscoveryService.saveAllTarget', hosts, probe); } } diff --git a/src/packages/discovery/store/notification/notification.action.ts b/src/packages/discovery/store/notification/notification.action.ts index 3ac3b5c..62fedb3 100644 --- a/src/packages/discovery/store/notification/notification.action.ts +++ b/src/packages/discovery/store/notification/notification.action.ts @@ -1,8 +1,5 @@ import { Action } from '@ngrx/store'; -import { notificationActionEnum } from 'packages/core/rpc/store/notification'; -import { RPCError } from 'packages/core/rpc/error'; - import { Zone, Host, @@ -15,10 +12,10 @@ import { } from '../../model'; export enum ActionType { - DiscoverZone = '[@@NOTIFICATION] DiscoveryService.discoverZone', - DiscoverHost = '[@@NOTIFICATION] DiscoveryService.discoverHost', - DiscoverPort = '[@@NOTIFICATION] DiscoveryService.discoverPort', - DiscoverService = '[@@NOTIFICATION] DiscoveryService.discoverService', + DiscoverZone = '[discovery.discovery] discoverZone', + DiscoverHost = '[discovery.discovery] discoverHost', + DiscoverPort = '[discovery.discovery] discoverPort', + DiscoverService = '[discovery.discovery] discoverService', DiscoveredZone = '[@@NOTIFICATION] DiscoveryService.discoveredZone', DiscoveredHost = '[@@NOTIFICATION] DiscoveryService.discoveredHost', DiscoveredPort = '[@@NOTIFICATION] DiscoveryService.discoveredPort', diff --git a/src/packages/discovery/store/notification/notification.reducer.ts b/src/packages/discovery/store/notification/notification.reducer.ts index b781753..276bb66 100644 --- a/src/packages/discovery/store/notification/notification.reducer.ts +++ b/src/packages/discovery/store/notification/notification.reducer.ts @@ -1,5 +1,3 @@ -import { RPCError } from 'packages/core/rpc/error'; - import { Actions, ActionType, diff --git a/src/packages/discovery/store/notification/notification.state.ts b/src/packages/discovery/store/notification/notification.state.ts index 5ad59cc..f5abc7f 100644 --- a/src/packages/discovery/store/notification/notification.state.ts +++ b/src/packages/discovery/store/notification/notification.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Zone } from '../../model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; processing: boolean; zones: Map | null; } diff --git a/src/packages/discovery/store/regist/regist.action.ts b/src/packages/discovery/store/regist/regist.action.ts index 32c2085..296988b 100644 --- a/src/packages/discovery/store/regist/regist.action.ts +++ b/src/packages/discovery/store/regist/regist.action.ts @@ -1,7 +1,6 @@ import { Action } from '@ngrx/store'; -import { notificationActionEnum } from 'packages/core/rpc/store/notification'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Zone, @@ -36,7 +35,7 @@ export class DiscoverySaveAllTargetSuccess implements Action { export class DiscoverySaveAllTargetFailure implements Action { readonly type = ActionType.SaveAllTargetFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export type Actions = diff --git a/src/packages/discovery/store/regist/regist.effect.ts b/src/packages/discovery/store/regist/regist.effect.ts index 87389ee..45541b2 100644 --- a/src/packages/discovery/store/regist/regist.effect.ts +++ b/src/packages/discovery/store/regist/regist.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DiscoveryStartInfo } from '../../model'; import { TargetDiscoveryService } from '../../service/target-discovery.service'; @@ -43,7 +43,7 @@ export class Effects { .map(result => { return new DiscoverySaveAllTargetSuccess(result); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { console.log(error.response.message); return of(new DiscoverySaveAllTargetFailure(error)); }); diff --git a/src/packages/discovery/store/regist/regist.reducer.ts b/src/packages/discovery/store/regist/regist.reducer.ts index 9e93ec7..98f62f7 100644 --- a/src/packages/discovery/store/regist/regist.reducer.ts +++ b/src/packages/discovery/store/regist/regist.reducer.ts @@ -1,5 +1,3 @@ -import { RPCError } from 'packages/core/rpc/error'; - import { Actions, ActionType, diff --git a/src/packages/discovery/store/regist/regist.state.ts b/src/packages/discovery/store/regist/regist.state.ts index 12ea68d..8d12c07 100644 --- a/src/packages/discovery/store/regist/regist.state.ts +++ b/src/packages/discovery/store/regist/regist.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DiscoveryStartInfo } from '../../model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; isPending: boolean; isSuccess: Boolean | null; } diff --git a/src/packages/discovery/store/setting/setting.action.ts b/src/packages/discovery/store/setting/setting.action.ts index 0d60eeb..e429799 100644 --- a/src/packages/discovery/store/setting/setting.action.ts +++ b/src/packages/discovery/store/setting/setting.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DiscoveryStartInfo } from '../../model'; @@ -26,7 +26,7 @@ export class SettingSuccess implements Action { export class SettingFailure implements Action { readonly type = ActionType.SettingFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export class SettingRedirect implements Action { diff --git a/src/packages/discovery/store/setting/setting.effect.ts b/src/packages/discovery/store/setting/setting.effect.ts index 9df6d81..4a0312c 100644 --- a/src/packages/discovery/store/setting/setting.effect.ts +++ b/src/packages/discovery/store/setting/setting.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DiscoveryStartInfo } from '../../model'; import { DiscoveryService } from '../../service/discovery.service'; @@ -43,7 +43,7 @@ export class Effects { .map(discoveryStartInfo => { return new SettingSuccess(discoveryStartInfo); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { console.log(error.response.message); return of(new SettingFailure(error)); }); diff --git a/src/packages/discovery/store/setting/setting.reducer.ts b/src/packages/discovery/store/setting/setting.reducer.ts index 3ff133b..55af245 100644 --- a/src/packages/discovery/store/setting/setting.reducer.ts +++ b/src/packages/discovery/store/setting/setting.reducer.ts @@ -1,5 +1,3 @@ -import { RPCError } from 'packages/core/rpc/error'; - import { Actions, ActionType, diff --git a/src/packages/discovery/store/setting/setting.state.ts b/src/packages/discovery/store/setting/setting.state.ts index 1064c11..88a2e9b 100644 --- a/src/packages/discovery/store/setting/setting.state.ts +++ b/src/packages/discovery/store/setting/setting.state.ts @@ -1,10 +1,10 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DiscoveryStartInfo } from '../../model'; export interface State { isStart: boolean; - error: RPCError | null; + error: RPCClientError | null; isPending: boolean; discoveryStartInfo: DiscoveryStartInfo | null; } diff --git a/src/packages/discovery/subscriber/discovery.subscriber.ts b/src/packages/discovery/subscriber/discovery.subscriber.ts new file mode 100644 index 0000000..abe430e --- /dev/null +++ b/src/packages/discovery/subscriber/discovery.subscriber.ts @@ -0,0 +1,39 @@ +import { Injectable } from '@angular/core'; +import { Store, select } from '@ngrx/store'; + +import { RPCSubscriber } from '@loafer/ng-rpc/decorator'; + +import * as DiscoveryStore from '../store/notification'; + +import { + Zone, + Host, + Port, + Service, +} from '../model'; + +@Injectable() +export class DiscoverySubscriber { + + public constructor( + private store: Store, + ) { + } + + @RPCSubscriber({method: 'DiscoveryService.discoveredZone'}) + public discoveredZone(zone: Zone): void { + this.store.dispatch(new DiscoveryStore.DiscoveredZone(zone)); + } + @RPCSubscriber({method: 'DiscoveryService.discoveredHost'}) + public discoveredHost(host: Host): void { + this.store.dispatch(new DiscoveryStore.DiscoveredHost(host)); + } + @RPCSubscriber({method: 'DiscoveryService.discoveredPort'}) + public discoveredPort(port: Port): void { + this.store.dispatch(new DiscoveryStore.DiscoveredPort(port)); + } + @RPCSubscriber({method: 'DiscoveryService.discoveredService'}) + public discoveredService(service: Service): void { + this.store.dispatch(new DiscoveryStore.DiscoveredService(service)); + } +} diff --git a/src/packages/discovery/subscriber/index.ts b/src/packages/discovery/subscriber/index.ts new file mode 100644 index 0000000..c2a5515 --- /dev/null +++ b/src/packages/discovery/subscriber/index.ts @@ -0,0 +1,5 @@ +import { DiscoverySubscriber } from './discovery.subscriber'; + +export const SUBSCRIBERS = [ + DiscoverySubscriber, +]; diff --git a/src/packages/infra/component/map/map.component.ts b/src/packages/infra/component/map/map.component.ts index b030c5f..bbc5cfc 100644 --- a/src/packages/infra/component/map/map.component.ts +++ b/src/packages/infra/component/map/map.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, AfterContentInit } from '@angular/core'; import { Infra, InfraHost, InfraOSApplication } from '../../model'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { AuthSelector } from 'packages/member/store'; import * as ListStore from '../../store/list'; import { ListSelector } from '../../store'; @@ -33,7 +33,7 @@ export class MapComponent implements OnInit, AfterContentInit { this.infras = page.content; } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/infra/service/infra.service.ts b/src/packages/infra/service/infra.service.ts index 465d712..cebe6c8 100644 --- a/src/packages/infra/service/infra.service.ts +++ b/src/packages/infra/service/infra.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { Infra } from '../model'; import { Page, PageParams } from '../../../app/commons/model'; @@ -14,16 +14,16 @@ import { Probe } from '../../probe/model'; export class InfraService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public readAllByDomain(domain: Domain, pageParams: PageParams): Observable { - return this.rpcClient.call('InfraService.readAllByDomain', domain, pageParams); + return this.rpcService.call('InfraService.readAllByDomain', domain, pageParams); } public readAllByProbe(probe: Probe, pageParams: PageParams): Observable { - return this.rpcClient.call('InfraService.readAllByProbe', probe, pageParams); + return this.rpcService.call('InfraService.readAllByProbe', probe, pageParams); } } diff --git a/src/packages/infra/store/list/list.action.ts b/src/packages/infra/store/list/list.action.ts index 0e0fdd0..a72b4d3 100644 --- a/src/packages/infra/store/list/list.action.ts +++ b/src/packages/infra/store/list/list.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { PageParams, Page } from 'app/commons/model'; import { Domain } from '../../../domain/model'; @@ -31,7 +31,7 @@ export class ReadAllByDomainSuccess implements Action { export class ReadAllByDomainFailure implements Action { readonly type = ActionType.ReadAllByDomainFailure; - constructor(public payload: RPCError) { } + constructor(public payload: RPCClientError) { } } export class ReadAllByProbe implements Action { @@ -49,7 +49,7 @@ export class ReadAllByProbeSuccess implements Action { export class ReadAllByProbeFailure implements Action { readonly type = ActionType.ReadAllByProbeFailure; - constructor(public payload: RPCError) { } + constructor(public payload: RPCClientError) { } } diff --git a/src/packages/infra/store/list/list.effect.ts b/src/packages/infra/store/list/list.effect.ts index 34c23d9..d58227d 100644 --- a/src/packages/infra/store/list/list.effect.ts +++ b/src/packages/infra/store/list/list.effect.ts @@ -13,7 +13,7 @@ import 'rxjs/add/operator/exhaustMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Infra } from '../../model'; import { InfraService } from '../../service/infra.service'; @@ -46,7 +46,7 @@ export class Effects { .map(page => { return new ReadAllByDomainSuccess(page); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllByDomainFailure(error)); }); @@ -58,7 +58,7 @@ export class Effects { .map(page => { return new ReadAllByProbeSuccess(page); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllByProbeFailure(error)); }); } diff --git a/src/packages/infra/store/list/list.state.ts b/src/packages/infra/store/list/list.state.ts index 18ccc29..4af6fdb 100644 --- a/src/packages/infra/store/list/list.state.ts +++ b/src/packages/infra/store/list/list.state.ts @@ -3,13 +3,13 @@ import { MemoizedSelector, } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Infra } from '../../model'; import { Page } from '../../../../app/commons/model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; isPending: boolean; page: Page | null; } diff --git a/src/packages/member/member-rest.module.ts b/src/packages/member/member-rest.module.ts new file mode 100644 index 0000000..39bf0a4 --- /dev/null +++ b/src/packages/member/member-rest.module.ts @@ -0,0 +1,9 @@ +import { NgModule } from '@angular/core'; +import { RESTModule } from '@loafer/ng-rest'; + +@NgModule({ + imports: [ + RESTModule.forFeature({}), + ], +}) +export class MemberRESTModule { } diff --git a/src/packages/member/member.module.ts b/src/packages/member/member.module.ts index 3b6062f..4543e06 100644 --- a/src/packages/member/member.module.ts +++ b/src/packages/member/member.module.ts @@ -6,6 +6,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MaterialModule } from 'packages/commons/material/material.module'; import { MemberStoreModule } from './member-store.module'; +import { MemberRESTModule } from './member-rest.module'; import { COMPONENTS } from './component'; import { SERVICES } from './service'; @@ -18,6 +19,7 @@ import { SERVICES } from './service'; ReactiveFormsModule, MaterialModule, MemberStoreModule, + MemberRESTModule, ], declarations: [ COMPONENTS, diff --git a/src/packages/member/service/member.service.ts b/src/packages/member/service/member.service.ts index ef3d746..d310615 100644 --- a/src/packages/member/service/member.service.ts +++ b/src/packages/member/service/member.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RESTClient } from 'packages/core/rest/client/RESTClient'; +import { RESTService } from '@loafer/ng-rest/service'; import { DomainMember } from 'packages/domain/model'; import { Member } from '../model'; @@ -12,7 +12,7 @@ import { Member } from '../model'; export class MemberService { public constructor( - private restClient: RESTClient, + private restService: RESTService, ) { } @@ -23,7 +23,7 @@ export class MemberService { signinPw: password, }; - return this.restClient.request('post', '/account/signin', { + return this.restService.request('post', '/account/signin', { body: body, }); } @@ -33,13 +33,13 @@ export class MemberService { authToken: authToken, }; - return this.restClient.request('post', '/account/signin_cookie', { + return this.restService.request('post', '/account/signin_cookie', { body: body, }); } public signup(member: Member): Observable { - return this.restClient.request('post', '/account/signup', { + return this.restService.request('post', '/account/signup', { body: member, }); } diff --git a/src/packages/member/store/auth/auth.action.ts b/src/packages/member/store/auth/auth.action.ts index b752a0d..a8c78b2 100644 --- a/src/packages/member/store/auth/auth.action.ts +++ b/src/packages/member/store/auth/auth.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RESTError } from 'packages/core/rest/error'; +import { RESTClientError } from '@loafer/ng-rest/protocol'; import { DomainMember } from 'packages/domain/model'; import { Member } from '../../model'; @@ -35,7 +35,7 @@ export class SigninSuccess implements Action { export class SigninFailure implements Action { readonly type = ActionType.SigninFailure; - constructor(public payload: RESTError) {} + constructor(public payload: RESTClientError) {} } export class SigninRedirect implements Action { @@ -58,7 +58,7 @@ export class SigninCookieSuccess implements Action { export class SigninCookieFailure implements Action { readonly type = ActionType.SigninCookieFailure; - constructor(public payload: RESTError) {} + constructor(public payload: RESTClientError) {} } export class Signout implements Action { @@ -72,7 +72,7 @@ export class SignoutSuccess implements Action { export class SignoutFailure implements Action { readonly type = ActionType.SignoutFailure; - constructor(public payload: RESTError) {} + constructor(public payload: RESTClientError) {} } export type Actions = diff --git a/src/packages/member/store/auth/auth.effect.ts b/src/packages/member/store/auth/auth.effect.ts index 5da8206..c9d135d 100644 --- a/src/packages/member/store/auth/auth.effect.ts +++ b/src/packages/member/store/auth/auth.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RESTError } from 'packages/core/rest/error'; +import { RESTClientError } from '@loafer/ng-rest/protocol'; import { DomainMember } from 'packages/domain/model'; @@ -56,7 +56,7 @@ export class Effects { const domainMember = result['domainMember']; return new SigninSuccess({authToken: authToken, domainMember: domainMember}); }) - .catch((error: RESTError) => { + .catch((error: RESTClientError) => { return of(new SigninFailure(error)); }); @@ -87,7 +87,7 @@ export class Effects { .map((domainMember: DomainMember) => { return new SigninCookieSuccess(domainMember); }) - .catch((error: RESTError) => { + .catch((error: RESTClientError) => { return of(new SigninFailure(error)); }); diff --git a/src/packages/member/store/auth/auth.state.ts b/src/packages/member/store/auth/auth.state.ts index 29c19c4..edc6063 100644 --- a/src/packages/member/store/auth/auth.state.ts +++ b/src/packages/member/store/auth/auth.state.ts @@ -1,10 +1,10 @@ -import { RESTError } from 'packages/core/rest/error'; +import { RESTClientError } from '@loafer/ng-rest/protocol'; import { Domain } from 'packages/domain/model'; import { Member } from '../../model'; export interface State { signined: boolean; - error: RESTError | null; + error: RESTClientError | null; pending: boolean; member: Member | null; domain: Domain | null; diff --git a/src/packages/member/store/signup/signup.action.ts b/src/packages/member/store/signup/signup.action.ts index be749bb..9c68f2f 100644 --- a/src/packages/member/store/signup/signup.action.ts +++ b/src/packages/member/store/signup/signup.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RESTError } from 'packages/core/rest/error'; +import { RESTClientError } from '@loafer/ng-rest/protocol'; import { Member } from '../../model'; @@ -25,7 +25,7 @@ export class SignupSuccess implements Action { export class SignupFailure implements Action { readonly type = ActionType.SignupFailure; - constructor(public payload: RESTError) {} + constructor(public payload: RESTClientError) {} } export type Actions = diff --git a/src/packages/member/store/signup/signup.effect.ts b/src/packages/member/store/signup/signup.effect.ts index 38bb465..1d5f201 100644 --- a/src/packages/member/store/signup/signup.effect.ts +++ b/src/packages/member/store/signup/signup.effect.ts @@ -13,8 +13,6 @@ import 'rxjs/add/operator/exhaustMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RESTError } from 'packages/core/rest/error'; - import { Member } from '../../model'; import { MemberService } from '../../service/member.service'; diff --git a/src/packages/member/store/signup/signup.state.ts b/src/packages/member/store/signup/signup.state.ts index f071de4..e98a140 100644 --- a/src/packages/member/store/signup/signup.state.ts +++ b/src/packages/member/store/signup/signup.state.ts @@ -1,9 +1,9 @@ -import { RESTError } from 'packages/core/rest/error'; +import { RESTClientError } from '@loafer/ng-rest/protocol'; import { Member } from '../../model'; export interface State { - error: RESTError | null; + error: RESTClientError | null; pending: boolean; member: Member | null; } diff --git a/src/packages/meta/crawler-input-item/service/crawler-input-item.service.ts b/src/packages/meta/crawler-input-item/service/crawler-input-item.service.ts index 172ade1..ee28241 100644 --- a/src/packages/meta/crawler-input-item/service/crawler-input-item.service.ts +++ b/src/packages/meta/crawler-input-item/service/crawler-input-item.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { MetaCrawlerInputItem } from '../model/MetaCrawlerInputItem'; import { MetaCrawler } from '../../crawler/model/MetaCrawler'; @@ -12,12 +12,12 @@ import { MetaCrawler } from '../../crawler/model/MetaCrawler'; export class MetaCrawlerInputItemService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public readAllByMetaCrawler(c: MetaCrawler): Observable { - return this.rpcClient.call('MetaCrawlerInputItemService.readAllByMetaCrawler', c); + return this.rpcService.call('MetaCrawlerInputItemService.readAllByMetaCrawler', c); } } diff --git a/src/packages/meta/crawler-input-item/store/list/list.action.ts b/src/packages/meta/crawler-input-item/store/list/list.action.ts index 76579c7..8bfebec 100644 --- a/src/packages/meta/crawler-input-item/store/list/list.action.ts +++ b/src/packages/meta/crawler-input-item/store/list/list.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { MetaCrawler } from '../../../crawler/model/MetaCrawler'; import { MetaCrawlerInputItem } from '../../model/MetaCrawlerInputItem'; @@ -26,7 +26,7 @@ export class ReadAllSuccess implements Action { export class ReadAllFailure implements Action { readonly type = ActionType.ReadAllFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export type Actions = diff --git a/src/packages/meta/crawler-input-item/store/list/list.effect.ts b/src/packages/meta/crawler-input-item/store/list/list.effect.ts index 738c833..0279359 100644 --- a/src/packages/meta/crawler-input-item/store/list/list.effect.ts +++ b/src/packages/meta/crawler-input-item/store/list/list.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DomainMember } from 'packages/domain/model'; @@ -44,7 +44,7 @@ export class Effects { .map(list => { return new ReadAllSuccess(list); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllFailure(error)); }); diff --git a/src/packages/meta/crawler-input-item/store/list/list.state.ts b/src/packages/meta/crawler-input-item/store/list/list.state.ts index 2b189a3..819ef51 100644 --- a/src/packages/meta/crawler-input-item/store/list/list.state.ts +++ b/src/packages/meta/crawler-input-item/store/list/list.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { MetaCrawlerInputItem } from '../../model/MetaCrawlerInputItem'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; inputs: MetaCrawlerInputItem[] | null; } diff --git a/src/packages/meta/crawler/service/crawler.service.ts b/src/packages/meta/crawler/service/crawler.service.ts index 2e3afbf..fefb887 100644 --- a/src/packages/meta/crawler/service/crawler.service.ts +++ b/src/packages/meta/crawler/service/crawler.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { MetaCrawler } from '../model/MetaCrawler'; @@ -11,12 +11,12 @@ import { MetaCrawler } from '../model/MetaCrawler'; export class MetaCrawlerService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public readAll(): Observable { - return this.rpcClient.call('MetaCrawlerService.readAll'); + return this.rpcService.call('MetaCrawlerService.readAll'); } } diff --git a/src/packages/meta/crawler/store/list/list.action.ts b/src/packages/meta/crawler/store/list/list.action.ts index ed2bec5..1d71f6a 100644 --- a/src/packages/meta/crawler/store/list/list.action.ts +++ b/src/packages/meta/crawler/store/list/list.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { MetaCrawler } from '../../model/MetaCrawler'; @@ -25,7 +25,7 @@ export class ReadAllSuccess implements Action { export class ReadAllFailure implements Action { readonly type = ActionType.ReadAllFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export type Actions = diff --git a/src/packages/meta/crawler/store/list/list.effect.ts b/src/packages/meta/crawler/store/list/list.effect.ts index 1aeaae7..08f2a2c 100644 --- a/src/packages/meta/crawler/store/list/list.effect.ts +++ b/src/packages/meta/crawler/store/list/list.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DomainMember } from 'packages/domain/model'; @@ -44,7 +44,7 @@ export class Effects { .map(list => { return new ReadAllSuccess(list); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllFailure(error)); }); diff --git a/src/packages/meta/crawler/store/list/list.state.ts b/src/packages/meta/crawler/store/list/list.state.ts index 4f19659..a762d3b 100644 --- a/src/packages/meta/crawler/store/list/list.state.ts +++ b/src/packages/meta/crawler/store/list/list.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { MetaCrawler } from '../../model/MetaCrawler'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; metaCrawlerList: MetaCrawler[] | null; } diff --git a/src/packages/meta/sensor-display-item/service/sensor-display-item.service.ts b/src/packages/meta/sensor-display-item/service/sensor-display-item.service.ts index 98e211f..b7f3670 100644 --- a/src/packages/meta/sensor-display-item/service/sensor-display-item.service.ts +++ b/src/packages/meta/sensor-display-item/service/sensor-display-item.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { MetaCrawler } from 'packages/meta/crawler/model/MetaCrawler'; import { MetaSensorDisplayItem } from 'packages/meta/sensor-display-item/model/MetaSensorDisplayItem'; @@ -12,12 +12,12 @@ import { MetaSensorDisplayItem } from 'packages/meta/sensor-display-item/model/M export class MetaSensorDisplayItemService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public readAllByMetaCrawler(c: MetaCrawler): Observable { - return this.rpcClient.call('MetaSensorDisplayItemService.readAllByCrawler', c); + return this.rpcService.call('MetaSensorDisplayItemService.readAllByCrawler', c); } } diff --git a/src/packages/meta/sensor-display-item/store/list/list.action.ts b/src/packages/meta/sensor-display-item/store/list/list.action.ts index f7063bc..4a2339e 100644 --- a/src/packages/meta/sensor-display-item/store/list/list.action.ts +++ b/src/packages/meta/sensor-display-item/store/list/list.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { MetaCrawler } from '../../../crawler/model/MetaCrawler'; import { MetaSensorDisplayItem } from '../../model/MetaSensorDisplayItem'; @@ -26,7 +26,7 @@ export class ReadAllByCrawlerSuccess implements Action { export class ReadAllByCrawlerFailure implements Action { readonly type = ActionType.ReadAllByCrawlerFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export type Actions = diff --git a/src/packages/meta/sensor-display-item/store/list/list.effect.ts b/src/packages/meta/sensor-display-item/store/list/list.effect.ts index a2c3ed2..821c40e 100644 --- a/src/packages/meta/sensor-display-item/store/list/list.effect.ts +++ b/src/packages/meta/sensor-display-item/store/list/list.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DomainMember } from 'packages/domain/model'; @@ -45,7 +45,7 @@ export class Effects { .map(list => { return new ReadAllByCrawlerSuccess(list); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllByCrawlerFailure(error)); }); diff --git a/src/packages/meta/sensor-display-item/store/list/list.state.ts b/src/packages/meta/sensor-display-item/store/list/list.state.ts index 6f19c58..2949ac3 100644 --- a/src/packages/meta/sensor-display-item/store/list/list.state.ts +++ b/src/packages/meta/sensor-display-item/store/list/list.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { MetaSensorDisplayItem } from '../../model/MetaSensorDisplayItem'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; list: MetaSensorDisplayItem[] | null; } diff --git a/src/packages/noauth/component/list/list.component.ts b/src/packages/noauth/component/list/list.component.ts index 9347d88..8d6f56a 100644 --- a/src/packages/noauth/component/list/list.component.ts +++ b/src/packages/noauth/component/list/list.component.ts @@ -5,7 +5,7 @@ import { Router } from '@angular/router'; import { Store, select } from '@ngrx/store'; import { AuthSelector } from 'packages/member/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Domain } from 'packages/domain/model'; import * as ListStore from '../../store/noauth-probe'; @@ -44,7 +44,7 @@ export class ListComponent implements OnInit, AfterContentInit { this.dataSource = new MatTableDataSource(noAuthProbes); this.dataSource.sort = this.sort; }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); @@ -66,7 +66,7 @@ export class ListComponent implements OnInit, AfterContentInit { this.dataSource = new MatTableDataSource(noAuthProbes); this.dataSource.sort = this.sort; }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); @@ -80,7 +80,7 @@ export class ListComponent implements OnInit, AfterContentInit { this.dataSource = new MatTableDataSource(noAuthProbes); this.dataSource.sort = this.sort; }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/noauth/service/noauth-probe.service.ts b/src/packages/noauth/service/noauth-probe.service.ts index 6d0f2ac..e98d8e2 100644 --- a/src/packages/noauth/service/noauth-probe.service.ts +++ b/src/packages/noauth/service/noauth-probe.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { Domain } from 'packages/domain/model'; @@ -14,20 +14,20 @@ import { NoAuthProbe } from '../model'; export class NoAuthProbeService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public readAllByDomain(domain: Domain): Observable { - return this.rpcClient.call('NoAuthProbeService.readAllByDomain', domain); + return this.rpcService.call('NoAuthProbeService.readAllByDomain', domain); } public acceptNoAuthProbe(noAuthProbe: NoAuthProbe): Observable { - return this.rpcClient.call('NoAuthProbeService.acceptNoAuthProbe', noAuthProbe); + return this.rpcService.call('NoAuthProbeService.acceptNoAuthProbe', noAuthProbe); } public denyNoauthProbe(noAuthProbe: NoAuthProbe): Observable { - return this.rpcClient.call('NoAuthProbeService.denyNoauthProbe', noAuthProbe); + return this.rpcService.call('NoAuthProbeService.denyNoauthProbe', noAuthProbe); } } diff --git a/src/packages/noauth/store/noauth-probe/noauth-probe.action.ts b/src/packages/noauth/store/noauth-probe/noauth-probe.action.ts index bde38dd..70be178 100644 --- a/src/packages/noauth/store/noauth-probe/noauth-probe.action.ts +++ b/src/packages/noauth/store/noauth-probe/noauth-probe.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Domain } from 'packages/domain/model'; @@ -35,7 +35,7 @@ export class ReadAllByDomainSuccess implements Action { export class ReadAllByDomainFailure implements Action { readonly type = ActionType.ReadAllByDomainFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export class Accept implements Action { @@ -53,7 +53,7 @@ export class AcceptSuccess implements Action { export class AcceptFailure implements Action { readonly type = ActionType.AcceptFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export class Deny implements Action { @@ -71,7 +71,7 @@ export class DenySuccess implements Action { export class DenyFailure implements Action { readonly type = ActionType.DenyFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } diff --git a/src/packages/noauth/store/noauth-probe/noauth-probe.effect.ts b/src/packages/noauth/store/noauth-probe/noauth-probe.effect.ts index 3c40158..970daae 100644 --- a/src/packages/noauth/store/noauth-probe/noauth-probe.effect.ts +++ b/src/packages/noauth/store/noauth-probe/noauth-probe.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Domain } from 'packages/domain/model'; @@ -51,7 +51,7 @@ export class Effects { .map(noAuthProbes => { return new ReadAllByDomainSuccess(noAuthProbes); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllByDomainFailure(error)); }); @@ -63,7 +63,7 @@ export class Effects { .map(noAuthProbes => { return new AcceptSuccess(noAuthProbes); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new AcceptFailure(error)); }); @@ -75,7 +75,7 @@ export class Effects { .map(noAuthProbes => { return new DenySuccess(noAuthProbes); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new DenyFailure(error)); }); diff --git a/src/packages/noauth/store/noauth-probe/noauth-probe.state.ts b/src/packages/noauth/store/noauth-probe/noauth-probe.state.ts index 712963b..73d4636 100644 --- a/src/packages/noauth/store/noauth-probe/noauth-probe.state.ts +++ b/src/packages/noauth/store/noauth-probe/noauth-probe.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { NoAuthProbe } from '../../model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; noAuthProbes: NoAuthProbe[] | null; } diff --git a/src/packages/notification/component/badge/notification.component.ts b/src/packages/notification/component/badge/notification.component.ts index ac1978b..2c16fc7 100644 --- a/src/packages/notification/component/badge/notification.component.ts +++ b/src/packages/notification/component/badge/notification.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, Input, AfterContentInit } from '@angular/core'; import { Router } from '@angular/router'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Notification } from '../../model'; import * as ListStore from '../../store/list'; import * as DetailStore from '../../store/detail'; @@ -37,7 +37,7 @@ export class NotificationBadgeComponent implements OnInit, AfterContentInit { this.getUnconfirmedCount(this.notifications); } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); @@ -47,7 +47,7 @@ export class NotificationBadgeComponent implements OnInit, AfterContentInit { this.getNotifications(0); } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/notification/component/notification/notification.component.ts b/src/packages/notification/component/notification/notification.component.ts index 1294ca2..8afd869 100644 --- a/src/packages/notification/component/notification/notification.component.ts +++ b/src/packages/notification/component/notification/notification.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit, Input, ViewChild, AfterContentInit } from '@angular/ import { MatTableDataSource, MatSort, PageEvent } from '@angular/material'; import { Router } from '@angular/router'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Notification } from '../../model'; import * as DetailStore from '../../store/detail'; import * as ListStore from '../../store/list'; @@ -39,7 +39,7 @@ export class NotificationComponent implements OnInit, AfterContentInit { this.dataSource = new MatTableDataSource(page.content); } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/notification/service/notification.service.ts b/src/packages/notification/service/notification.service.ts index cfe535b..a7bffd8 100644 --- a/src/packages/notification/service/notification.service.ts +++ b/src/packages/notification/service/notification.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { Notification } from '../model'; import { Member } from '../../member/model'; @@ -13,21 +13,21 @@ import { PageParams, Page } from 'app/commons/model'; export class NotificationService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public readAllByMember(member: Member, pageParams: PageParams): Observable { - return this.rpcClient.call('NotificationService.readAllByMember', member, pageParams); + return this.rpcService.call('NotificationService.readAllByMember', member, pageParams); } public markAllAsRead(member: Member, pageParams: PageParams): Observable { - return this.rpcClient.call('NotificationService.markAllAsRead', member, pageParams); + return this.rpcService.call('NotificationService.markAllAsRead', member, pageParams); } public markAsRead(notification: Notification): Observable { - return this.rpcClient.call('NotificationService.markAsRead', notification); + return this.rpcService.call('NotificationService.markAsRead', notification); } } diff --git a/src/packages/notification/store/detail/notification.action.ts b/src/packages/notification/store/detail/notification.action.ts index c53dff0..9bbc71b 100644 --- a/src/packages/notification/store/detail/notification.action.ts +++ b/src/packages/notification/store/detail/notification.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Member } from '../../../member/model'; import { PageParams, Page } from 'app/commons/model'; @@ -30,7 +30,7 @@ export class MarkAsReadSuccess implements Action { export class MarkAsReadFailure implements Action { readonly type = ActionType.MarkAsReadFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } // export class ReadUnconfirmedCount implements Action { @@ -48,7 +48,7 @@ export class MarkAsReadFailure implements Action { // export class ReadUnconfirmedCountFailure implements Action { // readonly type = ActionType.ReadUnconfirmedCountFailure; -// constructor(public payload: RPCError) {} +// constructor(public payload: RPCClientError) {} // } export type Actions = diff --git a/src/packages/notification/store/detail/notification.effect.ts b/src/packages/notification/store/detail/notification.effect.ts index 7564818..ef8c935 100644 --- a/src/packages/notification/store/detail/notification.effect.ts +++ b/src/packages/notification/store/detail/notification.effect.ts @@ -13,7 +13,7 @@ import 'rxjs/add/operator/exhaustMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Notification } from '../../model'; import { NotificationService } from '../../service/notification.service'; @@ -43,7 +43,7 @@ export class Effects { .map(notification => { return new MarkAsReadSuccess(notification); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { console.log(error.response.message); return of(new MarkAsReadFailure(error)); }); diff --git a/src/packages/notification/store/detail/notification.state.ts b/src/packages/notification/store/detail/notification.state.ts index 057b3c8..a0ada6d 100644 --- a/src/packages/notification/store/detail/notification.state.ts +++ b/src/packages/notification/store/detail/notification.state.ts @@ -1,8 +1,8 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Notification } from '../../model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; notification: Notification; } diff --git a/src/packages/notification/store/list/notification.action.ts b/src/packages/notification/store/list/notification.action.ts index 6b3d2b6..5fb41e4 100644 --- a/src/packages/notification/store/list/notification.action.ts +++ b/src/packages/notification/store/list/notification.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Member } from '../../../member/model'; import { PageParams, Page } from 'app/commons/model'; @@ -29,7 +29,7 @@ export class ReadAllByMemberSuccess implements Action { export class ReadAllByMemberFailure implements Action { readonly type = ActionType.ReadAllByMemberFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export class MarkAllAsRead implements Action { @@ -47,7 +47,7 @@ export class MarkAllAsReadSuccess implements Action { export class MarkAllAsReadFailure implements Action { readonly type = ActionType.MarkAllAsReadFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } diff --git a/src/packages/notification/store/list/notification.effect.ts b/src/packages/notification/store/list/notification.effect.ts index b5dce59..dfe014d 100644 --- a/src/packages/notification/store/list/notification.effect.ts +++ b/src/packages/notification/store/list/notification.effect.ts @@ -13,7 +13,7 @@ import 'rxjs/add/operator/exhaustMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Notification } from '../../model'; import { NotificationService } from '../../service/notification.service'; @@ -45,7 +45,7 @@ export class Effects { .map(page => { return new ReadAllByMemberSuccess(page); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllByMemberFailure(error)); }); @@ -57,7 +57,7 @@ export class Effects { .map(page => { return new MarkAllAsReadSuccess(page); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new MarkAllAsReadFailure(error)); }); } diff --git a/src/packages/notification/store/list/notification.state.ts b/src/packages/notification/store/list/notification.state.ts index 0b0c4e7..c724de1 100644 --- a/src/packages/notification/store/list/notification.state.ts +++ b/src/packages/notification/store/list/notification.state.ts @@ -1,8 +1,8 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Page } from 'app/commons/model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; page: Page; } diff --git a/src/packages/probe/component/detail/detail.component.ts b/src/packages/probe/component/detail/detail.component.ts index 312cf14..497c35a 100644 --- a/src/packages/probe/component/detail/detail.component.ts +++ b/src/packages/probe/component/detail/detail.component.ts @@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from '@angular/router'; import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { ConfirmDialogComponent } from 'packages/commons/component/confirm-dialog/confirm-dialog.component'; @@ -40,7 +40,7 @@ export class DetailComponent implements OnInit, AfterContentInit { this.arrangeInfo(); } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/probe/component/list/list.component.ts b/src/packages/probe/component/list/list.component.ts index 3d9088f..92238bd 100644 --- a/src/packages/probe/component/list/list.component.ts +++ b/src/packages/probe/component/list/list.component.ts @@ -4,7 +4,7 @@ import { Router } from '@angular/router'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Domain } from 'packages/domain/model'; import { AuthSelector } from 'packages/member/store'; @@ -49,7 +49,7 @@ export class ListComponent implements OnInit, AfterContentInit { this.dataSource = new MatTableDataSource(probes); this.dataSource.sort = this.sort; }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/probe/service/probe.service.ts b/src/packages/probe/service/probe.service.ts index f7ce961..2e5b257 100644 --- a/src/packages/probe/service/probe.service.ts +++ b/src/packages/probe/service/probe.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { Domain } from 'packages/domain/model'; @@ -14,16 +14,16 @@ import { Probe } from '../model'; export class ProbeService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public readAllByDomain(domain: Domain): Observable { - return this.rpcClient.call('ProbeService.readAllByDomain', domain); + return this.rpcService.call('ProbeService.readAllByDomain', domain); } public read(id: string): Observable { - return this.rpcClient.call('ProbeService.read', id); + return this.rpcService.call('ProbeService.read', id); } } diff --git a/src/packages/probe/store/detail/detail.action.ts b/src/packages/probe/store/detail/detail.action.ts index 76f6360..e6a02bf 100644 --- a/src/packages/probe/store/detail/detail.action.ts +++ b/src/packages/probe/store/detail/detail.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Probe } from '../../model'; @@ -26,7 +26,7 @@ export class ReadSuccess implements Action { export class ReadFailure implements Action { readonly type = ActionType.ReadFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } diff --git a/src/packages/probe/store/detail/detail.effect.ts b/src/packages/probe/store/detail/detail.effect.ts index c013050..ad4ece4 100644 --- a/src/packages/probe/store/detail/detail.effect.ts +++ b/src/packages/probe/store/detail/detail.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Probe } from '../../model'; import { ProbeService } from '../../service/probe.service'; @@ -43,7 +43,7 @@ export class Effects { .map(probe => { return new ReadSuccess(probe); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadFailure(error)); }); } diff --git a/src/packages/probe/store/detail/detail.state.ts b/src/packages/probe/store/detail/detail.state.ts index cbb889b..15b3e4f 100644 --- a/src/packages/probe/store/detail/detail.state.ts +++ b/src/packages/probe/store/detail/detail.state.ts @@ -1,4 +1,4 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Probe } from '../../model'; @@ -18,7 +18,7 @@ import { Probe } from '../../model'; import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity'; export interface State extends EntityState { - error: RPCError | null; + error: RPCClientError | null; isPending: boolean; probe: Probe | null; } diff --git a/src/packages/probe/store/list/list.action.ts b/src/packages/probe/store/list/list.action.ts index c305b06..8482d4c 100644 --- a/src/packages/probe/store/list/list.action.ts +++ b/src/packages/probe/store/list/list.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Domain } from 'packages/domain/model'; import { Probe } from '../../model'; @@ -27,7 +27,7 @@ export class ReadAllByDomainSuccess implements Action { export class ReadAllByDomainFailure implements Action { readonly type = ActionType.ReadAllByDomainFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } diff --git a/src/packages/probe/store/list/list.effect.ts b/src/packages/probe/store/list/list.effect.ts index 6b90aa0..56d7138 100644 --- a/src/packages/probe/store/list/list.effect.ts +++ b/src/packages/probe/store/list/list.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Domain } from 'packages/domain/model'; @@ -45,7 +45,7 @@ export class Effects { .map(probes => { return new ReadAllByDomainSuccess(probes); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllByDomainFailure(error)); }); } diff --git a/src/packages/probe/store/list/list.state.ts b/src/packages/probe/store/list/list.state.ts index fddbf05..3d283bc 100644 --- a/src/packages/probe/store/list/list.state.ts +++ b/src/packages/probe/store/list/list.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Probe } from '../../model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; isPending: boolean; probes: Probe[] | null; } diff --git a/src/packages/sensor-item/service/sensor-item-dependency.service.ts b/src/packages/sensor-item/service/sensor-item-dependency.service.ts index b338b49..62b93a3 100644 --- a/src/packages/sensor-item/service/sensor-item-dependency.service.ts +++ b/src/packages/sensor-item/service/sensor-item-dependency.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { SensorItemDependency } from '../model/SensorItemDependency'; import { MetaSensorItemKey } from 'packages/meta/sensor-item-key/model/MetaSensorItemKey'; import { MetaSensorDisplayItem } from '../../meta/sensor-display-item/model/MetaSensorDisplayItem'; @@ -12,17 +12,17 @@ import { MetaSensorDisplayItem } from '../../meta/sensor-display-item/model/Meta export class SensorItemDependencyService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public regist(dependency: SensorItemDependency): Observable { - return this.rpcClient.call('SensorItemDependencyService.regist', dependency); + return this.rpcService.call('SensorItemDependencyService.regist', dependency); } public readAllByDisplayItem(displayItem: MetaSensorDisplayItem): Observable { - return this.rpcClient.call('SensorItemDependencyService.readAllByDisplayItem', displayItem); + return this.rpcService.call('SensorItemDependencyService.readAllByDisplayItem', displayItem); } diff --git a/src/packages/sensor-item/service/sensor-item.service.ts b/src/packages/sensor-item/service/sensor-item.service.ts index 36e377a..5f7b74c 100644 --- a/src/packages/sensor-item/service/sensor-item.service.ts +++ b/src/packages/sensor-item/service/sensor-item.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; @@ -9,13 +9,13 @@ import { RPCClient } from 'packages/core/rpc/client/RPCClient'; export class SensorItemService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } // public regist(dependency: SensorItemDependency): Observable { - // return this.rpcClient.call('SensorItemDependencyService.regist', dependency); + // return this.rpcService.call('SensorItemDependencyService.regist', dependency); // } diff --git a/src/packages/sensor-item/store/key-list/list.action.ts b/src/packages/sensor-item/store/key-list/list.action.ts index d6c8c0b..a16c853 100644 --- a/src/packages/sensor-item/store/key-list/list.action.ts +++ b/src/packages/sensor-item/store/key-list/list.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { MetaSensorItemKey } from 'packages/meta/sensor-item-key/model/MetaSensorItemKey'; import { MetaSensorDisplayItem } from 'packages/meta/sensor-display-item/model/MetaSensorDisplayItem'; @@ -26,7 +26,7 @@ export class ReadAllByDisplayItemSuccess implements Action { export class ReadAllByDisplayItemFailure implements Action { readonly type = ActionType.ReadAllByDisplayItemFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export type Actions = diff --git a/src/packages/sensor-item/store/key-list/list.effect.ts b/src/packages/sensor-item/store/key-list/list.effect.ts index d7ac6a7..53d75c9 100644 --- a/src/packages/sensor-item/store/key-list/list.effect.ts +++ b/src/packages/sensor-item/store/key-list/list.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { DomainMember } from 'packages/domain/model'; @@ -44,7 +44,7 @@ export class Effects { .map(list => { return new ReadAllByDisplayItemSuccess(list); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllByDisplayItemFailure(error)); }); diff --git a/src/packages/sensor-item/store/key-list/list.state.ts b/src/packages/sensor-item/store/key-list/list.state.ts index 058ef5a..e98a469 100644 --- a/src/packages/sensor-item/store/key-list/list.state.ts +++ b/src/packages/sensor-item/store/key-list/list.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { MetaSensorItemKey } from 'packages/meta/sensor-item-key/model/MetaSensorItemKey'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; list: MetaSensorItemKey[] | null; } diff --git a/src/packages/sensor/component/list/list.component.ts b/src/packages/sensor/component/list/list.component.ts index bf9db1d..c5ba1cd 100644 --- a/src/packages/sensor/component/list/list.component.ts +++ b/src/packages/sensor/component/list/list.component.ts @@ -8,7 +8,7 @@ import { Store, select } from '@ngrx/store'; import * as SensorStore from '../../store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import * as ListStore from '../../store/list'; import { sensorListSelector } from '../../store'; import { Domain } from '../../../domain/model'; @@ -45,7 +45,7 @@ export class ListComponent implements OnInit, AfterContentInit { this.dataSource.sort = this.sort; } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/sensor/component/setting/crawler-auth/crawler-auth.component.ts b/src/packages/sensor/component/setting/crawler-auth/crawler-auth.component.ts index 46ebae2..3f8f54e 100644 --- a/src/packages/sensor/component/setting/crawler-auth/crawler-auth.component.ts +++ b/src/packages/sensor/component/setting/crawler-auth/crawler-auth.component.ts @@ -3,7 +3,7 @@ import { Router } from '@angular/router'; import { MetaCrawler } from '../../../../meta/crawler/model/MetaCrawler'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import * as ListStore from 'packages/meta/crawler-input-item/store/list'; import { ReadCrawlerInputItemSelector } from 'packages/meta/crawler-input-item/store'; import { MetaCrawlerInputItem } from 'packages/meta/crawler-input-item/model/MetaCrawlerInputItem'; @@ -37,7 +37,7 @@ export class CrawlerAuthComponent implements OnInit, OnChanges { this.inputItems = list; } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/sensor/component/setting/crawler-selector/crawler-selector.component.ts b/src/packages/sensor/component/setting/crawler-selector/crawler-selector.component.ts index 8031553..1c43caa 100644 --- a/src/packages/sensor/component/setting/crawler-selector/crawler-selector.component.ts +++ b/src/packages/sensor/component/setting/crawler-selector/crawler-selector.component.ts @@ -3,7 +3,7 @@ import { Router } from '@angular/router'; import { Target } from 'packages/target/model'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import * as ListStore from 'packages/meta/crawler/store/list'; import { ReadAllCrawlerSelector } from 'packages/meta/crawler/store'; import { MetaCrawler } from 'packages/meta/crawler/model/MetaCrawler'; @@ -33,7 +33,7 @@ export class CrawlerSelectorComponent implements OnInit, OnChanges, AfterContent this.crawlers = list; } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/sensor/component/setting/sensor-item-selector/sensor-item-selector.component.ts b/src/packages/sensor/component/setting/sensor-item-selector/sensor-item-selector.component.ts index 6214c2d..380307c 100644 --- a/src/packages/sensor/component/setting/sensor-item-selector/sensor-item-selector.component.ts +++ b/src/packages/sensor/component/setting/sensor-item-selector/sensor-item-selector.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, OnChanges, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy } from '@angular/core'; import { Router } from '@angular/router'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import * as ListStore from 'packages/meta/sensor-display-item/store/list'; import { ReadAllSensorDisplayItemByCrawlerSelector } from 'packages/meta/sensor-display-item/store'; @@ -34,7 +34,7 @@ export class SensorItemSelectorComponent implements OnInit, OnChanges { this.generateTreeNode(list); } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/sensor/component/setting/setting.component.ts b/src/packages/sensor/component/setting/setting.component.ts index 85abc43..ce8f7af 100644 --- a/src/packages/sensor/component/setting/setting.component.ts +++ b/src/packages/sensor/component/setting/setting.component.ts @@ -6,7 +6,7 @@ import { MetaCrawler } from '../../../meta/crawler/model/MetaCrawler'; import { MetaSensorDisplayItem } from '../../../meta/sensor-display-item/model/MetaSensorDisplayItem'; import { Store, select } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import * as SensorItemKeyListStore from 'packages/sensor-item/store/key-list'; import { ReadSensorItemKeySelector } from 'packages/sensor-item/store'; import { MetaSensorItemKey } from '../../../meta/sensor-item-key/model/MetaSensorItemKey'; @@ -46,7 +46,7 @@ export class SettingComponent implements OnInit, DoCheck { console.log('#############################'); } }, - (error: RPCError) => { + (error: RPCClientError) => { console.log(error.response.message); } ); diff --git a/src/packages/sensor/service/sensor.service.ts b/src/packages/sensor/service/sensor.service.ts index 52a3d01..ac7078f 100644 --- a/src/packages/sensor/service/sensor.service.ts +++ b/src/packages/sensor/service/sensor.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { Domain } from '../../domain/model'; import { PageParams, Page } from 'app/commons/model'; @@ -13,13 +13,13 @@ import { PageParams, Page } from 'app/commons/model'; export class SensorService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } public readAllByDomain(domain: Domain, pageParams: PageParams): Observable { - return this.rpcClient.call('SensorService.readAllByDomain', domain, pageParams); + return this.rpcService.call('SensorService.readAllByDomain', domain, pageParams); } diff --git a/src/packages/sensor/store/list/list.action.ts b/src/packages/sensor/store/list/list.action.ts index f8a658f..7285f56 100644 --- a/src/packages/sensor/store/list/list.action.ts +++ b/src/packages/sensor/store/list/list.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Domain } from 'packages/domain/model'; import { PageParams, Page } from 'app/commons/model'; @@ -26,7 +26,7 @@ export class ReadAllByDomainSuccess implements Action { export class ReadAllByDomainFailure implements Action { readonly type = ActionType.ReadAllByDomainFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export type Actions = diff --git a/src/packages/sensor/store/list/list.effect.ts b/src/packages/sensor/store/list/list.effect.ts index 8faec22..f382962 100644 --- a/src/packages/sensor/store/list/list.effect.ts +++ b/src/packages/sensor/store/list/list.effect.ts @@ -13,7 +13,7 @@ import 'rxjs/add/operator/exhaustMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Sensor } from '../../model'; import { SensorService } from '../../service/sensor.service'; @@ -42,7 +42,7 @@ export class Effects { .map(list => { return new ReadAllByDomainSuccess(list); }) - .catch((error: RPCError) => { + .catch((error: RPCClientError) => { return of(new ReadAllByDomainFailure(error)); }); diff --git a/src/packages/sensor/store/list/list.state.ts b/src/packages/sensor/store/list/list.state.ts index 1704a4c..2929796 100644 --- a/src/packages/sensor/store/list/list.state.ts +++ b/src/packages/sensor/store/list/list.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Page } from 'app/commons/model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; page: Page | null; } diff --git a/src/packages/settings/member/service/member-totp.service.ts b/src/packages/settings/member/service/member-totp.service.ts index d3629fc..504ca48 100644 --- a/src/packages/settings/member/service/member-totp.service.ts +++ b/src/packages/settings/member/service/member-totp.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { RPCClient } from '../../../core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { Observable } from 'rxjs/Observable'; import { MemberTotp } from '../model/MemberTotp'; import { Member } from '../../../member/model'; @@ -8,7 +8,7 @@ import { Member } from '../../../member/model'; export class MemberTotpService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } @@ -16,7 +16,7 @@ export class MemberTotpService { public createTotp(member: Member): Observable { // Todo Store get member object - return this.rpcClient.call('MemberTotpService.createTotp', {Member: member}); + return this.rpcService.call('MemberTotpService.createTotp', {Member: member}); } public regist(member: Member, secretCode: string, code: string): Observable { @@ -25,10 +25,10 @@ export class MemberTotpService { // MemberTotp: {id: 1, secretCode: 'dkdkdkdk'}, // code: '123123' // }; - return this.rpcClient.call('MemberTotpService.regist', member, secretCode, code); + return this.rpcService.call('MemberTotpService.regist', member, secretCode, code); } public checkCodeForMember(member: Member, code: string): Observable { - return this.rpcClient.call('MemberTotpService.checkCodeForMember', member, code); + return this.rpcService.call('MemberTotpService.checkCodeForMember', member, code); } } diff --git a/src/packages/settings/member/store/totp/totp.action.ts b/src/packages/settings/member/store/totp/totp.action.ts index 4315eb6..4e84c6d 100644 --- a/src/packages/settings/member/store/totp/totp.action.ts +++ b/src/packages/settings/member/store/totp/totp.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RESTError } from 'packages/core/rest/error'; +import { RESTClientError } from '@loafer/ng-rest/protocol'; import { Member } from '../../../../member/model'; @@ -33,7 +33,7 @@ export class CreateTotpSuccess implements Action { export class CreateTotpFailure implements Action { readonly type = ActionType.CreateTotpFailure; - constructor(public payload: RESTError) {} + constructor(public payload: RESTClientError) {} } // ---------------------------------------------------------------------------------------- @@ -53,7 +53,7 @@ export class RegistSuccess implements Action { export class RegistFailure implements Action { readonly type = ActionType.RegistFailure; - constructor(public payload: RESTError) {} + constructor(public payload: RESTClientError) {} } // ---------------------------------------------------------------------------------------- @@ -73,7 +73,7 @@ export class CheckCodeForMemberSuccess implements Action { export class CheckCodeForMemberFailure implements Action { readonly type = ActionType.CheckCodeForMemberFailure; - constructor(public payload: RESTError) {} + constructor(public payload: RESTClientError) {} } export type Actions = diff --git a/src/packages/settings/member/store/totp/totp.effect.ts b/src/packages/settings/member/store/totp/totp.effect.ts index 357b832..97bb46d 100644 --- a/src/packages/settings/member/store/totp/totp.effect.ts +++ b/src/packages/settings/member/store/totp/totp.effect.ts @@ -14,7 +14,7 @@ import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RESTError } from 'packages/core/rest/error'; +import { RESTClientError } from '@loafer/ng-rest/protocol'; import { MemberTotpService } from '../../service/member-totp.service'; import { @@ -56,7 +56,7 @@ export class Effects { const uri = result['uri']; return new CreateTotpSuccess({key: key, uri: uri}); }) - .catch((error: RESTError) => { + .catch((error: RESTClientError) => { return of(new CreateTotpFailure(error)); }); @@ -71,7 +71,7 @@ export class Effects { .map((result: any) => { return new RegistSuccess(result); }) - .catch((error: RESTError) => { + .catch((error: RESTClientError) => { return of(new RegistFailure(error)); }); @@ -87,7 +87,7 @@ export class Effects { .map((result: any) => { return new CheckCodeForMemberSuccess(result); }) - .catch((error: RESTError) => { + .catch((error: RESTClientError) => { return of(new CheckCodeForMemberFailure(error)); }); } diff --git a/src/packages/settings/member/store/totp/totp.state.ts b/src/packages/settings/member/store/totp/totp.state.ts index fe28ff5..86d95ec 100644 --- a/src/packages/settings/member/store/totp/totp.state.ts +++ b/src/packages/settings/member/store/totp/totp.state.ts @@ -1,9 +1,9 @@ -import { RESTError } from 'packages/core/rest/error'; +import { RESTClientError } from '@loafer/ng-rest/protocol'; export interface State { secretKey: string; keyURI: string; - error: RESTError | null; + error: RESTClientError | null; pending: boolean; } diff --git a/src/packages/target/service/target.service.ts b/src/packages/target/service/target.service.ts index 42e7c1a..23819fd 100644 --- a/src/packages/target/service/target.service.ts +++ b/src/packages/target/service/target.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import { RPCClient } from 'packages/core/rpc/client/RPCClient'; +import { RPCService } from '@loafer/ng-rpc/service'; import { Target } from '../model'; import { Domain } from '../../domain/model'; @@ -13,7 +13,7 @@ import { Domain } from '../../domain/model'; export class TargetService { public constructor( - private rpcClient: RPCClient, + private rpcService: RPCService, ) { } @@ -23,7 +23,7 @@ export class TargetService { domain: domain, }; - return this.rpcClient.call('TargetService.readAllByDomain', domain); + return this.rpcService.call('TargetService.readAllByDomain', domain); } // public readAllByProbe(domain: Domain): Observable { @@ -31,7 +31,7 @@ export class TargetService { // domain: domain, // }; -// return this.rpcClient.call('TargetService.readAllByDomain', domain); +// return this.rpcService.call('TargetService.readAllByDomain', domain); // } diff --git a/src/packages/target/store/target/target.action.ts b/src/packages/target/store/target/target.action.ts index bd4ddb9..843395a 100644 --- a/src/packages/target/store/target/target.action.ts +++ b/src/packages/target/store/target/target.action.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Target } from '../../model'; import { Domain } from '../../../domain/model'; @@ -26,7 +26,7 @@ export class ReadAllByDomainSuccess implements Action { export class ReadAllByDomainFailure implements Action { readonly type = ActionType.ReadAllByDomainFailure; - constructor(public payload: RPCError) {} + constructor(public payload: RPCClientError) {} } export type Actions = diff --git a/src/packages/target/store/target/target.effect.ts b/src/packages/target/store/target/target.effect.ts index 4284140..15cf3c4 100644 --- a/src/packages/target/store/target/target.effect.ts +++ b/src/packages/target/store/target/target.effect.ts @@ -13,8 +13,6 @@ import 'rxjs/add/operator/exhaustMap'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; -import { RPCError } from 'packages/core/rpc/error'; - import { Target } from '../../model'; import { TargetService } from '../../service/target.service'; diff --git a/src/packages/target/store/target/target.state.ts b/src/packages/target/store/target/target.state.ts index b5c452f..c4ac364 100644 --- a/src/packages/target/store/target/target.state.ts +++ b/src/packages/target/store/target/target.state.ts @@ -1,9 +1,9 @@ -import { RPCError } from 'packages/core/rpc/error'; +import { RPCClientError } from '@loafer/ng-rpc/protocol'; import { Target } from '../../model'; export interface State { - error: RPCError | null; + error: RPCClientError | null; pending: boolean; targets: Target[] | null; } diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json index 39ba8db..9181dd8 100644 --- a/src/tsconfig.app.json +++ b/src/tsconfig.app.json @@ -4,7 +4,9 @@ "outDir": "../out-tsc/app", "baseUrl": "./", "module": "es2015", - "types": [] + "types": [ + "reflect-metadata" + ] }, "exclude": [ "test.ts", diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json index ac22a29..08ac345 100644 --- a/src/tsconfig.spec.json +++ b/src/tsconfig.spec.json @@ -5,6 +5,7 @@ "baseUrl": "./", "module": "commonjs", "types": [ + "reflect-metadata", "jasmine", "node" ] diff --git a/tsconfig.json b/tsconfig.json index a47a7c4..304250d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,12 +6,16 @@ "sourceMap": true, "declaration": false, "moduleResolution": "node", + "newLine": "LF", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5", "typeRoots": [ "node_modules/@types" ], + "types": [ + "reflect-metadata", + ], "lib": [ "es2017", "dom" diff --git a/yarn-error.log b/yarn-error.log new file mode 100644 index 0000000..5263c18 --- /dev/null +++ b/yarn-error.log @@ -0,0 +1,7881 @@ +Arguments: + /usr/bin/node /home/crusader/bin/yarn add angular-tree-component@ angular-tree-component: ^7.1.0, + +PATH: + /project/go/bin:/home/crusader/bin:/project/go/bin:/home/crusader/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/lib/maven/bin:/usr/local/go/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/lib/maven/bin + +Yarn version: + 0.24.6 + +Node version: + 8.10.0 + +Platform: + linux x64 + +npm manifest: + { + "name": "overflow-webapp", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --prod", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^5.2.1", + "@angular/cdk": "^5.1.0", + "@angular/common": "^5.2.1", + "@angular/compiler": "^5.2.1", + "@angular/core": "^5.2.1", + "@angular/flex-layout": "^5.0.0-beta.13", + "@angular/forms": "^5.2.1", + "@angular/material": "^5.1.0", + "@angular/platform-browser": "^5.2.1", + "@angular/platform-browser-dynamic": "^5.2.1", + "@angular/router": "^5.2.1", + "@ngrx/core": "^1.2.0", + "@ngrx/effects": "^5.2.0", + "@ngrx/entity": "^5.2.0", + "@ngrx/router-store": "^5.2.0", + "@ngrx/store": "^5.2.0", + "@ngrx/store-devtools": "^5.2.0", + "angular-tree-component": "^7.1.0", + "angularx-qrcode": "^1.0.1", + "angular-l10n": "^4.1.5", + "core-js": "^2.5.3", + "d3": "^3.5.17", + "hammerjs": "^2.0.8", + "ng2-odometer": "^1.1.3", + "ngx-cookie-service": "^1.0.10", + "ngx-perfect-scrollbar": "^5.3.1", + "nvd3": "^1.8.6", + "reflect-metadata": "^0.1.12", + "rxjs": "^5.5.6", + "zone.js": "^0.8.20", + "ip-cidr": "^1.1.2" + }, + "devDependencies": { + "@angular/cli": "1.6.5", + "@angular/compiler-cli": "^5.2.1", + "@angular/language-service": "^5.2.1", + "@types/d3": "^5.0.0", + "@types/jasmine": "~2.8.5", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~6.0.60", + "@types/nvd3": "^1.8.38", + "codelyzer": "^4.1.0", + "jasmine-core": "~2.8.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~2.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-cli": "~1.0.1", + "karma-coverage-istanbul-reporter": "^1.2.1", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.1.2", + "ts-node": "~4.1.0", + "tslint": "~5.9.1", + "typescript": "~2.5.3" + } + } + +yarn manifest: + No manifest + +Lockfile: + # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + # yarn lockfile v1 + + + "@angular-devkit/build-optimizer@~0.0.41": + version "0.0.41" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.0.41.tgz#29bd4a14a425f6946cc75c37a7aa42508d2fc1ac" + dependencies: + loader-utils "^1.1.0" + source-map "^0.5.6" + typescript "~2.6.2" + webpack-sources "^1.0.1" + + "@angular-devkit/core@~0.0.28": + version "0.0.28" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.0.28.tgz#840b6efa728bc3e93a1c469e482cf1095c96561f" + dependencies: + ajv "~5.5.1" + chokidar "^1.7.0" + rxjs "^5.5.6" + source-map "^0.5.6" + + "@angular-devkit/schematics@~0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.0.51.tgz#5b5e5b1604a34e200fb749d1076064374f757276" + dependencies: + "@ngtools/json-schema" "^1.1.0" + rxjs "^5.5.6" + + "@angular/animations@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-5.2.1.tgz#cc325c23db98c13539cbedf9405bc068bd3041cd" + dependencies: + tslib "^1.7.1" + + "@angular/cdk@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-5.1.0.tgz#e04547609d96d8b6fe0dac17bed323760c3952e9" + dependencies: + tslib "^1.7.1" + + "@angular/cli@1.6.5": + version "1.6.5" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-1.6.5.tgz#9217c5d5c366292aca61fb0328c406bb5b0f2d76" + dependencies: + "@angular-devkit/build-optimizer" "~0.0.41" + "@angular-devkit/core" "~0.0.28" + "@angular-devkit/schematics" "~0.0.51" + "@ngtools/json-schema" "1.1.0" + "@ngtools/webpack" "1.9.5" + "@schematics/angular" "~0.1.16" + autoprefixer "^7.2.3" + chalk "~2.2.0" + circular-dependency-plugin "^4.2.1" + common-tags "^1.3.1" + copy-webpack-plugin "^4.1.1" + core-object "^3.1.0" + css-loader "^0.28.1" + cssnano "^3.10.0" + denodeify "^1.2.1" + ember-cli-string-utils "^1.0.0" + exports-loader "^0.6.3" + extract-text-webpack-plugin "^3.0.2" + file-loader "^1.1.5" + fs-extra "^4.0.0" + glob "^7.0.3" + html-webpack-plugin "^2.29.0" + istanbul-instrumenter-loader "^3.0.0" + karma-source-map-support "^1.2.0" + less "^2.7.2" + less-loader "^4.0.5" + license-webpack-plugin "^1.0.0" + loader-utils "1.1.0" + lodash "^4.11.1" + memory-fs "^0.4.1" + minimatch "^3.0.4" + node-modules-path "^1.0.0" + nopt "^4.0.1" + opn "~5.1.0" + portfinder "~1.0.12" + postcss-import "^11.0.0" + postcss-loader "^2.0.10" + postcss-url "^7.1.2" + raw-loader "^0.5.1" + resolve "^1.1.7" + rxjs "^5.5.2" + sass-loader "^6.0.6" + semver "^5.1.0" + silent-error "^1.0.0" + source-map-loader "^0.2.0" + source-map-support "^0.4.1" + style-loader "^0.13.1" + stylus "^0.54.5" + stylus-loader "^3.0.1" + uglifyjs-webpack-plugin "^1.1.5" + url-loader "^0.6.2" + webpack "~3.10.0" + webpack-dev-middleware "~1.12.0" + webpack-dev-server "~2.11.0" + webpack-merge "^4.1.0" + webpack-sources "^1.0.0" + webpack-subresource-integrity "^1.0.1" + optionalDependencies: + node-sass "^4.7.2" + + "@angular/common@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-5.2.1.tgz#a6f2d349f6102e6be7cc488899578a0dc327b755" + dependencies: + tslib "^1.7.1" + + "@angular/compiler-cli@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-5.2.1.tgz#9ee3431d937767a4f4ae401f172b507b5db6456e" + dependencies: + chokidar "^1.4.2" + minimist "^1.2.0" + reflect-metadata "^0.1.2" + tsickle "^0.26.0" + + "@angular/compiler@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-5.2.1.tgz#758ed236c361cff018699e041fabbc4bcb7cdc72" + dependencies: + tslib "^1.7.1" + + "@angular/core@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-5.2.1.tgz#47347e4098b0e997220d77652f4d9ca44dda8923" + dependencies: + tslib "^1.7.1" + + "@angular/flex-layout@^5.0.0-beta.13": + version "5.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@angular/flex-layout/-/flex-layout-5.0.0-beta.13.tgz#81ad6ad461003946e7c522920821a56ba7292a85" + dependencies: + tslib "^1.7.1" + + "@angular/forms@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-5.2.1.tgz#530f1249bc71d9560297be642d55a5a6c439d920" + dependencies: + tslib "^1.7.1" + + "@angular/language-service@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-5.2.1.tgz#438bc1f61bab5ba2e0eeb687ae6be9e6ab0edb18" + + "@angular/material@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@angular/material/-/material-5.1.0.tgz#038803b6a52e484c6bf9bb413714795952d61d49" + dependencies: + tslib "^1.7.1" + + "@angular/platform-browser-dynamic@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.1.tgz#df073c48f5b90e8c5d5b0774aa2bef49f288989c" + dependencies: + tslib "^1.7.1" + + "@angular/platform-browser@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-5.2.1.tgz#0d05a4ba107e7ad8241a862683c83193c26b3c5e" + dependencies: + tslib "^1.7.1" + + "@angular/router@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-5.2.1.tgz#fbb3a2d644e854bca25d075e506d25f3c670f8d2" + dependencies: + tslib "^1.7.1" + + "@ngrx/core@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ngrx/core/-/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6" + + "@ngrx/effects@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@ngrx/effects/-/effects-5.2.0.tgz#aa762b69cb6fd4644d724a1cecd265caa42baf09" + + "@ngrx/entity@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@ngrx/entity/-/entity-5.2.0.tgz#68b90b3159bb46ec5b2d0de3fa0bf4e80e94972d" + + "@ngrx/router-store@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@ngrx/router-store/-/router-store-5.2.0.tgz#bf4b174ce19a36eba8211fc1ddeaf1e35ae74368" + + "@ngrx/store-devtools@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@ngrx/store-devtools/-/store-devtools-5.2.0.tgz#2fff916a9aa349375826772b359dbb64b9e5d622" + + "@ngrx/store@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@ngrx/store/-/store-5.2.0.tgz#627ed74c9cd95462930485d912a557117b23903e" + + "@ngtools/json-schema@1.1.0", "@ngtools/json-schema@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922" + + "@ngtools/webpack@1.9.5": + version "1.9.5" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-1.9.5.tgz#10292e9237d1218fe16dee24423155500b2d2324" + dependencies: + chalk "~2.2.0" + enhanced-resolve "^3.1.0" + loader-utils "^1.0.2" + magic-string "^0.22.3" + semver "^5.3.0" + source-map "^0.5.6" + tree-kill "^1.0.0" + webpack-sources "^1.1.0" + + "@schematics/angular@~0.1.16": + version "0.1.16" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.1.16.tgz#174ab994fd56c423674171ae5a22407ba3ee2123" + dependencies: + typescript "~2.6.2" + + "@types/d3-array@*": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-1.2.1.tgz#e489605208d46a1c9d980d2e5772fa9c75d9ec65" + + "@types/d3-axis@*": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-1.0.9.tgz#62ce7bc8d04354298cda57f3f1d1f856ad69b89a" + dependencies: + "@types/d3-selection" "*" + + "@types/d3-brush@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-1.0.7.tgz#05c30440f4d537fd23f976b0e6c4ba223001ef45" + dependencies: + "@types/d3-selection" "*" + + "@types/d3-chord@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-1.0.6.tgz#0589eb97a3191f4edaf17b7bde498462890ce1ec" + + "@types/d3-collection@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-collection/-/d3-collection-1.0.6.tgz#0a5a87fe241fcbd253a637d024b4d8c55f84a369" + + "@types/d3-color@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.0.5.tgz#cad755f0fc6de7b70fa6e5e08afa81ef4c2248de" + + "@types/d3-contour@*": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-1.2.0.tgz#a66e245650ada59ef8720c04ca1d0c88a37c1d7e" + dependencies: + "@types/d3-array" "*" + "@types/geojson" "*" + + "@types/d3-dispatch@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-1.0.5.tgz#f1f9187b538ecb05157569d8dc2f70dfb04f1b52" + + "@types/d3-drag@*": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-1.2.0.tgz#5ee6279432c894f85cb72fcda911a959bae11952" + dependencies: + "@types/d3-selection" "*" + + "@types/d3-dsv@*": + version "1.0.31" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-1.0.31.tgz#468302f18ac44db2a3944086388d862503ab9c6c" + + "@types/d3-ease@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-1.0.7.tgz#93a301868be9e15061f3d44343b1ab3f8acb6f09" + + "@types/d3-fetch@*": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-1.0.1.tgz#2abd70bbd40ff26440f0cbfae7dfb2ad1f2c269b" + dependencies: + "@types/d3-dsv" "*" + + "@types/d3-force@*": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-1.1.0.tgz#40925ca3512b63bd424f7c9685e1781b5b0a1d7e" + + "@types/d3-format@*": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-1.2.1.tgz#9435fb1771d2fbf6a858c93218f4097c9aa396c1" + + "@types/d3-geo@*": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.9.4.tgz#9cfa573b6702e260b3fec127d88589ca9fc2de1d" + dependencies: + "@types/geojson" "*" + + "@types/d3-hierarchy@*": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-1.1.0.tgz#50f1ee052840638035cbdd4acab1fc3470905907" + + "@types/d3-interpolate@*": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.1.6.tgz#64041b15c9c032c348da1b22baabc59fa4d16136" + dependencies: + "@types/d3-color" "*" + + "@types/d3-path@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.6.tgz#c1a7d2dc07b295fdd1c84dabe4404df991b48693" + + "@types/d3-polygon@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-1.0.5.tgz#35ad54ed84c39d7e9f1252b6535be600be6cace2" + + "@types/d3-quadtree@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-1.0.5.tgz#1ce1e659eae4530df0cb127f297f1741a367a82e" + + "@types/d3-random@*": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-1.1.0.tgz#2dd08f1159c70719270e4a7c834af85c8b88d2c3" + + "@types/d3-scale-chromatic@*": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.2.0.tgz#c415744622fd8033f98ebcc9cf962dc8333dec97" + + "@types/d3-scale@*": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-2.0.0.tgz#d40f2ff137f4fe9b13b45c5a8e14f39edd498dcf" + dependencies: + "@types/d3-time" "*" + + "@types/d3-selection@*": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-1.3.0.tgz#acede3d22c18ec085cc401d4fdab9f040e1a73c7" + + "@types/d3-shape@*": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-1.2.2.tgz#f8dcdff7772a7ae37858bf04abd43848a78e590e" + dependencies: + "@types/d3-path" "*" + + "@types/d3-time-format@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-2.1.0.tgz#011e0fb7937be34a9a8f580ae1e2f2f1336a8a22" + + "@types/d3-time@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-1.0.7.tgz#4266d7c9be15fa81256a88d1d052d61cd8dc572c" + + "@types/d3-timer@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-1.0.6.tgz#786d4e20731adf03af2c5df6c86fe29667fe429b" + + "@types/d3-transition@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-1.1.1.tgz#c209fce6a966d6696356dd42b091a9c6cc79929f" + dependencies: + "@types/d3-selection" "*" + + "@types/d3-voronoi@*": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@types/d3-voronoi/-/d3-voronoi-1.1.7.tgz#c0a145cf04395927e01706ff6c4ff835c97a8ece" + + "@types/d3-zoom@*": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-1.7.0.tgz#1221bbf6434820f044c80b551c5519b817008961" + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + + "@types/d3@^3": + version "3.5.40" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-3.5.40.tgz#277b575d79445a6dccc017d9bea71b72344c6e5f" + + "@types/d3@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-5.0.0.tgz#fec49f2aea0f0784f829eff38132926e92676d57" + dependencies: + "@types/d3-array" "*" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-collection" "*" + "@types/d3-color" "*" + "@types/d3-contour" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-fetch" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-random" "*" + "@types/d3-scale" "*" + "@types/d3-scale-chromatic" "*" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-voronoi" "*" + "@types/d3-zoom" "*" + + "@types/geojson@*": + version "7946.0.2" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.2.tgz#0bd0a01ef04e813c2b7580318da9e37c2eadea9c" + + "@types/jasmine@*", "@types/jasmine@~2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.5.tgz#96e58872583fa80c7ea0dd29024b180d5e133678" + + "@types/jasminewd2@~2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95" + dependencies: + "@types/jasmine" "*" + + "@types/node@^6.0.46", "@types/node@~6.0.60": + version "6.0.96" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.96.tgz#7bf0bf40d6ce51e93762cc47d010c8cc5ebb2179" + + "@types/nvd3@^1.8.38": + version "1.8.38" + resolved "https://registry.yarnpkg.com/@types/nvd3/-/nvd3-1.8.38.tgz#fed58ccd5e804fbbcd0c8216c08ef254bfc89f13" + dependencies: + "@types/d3" "^3" + + "@types/q@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + + "@types/selenium-webdriver@^2.53.35", "@types/selenium-webdriver@~2.53.39": + version "2.53.43" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz#2de3d718819bc20165754c4a59afb7e9833f6707" + + "@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + + "@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + + JSONStream@^1.0.3: + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + + abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + + accepts@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + + accepts@~1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" + dependencies: + mime-types "~2.1.16" + negotiator "0.6.1" + + acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + dependencies: + acorn "^4.0.3" + + acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + + acorn@^5.0.0, acorn@^5.2.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" + + addressparser@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" + + adm-zip@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736" + + adm-zip@^0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1" + + after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + + agent-base@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" + dependencies: + extend "~3.0.0" + semver "~5.0.1" + + ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + + ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + + ajv@^5.0.0, ajv@^5.1.5, ajv@~5.5.1: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + + align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + + alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + + amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + + amqplib@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.2.tgz#d2d7313c7ffaa4d10bcf1e6252de4591b6cc7b63" + dependencies: + bitsyntax "~0.0.4" + bluebird "^3.4.6" + buffer-more-ints "0.0.2" + readable-stream "1.x >=1.1.9" + safe-buffer "^5.0.1" + + angular-l10n@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/angular-l10n/-/angular-l10n-4.1.5.tgz#4b65cdb819be4daaaadc006ecf873d6ed1fd0fd4" + dependencies: + tslib "^1.7.1" + + angular-tree-component@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/angular-tree-component/-/angular-tree-component-7.0.2.tgz#a70c2ed62b0bf5f14d20ada1e68fbc3649bdf783" + dependencies: + lodash "^4.17.4" + mobx "^3.6.2" + mobx-angular "^2.1.1" + + angularx-qrcode@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/angularx-qrcode/-/angularx-qrcode-1.0.1.tgz#9b10423995cd7448ef38843e241407ce7337daad" + dependencies: + qrcodejs2 "0.0.2" + + ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + + ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + + ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + + ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + + ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + + anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + + anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + + app-root-path@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" + + append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + + aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + + are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + + argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + + arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + + arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + + arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + + arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + + array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + + array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + + array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + + array-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + + array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + + array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + + array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + + array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + + array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + + array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + + array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + + array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + + arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + + arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + + asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + + asn1.js@^4.0.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + + asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + + assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + + assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + + assert@^1.1.1, assert@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + + assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + + ast-types@0.x.x: + version "0.10.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" + + astw@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" + dependencies: + acorn "^4.0.3" + + async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + + async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + + async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + + async@^1.4.0, async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + + async@^2.1.2, async@^2.1.4, async@^2.1.5, async@^2.4.1, async@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + + async@~2.1.2: + version "2.1.5" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" + dependencies: + lodash "^4.14.0" + + asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + + atob@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" + + autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + + autoprefixer@^7.2.3: + version "7.2.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.5.tgz#04ccbd0c6a61131b6d13f53d371926092952d192" + dependencies: + browserslist "^2.11.1" + caniuse-lite "^1.0.30000791" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.16" + postcss-value-parser "^3.2.3" + + aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + + aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + + axios@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" + dependencies: + follow-redirects "1.0.0" + + babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + + babel-generator@^6.18.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.6" + trim-right "^1.0.1" + + babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + + babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + + babel-template@^6.16.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + + babel-traverse@^6.18.0, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + + babel-types@^6.18.0, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + + babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + + backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + + balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + + balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + + base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + + base64-js@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + + base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + + base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + + batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + + bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + + better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + + big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + + binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + + bitsyntax@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.0.4.tgz#eb10cc6f82b8c490e3e85698f07e83d46e0cba82" + dependencies: + buffer-more-ints "0.0.2" + + bl@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" + dependencies: + readable-stream "~2.0.5" + + blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + + block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + + blocking-proxy@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b" + dependencies: + minimist "^1.2.0" + + bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.4.7, bluebird@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + + body-parser@1.18.2, body-parser@^1.16.1: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + + bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + + boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + + boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + + brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + + braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + dependencies: + expand-range "^0.1.0" + + braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + + braces@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.0.tgz#a46941cb5fb492156b3d6a656e06c35364e3e66e" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + + brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + + browser-pack@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.3.tgz#91ca96518583ef580ab063a309de62e407767a39" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.8.0" + defined "^1.0.0" + safe-buffer "^5.1.1" + through2 "^2.0.0" + umd "^3.0.0" + + browser-resolve@^1.11.0, browser-resolve@^1.7.0: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + + browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + + browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + + browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + + browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + + browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + + browserify-zlib@^0.2.0, browserify-zlib@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + + browserify@^14.5.0: + version "14.5.0" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.5.0.tgz#0bbbce521acd6e4d1d54d8e9365008efb85a9cc5" + dependencies: + JSONStream "^1.0.3" + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.2.0" + buffer "^5.0.2" + cached-path-relative "^1.0.0" + concat-stream "~1.5.1" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "~1.1.0" + duplexer2 "~0.1.2" + events "~1.1.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + labeled-stream-splicer "^2.0.0" + module-deps "^4.0.8" + os-browserify "~0.3.0" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "~1.0.0" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "~0.0.0" + url "~0.11.0" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^4.0.0" + + browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + + browserslist@^2.11.1: + version "2.11.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" + dependencies: + caniuse-lite "^1.0.30000792" + electron-to-chromium "^1.3.30" + + buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + + buffer-more-ints@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" + + buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + + buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + + buffer@^5.0.2: + version "5.0.8" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + + buildmail@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" + dependencies: + addressparser "1.0.1" + libbase64 "0.1.0" + libmime "3.0.0" + libqp "1.1.0" + nodemailer-fetch "1.6.0" + nodemailer-shared "1.1.0" + punycode "1.4.1" + + builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + + builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + + bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + + cacache@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8" + dependencies: + bluebird "^3.5.0" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^1.3.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.1" + ssri "^5.0.0" + unique-filename "^1.1.0" + y18n "^3.2.1" + + cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + 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" + + cached-path-relative@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" + + callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + + camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + + camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + + camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + + camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + + camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + + camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + + caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + + caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000794" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000794.tgz#bbe71104fa277ce4b362387d54905e8b88e52f35" + + caniuse-lite@^1.0.30000791, caniuse-lite@^1.0.30000792: + version "1.0.30000792" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz#d0cea981f8118f3961471afbb43c9a1e5bbf0332" + + caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + + caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + + center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + + chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + + chalk@^2.0.0, chalk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + + chalk@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.2.tgz#4403f5cf18f35c05f51fbdf152bf588f956cf7cb" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + + chokidar@^1.4.1, chokidar@^1.4.2, chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + + chokidar@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.0.tgz#6686313c541d3274b2a5c01233342037948c911b" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + + chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + + circular-dependency-plugin@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-4.4.0.tgz#f8a1a746a3f6c8e57f4dae9b54d991cd2a582f5d" + + circular-json@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.1.tgz#b8942a09e535863dc21b04417a91971e1d9cd91f" + + clap@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + dependencies: + chalk "^1.1.3" + + class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + + clean-css@4.1.x: + version "4.1.9" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" + dependencies: + source-map "0.5.x" + + cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + + cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + + clone-deep@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8" + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.1" + kind-of "^3.2.2" + shallow-clone "^0.1.2" + + clone@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + + clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + + co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + + co@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/co/-/co-3.0.6.tgz#1445f226c5eb956138e68c9ac30167ea7d2e6bda" + + coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + + code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + + codelyzer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.1.0.tgz#3117754538d8f5ffa36dff91d340573a836cf373" + dependencies: + 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.6" + sprintf-js "^1.0.3" + + collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + + color-convert@^1.3.0, color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + + color-name@^1.0.0, color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + + color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + + color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + + colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + + colors@1.1.2, colors@^1.1.0, colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + + combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + dependencies: + lodash "^4.5.0" + + combine-source-map@~0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e" + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" + + combine-source-map@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" + + combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + + commander@2.12.x: + version "2.12.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" + + commander@^2.12.1, commander@^2.9.0, commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + + common-tags@^1.3.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.7.2.tgz#24d9768c63d253a56ecff93845b44b4df1d52771" + dependencies: + babel-runtime "^6.26.0" + + commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + + component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + + component-emitter@1.2.1, component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + + component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + + compressible@~2.0.11: + version "2.0.12" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66" + dependencies: + mime-db ">= 1.30.0 < 2" + + compression@^1.5.2: + version "1.7.1" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db" + dependencies: + accepts "~1.3.4" + bytes "3.0.0" + compressible "~2.0.11" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.2" + + concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + + concat-stream@^1.5.0, concat-stream@~1.5.0, concat-stream@~1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + + connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + + connect@^3.6.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.5.tgz#fb8dde7ba0763877d0ec9df9dac0b4b40e72c7da" + dependencies: + debug "2.6.9" + finalhandler "1.0.6" + parseurl "~1.3.2" + utils-merge "1.0.1" + + console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + + console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + + constants-browserify@^1.0.0, constants-browserify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + + content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + + content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + + convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + + convert-source-map@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" + + cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + + cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + + copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + + copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + + copy-webpack-plugin@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz#19ba6370bf6f8e263cbd66185a2b79f2321a9302" + dependencies: + cacache "^10.0.1" + find-cache-dir "^1.0.0" + globby "^7.1.1" + is-glob "^4.0.0" + loader-utils "^0.2.15" + lodash "^4.3.0" + minimatch "^3.0.4" + p-limit "^1.0.0" + pify "^3.0.0" + serialize-javascript "^1.4.0" + + core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + + core-object@^3.1.0: + version "3.1.5" + resolved "https://registry.yarnpkg.com/core-object/-/core-object-3.1.5.tgz#fa627b87502adc98045e44678e9a8ec3b9c0d2a9" + dependencies: + chalk "^2.0.0" + + core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + + cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.1.0" + os-homedir "^1.0.1" + parse-json "^2.2.0" + require-from-string "^1.1.0" + + create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + + create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + + create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + + cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + + cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + + cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + + crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + + css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + + css-loader@^0.28.1: + version "0.28.9" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.9.tgz#68064b85f4e271d7ce4c48a58300928e535d1c95" + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + cssnano "^3.10.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + object-assign "^4.1.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + + css-parse@1.7.x: + version "1.7.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" + + css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + + css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + + css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + + cssauron@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" + dependencies: + through X.X.X + + cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + + cssnano@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + + csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + + cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + + currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + + custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + + cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + + d3@^3.5.17: + version "3.5.17" + resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" + + d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + + dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + + data-uri-to-buffer@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" + + date-format@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + + date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + + debug@*, debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@~2.6.4, debug@~2.6.6, debug@~2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + + debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + + debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + + decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + + decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + + deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + + deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + + deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + + default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + + define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + + define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + + define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + + defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + + degenerator@~1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" + dependencies: + ast-types "0.x.x" + escodegen "1.x.x" + esprima "3.x.x" + + del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + + del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + + delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + + delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + + denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + + depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + + depd@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + + deps-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^2.0.0" + + des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + + destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + + detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + + detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + + detect-node@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + + detective@^4.0.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + dependencies: + acorn "^5.2.1" + defined "^1.0.0" + + di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + + diff@^3.1.0, diff@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" + + diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + + dir-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + + dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + + dns-packet@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + + dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + dependencies: + buffer-indexof "^1.0.0" + + dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + + dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + + dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + + domain-browser@^1.1.1, domain-browser@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + + domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + + domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + + domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + + domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + + domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + + double-ended-queue@^2.1.0-0: + version "2.1.0-0" + resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" + + duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + + duplexify@^3.4.2, duplexify@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.3.tgz#8b5818800df92fd0125b27ab896491912858243e" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + + ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + + ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + + ejs@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" + + electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: + version "1.3.31" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz#00d832cba9fe2358652b0c48a8816c8e3a037e9f" + + elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + + ember-cli-string-utils@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1" + + emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + + encodeurl@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + + end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + + engine.io-client@~3.1.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~2.6.9" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + + engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary2 "~1.0.2" + + engine.io@~3.1.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e" + dependencies: + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "~2.6.9" + engine.io-parser "~2.1.0" + ws "~3.3.1" + optionalDependencies: + uws "~0.14.4" + + enhanced-resolve@^3.1.0, enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.7" + + ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + + entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + + errno@^0.1.1, errno@^0.1.3, errno@^0.1.4: + version "0.1.6" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026" + dependencies: + prr "~1.0.1" + + error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + + es-abstract@^1.7.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" + dependencies: + 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@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + + es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.38" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3" + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + + es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + + es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + + es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + + es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + + es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + + escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + + escodegen@1.x.x: + version "1.9.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.5.6" + + escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + + esprima@3.x.x, esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + + esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + + esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + + esrecurse@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + dependencies: + estraverse "^4.1.0" + object-assign "^4.0.1" + + estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + + esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + + etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + + event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + + eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + + events@^1.0.0, events@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + + eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + + execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + + exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + + expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + + expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + + expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + + expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + + expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + + exports-loader@^0.6.3: + version "0.6.4" + resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886" + dependencies: + loader-utils "^1.0.2" + source-map "0.5.x" + + express@^4.16.2: + version "4.16.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" + dependencies: + accepts "~1.3.4" + 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.1" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.0" + 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.2" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.1" + serve-static "1.13.1" + setprototypeof "1.1.0" + statuses "~1.3.1" + type-is "~1.6.15" + utils-merge "1.0.1" + vary "~1.1.2" + + extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + + extend-shallow@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + + extend@3, extend@^3.0.0, extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + + extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + + extglob@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + + extract-text-webpack-plugin@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7" + dependencies: + async "^2.4.1" + loader-utils "^1.1.0" + schema-utils "^0.3.0" + webpack-sources "^1.0.1" + + extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + + fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + + fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + + fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + + fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + + faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + + faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + + file-loader@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8" + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.3.0" + + file-uri-to-path@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + + filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + + fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + + fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + + fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + + finalhandler@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f" + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + + finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + + find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + + find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + + find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + + flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + + flush-write-stream@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + + follow-redirects@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" + dependencies: + debug "^2.2.0" + + for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + + for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + + for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + + for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + + foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + + forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + + form-data@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.11" + + form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + + forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + + fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + + fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + + from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + + fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + dependencies: + null-check "^1.0.0" + + fs-extra@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + + fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + + fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + + fsevents@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + + fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + + fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + + ftp@~0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + + function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + + gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + + gaze@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" + dependencies: + globule "^1.0.0" + + generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + + generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + + get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + + get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + + get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + + get-uri@2: + version "2.0.1" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.1.tgz#dbdcacacd8c608a38316869368117697a1631c59" + dependencies: + data-uri-to-buffer "1" + debug "2" + extend "3" + file-uri-to-path "1" + ftp "~0.3.10" + readable-stream "2" + + get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + + getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + + glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + + glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + + glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + + glob@7.0.x: + version "7.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + + glob@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + + glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + + globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + + globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + + globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + + globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + + globule@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" + dependencies: + glob "~7.1.1" + lodash "~4.17.4" + minimatch "~3.0.2" + + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + + hammerjs@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" + + handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + + handlebars@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + + har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + + har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + + har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + + has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + + has-binary2@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" + dependencies: + isarray "2.0.1" + + has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + + has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + + has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + + has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + + has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + + has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + + has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + + has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + + has@^1.0.0, has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + + hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + + hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + + hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + + hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + + he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + + hipchat-notifier@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" + dependencies: + lodash "^4.0.0" + request "^2.0.0" + + hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + + hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + + homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + + hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + + hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + + html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + + html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + + html-minifier@^3.2.3: + version "3.5.8" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.8.tgz#5ccdb1f73a0d654e6090147511f6e6b2ee312700" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.12.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.3.x" + + html-webpack-plugin@^2.29.0: + version "2.30.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5" + dependencies: + bluebird "^3.4.7" + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + toposort "^1.0.0" + + htmlescape@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + + htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + + http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + + http-errors@1.6.2, http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + + http-parser-js@>=0.4.0: + version "0.4.9" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1" + + http-proxy-agent@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a" + dependencies: + agent-base "2" + debug "2" + extend "3" + + http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + + http-proxy@^1.13.0, http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + + http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + + httpntlm@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" + dependencies: + httpreq ">=0.4.22" + underscore "~1.7.0" + + httpreq@>=0.4.22: + version "0.4.24" + resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" + + https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + + https-proxy-agent@1, https-proxy-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" + dependencies: + agent-base "2" + debug "2" + extend "3" + + iconv-lite@0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + + iconv-lite@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + + icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + + icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + dependencies: + postcss "^6.0.1" + + ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + + iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + + ignore@^3.3.5: + version "3.3.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" + + image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + + import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + + imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + + in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + + indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + + indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + + indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + + inflection@~1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.10.0.tgz#5bffcb1197ad3e81050f8e17e21668087ee9eb2f" + + inflection@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" + + inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + + inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + + inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + + ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + + inline-source-map@~0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" + dependencies: + source-map "~0.5.3" + + insert-module-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.7.1" + concat-stream "~1.5.1" + is-buffer "^1.1.0" + lexical-scope "^1.2.0" + process "~0.11.0" + through2 "^2.0.0" + xtend "^4.0.0" + + internal-ip@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" + dependencies: + meow "^3.3.0" + + interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + + invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + + invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + + ip-address@^5.8.6: + version "5.8.9" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-5.8.9.tgz#6379277c23fc5adb20511e4d23ec2c1bde105dfd" + dependencies: + jsbn "1.1.0" + lodash.find "^4.6.0" + lodash.max "^4.0.1" + lodash.merge "^4.6.0" + lodash.padstart "^4.6.1" + lodash.repeat "^4.1.0" + sprintf-js "1.1.0" + + ip-cidr@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ip-cidr/-/ip-cidr-1.1.2.tgz#3276a25145b716cb542a23eb944d4dfc45a20557" + dependencies: + ip-address "^5.8.6" + jsbn "^0.1.0" + + ip@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.0.1.tgz#c7e356cdea225ae71b36d70f2e71a92ba4e42590" + + ip@^1.1.0, ip@^1.1.2, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + + ipaddr.js@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" + + is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + + is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + + is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + + is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + + is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + + is-buffer@^1.0.2, is-buffer@^1.1.0, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + + is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + + is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + + is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + + is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + + is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + + is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + + is-descriptor@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + + is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + + is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + + is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + + is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + + is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + + is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + + is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + + is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + + is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + + is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + + is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + + is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + + is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + + is-my-json-valid@^2.12.4: + version "2.17.1" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + + is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + + is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + + is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + + is-odd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088" + dependencies: + is-number "^3.0.0" + + is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + + is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + + is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + + is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + + is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + + is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + + is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + + is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + + is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + + is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + + is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + + is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + + is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + + is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + + isarray@0.0.1, isarray@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + + isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + + isbinaryfile@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" + + isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + + isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + + isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + + isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + + istanbul-api@^1.1.14: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620" + dependencies: + async "^2.1.4" + fileset "^2.0.2" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-hook "^1.1.0" + istanbul-lib-instrument "^1.9.1" + istanbul-lib-report "^1.1.2" + istanbul-lib-source-maps "^1.2.2" + istanbul-reports "^1.1.3" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + + istanbul-instrumenter-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.0.tgz#9f553923b22360bac95e617aaba01add1f7db0b2" + dependencies: + convert-source-map "^1.5.0" + istanbul-lib-instrument "^1.7.3" + loader-utils "^1.1.0" + schema-utils "^0.3.0" + + istanbul-lib-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" + + istanbul-lib-hook@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" + dependencies: + append-transform "^0.4.0" + + istanbul-lib-instrument@^1.7.3, istanbul-lib-instrument@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.1.1" + semver "^5.3.0" + + istanbul-lib-report@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" + dependencies: + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + + istanbul-lib-source-maps@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + + istanbul-reports@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" + dependencies: + handlebars "^4.0.3" + + jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + + jasmine-core@~2.9.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.9.1.tgz#b6bbc1d8e65250d56f5888461705ebeeeb88f22f" + + jasmine-spec-reporter@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22" + dependencies: + colors "1.1.2" + + jasmine@^2.5.3: + version "2.9.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.9.0.tgz#76571f925c8783409e7c6153572e5a6341cf93eb" + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.9.0" + + jasminewd2@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" + + js-base64@^2.1.8, js-base64@^2.1.9: + version "2.4.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.2.tgz#1896da010ef8862f385d8887648e9b6dc4a7a2e9" + + js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + + js-yaml@^3.4.3, js-yaml@^3.7.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + + js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + + jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + + jsbn@^0.1.0, jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + + jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + + jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + + json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + + json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + + json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + + json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + + json-stable-stringify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" + dependencies: + jsonify "~0.0.0" + + json-stringify-safe@5.0.x, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + + json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + + json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + + jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + + jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + + jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + + jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + + jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + + karma-chrome-launcher@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + + karma-cli@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960" + dependencies: + resolve "^1.1.6" + + karma-coverage-istanbul-reporter@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.0.tgz#705145594c613e471b09dee3856d0304cc78ae4f" + dependencies: + istanbul-api "^1.1.14" + minimatch "^3.0.4" + + karma-jasmine-html-reporter@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c" + dependencies: + karma-jasmine "^1.0.2" + + karma-jasmine@^1.0.2, karma-jasmine@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" + + karma-source-map-support@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz#1bf81e7bb4b089627ab352ec4179e117c406a540" + dependencies: + source-map-support "^0.4.1" + + karma@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.0.tgz#a02698dd7f0f05ff5eb66ab8f65582490b512e58" + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + browserify "^14.5.0" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^4.17.4" + log4js "^2.3.9" + mime "^1.3.4" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "2.0.4" + source-map "^0.6.1" + tmp "0.0.33" + useragent "^2.1.12" + + killable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" + + kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + dependencies: + is-buffer "^1.0.2" + + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0, kind-of@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + + kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + + kind-of@^5.0.0, kind-of@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + + kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + + labeled-stream-splicer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59" + dependencies: + inherits "^2.0.1" + isarray "~0.0.1" + stream-splicer "^2.0.0" + + lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + + lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + + lazy-cache@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + dependencies: + set-getter "^0.1.0" + + lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + + less-loader@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.0.5.tgz#ae155a7406cac6acd293d785587fcff0f478c4dd" + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^2.3.0" + + less@^2.7.2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "2.81.0" + source-map "^0.5.3" + + levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + + lexical-scope@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" + dependencies: + astw "^2.0.0" + + libbase64@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" + + libmime@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" + dependencies: + iconv-lite "0.4.15" + libbase64 "0.1.0" + libqp "1.1.0" + + libqp@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" + + license-webpack-plugin@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.1.1.tgz#76b2cedccc78f139fd7877e576f756cfc141b8c2" + dependencies: + ejs "^2.5.7" + + load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + + load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + + loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + + loader-utils@1.1.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + + loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@~0.2.2: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + + locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + + lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + + lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + + lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + + lodash.find@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" + + lodash.max@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.max/-/lodash.max-4.0.1.tgz#8735566c618b35a9f760520b487ae79658af136a" + + lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + + lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" + + lodash.merge@^4.6.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + + lodash.mergewith@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" + + lodash.padstart@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + + lodash.repeat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" + + lodash.tail@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + + lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + + lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.4: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + + log4js@^2.3.9: + version "2.5.2" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.5.2.tgz#234e9c688bc4aab3999bd4b149c85851a4e62faa" + dependencies: + circular-json "^0.5.1" + date-format "^1.2.0" + debug "^3.1.0" + semver "^5.3.0" + streamroller "^0.7.0" + optionalDependencies: + amqplib "^0.5.2" + axios "^0.15.3" + hipchat-notifier "^1.1.0" + loggly "^1.1.0" + mailgun-js "^0.7.0" + nodemailer "^2.5.0" + redis "^2.7.1" + slack-node "~0.2.0" + + loggly@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" + dependencies: + json-stringify-safe "5.0.x" + request "2.75.x" + timespan "2.3.x" + + loglevel@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + + longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + + loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + + loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + + lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + + lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + + lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + + lru-cache@~2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5" + + macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + + magic-string@^0.22.3: + version "0.22.4" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff" + dependencies: + vlq "^0.2.1" + + mailcomposer@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" + dependencies: + buildmail "4.0.1" + libmime "3.0.0" + + mailgun-js@^0.7.0: + version "0.7.15" + resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.7.15.tgz#ee366a20dac64c3c15c03d6c1b3e0ed795252abb" + dependencies: + async "~2.1.2" + debug "~2.2.0" + form-data "~2.1.1" + inflection "~1.10.0" + is-stream "^1.1.0" + path-proxy "~1.0.0" + proxy-agent "~2.0.0" + q "~1.4.0" + tsscmp "~1.0.0" + + make-dir@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" + dependencies: + pify "^3.0.0" + + make-error@^1.1.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.2.tgz#8762ffad2444dd8ff1f7c819629fa28e24fea1c4" + + map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + + map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + + map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + + math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + + md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + + media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + + mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + + memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + + meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + + merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + + methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + + micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + + micromatch@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.5.tgz#d05e168c206472dfbca985bfef4f57797b4cd4ba" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.0" + define-property "^1.0.0" + extend-shallow "^2.0.1" + extglob "^2.0.2" + fragment-cache "^0.2.1" + kind-of "^6.0.0" + nanomatch "^1.2.5" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + + miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + + "mime-db@>= 1.30.0 < 2", mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + + mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + + mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + + mime@^1.2.11, mime@^1.3.4, mime@^1.4.1, mime@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + + mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + + minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + + minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + + "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + + minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + + minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + + minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + + mississippi@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^1.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + + mixin-deep@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + + mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + + mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + + mobx-angular@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/mobx-angular/-/mobx-angular-2.2.0.tgz#f9612160eb585ef3343dfdb476185dbb7b49e1ef" + + mobx@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-3.6.2.tgz#fb9f5ff5090539a1ad54e75dc4c098b602693320" + + module-deps@^4.0.8: + version "4.1.1" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + cached-path-relative "^1.0.0" + concat-stream "~1.5.0" + defined "^1.0.0" + detective "^4.0.0" + duplexer2 "^0.1.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^2.0.2" + resolve "^1.1.3" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" + + move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + + ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + + ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + + multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + + multicast-dns@^6.0.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.2.tgz#300b6133361f8aaaf2b8d1248e85c363fe5b95a0" + dependencies: + dns-packet "^1.0.1" + thunky "^0.1.0" + + nan@^2.3.0, nan@^2.3.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" + + nanomatch@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.7.tgz#53cd4aa109ff68b7f869591fdc9d10daeeea3e79" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + is-odd "^1.0.0" + kind-of "^5.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + + ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + + negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + + netmask@~1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + + ng2-odometer@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ng2-odometer/-/ng2-odometer-1.1.3.tgz#27209e7ed225790120635aba2281b8a9318b6f47" + dependencies: + odometer "^0.4.8" + + ngx-cookie-service@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ngx-cookie-service/-/ngx-cookie-service-1.0.10.tgz#dc17ff4f1a0224cf3b0c7a7f52bff2b798396e3d" + + ngx-perfect-scrollbar@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-5.3.1.tgz#7fcfb26a93554ac60d0444bfaa4b9487f23c5cbc" + dependencies: + perfect-scrollbar "^1.3.0" + resize-observer-polyfill "^1.4.0" + + no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + dependencies: + lower-case "^1.1.1" + + node-forge@0.6.33: + version "0.6.33" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" + + node-gyp@^3.3.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "2" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + + node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + + node-modules-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/node-modules-path/-/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8" + + node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + + node-sass@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.3.2" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "~2.79.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + + node-uuid@~1.4.7: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + + nodemailer-direct-transport@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" + dependencies: + nodemailer-shared "1.1.0" + smtp-connection "2.12.0" + + nodemailer-fetch@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" + + nodemailer-shared@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" + dependencies: + nodemailer-fetch "1.6.0" + + nodemailer-smtp-pool@2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" + dependencies: + nodemailer-shared "1.1.0" + nodemailer-wellknown "0.1.10" + smtp-connection "2.12.0" + + nodemailer-smtp-transport@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" + dependencies: + nodemailer-shared "1.1.0" + nodemailer-wellknown "0.1.10" + smtp-connection "2.12.0" + + nodemailer-wellknown@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" + + nodemailer@^2.5.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" + dependencies: + libmime "3.0.0" + mailcomposer "4.0.1" + nodemailer-direct-transport "3.3.2" + nodemailer-shared "1.1.0" + nodemailer-smtp-pool "2.8.2" + nodemailer-smtp-transport "2.7.2" + socks "1.1.9" + + "nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + + nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + + normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + + normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + + normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + + normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + + npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + + "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + + nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + + null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + + num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + + number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + + nvd3@^1.8.6: + version "1.8.6" + resolved "https://registry.yarnpkg.com/nvd3/-/nvd3-1.8.6.tgz#2d3eba74bf33363b5101ebf1d093c59a53ae73c4" + + oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + + object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + + object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + + object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + + object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + + object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + + object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + + object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + + obuf@^1.0.0, obuf@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" + + odometer@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/odometer/-/odometer-0.4.8.tgz#2f6703bf4c6b384c278236d04d4bc8171abe4374" + + on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + + on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + + once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + + opn@^5.1.0, opn@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" + dependencies: + is-wsl "^1.1.0" + + optimist@^0.6.1, optimist@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + + optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + + options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + + original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + + os-browserify@^0.3.0, os-browserify@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + + os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + + os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + + os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + + os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + + osenv@0, osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + + p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + + p-limit@^1.0.0, p-limit@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" + + p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + + p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + + p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + + pac-proxy-agent@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz#34a385dfdf61d2f0ecace08858c745d3e791fd4d" + dependencies: + agent-base "2" + debug "2" + extend "3" + get-uri "2" + http-proxy-agent "1" + https-proxy-agent "1" + pac-resolver "~2.0.0" + raw-body "2" + socks-proxy-agent "2" + + pac-resolver@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-2.0.0.tgz#99b88d2f193fbdeefc1c9a529c1f3260ab5277cd" + dependencies: + co "~3.0.6" + degenerator "~1.0.2" + ip "1.0.1" + netmask "~1.0.4" + thunkify "~2.1.1" + + pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + + parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + + param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + + parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" + dependencies: + path-platform "~0.11.15" + + parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + + parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + + parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + + parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + + parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + + parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + + parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + + pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + + path-browserify@0.0.0, path-browserify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + + path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + + path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + + path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + + path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + + path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + + path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + + path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + + path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + + path-proxy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" + dependencies: + inflection "~1.3.0" + + path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + + path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + + path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + + path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + dependencies: + pify "^3.0.0" + + pbkdf2@^3.0.3: + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + + perfect-scrollbar@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.3.0.tgz#61da56f94b58870d8e0a617bce649cee17d1e3b2" + + performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + + pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + + pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + + pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + + pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + + pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + + portfinder@^1.0.9, portfinder@~1.0.12: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + + posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + + postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + + postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + + postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + + postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + + postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + + postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + + postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + + postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + + postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + + postcss-import@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.0.0.tgz#a962e2df82d3bc5a6da6a386841747204f41ef5b" + dependencies: + postcss "^6.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + + postcss-load-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + postcss-load-options "^1.2.0" + postcss-load-plugins "^2.3.0" + + postcss-load-options@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + + postcss-load-plugins@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" + dependencies: + cosmiconfig "^2.1.1" + object-assign "^4.1.0" + + postcss-loader@^2.0.10: + version "2.0.10" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.10.tgz#090db0540140bd56a7a7f717c41bc29aeef4c674" + dependencies: + loader-utils "^1.1.0" + postcss "^6.0.0" + postcss-load-config "^1.2.0" + schema-utils "^0.3.0" + + postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + + postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + + postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + + postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + + postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + + postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + + postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + + postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + + postcss-modules-extract-imports@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" + dependencies: + postcss "^6.0.1" + + postcss-modules-local-by-default@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + + postcss-modules-scope@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + + postcss-modules-values@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + + postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + + postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + + postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + + postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + + postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + + postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + + postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + + postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + + postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + + postcss-url@^7.1.2: + version "7.3.0" + resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.0.tgz#cf2f45e06743cf43cfea25309f81cbc003dc783f" + dependencies: + mime "^1.4.1" + minimatch "^3.0.4" + mkdirp "^0.5.0" + postcss "^6.0.1" + xxhashjs "^0.2.1" + + postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + + postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + + postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + + postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.16: + version "6.0.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.16.tgz#112e2fe2a6d2109be0957687243170ea5589e146" + dependencies: + chalk "^2.3.0" + source-map "^0.6.1" + supports-color "^5.1.0" + + prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + + prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + + preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + + pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + + process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + + process@^0.11.10, process@~0.11.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + + promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + + promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + + protractor@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.1.2.tgz#9b221741709a4c62d5cd53c6aadd54a71137e95f" + dependencies: + "@types/node" "^6.0.46" + "@types/q" "^0.0.32" + "@types/selenium-webdriver" "~2.53.39" + blocking-proxy "0.0.5" + chalk "^1.1.3" + glob "^7.0.3" + jasmine "^2.5.3" + jasminewd2 "^2.1.0" + optimist "~0.6.0" + q "1.4.1" + saucelabs "~1.3.0" + selenium-webdriver "3.0.1" + source-map-support "~0.4.0" + webdriver-js-extender "^1.0.0" + webdriver-manager "^12.0.6" + + proxy-addr@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.5.2" + + proxy-agent@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499" + dependencies: + agent-base "2" + debug "2" + extend "3" + http-proxy-agent "1" + https-proxy-agent "1" + lru-cache "~2.6.5" + pac-proxy-agent "1" + socks-proxy-agent "2" + + prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + + pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + + public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + + pump@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + + pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + + pumpify@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + dependencies: + duplexify "^3.5.3" + inherits "^2.0.3" + pump "^2.0.0" + + punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + + punycode@1.4.1, punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + + q@1.4.1, q@^1.1.2, q@^1.4.1, q@~1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + + qjobs@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" + + qrcodejs2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/qrcodejs2/-/qrcodejs2-0.0.2.tgz#465afe5e39f19facecb932c11f7a186109146ae1" + + qs@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + + qs@~6.2.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + + qs@~6.3.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" + + qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + + query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + + querystring-es3@^0.2.0, querystring-es3@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + + querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + + querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + + querystringify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" + + randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + + randomfill@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + + range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + + raw-body@2, raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + + raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + + rc@^1.1.7: + version "1.2.4" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.4.tgz#a0f606caae2a3b862bbd0ef85482c0125b315fa3" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + + read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + dependencies: + pify "^2.3.0" + + read-only-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" + dependencies: + readable-stream "^2.0.2" + + read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + + read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + + read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + + read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + + "readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + + readable-stream@1.0: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + + readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + + readable-stream@~2.0.0, readable-stream@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + + readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + + redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + + redis-commands@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b" + + redis-parser@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" + + redis@^2.7.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" + dependencies: + double-ended-queue "^2.1.0-0" + redis-commands "^1.2.0" + redis-parser "^2.6.0" + + reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + + reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + + reflect-metadata@^0.1.12, reflect-metadata@^0.1.2: + version "0.1.12" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" + + regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + + regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + + regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + + regex-not@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9" + dependencies: + extend-shallow "^2.0.1" + + regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + + regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + + regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + + relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + + remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + + renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + + repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + + repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + + repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + + repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + + request@2, request@2.81.0, request@^2.0.0, request@^2.74.0, request@^2.78.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + + request@2.75.x: + version "2.75.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + bl "~1.1.2" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.0.0" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.2.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + + request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + + requestretry@^1.2.2: + version "1.13.0" + resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.13.0.tgz#213ec1006eeb750e8b8ce54176283d15a8d55d94" + dependencies: + extend "^3.0.0" + lodash "^4.15.0" + request "^2.74.0" + when "^3.7.7" + + require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + + require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + + require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + + requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + + resize-observer-polyfill@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz#660ff1d9712a2382baa2cad450a4716209f9ca69" + + resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + + resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + + resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + + resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + + resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + + right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + + rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + + ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + + run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + + rxjs@^5.5.2, rxjs@^5.5.6: + version "5.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02" + dependencies: + symbol-observable "1.0.1" + + safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + + sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + + sass-loader@^6.0.6: + version "6.0.6" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.6.tgz#e9d5e6c1f155faa32a4b26d7a9b7107c225e40f9" + dependencies: + async "^2.1.5" + clone-deep "^0.3.0" + loader-utils "^1.0.1" + lodash.tail "^4.1.1" + pify "^3.0.0" + + saucelabs@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee" + dependencies: + https-proxy-agent "^1.0.0" + + sax@0.5.x: + version "0.5.8" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" + + sax@0.6.x: + version "0.6.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9" + + sax@>=0.6.0, sax@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + + schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + dependencies: + ajv "^5.0.0" + + schema-utils@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.3.tgz#e2a594d3395834d5e15da22b48be13517859458e" + dependencies: + ajv "^5.0.0" + ajv-keywords "^2.1.0" + + scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + + select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + + selenium-webdriver@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7" + dependencies: + adm-zip "^0.4.7" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + + selenium-webdriver@^2.53.2: + version "2.53.3" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085" + dependencies: + adm-zip "0.4.4" + rimraf "^2.2.8" + tmp "0.0.24" + ws "^1.0.1" + xml2js "0.4.4" + + selfsigned@^1.9.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" + dependencies: + node-forge "0.6.33" + + semver-dsl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" + dependencies: + semver "^5.3.0" + + "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + + semver@~5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" + + semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + + send@0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" + dependencies: + debug "2.6.9" + depd "~1.1.1" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.1" + + serialize-javascript@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" + + serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + + serve-static@1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.1" + + set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + + set-getter@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" + dependencies: + to-object-path "^0.3.0" + + set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + + set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + + set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + + setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + + setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + + setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + + sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: + version "2.4.10" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + + shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + + shasum@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" + dependencies: + json-stable-stringify "~0.0.0" + sha.js "~2.4.4" + + shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + + shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + + shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + + signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + + silent-error@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9" + dependencies: + debug "^2.2.0" + + slack-node@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" + dependencies: + requestretry "^1.2.2" + + slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + + smart-buffer@^1.0.4: + version "1.1.15" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + + smtp-connection@2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" + dependencies: + httpntlm "1.6.1" + nodemailer-shared "1.1.0" + + snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + + snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + + snapdragon@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^2.0.0" + + sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + + socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + + socket.io-client@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~2.6.4" + engine.io-client "~3.1.0" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.1.1" + to-array "0.1.4" + + socket.io-parser@~3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2" + dependencies: + component-emitter "1.2.1" + debug "~2.6.4" + has-binary2 "~1.0.2" + isarray "2.0.1" + + socket.io@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" + dependencies: + debug "~2.6.6" + engine.io "~3.1.0" + socket.io-adapter "~1.1.0" + socket.io-client "2.0.4" + socket.io-parser "~3.1.1" + + sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + + sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + + socks-proxy-agent@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.1.1.tgz#86ebb07193258637870e13b7bd99f26c663df3d3" + dependencies: + agent-base "2" + extend "3" + socks "~1.1.5" + + socks@1.1.9, socks@~1.1.5: + version "1.1.9" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" + dependencies: + ip "^1.1.2" + smart-buffer "^1.0.4" + + sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + + source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + + source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + + source-map-loader@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.3.tgz#d4b0c8cd47d54edce3e6bfa0f523f452b5b0e521" + dependencies: + async "^2.5.0" + loader-utils "~0.2.2" + source-map "~0.6.1" + + source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + + source-map-support@^0.4.1, source-map-support@^0.4.2, source-map-support@~0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + + source-map-support@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.2.tgz#1a6297fd5b2e762b39688c7fc91233b60984f0a5" + dependencies: + source-map "^0.6.0" + + source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + + source-map@0.1.x: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + + source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@~0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + + source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + + source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + + spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + + spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + + spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + + spdy-transport@^2.0.18: + version "2.0.20" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + + spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + + split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + + sprintf-js@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.0.tgz#cffcaf702daf65ea39bb4e0fa2b299cec1a1be46" + + sprintf-js@^1.0.3, sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + + sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + + ssri@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.1.0.tgz#2cbf1df36b74d0fc91fcf89640a4b3e1d10b1899" + dependencies: + safe-buffer "^5.1.0" + + static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + + "statuses@>= 1.3.1 < 2", statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + + stdout-stream@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" + dependencies: + readable-stream "^2.0.1" + + stream-browserify@^2.0.0, stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + + stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + + stream-each@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + + stream-http@^2.0.0, stream-http@^2.7.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.3" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + + stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + + stream-splicer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.2" + + streamroller@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" + dependencies: + date-format "^1.2.0" + debug "^3.1.0" + mkdirp "^0.5.1" + readable-stream "^2.3.0" + + strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + + string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + + string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + + string_decoder@^1.0.0, string_decoder@~1.0.0, string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + + string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + + stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + + strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + + strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + + strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + + strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + + strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + + strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + + strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + + style-loader@^0.13.1: + version "0.13.2" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb" + dependencies: + loader-utils "^1.0.2" + + stylus-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.1.tgz#77f4b34fd030d25b2617bcf5513db5b0730c4089" + dependencies: + loader-utils "^1.0.2" + lodash.clonedeep "^4.5.0" + when "~3.6.x" + + stylus@^0.54.5: + version "0.54.5" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" + dependencies: + css-parse "1.7.x" + debug "*" + glob "7.0.x" + mkdirp "0.5.x" + sax "0.5.x" + source-map "0.1.x" + + subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + + supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + + supports-color@^3.1.2, supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + + supports-color@^4.0.0, supports-color@^4.2.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + + supports-color@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" + dependencies: + has-flag "^2.0.0" + + svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + + symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + + syntax-error@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1" + dependencies: + acorn "^4.0.3" + + tapable@^0.2.7: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" + + tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + + tar@^2.0.0, tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + + through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + + "through@>=2.2.7 <3", through@X.X.X: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + + thunkify@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" + + thunky@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" + + time-stamp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" + + timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" + dependencies: + process "~0.11.0" + + timers-browserify@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.5.tgz#04878fb12a155a159c9d1e59faa1f77bf4ecc44c" + dependencies: + setimmediate "^1.0.4" + + timespan@2.3.x: + version "2.3.0" + resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" + + tmp@0.0.24: + version "0.0.24" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12" + + tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + dependencies: + os-tmpdir "~1.0.1" + + tmp@0.0.33, tmp@0.0.x: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + + to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + + to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + + to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + + to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + + to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + + to-regex@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae" + dependencies: + define-property "^0.2.5" + extend-shallow "^2.0.1" + regex-not "^1.0.0" + + toposort@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" + + tough-cookie@~2.3.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + + tree-kill@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + + trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + + trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + + "true-case-path@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62" + dependencies: + glob "^6.0.4" + + ts-node@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-4.1.0.tgz#36d9529c7b90bb993306c408cd07f7743de20712" + dependencies: + arrify "^1.0.0" + chalk "^2.3.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.5.0" + tsconfig "^7.0.0" + v8flags "^3.0.0" + yn "^2.0.0" + + tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + + tsickle@^0.26.0: + version "0.26.0" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.26.0.tgz#40b30a2dd6abcb33b182e37596674bd1cfe4039c" + dependencies: + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map "^0.5.6" + source-map-support "^0.4.2" + + tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" + + tslint@~5.9.1: + version "5.9.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae" + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.7.0" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.12.1" + + tsscmp@~1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" + + tsutils@^2.12.1: + version "2.19.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.19.1.tgz#76d7ebdea9d7a7bf4a05f50ead3701b0168708d7" + dependencies: + tslib "^1.8.1" + + tty-browserify@0.0.0, tty-browserify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + + tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + + tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + + tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + + type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + + type-is@~1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.15" + + typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + + typescript@~2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" + + typescript@~2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" + + uglify-es@^3.3.4: + version "3.3.8" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.8.tgz#f2c68e6cff0d0f9dc9577e4da207151c2e753b7e" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + + uglify-js@3.3.x: + version "3.3.8" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.8.tgz#51e9a5db73afb53ac98603d08224edcd0be45fd8" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + + uglify-js@^2.6, uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + + uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + + uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + + uglifyjs-webpack-plugin@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.6.tgz#f4ba8449edcf17835c18ba6ae99b9d610857fb19" + dependencies: + cacache "^10.0.1" + find-cache-dir "^1.0.0" + schema-utils "^0.4.2" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + + uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + + ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + + ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + + umd@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e" + + underscore@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" + + union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + + uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + + uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + + uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + + unique-filename@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + + unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + + universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + + unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + + unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + + upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + + urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + + url-loader@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7" + dependencies: + loader-utils "^1.0.2" + mime "^1.4.1" + schema-utils "^0.3.0" + + url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + + url-parse@^1.1.8: + version "1.2.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986" + dependencies: + querystringify "~1.0.0" + requires-port "~1.0.0" + + url@^0.11.0, url@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + + use@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" + dependencies: + define-property "^0.2.5" + isobject "^3.0.0" + lazy-cache "^2.0.2" + + useragent@^2.1.12: + version "2.2.1" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" + dependencies: + lru-cache "2.2.x" + tmp "0.0.x" + + util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + + util@0.10.3, util@^0.10.3, util@~0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + + utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + + utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + + utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + + uuid@^3.0.0, uuid@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + + uws@~0.14.4: + version "0.14.5" + resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc" + + v8flags@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b" + dependencies: + homedir-polyfill "^1.0.1" + + validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + + vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + + vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + + verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + + vlq@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + + vm-browserify@0.0.4, vm-browserify@~0.0.1: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + + void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + + watchpack@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" + dependencies: + async "^2.1.2" + chokidar "^1.7.0" + graceful-fs "^4.1.2" + + wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" + dependencies: + minimalistic-assert "^1.0.0" + + webdriver-js-extender@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515" + dependencies: + "@types/selenium-webdriver" "^2.53.35" + selenium-webdriver "^2.53.2" + + webdriver-manager@^12.0.6: + version "12.0.6" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.0.6.tgz#3df1a481977010b4cbf8c9d85c7a577828c0e70b" + dependencies: + adm-zip "^0.4.7" + chalk "^1.1.1" + del "^2.2.0" + glob "^7.0.3" + ini "^1.3.4" + minimist "^1.2.0" + q "^1.4.1" + request "^2.78.0" + rimraf "^2.5.2" + semver "^5.3.0" + xml2js "^0.4.17" + + webpack-core@^0.6.8: + version "0.6.9" + resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" + dependencies: + source-list-map "~0.1.7" + source-map "~0.4.1" + + webpack-dev-middleware@1.12.2, webpack-dev-middleware@~1.12.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e" + dependencies: + memory-fs "~0.4.1" + mime "^1.5.0" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + time-stamp "^2.0.0" + + webpack-dev-server@~2.11.0: + version "2.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz#6f9358a002db8403f016e336816f4485384e5ec0" + dependencies: + ansi-html "0.0.7" + array-includes "^3.0.3" + bonjour "^3.5.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.4" + import-local "^1.0.0" + internal-ip "1.2.0" + ip "^1.1.5" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.19" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^5.1.0" + webpack-dev-middleware "1.12.2" + yargs "6.6.0" + + webpack-merge@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.1.tgz#f1197a0a973e69c6fbeeb6d658219aa8c0c13555" + dependencies: + lodash "^4.17.4" + + webpack-sources@^1.0.0, webpack-sources@^1.0.1, webpack-sources@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + + webpack-subresource-integrity@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.0.3.tgz#c0606d40090b070cde428bec8df3603216e472eb" + dependencies: + webpack-core "^0.6.8" + + webpack@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^5.1.5" + ajv-keywords "^2.0.0" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" + + websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + + websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + + when@^3.7.7: + version "3.7.8" + resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" + + when@~3.6.x: + version "3.6.4" + resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" + + whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + + which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + + which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + + which@1, which@^1.2.1, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + + wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + + window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + + wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + + wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + + wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + + worker-farm@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" + dependencies: + errno "^0.1.4" + xtend "^4.0.1" + + wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + + wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + + ws@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + + ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + + xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + + xml2js@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d" + dependencies: + sax "0.6.x" + xmlbuilder ">=1.0.0" + + xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + + xmlbuilder@>=1.0.0, xmlbuilder@~9.0.1: + version "9.0.4" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f" + + xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + + xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + + xxhashjs@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + dependencies: + cuint "^0.2.2" + + y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + + yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + + yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + + yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + + yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + + yargs@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + 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 "^4.2.0" + + yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + 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" + + yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + + yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + + yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + + yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + + zone.js@^0.8.20: + version "0.8.20" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.20.tgz#a218c48db09464b19ff6fc8f0d4bb5b1046e185d" + +Trace: + Error: angular-tree-component:: Invalid URI "angular-tree-component:/" + at Request.init (/home/crusader/lib/node_modules/yarn/node_modules/request/request.js:276:31) + at new Request (/home/crusader/lib/node_modules/yarn/node_modules/request/request.js:130:8) + at request (/home/crusader/lib/node_modules/yarn/node_modules/request/index.js:54:10) + at RequestManager.execute (/home/crusader/lib/node_modules/yarn/lib/util/request-manager.js:371:17) + at RequestManager.shiftQueue (/home/crusader/lib/node_modules/yarn/lib/util/request-manager.js:398:10) + at Promise (/home/crusader/lib/node_modules/yarn/lib/util/request-manager.js:175:12) + at new Promise () + at RequestManager.request (/home/crusader/lib/node_modules/yarn/lib/util/request-manager.js:173:21) + at NpmRegistry.request (/home/crusader/lib/node_modules/yarn/lib/registries/npm-registry.js:114:32) + at /home/crusader/lib/node_modules/yarn/lib/resolvers/registries/npm-resolver.js:111:54 diff --git a/yarn.lock b/yarn.lock index c24076e..df1b075 100644 --- a/yarn.lock +++ b/yarn.lock @@ -559,13 +559,13 @@ angular-l10n@^4.1.5: dependencies: tslib "^1.7.1" -angular-tree-component@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/angular-tree-component/-/angular-tree-component-7.0.2.tgz#a70c2ed62b0bf5f14d20ada1e68fbc3649bdf783" +angular-tree-component@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/angular-tree-component/-/angular-tree-component-7.1.0.tgz#53674ea944f7147647c7e48931f5fad66237a632" dependencies: - lodash "^4.17.4" + lodash "^4.17.5" mobx "^3.6.2" - mobx-angular "^2.1.1" + mobx-angular "2.1.1" angularx-qrcode@^1.0.1: version "1.0.1" @@ -4290,6 +4290,10 @@ lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, l version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^4.17.5: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + log4js@^2.3.9: version "2.5.2" resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.5.2.tgz#234e9c688bc4aab3999bd4b149c85851a4e62faa" @@ -4589,9 +4593,9 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd dependencies: minimist "0.0.8" -mobx-angular@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/mobx-angular/-/mobx-angular-2.2.0.tgz#f9612160eb585ef3343dfdb476185dbb7b49e1ef" +mobx-angular@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mobx-angular/-/mobx-angular-2.1.1.tgz#d5e36539acb200186dd5a1170806b4776b9a8b88" mobx@^3.6.2: version "3.6.2" @@ -5954,7 +5958,7 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" -reflect-metadata@^0.1.2: +reflect-metadata@^0.1.12, reflect-metadata@^0.1.2: version "0.1.12" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2"