├── .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 | 
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 | 
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\n \n {{name}}\n \n \n \n {{bottomLabel}}\n \n\n'},function(e,t,n){var o=n(5);e.exports="string"==typeof o?o:o.toString()},function(e,n){e.exports=t}])});
--------------------------------------------------------------------------------
/e2e/protractor.conf.js:
--------------------------------------------------------------------------------
1 | // Protractor configuration file, see link for more information
2 | // https://github.com/angular/protractor/blob/master/lib/config.ts
3 |
4 | const { SpecReporter } = require('jasmine-spec-reporter')
5 |
6 | exports.config = {
7 | allScriptsTimeout: 11000,
8 | specs: ['./src/**/*.e2e-spec.ts'],
9 | capabilities: {
10 | browserName: 'chrome',
11 | },
12 | directConnect: true,
13 | baseUrl: 'http://localhost:4200/',
14 | framework: 'jasmine',
15 | jasmineNodeOpts: {
16 | showColors: true,
17 | defaultTimeoutInterval: 30000,
18 | print: function() {},
19 | },
20 | onPrepare() {
21 | require('ts-node').register({
22 | project: require('path').join(__dirname, './tsconfig.e2e.json'),
23 | })
24 | jasmine
25 | .getEnv()
26 | .addReporter(new SpecReporter({ spec: { displayStacktrace: true } }))
27 | },
28 | }
29 |
--------------------------------------------------------------------------------
/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po'
2 |
3 | describe('workspace-project App', () => {
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 |

7 |
8 | Here are some links to help you start:
9 |
10 | -
11 |
12 |
13 | -
14 |
15 |
16 | -
17 |
18 |
19 |
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 |
--------------------------------------------------------------------------------