├── .editorconfig ├── .gitignore ├── .nojekyll ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── angular.json ├── browserslist ├── config ├── helpers.js └── webpack.config.js ├── dist └── bundle.js ├── e2e ├── protractor.conf.js ├── src │ ├── app.e2e-spec.ts │ └── app.po.ts └── tsconfig.e2e.json ├── examples ├── .gitignore ├── app │ ├── app.component.ts │ ├── app.module.ts │ ├── environment.ts │ └── index.ts ├── config │ ├── helpers.js │ ├── html-elements-plugin │ │ └── index.js │ ├── webpack.common.js │ └── webpack.dev.js ├── custom-typings.d.ts ├── index.html ├── main.browser.ts └── polyfills.browser.ts ├── img ├── gauge.png └── gauges.png ├── package-lock.json ├── package.json ├── projects └── angular-gauge-chart │ ├── .gitignore │ ├── .prettierrc │ ├── karma.conf.js │ ├── ng-package.json │ ├── ng-package.prod.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── lib │ │ ├── gauge-chart.component.css │ │ ├── gauge-chart.component.html │ │ ├── gauge-chart.component.spec.ts │ │ ├── gauge-chart.component.ts │ │ └── gauge-chart.module.ts │ ├── public_api.ts │ └── test.ts │ ├── tsconfig.lib.json │ ├── tsconfig.spec.json │ └── tslint.json ├── src ├── app │ ├── app.component.css │ ├── app.component.html │ ├── app.component.spec.ts │ ├── app.component.ts │ └── app.module.ts ├── assets │ └── .gitkeep ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── gauge-chart.module.ts ├── gauge-chart │ ├── gauge-chart.component.html │ ├── gauge-chart.component.scss │ ├── gauge-chart.component.ts │ └── index.ts ├── index.html ├── index.ts ├── karma.conf.js ├── main.ts ├── polyfills.ts ├── styles.css ├── test.ts ├── tsconfig.app.json ├── tsconfig.spec.json └── tslint.json ├── tsconfig.json ├── tslint.json └── typedoc.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage 31 | /libpeerconnection.log 32 | npm-debug.log 33 | yarn-error.log 34 | testem.log 35 | /typings 36 | 37 | # System Files 38 | .DS_Store 39 | Thumbs.db 40 | 41 | .vscode/settings.json 42 | -------------------------------------------------------------------------------- /.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/greetclock/angular-gauge-chart/7a334b7cde356522461935fc7101e9de0110d0ed/.nojekyll -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "trailingComma": "all" 5 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.7.2 2 | * `gauge-chart@0.5.3` should not case `ng build --prod` compilation error. 3 | 4 | ## 0.7.0 5 | * Requires Angular 8 as peer dependency. 6 | 7 | ## 0.6.0 8 | * Requires Angular 7 as peer dependency. 9 | 10 | ## 0.5.3 11 | * Fixed `angular ng build --prod` failure described in [#16](https://github.com/recogizer/angular-gauge-chart/issues/16) thanks to [@shashi97](https://github.com/shashi97). 12 | * Fixed a bug described in [#13](https://github.com/recogizer/angular-gauge-chart/issues/13) and [#14](https://github.com/recogizer/angular-gauge-chart/issues/17). 13 | * Updated README. 14 | 15 | ## 0.5.2 16 | * Updated to Angular 7. 17 | * Fixed a bug described in [#14](https://github.com/recogizer/angular-gauge-chart/issues/14) thanks to [@csprea](https://github.com/csprea). 18 | 19 | ## 0.5.1 20 | * Fixed vulnerability bug. 21 | 22 | ## 0.5.0 23 | **Breaking Changes**: 24 | * The component was renamed: `` -> ``. 25 | * The NPM name was changed: `@recogizer/angular-gauge-chart` -> `angular-gauge-chart`. 26 | 27 | **Other Changes**: 28 | 29 | * Fixed the bug described in [#1](https://github.com/recogizer/angular-gauge-chart/issues/1). 30 | * Now requires `Angular 6`. 31 | * Now using `ng g lib` from Angular CLI 6. 32 | 33 | ## 0.4.3 34 | * Fixed bug with gauge-chart importing by deleting outdated code and updated the build. 35 | 36 | ## 0.4.2 37 | * Fixed vulnerability bug and docs generated. 38 | 39 | ## 0.4.1 40 | * Updated gauge-chart import, examples, README. 41 | 42 | ## 0.3.4 43 | * Fixed building process. Now bundle doesn't include tslib (requires it as peer dependency). 44 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Recogizer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Angular Gauge Chart 2 | 3 | This is an angular wrap-over for the library [gauge-chart](https://github.com/recogizer/gauge-chart) 4 | 5 | **A library for creating nice and flexible gauge charts with Angular.** 6 | 7 | You can [catch us on twitter](https://twitter.com/recogizer): [@recogizer](https://twitter.com/recogizer) or head over to [our company's website](http://www.recogizer.com/). 8 | 9 | ## [Demo](https://recogizer.github.io/gauge-chart/examples/samples/) | [Docs](https://recogizer.github.io/angular-gauge-chart/docs) 10 | 11 | ## Installation 12 | 13 | ``` 14 | npm install angular-gauge-chart 15 | ``` 16 | 17 | ## Usage 18 | 19 | Import `angular-gauge-chart` into your module and add as a declaration. 20 | 21 | ```typescript 22 | import { GaugeChartModule } from 'angular-gauge-chart' 23 | 24 | imports: [ 25 | GaugeChartModule, 26 | ] 27 | ``` 28 | 29 | Create an element for positioning gauge in your html file: 30 | 31 | ```html 32 | 39 | ``` 40 | 41 | Now you're ready to draw your own gauge. 42 | 43 | Just copy to your ts file the following code: 44 | 45 | ```typescript 46 | public canvasWidth = 300 47 | public needleValue = 65 48 | public centralLabel = '' 49 | public name = 'Gauge chart' 50 | public bottomLabel = '65' 51 | public options = { 52 | hasNeedle: true, 53 | needleColor: 'gray', 54 | needleUpdateSpeed: 1000, 55 | arcColors: ['rgb(44, 151, 222)', 'lightgray'], 56 | arcDelimiters: [30], 57 | rangeLabel: ['0', '100'], 58 | needleStartValue: 50, 59 | } 60 | ``` 61 | 62 | #### Result: 63 | 64 | ![Gauge Example](/img/gauge.png "Gauge Example") 65 | 66 | Feel free to change or delete any of the gaugeOptions properties as long as their values are in permitted ranges. 67 | 68 | ## Options 69 | 70 | canvasWidth: number 71 | 72 | needleValue: number 73 | 74 | centralLabel: string 75 | 76 | options = { ... } : 77 | 78 | | Name | Values Ranges | Description | 79 | | ---- | ------------- | ----------- | 80 | | hasNeedle | true / false | determines whether to show the needle or not | 81 | | needleColor | [value supported by CSS](https://www.w3schools.com/colors/default.asp) | colorizes needle with specified colors | 82 | | needleUpdateSpeed | number larger than 0 | determines the speed of needle update animation | 83 | | arcColors | [array of values supported by CSS](https://www.w3schools.com/colors/default.asp) | colorizes gauge with specified color | 84 | | arcDelimiters | array of numbers from 0 to 100 | specifies delimiters of the gauge in ascending order | 85 | | rangeLabel | array of two strings | depicts gauge ranges on both sides of the chart | 86 | | centralLabel | string | depicts gauge inner label | 87 | 88 | name?: string (will be shown above the gauge) 89 | 90 | nameFont?: number (font size of the name) 91 | 92 | bottomLabel?: string (will be shown bellow the gauge) 93 | 94 | bottomLabelFont?: number (font size of the bottom label) 95 | 96 | ## Examples 97 | 98 | Some examples of what you can get out of the library using different properties: 99 | 100 | ![Gauge Examples](/img/gauges.png "Gauge Examples") 101 | 102 | ## Contributing 103 | Build the library with `npm run build`. This will fetch all dependencies and then compile the `dist` files. To see the examples locally you can start a web server with `npm start` and go to `localhost:4200`. 104 | 105 | ## License 106 | MIT License. Copyright (c) 2017 RECOGIZER GROUP GmbH. 107 | 108 | [Angular Starter](https://github.com/gdi2290/angular-starter) was used. 109 | 110 | The project was generated with [Angular CLI](https://github.com/angular/angular-cli). 111 | 112 | ## Authors 113 | [Alexey Karpov](https://github.com/cherurg), [Maxim Maltsev](https://github.com/mmaltsev). 114 | -------------------------------------------------------------------------------- /angular.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "version": 1, 4 | "newProjectRoot": "projects", 5 | "projects": { 6 | "test-proj": { 7 | "root": "", 8 | "sourceRoot": "src", 9 | "projectType": "application", 10 | "prefix": "app", 11 | "schematics": {}, 12 | "architect": { 13 | "build": { 14 | "builder": "@angular-devkit/build-angular:browser", 15 | "options": { 16 | "outputPath": "dist/test-proj", 17 | "index": "src/index.html", 18 | "main": "src/main.ts", 19 | "polyfills": "src/polyfills.ts", 20 | "tsConfig": "src/tsconfig.app.json", 21 | "assets": ["src/favicon.ico", "src/assets"], 22 | "styles": ["src/styles.css"], 23 | "scripts": [] 24 | }, 25 | "configurations": { 26 | "production": { 27 | "fileReplacements": [ 28 | { 29 | "replace": "src/environments/environment.ts", 30 | "with": "src/environments/environment.prod.ts" 31 | } 32 | ], 33 | "optimization": true, 34 | "outputHashing": "all", 35 | "sourceMap": false, 36 | "extractCss": true, 37 | "namedChunks": false, 38 | "aot": true, 39 | "extractLicenses": true, 40 | "vendorChunk": false, 41 | "buildOptimizer": true 42 | } 43 | } 44 | }, 45 | "serve": { 46 | "builder": "@angular-devkit/build-angular:dev-server", 47 | "options": { 48 | "browserTarget": "test-proj:build" 49 | }, 50 | "configurations": { 51 | "production": { 52 | "browserTarget": "test-proj:build:production" 53 | } 54 | } 55 | }, 56 | "extract-i18n": { 57 | "builder": "@angular-devkit/build-angular:extract-i18n", 58 | "options": { 59 | "browserTarget": "test-proj:build" 60 | } 61 | }, 62 | "test": { 63 | "builder": "@angular-devkit/build-angular:karma", 64 | "options": { 65 | "main": "src/test.ts", 66 | "polyfills": "src/polyfills.ts", 67 | "tsConfig": "src/tsconfig.spec.json", 68 | "karmaConfig": "src/karma.conf.js", 69 | "styles": ["src/styles.css"], 70 | "scripts": [], 71 | "assets": ["src/favicon.ico", "src/assets"] 72 | } 73 | }, 74 | "lint": { 75 | "builder": "@angular-devkit/build-angular:tslint", 76 | "options": { 77 | "tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"], 78 | "exclude": ["**/node_modules/**"] 79 | } 80 | } 81 | } 82 | }, 83 | "test-proj-e2e": { 84 | "root": "e2e/", 85 | "projectType": "application", 86 | "architect": { 87 | "e2e": { 88 | "builder": "@angular-devkit/build-angular:protractor", 89 | "options": { 90 | "protractorConfig": "e2e/protractor.conf.js", 91 | "devServerTarget": "test-proj:serve" 92 | }, 93 | "configurations": { 94 | "production": { 95 | "devServerTarget": "test-proj:serve:production" 96 | } 97 | } 98 | }, 99 | "lint": { 100 | "builder": "@angular-devkit/build-angular:tslint", 101 | "options": { 102 | "tsConfig": "e2e/tsconfig.e2e.json", 103 | "exclude": ["**/node_modules/**"] 104 | } 105 | } 106 | } 107 | }, 108 | "angular-gauge-chart": { 109 | "root": "projects/angular-gauge-chart", 110 | "sourceRoot": "projects/angular-gauge-chart/src", 111 | "projectType": "library", 112 | "prefix": "lib", 113 | "architect": { 114 | "build": { 115 | "builder": "@angular-devkit/build-ng-packagr:build", 116 | "options": { 117 | "tsConfig": "projects/angular-gauge-chart/tsconfig.lib.json", 118 | "project": "projects/angular-gauge-chart/ng-package.json" 119 | }, 120 | "configurations": { 121 | "production": { 122 | "project": "projects/angular-gauge-chart/ng-package.prod.json" 123 | } 124 | } 125 | }, 126 | "test": { 127 | "builder": "@angular-devkit/build-angular:karma", 128 | "options": { 129 | "main": "projects/angular-gauge-chart/src/test.ts", 130 | "tsConfig": "projects/angular-gauge-chart/tsconfig.spec.json", 131 | "karmaConfig": "projects/angular-gauge-chart/karma.conf.js" 132 | } 133 | }, 134 | "lint": { 135 | "builder": "@angular-devkit/build-angular:tslint", 136 | "options": { 137 | "tsConfig": [ 138 | "projects/angular-gauge-chart/tsconfig.lib.json", 139 | "projects/angular-gauge-chart/tsconfig.spec.json" 140 | ], 141 | "exclude": ["**/node_modules/**"] 142 | } 143 | } 144 | } 145 | } 146 | }, 147 | "defaultProject": "test-proj" 148 | } 149 | -------------------------------------------------------------------------------- /browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # For IE 9-11 support, please uncomment the last line of the file and adjust as needed 5 | > 0.5% 6 | last 2 versions 7 | Firefox ESR 8 | not dead 9 | # IE 9-11 -------------------------------------------------------------------------------- /config/helpers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | var path = require('path') 5 | 6 | const EVENT = process.env.npm_lifecycle_event || '' 7 | 8 | /** 9 | * Helper functions. 10 | */ 11 | var ROOT = path.resolve(__dirname, '..') 12 | 13 | function hasProcessFlag(flag) { 14 | return process.argv.join('').indexOf(flag) > -1 15 | } 16 | 17 | function hasNpmFlag(flag) { 18 | return EVENT.includes(flag) 19 | } 20 | 21 | function isWebpackDevServer() { 22 | return process.argv[1] && !!/webpack-dev-server/.exec(process.argv[1]) 23 | } 24 | 25 | var root = path.join.bind(path, ROOT) 26 | 27 | exports.hasProcessFlag = hasProcessFlag 28 | exports.hasNpmFlag = hasNpmFlag 29 | exports.isWebpackDevServer = isWebpackDevServer 30 | exports.root = root 31 | -------------------------------------------------------------------------------- /config/webpack.config.js: -------------------------------------------------------------------------------- 1 | // let path = require('path') 2 | let ExtractTextPlugin = require('extract-text-webpack-plugin') 3 | const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin 4 | let TypedocWebpackPlugin = require('typedoc-webpack-plugin') 5 | let DefinePlugin = require('webpack/lib/DefinePlugin') 6 | let UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin') 7 | let path = require('path') 8 | 9 | let helpers = require('./helpers') 10 | 11 | module.exports = function() { 12 | // let isProd = options.env === 'production' 13 | 14 | return { 15 | entry: './src/index.ts', 16 | output: { 17 | path: helpers.root('dist'), 18 | filename: 'bundle.js', 19 | library: 'AngularGaugeChart', 20 | libraryTarget: 'umd2', 21 | }, 22 | module: { 23 | rules: [ 24 | { 25 | test: /\.ts$/, 26 | use: [ 27 | { 28 | loader: 'awesome-typescript-loader', 29 | options: { 30 | configFileName: './tsconfig.json', 31 | transpileOnly: true, 32 | }, 33 | }, 34 | 'angular2-template-loader', 35 | ], 36 | exclude: [/\.(spec|e2e)\.ts$/], 37 | }, 38 | { 39 | test: /\.css$/, 40 | use: ExtractTextPlugin.extract({ 41 | use: 'css-loader', 42 | }), 43 | }, 44 | { 45 | test: /\.html$/, 46 | use: 'raw-loader', 47 | exclude: [helpers.root('src/index.html')], 48 | }, 49 | { 50 | test: /\.css$/, 51 | use: ['to-string-loader', 'css-loader'], 52 | }, 53 | { 54 | test: /\.scss$/, 55 | use: ['to-string-loader', 'css-loader', 'sass-loader'], 56 | }, 57 | ], 58 | }, 59 | externals: { 60 | '@angular/core': '@angular/core', 61 | 'gauge-chart': 'gauge-chart', 62 | tslib: 'tslib', 63 | }, 64 | resolve: { 65 | extensions: ['.ts', '.js', '.css', '.scss'], 66 | }, 67 | plugins: [ 68 | // new CheckerPlugin(), 69 | new TypedocWebpackPlugin({}, path.resolve(__dirname, '../src')), 70 | new DefinePlugin({ 71 | ENV: `'production'`, 72 | }), 73 | new UglifyJsPlugin({ 74 | comments: false, 75 | }), 76 | ], 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /dist/bundle.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@angular/core"),require("gauge-chart")):"function"==typeof define&&define.amd?define(["@angular/core","gauge-chart"],t):"object"==typeof exports?exports.AngularGaugeChart=t(require("@angular/core"),require("gauge-chart")):e.AngularGaugeChart=t(e["@angular/core"],e["gauge-chart"])}(this,function(e,t){return function(e){function t(o){if(n[o])return n[o].exports;var a=n[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}(n(3))},function(t,n){t.exports=e},function(e,t,n){"use strict";var o=this&&this.__decorate||function(e,t,n,o){var a,r=arguments.length,i=r<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,o);else for(var u=e.length-1;u>=0;u--)(a=e[u])&&(i=(r<3?a(i):r>3?a(t,n,i):a(t,n))||i);return r>3&&i&&Object.defineProperty(t,n,i),i};Object.defineProperty(t,"__esModule",{value:!0});var a=n(1),r=n(0),i=function(){function e(){}return e=o([a.NgModule({bootstrap:[r.GaugeChartComponent],declarations:[r.GaugeChartComponent],imports:[]})],e)}();t.GaugeChartModule=i},function(e,t,n){"use strict";var o=this&&this.__decorate||function(e,t,n,o){var a,r=arguments.length,i=r<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,o);else for(var u=e.length-1;u>=0;u--)(a=e[u])&&(i=(r<3?a(i):r>3?a(t,n,i):a(t,n))||i);return r>3&&i&&Object.defineProperty(t,n,i),i},a=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=n(9),u=function(){function e(){}return e.prototype.ngOnInit=function(){this.name&&(this.nameFont||(this.nameFont=""+Math.round(this.canvasWidth/15)),this.nameMargin=""+Math.round(+this.nameFont/4)),this.bottomLabel&&(this.bottomLabelFont||(this.bottomLabelFont=""+Math.round(this.canvasWidth/10)),this.bottomLabelMargin="-"+this.bottomLabelFont),this.optionsCheck()&&(this.element=this.gaugeArea.nativeElement,this.options.centralLabel=this.centralLabel,this.gaugeChart=i.gaugeChart(this.element,this.canvasWidth,this.options),this.gaugeChart.updateNeedle(this.needleValue))},e.prototype.optionsCheck=function(){return null==this.canvasWidth?(console.warn("gauge-chart warning: canvasWidth is not specified!"),!1):null==this.needleValue?(console.warn("gauge-chart warning: needleValue is not specified!"),!1):(null==this.centralLabel&&(this.centralLabel=""),!0)},e.prototype.ngOnChanges=function(e){e.needleValue&&!e.needleValue.firstChange&&e.needleValue.currentValue!==e.needleValue.previousValue&&(this.needleValue=e.needleValue.currentValue,this.gaugeChart.updateNeedle(this.needleValue)),e.centralLabel&&!e.centralLabel.firstChange&&e.centralLabel.currentValue!==e.centralLabel.previousValue&&(this.gaugeChart.removeGauge(),this.centralLabel=e.centralLabel.currentValue,this.options.centralLabel=this.centralLabel,this.gaugeChart=i.gaugeChart(this.element,this.canvasWidth,this.options),this.gaugeChart.updateNeedle(this.needleValue)),e.centralLabel&&!e.centralLabel.firstChange&&e.bottomLabel.currentValue!==e.bottomLabel.previousValue&&console.log(e.bottomLabel.currentValue)},o([r.ViewChild("gaugeArea"),a("design:type",Object)],e.prototype,"gaugeArea",void 0),o([r.Input(),a("design:type",Number)],e.prototype,"canvasWidth",void 0),o([r.Input(),a("design:type",Number)],e.prototype,"needleValue",void 0),o([r.Input(),a("design:type",String)],e.prototype,"centralLabel",void 0),o([r.Input(),a("design:type",Object)],e.prototype,"options",void 0),o([r.Input(),a("design:type",String)],e.prototype,"name",void 0),o([r.Input(),a("design:type",String)],e.prototype,"nameFont",void 0),o([r.Input(),a("design:type",String)],e.prototype,"bottomLabel",void 0),o([r.Input(),a("design:type",String)],e.prototype,"bottomLabelFont",void 0),e=o([r.Component({selector:"gauge-chart",template:n(7),styles:[n(8)]})],e)}();t.GaugeChartComponent=u},function(e,t,n){"use strict";function o(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}Object.defineProperty(t,"__esModule",{value:!0}),o(n(0)),o(n(2))},function(e,t,n){t=e.exports=n(6)(!1),t.push([e.i,'* {\n font-family: Roboto, "Helvetica Neue", sans-serif; }\n\n.gauge-chart {\n display: flex;\n flex-direction: column;\n text-align: center; }\n\n.gauge-chart__label {\n font-weight: bold; }\n',""])},function(e,t){function n(e,t){var n=e[1]||"",a=e[3];if(!a)return n;if(t&&"function"==typeof btoa){var r=o(a);return[n].concat(a.sources.map(function(e){return"/*# sourceURL="+a.sourceRoot+e+" */"})).concat([r]).join("\n")}return[n].join("\n")}function o(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var o=n(t,e);return t[2]?"@media "+t[2]+"{"+o+"}":o}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var o={},a=0;a { 4 | let page: AppPage 5 | 6 | beforeEach(() => { 7 | page = new AppPage() 8 | }) 9 | 10 | it('should display welcome message', () => { 11 | page.navigateTo() 12 | expect(page.getParagraphText()).toEqual('Welcome to test-proj!') 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor' 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get('/') 6 | } 7 | 8 | getParagraphText() { 9 | return element(by.css('app-root h1')).getText() 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": ["jasmine", "jasminewd2", "node"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /examples/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dll 3 | -------------------------------------------------------------------------------- /examples/app/app.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Angular 2 decorators and services 3 | */ 4 | import { Component, OnInit } from '@angular/core' 5 | 6 | /** 7 | * App Component 8 | * Top Level Component 9 | */ 10 | @Component({ 11 | selector: 'app', 12 | template: ` 13 | 18 | `, 19 | }) 20 | export class AppComponent implements OnInit { 21 | public canvasWidth: number 22 | public needleValue: number 23 | public centralLabel: string 24 | public options 25 | public bottomLabel = '24.0' 26 | 27 | ngOnInit() { 28 | this.canvasWidth = 300 29 | this.needleValue = 0 30 | // this.centralLabel = '' + this.needleValue 31 | this.options = { 32 | hasNeedle: true, 33 | needleColor: 'gray', 34 | needleUpdateSpeed: 1000, 35 | arcColors: ['rgb(44, 151, 222)', 'lightgray'], 36 | arcDelimiters: [30], 37 | rangeLabel: ['0', '100'], 38 | needleStartValue: 50, 39 | } 40 | 41 | setInterval(() => { 42 | this.bottomLabel = '' + (+this.bottomLabel + 10) + '.0' 43 | }, 2000) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /examples/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser' 2 | import { Component, NgModule } from '@angular/core' 3 | 4 | /* 5 | * Platform and Environment providers/directives/pipes 6 | */ 7 | import { ENV_PROVIDERS } from './environment' 8 | // App is our top level component 9 | import { GaugeChartComponent } from '../../src/gauge-chart' 10 | import { AppComponent } from './app.component' 11 | 12 | /** 13 | * `AppModule` is the main entry point into Angular2's bootstraping process 14 | */ 15 | @NgModule({ 16 | bootstrap: [AppComponent], 17 | declarations: [GaugeChartComponent, AppComponent], 18 | /** 19 | * Import Angular's modules. 20 | */ 21 | imports: [BrowserModule], 22 | /** 23 | * Expose our Services and Providers into Angular's dependency injection. 24 | */ 25 | providers: [ENV_PROVIDERS], 26 | }) 27 | export class AppModule {} 28 | -------------------------------------------------------------------------------- /examples/app/environment.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Angular 2 3 | */ 4 | import { enableDebugTools, disableDebugTools } from '@angular/platform-browser' 5 | import { ApplicationRef, enableProdMode } from '@angular/core' 6 | /** 7 | * Environment Providers 8 | */ 9 | let PROVIDERS: any[] = [ 10 | /** 11 | * Common env directives 12 | */ 13 | ] 14 | 15 | /** 16 | * Angular debug tools in the dev console 17 | * https://github.com/angular/angular/blob/86405345b781a9dc2438c0fbe3e9409245647019/TOOLS_JS.md 18 | */ 19 | let _decorateModuleRef = (value: T): T => { 20 | return value 21 | } 22 | 23 | if ('production' === ENV) { 24 | enableProdMode() 25 | 26 | /** 27 | * Production 28 | */ 29 | _decorateModuleRef = (modRef: any) => { 30 | disableDebugTools() 31 | 32 | return modRef 33 | } 34 | 35 | PROVIDERS = [ 36 | ...PROVIDERS, 37 | /** 38 | * Custom providers in production. 39 | */ 40 | ] 41 | } else { 42 | _decorateModuleRef = (modRef: any) => { 43 | const appRef = modRef.injector.get(ApplicationRef) 44 | const cmpRef = appRef.components[0] 45 | 46 | let _ng = ( window).ng 47 | enableDebugTools(cmpRef) 48 | ( window).ng.probe = _ng.probe 49 | ( window).ng.coreTokens = _ng.coreTokens 50 | return modRef 51 | } 52 | 53 | /** 54 | * Development 55 | */ 56 | PROVIDERS = [ 57 | ...PROVIDERS, 58 | /** 59 | * Custom providers in development. 60 | */ 61 | ] 62 | } 63 | 64 | export const decorateModuleRef = _decorateModuleRef 65 | 66 | export const ENV_PROVIDERS = [...PROVIDERS] 67 | -------------------------------------------------------------------------------- /examples/app/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * App 3 | */ 4 | export * from './app.module' 5 | -------------------------------------------------------------------------------- /examples/config/helpers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | var path = require('path') 5 | 6 | const EVENT = process.env.npm_lifecycle_event || '' 7 | 8 | /** 9 | * Helper functions. 10 | */ 11 | var ROOT = path.resolve(__dirname, '..') 12 | 13 | function hasProcessFlag(flag) { 14 | return process.argv.join('').indexOf(flag) > -1 15 | } 16 | 17 | function hasNpmFlag(flag) { 18 | return EVENT.includes(flag) 19 | } 20 | 21 | function isWebpackDevServer() { 22 | return process.argv[1] && !!/webpack-dev-server/.exec(process.argv[1]) 23 | } 24 | 25 | var root = path.join.bind(path, ROOT) 26 | 27 | exports.hasProcessFlag = hasProcessFlag 28 | exports.hasNpmFlag = hasNpmFlag 29 | exports.isWebpackDevServer = isWebpackDevServer 30 | exports.root = root 31 | -------------------------------------------------------------------------------- /examples/config/html-elements-plugin/index.js: -------------------------------------------------------------------------------- 1 | function HtmlElementsPlugin(locations) { 2 | this.locations = locations 3 | } 4 | 5 | HtmlElementsPlugin.prototype.apply = function(compiler) { 6 | var self = this 7 | compiler.plugin('compilation', function(compilation) { 8 | compilation.options.htmlElements = compilation.options.htmlElements || {} 9 | 10 | compilation.plugin('html-webpack-plugin-before-html-generation', function( 11 | htmlPluginData, 12 | callback, 13 | ) { 14 | const locations = self.locations 15 | 16 | if (locations) { 17 | const publicPath = htmlPluginData.assets.publicPath 18 | 19 | Object.getOwnPropertyNames(locations).forEach(function(loc) { 20 | compilation.options.htmlElements[loc] = getHtmlElementString( 21 | locations[loc], 22 | publicPath, 23 | ) 24 | }) 25 | } 26 | 27 | callback(null, htmlPluginData) 28 | }) 29 | }) 30 | } 31 | 32 | const RE_ENDS_WITH_BS = /\/$/ 33 | 34 | /** 35 | * Create an HTML tag with attributes from a map. 36 | * 37 | * Example: 38 | * createTag('link', { rel: "manifest", href: "/assets/manifest.json" }) 39 | * // 40 | * @param tagName The name of the tag 41 | * @param attrMap A Map of attribute names (keys) and their values. 42 | * @param publicPath a path to add to eh start of static asset url 43 | * @returns {string} 44 | */ 45 | function createTag(tagName, attrMap, publicPath) { 46 | publicPath = publicPath || '' 47 | 48 | /** 49 | * Add trailing slash if we have a publicPath and it doesn't have one. 50 | */ 51 | if (publicPath && !RE_ENDS_WITH_BS.test(publicPath)) { 52 | publicPath += '/' 53 | } 54 | 55 | const attributes = Object.getOwnPropertyNames(attrMap) 56 | .filter(function(name) { 57 | return name[0] !== '=' 58 | }) 59 | .map(function(name) { 60 | var value = attrMap[name] 61 | 62 | if (publicPath) { 63 | /** 64 | * Check if we have explicit instruction, use it if so (e.g: =herf: false) 65 | * if no instruction, use public path if it's href attribute. 66 | */ 67 | const usePublicPath = attrMap.hasOwnProperty('=' + name) 68 | ? !!attrMap['=' + name] 69 | : name === 'href' 70 | 71 | if (usePublicPath) { 72 | /** 73 | * Remove a starting trailing slash if the value has one so we wont have // 74 | */ 75 | value = publicPath + (value[0] === '/' ? value.substr(1) : value) 76 | } 77 | } 78 | 79 | return `${name}="${value}"` 80 | }) 81 | 82 | const closingTag = tagName === 'script' ? '' : '' 83 | 84 | return `<${tagName} ${attributes.join(' ')}>${closingTag}` 85 | } 86 | 87 | /** 88 | * Returns a string representing all html elements defined in a data source. 89 | * 90 | * Example: 91 | * 92 | * const ds = { 93 | * link: [ 94 | * { rel: "apple-touch-icon", sizes: "57x57", href: "/assets/icon/apple-icon-57x57.png" } 95 | * ], 96 | * meta: [ 97 | * { name: "msapplication-TileColor", content: "#00bcd4" } 98 | * ] 99 | * } 100 | * 101 | * getHeadTags(ds); 102 | * // "" 103 | * "" 104 | * 105 | * @returns {string} 106 | */ 107 | function getHtmlElementString(dataSource, publicPath) { 108 | return Object.getOwnPropertyNames(dataSource) 109 | .map(function(name) { 110 | if (Array.isArray(dataSource[name])) { 111 | return dataSource[name].map(function(attrs) { 112 | return createTag(name, attrs, publicPath) 113 | }) 114 | } else { 115 | return [createTag(name, dataSource[name], publicPath)] 116 | } 117 | }) 118 | .reduce(function(arr, curr) { 119 | return arr.concat(curr) 120 | }, []) 121 | .join('\n\t') 122 | } 123 | module.exports = HtmlElementsPlugin 124 | -------------------------------------------------------------------------------- /examples/config/webpack.common.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | 5 | const webpack = require('webpack') 6 | const helpers = require('./helpers') 7 | 8 | /** 9 | * Webpack Plugins 10 | * 11 | * problem with copy-webpack-plugin 12 | */ 13 | const NormalModuleReplacementPlugin = require('webpack/lib/NormalModuleReplacementPlugin') 14 | const ContextReplacementPlugin = require('webpack/lib/ContextReplacementPlugin') 15 | const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin 16 | const HtmlElementsPlugin = require('./html-elements-plugin') 17 | const HtmlWebpackPlugin = require('html-webpack-plugin') 18 | const InlineManifestWebpackPlugin = require('inline-manifest-webpack-plugin') 19 | const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin') 20 | const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin') 21 | const ngcWebpack = require('ngc-webpack') 22 | 23 | /** 24 | * Webpack Constants 25 | */ 26 | const AOT = process.env.BUILD_AOT || helpers.hasNpmFlag('aot') 27 | const METADATA = { 28 | title: 'Angular Gauge Chart', 29 | baseUrl: '/', 30 | isDevServer: helpers.isWebpackDevServer(), 31 | } 32 | 33 | /** 34 | * Webpack configuration 35 | * 36 | * See: http://webpack.github.io/docs/configuration.html#cli 37 | */ 38 | module.exports = function(options) { 39 | isProd = options.env === 'production' 40 | return { 41 | /** 42 | * Cache generated modules and chunks to improve performance for multiple incremental builds. 43 | * This is enabled by default in watch mode. 44 | * You can pass false to disable it. 45 | * 46 | * See: http://webpack.github.io/docs/configuration.html#cache 47 | */ 48 | //cache: false, 49 | 50 | /** 51 | * The entry point for the bundle 52 | * Our Angular.js app 53 | * 54 | * See: http://webpack.github.io/docs/configuration.html#entry 55 | */ 56 | entry: { 57 | polyfills: './examples/polyfills.browser.ts', 58 | main: AOT 59 | ? './examples/main.browser.aot.ts' 60 | : './examples/main.browser.ts', 61 | }, 62 | 63 | /** 64 | * Options affecting the resolving of modules. 65 | * 66 | * See: http://webpack.github.io/docs/configuration.html#resolve 67 | */ 68 | resolve: { 69 | /** 70 | * An array of extensions that should be used to resolve modules. 71 | * 72 | * See: http://webpack.github.io/docs/configuration.html#resolve-extensions 73 | */ 74 | extensions: ['.ts', '.js', '.json'], 75 | 76 | /** 77 | * An array of directory names to be resolved to the current directory 78 | */ 79 | modules: [helpers.root('src'), helpers.root('../node_modules')], 80 | }, 81 | 82 | /** 83 | * Options affecting the normal modules. 84 | * 85 | * See: http://webpack.github.io/docs/configuration.html#module 86 | */ 87 | module: { 88 | rules: [ 89 | /** 90 | * Typescript loader support for .ts 91 | * 92 | * Component Template/Style integration using `angular2-template-loader` 93 | * Angular 2 lazy loading (async routes) via `ng-router-loader` 94 | * 95 | * `ng-router-loader` expects vanilla JavaScript code, not TypeScript code. This is why the 96 | * order of the loader matter. 97 | * 98 | * See: https://github.com/s-panferov/awesome-typescript-loader 99 | * See: https://github.com/TheLarkInn/angular2-template-loader 100 | * See: https://github.com/shlomiassaf/ng-router-loader 101 | */ 102 | { 103 | test: /\.ts$/, 104 | use: [ 105 | { 106 | /** 107 | * MAKE SURE TO CHAIN VANILLA JS CODE, I.E. TS COMPILATION OUTPUT. 108 | */ 109 | loader: 'ng-router-loader', 110 | options: { 111 | loader: 'async-import', 112 | genDir: 'compiled', 113 | aot: AOT, 114 | }, 115 | }, 116 | { 117 | loader: 'awesome-typescript-loader', 118 | options: { 119 | configFileName: './tsconfig.json', 120 | }, 121 | }, 122 | { 123 | loader: 'angular2-template-loader', 124 | }, 125 | ], 126 | exclude: [/\.(spec|e2e)\.ts$/], 127 | }, 128 | 129 | /** 130 | * Json loader support for *.json files. 131 | * 132 | * See: https://github.com/webpack/json-loader 133 | */ 134 | { 135 | test: /\.json$/, 136 | use: 'json-loader', 137 | }, 138 | 139 | /** 140 | * To string and css loader support for *.css files (from Angular components) 141 | * Returns file content as string 142 | * 143 | */ 144 | { 145 | test: /\.css$/, 146 | use: ['to-string-loader', 'css-loader'], 147 | }, 148 | 149 | /** 150 | * To string and sass loader support for *.scss files (from Angular components) 151 | * Returns compiled css content as string 152 | * 153 | */ 154 | { 155 | test: /\.scss$/, 156 | use: ['to-string-loader', 'css-loader', 'sass-loader'], 157 | }, 158 | 159 | /** 160 | * Raw loader support for *.html 161 | * Returns file content as string 162 | * 163 | * See: https://github.com/webpack/raw-loader 164 | */ 165 | { 166 | test: /\.html$/, 167 | use: 'raw-loader', 168 | exclude: [helpers.root('index.html')], 169 | }, 170 | 171 | /** 172 | * File loader for supporting images, for example, in CSS files. 173 | */ 174 | { 175 | test: /\.(jpg|png|gif)$/, 176 | use: 'file-loader', 177 | }, 178 | 179 | /* File loader for supporting fonts, for example, in CSS files. 180 | */ 181 | { 182 | test: /\.(eot|woff2?|svg|ttf)([\?]?.*)$/, 183 | use: 'file-loader', 184 | }, 185 | ], 186 | }, 187 | 188 | /** 189 | * Add additional plugins to the compiler. 190 | * 191 | * See: http://webpack.github.io/docs/configuration.html#plugins 192 | */ 193 | plugins: [ 194 | /** 195 | * Plugin: ForkCheckerPlugin 196 | * Description: Do type checking in a separate process, so webpack don't need to wait. 197 | * 198 | * See: https://github.com/s-panferov/awesome-typescript-loader#forkchecker-boolean-defaultfalse 199 | */ 200 | new CheckerPlugin(), 201 | /** 202 | * Plugin: HtmlWebpackPlugin 203 | * Description: Simplifies creation of HTML files to serve your webpack bundles. 204 | * This is especially useful for webpack bundles that include a hash in the filename 205 | * which changes every compilation. 206 | * 207 | * See: https://github.com/ampedandwired/html-webpack-plugin 208 | */ 209 | new HtmlWebpackPlugin({ 210 | template: 'examples/index.html', 211 | title: METADATA.title, 212 | chunksSortMode: 'dependency', 213 | metadata: METADATA, 214 | inject: 'head', 215 | }), 216 | 217 | /** 218 | * Plugin: ScriptExtHtmlWebpackPlugin 219 | * Description: Enhances html-webpack-plugin functionality 220 | * with different deployment options for your scripts including: 221 | * 222 | * See: https://github.com/numical/script-ext-html-webpack-plugin 223 | */ 224 | new ScriptExtHtmlWebpackPlugin({ 225 | defaultAttribute: 'defer', 226 | }), 227 | 228 | /** 229 | * Plugin LoaderOptionsPlugin (experimental) 230 | * 231 | * See: https://gist.github.com/sokra/27b24881210b56bbaff7 232 | */ 233 | new LoaderOptionsPlugin({}), 234 | 235 | /** 236 | * Fix Angular 2 237 | */ 238 | new NormalModuleReplacementPlugin( 239 | /facade(\\|\/)async/, 240 | helpers.root('node_modules/@angular/core/src/facade/async.js'), 241 | ), 242 | new NormalModuleReplacementPlugin( 243 | /facade(\\|\/)collection/, 244 | helpers.root('node_modules/@angular/core/src/facade/collection.js'), 245 | ), 246 | new NormalModuleReplacementPlugin( 247 | /facade(\\|\/)errors/, 248 | helpers.root('node_modules/@angular/core/src/facade/errors.js'), 249 | ), 250 | new NormalModuleReplacementPlugin( 251 | /facade(\\|\/)lang/, 252 | helpers.root('node_modules/@angular/core/src/facade/lang.js'), 253 | ), 254 | new NormalModuleReplacementPlugin( 255 | /facade(\\|\/)math/, 256 | helpers.root('node_modules/@angular/core/src/facade/math.js'), 257 | ), 258 | 259 | new ngcWebpack.NgcWebpackPlugin({ 260 | disabled: !AOT, 261 | tsConfig: helpers.root('../tsconfig.json'), 262 | resourceOverride: helpers.root('config/resource-override.js'), 263 | }), 264 | 265 | /** 266 | * Plugin: InlineManifestWebpackPlugin 267 | * Inline Webpack's manifest.js in index.html 268 | * 269 | * https://github.com/szrenwei/inline-manifest-webpack-plugin 270 | */ 271 | new InlineManifestWebpackPlugin(), 272 | ], 273 | 274 | /** 275 | * Include polyfills or mocks for various node stuff 276 | * Description: Node configuration 277 | * 278 | * See: https://webpack.github.io/docs/configuration.html#node 279 | */ 280 | node: { 281 | global: true, 282 | crypto: 'empty', 283 | process: true, 284 | module: false, 285 | clearImmediate: false, 286 | setImmediate: false, 287 | }, 288 | } 289 | } 290 | -------------------------------------------------------------------------------- /examples/config/webpack.dev.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | 5 | const helpers = require('./helpers') 6 | const webpackMerge = require('webpack-merge') // used to merge webpack configs 7 | const webpackMergeDll = webpackMerge.strategy({ plugins: 'replace' }) 8 | const commonConfig = require('./webpack.common.js') // the settings that are common to prod and dev 9 | 10 | /** 11 | * Webpack Plugins 12 | */ 13 | const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin') 14 | const DefinePlugin = require('webpack/lib/DefinePlugin') 15 | const NamedModulesPlugin = require('webpack/lib/NamedModulesPlugin') 16 | const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin') 17 | 18 | /** 19 | * Webpack Constants 20 | */ 21 | const ENV = (process.env.ENV = process.env.NODE_ENV = 'development') 22 | const HOST = process.env.HOST || 'localhost' 23 | const PORT = process.env.PORT || 3000 24 | const METADATA = webpackMerge(commonConfig({ env: ENV }).metadata, { 25 | host: HOST, 26 | port: PORT, 27 | ENV: ENV, 28 | }) 29 | 30 | const DllBundlesPlugin = require('webpack-dll-bundles-plugin').DllBundlesPlugin 31 | 32 | /** 33 | * Webpack configuration 34 | * 35 | * See: http://webpack.github.io/docs/configuration.html#cli 36 | */ 37 | module.exports = function(options) { 38 | return webpackMerge(commonConfig({ env: ENV }), { 39 | /** 40 | * Developer tool to enhance debugging 41 | * 42 | * See: http://webpack.github.io/docs/configuration.html#devtool 43 | * See: https://github.com/webpack/docs/wiki/build-performance#sourcemaps 44 | */ 45 | devtool: 'cheap-module-source-map', 46 | 47 | /** 48 | * Options affecting the output of the compilation. 49 | * 50 | * See: http://webpack.github.io/docs/configuration.html#output 51 | */ 52 | output: { 53 | /** 54 | * The output directory as absolute path (required). 55 | * 56 | * See: http://webpack.github.io/docs/configuration.html#output-path 57 | */ 58 | path: helpers.root('dist'), 59 | 60 | /** 61 | * Specifies the name of each output file on disk. 62 | * IMPORTANT: You must not specify an absolute path here! 63 | * 64 | * See: http://webpack.github.io/docs/configuration.html#output-filename 65 | */ 66 | filename: '[name].bundle.js', 67 | 68 | /** 69 | * The filename of the SourceMaps for the JavaScript files. 70 | * They are inside the output.path directory. 71 | * 72 | * See: http://webpack.github.io/docs/configuration.html#output-sourcemapfilename 73 | */ 74 | sourceMapFilename: '[file].map', 75 | 76 | /** The filename of non-entry chunks as relative path 77 | * inside the output.path directory. 78 | * 79 | * See: http://webpack.github.io/docs/configuration.html#output-chunkfilename 80 | */ 81 | chunkFilename: '[id].chunk.js', 82 | 83 | library: 'ac_[name]', 84 | libraryTarget: 'var', 85 | }, 86 | 87 | plugins: [ 88 | /** 89 | * Plugin: DefinePlugin 90 | * Description: Define free variables. 91 | * Useful for having development builds with debug logging or adding global constants. 92 | * 93 | * Environment helpers 94 | * 95 | * See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin 96 | * 97 | * NOTE: when adding more properties, make sure you include them in custom-typings.d.ts 98 | */ 99 | new DefinePlugin({ 100 | ENV: JSON.stringify(METADATA.ENV), 101 | 'process.env': { 102 | ENV: JSON.stringify(METADATA.ENV), 103 | NODE_ENV: JSON.stringify(METADATA.ENV), 104 | }, 105 | }), 106 | 107 | new DllBundlesPlugin({ 108 | bundles: { 109 | polyfills: [ 110 | 'core-js', 111 | { 112 | name: 'zone.js', 113 | path: 'zone.js/dist/zone.js', 114 | }, 115 | { 116 | name: 'zone.js', 117 | path: 'zone.js/dist/long-stack-trace-zone.js', 118 | }, 119 | ], 120 | vendor: [ 121 | '@angular/platform-browser', 122 | '@angular/platform-browser-dynamic', 123 | '@angular/core', 124 | '@angular/common', 125 | '@angular/forms', 126 | '@angular/http', 127 | '@angular/router', 128 | 'rxjs', 129 | ], 130 | }, 131 | dllDir: helpers.root('dll'), 132 | webpackConfig: webpackMergeDll(commonConfig({ env: ENV }), { 133 | devtool: 'cheap-module-source-map', 134 | plugins: [], 135 | }), 136 | }), 137 | 138 | /** 139 | * Plugin: AddAssetHtmlPlugin 140 | * Description: Adds the given JS or CSS file to the files 141 | * Webpack knows about, and put it into the list of assets 142 | * html-webpack-plugin injects into the generated html. 143 | * 144 | * See: https://github.com/SimenB/add-asset-html-webpack-plugin 145 | */ 146 | new AddAssetHtmlPlugin([ 147 | { 148 | filepath: helpers.root( 149 | `dll/${DllBundlesPlugin.resolveFile('polyfills')}`, 150 | ), 151 | }, 152 | { 153 | filepath: helpers.root( 154 | `dll/${DllBundlesPlugin.resolveFile('vendor')}`, 155 | ), 156 | }, 157 | ]), 158 | 159 | /** 160 | * Plugin: NamedModulesPlugin (experimental) 161 | * Description: Uses file names as module name. 162 | * 163 | * See: https://github.com/webpack/webpack/commit/a04ffb928365b19feb75087c63f13cadfc08e1eb 164 | */ 165 | // new NamedModulesPlugin(), 166 | 167 | /** 168 | * Plugin LoaderOptionsPlugin (experimental) 169 | * 170 | * See: https://gist.github.com/sokra/27b24881210b56bbaff7 171 | */ 172 | new LoaderOptionsPlugin({ 173 | debug: true, 174 | options: {}, 175 | }), 176 | ], 177 | 178 | /** 179 | * Webpack Development Server configuration 180 | * Description: The webpack-dev-server is a little node.js Express server. 181 | * The server emits information about the compilation state to the client, 182 | * which reacts to those events. 183 | * 184 | * See: https://webpack.github.io/docs/webpack-dev-server.html 185 | */ 186 | devServer: { 187 | port: METADATA.port, 188 | host: METADATA.host, 189 | historyApiFallback: true, 190 | watchOptions: { 191 | aggregateTimeout: 300, 192 | poll: 1000, 193 | }, 194 | }, 195 | 196 | /** 197 | * Include polyfills or mocks for various node stuff 198 | * Description: Node configuration 199 | * 200 | * See: https://webpack.github.io/docs/configuration.html#node 201 | */ 202 | node: { 203 | global: true, 204 | crypto: 'empty', 205 | process: true, 206 | module: false, 207 | clearImmediate: false, 208 | setImmediate: false, 209 | }, 210 | }) 211 | } 212 | -------------------------------------------------------------------------------- /examples/custom-typings.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Custom Type Definitions 3 | * When including 3rd party modules you also need to include the type definition for the module 4 | * if they don't provide one within the module. You can try to install it with @types 5 | 6 | npm install @types/node 7 | npm install @types/lodash 8 | 9 | * If you can't find the type definition in the registry we can make an ambient/global definition in 10 | * this file for now. For example 11 | 12 | declare module 'my-module' { 13 | export function doesSomething(value: string): string; 14 | } 15 | 16 | * If you are using a CommonJS module that is using module.exports then you will have to write your 17 | * types using export = yourObjectOrFunction with a namespace above it 18 | * notice how we have to create a namespace that is equal to the function we're 19 | * assigning the export to 20 | 21 | declare module 'jwt-decode' { 22 | function jwtDecode(token: string): any; 23 | namespace jwtDecode {} 24 | export = jwtDecode; 25 | } 26 | 27 | * 28 | * If you're prototying and you will fix the types later you can also declare it as type any 29 | * 30 | 31 | declare var assert: any; 32 | declare var _: any; 33 | declare var $: any; 34 | 35 | * 36 | * If you're importing a module that uses Node.js modules which are CommonJS you need to import as 37 | * in the files such as main.browser.ts or any file within app/ 38 | * 39 | 40 | import * as _ from 'lodash' 41 | 42 | * You can include your type definitions in this file until you create one for the @types 43 | * 44 | */ 45 | 46 | // support NodeJS modules without type definitions 47 | declare module '*' 48 | 49 | /* 50 | // for legacy tslint etc to understand rename 'modern-lru' with your package 51 | // then comment out `declare module '*';`. For each new module copy/paste 52 | // this method of creating an `any` module type definition 53 | declare module 'modern-lru' { 54 | let x: any; 55 | export = x; 56 | } 57 | */ 58 | 59 | // Extra variables that live on Global that will be replaced by webpack DefinePlugin 60 | declare var ENV: string 61 | 62 | interface GlobalEnvironment { 63 | ENV: string 64 | } 65 | 66 | interface Es6PromiseLoader { 67 | (id: string): (exportName?: string) => Promise 68 | } 69 | 70 | type FactoryEs6PromiseLoader = () => Es6PromiseLoader 71 | type FactoryPromise = () => Promise 72 | 73 | type AsyncRoutes = { 74 | [component: string]: 75 | | Es6PromiseLoader 76 | | Function 77 | | FactoryEs6PromiseLoader 78 | | FactoryPromise 79 | } 80 | 81 | type IdleCallbacks = 82 | | Es6PromiseLoader 83 | | Function 84 | | FactoryEs6PromiseLoader 85 | | FactoryPromise 86 | 87 | interface WebpackModule { 88 | hot: { 89 | data?: any 90 | idle: any 91 | accept( 92 | dependencies?: string | string[], 93 | callback?: (updatedDependencies?: any) => void, 94 | ): void 95 | decline(deps?: any | string | string[]): void 96 | dispose(callback?: (data?: any) => void): void 97 | addDisposeHandler(callback?: (data?: any) => void): void 98 | removeDisposeHandler(callback?: (data?: any) => void): void 99 | check( 100 | autoApply?: any, 101 | callback?: (err?: Error, outdatedModules?: any[]) => void, 102 | ): void 103 | apply( 104 | options?: any, 105 | callback?: (err?: Error, outdatedModules?: any[]) => void, 106 | ): void 107 | status(callback?: (status?: string) => void): void | string 108 | removeStatusHandler(callback?: (status?: string) => void): void 109 | } 110 | } 111 | 112 | interface WebpackRequire { 113 | (id: string): any 114 | (paths: string[], callback: (...modules: any[]) => void): void 115 | ensure( 116 | ids: string[], 117 | callback: (req: WebpackRequire) => void, 118 | chunkName?: string, 119 | ): void 120 | context( 121 | directory: string, 122 | useSubDirectories?: boolean, 123 | regExp?: RegExp, 124 | ): WebpackContext 125 | } 126 | 127 | interface WebpackContext extends WebpackRequire { 128 | keys(): string[] 129 | } 130 | 131 | interface ErrorStackTraceLimit { 132 | stackTraceLimit: number 133 | } 134 | 135 | // Extend typings 136 | interface NodeRequire extends WebpackRequire {} 137 | interface ErrorConstructor extends ErrorStackTraceLimit {} 138 | interface NodeRequireFunction extends Es6PromiseLoader {} 139 | interface NodeModule extends WebpackModule {} 140 | interface Global extends GlobalEnvironment {} 141 | -------------------------------------------------------------------------------- /examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 12 | 13 | 14 | 15 | <%= htmlWebpackPlugin.files.webpackManifest %> 16 | 17 | 18 | 19 | 20 | 21 | 22 | Loading... 23 | 24 | 25 | <% if (htmlWebpackPlugin.options.metadata.isDevServer) { %> 26 | 27 | 28 | <% } %> 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /examples/main.browser.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Angular bootstrapping 3 | */ 4 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic' 5 | /** 6 | * App Module 7 | * our top level module that holds all of our components 8 | */ 9 | import { AppModule } from './app' 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | -------------------------------------------------------------------------------- /examples/polyfills.browser.ts: -------------------------------------------------------------------------------- 1 | // TODO(gdi2290): switch to DLLs 2 | 3 | /** 4 | * Polyfills 5 | */ 6 | 7 | /* import 'ie-shim'; */ /* Internet Explorer 9 support */ 8 | 9 | /* import 'core-js/es6'; */ 10 | 11 | /** 12 | * Added parts of es6 which are necessary for your project or your browser support requirements. 13 | */ 14 | import 'core-js/es6/symbol' 15 | import 'core-js/es6/object' 16 | import 'core-js/es6/function' 17 | import 'core-js/es6/parse-int' 18 | import 'core-js/es6/parse-float' 19 | import 'core-js/es6/number' 20 | import 'core-js/es6/math' 21 | import 'core-js/es6/string' 22 | import 'core-js/es6/date' 23 | import 'core-js/es6/array' 24 | import 'core-js/es6/regexp' 25 | import 'core-js/es6/map' 26 | import 'core-js/es6/set' 27 | import 'core-js/es6/weak-map' 28 | import 'core-js/es6/weak-set' 29 | import 'core-js/es6/typed' 30 | import 'core-js/es6/reflect' 31 | /** 32 | * See issue https://github.com/AngularClass/angular2-webpack-starter/issues/709 33 | */ 34 | /* import 'core-js/es6/promise'; */ 35 | 36 | import 'core-js/es7/reflect' 37 | import 'zone.js/dist/zone' 38 | 39 | if ('production' === ENV) { 40 | // Production 41 | } else { 42 | // Development 43 | Error.stackTraceLimit = Infinity 44 | 45 | /* tslint:disable no-var-requires */ 46 | require('zone.js/dist/long-stack-trace-zone') 47 | } 48 | -------------------------------------------------------------------------------- /img/gauge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/greetclock/angular-gauge-chart/7a334b7cde356522461935fc7101e9de0110d0ed/img/gauge.png -------------------------------------------------------------------------------- /img/gauges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/greetclock/angular-gauge-chart/7a334b7cde356522461935fc7101e9de0110d0ed/img/gauges.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-proj", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "ng": "ng", 6 | "start": "ng serve", 7 | "build": "ng build", 8 | "test": "ng test", 9 | "lint": "ng lint", 10 | "e2e": "ng e2e", 11 | "precommit": "lint-staged", 12 | "public-publish": "ng build angular-gauge-chart && cd dist/angular-gauge-chart && npm publish" 13 | }, 14 | "dependencies": { 15 | "@angular/animations": "^8.2.7", 16 | "@angular/common": "^8.2.7", 17 | "@angular/compiler": "^8.2.7", 18 | "@angular/compiler-cli": "^8.2.7", 19 | "@angular/core": "^8.2.7", 20 | "@angular/forms": "^8.2.7", 21 | "@angular/platform-browser": "^8.2.7", 22 | "@angular/platform-browser-dynamic": "^8.2.7", 23 | "@angular/router": "^8.2.7", 24 | "core-js": "^2.6.9", 25 | "gauge-chart": "^0.5.3", 26 | "rxjs": "^6.5.3", 27 | "zone.js": "~0.9.1" 28 | }, 29 | "devDependencies": { 30 | "@angular-devkit/build-angular": "~0.802.2", 31 | "@angular-devkit/build-ng-packagr": "~0.802.2", 32 | "@angular/cli": "~8.3.5", 33 | "@angular/language-service": "^8.2.7", 34 | "@types/jasmine": "~3.3.16", 35 | "@types/jasminewd2": "~2.0.6", 36 | "@types/node": "~11.11.8", 37 | "codelyzer": "^5.1.0", 38 | "husky": "^1.3.1", 39 | "jasmine-core": "~3.3.0", 40 | "jasmine-spec-reporter": "~4.2.1", 41 | "karma": "~4.0.1", 42 | "karma-chrome-launcher": "~2.2.0", 43 | "karma-coverage-istanbul-reporter": "~2.0.6", 44 | "karma-jasmine": "~2.0.1", 45 | "karma-jasmine-html-reporter": "^1.4.0", 46 | "lint-staged": "^8.2.1", 47 | "ng-packagr": "^5.3.0", 48 | "prettier": "^1.16.4", 49 | "protractor": "~5.4.2", 50 | "ts-node": "~8.0.3", 51 | "tsickle": "^0.36.0", 52 | "tslib": "^1.10.0", 53 | "tslint": "~5.14.0", 54 | "typescript": "~3.5.3" 55 | }, 56 | "lint-staged": { 57 | "*.{js,json,css}": [ 58 | "prettier --write", 59 | "git add" 60 | ], 61 | "*.ts": [ 62 | "prettier --write", 63 | "tslint --fix -c ./tslint.json 'src/**/*.ts'", 64 | "git add" 65 | ] 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "trailingComma": "all" 5 | } -------------------------------------------------------------------------------- /projects/angular-gauge-chart/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage-istanbul-reporter'), 13 | require('@angular-devkit/build-angular/plugins/karma'), 14 | ], 15 | client: { 16 | clearContext: false, // leave Jasmine Spec Runner output visible in browser 17 | }, 18 | coverageIstanbulReporter: { 19 | dir: require('path').join(__dirname, '../../coverage'), 20 | reports: ['html', 'lcovonly'], 21 | fixWebpackSourcePaths: true, 22 | }, 23 | reporters: ['progress', 'kjhtml'], 24 | port: 9876, 25 | colors: true, 26 | logLevel: config.LOG_INFO, 27 | autoWatch: true, 28 | browsers: ['Chrome'], 29 | singleRun: false, 30 | }) 31 | } 32 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/angular-gauge-chart", 4 | "deleteDestPath": false, 5 | "lib": { 6 | "entryFile": "src/public_api.ts" 7 | }, 8 | "whitelistedNonPeerDependencies": ["gauge-chart"] 9 | } 10 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/ng-package.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/angular-gauge-chart", 4 | "lib": { 5 | "entryFile": "src/public_api.ts" 6 | }, 7 | "whitelistedNonPeerDependencies": ["gauge-chart"] 8 | } 9 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-gauge-chart", 3 | "version": "0.7.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@samverschueren/stream-to-observable": { 8 | "version": "0.3.0", 9 | "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", 10 | "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", 11 | "dev": true, 12 | "requires": { 13 | "any-observable": "^0.3.0" 14 | } 15 | }, 16 | "ansi-escapes": { 17 | "version": "1.4.0", 18 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", 19 | "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", 20 | "dev": true 21 | }, 22 | "ansi-regex": { 23 | "version": "3.0.0", 24 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 25 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 26 | "dev": true 27 | }, 28 | "ansi-styles": { 29 | "version": "3.2.1", 30 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 31 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 32 | "dev": true, 33 | "requires": { 34 | "color-convert": "^1.9.0" 35 | } 36 | }, 37 | "any-observable": { 38 | "version": "0.3.0", 39 | "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", 40 | "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", 41 | "dev": true 42 | }, 43 | "app-root-path": { 44 | "version": "2.1.0", 45 | "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", 46 | "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", 47 | "dev": true 48 | }, 49 | "argparse": { 50 | "version": "1.0.10", 51 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 52 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 53 | "dev": true, 54 | "requires": { 55 | "sprintf-js": "~1.0.2" 56 | } 57 | }, 58 | "arr-diff": { 59 | "version": "4.0.0", 60 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 61 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 62 | "dev": true 63 | }, 64 | "arr-flatten": { 65 | "version": "1.1.0", 66 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 67 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 68 | "dev": true 69 | }, 70 | "arr-union": { 71 | "version": "3.1.0", 72 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 73 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 74 | "dev": true 75 | }, 76 | "array-unique": { 77 | "version": "0.3.2", 78 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 79 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 80 | "dev": true 81 | }, 82 | "assign-symbols": { 83 | "version": "1.0.0", 84 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 85 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 86 | "dev": true 87 | }, 88 | "atob": { 89 | "version": "2.1.1", 90 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", 91 | "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", 92 | "dev": true 93 | }, 94 | "babel-code-frame": { 95 | "version": "6.26.0", 96 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 97 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 98 | "dev": true, 99 | "requires": { 100 | "chalk": "^1.1.3", 101 | "esutils": "^2.0.2", 102 | "js-tokens": "^3.0.2" 103 | }, 104 | "dependencies": { 105 | "ansi-styles": { 106 | "version": "2.2.1", 107 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 108 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 109 | "dev": true 110 | }, 111 | "chalk": { 112 | "version": "1.1.3", 113 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 114 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 115 | "dev": true, 116 | "requires": { 117 | "ansi-styles": "^2.2.1", 118 | "escape-string-regexp": "^1.0.2", 119 | "has-ansi": "^2.0.0", 120 | "strip-ansi": "^3.0.0", 121 | "supports-color": "^2.0.0" 122 | } 123 | }, 124 | "supports-color": { 125 | "version": "2.0.0", 126 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 127 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 128 | "dev": true 129 | } 130 | } 131 | }, 132 | "balanced-match": { 133 | "version": "1.0.0", 134 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 135 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 136 | "dev": true 137 | }, 138 | "base": { 139 | "version": "0.11.2", 140 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 141 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 142 | "dev": true, 143 | "requires": { 144 | "cache-base": "^1.0.1", 145 | "class-utils": "^0.3.5", 146 | "component-emitter": "^1.2.1", 147 | "define-property": "^1.0.0", 148 | "isobject": "^3.0.1", 149 | "mixin-deep": "^1.2.0", 150 | "pascalcase": "^0.1.1" 151 | }, 152 | "dependencies": { 153 | "define-property": { 154 | "version": "1.0.0", 155 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 156 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 157 | "dev": true, 158 | "requires": { 159 | "is-descriptor": "^1.0.0" 160 | } 161 | }, 162 | "is-accessor-descriptor": { 163 | "version": "1.0.0", 164 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 165 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 166 | "dev": true, 167 | "requires": { 168 | "kind-of": "^6.0.0" 169 | } 170 | }, 171 | "is-data-descriptor": { 172 | "version": "1.0.0", 173 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 174 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 175 | "dev": true, 176 | "requires": { 177 | "kind-of": "^6.0.0" 178 | } 179 | }, 180 | "is-descriptor": { 181 | "version": "1.0.2", 182 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 183 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 184 | "dev": true, 185 | "requires": { 186 | "is-accessor-descriptor": "^1.0.0", 187 | "is-data-descriptor": "^1.0.0", 188 | "kind-of": "^6.0.2" 189 | } 190 | } 191 | } 192 | }, 193 | "brace-expansion": { 194 | "version": "1.1.11", 195 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 196 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 197 | "dev": true, 198 | "requires": { 199 | "balanced-match": "^1.0.0", 200 | "concat-map": "0.0.1" 201 | } 202 | }, 203 | "braces": { 204 | "version": "2.3.2", 205 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 206 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 207 | "dev": true, 208 | "requires": { 209 | "arr-flatten": "^1.1.0", 210 | "array-unique": "^0.3.2", 211 | "extend-shallow": "^2.0.1", 212 | "fill-range": "^4.0.0", 213 | "isobject": "^3.0.1", 214 | "repeat-element": "^1.1.2", 215 | "snapdragon": "^0.8.1", 216 | "snapdragon-node": "^2.0.1", 217 | "split-string": "^3.0.2", 218 | "to-regex": "^3.0.1" 219 | }, 220 | "dependencies": { 221 | "extend-shallow": { 222 | "version": "2.0.1", 223 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 224 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 225 | "dev": true, 226 | "requires": { 227 | "is-extendable": "^0.1.0" 228 | } 229 | } 230 | } 231 | }, 232 | "builtin-modules": { 233 | "version": "1.1.1", 234 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 235 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 236 | "dev": true 237 | }, 238 | "cache-base": { 239 | "version": "1.0.1", 240 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 241 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 242 | "dev": true, 243 | "requires": { 244 | "collection-visit": "^1.0.0", 245 | "component-emitter": "^1.2.1", 246 | "get-value": "^2.0.6", 247 | "has-value": "^1.0.0", 248 | "isobject": "^3.0.1", 249 | "set-value": "^2.0.0", 250 | "to-object-path": "^0.3.0", 251 | "union-value": "^1.0.0", 252 | "unset-value": "^1.0.0" 253 | } 254 | }, 255 | "chalk": { 256 | "version": "2.4.1", 257 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", 258 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", 259 | "dev": true, 260 | "requires": { 261 | "ansi-styles": "^3.2.1", 262 | "escape-string-regexp": "^1.0.5", 263 | "supports-color": "^5.3.0" 264 | } 265 | }, 266 | "ci-info": { 267 | "version": "1.1.3", 268 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", 269 | "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", 270 | "dev": true 271 | }, 272 | "class-utils": { 273 | "version": "0.3.6", 274 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 275 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 276 | "dev": true, 277 | "requires": { 278 | "arr-union": "^3.1.0", 279 | "define-property": "^0.2.5", 280 | "isobject": "^3.0.0", 281 | "static-extend": "^0.1.1" 282 | }, 283 | "dependencies": { 284 | "define-property": { 285 | "version": "0.2.5", 286 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 287 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 288 | "dev": true, 289 | "requires": { 290 | "is-descriptor": "^0.1.0" 291 | } 292 | } 293 | } 294 | }, 295 | "cli-cursor": { 296 | "version": "1.0.2", 297 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", 298 | "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", 299 | "dev": true, 300 | "requires": { 301 | "restore-cursor": "^1.0.1" 302 | } 303 | }, 304 | "cli-spinners": { 305 | "version": "0.1.2", 306 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", 307 | "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", 308 | "dev": true 309 | }, 310 | "cli-truncate": { 311 | "version": "0.2.1", 312 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", 313 | "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", 314 | "dev": true, 315 | "requires": { 316 | "slice-ansi": "0.0.4", 317 | "string-width": "^1.0.1" 318 | } 319 | }, 320 | "code-point-at": { 321 | "version": "1.1.0", 322 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 323 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 324 | "dev": true 325 | }, 326 | "collection-visit": { 327 | "version": "1.0.0", 328 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 329 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 330 | "dev": true, 331 | "requires": { 332 | "map-visit": "^1.0.0", 333 | "object-visit": "^1.0.0" 334 | } 335 | }, 336 | "color-convert": { 337 | "version": "1.9.2", 338 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", 339 | "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", 340 | "dev": true, 341 | "requires": { 342 | "color-name": "1.1.1" 343 | } 344 | }, 345 | "color-name": { 346 | "version": "1.1.1", 347 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", 348 | "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", 349 | "dev": true 350 | }, 351 | "commander": { 352 | "version": "2.15.1", 353 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 354 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" 355 | }, 356 | "component-emitter": { 357 | "version": "1.2.1", 358 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 359 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 360 | "dev": true 361 | }, 362 | "concat-map": { 363 | "version": "0.0.1", 364 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 365 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 366 | "dev": true 367 | }, 368 | "copy-descriptor": { 369 | "version": "0.1.1", 370 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 371 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 372 | "dev": true 373 | }, 374 | "cosmiconfig": { 375 | "version": "5.0.5", 376 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.5.tgz", 377 | "integrity": "sha512-94j37OtvxS5w7qr7Ta6dt67tWdnOxigBVN4VnSxNXFez9o18PGQ0D33SchKP17r9LAcWVTYV72G6vDayAUBFIg==", 378 | "dev": true, 379 | "requires": { 380 | "is-directory": "^0.3.1", 381 | "js-yaml": "^3.9.0", 382 | "parse-json": "^4.0.0" 383 | } 384 | }, 385 | "cross-spawn": { 386 | "version": "5.1.0", 387 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 388 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 389 | "dev": true, 390 | "requires": { 391 | "lru-cache": "^4.0.1", 392 | "shebang-command": "^1.2.0", 393 | "which": "^1.2.9" 394 | } 395 | }, 396 | "d3": { 397 | "version": "4.13.0", 398 | "resolved": "https://registry.npmjs.org/d3/-/d3-4.13.0.tgz", 399 | "integrity": "sha512-l8c4+0SldjVKLaE2WG++EQlqD7mh/dmQjvi2L2lKPadAVC+TbJC4ci7Uk9bRi+To0+ansgsS0iWfPjD7DBy+FQ==", 400 | "requires": { 401 | "d3-array": "1.2.1", 402 | "d3-axis": "1.0.8", 403 | "d3-brush": "1.0.4", 404 | "d3-chord": "1.0.4", 405 | "d3-collection": "1.0.4", 406 | "d3-color": "1.0.3", 407 | "d3-dispatch": "1.0.3", 408 | "d3-drag": "1.2.1", 409 | "d3-dsv": "1.0.8", 410 | "d3-ease": "1.0.3", 411 | "d3-force": "1.1.0", 412 | "d3-format": "1.2.2", 413 | "d3-geo": "1.9.1", 414 | "d3-hierarchy": "1.1.5", 415 | "d3-interpolate": "1.1.6", 416 | "d3-path": "1.0.5", 417 | "d3-polygon": "1.0.3", 418 | "d3-quadtree": "1.0.3", 419 | "d3-queue": "3.0.7", 420 | "d3-random": "1.1.0", 421 | "d3-request": "1.0.6", 422 | "d3-scale": "1.0.7", 423 | "d3-selection": "1.3.0", 424 | "d3-shape": "1.2.0", 425 | "d3-time": "1.0.8", 426 | "d3-time-format": "2.1.1", 427 | "d3-timer": "1.0.7", 428 | "d3-transition": "1.1.1", 429 | "d3-voronoi": "1.1.2", 430 | "d3-zoom": "1.7.1" 431 | } 432 | }, 433 | "d3-array": { 434 | "version": "1.2.1", 435 | "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", 436 | "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" 437 | }, 438 | "d3-axis": { 439 | "version": "1.0.8", 440 | "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", 441 | "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=" 442 | }, 443 | "d3-brush": { 444 | "version": "1.0.4", 445 | "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", 446 | "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=", 447 | "requires": { 448 | "d3-dispatch": "1", 449 | "d3-drag": "1", 450 | "d3-interpolate": "1", 451 | "d3-selection": "1", 452 | "d3-transition": "1" 453 | } 454 | }, 455 | "d3-chord": { 456 | "version": "1.0.4", 457 | "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", 458 | "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=", 459 | "requires": { 460 | "d3-array": "1", 461 | "d3-path": "1" 462 | } 463 | }, 464 | "d3-collection": { 465 | "version": "1.0.4", 466 | "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", 467 | "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" 468 | }, 469 | "d3-color": { 470 | "version": "1.0.3", 471 | "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", 472 | "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" 473 | }, 474 | "d3-dispatch": { 475 | "version": "1.0.3", 476 | "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", 477 | "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=" 478 | }, 479 | "d3-drag": { 480 | "version": "1.2.1", 481 | "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", 482 | "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", 483 | "requires": { 484 | "d3-dispatch": "1", 485 | "d3-selection": "1" 486 | } 487 | }, 488 | "d3-dsv": { 489 | "version": "1.0.8", 490 | "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz", 491 | "integrity": "sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A==", 492 | "requires": { 493 | "commander": "2", 494 | "iconv-lite": "0.4", 495 | "rw": "1" 496 | } 497 | }, 498 | "d3-ease": { 499 | "version": "1.0.3", 500 | "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", 501 | "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=" 502 | }, 503 | "d3-force": { 504 | "version": "1.1.0", 505 | "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", 506 | "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", 507 | "requires": { 508 | "d3-collection": "1", 509 | "d3-dispatch": "1", 510 | "d3-quadtree": "1", 511 | "d3-timer": "1" 512 | } 513 | }, 514 | "d3-format": { 515 | "version": "1.2.2", 516 | "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.2.tgz", 517 | "integrity": "sha512-zH9CfF/3C8zUI47nsiKfD0+AGDEuM8LwBIP7pBVpyR4l/sKkZqITmMtxRp04rwBrlshIZ17XeFAaovN3++wzkw==" 518 | }, 519 | "d3-geo": { 520 | "version": "1.9.1", 521 | "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.1.tgz", 522 | "integrity": "sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA==", 523 | "requires": { 524 | "d3-array": "1" 525 | } 526 | }, 527 | "d3-hierarchy": { 528 | "version": "1.1.5", 529 | "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", 530 | "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" 531 | }, 532 | "d3-interpolate": { 533 | "version": "1.1.6", 534 | "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz", 535 | "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==", 536 | "requires": { 537 | "d3-color": "1" 538 | } 539 | }, 540 | "d3-path": { 541 | "version": "1.0.5", 542 | "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", 543 | "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=" 544 | }, 545 | "d3-polygon": { 546 | "version": "1.0.3", 547 | "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", 548 | "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=" 549 | }, 550 | "d3-quadtree": { 551 | "version": "1.0.3", 552 | "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", 553 | "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" 554 | }, 555 | "d3-queue": { 556 | "version": "3.0.7", 557 | "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", 558 | "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg=" 559 | }, 560 | "d3-random": { 561 | "version": "1.1.0", 562 | "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", 563 | "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM=" 564 | }, 565 | "d3-request": { 566 | "version": "1.0.6", 567 | "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", 568 | "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", 569 | "requires": { 570 | "d3-collection": "1", 571 | "d3-dispatch": "1", 572 | "d3-dsv": "1", 573 | "xmlhttprequest": "1" 574 | } 575 | }, 576 | "d3-scale": { 577 | "version": "1.0.7", 578 | "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz", 579 | "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==", 580 | "requires": { 581 | "d3-array": "^1.2.0", 582 | "d3-collection": "1", 583 | "d3-color": "1", 584 | "d3-format": "1", 585 | "d3-interpolate": "1", 586 | "d3-time": "1", 587 | "d3-time-format": "2" 588 | } 589 | }, 590 | "d3-scale-chromatic": { 591 | "version": "1.3.3", 592 | "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.3.3.tgz", 593 | "integrity": "sha512-BWTipif1CimXcYfT02LKjAyItX5gKiwxuPRgr4xM58JwlLocWbjPLI7aMEjkcoOQXMkYsmNsvv3d2yl/OKuHHw==", 594 | "requires": { 595 | "d3-color": "1", 596 | "d3-interpolate": "1" 597 | } 598 | }, 599 | "d3-selection": { 600 | "version": "1.3.0", 601 | "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz", 602 | "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==" 603 | }, 604 | "d3-shape": { 605 | "version": "1.2.0", 606 | "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", 607 | "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", 608 | "requires": { 609 | "d3-path": "1" 610 | } 611 | }, 612 | "d3-time": { 613 | "version": "1.0.8", 614 | "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.8.tgz", 615 | "integrity": "sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ==" 616 | }, 617 | "d3-time-format": { 618 | "version": "2.1.1", 619 | "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz", 620 | "integrity": "sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==", 621 | "requires": { 622 | "d3-time": "1" 623 | } 624 | }, 625 | "d3-timer": { 626 | "version": "1.0.7", 627 | "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", 628 | "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" 629 | }, 630 | "d3-transition": { 631 | "version": "1.1.1", 632 | "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz", 633 | "integrity": "sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==", 634 | "requires": { 635 | "d3-color": "1", 636 | "d3-dispatch": "1", 637 | "d3-ease": "1", 638 | "d3-interpolate": "1", 639 | "d3-selection": "^1.1.0", 640 | "d3-timer": "1" 641 | } 642 | }, 643 | "d3-voronoi": { 644 | "version": "1.1.2", 645 | "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", 646 | "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" 647 | }, 648 | "d3-zoom": { 649 | "version": "1.7.1", 650 | "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz", 651 | "integrity": "sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ==", 652 | "requires": { 653 | "d3-dispatch": "1", 654 | "d3-drag": "1", 655 | "d3-interpolate": "1", 656 | "d3-selection": "1", 657 | "d3-transition": "1" 658 | } 659 | }, 660 | "date-fns": { 661 | "version": "1.29.0", 662 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", 663 | "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", 664 | "dev": true 665 | }, 666 | "debug": { 667 | "version": "3.1.0", 668 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 669 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 670 | "dev": true, 671 | "requires": { 672 | "ms": "2.0.0" 673 | } 674 | }, 675 | "decode-uri-component": { 676 | "version": "0.2.0", 677 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 678 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 679 | "dev": true 680 | }, 681 | "dedent": { 682 | "version": "0.7.0", 683 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", 684 | "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", 685 | "dev": true 686 | }, 687 | "define-property": { 688 | "version": "2.0.2", 689 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 690 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 691 | "dev": true, 692 | "requires": { 693 | "is-descriptor": "^1.0.2", 694 | "isobject": "^3.0.1" 695 | }, 696 | "dependencies": { 697 | "is-accessor-descriptor": { 698 | "version": "1.0.0", 699 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 700 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 701 | "dev": true, 702 | "requires": { 703 | "kind-of": "^6.0.0" 704 | } 705 | }, 706 | "is-data-descriptor": { 707 | "version": "1.0.0", 708 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 709 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 710 | "dev": true, 711 | "requires": { 712 | "kind-of": "^6.0.0" 713 | } 714 | }, 715 | "is-descriptor": { 716 | "version": "1.0.2", 717 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 718 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 719 | "dev": true, 720 | "requires": { 721 | "is-accessor-descriptor": "^1.0.0", 722 | "is-data-descriptor": "^1.0.0", 723 | "kind-of": "^6.0.2" 724 | } 725 | } 726 | } 727 | }, 728 | "diff": { 729 | "version": "3.5.0", 730 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 731 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 732 | "dev": true 733 | }, 734 | "elegant-spinner": { 735 | "version": "1.0.1", 736 | "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", 737 | "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", 738 | "dev": true 739 | }, 740 | "error-ex": { 741 | "version": "1.3.2", 742 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 743 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 744 | "dev": true, 745 | "requires": { 746 | "is-arrayish": "^0.2.1" 747 | } 748 | }, 749 | "escape-string-regexp": { 750 | "version": "1.0.5", 751 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 752 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 753 | "dev": true 754 | }, 755 | "esprima": { 756 | "version": "4.0.0", 757 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 758 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 759 | "dev": true 760 | }, 761 | "esutils": { 762 | "version": "2.0.2", 763 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 764 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 765 | "dev": true 766 | }, 767 | "execa": { 768 | "version": "0.9.0", 769 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", 770 | "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", 771 | "dev": true, 772 | "requires": { 773 | "cross-spawn": "^5.0.1", 774 | "get-stream": "^3.0.0", 775 | "is-stream": "^1.1.0", 776 | "npm-run-path": "^2.0.0", 777 | "p-finally": "^1.0.0", 778 | "signal-exit": "^3.0.0", 779 | "strip-eof": "^1.0.0" 780 | } 781 | }, 782 | "exit-hook": { 783 | "version": "1.1.1", 784 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", 785 | "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", 786 | "dev": true 787 | }, 788 | "expand-brackets": { 789 | "version": "2.1.4", 790 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 791 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 792 | "dev": true, 793 | "requires": { 794 | "debug": "^2.3.3", 795 | "define-property": "^0.2.5", 796 | "extend-shallow": "^2.0.1", 797 | "posix-character-classes": "^0.1.0", 798 | "regex-not": "^1.0.0", 799 | "snapdragon": "^0.8.1", 800 | "to-regex": "^3.0.1" 801 | }, 802 | "dependencies": { 803 | "debug": { 804 | "version": "2.6.9", 805 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 806 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 807 | "dev": true, 808 | "requires": { 809 | "ms": "2.0.0" 810 | } 811 | }, 812 | "define-property": { 813 | "version": "0.2.5", 814 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 815 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 816 | "dev": true, 817 | "requires": { 818 | "is-descriptor": "^0.1.0" 819 | } 820 | }, 821 | "extend-shallow": { 822 | "version": "2.0.1", 823 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 824 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 825 | "dev": true, 826 | "requires": { 827 | "is-extendable": "^0.1.0" 828 | } 829 | } 830 | } 831 | }, 832 | "extend-shallow": { 833 | "version": "3.0.2", 834 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 835 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 836 | "dev": true, 837 | "requires": { 838 | "assign-symbols": "^1.0.0", 839 | "is-extendable": "^1.0.1" 840 | }, 841 | "dependencies": { 842 | "is-extendable": { 843 | "version": "1.0.1", 844 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 845 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 846 | "dev": true, 847 | "requires": { 848 | "is-plain-object": "^2.0.4" 849 | } 850 | } 851 | } 852 | }, 853 | "extglob": { 854 | "version": "2.0.4", 855 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 856 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 857 | "dev": true, 858 | "requires": { 859 | "array-unique": "^0.3.2", 860 | "define-property": "^1.0.0", 861 | "expand-brackets": "^2.1.4", 862 | "extend-shallow": "^2.0.1", 863 | "fragment-cache": "^0.2.1", 864 | "regex-not": "^1.0.0", 865 | "snapdragon": "^0.8.1", 866 | "to-regex": "^3.0.1" 867 | }, 868 | "dependencies": { 869 | "define-property": { 870 | "version": "1.0.0", 871 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 872 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 873 | "dev": true, 874 | "requires": { 875 | "is-descriptor": "^1.0.0" 876 | } 877 | }, 878 | "extend-shallow": { 879 | "version": "2.0.1", 880 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 881 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 882 | "dev": true, 883 | "requires": { 884 | "is-extendable": "^0.1.0" 885 | } 886 | }, 887 | "is-accessor-descriptor": { 888 | "version": "1.0.0", 889 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 890 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 891 | "dev": true, 892 | "requires": { 893 | "kind-of": "^6.0.0" 894 | } 895 | }, 896 | "is-data-descriptor": { 897 | "version": "1.0.0", 898 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 899 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 900 | "dev": true, 901 | "requires": { 902 | "kind-of": "^6.0.0" 903 | } 904 | }, 905 | "is-descriptor": { 906 | "version": "1.0.2", 907 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 908 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 909 | "dev": true, 910 | "requires": { 911 | "is-accessor-descriptor": "^1.0.0", 912 | "is-data-descriptor": "^1.0.0", 913 | "kind-of": "^6.0.2" 914 | } 915 | } 916 | } 917 | }, 918 | "figures": { 919 | "version": "1.7.0", 920 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", 921 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 922 | "dev": true, 923 | "requires": { 924 | "escape-string-regexp": "^1.0.5", 925 | "object-assign": "^4.1.0" 926 | } 927 | }, 928 | "fill-range": { 929 | "version": "4.0.0", 930 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 931 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 932 | "dev": true, 933 | "requires": { 934 | "extend-shallow": "^2.0.1", 935 | "is-number": "^3.0.0", 936 | "repeat-string": "^1.6.1", 937 | "to-regex-range": "^2.1.0" 938 | }, 939 | "dependencies": { 940 | "extend-shallow": { 941 | "version": "2.0.1", 942 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 943 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 944 | "dev": true, 945 | "requires": { 946 | "is-extendable": "^0.1.0" 947 | } 948 | } 949 | } 950 | }, 951 | "find-parent-dir": { 952 | "version": "0.3.0", 953 | "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", 954 | "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", 955 | "dev": true 956 | }, 957 | "for-in": { 958 | "version": "1.0.2", 959 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 960 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 961 | "dev": true 962 | }, 963 | "fragment-cache": { 964 | "version": "0.2.1", 965 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 966 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 967 | "dev": true, 968 | "requires": { 969 | "map-cache": "^0.2.2" 970 | } 971 | }, 972 | "fs.realpath": { 973 | "version": "1.0.0", 974 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 975 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 976 | "dev": true 977 | }, 978 | "gauge-chart": { 979 | "version": "0.5.1", 980 | "resolved": "https://registry.npmjs.org/gauge-chart/-/gauge-chart-0.5.1.tgz", 981 | "integrity": "sha512-TbVK9x8zKoY1rN8YrZFoi1Ds3rEy2XieBD5EAenwj4VLsQ0F0DpCosuTb+3F+HpU8C8HQX6b8xheyq2KIVMU/Q==", 982 | "requires": { 983 | "d3": "^4.8.0", 984 | "d3-scale-chromatic": "^1.1.1" 985 | } 986 | }, 987 | "get-own-enumerable-property-symbols": { 988 | "version": "2.0.1", 989 | "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", 990 | "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", 991 | "dev": true 992 | }, 993 | "get-stream": { 994 | "version": "3.0.0", 995 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 996 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 997 | "dev": true 998 | }, 999 | "get-value": { 1000 | "version": "2.0.6", 1001 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 1002 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 1003 | "dev": true 1004 | }, 1005 | "glob": { 1006 | "version": "7.1.2", 1007 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1008 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1009 | "dev": true, 1010 | "requires": { 1011 | "fs.realpath": "^1.0.0", 1012 | "inflight": "^1.0.4", 1013 | "inherits": "2", 1014 | "minimatch": "^3.0.4", 1015 | "once": "^1.3.0", 1016 | "path-is-absolute": "^1.0.0" 1017 | } 1018 | }, 1019 | "has-ansi": { 1020 | "version": "2.0.0", 1021 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1022 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1023 | "dev": true, 1024 | "requires": { 1025 | "ansi-regex": "^2.0.0" 1026 | }, 1027 | "dependencies": { 1028 | "ansi-regex": { 1029 | "version": "2.1.1", 1030 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1031 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 1032 | "dev": true 1033 | } 1034 | } 1035 | }, 1036 | "has-flag": { 1037 | "version": "3.0.0", 1038 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1039 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1040 | "dev": true 1041 | }, 1042 | "has-value": { 1043 | "version": "1.0.0", 1044 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 1045 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 1046 | "dev": true, 1047 | "requires": { 1048 | "get-value": "^2.0.6", 1049 | "has-values": "^1.0.0", 1050 | "isobject": "^3.0.0" 1051 | } 1052 | }, 1053 | "has-values": { 1054 | "version": "1.0.0", 1055 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 1056 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 1057 | "dev": true, 1058 | "requires": { 1059 | "is-number": "^3.0.0", 1060 | "kind-of": "^4.0.0" 1061 | }, 1062 | "dependencies": { 1063 | "kind-of": { 1064 | "version": "4.0.0", 1065 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1066 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1067 | "dev": true, 1068 | "requires": { 1069 | "is-buffer": "^1.1.5" 1070 | } 1071 | } 1072 | } 1073 | }, 1074 | "husky": { 1075 | "version": "0.14.3", 1076 | "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", 1077 | "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", 1078 | "dev": true, 1079 | "requires": { 1080 | "is-ci": "^1.0.10", 1081 | "normalize-path": "^1.0.0", 1082 | "strip-indent": "^2.0.0" 1083 | } 1084 | }, 1085 | "iconv-lite": { 1086 | "version": "0.4.24", 1087 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1088 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1089 | "requires": { 1090 | "safer-buffer": ">= 2.1.2 < 3" 1091 | } 1092 | }, 1093 | "indent-string": { 1094 | "version": "2.1.0", 1095 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", 1096 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", 1097 | "dev": true, 1098 | "requires": { 1099 | "repeating": "^2.0.0" 1100 | } 1101 | }, 1102 | "inflight": { 1103 | "version": "1.0.6", 1104 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1105 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1106 | "dev": true, 1107 | "requires": { 1108 | "once": "^1.3.0", 1109 | "wrappy": "1" 1110 | } 1111 | }, 1112 | "inherits": { 1113 | "version": "2.0.3", 1114 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1115 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1116 | "dev": true 1117 | }, 1118 | "is-accessor-descriptor": { 1119 | "version": "0.1.6", 1120 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 1121 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 1122 | "dev": true, 1123 | "requires": { 1124 | "kind-of": "^3.0.2" 1125 | }, 1126 | "dependencies": { 1127 | "kind-of": { 1128 | "version": "3.2.2", 1129 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1130 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1131 | "dev": true, 1132 | "requires": { 1133 | "is-buffer": "^1.1.5" 1134 | } 1135 | } 1136 | } 1137 | }, 1138 | "is-arrayish": { 1139 | "version": "0.2.1", 1140 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1141 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1142 | "dev": true 1143 | }, 1144 | "is-buffer": { 1145 | "version": "1.1.6", 1146 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1147 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1148 | "dev": true 1149 | }, 1150 | "is-ci": { 1151 | "version": "1.1.0", 1152 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", 1153 | "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", 1154 | "dev": true, 1155 | "requires": { 1156 | "ci-info": "^1.0.0" 1157 | } 1158 | }, 1159 | "is-data-descriptor": { 1160 | "version": "0.1.4", 1161 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 1162 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 1163 | "dev": true, 1164 | "requires": { 1165 | "kind-of": "^3.0.2" 1166 | }, 1167 | "dependencies": { 1168 | "kind-of": { 1169 | "version": "3.2.2", 1170 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1171 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1172 | "dev": true, 1173 | "requires": { 1174 | "is-buffer": "^1.1.5" 1175 | } 1176 | } 1177 | } 1178 | }, 1179 | "is-descriptor": { 1180 | "version": "0.1.6", 1181 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 1182 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 1183 | "dev": true, 1184 | "requires": { 1185 | "is-accessor-descriptor": "^0.1.6", 1186 | "is-data-descriptor": "^0.1.4", 1187 | "kind-of": "^5.0.0" 1188 | }, 1189 | "dependencies": { 1190 | "kind-of": { 1191 | "version": "5.1.0", 1192 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 1193 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 1194 | "dev": true 1195 | } 1196 | } 1197 | }, 1198 | "is-directory": { 1199 | "version": "0.3.1", 1200 | "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", 1201 | "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", 1202 | "dev": true 1203 | }, 1204 | "is-extendable": { 1205 | "version": "0.1.1", 1206 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1207 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1208 | "dev": true 1209 | }, 1210 | "is-extglob": { 1211 | "version": "2.1.1", 1212 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1213 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1214 | "dev": true 1215 | }, 1216 | "is-finite": { 1217 | "version": "1.0.2", 1218 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 1219 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 1220 | "dev": true, 1221 | "requires": { 1222 | "number-is-nan": "^1.0.0" 1223 | } 1224 | }, 1225 | "is-fullwidth-code-point": { 1226 | "version": "1.0.0", 1227 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1228 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1229 | "dev": true, 1230 | "requires": { 1231 | "number-is-nan": "^1.0.0" 1232 | } 1233 | }, 1234 | "is-glob": { 1235 | "version": "4.0.0", 1236 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", 1237 | "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", 1238 | "dev": true, 1239 | "requires": { 1240 | "is-extglob": "^2.1.1" 1241 | } 1242 | }, 1243 | "is-number": { 1244 | "version": "3.0.0", 1245 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1246 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1247 | "dev": true, 1248 | "requires": { 1249 | "kind-of": "^3.0.2" 1250 | }, 1251 | "dependencies": { 1252 | "kind-of": { 1253 | "version": "3.2.2", 1254 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1255 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1256 | "dev": true, 1257 | "requires": { 1258 | "is-buffer": "^1.1.5" 1259 | } 1260 | } 1261 | } 1262 | }, 1263 | "is-obj": { 1264 | "version": "1.0.1", 1265 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1266 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 1267 | "dev": true 1268 | }, 1269 | "is-observable": { 1270 | "version": "1.1.0", 1271 | "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", 1272 | "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", 1273 | "dev": true, 1274 | "requires": { 1275 | "symbol-observable": "^1.1.0" 1276 | } 1277 | }, 1278 | "is-odd": { 1279 | "version": "2.0.0", 1280 | "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", 1281 | "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", 1282 | "dev": true, 1283 | "requires": { 1284 | "is-number": "^4.0.0" 1285 | }, 1286 | "dependencies": { 1287 | "is-number": { 1288 | "version": "4.0.0", 1289 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", 1290 | "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", 1291 | "dev": true 1292 | } 1293 | } 1294 | }, 1295 | "is-plain-object": { 1296 | "version": "2.0.4", 1297 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1298 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1299 | "dev": true, 1300 | "requires": { 1301 | "isobject": "^3.0.1" 1302 | } 1303 | }, 1304 | "is-promise": { 1305 | "version": "2.1.0", 1306 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1307 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1308 | "dev": true 1309 | }, 1310 | "is-regexp": { 1311 | "version": "1.0.0", 1312 | "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", 1313 | "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", 1314 | "dev": true 1315 | }, 1316 | "is-stream": { 1317 | "version": "1.1.0", 1318 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1319 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1320 | "dev": true 1321 | }, 1322 | "is-windows": { 1323 | "version": "1.0.2", 1324 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1325 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 1326 | "dev": true 1327 | }, 1328 | "isarray": { 1329 | "version": "1.0.0", 1330 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1331 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1332 | "dev": true 1333 | }, 1334 | "isexe": { 1335 | "version": "2.0.0", 1336 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1337 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1338 | "dev": true 1339 | }, 1340 | "isobject": { 1341 | "version": "3.0.1", 1342 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1343 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1344 | "dev": true 1345 | }, 1346 | "jest-get-type": { 1347 | "version": "22.4.3", 1348 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", 1349 | "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", 1350 | "dev": true 1351 | }, 1352 | "jest-validate": { 1353 | "version": "23.2.0", 1354 | "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.2.0.tgz", 1355 | "integrity": "sha1-Z8i5CeEa8XAXZSOIlMZ6wykbGV4=", 1356 | "dev": true, 1357 | "requires": { 1358 | "chalk": "^2.0.1", 1359 | "jest-get-type": "^22.1.0", 1360 | "leven": "^2.1.0", 1361 | "pretty-format": "^23.2.0" 1362 | } 1363 | }, 1364 | "js-tokens": { 1365 | "version": "3.0.2", 1366 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1367 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 1368 | "dev": true 1369 | }, 1370 | "js-yaml": { 1371 | "version": "3.12.0", 1372 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", 1373 | "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", 1374 | "dev": true, 1375 | "requires": { 1376 | "argparse": "^1.0.7", 1377 | "esprima": "^4.0.0" 1378 | } 1379 | }, 1380 | "json-parse-better-errors": { 1381 | "version": "1.0.2", 1382 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1383 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1384 | "dev": true 1385 | }, 1386 | "kind-of": { 1387 | "version": "6.0.2", 1388 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 1389 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 1390 | "dev": true 1391 | }, 1392 | "leven": { 1393 | "version": "2.1.0", 1394 | "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", 1395 | "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", 1396 | "dev": true 1397 | }, 1398 | "lint-staged": { 1399 | "version": "7.2.0", 1400 | "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-7.2.0.tgz", 1401 | "integrity": "sha512-jPoIMbmgtWMUrz/l0rhBVa1j6H71zr0rEoxDWBA333PZcaqBvELdg0Sf4tdGHlwrBM0GXaXMVgTRkLTm2vA7Jg==", 1402 | "dev": true, 1403 | "requires": { 1404 | "app-root-path": "^2.0.1", 1405 | "chalk": "^2.3.1", 1406 | "commander": "^2.14.1", 1407 | "cosmiconfig": "^5.0.2", 1408 | "debug": "^3.1.0", 1409 | "dedent": "^0.7.0", 1410 | "execa": "^0.9.0", 1411 | "find-parent-dir": "^0.3.0", 1412 | "is-glob": "^4.0.0", 1413 | "is-windows": "^1.0.2", 1414 | "jest-validate": "^23.0.0", 1415 | "listr": "^0.14.1", 1416 | "lodash": "^4.17.5", 1417 | "log-symbols": "^2.2.0", 1418 | "micromatch": "^3.1.8", 1419 | "npm-which": "^3.0.1", 1420 | "p-map": "^1.1.1", 1421 | "path-is-inside": "^1.0.2", 1422 | "pify": "^3.0.0", 1423 | "please-upgrade-node": "^3.0.2", 1424 | "staged-git-files": "1.1.1", 1425 | "string-argv": "^0.0.2", 1426 | "stringify-object": "^3.2.2" 1427 | } 1428 | }, 1429 | "listr": { 1430 | "version": "0.14.1", 1431 | "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.1.tgz", 1432 | "integrity": "sha512-MSMUUVN1f8aRnPi4034RkOqdiUlpYW+FqwFE3aL0uYNPRavkt2S2SsSpDDofn8BDpqv2RNnsdOcCHWsChcq77A==", 1433 | "dev": true, 1434 | "requires": { 1435 | "@samverschueren/stream-to-observable": "^0.3.0", 1436 | "cli-truncate": "^0.2.1", 1437 | "figures": "^1.7.0", 1438 | "indent-string": "^2.1.0", 1439 | "is-observable": "^1.1.0", 1440 | "is-promise": "^2.1.0", 1441 | "is-stream": "^1.1.0", 1442 | "listr-silent-renderer": "^1.1.1", 1443 | "listr-update-renderer": "^0.4.0", 1444 | "listr-verbose-renderer": "^0.4.0", 1445 | "log-symbols": "^1.0.2", 1446 | "log-update": "^1.0.2", 1447 | "ora": "^0.2.3", 1448 | "p-map": "^1.1.1", 1449 | "rxjs": "^6.1.0", 1450 | "strip-ansi": "^3.0.1" 1451 | }, 1452 | "dependencies": { 1453 | "ansi-styles": { 1454 | "version": "2.2.1", 1455 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1456 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1457 | "dev": true 1458 | }, 1459 | "chalk": { 1460 | "version": "1.1.3", 1461 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1462 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1463 | "dev": true, 1464 | "requires": { 1465 | "ansi-styles": "^2.2.1", 1466 | "escape-string-regexp": "^1.0.2", 1467 | "has-ansi": "^2.0.0", 1468 | "strip-ansi": "^3.0.0", 1469 | "supports-color": "^2.0.0" 1470 | } 1471 | }, 1472 | "log-symbols": { 1473 | "version": "1.0.2", 1474 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", 1475 | "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", 1476 | "dev": true, 1477 | "requires": { 1478 | "chalk": "^1.0.0" 1479 | } 1480 | }, 1481 | "supports-color": { 1482 | "version": "2.0.0", 1483 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1484 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1485 | "dev": true 1486 | } 1487 | } 1488 | }, 1489 | "listr-silent-renderer": { 1490 | "version": "1.1.1", 1491 | "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", 1492 | "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", 1493 | "dev": true 1494 | }, 1495 | "listr-update-renderer": { 1496 | "version": "0.4.0", 1497 | "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", 1498 | "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", 1499 | "dev": true, 1500 | "requires": { 1501 | "chalk": "^1.1.3", 1502 | "cli-truncate": "^0.2.1", 1503 | "elegant-spinner": "^1.0.1", 1504 | "figures": "^1.7.0", 1505 | "indent-string": "^3.0.0", 1506 | "log-symbols": "^1.0.2", 1507 | "log-update": "^1.0.2", 1508 | "strip-ansi": "^3.0.1" 1509 | }, 1510 | "dependencies": { 1511 | "ansi-styles": { 1512 | "version": "2.2.1", 1513 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1514 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1515 | "dev": true 1516 | }, 1517 | "chalk": { 1518 | "version": "1.1.3", 1519 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1520 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1521 | "dev": true, 1522 | "requires": { 1523 | "ansi-styles": "^2.2.1", 1524 | "escape-string-regexp": "^1.0.2", 1525 | "has-ansi": "^2.0.0", 1526 | "strip-ansi": "^3.0.0", 1527 | "supports-color": "^2.0.0" 1528 | } 1529 | }, 1530 | "indent-string": { 1531 | "version": "3.2.0", 1532 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", 1533 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", 1534 | "dev": true 1535 | }, 1536 | "log-symbols": { 1537 | "version": "1.0.2", 1538 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", 1539 | "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", 1540 | "dev": true, 1541 | "requires": { 1542 | "chalk": "^1.0.0" 1543 | } 1544 | }, 1545 | "supports-color": { 1546 | "version": "2.0.0", 1547 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1548 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1549 | "dev": true 1550 | } 1551 | } 1552 | }, 1553 | "listr-verbose-renderer": { 1554 | "version": "0.4.1", 1555 | "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", 1556 | "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", 1557 | "dev": true, 1558 | "requires": { 1559 | "chalk": "^1.1.3", 1560 | "cli-cursor": "^1.0.2", 1561 | "date-fns": "^1.27.2", 1562 | "figures": "^1.7.0" 1563 | }, 1564 | "dependencies": { 1565 | "ansi-styles": { 1566 | "version": "2.2.1", 1567 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1568 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1569 | "dev": true 1570 | }, 1571 | "chalk": { 1572 | "version": "1.1.3", 1573 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1574 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1575 | "dev": true, 1576 | "requires": { 1577 | "ansi-styles": "^2.2.1", 1578 | "escape-string-regexp": "^1.0.2", 1579 | "has-ansi": "^2.0.0", 1580 | "strip-ansi": "^3.0.0", 1581 | "supports-color": "^2.0.0" 1582 | } 1583 | }, 1584 | "supports-color": { 1585 | "version": "2.0.0", 1586 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1587 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1588 | "dev": true 1589 | } 1590 | } 1591 | }, 1592 | "lodash": { 1593 | "version": "4.17.10", 1594 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", 1595 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", 1596 | "dev": true 1597 | }, 1598 | "log-symbols": { 1599 | "version": "2.2.0", 1600 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 1601 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 1602 | "dev": true, 1603 | "requires": { 1604 | "chalk": "^2.0.1" 1605 | } 1606 | }, 1607 | "log-update": { 1608 | "version": "1.0.2", 1609 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", 1610 | "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", 1611 | "dev": true, 1612 | "requires": { 1613 | "ansi-escapes": "^1.0.0", 1614 | "cli-cursor": "^1.0.2" 1615 | } 1616 | }, 1617 | "lru-cache": { 1618 | "version": "4.1.3", 1619 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", 1620 | "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", 1621 | "dev": true, 1622 | "requires": { 1623 | "pseudomap": "^1.0.2", 1624 | "yallist": "^2.1.2" 1625 | } 1626 | }, 1627 | "map-cache": { 1628 | "version": "0.2.2", 1629 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1630 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 1631 | "dev": true 1632 | }, 1633 | "map-visit": { 1634 | "version": "1.0.0", 1635 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 1636 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 1637 | "dev": true, 1638 | "requires": { 1639 | "object-visit": "^1.0.0" 1640 | } 1641 | }, 1642 | "micromatch": { 1643 | "version": "3.1.10", 1644 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 1645 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 1646 | "dev": true, 1647 | "requires": { 1648 | "arr-diff": "^4.0.0", 1649 | "array-unique": "^0.3.2", 1650 | "braces": "^2.3.1", 1651 | "define-property": "^2.0.2", 1652 | "extend-shallow": "^3.0.2", 1653 | "extglob": "^2.0.4", 1654 | "fragment-cache": "^0.2.1", 1655 | "kind-of": "^6.0.2", 1656 | "nanomatch": "^1.2.9", 1657 | "object.pick": "^1.3.0", 1658 | "regex-not": "^1.0.0", 1659 | "snapdragon": "^0.8.1", 1660 | "to-regex": "^3.0.2" 1661 | } 1662 | }, 1663 | "minimatch": { 1664 | "version": "3.0.4", 1665 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1666 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1667 | "dev": true, 1668 | "requires": { 1669 | "brace-expansion": "^1.1.7" 1670 | } 1671 | }, 1672 | "mixin-deep": { 1673 | "version": "1.3.1", 1674 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", 1675 | "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", 1676 | "dev": true, 1677 | "requires": { 1678 | "for-in": "^1.0.2", 1679 | "is-extendable": "^1.0.1" 1680 | }, 1681 | "dependencies": { 1682 | "is-extendable": { 1683 | "version": "1.0.1", 1684 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1685 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1686 | "dev": true, 1687 | "requires": { 1688 | "is-plain-object": "^2.0.4" 1689 | } 1690 | } 1691 | } 1692 | }, 1693 | "ms": { 1694 | "version": "2.0.0", 1695 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1696 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1697 | "dev": true 1698 | }, 1699 | "nanomatch": { 1700 | "version": "1.2.9", 1701 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", 1702 | "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", 1703 | "dev": true, 1704 | "requires": { 1705 | "arr-diff": "^4.0.0", 1706 | "array-unique": "^0.3.2", 1707 | "define-property": "^2.0.2", 1708 | "extend-shallow": "^3.0.2", 1709 | "fragment-cache": "^0.2.1", 1710 | "is-odd": "^2.0.0", 1711 | "is-windows": "^1.0.2", 1712 | "kind-of": "^6.0.2", 1713 | "object.pick": "^1.3.0", 1714 | "regex-not": "^1.0.0", 1715 | "snapdragon": "^0.8.1", 1716 | "to-regex": "^3.0.1" 1717 | } 1718 | }, 1719 | "normalize-path": { 1720 | "version": "1.0.0", 1721 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", 1722 | "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", 1723 | "dev": true 1724 | }, 1725 | "npm-path": { 1726 | "version": "2.0.4", 1727 | "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", 1728 | "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", 1729 | "dev": true, 1730 | "requires": { 1731 | "which": "^1.2.10" 1732 | } 1733 | }, 1734 | "npm-run-path": { 1735 | "version": "2.0.2", 1736 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 1737 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 1738 | "dev": true, 1739 | "requires": { 1740 | "path-key": "^2.0.0" 1741 | } 1742 | }, 1743 | "npm-which": { 1744 | "version": "3.0.1", 1745 | "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", 1746 | "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", 1747 | "dev": true, 1748 | "requires": { 1749 | "commander": "^2.9.0", 1750 | "npm-path": "^2.0.2", 1751 | "which": "^1.2.10" 1752 | } 1753 | }, 1754 | "number-is-nan": { 1755 | "version": "1.0.1", 1756 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1757 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1758 | "dev": true 1759 | }, 1760 | "object-assign": { 1761 | "version": "4.1.1", 1762 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1763 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1764 | "dev": true 1765 | }, 1766 | "object-copy": { 1767 | "version": "0.1.0", 1768 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 1769 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 1770 | "dev": true, 1771 | "requires": { 1772 | "copy-descriptor": "^0.1.0", 1773 | "define-property": "^0.2.5", 1774 | "kind-of": "^3.0.3" 1775 | }, 1776 | "dependencies": { 1777 | "define-property": { 1778 | "version": "0.2.5", 1779 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1780 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1781 | "dev": true, 1782 | "requires": { 1783 | "is-descriptor": "^0.1.0" 1784 | } 1785 | }, 1786 | "kind-of": { 1787 | "version": "3.2.2", 1788 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1789 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1790 | "dev": true, 1791 | "requires": { 1792 | "is-buffer": "^1.1.5" 1793 | } 1794 | } 1795 | } 1796 | }, 1797 | "object-visit": { 1798 | "version": "1.0.1", 1799 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 1800 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 1801 | "dev": true, 1802 | "requires": { 1803 | "isobject": "^3.0.0" 1804 | } 1805 | }, 1806 | "object.pick": { 1807 | "version": "1.3.0", 1808 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 1809 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 1810 | "dev": true, 1811 | "requires": { 1812 | "isobject": "^3.0.1" 1813 | } 1814 | }, 1815 | "once": { 1816 | "version": "1.4.0", 1817 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1818 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1819 | "dev": true, 1820 | "requires": { 1821 | "wrappy": "1" 1822 | } 1823 | }, 1824 | "onetime": { 1825 | "version": "1.1.0", 1826 | "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", 1827 | "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", 1828 | "dev": true 1829 | }, 1830 | "ora": { 1831 | "version": "0.2.3", 1832 | "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", 1833 | "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", 1834 | "dev": true, 1835 | "requires": { 1836 | "chalk": "^1.1.1", 1837 | "cli-cursor": "^1.0.2", 1838 | "cli-spinners": "^0.1.2", 1839 | "object-assign": "^4.0.1" 1840 | }, 1841 | "dependencies": { 1842 | "ansi-styles": { 1843 | "version": "2.2.1", 1844 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1845 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1846 | "dev": true 1847 | }, 1848 | "chalk": { 1849 | "version": "1.1.3", 1850 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1851 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1852 | "dev": true, 1853 | "requires": { 1854 | "ansi-styles": "^2.2.1", 1855 | "escape-string-regexp": "^1.0.2", 1856 | "has-ansi": "^2.0.0", 1857 | "strip-ansi": "^3.0.0", 1858 | "supports-color": "^2.0.0" 1859 | } 1860 | }, 1861 | "supports-color": { 1862 | "version": "2.0.0", 1863 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1864 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1865 | "dev": true 1866 | } 1867 | } 1868 | }, 1869 | "p-finally": { 1870 | "version": "1.0.0", 1871 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 1872 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 1873 | "dev": true 1874 | }, 1875 | "p-map": { 1876 | "version": "1.2.0", 1877 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", 1878 | "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", 1879 | "dev": true 1880 | }, 1881 | "parse-json": { 1882 | "version": "4.0.0", 1883 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 1884 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 1885 | "dev": true, 1886 | "requires": { 1887 | "error-ex": "^1.3.1", 1888 | "json-parse-better-errors": "^1.0.1" 1889 | } 1890 | }, 1891 | "pascalcase": { 1892 | "version": "0.1.1", 1893 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 1894 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 1895 | "dev": true 1896 | }, 1897 | "path-is-absolute": { 1898 | "version": "1.0.1", 1899 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1900 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1901 | "dev": true 1902 | }, 1903 | "path-is-inside": { 1904 | "version": "1.0.2", 1905 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1906 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1907 | "dev": true 1908 | }, 1909 | "path-key": { 1910 | "version": "2.0.1", 1911 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1912 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1913 | "dev": true 1914 | }, 1915 | "path-parse": { 1916 | "version": "1.0.5", 1917 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 1918 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 1919 | "dev": true 1920 | }, 1921 | "pify": { 1922 | "version": "3.0.0", 1923 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1924 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1925 | "dev": true 1926 | }, 1927 | "please-upgrade-node": { 1928 | "version": "3.0.2", 1929 | "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.0.2.tgz", 1930 | "integrity": "sha512-bslfSeW+ksUbB/sYZeEdKFyTG4YWU9YKRvqfSRvZKE675khAuBUPqV5RUwJZaGuWmVQLweK45Q+lPHFVnSlSug==", 1931 | "dev": true, 1932 | "requires": { 1933 | "semver-compare": "^1.0.0" 1934 | } 1935 | }, 1936 | "posix-character-classes": { 1937 | "version": "0.1.1", 1938 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 1939 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 1940 | "dev": true 1941 | }, 1942 | "prettier": { 1943 | "version": "1.13.6", 1944 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.6.tgz", 1945 | "integrity": "sha512-p5eqCNiohWZN++7aJXUVj0JgLqHCPLf9GLIcLBHGNWs4Y9FJOPs6+KNO2WT0udJIQJTbeZFrJkjzjcb8fkAYYQ==", 1946 | "dev": true 1947 | }, 1948 | "pretty-format": { 1949 | "version": "23.2.0", 1950 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz", 1951 | "integrity": "sha1-OwqqY8AYpTWDNzwcs6XZbMXoMBc=", 1952 | "dev": true, 1953 | "requires": { 1954 | "ansi-regex": "^3.0.0", 1955 | "ansi-styles": "^3.2.0" 1956 | } 1957 | }, 1958 | "pseudomap": { 1959 | "version": "1.0.2", 1960 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1961 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 1962 | "dev": true 1963 | }, 1964 | "regex-not": { 1965 | "version": "1.0.2", 1966 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 1967 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 1968 | "dev": true, 1969 | "requires": { 1970 | "extend-shallow": "^3.0.2", 1971 | "safe-regex": "^1.1.0" 1972 | } 1973 | }, 1974 | "repeat-element": { 1975 | "version": "1.1.2", 1976 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 1977 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 1978 | "dev": true 1979 | }, 1980 | "repeat-string": { 1981 | "version": "1.6.1", 1982 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1983 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1984 | "dev": true 1985 | }, 1986 | "repeating": { 1987 | "version": "2.0.1", 1988 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 1989 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 1990 | "dev": true, 1991 | "requires": { 1992 | "is-finite": "^1.0.0" 1993 | } 1994 | }, 1995 | "resolve": { 1996 | "version": "1.8.1", 1997 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", 1998 | "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", 1999 | "dev": true, 2000 | "requires": { 2001 | "path-parse": "^1.0.5" 2002 | } 2003 | }, 2004 | "resolve-url": { 2005 | "version": "0.2.1", 2006 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 2007 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 2008 | "dev": true 2009 | }, 2010 | "restore-cursor": { 2011 | "version": "1.0.1", 2012 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", 2013 | "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", 2014 | "dev": true, 2015 | "requires": { 2016 | "exit-hook": "^1.0.0", 2017 | "onetime": "^1.0.0" 2018 | } 2019 | }, 2020 | "ret": { 2021 | "version": "0.1.15", 2022 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 2023 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 2024 | "dev": true 2025 | }, 2026 | "rw": { 2027 | "version": "1.3.3", 2028 | "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", 2029 | "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" 2030 | }, 2031 | "rxjs": { 2032 | "version": "6.2.1", 2033 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.1.tgz", 2034 | "integrity": "sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g==", 2035 | "dev": true, 2036 | "requires": { 2037 | "tslib": "^1.9.0" 2038 | } 2039 | }, 2040 | "safe-regex": { 2041 | "version": "1.1.0", 2042 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 2043 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 2044 | "dev": true, 2045 | "requires": { 2046 | "ret": "~0.1.10" 2047 | } 2048 | }, 2049 | "safer-buffer": { 2050 | "version": "2.1.2", 2051 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2052 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2053 | }, 2054 | "semver": { 2055 | "version": "5.5.0", 2056 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 2057 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 2058 | "dev": true 2059 | }, 2060 | "semver-compare": { 2061 | "version": "1.0.0", 2062 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", 2063 | "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", 2064 | "dev": true 2065 | }, 2066 | "set-value": { 2067 | "version": "2.0.0", 2068 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", 2069 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", 2070 | "dev": true, 2071 | "requires": { 2072 | "extend-shallow": "^2.0.1", 2073 | "is-extendable": "^0.1.1", 2074 | "is-plain-object": "^2.0.3", 2075 | "split-string": "^3.0.1" 2076 | }, 2077 | "dependencies": { 2078 | "extend-shallow": { 2079 | "version": "2.0.1", 2080 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2081 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2082 | "dev": true, 2083 | "requires": { 2084 | "is-extendable": "^0.1.0" 2085 | } 2086 | } 2087 | } 2088 | }, 2089 | "shebang-command": { 2090 | "version": "1.2.0", 2091 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 2092 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 2093 | "dev": true, 2094 | "requires": { 2095 | "shebang-regex": "^1.0.0" 2096 | } 2097 | }, 2098 | "shebang-regex": { 2099 | "version": "1.0.0", 2100 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 2101 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 2102 | "dev": true 2103 | }, 2104 | "signal-exit": { 2105 | "version": "3.0.2", 2106 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 2107 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 2108 | "dev": true 2109 | }, 2110 | "slice-ansi": { 2111 | "version": "0.0.4", 2112 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 2113 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", 2114 | "dev": true 2115 | }, 2116 | "snapdragon": { 2117 | "version": "0.8.2", 2118 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 2119 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 2120 | "dev": true, 2121 | "requires": { 2122 | "base": "^0.11.1", 2123 | "debug": "^2.2.0", 2124 | "define-property": "^0.2.5", 2125 | "extend-shallow": "^2.0.1", 2126 | "map-cache": "^0.2.2", 2127 | "source-map": "^0.5.6", 2128 | "source-map-resolve": "^0.5.0", 2129 | "use": "^3.1.0" 2130 | }, 2131 | "dependencies": { 2132 | "debug": { 2133 | "version": "2.6.9", 2134 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2135 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2136 | "dev": true, 2137 | "requires": { 2138 | "ms": "2.0.0" 2139 | } 2140 | }, 2141 | "define-property": { 2142 | "version": "0.2.5", 2143 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2144 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2145 | "dev": true, 2146 | "requires": { 2147 | "is-descriptor": "^0.1.0" 2148 | } 2149 | }, 2150 | "extend-shallow": { 2151 | "version": "2.0.1", 2152 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2153 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2154 | "dev": true, 2155 | "requires": { 2156 | "is-extendable": "^0.1.0" 2157 | } 2158 | } 2159 | } 2160 | }, 2161 | "snapdragon-node": { 2162 | "version": "2.1.1", 2163 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 2164 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 2165 | "dev": true, 2166 | "requires": { 2167 | "define-property": "^1.0.0", 2168 | "isobject": "^3.0.0", 2169 | "snapdragon-util": "^3.0.1" 2170 | }, 2171 | "dependencies": { 2172 | "define-property": { 2173 | "version": "1.0.0", 2174 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 2175 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 2176 | "dev": true, 2177 | "requires": { 2178 | "is-descriptor": "^1.0.0" 2179 | } 2180 | }, 2181 | "is-accessor-descriptor": { 2182 | "version": "1.0.0", 2183 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 2184 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 2185 | "dev": true, 2186 | "requires": { 2187 | "kind-of": "^6.0.0" 2188 | } 2189 | }, 2190 | "is-data-descriptor": { 2191 | "version": "1.0.0", 2192 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 2193 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 2194 | "dev": true, 2195 | "requires": { 2196 | "kind-of": "^6.0.0" 2197 | } 2198 | }, 2199 | "is-descriptor": { 2200 | "version": "1.0.2", 2201 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 2202 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 2203 | "dev": true, 2204 | "requires": { 2205 | "is-accessor-descriptor": "^1.0.0", 2206 | "is-data-descriptor": "^1.0.0", 2207 | "kind-of": "^6.0.2" 2208 | } 2209 | } 2210 | } 2211 | }, 2212 | "snapdragon-util": { 2213 | "version": "3.0.1", 2214 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 2215 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 2216 | "dev": true, 2217 | "requires": { 2218 | "kind-of": "^3.2.0" 2219 | }, 2220 | "dependencies": { 2221 | "kind-of": { 2222 | "version": "3.2.2", 2223 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2224 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2225 | "dev": true, 2226 | "requires": { 2227 | "is-buffer": "^1.1.5" 2228 | } 2229 | } 2230 | } 2231 | }, 2232 | "source-map": { 2233 | "version": "0.5.7", 2234 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2235 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2236 | "dev": true 2237 | }, 2238 | "source-map-resolve": { 2239 | "version": "0.5.2", 2240 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", 2241 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", 2242 | "dev": true, 2243 | "requires": { 2244 | "atob": "^2.1.1", 2245 | "decode-uri-component": "^0.2.0", 2246 | "resolve-url": "^0.2.1", 2247 | "source-map-url": "^0.4.0", 2248 | "urix": "^0.1.0" 2249 | } 2250 | }, 2251 | "source-map-url": { 2252 | "version": "0.4.0", 2253 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 2254 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 2255 | "dev": true 2256 | }, 2257 | "split-string": { 2258 | "version": "3.1.0", 2259 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 2260 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 2261 | "dev": true, 2262 | "requires": { 2263 | "extend-shallow": "^3.0.0" 2264 | } 2265 | }, 2266 | "sprintf-js": { 2267 | "version": "1.0.3", 2268 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2269 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2270 | "dev": true 2271 | }, 2272 | "staged-git-files": { 2273 | "version": "1.1.1", 2274 | "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz", 2275 | "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==", 2276 | "dev": true 2277 | }, 2278 | "static-extend": { 2279 | "version": "0.1.2", 2280 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 2281 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 2282 | "dev": true, 2283 | "requires": { 2284 | "define-property": "^0.2.5", 2285 | "object-copy": "^0.1.0" 2286 | }, 2287 | "dependencies": { 2288 | "define-property": { 2289 | "version": "0.2.5", 2290 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2291 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2292 | "dev": true, 2293 | "requires": { 2294 | "is-descriptor": "^0.1.0" 2295 | } 2296 | } 2297 | } 2298 | }, 2299 | "string-argv": { 2300 | "version": "0.0.2", 2301 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", 2302 | "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", 2303 | "dev": true 2304 | }, 2305 | "string-width": { 2306 | "version": "1.0.2", 2307 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 2308 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 2309 | "dev": true, 2310 | "requires": { 2311 | "code-point-at": "^1.0.0", 2312 | "is-fullwidth-code-point": "^1.0.0", 2313 | "strip-ansi": "^3.0.0" 2314 | } 2315 | }, 2316 | "stringify-object": { 2317 | "version": "3.2.2", 2318 | "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", 2319 | "integrity": "sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg==", 2320 | "dev": true, 2321 | "requires": { 2322 | "get-own-enumerable-property-symbols": "^2.0.1", 2323 | "is-obj": "^1.0.1", 2324 | "is-regexp": "^1.0.0" 2325 | } 2326 | }, 2327 | "strip-ansi": { 2328 | "version": "3.0.1", 2329 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2330 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2331 | "dev": true, 2332 | "requires": { 2333 | "ansi-regex": "^2.0.0" 2334 | }, 2335 | "dependencies": { 2336 | "ansi-regex": { 2337 | "version": "2.1.1", 2338 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 2339 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 2340 | "dev": true 2341 | } 2342 | } 2343 | }, 2344 | "strip-eof": { 2345 | "version": "1.0.0", 2346 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 2347 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 2348 | "dev": true 2349 | }, 2350 | "strip-indent": { 2351 | "version": "2.0.0", 2352 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", 2353 | "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", 2354 | "dev": true 2355 | }, 2356 | "supports-color": { 2357 | "version": "5.4.0", 2358 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 2359 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 2360 | "dev": true, 2361 | "requires": { 2362 | "has-flag": "^3.0.0" 2363 | } 2364 | }, 2365 | "symbol-observable": { 2366 | "version": "1.2.0", 2367 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", 2368 | "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", 2369 | "dev": true 2370 | }, 2371 | "to-object-path": { 2372 | "version": "0.3.0", 2373 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 2374 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 2375 | "dev": true, 2376 | "requires": { 2377 | "kind-of": "^3.0.2" 2378 | }, 2379 | "dependencies": { 2380 | "kind-of": { 2381 | "version": "3.2.2", 2382 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2383 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2384 | "dev": true, 2385 | "requires": { 2386 | "is-buffer": "^1.1.5" 2387 | } 2388 | } 2389 | } 2390 | }, 2391 | "to-regex": { 2392 | "version": "3.0.2", 2393 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 2394 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 2395 | "dev": true, 2396 | "requires": { 2397 | "define-property": "^2.0.2", 2398 | "extend-shallow": "^3.0.2", 2399 | "regex-not": "^1.0.2", 2400 | "safe-regex": "^1.1.0" 2401 | } 2402 | }, 2403 | "to-regex-range": { 2404 | "version": "2.1.1", 2405 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 2406 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 2407 | "dev": true, 2408 | "requires": { 2409 | "is-number": "^3.0.0", 2410 | "repeat-string": "^1.6.1" 2411 | } 2412 | }, 2413 | "tslib": { 2414 | "version": "1.9.3", 2415 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", 2416 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", 2417 | "dev": true 2418 | }, 2419 | "tslint": { 2420 | "version": "5.10.0", 2421 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz", 2422 | "integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=", 2423 | "dev": true, 2424 | "requires": { 2425 | "babel-code-frame": "^6.22.0", 2426 | "builtin-modules": "^1.1.1", 2427 | "chalk": "^2.3.0", 2428 | "commander": "^2.12.1", 2429 | "diff": "^3.2.0", 2430 | "glob": "^7.1.1", 2431 | "js-yaml": "^3.7.0", 2432 | "minimatch": "^3.0.4", 2433 | "resolve": "^1.3.2", 2434 | "semver": "^5.3.0", 2435 | "tslib": "^1.8.0", 2436 | "tsutils": "^2.12.1" 2437 | } 2438 | }, 2439 | "tsutils": { 2440 | "version": "2.27.1", 2441 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz", 2442 | "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==", 2443 | "dev": true, 2444 | "requires": { 2445 | "tslib": "^1.8.1" 2446 | } 2447 | }, 2448 | "union-value": { 2449 | "version": "1.0.0", 2450 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", 2451 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", 2452 | "dev": true, 2453 | "requires": { 2454 | "arr-union": "^3.1.0", 2455 | "get-value": "^2.0.6", 2456 | "is-extendable": "^0.1.1", 2457 | "set-value": "^0.4.3" 2458 | }, 2459 | "dependencies": { 2460 | "extend-shallow": { 2461 | "version": "2.0.1", 2462 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2463 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2464 | "dev": true, 2465 | "requires": { 2466 | "is-extendable": "^0.1.0" 2467 | } 2468 | }, 2469 | "set-value": { 2470 | "version": "0.4.3", 2471 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", 2472 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", 2473 | "dev": true, 2474 | "requires": { 2475 | "extend-shallow": "^2.0.1", 2476 | "is-extendable": "^0.1.1", 2477 | "is-plain-object": "^2.0.1", 2478 | "to-object-path": "^0.3.0" 2479 | } 2480 | } 2481 | } 2482 | }, 2483 | "unset-value": { 2484 | "version": "1.0.0", 2485 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 2486 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 2487 | "dev": true, 2488 | "requires": { 2489 | "has-value": "^0.3.1", 2490 | "isobject": "^3.0.0" 2491 | }, 2492 | "dependencies": { 2493 | "has-value": { 2494 | "version": "0.3.1", 2495 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 2496 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 2497 | "dev": true, 2498 | "requires": { 2499 | "get-value": "^2.0.3", 2500 | "has-values": "^0.1.4", 2501 | "isobject": "^2.0.0" 2502 | }, 2503 | "dependencies": { 2504 | "isobject": { 2505 | "version": "2.1.0", 2506 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 2507 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 2508 | "dev": true, 2509 | "requires": { 2510 | "isarray": "1.0.0" 2511 | } 2512 | } 2513 | } 2514 | }, 2515 | "has-values": { 2516 | "version": "0.1.4", 2517 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 2518 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 2519 | "dev": true 2520 | } 2521 | } 2522 | }, 2523 | "urix": { 2524 | "version": "0.1.0", 2525 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 2526 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 2527 | "dev": true 2528 | }, 2529 | "use": { 2530 | "version": "3.1.0", 2531 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", 2532 | "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", 2533 | "dev": true, 2534 | "requires": { 2535 | "kind-of": "^6.0.2" 2536 | } 2537 | }, 2538 | "which": { 2539 | "version": "1.3.1", 2540 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2541 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2542 | "dev": true, 2543 | "requires": { 2544 | "isexe": "^2.0.0" 2545 | } 2546 | }, 2547 | "wrappy": { 2548 | "version": "1.0.2", 2549 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2550 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2551 | "dev": true 2552 | }, 2553 | "xmlhttprequest": { 2554 | "version": "1.8.0", 2555 | "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", 2556 | "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" 2557 | }, 2558 | "yallist": { 2559 | "version": "2.1.2", 2560 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 2561 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 2562 | "dev": true 2563 | } 2564 | } 2565 | } 2566 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-gauge-chart", 3 | "version": "0.7.2", 4 | "peerDependencies": { 5 | "@angular/common": "^8.0.0", 6 | "@angular/core": "^8.0.0" 7 | }, 8 | "dependencies": { 9 | "gauge-chart": "^0.5.1" 10 | }, 11 | "scripts": { 12 | "precommit": "lint-staged" 13 | }, 14 | "lint-staged": { 15 | "*.{js,json,css}": [ 16 | "prettier --write", 17 | "git add" 18 | ], 19 | "*.ts": [ 20 | "prettier --write", 21 | "tslint --fix -c ./tslint.json 'src/**/*.ts'", 22 | "git add" 23 | ] 24 | }, 25 | "devDependencies": { 26 | "husky": "^0.14.3", 27 | "lint-staged": "^7.2.0", 28 | "prettier": "^1.13.6", 29 | "tslint": "^5.10.0" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/src/lib/gauge-chart.component.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-family: Roboto, 'Helvetica Neue', sans-serif; 3 | } 4 | 5 | .gauge-chart { 6 | display: flex; 7 | flex-direction: column; 8 | text-align: center; 9 | } 10 | 11 | .gauge-chart__label { 12 | font-weight: bold; 13 | } 14 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/src/lib/gauge-chart.component.html: -------------------------------------------------------------------------------- 1 |
2 | 5 | {{name}} 6 | 7 |
8 | 12 | {{bottomLabel}} 13 | 14 |
15 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/src/lib/gauge-chart.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing' 2 | 3 | import { GaugeChartComponent } from './gauge-chart.component' 4 | 5 | describe('GaugeChartComponent', () => { 6 | let component: GaugeChartComponent 7 | let fixture: ComponentFixture 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [GaugeChartComponent], 12 | }).compileComponents() 13 | })) 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(GaugeChartComponent) 17 | component = fixture.componentInstance 18 | fixture.detectChanges() 19 | }) 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy() 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/src/lib/gauge-chart.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Angular 2 decorators and services 3 | */ 4 | import { 5 | Component, 6 | Input, 7 | OnChanges, 8 | OnInit, 9 | ViewChild, 10 | DoCheck, 11 | } from '@angular/core' 12 | import * as GaugeChart from 'gauge-chart' 13 | 14 | /** 15 | * GaugeChart Component 16 | */ 17 | @Component({ 18 | selector: 'rg-gauge-chart', 19 | templateUrl: './gauge-chart.component.html', 20 | styleUrls: ['./gauge-chart.component.css'], 21 | }) 22 | export class GaugeChartComponent implements OnInit, OnChanges, DoCheck { 23 | @ViewChild('gaugeArea', { static: true }) gaugeArea 24 | 25 | @Input() canvasWidth: number 26 | @Input() needleValue: number 27 | @Input() centralLabel: string 28 | @Input() options 29 | @Input() wrapOptions? 30 | @Input() name?: string 31 | @Input() nameFont?: string 32 | @Input() bottomLabel?: string 33 | @Input() bottomLabelFont?: string 34 | 35 | public nameMargin: string 36 | public bottomLabelMargin: string 37 | 38 | private element 39 | private gaugeChart: any 40 | private oldOptions 41 | 42 | ngOnInit() { 43 | // calculate styles for name and bottomLabel 44 | if (this.name) { 45 | if (!this.nameFont) { 46 | this.nameFont = '' + Math.round(this.canvasWidth / 15) 47 | } 48 | this.nameMargin = '' + Math.round(+this.nameFont / 4) 49 | } 50 | 51 | if (this.bottomLabel) { 52 | if (!this.bottomLabelFont) { 53 | this.bottomLabelFont = '' + Math.round(this.canvasWidth / 10) 54 | } 55 | this.bottomLabelMargin = '-' + this.bottomLabelFont 56 | } 57 | 58 | if (this.optionsCheck()) { 59 | this.element = this.gaugeArea.nativeElement 60 | this.drawChart() 61 | } 62 | this.oldOptions = JSON.parse(JSON.stringify(this.options)) 63 | } 64 | 65 | optionsCheck() { 66 | if (this.canvasWidth == null) { 67 | console.warn('gauge-chart warning: canvasWidth is not specified!') 68 | return false 69 | } else if (this.needleValue == null) { 70 | console.warn('gauge-chart warning: needleValue is not specified!') 71 | return false 72 | } 73 | if (this.centralLabel == null) { 74 | this.centralLabel = '' 75 | } 76 | return true 77 | } 78 | 79 | ngDoCheck() { 80 | if (!this.areEqual(this.options, this.oldOptions)) { 81 | this.drawChart(true) 82 | this.oldOptions = JSON.parse(JSON.stringify(this.options)) 83 | } 84 | } 85 | 86 | areEqual(obj1, obj2) { 87 | return JSON.stringify(obj1) === JSON.stringify(obj2) 88 | } 89 | 90 | drawChart(redraw = false) { 91 | if (redraw) { 92 | this.gaugeChart.removeGauge() 93 | } 94 | this.options.centralLabel = this.centralLabel 95 | this.gaugeChart = GaugeChart.gaugeChart( 96 | this.element, 97 | this.canvasWidth, 98 | this.options, 99 | ) 100 | this.gaugeChart.updateNeedle(this.needleValue) 101 | } 102 | 103 | ngOnChanges(changes) { 104 | if (changes.needleValue && !changes.needleValue.firstChange) { 105 | this.needleValue = changes.needleValue.currentValue 106 | this.gaugeChart.updateNeedle(this.needleValue) 107 | } 108 | if (changes.centralLabel && !changes.centralLabel.firstChange) { 109 | this.centralLabel = changes.centralLabel.currentValue 110 | this.drawChart(true) 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/src/lib/gauge-chart.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { GaugeChartComponent } from './gauge-chart.component' 3 | 4 | @NgModule({ 5 | imports: [], 6 | declarations: [GaugeChartComponent], 7 | exports: [GaugeChartComponent], 8 | }) 9 | export class GaugeChartModule {} 10 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/src/public_api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Public API Surface of gauge-chart 3 | */ 4 | 5 | export * from './lib/gauge-chart.component' 6 | export * from './lib/gauge-chart.module' 7 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'core-js/es7/reflect' 4 | import 'zone.js/dist/zone' 5 | import 'zone.js/dist/zone-testing' 6 | import { getTestBed } from '@angular/core/testing' 7 | import { 8 | BrowserDynamicTestingModule, 9 | platformBrowserDynamicTesting, 10 | } from '@angular/platform-browser-dynamic/testing' 11 | 12 | declare const require: any 13 | 14 | // First, initialize the Angular testing environment. 15 | getTestBed().initTestEnvironment( 16 | BrowserDynamicTestingModule, 17 | platformBrowserDynamicTesting(), 18 | ) 19 | // Then we find all the tests. 20 | const context = require.context('./', true, /\.spec\.ts$/) 21 | // And load the modules. 22 | context.keys().map(context) 23 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/lib", 5 | "target": "es2015", 6 | "module": "es2015", 7 | "moduleResolution": "node", 8 | "declaration": true, 9 | "sourceMap": true, 10 | "inlineSources": true, 11 | "emitDecoratorMetadata": true, 12 | "experimentalDecorators": true, 13 | "importHelpers": true, 14 | "types": [], 15 | "lib": ["dom", "es2015"] 16 | }, 17 | "angularCompilerOptions": { 18 | "annotateForClosureCompiler": true, 19 | "skipTemplateCodegen": true, 20 | "strictMetadataEmit": true, 21 | "fullTemplateTypeCheck": true, 22 | "strictInjectionParameters": true, 23 | "flatModuleId": "AUTOGENERATED", 24 | "flatModuleOutFile": "AUTOGENERATED" 25 | }, 26 | "exclude": ["src/test.ts", "**/*.spec.ts"] 27 | } 28 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": ["jasmine", "node"] 6 | }, 7 | "files": ["src/test.ts"], 8 | "include": ["**/*.spec.ts", "**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /projects/angular-gauge-chart/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tslint.json", 3 | "rules": { 4 | "directive-selector": [true, "attribute", "rg", "camelCase"], 5 | "component-selector": [true, "element", "rg", "kebab-case"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/greetclock/angular-gauge-chart/7a334b7cde356522461935fc7101e9de0110d0ed/src/app/app.component.css -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |

4 | Welcome to {{ title }}! 5 |

6 | Angular Logo 7 |
8 |

Here are some links to help you start:

9 | 20 | 21 | -------------------------------------------------------------------------------- /src/app/app.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, async } from '@angular/core/testing' 2 | import { AppComponent } from './app.component' 3 | describe('AppComponent', () => { 4 | beforeEach(async(() => { 5 | TestBed.configureTestingModule({ 6 | declarations: [AppComponent], 7 | }).compileComponents() 8 | })) 9 | it('should create the app', async(() => { 10 | const fixture = TestBed.createComponent(AppComponent) 11 | const app = fixture.debugElement.componentInstance 12 | expect(app).toBeTruthy() 13 | })) 14 | it(`should have as title 'app'`, async(() => { 15 | const fixture = TestBed.createComponent(AppComponent) 16 | const app = fixture.debugElement.componentInstance 17 | expect(app.title).toEqual('app') 18 | })) 19 | it('should render title in a h1 tag', async(() => { 20 | const fixture = TestBed.createComponent(AppComponent) 21 | fixture.detectChanges() 22 | const compiled = fixture.debugElement.nativeElement 23 | expect(compiled.querySelector('h1').textContent).toContain( 24 | 'Welcome to test-proj!', 25 | ) 26 | })) 27 | }) 28 | -------------------------------------------------------------------------------- /src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | /** 4 | * App Component 5 | * Top Level Component 6 | */ 7 | @Component({ 8 | selector: 'app-root', 9 | template: ` 10 | 18 | `, 19 | }) 20 | export class AppComponent implements OnInit { 21 | public canvasWidth: number 22 | public needleValue: number 23 | public centralLabel: string 24 | public options 25 | public name = 'Gauge chart' 26 | // public nameFont = 30 27 | public bottomLabel = '65' 28 | // public bottomLabelFont = 28 29 | ngOnInit() { 30 | this.canvasWidth = 300 31 | this.needleValue = 65 32 | // this.centralLabel = '' + this.needleValue 33 | this.options = { 34 | hasNeedle: true, 35 | outerNeedle: false, 36 | needleColor: 'gray', 37 | needleStartValue: 10, 38 | needleUpdateSpeed: 1000, 39 | // arc options 40 | arcColors: [], 41 | arcDelimiters: [10, 60, 90], 42 | arcPadding: 6, 43 | arcPaddingColor: 'white', 44 | arcLabels: ['35', '210', '315'], 45 | } 46 | 47 | /*setInterval(() => { 48 | this.bottomLabel = '' + (+this.bottomLabel + 10) + '.0' 49 | }, 2000)*/ 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { BrowserModule } from '@angular/platform-browser' 3 | import { GaugeChartModule } from '../../projects/angular-gauge-chart/src/public_api' 4 | import { AppComponent } from './app.component' 5 | 6 | @NgModule({ 7 | declarations: [AppComponent], 8 | imports: [BrowserModule, GaugeChartModule], 9 | providers: [], 10 | bootstrap: [AppComponent], 11 | }) 12 | export class AppModule {} 13 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/greetclock/angular-gauge-chart/7a334b7cde356522461935fc7101e9de0110d0ed/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | } 4 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | } 8 | 9 | /* 10 | * In development mode, to ignore zone related error stack frames such as 11 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can 12 | * import the following file, but please comment it out in production mode 13 | * because it will have performance impact when throw error 14 | */ 15 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 16 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/greetclock/angular-gauge-chart/7a334b7cde356522461935fc7101e9de0110d0ed/src/favicon.ico -------------------------------------------------------------------------------- /src/gauge-chart.module.ts: -------------------------------------------------------------------------------- 1 | import { Component, NgModule } from '@angular/core' 2 | 3 | /* 4 | * Platform and Environment providers/directives/pipes 5 | */ 6 | // import { ENV_PROVIDERS } from './environment'; 7 | // App is our top level component 8 | import { GaugeChartComponent } from './gauge-chart' 9 | 10 | /** 11 | * `AppModule` is the main entry point into Angular2's bootstraping process 12 | */ 13 | @NgModule({ 14 | bootstrap: [GaugeChartComponent], 15 | declarations: [GaugeChartComponent], 16 | /** 17 | * Import Angular's modules. 18 | */ 19 | imports: [ 20 | // BrowserModule, 21 | ], 22 | /** 23 | * Expose our Services and Providers into Angular's dependency injection. 24 | */ 25 | /*providers: [ 26 | ENV_PROVIDERS, 27 | ]*/ 28 | }) 29 | export class GaugeChartModule {} 30 | -------------------------------------------------------------------------------- /src/gauge-chart/gauge-chart.component.html: -------------------------------------------------------------------------------- 1 |
2 | 5 | {{name}} 6 | 7 |
8 | 12 | {{bottomLabel}} 13 | 14 |
15 | -------------------------------------------------------------------------------- /src/gauge-chart/gauge-chart.component.scss: -------------------------------------------------------------------------------- 1 | * { font-family: Roboto, "Helvetica Neue", sans-serif; } 2 | 3 | .gauge-chart { 4 | display: flex; 5 | flex-direction: column; 6 | text-align: center; 7 | } 8 | 9 | .gauge-chart__label { font-weight: bold; } 10 | -------------------------------------------------------------------------------- /src/gauge-chart/gauge-chart.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Angular 2 decorators and services 3 | */ 4 | import { Component, Input, OnChanges, OnInit, ViewChild } from '@angular/core' 5 | import * as GaugeChart from 'gauge-chart' 6 | 7 | /** 8 | * GaugeChart Component 9 | */ 10 | @Component({ 11 | selector: 'gauge-chart', 12 | templateUrl: './gauge-chart.component.html', 13 | styleUrls: ['./gauge-chart.component.scss'], 14 | }) 15 | export class GaugeChartComponent implements OnInit, OnChanges { 16 | @ViewChild('gaugeArea', { static: true }) gaugeArea 17 | 18 | @Input() canvasWidth: number 19 | @Input() needleValue: number 20 | @Input() centralLabel: string 21 | @Input() options 22 | @Input() name: string 23 | @Input() nameFont: string 24 | @Input() bottomLabel: string 25 | @Input() bottomLabelFont: string 26 | 27 | public nameMargin: string 28 | public bottomLabelMargin: string 29 | 30 | private element 31 | private gaugeChart: any 32 | 33 | ngOnInit() { 34 | // calculate styles for name and bottomLabel 35 | if (this.name) { 36 | if (!this.nameFont) { 37 | this.nameFont = '' + Math.round(this.canvasWidth / 15) 38 | } 39 | this.nameMargin = '' + Math.round(+this.nameFont / 4) 40 | } 41 | 42 | if (this.bottomLabel) { 43 | if (!this.bottomLabelFont) { 44 | this.bottomLabelFont = '' + Math.round(this.canvasWidth / 10) 45 | } 46 | this.bottomLabelMargin = '-' + this.bottomLabelFont 47 | } 48 | 49 | if (this.optionsCheck()) { 50 | this.element = this.gaugeArea.nativeElement 51 | this.options.centralLabel = this.centralLabel 52 | // Drawing and updating the chart 53 | this.gaugeChart = GaugeChart.gaugeChart( 54 | this.element, 55 | this.canvasWidth, 56 | this.options, 57 | ) 58 | this.gaugeChart.updateNeedle(this.needleValue) 59 | } 60 | } 61 | 62 | optionsCheck() { 63 | if (this.canvasWidth == null) { 64 | console.warn('gauge-chart warning: canvasWidth is not specified!') 65 | return false 66 | } else if (this.needleValue == null) { 67 | console.warn('gauge-chart warning: needleValue is not specified!') 68 | return false 69 | } 70 | if (this.centralLabel == null) { 71 | this.centralLabel = '' 72 | } 73 | return true 74 | } 75 | 76 | ngOnChanges(changes) { 77 | if (changes.needleValue && !changes.needleValue.firstChange) { 78 | if ( 79 | changes.needleValue.currentValue !== changes.needleValue.previousValue 80 | ) { 81 | this.needleValue = changes.needleValue.currentValue 82 | this.gaugeChart.updateNeedle(this.needleValue) 83 | } 84 | } 85 | if (changes.centralLabel && !changes.centralLabel.firstChange) { 86 | if ( 87 | changes.centralLabel.currentValue !== changes.centralLabel.previousValue 88 | ) { 89 | this.gaugeChart.removeGauge() 90 | this.centralLabel = changes.centralLabel.currentValue 91 | this.options.centralLabel = this.centralLabel 92 | this.gaugeChart = GaugeChart.gaugeChart( 93 | this.element, 94 | this.canvasWidth, 95 | this.options, 96 | ) 97 | this.gaugeChart.updateNeedle(this.needleValue) 98 | } 99 | } 100 | if (changes.centralLabel && !changes.centralLabel.firstChange) { 101 | if ( 102 | changes.bottomLabel.currentValue !== changes.bottomLabel.previousValue 103 | ) { 104 | console.log(changes.bottomLabel.currentValue) 105 | } 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/gauge-chart/index.ts: -------------------------------------------------------------------------------- 1 | export * from './gauge-chart.component' 2 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TestProj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * App 3 | */ 4 | export * from './gauge-chart' 5 | export * from './gauge-chart.module' 6 | -------------------------------------------------------------------------------- /src/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage-istanbul-reporter'), 13 | require('@angular-devkit/build-angular/plugins/karma'), 14 | ], 15 | client: { 16 | clearContext: false, // leave Jasmine Spec Runner output visible in browser 17 | }, 18 | coverageIstanbulReporter: { 19 | dir: require('path').join(__dirname, '../coverage'), 20 | reports: ['html', 'lcovonly'], 21 | fixWebpackSourcePaths: true, 22 | }, 23 | reporters: ['progress', 'kjhtml'], 24 | port: 9876, 25 | colors: true, 26 | logLevel: config.LOG_INFO, 27 | autoWatch: true, 28 | browsers: ['Chrome'], 29 | singleRun: false, 30 | }) 31 | } 32 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core' 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic' 3 | 4 | import { AppModule } from './app/app.module' 5 | import { environment } from './environments/environment' 6 | 7 | if (environment.production) { 8 | enableProdMode() 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch(err => console.log(err)) 14 | -------------------------------------------------------------------------------- /src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/ 22 | // import 'core-js/es6/symbol'; 23 | // import 'core-js/es6/object'; 24 | // import 'core-js/es6/function'; 25 | // import 'core-js/es6/parse-int'; 26 | // import 'core-js/es6/parse-float'; 27 | // import 'core-js/es6/number'; 28 | // import 'core-js/es6/math'; 29 | // import 'core-js/es6/string'; 30 | // import 'core-js/es6/date'; 31 | // import 'core-js/es6/array'; 32 | // import 'core-js/es6/regexp'; 33 | // import 'core-js/es6/map'; 34 | // import 'core-js/es6/weak-map'; 35 | // import 'core-js/es6/set'; 36 | 37 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ 38 | // import 'classlist.js'; // Run `npm install --save classlist.js`. 39 | 40 | /** IE10 and IE11 requires the following for the Reflect API. */ 41 | // import 'core-js/es6/reflect'; 42 | 43 | /** Evergreen browsers require these. **/ 44 | // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. 45 | import 'core-js/es7/reflect' 46 | 47 | /** 48 | * Web Animations `@angular/platform-browser/animations` 49 | * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. 50 | * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). 51 | **/ 52 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 53 | 54 | /** 55 | * By default, zone.js will patch all possible macroTask and DomEvents 56 | * user can disable parts of macroTask/DomEvents patch by setting following flags 57 | */ 58 | 59 | // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame 60 | // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick 61 | // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames 62 | 63 | /* 64 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js 65 | * with the following flag, it will bypass `zone.js` patch for IE/Edge 66 | */ 67 | // (window as any).__Zone_enable_cross_context_check = true; 68 | 69 | /*************************************************************************************************** 70 | * Zone JS is required by default for Angular itself. 71 | */ 72 | import 'zone.js/dist/zone' // Included with Angular CLI. 73 | 74 | /*************************************************************************************************** 75 | * APPLICATION IMPORTS 76 | */ 77 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing' 4 | import { getTestBed } from '@angular/core/testing' 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting, 8 | } from '@angular/platform-browser-dynamic/testing' 9 | 10 | declare const require: any 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting(), 16 | ) 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/) 19 | // And load the modules. 20 | context.keys().map(context) 21 | -------------------------------------------------------------------------------- /src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": ["src/test.ts", "**/*.spec.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": ["jasmine", "node"] 6 | }, 7 | "files": ["test.ts", "polyfills.ts"], 8 | "include": ["**/*.spec.ts", "**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [true, "attribute", "app", "camelCase"], 5 | "component-selector": [true, "element", "app", "kebab-case"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "downlevelIteration": true, 6 | "module": "esnext", 7 | "outDir": "./dist/out-tsc", 8 | "sourceMap": true, 9 | "declaration": false, 10 | "moduleResolution": "node", 11 | "emitDecoratorMetadata": true, 12 | "experimentalDecorators": true, 13 | "target": "es5", 14 | "typeRoots": ["node_modules/@types"], 15 | "lib": ["es2017", "dom"], 16 | "paths": {} 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rulesDirectory": ["node_modules/codelyzer"], 3 | "rules": { 4 | "arrow-return-shorthand": true, 5 | "callable-types": true, 6 | "class-name": true, 7 | "comment-format": [true, "check-space"], 8 | "curly": true, 9 | "deprecation": { 10 | "severity": "warn" 11 | }, 12 | "eofline": true, 13 | "forin": true, 14 | "import-blacklist": [true, "rxjs/Rx"], 15 | "import-spacing": true, 16 | "indent": [true, "spaces"], 17 | "interface-over-type-literal": true, 18 | "label-position": true, 19 | "max-line-length": [true, 140], 20 | "member-access": false, 21 | "member-ordering": [ 22 | true, 23 | { 24 | "order": [ 25 | "static-field", 26 | "instance-field", 27 | "static-method", 28 | "instance-method" 29 | ] 30 | } 31 | ], 32 | "no-arg": true, 33 | "no-bitwise": true, 34 | "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], 35 | "no-construct": true, 36 | "no-debugger": true, 37 | "no-duplicate-super": true, 38 | "no-empty": false, 39 | "no-empty-interface": true, 40 | "no-eval": true, 41 | "no-inferrable-types": [true, "ignore-params"], 42 | "no-misused-new": true, 43 | "no-non-null-assertion": true, 44 | "no-shadowed-variable": true, 45 | "no-string-literal": false, 46 | "no-string-throw": true, 47 | "no-switch-case-fall-through": true, 48 | "no-trailing-whitespace": true, 49 | "no-unnecessary-initializer": true, 50 | "no-unused-expression": true, 51 | "no-use-before-declare": true, 52 | "no-var-keyword": true, 53 | "object-literal-sort-keys": false, 54 | "one-line": [ 55 | true, 56 | "check-open-brace", 57 | "check-catch", 58 | "check-else", 59 | "check-whitespace" 60 | ], 61 | "prefer-const": true, 62 | "quotemark": [true, "single"], 63 | "radix": true, 64 | "semicolon": [false, "always"], 65 | "triple-equals": [true, "allow-null-check"], 66 | "typedef-whitespace": [ 67 | true, 68 | { 69 | "call-signature": "nospace", 70 | "index-signature": "nospace", 71 | "parameter": "nospace", 72 | "property-declaration": "nospace", 73 | "variable-declaration": "nospace" 74 | } 75 | ], 76 | "unified-signatures": true, 77 | "variable-name": false, 78 | "whitespace": [ 79 | true, 80 | "check-branch", 81 | "check-decl", 82 | "check-operator", 83 | "check-separator", 84 | "check-type" 85 | ], 86 | "no-output-on-prefix": true, 87 | "no-inputs-metadata-property": true, 88 | "no-outputs-metadata-property": true, 89 | "no-host-metadata-property": true, 90 | "no-input-rename": true, 91 | "no-output-rename": true, 92 | "use-lifecycle-interface": true, 93 | "use-pipe-transform-interface": true, 94 | "component-class-suffix": true, 95 | "directive-class-suffix": true 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "mode": "modules", 3 | "out": "doc", 4 | "theme": "default", 5 | "ignoreCompilerErrors": "true", 6 | "experimentalDecorators": "true", 7 | "emitDecoratorMetadata": "true", 8 | "target": "ES5", 9 | "moduleResolution": "node", 10 | "preserveConstEnums": "true", 11 | "stripInternal": "true", 12 | "suppressExcessPropertyErrors": "true", 13 | "suppressImplicitAnyIndexErrors": "true", 14 | "module": "commonjs" 15 | } 16 | --------------------------------------------------------------------------------