├── docs
├── .nojekyll
├── CNAME
├── static
│ ├── favicon.ico
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── mstile-144x144.png
│ ├── mstile-150x150.png
│ ├── mstile-310x150.png
│ ├── mstile-310x310.png
│ ├── mstile-70x70.png
│ ├── apple-touch-icon.png
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ ├── browserconfig.xml
│ ├── manifest.json
│ ├── safari-pinned-tab.svg
│ ├── js
│ │ ├── manifest.0a9253472a5566cedcd2.js
│ │ ├── manifest.0a9253472a5566cedcd2.js.map
│ │ └── app.1db17d892b9b7bdf1009.js
│ └── css
│ │ ├── app.86a87a30eefc312b5c19ab481df08fae.css
│ │ └── app.86a87a30eefc312b5c19ab481df08fae.css.map
└── index.html
├── static
├── .gitkeep
├── favicon.ico
├── favicon-16x16.png
├── favicon-32x32.png
├── mstile-144x144.png
├── mstile-150x150.png
├── mstile-310x150.png
├── mstile-310x310.png
├── mstile-70x70.png
├── apple-touch-icon.png
├── android-chrome-192x192.png
├── android-chrome-512x512.png
├── browserconfig.xml
├── manifest.json
└── safari-pinned-tab.svg
├── .eslintignore
├── config
├── prod.env.js
├── test.env.js
├── dev.env.js
└── index.js
├── src
├── assets
│ ├── logo.png
│ └── styles
│ │ ├── _variables.scss
│ │ ├── _base.scss
│ │ ├── _colors.scss
│ │ └── _mixins.scss
├── mixins
│ └── Printable.js
├── utils
│ ├── dateFormatter.js
│ └── downloadFormatter.js
├── main.js
├── router
│ └── index.js
├── App.vue
├── components
│ ├── Download.vue
│ ├── Footer.vue
│ ├── PackageInfo.vue
│ ├── LineChart.vue
│ ├── BarChart.vue
│ └── Header.vue
└── pages
│ └── Start.vue
├── test
├── unit
│ ├── .eslintrc
│ ├── specs
│ │ └── Hello.spec.js
│ ├── index.js
│ └── karma.conf.js
└── e2e
│ ├── specs
│ └── test.js
│ ├── custom-assertions
│ └── elementCount.js
│ ├── runner.js
│ └── nightwatch.conf.js
├── .gitignore
├── .editorconfig
├── .postcssrc.js
├── .babelrc
├── index.html
├── .eslintrc.js
├── README.md
├── CHANGELOG.md
└── package.json
/docs/.nojekyll:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/CNAME:
--------------------------------------------------------------------------------
1 | npm-stats.org
2 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | build/*.js
2 | config/*.js
3 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"'
3 | }
4 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/favicon.ico
--------------------------------------------------------------------------------
/docs/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/favicon.ico
--------------------------------------------------------------------------------
/static/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/favicon-16x16.png
--------------------------------------------------------------------------------
/static/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/favicon-32x32.png
--------------------------------------------------------------------------------
/static/mstile-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/mstile-144x144.png
--------------------------------------------------------------------------------
/static/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/mstile-150x150.png
--------------------------------------------------------------------------------
/static/mstile-310x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/mstile-310x150.png
--------------------------------------------------------------------------------
/static/mstile-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/mstile-310x310.png
--------------------------------------------------------------------------------
/static/mstile-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/mstile-70x70.png
--------------------------------------------------------------------------------
/static/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/apple-touch-icon.png
--------------------------------------------------------------------------------
/docs/static/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/favicon-16x16.png
--------------------------------------------------------------------------------
/docs/static/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/favicon-32x32.png
--------------------------------------------------------------------------------
/docs/static/mstile-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/mstile-144x144.png
--------------------------------------------------------------------------------
/docs/static/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/mstile-150x150.png
--------------------------------------------------------------------------------
/docs/static/mstile-310x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/mstile-310x150.png
--------------------------------------------------------------------------------
/docs/static/mstile-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/mstile-310x310.png
--------------------------------------------------------------------------------
/docs/static/mstile-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/mstile-70x70.png
--------------------------------------------------------------------------------
/docs/static/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/apple-touch-icon.png
--------------------------------------------------------------------------------
/static/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/android-chrome-192x192.png
--------------------------------------------------------------------------------
/static/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/static/android-chrome-512x512.png
--------------------------------------------------------------------------------
/docs/static/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/android-chrome-192x192.png
--------------------------------------------------------------------------------
/docs/static/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apertureless/npm-stats/HEAD/docs/static/android-chrome-512x512.png
--------------------------------------------------------------------------------
/test/unit/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "mocha": true
4 | },
5 | "globals": {
6 | "expect": true,
7 | "sinon": true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/config/test.env.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var devEnv = require('./dev.env')
3 |
4 | module.exports = merge(devEnv, {
5 | NODE_ENV: '"testing"'
6 | })
7 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var prodEnv = require('./prod.env')
3 |
4 | module.exports = merge(prodEnv, {
5 | NODE_ENV: '"development"'
6 | })
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | test/unit/coverage
8 | test/e2e/reports
9 | selenium-debug.log
10 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/src/mixins/Printable.js:
--------------------------------------------------------------------------------
1 | export default {
2 | methods: {
3 | download () {
4 | let image = this.$refs.canvas.toDataURL('image/png')
5 | this.$emit('generate', image)
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | // to edit target browsers: use "browserlist" field in package.json
6 | "autoprefixer": {}
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", { "modules": false }],
4 | "stage-2"
5 | ],
6 | "plugins": ["transform-runtime"],
7 | "comments": false,
8 | "env": {
9 | "test": {
10 | "presets": ["env", "stage-2"],
11 | "plugins": [ "istanbul" ]
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/static/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #ffc40d
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/docs/static/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #ffc40d
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/utils/dateFormatter.js:
--------------------------------------------------------------------------------
1 | import moment from 'moment'
2 |
3 | export const dateToYear = date => moment(date).format('YYYY')
4 | export const dateToMonth = date => moment(date).format('MMM YYYY')
5 | export const dateToWeek = date => moment(date).format('GGGG-[W]WW')
6 | export const dateToDay = date => moment(date).format('YYYY-MM-DD')
7 | export const dateBeautify = date => moment(date).format('Do MMMM YYYY')
8 |
--------------------------------------------------------------------------------
/test/unit/specs/Hello.spec.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Hello from '@/components/Hello'
3 |
4 | describe('Hello.vue', () => {
5 | it('should render correct contents', () => {
6 | const Constructor = Vue.extend(Hello)
7 | const vm = new Constructor().$mount()
8 | expect(vm.$el.querySelector('.hello h1').textContent)
9 | .to.equal('Welcome to Your Vue.js App')
10 | })
11 | })
12 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue'
4 | import App from './App'
5 | import router from './router'
6 |
7 | Vue.config.productionTip = false
8 |
9 | /* eslint-disable no-new */
10 | new Vue({
11 | el: '#app',
12 | router,
13 | template: ' ',
14 | components: { App }
15 | })
16 |
--------------------------------------------------------------------------------
/src/assets/styles/_variables.scss:
--------------------------------------------------------------------------------
1 | @import "~normalize.css/normalize.css";
2 | @import "~@nextindex/next-scss/next-scss";
3 | @import "mixins";
4 | @import "colors";
5 |
6 | $base-font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;
7 | $heading-font-family: $base-font-family;
8 | $base-font-size: rem(16);
9 | $base-line-height: 1.3;
10 | $base-border-radius: rem(4);
11 | $base-container-width: rem(1440);
12 |
13 | @import "base";
14 |
15 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import StartPage from '@/pages/Start'
4 | import Meta from 'vue-meta'
5 |
6 | Vue.use(Meta)
7 | Vue.use(Router)
8 |
9 | export default new Router({
10 | routes: [
11 | {
12 | path: '/',
13 | name: 'Start',
14 | component: StartPage
15 | },
16 | {
17 | path: '/:package',
18 | name: 'Package',
19 | component: StartPage
20 | }
21 | ]
22 | })
23 |
--------------------------------------------------------------------------------
/src/assets/styles/_base.scss:
--------------------------------------------------------------------------------
1 | body {
2 | -ms-text-size-adjust: 100%;
3 | -webkit-text-size-adjust: 100%;
4 | color: color(text-color);
5 | font-family: $base-font-family;
6 | font-feature-settings: "kern", "liga", "pnum";
7 | font-size: $base-font-size;
8 | line-height: $base-line-height;
9 | -webkit-font-smoothing: antialiased;
10 | margin: 0;
11 | background: color(ghost-white);
12 | }
13 |
14 | h1, h2, h3, h4 {
15 | font-family: $heading-font-family;
16 | }
17 |
--------------------------------------------------------------------------------
/static/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "npm-stats",
3 | "icons": [
4 | {
5 | "src": "/android-chrome-192x192.png",
6 | "sizes": "192x192",
7 | "type": "image/png"
8 | },
9 | {
10 | "src": "/android-chrome-512x512.png",
11 | "sizes": "512x512",
12 | "type": "image/png"
13 | }
14 | ],
15 | "theme_color": "#ffffff",
16 | "background_color": "#ffffff",
17 | "display": "standalone"
18 | }
--------------------------------------------------------------------------------
/docs/static/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "npm-stats",
3 | "icons": [
4 | {
5 | "src": "/android-chrome-192x192.png",
6 | "sizes": "192x192",
7 | "type": "image/png"
8 | },
9 | {
10 | "src": "/android-chrome-512x512.png",
11 | "sizes": "512x512",
12 | "type": "image/png"
13 | }
14 | ],
15 | "theme_color": "#ffffff",
16 | "background_color": "#ffffff",
17 | "display": "standalone"
18 | }
--------------------------------------------------------------------------------
/test/unit/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.config.productionTip = false
4 |
5 | // require all test files (files that ends with .spec.js)
6 | const testsContext = require.context('./specs', true, /\.spec$/)
7 | testsContext.keys().forEach(testsContext)
8 |
9 | // require all src files except main.js for coverage.
10 | // you can also change this to match only the subset of files that
11 | // you want coverage for.
12 | const srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)/)
13 | srcContext.keys().forEach(srcContext)
14 |
--------------------------------------------------------------------------------
/src/assets/styles/_colors.scss:
--------------------------------------------------------------------------------
1 | $colors: (
2 | ghost-white: #FAFBFE,
3 | fjord: #4F5566,
4 | robin-egg-blue: #00C4C9,
5 | solitude: #E8E9ED,
6 | background-primary: color(ghost-white),
7 | background-secondary: color(fjord),
8 | text-color: color(fjord),
9 | highlight-color: color(robin-egg-blue),
10 | dark-gray: color(solitude)
11 | );
12 |
13 | @function color($name) {
14 | @if map-has-key(getColors(), $name) {
15 | @return map-get(getColors(), $name);
16 | } @else {
17 | @warn "Color not found: #{$name}";
18 | @return #000;
19 | }
20 | }
21 |
22 | @function getColors() {
23 | @return $colors;
24 | }
25 |
--------------------------------------------------------------------------------
/test/e2e/specs/test.js:
--------------------------------------------------------------------------------
1 | // For authoring Nightwatch tests, see
2 | // http://nightwatchjs.org/guide#usage
3 |
4 | module.exports = {
5 | 'default e2e tests': function (browser) {
6 | // automatically uses dev Server port from /config.index.js
7 | // default: http://localhost:8080
8 | // see nightwatch.conf.js
9 | const devServer = browser.globals.devServerURL
10 |
11 | browser
12 | .url(devServer)
13 | .waitForElementVisible('#app', 5000)
14 | .assert.elementPresent('.hello')
15 | .assert.containsText('h1', 'Welcome to Your Vue.js App')
16 | .assert.elementCount('img', 1)
17 | .end()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/utils/downloadFormatter.js:
--------------------------------------------------------------------------------
1 | export function removeDuplicate (a, b) {
2 | if (a.indexOf(b) < 0) {
3 | a.push(b)
4 | }
5 | return a
6 | }
7 |
8 | export const groupData = (data, transformer) => {
9 | return data.reduce((date, current) => {
10 | if (date.indexOf(transformer(current.day)) < 0) {
11 | date.push(transformer(current.day))
12 | }
13 | return date
14 | }, [])
15 | .map((date) => {
16 | return {
17 | date: date,
18 | downloads: data.filter(el => transformer(el.day) === date)
19 | .map(el => el.downloads)
20 | .reduce((total, download) => total + download)
21 | }
22 | })
23 | .map(element => element.downloads)
24 | }
25 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // http://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parser: 'babel-eslint',
6 | parserOptions: {
7 | sourceType: 'module'
8 | },
9 | env: {
10 | browser: true,
11 | },
12 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
13 | extends: 'standard',
14 | // required to lint *.vue files
15 | plugins: [
16 | 'html'
17 | ],
18 | // add your custom rules here
19 | 'rules': {
20 | // allow paren-less arrow functions
21 | 'arrow-parens': 0,
22 | // allow async-await
23 | 'generator-star-spacing': 0,
24 | // allow debugger during development
25 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
24 |
25 |
37 |
--------------------------------------------------------------------------------
/src/components/Download.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 | 🖨
9 |
10 |
11 |
12 |
27 |
28 |
42 |
--------------------------------------------------------------------------------
/test/e2e/custom-assertions/elementCount.js:
--------------------------------------------------------------------------------
1 | // A custom Nightwatch assertion.
2 | // the name of the method is the filename.
3 | // can be used in tests like this:
4 | //
5 | // browser.assert.elementCount(selector, count)
6 | //
7 | // for how to write custom assertions see
8 | // http://nightwatchjs.org/guide#writing-custom-assertions
9 | exports.assertion = function (selector, count) {
10 | this.message = 'Testing if element <' + selector + '> has count: ' + count
11 | this.expected = count
12 | this.pass = function (val) {
13 | return val === this.expected
14 | }
15 | this.value = function (res) {
16 | return res.value
17 | }
18 | this.command = function (cb) {
19 | var self = this
20 | return this.api.execute(function (selector) {
21 | return document.querySelectorAll(selector).length
22 | }, [selector], function (res) {
23 | cb.call(self, res)
24 | })
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/static/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 | Created by potrace 1.11, written by Peter Selinger 2001-2013
9 |
10 |
12 |
15 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/static/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 | Created by potrace 1.11, written by Peter Selinger 2001-2013
9 |
10 |
12 |
15 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/components/Footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
13 |
14 |
35 |
36 |
--------------------------------------------------------------------------------
/test/unit/karma.conf.js:
--------------------------------------------------------------------------------
1 | // This is a karma config file. For more details see
2 | // http://karma-runner.github.io/0.13/config/configuration-file.html
3 | // we are also using it with karma-webpack
4 | // https://github.com/webpack/karma-webpack
5 |
6 | var webpackConfig = require('../../build/webpack.test.conf')
7 |
8 | module.exports = function (config) {
9 | config.set({
10 | // to run in additional browsers:
11 | // 1. install corresponding karma launcher
12 | // http://karma-runner.github.io/0.13/config/browsers.html
13 | // 2. add it to the `browsers` array below.
14 | browsers: ['PhantomJS'],
15 | frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'],
16 | reporters: ['spec', 'coverage'],
17 | files: ['./index.js'],
18 | preprocessors: {
19 | './index.js': ['webpack', 'sourcemap']
20 | },
21 | webpack: webpackConfig,
22 | webpackMiddleware: {
23 | noInfo: true
24 | },
25 | coverageReporter: {
26 | dir: './coverage',
27 | reporters: [
28 | { type: 'lcov', subdir: '.' },
29 | { type: 'text-summary' }
30 | ]
31 | }
32 | })
33 | }
34 |
--------------------------------------------------------------------------------
/test/e2e/runner.js:
--------------------------------------------------------------------------------
1 | // 1. start the dev server using production config
2 | process.env.NODE_ENV = 'testing'
3 | var server = require('../../build/dev-server.js')
4 |
5 | server.ready.then(() => {
6 | // 2. run the nightwatch test suite against it
7 | // to run in additional browsers:
8 | // 1. add an entry in test/e2e/nightwatch.conf.json under "test_settings"
9 | // 2. add it to the --env flag below
10 | // or override the environment flag, for example: `npm run e2e -- --env chrome,firefox`
11 | // For more information on Nightwatch's config file, see
12 | // http://nightwatchjs.org/guide#settings-file
13 | var opts = process.argv.slice(2)
14 | if (opts.indexOf('--config') === -1) {
15 | opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js'])
16 | }
17 | if (opts.indexOf('--env') === -1) {
18 | opts = opts.concat(['--env', 'chrome'])
19 | }
20 |
21 | var spawn = require('cross-spawn')
22 | var runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' })
23 |
24 | runner.on('exit', function (code) {
25 | server.close()
26 | process.exit(code)
27 | })
28 |
29 | runner.on('error', function (err) {
30 | server.close()
31 | throw err
32 | })
33 | })
34 |
--------------------------------------------------------------------------------
/src/assets/styles/_mixins.scss:
--------------------------------------------------------------------------------
1 | @mixin container() {
2 | max-width: $base-container-width;
3 | margin: 0 auto;
4 | padding: 0 20px;
5 | width: 100%;
6 | box-sizing: border-box;
7 | }
8 |
9 | @mixin fill-parent() {
10 | position: absolute;
11 | left: 0;
12 | top: 0;
13 | width: 100%;
14 | height: 100%;
15 | }
16 |
17 | [v-cloak] {
18 | display: none;
19 | }
20 |
21 | @mixin unselectable {
22 | -webkit-user-select: none;
23 | -moz-user-select: none;
24 | user-select: none;
25 | cursor: default;
26 | }
27 |
28 | @mixin unclickable {
29 | @include unselectable;
30 | pointer-events: none;
31 | }
32 |
33 | @mixin hover-active-states() {
34 | &:hover, &:focus, &:active {
35 | @content;
36 | }
37 | }
38 |
39 | @mixin center-vertically() {
40 | position: absolute;
41 | top: 50%;
42 | transform: translateY(-50%);
43 | }
44 |
45 | @mixin center-horizontally() {
46 | position: absolute;
47 | left: 50%;
48 | transform: translateX(-50%);
49 | }
50 |
51 | @mixin center() {
52 | @include center-vertically();
53 | @include center-horizontally();
54 | transform: translateX(-50%) translateY(-50%);
55 | }
56 |
57 | @mixin unstyled-list() {
58 | list-style: none;
59 | margin: 0;
60 | padding: 0;
61 | }
62 |
--------------------------------------------------------------------------------
/test/e2e/nightwatch.conf.js:
--------------------------------------------------------------------------------
1 | require('babel-register')
2 | var config = require('../../config')
3 |
4 | // http://nightwatchjs.org/gettingstarted#settings-file
5 | module.exports = {
6 | src_folders: ['test/e2e/specs'],
7 | output_folder: 'test/e2e/reports',
8 | custom_assertions_path: ['test/e2e/custom-assertions'],
9 |
10 | selenium: {
11 | start_process: true,
12 | server_path: require('selenium-server').path,
13 | host: '127.0.0.1',
14 | port: 4444,
15 | cli_args: {
16 | 'webdriver.chrome.driver': require('chromedriver').path
17 | }
18 | },
19 |
20 | test_settings: {
21 | default: {
22 | selenium_port: 4444,
23 | selenium_host: 'localhost',
24 | silent: true,
25 | globals: {
26 | devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
27 | }
28 | },
29 |
30 | chrome: {
31 | desiredCapabilities: {
32 | browserName: 'chrome',
33 | javascriptEnabled: true,
34 | acceptSslCerts: true
35 | }
36 | },
37 |
38 | firefox: {
39 | desiredCapabilities: {
40 | browserName: 'firefox',
41 | javascriptEnabled: true,
42 | acceptSslCerts: true
43 | }
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # npm-stats
6 |
7 | > Generate beautiful charts from your npm package statistics
8 |
9 | ## Visit
10 |
11 | [www.npm-stats.org](http://www.npm-stats.org)
12 |
13 | ## 👨🏫 Tutorial
14 |
15 | If you want you can learn how to build a similar service with following tutorials:
16 |
17 | - [Let’s Build a Web App with Vue, Chart.js and an API](https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44)
18 | - [Let’s Build a Web App with Vue, Chart.js and an API Part II](https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf)
19 |
20 | ## Build Setup
21 |
22 | ``` bash
23 | # install dependencies
24 | npm install
25 |
26 | # serve with hot reload at localhost:8080
27 | npm run dev
28 |
29 | # build for production with minification
30 | npm run build
31 |
32 | # build for production and view the bundle analyzer report
33 | npm run build --report
34 |
35 | # run unit tests
36 | npm run unit
37 |
38 | # run e2e tests
39 | npm run e2e
40 |
41 | # run all tests
42 | npm test
43 | ```
44 |
45 | ## Support
46 |
47 |
--------------------------------------------------------------------------------
/docs/static/js/manifest.0a9253472a5566cedcd2.js:
--------------------------------------------------------------------------------
1 | !function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,i){for(var u,a,f,s=0,l=[];s
2 |
3 |
{{ packageName }}
4 |
5 |
6 | {{ totalDownloads.toLocaleString() }} Total Downloads
7 |
8 |
9 | {{ period }} Period
10 |
11 |
14 |
15 |
16 |
17 |
18 |
38 |
39 |
84 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4 |
5 |
6 | ## [1.5.1](https://github.com/apertureless/npm-stats/compare/v1.5.0...v1.5.1) (2018-05-27)
7 |
8 |
9 | ### Bug Fixes
10 |
11 | * **privacy:** Remove vue ga script ([5ab2879](https://github.com/apertureless/npm-stats/commit/5ab2879))
12 |
13 |
14 |
15 |
16 | # [1.5.0](https://github.com/apertureless/npm-stats/compare/v1.4.0...v1.5.0) (2018-05-25)
17 |
18 |
19 | ### Features
20 |
21 | * **privacy:** Remove GA ([bf9e6e2](https://github.com/apertureless/npm-stats/commit/bf9e6e2))
22 | * **privacy:** Remove vue-cookie-law as no longer needed ([d9f2e27](https://github.com/apertureless/npm-stats/commit/d9f2e27))
23 |
24 |
25 |
26 |
27 | # [1.4.0](https://github.com/apertureless/npm-stats/compare/v1.3.0...v1.4.0) (2018-03-12)
28 |
29 |
30 | ### Bug Fixes
31 |
32 | * **footer:** Add links to twitter and target news ([dadcefa](https://github.com/apertureless/npm-stats/commit/dadcefa))
33 |
34 |
35 | ### Features
36 |
37 | * **charts:** Add download button to save charts as png ([3ee43ec](https://github.com/apertureless/npm-stats/commit/3ee43ec))
38 |
39 |
40 |
41 |
42 | # [1.3.0](https://github.com/apertureless/npm-stats/compare/v1.2.0...v1.3.0) (2018-03-12)
43 |
44 |
45 | ### Bug Fixes
46 |
47 | * **barchart:** Fix tooltip title ([7381068](https://github.com/apertureless/npm-stats/commit/7381068))
48 | * Infinite loader if package not found ([0cc1352](https://github.com/apertureless/npm-stats/commit/0cc1352))
49 |
50 |
51 | ### Features
52 |
53 | * **chart:** Add bar chart for downloads per year chart ([8568856](https://github.com/apertureless/npm-stats/commit/8568856))
54 |
55 |
56 |
57 |
58 | # [1.2.0](https://github.com/apertureless/npm-stats/compare/v1.1.0...v1.2.0) (2018-03-12)
59 |
60 |
61 | ### Bug Fixes
62 |
63 | * **dependencies:** Update dependencies ([ac3ebbf](https://github.com/apertureless/npm-stats/commit/ac3ebbf))
64 |
65 |
66 | ### Features
67 |
68 | * **tooltip:** Add emoji and number seperator ([953f08b](https://github.com/apertureless/npm-stats/commit/953f08b))
69 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "npm-stats",
3 | "version": "1.5.1",
4 | "description": "A Vue.js project",
5 | "author": "Jakub Juszczak ",
6 | "private": true,
7 | "scripts": {
8 | "dev": "node build/dev-server.js",
9 | "start": "node build/dev-server.js",
10 | "build": "node build/build.js",
11 | "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
12 | "e2e": "node test/e2e/runner.js",
13 | "test": "npm run unit && npm run e2e",
14 | "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
15 | },
16 | "dependencies": {
17 | "axios": "^0.18.0",
18 | "chart.js": "^2.7.2",
19 | "moment": "^2.21.0",
20 | "vue": "^2.5.15",
21 | "vue-analytics": "^5.9.1",
22 | "vue-chartjs": "^3.2.1",
23 | "vue-cookie-law": "^1.4.0",
24 | "vue-router": "^3.0.1",
25 | "vuejs-datepicker": "^0.9.29"
26 | },
27 | "devDependencies": {
28 | "@nextindex/next-scss": "^1.2.1",
29 | "autoprefixer": "^6.7.2",
30 | "babel-core": "^6.26.0",
31 | "babel-eslint": "^8.2.2",
32 | "babel-loader": "^7.1.4",
33 | "babel-plugin-istanbul": "^3.1.2",
34 | "babel-plugin-transform-runtime": "^6.22.0",
35 | "babel-preset-env": "^1.6.1",
36 | "babel-preset-stage-2": "^6.22.0",
37 | "babel-register": "^6.26.0",
38 | "chai": "^3.5.0",
39 | "chalk": "^1.1.3",
40 | "chromedriver": "^2.27.2",
41 | "connect-history-api-fallback": "^1.3.0",
42 | "copy-webpack-plugin": "^4.0.1",
43 | "cross-env": "^3.1.4",
44 | "cross-spawn": "^5.0.1",
45 | "css-loader": "^0.28.10",
46 | "eslint": "^3.14.1",
47 | "eslint-config-standard": "^6.2.1",
48 | "eslint-friendly-formatter": "^2.0.7",
49 | "eslint-loader": "^1.6.1",
50 | "eslint-plugin-html": "^2.0.0",
51 | "eslint-plugin-promise": "^3.4.0",
52 | "eslint-plugin-standard": "^2.0.1",
53 | "eventsource-polyfill": "^0.9.6",
54 | "express": "^4.14.1",
55 | "extract-text-webpack-plugin": "^2.0.0",
56 | "file-loader": "^0.10.0",
57 | "friendly-errors-webpack-plugin": "^1.1.3",
58 | "html-webpack-plugin": "^2.28.0",
59 | "http-proxy-middleware": "^0.17.3",
60 | "inject-loader": "^2.0.1",
61 | "karma": "^1.4.1",
62 | "karma-coverage": "^1.1.1",
63 | "karma-mocha": "^1.3.0",
64 | "karma-phantomjs-launcher": "^1.0.2",
65 | "karma-phantomjs-shim": "^1.4.0",
66 | "karma-sinon-chai": "^1.2.4",
67 | "karma-sourcemap-loader": "^0.3.7",
68 | "karma-spec-reporter": "0.0.26",
69 | "karma-webpack": "^2.0.2",
70 | "lolex": "^1.5.2",
71 | "mocha": "^3.2.0",
72 | "nightwatch": "^0.9.12",
73 | "node-sass": "^4.8.1",
74 | "normalize.css": "^6.0.0",
75 | "opn": "^4.0.2",
76 | "optimize-css-assets-webpack-plugin": "^1.3.0",
77 | "ora": "^1.1.0",
78 | "phantomjs-prebuilt": "^2.1.14",
79 | "rimraf": "^2.6.0",
80 | "sass-loader": "^6.0.7",
81 | "selenium-server": "^3.0.1",
82 | "semver": "^5.3.0",
83 | "shelljs": "^0.7.6",
84 | "sinon": "^2.1.0",
85 | "sinon-chai": "^2.8.0",
86 | "url-loader": "^0.5.8",
87 | "vue-loader": "^14.2.1",
88 | "vue-meta": "^1.2.0",
89 | "vue-style-loader": "^4.0.2",
90 | "vue-template-compiler": "^2.5.15",
91 | "webpack": "^2.2.1",
92 | "webpack-bundle-analyzer": "^2.2.1",
93 | "webpack-dev-middleware": "^1.10.0",
94 | "webpack-hot-middleware": "^2.16.1",
95 | "webpack-merge": "^2.6.1"
96 | },
97 | "engines": {
98 | "node": ">= 4.0.0",
99 | "npm": ">= 3.0.0"
100 | },
101 | "browserslist": [
102 | "> 1%",
103 | "last 2 versions",
104 | "not ie <= 8"
105 | ]
106 | }
107 |
--------------------------------------------------------------------------------
/src/components/LineChart.vue:
--------------------------------------------------------------------------------
1 |
129 |
--------------------------------------------------------------------------------
/src/components/BarChart.vue:
--------------------------------------------------------------------------------
1 |
135 |
--------------------------------------------------------------------------------
/docs/static/css/app.86a87a30eefc312b5c19ab481df08fae.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v6.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}.Cookie__button{background:#00c4c9!important}.Cookie__button:active,.Cookie__button:focus,.Cookie__button:hover{background:#009296!important}.Header{padding:1.875rem 2.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.Header__logo{font-size:1rem;font-weight:600}footer{background-color:#4f5566;color:#fff;font-size:1rem;padding:1.875rem 2.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}footer a{color:#00c4c9}footer a:active,footer a:focus,footer a:hover{background:#006163}hr{display:block;height:1px;border:0;border-top:1px solid #e8e9ed;margin:1em 0;padding:0}.content{background:#fafbfe;min-height:calc(100vh - 207px)}.title{text-align:center;color:#4f5566}.container{max-width:90rem;margin:0 auto;padding:0 20px;width:100%;box-sizing:border-box}.loading{text-align:center;color:#4f5566;font-size:1.125rem}.error-message{text-align:center;color:#00c4c9}.Search__container{max-width:40rem;padding:6.25rem 0 1.25rem;margin:0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media screen and (min-width:48rem){.Search__container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.Search__input{padding:1.25rem;background-color:#fff;border:1px solid #e8e9ed;font-size:1rem;-webkit-box-flex:1;-ms-flex:1;flex:1}.Search__button{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:1.125rem 2.8125rem;margin-left:1.25rem;border:0;border-radius:0;cursor:pointer;text-align:center;font-size:1.3125rem;font-weight:600;color:#fff;background:#00c4c9}.Search__button:active,.Search__button:focus,.Search__button:hover{background:#009296}.Search__icon{width:2.5rem;height:2.5rem;margin-left:.9375rem;cursor:pointer;color:#4f5566}.Search__icon:active,.Search__icon:focus,.Search__icon:hover{color:#00c4c9}.Search__icon>svg{fill:currentColor}.Search__settings{max-width:40rem;margin:0 auto;padding:1.25rem 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.Search__settings .vdp-datepicker+.vdp-datepicker{margin-left:1.25rem;-webkit-box-flex:1;-ms-flex:1;flex:1}.Chart__container{border-radius:.25rem;background-color:#fff;box-shadow:0 15px 30px 0 rgba(0,0,0,.11),0 5px 15px 0 rgba(0,0,0,.08);padding:1.25rem 2.5rem;margin:3.125rem 0}.Chart__title{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-bottom:1.25rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.Chart__title,.Chart__title h2{display:-webkit-box;display:-ms-flexbox;display:flex}.Chart__title h2{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#4f5566;margin:0;font-weight:600;font-size:1rem}.Chart__title h2>span{font-weight:400;color:#00c4c9;font-size:1rem;margin-left:1.5625rem}.sk-cube-grid{width:40px;height:40px;margin:100px auto}.sk-cube-grid .sk-cube{width:33%;height:33%;background-color:#00c4c9;float:left;-webkit-animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}.sk-cube-grid .sk-cube1{-webkit-animation-delay:.2s;animation-delay:.2s}.sk-cube-grid .sk-cube2{-webkit-animation-delay:.3s;animation-delay:.3s}.sk-cube-grid .sk-cube3{-webkit-animation-delay:.4s;animation-delay:.4s}.sk-cube-grid .sk-cube4{-webkit-animation-delay:.1s;animation-delay:.1s}.sk-cube-grid .sk-cube5{-webkit-animation-delay:.2s;animation-delay:.2s}.sk-cube-grid .sk-cube6{-webkit-animation-delay:.3s;animation-delay:.3s}.sk-cube-grid .sk-cube7{-webkit-animation-delay:0s;animation-delay:0s}.sk-cube-grid .sk-cube8{-webkit-animation-delay:.1s;animation-delay:.1s}.sk-cube-grid .sk-cube9{-webkit-animation-delay:.2s;animation-delay:.2s}@-webkit-keyframes sk-cubeGridScaleDelay{0%,70%,to{-webkit-transform:scale3D(1,1,1);transform:scale3D(1,1,1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}@keyframes sk-cubeGridScaleDelay{0%,70%,to{-webkit-transform:scale3D(1,1,1);transform:scale3D(1,1,1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}[v-cloak]{display:none}body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:color(fjord);font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-feature-settings:"kern","liga","pnum";font-feature-settings:"kern","liga","pnum";font-size:1rem;line-height:1.3;-webkit-font-smoothing:antialiased;margin:0;background:#fafbfe}h1,h2,h3,h4{font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif}.Package{padding:1.25rem;background-color:#4f5566;border-radius:.25rem;box-shadow:0 2px 16px 0 rgba(0,0,0,.3);color:#fff;text-align:center;max-width:25rem}.Package__title{margin-top:0;font-size:1.8125rem}.Package__info,.Package__info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.Package__info-item{margin:.3125rem 0}.Package__info-item>span:not(.info-label){font-size:1.25rem;font-weight:700;margin-bottom:.3125rem;color:#00c4c9}.Package__info-item>span:not(.info-label)>a{color:currentColor}.Package__info-item .info-label{text-transform:uppercase;font-size:.75rem;color:#e8e9ed}[v-cloak][data-v-4cc47534]{display:none}body[data-v-4cc47534]{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:color(fjord);font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-feature-settings:"kern","liga","pnum";font-feature-settings:"kern","liga","pnum";font-size:1rem;line-height:1.3;-webkit-font-smoothing:antialiased;margin:0;background:#fafbfe}h1[data-v-4cc47534],h2[data-v-4cc47534],h3[data-v-4cc47534],h4[data-v-4cc47534]{font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif}.Chart__download[data-v-4cc47534]{cursor:pointer;border:1px solid #f1f1f1;border-radius:.3125rem;padding:.3125rem;text-decoration:none}.Chart__download[data-v-4cc47534]:hover{border-color:#00c4c9}
--------------------------------------------------------------------------------
/src/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
22 |
23 |
37 |
--------------------------------------------------------------------------------
/docs/static/js/manifest.0a9253472a5566cedcd2.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///static/js/manifest.0a9253472a5566cedcd2.js","webpack:///webpack/bootstrap 811cf343760542da9de9"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","2","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","0","1","setTimeout","appendChild","m","c","value","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"CAAS,SAAUA,GCuCnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QA1DA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,GAAAX,GAAAY,EAAAC,EAAAT,EAAA,EAAAU,KACQV,EAAAK,EAAAM,OAAoBX,IAC5BQ,EAAAH,EAAAL,GACAY,EAAAJ,IACAE,EAAAG,KAAAD,EAAAJ,GAAA,IAEAI,EAAAJ,GAAA,CAEA,KAAAZ,IAAAU,GACAQ,OAAAC,UAAAC,eAAAd,KAAAI,EAAAV,KACAF,EAAAE,GAAAU,EAAAV,GAIA,KADAO,KAAAE,EAAAC,EAAAC,GACAG,EAAAC,QACAD,EAAAO,SAEA,IAAAV,EACA,IAAAP,EAAA,EAAYA,EAAAO,EAAAI,OAA2BX,IACvCS,EAAAd,IAAAuB,EAAAX,EAAAP,GAGA,OAAAS,GAIA,IAAAZ,MAGAe,GACAO,EAAA,EA6BAxB,GAAAyB,EAAA,SAAAZ,GA8BA,QAAAa,KAEAC,EAAAC,QAAAD,EAAAE,OAAA,KACAC,aAAAC,EACA,IAAAC,GAAAf,EAAAJ,EACA,KAAAmB,IACAA,GACAA,EAAA,MAAAC,OAAA,iBAAApB,EAAA,aAEAI,EAAAJ,OAAAqB,IAtCA,OAAAjB,EAAAJ,GACA,MAAAsB,SAAAC,SAIA,IAAAnB,EAAAJ,GACA,MAAAI,GAAAJ,GAAA,EAIA,IAAAwB,GAAA,GAAAF,SAAA,SAAAC,EAAAE,GACArB,EAAAJ,IAAAuB,EAAAE,IAEArB,GAAAJ,GAAA,GAAAwB,CAGA,IAAAE,GAAAC,SAAAC,qBAAA,WACAd,EAAAa,SAAAE,cAAA,SACAf,GAAAgB,KAAA,kBACAhB,EAAAiB,QAAA,QACAjB,EAAAkB,OAAA,EACAlB,EAAAI,QAAA,KAEA/B,EAAA8C,IACAnB,EAAAoB,aAAA,QAAA/C,EAAA8C,IAEAnB,EAAAqB,IAAAhD,EAAAiD,EAAA,aAAApC,EAAA,KAAwEqC,EAAA,uBAAAC,EAAA,wBAAsDtC,GAAA,KAC9H,IAAAkB,GAAAqB,WAAA1B,EAAA,KAgBA,OAfAC,GAAAC,QAAAD,EAAAE,OAAAH,EAaAa,EAAAc,YAAA1B,GAEAU,GAIArC,EAAAsD,EAAAvD,EAGAC,EAAAuD,EAAArD,EAGAF,EAAAK,EAAA,SAAAmD,GAA2C,MAAAA,IAG3CxD,EAAAyD,EAAA,SAAAtD,EAAAuD,EAAAC,GACA3D,EAAA4D,EAAAzD,EAAAuD,IACAvC,OAAA0C,eAAA1D,EAAAuD,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMA3D,EAAAiE,EAAA,SAAA7D,GACA,GAAAuD,GAAAvD,KAAA8D,WACA,WAA2B,MAAA9D,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAAyD,EAAAE,EAAA,IAAAA,GACAA,GAIA3D,EAAA4D,EAAA,SAAAO,EAAAC,GAAsD,MAAAjD,QAAAC,UAAAC,eAAAd,KAAA4D,EAAAC,IAGtDpE,EAAAiD,EAAA,IAGAjD,EAAAqE,GAAA,SAAAC,GAA8D,KAApBC,SAAAC,MAAAF,GAAoBA","file":"static/js/manifest.0a9253472a5566cedcd2.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t2: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tif(installedChunks[chunkId] === 0) {\n/******/ \t\t\treturn Promise.resolve();\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId]) {\n/******/ \t\t\treturn installedChunks[chunkId][2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunks[chunkId][2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"569b6add926e3f7876b4\",\"1\":\"1db17d892b9b7bdf1009\"}[chunkId] + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/ })\n/************************************************************************/\n/******/ ([]);\n\n\n// WEBPACK FOOTER //\n// static/js/manifest.0a9253472a5566cedcd2.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0) {\n \t\t\treturn Promise.resolve();\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunks[chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunks[chunkId][2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"569b6add926e3f7876b4\",\"1\":\"1db17d892b9b7bdf1009\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 811cf343760542da9de9"],"sourceRoot":""}
--------------------------------------------------------------------------------
/src/pages/Start.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
Find
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | {{ errorMessage }}
25 |
26 |
27 |
28 | 🔧 Building Charts ...
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
Downloads per Day {{ formattedPeriod }}
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
Downloads per Week {{ formattedPeriod }}
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
Downloads per Month {{ formattedPeriod }}
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
Downloads per Year {{ formattedPeriod }}
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
266 |
267 |
468 |
--------------------------------------------------------------------------------
/docs/static/css/app.86a87a30eefc312b5c19ab481df08fae.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///./~/normalize.css/normalize.css","webpack:///./src/App.vue","webpack:///./src/components/Header.vue","webpack:///./src/components/Footer.vue","webpack:///./src/pages/Start.vue","webpack:///./src/components/PackageInfo.vue","webpack:///./src/components/Download.vue"],"names":[],"mappings":"AAAA,4EAWA,KACE,iBACA,0BACA,6BAA+B,CAUjC,wCAME,aAAe,CAQjB,GACE,cACA,cAAiB,CAWnB,uBAGE,aAAe,CAOjB,OACE,eAAiB,CAQnB,GACE,uBACA,SACA,gBAAkB,CAQpB,IACE,gCACA,aAAe,CAWjB,EACE,6BACA,oCAAsC,CAQxC,YACE,mBACA,0BACA,gCAAkC,CAOpC,SAEE,oBASA,kBAAoB,CAQtB,cAGE,gCACA,aAAe,CAOjB,IACE,iBAAmB,CAOrB,KACE,sBACA,UAAY,CAOd,MACE,aAAe,CAQjB,QAEE,cACA,cACA,kBACA,uBAAyB,CAG3B,IACE,aAAgB,CAGlB,IACE,SAAY,CAUd,YAEE,oBAAsB,CAOxB,sBACE,aACA,QAAU,CAOZ,IACE,iBAAmB,CAOrB,eACE,eAAiB,CAUnB,sCAKE,QAAU,CAQZ,aAEE,gBAAkB,CAQpB,cAEE,mBAAqB,CASvB,qDAIE,yBAA2B,CAO7B,wHAIE,kBACA,SAAW,CAOb,4GAIE,6BAA+B,CAUjC,OACE,sBACA,cACA,cACA,eACA,UACA,kBAAoB,CAQtB,SACE,qBACA,uBAAyB,CAO3B,SACE,aAAe,CAQjB,6BAEE,sBACA,SAAW,CAOb,kFAEE,WAAa,CAQf,cACE,6BACA,mBAAqB,CAOvB,qFAEE,uBAAyB,CAQ3B,6BACE,0BACA,YAAc,CAWhB,aAEE,aAAe,CAOjB,QACE,iBAAmB,CAUrB,OACE,oBAAsB,CAkBxB,kBACE,YAAc,CCvahB,UACE,YAAc,CAEhB,KACE,0BACA,8BACA,mBACA,sEACA,mDACQ,2CACR,eACA,gBACA,mCACA,SACA,kBAAoB,CAEtB,YACE,qEAA+E,CAEjF,gBACE,4BAA+B,CAEjC,mEACI,4BAA+B,CCvBnC,UACE,YAAc,CAEhB,KACE,0BACA,8BACA,mBACA,sEACA,mDACQ,2CACR,eACA,gBACA,mCACA,SACA,kBAAoB,CAEtB,YACE,qEAA+E,CAEjF,QACE,wBACA,oBACA,oBACA,aACA,wBACI,qBACI,sBAAwB,CAElC,cACI,eACA,eAAiB,CC9BrB,UACE,YAAc,CAEhB,KACE,0BACA,8BACA,mBACA,sEACA,mDACQ,2CACR,eACA,gBACA,mCACA,SACA,kBAAoB,CAEtB,YACE,qEAA+E,CAEjF,OACE,yBACA,WACA,eACA,wBACA,oBACA,oBACA,aACA,yBACI,sBACI,8BACR,8BACA,6BACI,yBACI,oBAAsB,CAEhC,SACI,aAAe,CAEnB,8CACM,kBAAoB,CCvC1B,UACE,YAAc,CAEhB,KACE,0BACA,8BACA,mBACA,sEACA,mDACQ,2CACR,eACA,gBACA,mCACA,SACA,kBAAoB,CAEtB,YACE,qEAA+E,CAEjF,GACE,cACA,WACA,SACA,6BACA,aACA,SAAW,CAEb,SACE,mBACA,8BAAgC,CAElC,OACE,kBACA,aAAe,CAEjB,WACE,gBACA,cACA,eACA,WACA,qBAAuB,CAEzB,SACE,kBACA,cACA,kBAAoB,CAEtB,eACE,kBACA,aAAe,CAEjB,mBACE,gBACA,0BACA,cACA,oBACA,oBACA,aACA,4BACA,6BACI,0BACI,sBACR,wBACI,qBACI,uBACR,yBACI,sBACI,kBAAoB,CAE9B,oCACA,mBACM,8BACA,6BACI,uBACI,kBAAoB,CACjC,CAED,eACE,gBACA,sBACA,yBACA,eACA,mBACI,WACI,MAAQ,CAElB,gBACE,wBACG,qBACK,gBACR,2BACA,oBACA,SACA,gBACA,eACA,kBACA,oBACA,gBACA,WACA,kBAAoB,CAEtB,mEACI,kBAAoB,CAExB,cACE,aACA,cACA,qBACA,eACA,aAAe,CAEjB,6DACI,aAAe,CAEnB,kBACI,iBAAmB,CAEvB,kBACE,gBACA,cACA,kBACA,oBACA,oBACA,aACA,8BACA,6BACI,uBACI,mBACR,wBACI,qBACI,sBAAwB,CAElC,kDACI,oBACA,mBACI,WACI,MAAQ,CAEpB,kBACE,qBACA,sBACA,sEACA,uBACA,iBAAmB,CAErB,cAIE,8BACA,6BACI,uBACI,mBACR,sBACA,yBACI,sBACI,6BAA+B,CAEzC,+BAZE,oBACA,oBACA,YAAc,CAqBf,iBAPG,yBACI,sBACI,mBACR,cACA,SACA,gBACA,cAAgB,CAEpB,sBACM,gBACA,cACA,eACA,qBAAuB,CAE7B,cACE,WACA,YACA,iBAAmB,CAErB,uBACE,UACA,WACA,yBACA,WACA,kEACA,yDAA2D,CAE7D,wBACE,4BACA,mBAAsB,CAExB,wBACE,4BACA,mBAAsB,CAExB,wBACE,4BACA,mBAAsB,CAExB,wBACE,4BACA,mBAAsB,CAExB,wBACE,4BACA,mBAAsB,CAExB,wBACE,4BACA,mBAAsB,CAExB,wBACE,2BACA,kBAAoB,CAEtB,wBACE,4BACA,mBAAsB,CAExB,wBACE,4BACA,mBAAsB,CAExB,yCACA,UACI,iCACA,wBAA4B,CAEhC,IACI,iCACA,wBAA4B,CAC/B,CAED,iCACA,UACI,iCACA,wBAA4B,CAEhC,IACI,iCACA,wBAA4B,CAC/B,CCnPD,UACE,YAAc,CAEhB,KACE,0BACA,8BACA,mBACA,sEACA,mDACQ,2CACR,eACA,gBACA,mCACA,SACA,kBAAoB,CAEtB,YACE,qEAA+E,CAEjF,SACE,gBACA,yBACA,qBACA,uCACA,WACA,kBACA,eAAiB,CAEnB,gBACI,aACA,mBAAqB,CAWzB,mCARI,oBACA,oBACA,aACA,4BACA,6BACI,0BACI,qBAAuB,CAWlC,oBADG,iBAAoB,CAExB,0CACM,kBACA,gBACA,uBACA,aAAe,CAErB,4CACQ,kBAAoB,CAE5B,gCACM,yBACA,iBACA,aAAe,CC/DrB,2BACE,YAAc,CAEhB,sBACE,0BACA,8BACA,mBACA,sEACA,mDACQ,2CACR,eACA,gBACA,mCACA,SACA,kBAAoB,CAEtB,gFACE,qEAA+E,CAEjF,kCACE,eACA,yBACA,uBACA,iBACA,oBAAsB,CAExB,wCACI,oBAAsB","file":"static/css/app.86a87a30eefc312b5c19ab481df08fae.css","sourcesContent":["/*! normalize.css v6.0.0 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in\n * IE on Windows Phone and in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Add the correct display in IE 9-.\n */\n\narticle,\naside,\nfooter,\nheader,\nnav,\nsection {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * Add the correct display in IE 9-.\n * 1. Add the correct display in IE.\n */\n\nfigcaption,\nfigure,\nmain { /* 1 */\n display: block;\n}\n\n/**\n * Add the correct margin in IE 8.\n */\n\nfigure {\n margin: 1em 40px;\n}\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * 1. Remove the gray background on active links in IE 10.\n * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.\n */\n\na {\n background-color: transparent; /* 1 */\n -webkit-text-decoration-skip: objects; /* 2 */\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57- and Firefox 39-.\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Prevent the duplicate application of `bolder` by the next rule in Safari 6.\n */\n\nb,\nstrong {\n font-weight: inherit;\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font style in Android 4.3-.\n */\n\ndfn {\n font-style: italic;\n}\n\n/**\n * Add the correct background and color in IE 9-.\n */\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Add the correct display in IE 9-.\n */\n\naudio,\nvideo {\n display: inline-block;\n}\n\n/**\n * Add the correct display in iOS 4-7.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Remove the border on images inside links in IE 10-.\n */\n\nimg {\n border-style: none;\n}\n\n/**\n * Hide the overflow in IE.\n */\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n margin: 0;\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n * controls in Android 4.\n * 2. Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\nhtml [type=\"button\"], /* 1 */\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * 1. Add the correct display in IE 9-.\n * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Remove the default vertical scrollbar in IE.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10-.\n * 2. Remove the padding in IE 10-.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in IE 9-.\n * 1. Add the correct display in Edge, IE, and Firefox.\n */\n\ndetails, /* 1 */\nmenu {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Scripting\n ========================================================================== */\n\n/**\n * Add the correct display in IE 9-.\n */\n\ncanvas {\n display: inline-block;\n}\n\n/**\n * Add the correct display in IE.\n */\n\ntemplate {\n display: none;\n}\n\n/* Hidden\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10-.\n */\n\n[hidden] {\n display: none;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/normalize.css/normalize.css","\n@import url(~normalize.css/normalize.css);\n[v-cloak] {\n display: none;\n}\nbody {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n color: color(fjord);\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n -webkit-font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-size: 1rem;\n line-height: 1.3;\n -webkit-font-smoothing: antialiased;\n margin: 0;\n background: #FAFBFE;\n}\nh1, h2, h3, h4 {\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n.Cookie__button {\n background: #00C4C9 !important;\n}\n.Cookie__button:hover, .Cookie__button:focus, .Cookie__button:active {\n background: #009296 !important;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/App.vue","\n@import url(~normalize.css/normalize.css);\n[v-cloak] {\n display: none;\n}\nbody {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n color: color(fjord);\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n -webkit-font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-size: 1rem;\n line-height: 1.3;\n -webkit-font-smoothing: antialiased;\n margin: 0;\n background: #FAFBFE;\n}\nh1, h2, h3, h4 {\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n.Header {\n padding: 1.875rem 2.5rem;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.Header__logo {\n font-size: 1rem;\n font-weight: 600;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Header.vue","\n@import url(~normalize.css/normalize.css);\n[v-cloak] {\n display: none;\n}\nbody {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n color: color(fjord);\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n -webkit-font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-size: 1rem;\n line-height: 1.3;\n -webkit-font-smoothing: antialiased;\n margin: 0;\n background: #FAFBFE;\n}\nh1, h2, h3, h4 {\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\nfooter {\n background-color: #4F5566;\n color: #fff;\n font-size: 1rem;\n padding: 1.875rem 2.5rem;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n}\nfooter a {\n color: #00C4C9;\n}\nfooter a:hover, footer a:focus, footer a:active {\n background: #006163;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Footer.vue","\n@import url(~normalize.css/normalize.css);\n[v-cloak] {\n display: none;\n}\nbody {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n color: color(fjord);\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n -webkit-font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-size: 1rem;\n line-height: 1.3;\n -webkit-font-smoothing: antialiased;\n margin: 0;\n background: #FAFBFE;\n}\nh1, h2, h3, h4 {\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\nhr {\n display: block;\n height: 1px;\n border: 0;\n border-top: 1px solid #E8E9ED;\n margin: 1em 0;\n padding: 0;\n}\n.content {\n background: #FAFBFE;\n min-height: calc(100vh - 207px);\n}\n.title {\n text-align: center;\n color: #4F5566;\n}\n.container {\n max-width: 90rem;\n margin: 0 auto;\n padding: 0 20px;\n width: 100%;\n box-sizing: border-box;\n}\n.loading {\n text-align: center;\n color: #4F5566;\n font-size: 1.125rem;\n}\n.error-message {\n text-align: center;\n color: #00C4C9;\n}\n.Search__container {\n max-width: 40rem;\n padding: 6.25rem 0 1.25rem 0;\n margin: 0 auto;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n@media screen and (min-width: 48rem) {\n.Search__container {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n}\n.Search__input {\n padding: 1.25rem;\n background-color: #fff;\n border: 1px solid #E8E9ED;\n font-size: 1rem;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n.Search__button {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n padding: 1.125rem 2.8125rem;\n margin-left: 1.25rem;\n border: 0;\n border-radius: 0;\n cursor: pointer;\n text-align: center;\n font-size: 1.3125rem;\n font-weight: 600;\n color: #fff;\n background: #00C4C9;\n}\n.Search__button:hover, .Search__button:focus, .Search__button:active {\n background: #009296;\n}\n.Search__icon {\n width: 2.5rem;\n height: 2.5rem;\n margin-left: 0.9375rem;\n cursor: pointer;\n color: #4F5566;\n}\n.Search__icon:hover, .Search__icon:focus, .Search__icon:active {\n color: #00C4C9;\n}\n.Search__icon > svg {\n fill: currentColor;\n}\n.Search__settings {\n max-width: 40rem;\n margin: 0 auto;\n padding: 1.25rem 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.Search__settings .vdp-datepicker + .vdp-datepicker {\n margin-left: 1.25rem;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n.Chart__container {\n border-radius: 0.25rem;\n background-color: #fff;\n box-shadow: 0 15px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.08);\n padding: 1.25rem 2.5rem;\n margin: 3.125rem 0;\n}\n.Chart__title {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n margin-bottom: 1.25rem;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n.Chart__title h2 {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n color: #4F5566;\n margin: 0;\n font-weight: 600;\n font-size: 1rem;\n}\n.Chart__title h2 > span {\n font-weight: 400;\n color: #00C4C9;\n font-size: 1rem;\n margin-left: 1.5625rem;\n}\n.sk-cube-grid {\n width: 40px;\n height: 40px;\n margin: 100px auto;\n}\n.sk-cube-grid .sk-cube {\n width: 33%;\n height: 33%;\n background-color: #00C4C9;\n float: left;\n -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;\n animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;\n}\n.sk-cube-grid .sk-cube1 {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n.sk-cube-grid .sk-cube2 {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n.sk-cube-grid .sk-cube3 {\n -webkit-animation-delay: 0.4s;\n animation-delay: 0.4s;\n}\n.sk-cube-grid .sk-cube4 {\n -webkit-animation-delay: 0.1s;\n animation-delay: 0.1s;\n}\n.sk-cube-grid .sk-cube5 {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n.sk-cube-grid .sk-cube6 {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n.sk-cube-grid .sk-cube7 {\n -webkit-animation-delay: 0s;\n animation-delay: 0s;\n}\n.sk-cube-grid .sk-cube8 {\n -webkit-animation-delay: 0.1s;\n animation-delay: 0.1s;\n}\n.sk-cube-grid .sk-cube9 {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n@-webkit-keyframes sk-cubeGridScaleDelay {\n0%, 70%, 100% {\n -webkit-transform: scale3D(1, 1, 1);\n transform: scale3D(1, 1, 1);\n}\n35% {\n -webkit-transform: scale3D(0, 0, 1);\n transform: scale3D(0, 0, 1);\n}\n}\n@keyframes sk-cubeGridScaleDelay {\n0%, 70%, 100% {\n -webkit-transform: scale3D(1, 1, 1);\n transform: scale3D(1, 1, 1);\n}\n35% {\n -webkit-transform: scale3D(0, 0, 1);\n transform: scale3D(0, 0, 1);\n}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Start.vue","\n@import url(~normalize.css/normalize.css);\n[v-cloak] {\n display: none;\n}\nbody {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n color: color(fjord);\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n -webkit-font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-size: 1rem;\n line-height: 1.3;\n -webkit-font-smoothing: antialiased;\n margin: 0;\n background: #FAFBFE;\n}\nh1, h2, h3, h4 {\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n.Package {\n padding: 1.25rem;\n background-color: #4F5566;\n border-radius: 0.25rem;\n box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.3);\n color: #fff;\n text-align: center;\n max-width: 25rem;\n}\n.Package__title {\n margin-top: 0;\n font-size: 1.8125rem;\n}\n.Package__info {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.Package__info-item {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n margin: 0.3125rem 0;\n}\n.Package__info-item > span:not(.info-label) {\n font-size: 1.25rem;\n font-weight: bold;\n margin-bottom: 0.3125rem;\n color: #00C4C9;\n}\n.Package__info-item > span:not(.info-label) > a {\n color: currentColor;\n}\n.Package__info-item .info-label {\n text-transform: uppercase;\n font-size: 0.75rem;\n color: #E8E9ED;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/PackageInfo.vue","\n@import url(~normalize.css/normalize.css);\n[v-cloak][data-v-4cc47534] {\n display: none;\n}\nbody[data-v-4cc47534] {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n color: color(fjord);\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n -webkit-font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-feature-settings: \"kern\", \"liga\", \"pnum\";\n font-size: 1rem;\n line-height: 1.3;\n -webkit-font-smoothing: antialiased;\n margin: 0;\n background: #FAFBFE;\n}\nh1[data-v-4cc47534], h2[data-v-4cc47534], h3[data-v-4cc47534], h4[data-v-4cc47534] {\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n.Chart__download[data-v-4cc47534] {\n cursor: pointer;\n border: 1px solid #f1f1f1;\n border-radius: 0.3125rem;\n padding: 0.3125rem;\n text-decoration: none;\n}\n.Chart__download[data-v-4cc47534]:hover {\n border-color: #00C4C9;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Download.vue"],"sourceRoot":""}
--------------------------------------------------------------------------------
/docs/static/js/app.1db17d892b9b7bdf1009.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([1],{183:function(t,a,e){"use strict";var n=e(26),s=e(307),r=e(299),o=e(306),i=e.n(o);n.a.use(i.a),n.a.use(s.a),a.a=new s.a({routes:[{path:"/",name:"Start",component:r.a},{path:"/:package",component:r.a}]})},184:function(t,a,e){"use strict";function n(t){e(283)}var s=e(33),r=e(303),o=e(6),i=n,c=e.i(o.a)(s.a,r.a,r.b,!1,i,null,null);a.a=c.exports},204:function(t,a,e){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var n=e(26),s=e(184),r=e(183);n.a.config.productionTip=!1,new n.a({el:"#app",router:r.a,template:" ",components:{App:s.a}})},205:function(t,a,e){"use strict";var n=e(0),s=e.n(n);e.d(a,"c",function(){return r}),e.d(a,"d",function(){return o}),e.d(a,"e",function(){return i}),e.d(a,"a",function(){return c}),e.d(a,"b",function(){return l});var r=function(t){return s()(t).format("YYYY")},o=function(t){return s()(t).format("MMM YYYY")},i=function(t){return s()(t).format("GGGG-[W]WW")},c=function(t){return s()(t).format("YYYY-MM-DD")},l=function(t){return s()(t).format("Do MMMM YYYY")}},206:function(t,a,e){"use strict";function n(t,a){return t.indexOf(a)<0&&t.push(a),t}a.a=n,e.d(a,"b",function(){return s});var s=function(t,a){return t.reduce(function(t,e){return t.indexOf(a(e.day))<0&&t.push(a(e.day)),t},[]).map(function(e){return{date:e,downloads:t.filter(function(t){return a(t.day)===e}).map(function(t){return t.downloads}).reduce(function(t,a){return t+a})}}).map(function(t){return t.downloads})}},282:function(t,a){},283:function(t,a){},284:function(t,a){},285:function(t,a){},286:function(t,a){},287:function(t,a){},288:function(t,a,e){function n(t){return e(s(t))}function s(t){var a=r[t];if(!(a+1))throw new Error("Cannot find module '"+t+"'.");return a}var r={"./af":58,"./af.js":58,"./ar":65,"./ar-dz":59,"./ar-dz.js":59,"./ar-kw":60,"./ar-kw.js":60,"./ar-ly":61,"./ar-ly.js":61,"./ar-ma":62,"./ar-ma.js":62,"./ar-sa":63,"./ar-sa.js":63,"./ar-tn":64,"./ar-tn.js":64,"./ar.js":65,"./az":66,"./az.js":66,"./be":67,"./be.js":67,"./bg":68,"./bg.js":68,"./bm":69,"./bm.js":69,"./bn":70,"./bn.js":70,"./bo":71,"./bo.js":71,"./br":72,"./br.js":72,"./bs":73,"./bs.js":73,"./ca":74,"./ca.js":74,"./cs":75,"./cs.js":75,"./cv":76,"./cv.js":76,"./cy":77,"./cy.js":77,"./da":78,"./da.js":78,"./de":81,"./de-at":79,"./de-at.js":79,"./de-ch":80,"./de-ch.js":80,"./de.js":81,"./dv":82,"./dv.js":82,"./el":83,"./el.js":83,"./en-au":84,"./en-au.js":84,"./en-ca":85,"./en-ca.js":85,"./en-gb":86,"./en-gb.js":86,"./en-ie":87,"./en-ie.js":87,"./en-il":88,"./en-il.js":88,"./en-nz":89,"./en-nz.js":89,"./eo":90,"./eo.js":90,"./es":93,"./es-do":91,"./es-do.js":91,"./es-us":92,"./es-us.js":92,"./es.js":93,"./et":94,"./et.js":94,"./eu":95,"./eu.js":95,"./fa":96,"./fa.js":96,"./fi":97,"./fi.js":97,"./fo":98,"./fo.js":98,"./fr":101,"./fr-ca":99,"./fr-ca.js":99,"./fr-ch":100,"./fr-ch.js":100,"./fr.js":101,"./fy":102,"./fy.js":102,"./gd":103,"./gd.js":103,"./gl":104,"./gl.js":104,"./gom-latn":105,"./gom-latn.js":105,"./gu":106,"./gu.js":106,"./he":107,"./he.js":107,"./hi":108,"./hi.js":108,"./hr":109,"./hr.js":109,"./hu":110,"./hu.js":110,"./hy-am":111,"./hy-am.js":111,"./id":112,"./id.js":112,"./is":113,"./is.js":113,"./it":114,"./it.js":114,"./ja":115,"./ja.js":115,"./jv":116,"./jv.js":116,"./ka":117,"./ka.js":117,"./kk":118,"./kk.js":118,"./km":119,"./km.js":119,"./kn":120,"./kn.js":120,"./ko":121,"./ko.js":121,"./ky":122,"./ky.js":122,"./lb":123,"./lb.js":123,"./lo":124,"./lo.js":124,"./lt":125,"./lt.js":125,"./lv":126,"./lv.js":126,"./me":127,"./me.js":127,"./mi":128,"./mi.js":128,"./mk":129,"./mk.js":129,"./ml":130,"./ml.js":130,"./mr":131,"./mr.js":131,"./ms":133,"./ms-my":132,"./ms-my.js":132,"./ms.js":133,"./mt":134,"./mt.js":134,"./my":135,"./my.js":135,"./nb":136,"./nb.js":136,"./ne":137,"./ne.js":137,"./nl":139,"./nl-be":138,"./nl-be.js":138,"./nl.js":139,"./nn":140,"./nn.js":140,"./pa-in":141,"./pa-in.js":141,"./pl":142,"./pl.js":142,"./pt":144,"./pt-br":143,"./pt-br.js":143,"./pt.js":144,"./ro":145,"./ro.js":145,"./ru":146,"./ru.js":146,"./sd":147,"./sd.js":147,"./se":148,"./se.js":148,"./si":149,"./si.js":149,"./sk":150,"./sk.js":150,"./sl":151,"./sl.js":151,"./sq":152,"./sq.js":152,"./sr":154,"./sr-cyrl":153,"./sr-cyrl.js":153,"./sr.js":154,"./ss":155,"./ss.js":155,"./sv":156,"./sv.js":156,"./sw":157,"./sw.js":157,"./ta":158,"./ta.js":158,"./te":159,"./te.js":159,"./tet":160,"./tet.js":160,"./tg":161,"./tg.js":161,"./th":162,"./th.js":162,"./tl-ph":163,"./tl-ph.js":163,"./tlh":164,"./tlh.js":164,"./tr":165,"./tr.js":165,"./tzl":166,"./tzl.js":166,"./tzm":168,"./tzm-latn":167,"./tzm-latn.js":167,"./tzm.js":168,"./ug-cn":169,"./ug-cn.js":169,"./uk":170,"./uk.js":170,"./ur":171,"./ur.js":171,"./uz":173,"./uz-latn":172,"./uz-latn.js":172,"./uz.js":173,"./vi":174,"./vi.js":174,"./x-pseudo":175,"./x-pseudo.js":175,"./yo":176,"./yo.js":176,"./zh-cn":177,"./zh-cn.js":177,"./zh-hk":178,"./zh-hk.js":178,"./zh-tw":179,"./zh-tw.js":179};n.keys=function(){return Object.keys(r)},n.resolve=s,t.exports=n,n.id=288},293:function(t,a,e){"use strict";var n=e(34),s=e(6),r=e.i(s.a)(n.a,void 0,void 0,!1,null,null,null);a.a=r.exports},294:function(t,a,e){"use strict";function n(t){e(282)}var s=e(35),r=e(301),o=e(6),i=n,c=e.i(o.a)(s.a,r.a,r.b,!1,i,"data-v-4cc47534",null);a.a=c.exports},295:function(t,a,e){"use strict";function n(t){e(284)}var s=e(36),r=e(300),o=e(6),i=n,c=e.i(o.a)(s.a,r.a,r.b,!1,i,null,null);a.a=c.exports},296:function(t,a,e){"use strict";function n(t){e(285)}var s=e(37),r=e(304),o=e(6),i=n,c=e.i(o.a)(s.a,r.a,r.b,!1,i,null,null);a.a=c.exports},297:function(t,a,e){"use strict";var n=e(38),s=e(6),r=e.i(s.a)(n.a,void 0,void 0,!1,null,null,null);a.a=r.exports},298:function(t,a,e){"use strict";function n(t){e(286)}var s=e(39),r=e(305),o=e(6),i=n,c=e.i(o.a)(s.a,r.a,r.b,!1,i,null,null);a.a=c.exports},299:function(t,a,e){"use strict";function n(t){e(287)}var s=e(40),r=e(302),o=e(6),i=n,c=e.i(o.a)(s.a,r.a,r.b,!1,i,null,null);a.a=c.exports},300:function(t,a,e){"use strict";e.d(a,"a",function(){return n}),e.d(a,"b",function(){return s});var n=function(){var t=this,a=t.$createElement;t._self._c;return t._m(0)},s=[function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("footer",[e("span",[t._v(" Build with "),e("a",{attrs:{href:"https://vuejs.org/",target:"_new"}},[t._v("Vue.js")]),t._v(" and "),e("a",{attrs:{href:"http://vue-chartjs.org/#/",target:"_new"}},[t._v("vue-chartjs")])]),t._v(" "),e("span",[t._v("💪 Made by "),e("a",{attrs:{href:"https://twitter.com/apertureless",target:"_new"}},[t._v("apertureless")])]),t._v(" "),e("span",[t._v("For issues or feature requests visit "),e("a",{attrs:{href:"https://github.com/apertureless/npm-stats",target:"_new"}},[t._v("Github")])])])}]},301:function(t,a,e){"use strict";e.d(a,"a",function(){return n}),e.d(a,"b",function(){return s});var n=function(){var t=this,a=t.$createElement;return(t._self._c||a)("a",{staticClass:"Chart__download",attrs:{href:t.link,download:t.name+".png",title:"Download as PNG"}},[t._v("\n 🖨\n")])},s=[]},302:function(t,a,e){"use strict";e.d(a,"a",function(){return n}),e.d(a,"b",function(){return s});var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"content"},[e("div",{staticClass:"container"},[e("div",{staticClass:"Search__container"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.package,expression:"package"}],staticClass:"Search__input",attrs:{placeholder:"npm package name",type:"search",name:"search"},domProps:{value:t.package},on:{keyup:function(a){return"button"in a||!t._k(a.keyCode,"enter",13,a.key,"Enter")?t.requestData(a):null},input:function(a){a.target.composing||(t.package=a.target.value)}}}),t._v(" "),e("button",{staticClass:"Search__button",on:{click:t.requestData}},[t._v("Find")]),t._v(" "),e("span",{staticClass:"Search__icon",on:{click:function(a){a.preventDefault(),t.toggleSettings()}}},[e("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 54 54","enable-background":"new 0 0 54 54"}},[e("path",{attrs:{d:"M51.22 21h-5.052c-.812 0-1.481-.447-1.792-1.197s-.153-1.54.42-2.114l3.572-3.571c.525-.525.814-1.224.814-1.966 0-.743-.289-1.441-.814-1.967l-4.553-4.553c-1.05-1.05-2.881-1.052-3.933 0l-3.571 3.571c-.574.573-1.366.733-2.114.421-.75-.311-1.197-.98-1.197-1.792v-5.052c0-1.533-1.247-2.78-2.78-2.78h-6.44c-1.533 0-2.78 1.247-2.78 2.78v5.052c0 .812-.447 1.481-1.197 1.792-.748.313-1.54.152-2.114-.421l-3.571-3.571c-1.052-1.052-2.883-1.05-3.933 0l-4.553 4.553c-.525.525-.814 1.224-.814 1.967 0 .742.289 1.44.814 1.966l3.572 3.571c.573.574.73 1.364.42 2.114s-.98 1.197-1.792 1.197h-5.052c-1.533 0-2.78 1.247-2.78 2.78v6.439c0 1.534 1.247 2.781 2.78 2.781h5.052c.812 0 1.481.447 1.792 1.197s.153 1.54-.42 2.114l-3.572 3.571c-.525.525-.814 1.224-.814 1.966 0 .743.289 1.441.814 1.967l4.553 4.553c1.051 1.051 2.881 1.053 3.933 0l3.571-3.572c.574-.573 1.363-.731 2.114-.42.75.311 1.197.98 1.197 1.792v5.052c0 1.533 1.247 2.78 2.78 2.78h6.439c1.533 0 2.78-1.247 2.78-2.78v-5.052c0-.812.447-1.481 1.197-1.792.751-.312 1.54-.153 2.114.42l3.571 3.572c1.052 1.052 2.883 1.05 3.933 0l4.553-4.553c.525-.525.814-1.224.814-1.967 0-.742-.289-1.44-.814-1.966l-3.572-3.571c-.573-.574-.73-1.364-.42-2.114s.981-1.197 1.793-1.197h5.052c1.533 0 2.78-1.247 2.78-2.78v-6.44c0-1.533-1.247-2.78-2.78-2.78zm.78 9.22c0 .43-.35.78-.78.78h-5.052c-1.624 0-3.019.932-3.64 2.432-.622 1.5-.295 3.146.854 4.294l3.572 3.571c.305.305.305.8 0 1.104l-4.553 4.553c-.304.304-.799.306-1.104 0l-3.571-3.572c-1.149-1.149-2.794-1.474-4.294-.854-1.5.621-2.432 2.016-2.432 3.64v5.052c0 .43-.35.78-.78.78h-6.44c-.43 0-.78-.35-.78-.78v-5.052c0-1.624-.932-3.019-2.432-3.64-.503-.209-1.021-.311-1.533-.311-1.014 0-1.997.4-2.761 1.164l-3.571 3.572c-.306.306-.801.304-1.104 0l-4.553-4.553c-.305-.305-.305-.8 0-1.104l3.572-3.571c1.148-1.148 1.476-2.794.854-4.294-.621-1.499-2.016-2.431-3.64-2.431h-5.052c-.43 0-.78-.35-.78-.78v-6.44c0-.43.35-.78.78-.78h5.052c1.624 0 3.019-.932 3.64-2.432.622-1.5.295-3.146-.854-4.294l-3.572-3.571c-.305-.305-.305-.8 0-1.104l4.553-4.553c.304-.305.799-.305 1.104 0l3.571 3.571c1.147 1.147 2.792 1.476 4.294.854 1.5-.62 2.432-2.015 2.432-3.639v-5.052c0-.43.35-.78.78-.78h6.439c.431 0 .781.35.781.78v5.052c0 1.624.932 3.019 2.432 3.64 1.502.622 3.146.294 4.294-.854l3.571-3.571c.306-.305.801-.305 1.104 0l4.553 4.553c.305.305.305.8 0 1.104l-3.572 3.571c-1.148 1.148-1.476 2.794-.854 4.294.621 1.5 2.016 2.432 3.64 2.432h5.052c.43-.001.78.349.78.779v6.44zM27 18c-4.963 0-9 4.037-9 9s4.037 9 9 9 9-4.037 9-9-4.037-9-9-9zm0 16c-3.859 0-7-3.141-7-7s3.141-7 7-7 7 3.141 7 7-3.141 7-7 7z"}})])])]),t._v(" "),t.showSettings?e("div",{staticClass:"Search__settings"},[e("datepicker",{attrs:{"input-class":"Search__input",placeholder:"Start Date",name:"start-date"},on:{selected:function(a){t.validateDataRequest()}},model:{value:t.periodStart,callback:function(a){t.periodStart=a},expression:"periodStart"}}),t._v(" "),e("datepicker",{attrs:{"input-class":"Search__input",placeholder:"End Date",name:"end-date"},on:{selected:function(a){t.validateDataRequest()}},model:{value:t.periodEnd,callback:function(a){t.periodEnd=a},expression:"periodEnd"}})],1):t._e(),t._v(" "),t.showError?e("div",{staticClass:"error-message"},[t._v("\n "+t._s(t.errorMessage)+"\n ")]):t._e(),t._v(" "),e("hr"),t._v(" "),t.loading?e("div",{staticClass:"loading"},[t._v("\n 🔧 Building Charts ...\n "),t._m(0)]):t._e(),t._v(" "),t.loaded?e("package-info",{attrs:{"package-name":t.packageName,"total-downloads":t.totalDownloads,period:t.formattedPeriod}}):t._e(),t._v(" "),t.loaded?e("div",{staticClass:"Chart__container"},[e("div",{staticClass:"Chart__title"},[e("h2",[t._v("Downloads per Day "),e("span",[t._v(t._s(t.formattedPeriod))])]),t._v(" "),e("DownloadButton",{attrs:{name:t.packageName+"-daily",link:t.dailyPng}})],1),t._v(" "),e("hr"),t._v(" "),e("div",{staticClass:"Chart__content"},[t.loaded?e("line-chart",{attrs:{"chart-id":"line-daily","chart-data":t.downloads,"chart-labels":t.labels},on:{generate:t.setDailyPng}}):t._e()],1)]):t._e(),t._v(" "),t.loaded?e("div",{staticClass:"Chart__container"},[e("div",{staticClass:"Chart__title"},[e("h2",[t._v("Downloads per Week "),e("span",[t._v(t._s(t.formattedPeriod))])]),t._v(" "),e("DownloadButton",{attrs:{name:t.packageName+"-weekly",link:t.weeklyPng}})],1),t._v(" "),e("hr"),t._v(" "),e("div",{staticClass:"Chart__content"},[t.loaded?e("line-chart",{attrs:{"chart-id":"line-weekly","chart-data":t.downloadsWeek,"chart-labels":t.labelsWeek},on:{generate:t.setWeeklyPng}}):t._e()],1)]):t._e(),t._v(" "),t.loaded?e("div",{staticClass:"Chart__container"},[e("div",{staticClass:"Chart__title"},[e("h2",[t._v("Downloads per Month "),e("span",[t._v(t._s(t.formattedPeriod))])]),t._v(" "),e("DownloadButton",{attrs:{name:t.packageName+"-monthly",link:t.monthlyPng}})],1),t._v(" "),e("hr"),t._v(" "),e("div",{staticClass:"Chart__content"},[t.loaded?e("line-chart",{attrs:{"chart-id":"line-monthly","chart-data":t.downloadsMonth,"chart-labels":t.labelsMonth},on:{generate:t.setMonthlyPng}}):t._e()],1)]):t._e(),t._v(" "),t.loaded?e("div",{staticClass:"Chart__container"},[e("div",{staticClass:"Chart__title"},[e("h2",[t._v("Downloads per Year "),e("span",[t._v(t._s(t.formattedPeriod))])]),t._v(" "),e("DownloadButton",{attrs:{name:t.packageName+"-yearly",link:t.yearlyPng}})],1),t._v(" "),e("hr"),t._v(" "),e("div",{staticClass:"Chart__content"},[t.loaded?e("bar-chart",{attrs:{"chart-id":"bar-yearly","chart-data":t.downloadsYear,"chart-labels":t.labelsYear},on:{generate:t.setYearlyPng}}):t._e()],1)]):t._e()],1)])},s=[function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"sk-cube-grid"},[e("div",{staticClass:"sk-cube sk-cube1"}),t._v(" "),e("div",{staticClass:"sk-cube sk-cube2"}),t._v(" "),e("div",{staticClass:"sk-cube sk-cube3"}),t._v(" "),e("div",{staticClass:"sk-cube sk-cube4"}),t._v(" "),e("div",{staticClass:"sk-cube sk-cube5"}),t._v(" "),e("div",{staticClass:"sk-cube sk-cube6"}),t._v(" "),e("div",{staticClass:"sk-cube sk-cube7"}),t._v(" "),e("div",{staticClass:"sk-cube sk-cube8"}),t._v(" "),e("div",{staticClass:"sk-cube sk-cube9"})])}]},303:function(t,a,e){"use strict";e.d(a,"a",function(){return n}),e.d(a,"b",function(){return s});var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{attrs:{id:"app"}},[e("j-header"),t._v(" "),e("router-view"),t._v(" "),e("j-footer")],1)},s=[]},304:function(t,a,e){"use strict";e.d(a,"a",function(){return n}),e.d(a,"b",function(){return s});var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"Header"},[e("router-link",{attrs:{to:"/"}},[e("span",{staticClass:"Header__logo"},[e("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"236",height:"47",viewBox:"0 0 236 47"}},[e("g",{attrs:{fill:"none","fill-rule":"evenodd"}},[e("polygon",{attrs:{fill:"#00C4C9",points:"23.475 0 46.95 47 0 47"}}),t._v(" "),e("polygon",{attrs:{fill:"#4F5566",points:"49.525 47 26.05 0 73 0"}}),t._v(" "),e("path",{attrs:{fill:"#4F5566",d:"M88.482,17.306 L91.712,17.306 L91.984,19.55 L92.12,19.55 C92.8680037,18.824663 93.678329,18.2013359 94.551,17.68 C95.423671,17.1586641 96.4379942,16.898 97.594,16.898 C99.3846756,16.898 100.687996,17.4703276 101.504,18.615 C102.320004,19.7596724 102.728,21.3973227 102.728,23.528 L102.728,34 L98.818,34 L98.818,24.038 C98.818,22.6553264 98.614002,21.6806695 98.206,21.114 C97.797998,20.5473305 97.129338,20.264 96.2,20.264 C95.474663,20.264 94.8343361,20.4396649 94.279,20.791 C93.7236639,21.1423351 93.0946702,21.6579966 92.392,22.338 L92.392,34 L88.482,34 L88.482,17.306 Z M111.632,35.36 L111.632,40.596 L107.722,40.596 L107.722,17.306 L110.952,17.306 L111.224,19.074 L111.36,19.074 C112.06267,18.4846637 112.844662,17.9746688 113.706,17.544 C114.567338,17.1133312 115.462662,16.898 116.392,16.898 C117.434672,16.898 118.358329,17.0963313 119.163,17.493 C119.967671,17.8896686 120.653331,18.4619963 121.22,19.21 C121.78667,19.9580037 122.217332,20.8533281 122.512,21.896 C122.806668,22.9386719 122.954,24.1059935 122.954,25.398 C122.954,26.8260071 122.755669,28.1009944 122.359,29.223 C121.962331,30.3450056 121.435337,31.2856629 120.778,32.045 C120.120663,32.8043371 119.361338,33.387998 118.5,33.796 C117.638662,34.204002 116.743338,34.408 115.814,34.408 C115.088663,34.408 114.363337,34.2493349 113.638,33.932 C112.912663,33.6146651 112.210003,33.1613363 111.53,32.572 L111.632,35.36 Z M111.632,29.784 C112.244003,30.3053359 112.833331,30.667999 113.4,30.872 C113.96667,31.076001 114.499331,31.178 114.998,31.178 C116.108672,31.178 117.037996,30.6963382 117.786,29.733 C118.534004,28.7696619 118.908,27.3360095 118.908,25.432 C118.908,23.7546583 118.62467,22.451338 118.058,21.522 C117.491331,20.592662 116.57334,20.128 115.304,20.128 C114.125328,20.128 112.90134,20.7513271 111.632,21.998 L111.632,29.784 Z M127.098,17.306 L130.328,17.306 L130.6,19.584 L130.736,19.584 C131.43867,18.8359963 132.203663,18.2013359 133.031,17.68 C133.858338,17.1586641 134.793328,16.898 135.836,16.898 C137.060006,16.898 138.04033,17.1586641 138.777,17.68 C139.51367,18.2013359 140.074665,18.9379952 140.46,19.89 C141.253337,19.0286624 142.080662,18.3146695 142.942,17.748 C143.803338,17.1813305 144.766661,16.898 145.832,16.898 C147.600009,16.898 148.903329,17.4703276 149.742,18.615 C150.580671,19.7596724 151,21.3973227 151,23.528 L151,34 L147.056,34 L147.056,24.038 C147.056,22.6553264 146.846336,21.6806695 146.427,21.114 C146.007665,20.5473305 145.367338,20.264 144.506,20.264 C143.463328,20.264 142.296007,20.9553264 141.004,22.338 L141.004,34 L137.094,34 L137.094,24.038 C137.094,22.6553264 136.884336,21.6806695 136.465,21.114 C136.045665,20.5473305 135.394005,20.264 134.51,20.264 C133.467328,20.264 132.300007,20.9553264 131.008,22.338 L131.008,34 L127.098,34 L127.098,17.306 Z M154.906,24.004 L162.998,24.004 L162.998,26.86 L154.906,26.86 L154.906,24.004 Z M167.278,29.58 C168.026004,30.1693363 168.76833,30.6283317 169.505,30.957 C170.241671,31.2856683 171.040663,31.45 171.902,31.45 C172.808671,31.45 173.477331,31.2630019 173.908,30.889 C174.338669,30.5149981 174.554,30.0333363 174.554,29.444 C174.554,29.1039983 174.452001,28.803668 174.248,28.543 C174.043999,28.282332 173.772002,28.050001 173.432,27.846 C173.091999,27.641999 172.706669,27.4550008 172.276,27.285 C171.845331,27.1149991 171.414669,26.9393342 170.984,26.758 C170.439998,26.553999 169.88467,26.3160014 169.318,26.044 C168.751331,25.7719986 168.247002,25.4433353 167.805,25.058 C167.362998,24.6726647 167.000335,24.2250025 166.717,23.715 C166.433666,23.2049975 166.292,22.5986702 166.292,21.896 C166.292,20.4226593 166.835995,19.221338 167.924,18.292 C169.012006,17.362662 170.496658,16.898 172.378,16.898 C173.534006,16.898 174.576662,17.101998 175.506,17.51 C176.435338,17.918002 177.239997,18.3826641 177.92,18.904 L176.118,21.284 C175.528664,20.8533312 174.93367,20.507668 174.333,20.247 C173.732331,19.986332 173.103337,19.856 172.446,19.856 C171.607329,19.856 170.989669,20.0316649 170.593,20.383 C170.196332,20.7343351 169.998,21.1706641 169.998,21.692 C169.998,22.0320017 170.094333,22.3209988 170.287,22.559 C170.479668,22.7970012 170.734665,23.0066658 171.052,23.188 C171.369335,23.3693342 171.737665,23.5393325 172.157,23.698 C172.576336,23.8566675 173.012665,24.0153325 173.466,24.174 C174.03267,24.378001 174.599331,24.610332 175.166,24.871 C175.73267,25.131668 176.248331,25.4546647 176.713,25.84 C177.177669,26.2253353 177.551666,26.6956639 177.835,27.251 C178.118335,27.8063361 178.26,28.4693295 178.26,29.24 C178.26,29.965337 178.118335,30.6396636 177.835,31.263 C177.551666,31.8863365 177.138003,32.430331 176.594,32.895 C176.049998,33.359669 175.370004,33.7279986 174.554,34 C173.737996,34.2720014 172.808672,34.408 171.766,34.408 C170.609994,34.408 169.471006,34.1870022 168.349,33.745 C167.226995,33.3029978 166.258004,32.7533366 165.442,32.096 L167.278,29.58 Z M182.54,20.4 L180.16,20.4 L180.16,17.476 L182.744,17.306 L183.22,12.75 L186.484,12.75 L186.484,17.306 L190.734,17.306 L190.734,20.4 L186.484,20.4 L186.484,28.356 C186.484,30.3053431 187.265992,31.28 188.83,31.28 C189.124668,31.28 189.424999,31.2460003 189.731,31.178 C190.037002,31.1099997 190.314666,31.0193339 190.564,30.906 L191.244,33.796 C190.790665,33.9546675 190.275003,34.0963327 189.697,34.221 C189.118997,34.3456673 188.501337,34.408 187.844,34.408 C186.869329,34.408 186.04767,34.2606681 185.379,33.966 C184.71033,33.6713319 184.166336,33.2576693 183.747,32.725 C183.327665,32.1923307 183.021668,31.5576704 182.829,30.821 C182.636333,30.0843297 182.54,29.2626712 182.54,28.356 L182.54,20.4 Z M193.212,29.512 C193.212,27.7213244 193.993993,26.3386715 195.558,25.364 C197.122008,24.3893285 199.615317,23.7093353 203.038,23.324 C203.038,22.8933312 202.981334,22.4796686 202.868,22.083 C202.754666,21.6863313 202.579002,21.3350015 202.341,21.029 C202.102999,20.7229985 201.797002,20.4850008 201.423,20.315 C201.048999,20.1449991 200.57867,20.06 200.012,20.06 C199.17333,20.06 198.363004,20.2186651 197.581,20.536 C196.798996,20.8533349 196.045337,21.2386644 195.32,21.692 L193.892,19.074 C194.821338,18.4846637 195.858328,17.9746688 197.003,17.544 C198.147673,17.1133312 199.38866,16.898 200.726,16.898 C202.834011,16.898 204.397995,17.5156605 205.418,18.751 C206.438005,19.9863395 206.948,21.7713217 206.948,24.106 L206.948,34 L203.752,34 L203.446,32.164 L203.344,32.164 C202.595997,32.7986698 201.797005,33.3313312 200.947,33.762 C200.096996,34.1926688 199.173339,34.408 198.176,34.408 C196.70266,34.408 195.507005,33.9603378 194.589,33.065 C193.670996,32.1696622 193.212,30.9853407 193.212,29.512 Z M197.02,29.206 C197.02,29.9540037 197.240998,30.4979983 197.683,30.838 C198.125003,31.1780017 198.69733,31.348 199.4,31.348 C200.080004,31.348 200.703331,31.1893349 201.27,30.872 C201.83667,30.5546651 202.425997,30.1013363 203.038,29.512 L203.038,25.772 C201.904661,25.9080007 200.952671,26.0893322 200.182,26.316 C199.41133,26.5426678 198.793669,26.7976653 198.329,27.081 C197.864331,27.3643347 197.530001,27.6873315 197.326,28.05 C197.121999,28.4126685 197.02,28.797998 197.02,29.206 Z M212.486,20.4 L210.106,20.4 L210.106,17.476 L212.69,17.306 L213.166,12.75 L216.43,12.75 L216.43,17.306 L220.68,17.306 L220.68,20.4 L216.43,20.4 L216.43,28.356 C216.43,30.3053431 217.211993,31.28 218.776,31.28 C219.070669,31.28 219.370999,31.2460003 219.677,31.178 C219.983002,31.1099997 220.260666,31.0193339 220.51,30.906 L221.19,33.796 C220.736665,33.9546675 220.221003,34.0963327 219.643,34.221 C219.064998,34.3456673 218.447337,34.408 217.79,34.408 C216.815329,34.408 215.99367,34.2606681 215.325,33.966 C214.65633,33.6713319 214.112336,33.2576693 213.693,32.725 C213.273665,32.1923307 212.967668,31.5576704 212.775,30.821 C212.582333,30.0843297 212.486,29.2626712 212.486,28.356 L212.486,20.4 Z M224.552001,29.58 C225.300004,30.1693363 226.04233,30.6283317 226.779001,30.957 C227.515671,31.2856683 228.314663,31.45 229.176001,31.45 C230.082672,31.45 230.751332,31.2630019 231.182001,30.889 C231.612669,30.5149981 231.828001,30.0333363 231.828001,29.444 C231.828001,29.1039983 231.726002,28.803668 231.522001,28.543 C231.317999,28.282332 231.046002,28.050001 230.706001,27.846 C230.365999,27.641999 229.980669,27.4550008 229.550001,27.285 C229.119332,27.1149991 228.688669,26.9393342 228.258001,26.758 C227.713998,26.553999 227.15867,26.3160014 226.592001,26.044 C226.025331,25.7719986 225.521003,25.4433353 225.079001,25.058 C224.636998,24.6726647 224.274335,24.2250025 223.991001,23.715 C223.707666,23.2049975 223.566001,22.5986702 223.566001,21.896 C223.566001,20.4226593 224.109995,19.221338 225.198001,18.292 C226.286006,17.362662 227.770658,16.898 229.652001,16.898 C230.808006,16.898 231.850663,17.101998 232.780001,17.51 C233.709338,17.918002 234.513997,18.3826641 235.194001,18.904 L233.392001,21.284 C232.802664,20.8533312 232.20767,20.507668 231.607001,20.247 C231.006331,19.986332 230.377337,19.856 229.720001,19.856 C228.88133,19.856 228.263669,20.0316649 227.867001,20.383 C227.470332,20.7343351 227.272001,21.1706641 227.272001,21.692 C227.272001,22.0320017 227.368333,22.3209988 227.561001,22.559 C227.753668,22.7970012 228.008666,23.0066658 228.326001,23.188 C228.643335,23.3693342 229.011665,23.5393325 229.431001,23.698 C229.850336,23.8566675 230.286665,24.0153325 230.740001,24.174 C231.30667,24.378001 231.873331,24.610332 232.440001,24.871 C233.00667,25.131668 233.522332,25.4546647 233.987001,25.84 C234.451669,26.2253353 234.825666,26.6956639 235.109001,27.251 C235.392335,27.8063361 235.534001,28.4693295 235.534001,29.24 C235.534001,29.965337 235.392335,30.6396636 235.109001,31.263 C234.825666,31.8863365 234.412003,32.430331 233.868001,32.895 C233.323998,33.359669 232.644005,33.7279986 231.828001,34 C231.011996,34.2720014 230.082672,34.408 229.040001,34.408 C227.883995,34.408 226.745006,34.1870022 225.623001,33.745 C224.500995,33.3029978 223.532005,32.7533366 222.716001,32.096 L224.552001,29.58 Z"}})])])])])],1)},s=[]},305:function(t,a,e){"use strict";e.d(a,"a",function(){return n}),e.d(a,"b",function(){return s});var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"Package"},[e("h1",{staticClass:"Package__title"},[t._v(t._s(t.packageName))]),t._v(" "),e("div",{staticClass:"Package__info"},[e("div",{staticClass:"Package__info-item"},[e("span",[t._v(t._s(t.totalDownloads.toLocaleString()))]),e("span",{staticClass:"info-label"},[t._v("Total Downloads")])]),t._v(" "),e("div",{staticClass:"Package__info-item"},[e("span",[t._v(t._s(t.period))]),e("span",{staticClass:"info-label"},[t._v("Period")])]),t._v(" "),e("div",{staticClass:"Package__info-item"},[e("span",[e("a",{attrs:{href:t.packageLink}},[t._v(t._s(t.packageName)+" on npm")])]),e("span",{staticClass:"info-label"},[t._v("Link")])])])])},s=[]},32:function(t,a,e){"use strict";a.a={methods:{download:function(){var t=this.$refs.canvas.toDataURL("image/png");this.$emit("generate",t)}}}},33:function(t,a,e){"use strict";var n=e(296),s=e(295);a.a={components:{JHeader:n.a,JFooter:s.a},name:"app",metaInfo:{meta:[{charset:"utf-8"},{name:"theme-color",content:"#ffffff"}]}}},34:function(t,a,e){"use strict";var n=e(19),s=e.n(n),r=e(41),o=e.n(r),i=e(181),c=e(32);a.a={extends:i.a,mixins:[c.a],props:{chartData:{type:Array|Object,required:!1},chartLabels:{type:Array,required:!0}},data:function(){var t=this;return{gradient:null,options:{showScale:!0,scales:{yAxes:[{ticks:{beginAtZero:!1},gridLines:{display:!0,color:"#EEF0F4",borderDash:[5,15]},categoryPercentage:1,barPercentage:.4}],xAxes:[{ticks:{callback:function(a,e,n){return t.formatNumber(a)}},gridLines:{display:!0,color:"#EEF0F4",borderDash:[5,15]}}]},tooltips:{backgroundColor:"#4F5565",titleFontStyle:"normal",titleFontSize:18,bodyFontFamily:"'Proxima Nova', sans-serif",cornerRadius:3,bodyFontColor:"#20C4C8",bodyFontSize:14,xPadding:14,yPadding:14,displayColors:!1,mode:"index",intersect:!1,callbacks:{title:function(t){return"🗓 "+t[0].yLabel},label:function(t,a){return"📦 "+a.datasets[t.datasetIndex].data[t.index].toLocaleString()}}},legend:{display:!1},responsive:!0,maintainAspectRatio:!1}}},mounted:function(){var t=this;this.gradient=this.$refs.canvas.getContext("2d").createLinearGradient(0,0,0,450),this.gradient.addColorStop(0,"rgba(52, 217, 221, 0.6)"),this.gradient.addColorStop(.5,"rgba(52, 217, 221, 0.25)"),this.gradient.addColorStop(1,"rgba(52, 217, 221, 0)"),this.renderChart({labels:this.chartLabels,datasets:[{label:"downloads",borderColor:"#249EBF",pointBackgroundColor:"rgba(0,0,0,0)",pointBorderColor:"rgba(0,0,0,0)",pointHoverBorderColor:"#249EBF",pointHoverBackgroundColor:"#fff",pointHoverRadius:4,pointHitRadius:10,pointHoverBorderWidth:1,borderWidth:1,backgroundColor:this.gradient,hoverBackgroundColor:this.gradient,data:this.chartData}]},this.options),setTimeout(function(){t.download()},500)},methods:{formatNumber:function(t){var a=Math.round(t).toString(),e=[[6,"m"],[3,"k"]],n=!0,r=!1,i=void 0;try{for(var c,l=s()(e);!(n=(c=l.next()).done);n=!0){var d=c.value,u=o()(d,2),h=u[0],p=u[1];if(a.length>h){var f="";"0"!==a[a.length-h]&&(f="."+a[a.length-h]),a=a.substr(0,a.length-h)+f+p;break}}}catch(t){r=!0,i=t}finally{try{!n&&l.return&&l.return()}finally{if(r)throw i}}return a}}}},35:function(t,a,e){"use strict";a.a={name:"DownloadButton",props:{name:{type:String,default:"chart"},link:{type:String,default:""}}}},36:function(t,a,e){"use strict";a.a={}},37:function(t,a,e){"use strict";a.a={}},38:function(t,a,e){"use strict";var n=e(19),s=e.n(n),r=e(41),o=e.n(r),i=e(181),c=e(32);a.a={extends:i.b,mixins:[c.a],props:{chartData:{type:Array|Object,required:!1},chartLabels:{type:Array,required:!0}},data:function(){var t=this;return{gradient:null,options:{showScale:!0,scales:{yAxes:[{ticks:{beginAtZero:!1,callback:function(a,e,n){return t.formatNumber(a)}},gridLines:{display:!0,color:"#EEF0F4",borderDash:[5,15]}}],xAxes:[{gridLines:{display:!0,color:"#EEF0F4",borderDash:[5,15]}}]},tooltips:{backgroundColor:"#4F5565",titleFontStyle:"normal",titleFontSize:18,bodyFontFamily:"'Proxima Nova', sans-serif",cornerRadius:3,bodyFontColor:"#20C4C8",bodyFontSize:14,xPadding:14,yPadding:14,displayColors:!1,mode:"index",intersect:!1,callbacks:{title:function(t){return"🗓 "+t[0].xLabel},label:function(t,a){return"📦 "+a.datasets[t.datasetIndex].data[t.index].toLocaleString()}}},legend:{display:!1},responsive:!0,maintainAspectRatio:!1}}},mounted:function(){var t=this;this.gradient=this.$refs.canvas.getContext("2d").createLinearGradient(0,0,0,450),this.gradient.addColorStop(0,"rgba(52, 217, 221, 0.6)"),this.gradient.addColorStop(.5,"rgba(52, 217, 221, 0.25)"),this.gradient.addColorStop(1,"rgba(52, 217, 221, 0)"),this.renderChart({labels:this.chartLabels,datasets:[{label:"downloads",borderColor:"#249EBF",pointBackgroundColor:"rgba(0,0,0,0)",pointBorderColor:"rgba(0,0,0,0)",pointHoverBorderColor:"#249EBF",pointHoverBackgroundColor:"#fff",pointHoverRadius:4,pointHitRadius:10,pointHoverBorderWidth:1,borderWidth:1,backgroundColor:this.gradient,data:this.chartData}]},this.options),setTimeout(function(){t.download()},500)},methods:{formatNumber:function(t){var a=Math.round(t).toString(),e=[[6,"m"],[3,"k"]],n=!0,r=!1,i=void 0;try{for(var c,l=s()(e);!(n=(c=l.next()).done);n=!0){var d=c.value,u=o()(d,2),h=u[0],p=u[1];if(a.length>h){var f="";"0"!==a[a.length-h]&&(f="."+a[a.length-h]),a=a.substr(0,a.length-h)+f+p;break}}}catch(t){r=!0,i=t}finally{try{!n&&l.return&&l.return()}finally{if(r)throw i}}return a}}}},39:function(t,a,e){"use strict";a.a={props:{packageName:{type:String},totalDownloads:{type:Number},period:{type:String}},computed:{packageLink:function(){return"https://www.npmjs.com/package/"+this.packageName}}}},40:function(t,a,e){"use strict";var n=e(185),s=e.n(n),r=e(309),o=e.n(r),i=e(297),c=e(293),l=e(298),d=e(294),u=e(205),h=e(206);a.a={components:{LineChart:i.a,BarChart:c.a,PackageInfo:l.a,Datepicker:o.a,DownloadButton:d.a},metaInfo:function(){return{title:this.packageName?this.packageName+" | 📈 npm-stats":"📈 npm-stats | Download statistics for your npm packages",meta:[{vmid:"description",name:"description",content:"View your npm package download statistics with beautiful charts"}]}},data:function(){return{package:"",packageName:"",loaded:!1,loading:!1,downloads:[],downloadsYear:[],downloadsMonth:[],downloadsWeek:[],labels:[],labelsYear:[],labelsMonth:[],labelsWeek:[],showError:!1,showSettings:!1,errorMessage:"Please enter a package name",periodStart:"",periodEnd:new Date,rawData:"",totalDownloads:"",dailyPng:null,weeklyPng:null,monthlyPng:null,yearlyPng:null}},mounted:function(){this.$route.params.package&&(this.package=this.$route.params.package,this.requestData())},computed:{metaHeadTitle:function(){return this.packageName?"📈 npm-stats for "+this.packageName:"📈 npm-stats"},_endDate:function(){return e.i(u.a)(this.periodEnd)},_startDate:function(){return e.i(u.a)(this.periodStart)},period:function(){return this.periodStart?this._startDate+":"+this._endDate:"last-month"},formattedPeriod:function(){return this.periodStart?e.i(u.b)(this._startDate)+" - "+e.i(u.b)(this._endDate):"last-month"}},methods:{resetState:function(){this.loaded=!1,this.showError=!1},requestData:function(){var t=this;if(null===this.package||""===this.package||"undefined"===this.package)return this.showError=!0,void(this.loading=!1);this.resetState(),this.loading=!0,s.a.get("https://api.npmjs.org/downloads/range/"+this.period+"/"+this.package).then(function(a){t.rawData=a.data.downloads,t.downloads=a.data.downloads.map(function(t){return t.downloads}),t.labels=a.data.downloads.map(function(t){return t.day}),t.packageName=a.data.package,t.totalDownloads=t.downloads.reduce(function(t,a){return t+a}),t.setURL(),t.groupDataByDate(),t.loaded=!0,t.loading=!1}).catch(function(a){t.errorMessage=a.response.data.error,t.showError=!0,t.loading=!1})},validateDataRequest:function(){""!==this.packageName&&""!==this.periodStart&&this.requestData()},groupDataByDate:function(){this.formatYear(),this.formatMonth(),this.formatWeek()},formatYear:function(){this.labelsYear=this.rawData.map(function(t){return e.i(u.c)(t.day)}).reduce(h.a,[]),this.downloadsYear=e.i(h.b)(this.rawData,u.c)},formatMonth:function(){this.labelsMonth=this.rawData.map(function(t){return e.i(u.d)(t.day)}).reduce(h.a,[]),this.downloadsMonth=e.i(h.b)(this.rawData,u.d)},formatWeek:function(){this.labelsWeek=this.rawData.map(function(t){return e.i(u.e)(t.day)}).reduce(h.a,[]),this.downloadsWeek=e.i(h.b)(this.rawData,u.e)},setURL:function(){history.pushState({info:"npm-stats "+this.package},this.package,"/#/"+this.package)},toggleSettings:function(){this.showSettings=!this.showSettings},setDailyPng:function(t){this.dailyPng=t},setWeeklyPng:function(t){this.weeklyPng=t},setMonthlyPng:function(t){this.monthlyPng=t},setYearlyPng:function(t){this.yearlyPng=t}}}}},[204]);
2 | //# sourceMappingURL=app.1db17d892b9b7bdf1009.js.map
--------------------------------------------------------------------------------