├── .dockerignore
├── .gitignore
├── client
├── .browserslistrc
├── vue.config.js
├── babel.config.js
├── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── assets
│ │ └── logo.png
│ ├── plugins
│ │ └── vuetify.js
│ ├── main.js
│ ├── App.vue
│ └── components
│ │ ├── RankSelectionModal.vue
│ │ └── Example.vue
├── .gitignore
├── README.md
├── .eslintrc.js
└── package.json
├── .env.example
├── docs
├── 1.png
├── 2.png
├── 3.png
├── 4.png
├── YTThumbnail.png
└── screenshot001.png
├── now.json
├── public
├── favicon.ico
├── css
│ └── app.c9128dab.css
├── index.html
└── js
│ ├── app.2cb72c4f.js
│ └── app.2cb72c4f.js.map
├── images
└── app_preview_image.png
├── api
├── db
│ ├── companies.js
│ ├── index.js
│ ├── ranks.js
│ └── seed.js
├── index.js
└── routes
│ ├── ranks.js
│ ├── index.js
│ └── companies.js
├── Dockerfile
├── app.json
├── package.json
├── LICENSE
├── marketplace.json
├── azuredeploy.json
├── README.md
└── yarn.lock
/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | npm-debug.log
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | node_modules
3 |
4 | .vercel
5 |
--------------------------------------------------------------------------------
/client/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
4 |
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | REDIS_ENDPOINT_URI=redis://localhost:6379
2 | REDIS_PASSWORD=
--------------------------------------------------------------------------------
/client/vue.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "transpileDependencies": [
3 | "vuetify"
4 | ]
5 | }
--------------------------------------------------------------------------------
/docs/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/docs/1.png
--------------------------------------------------------------------------------
/docs/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/docs/2.png
--------------------------------------------------------------------------------
/docs/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/docs/3.png
--------------------------------------------------------------------------------
/docs/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/docs/4.png
--------------------------------------------------------------------------------
/now.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 2,
3 | "rewrites": [{ "source": "/api/(.*)", "destination": "/api" }]
4 | }
5 |
--------------------------------------------------------------------------------
/client/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/public/favicon.ico
--------------------------------------------------------------------------------
/docs/YTThumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/docs/YTThumbnail.png
--------------------------------------------------------------------------------
/docs/screenshot001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/docs/screenshot001.png
--------------------------------------------------------------------------------
/client/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/client/public/favicon.ico
--------------------------------------------------------------------------------
/client/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/client/src/assets/logo.png
--------------------------------------------------------------------------------
/images/app_preview_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/images/app_preview_image.png
--------------------------------------------------------------------------------
/client/src/plugins/vuetify.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Vuetify from 'vuetify/lib/framework';
3 |
4 | Vue.use(Vuetify);
5 |
6 | export default new Vuetify({
7 | });
8 |
--------------------------------------------------------------------------------
/api/db/companies.js:
--------------------------------------------------------------------------------
1 | const { db, REDIS_LEADERBOARD } = require('.');
2 |
3 | module.exports.getBySymbol = async (symbol) => {
4 | return db('hgetall')(`leaderboard:${symbol}`);
5 | }
6 |
--------------------------------------------------------------------------------
/client/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import vuetify from './plugins/vuetify';
4 |
5 | Vue.config.productionTip = false
6 |
7 | new Vue({
8 | vuetify,
9 | render: h => h(App)
10 | }).$mount('#app')
11 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:12
2 |
3 | WORKDIR /usr/src/app
4 |
5 | COPY yarn.lock .
6 |
7 | RUN yarn
8 |
9 | COPY . .
10 |
11 | ENV REDIS_ENDPOINT_URI $REDIS_ENDPOINT_URI
12 | ENV REDIS_PASSWORD $REDIS_PASSWORD
13 |
14 | ENV PORT 5000
15 |
16 | CMD [ "node", "api/index.js" ]
17 |
18 |
19 |
--------------------------------------------------------------------------------
/client/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 |
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/public/css/app.c9128dab.css:
--------------------------------------------------------------------------------
1 | [data-v-6d7466c0] .v-data-table>.v-data-table__wrapper>table>thead>tr>th{color:#444}[data-v-6d7466c0] .v-data-table{color:#212529;font-weight:500}#app{font-family:Noto Sans JP,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2c3e50;margin-top:60px;background:#f4f4f4}pre{background:#f6f8fa;padding:3px 5px;display:inline}
--------------------------------------------------------------------------------
/client/README.md:
--------------------------------------------------------------------------------
1 | # client
2 |
3 | ## Project setup
4 | ```
5 | yarn install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | yarn serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | yarn build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | yarn lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/client/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | 'extends': [
7 | 'plugin:vue/essential',
8 | 'eslint:recommended'
9 | ],
10 | parserOptions: {
11 | parser: 'babel-eslint'
12 | },
13 | rules: {
14 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Basic Redis Leaderboard Demo NodeJS",
3 | "description": "List of top 100 companies",
4 | "repository": "https://github.com/",
5 | "logo": "https://redis.io/images/redis-white.png",
6 | "keywords": ["node", "express", "redis", "leadboard"],
7 | "env": {
8 | "REDIS_ENDPOINT_URI": {
9 | "description": "Redis server URI",
10 | "required": true
11 | },
12 | "REDIS_PASSWORD": {
13 | "description": "Password to your Redis server",
14 | "required": true
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/api/index.js:
--------------------------------------------------------------------------------
1 | require('dotenv').config();
2 | const express = require('express');
3 | const cors = require('cors');
4 | const path = require('path');
5 |
6 | const PORT = process.env.PORT || 5000;
7 |
8 | const app = express();
9 |
10 | const { seedDb } = require('./db');
11 |
12 | // Setup routes
13 | app.use('/', express.static(path.join(__dirname, '../public')));
14 | app.use(cors());
15 | require('./routes')(app);
16 |
17 | // Seed redis db
18 | seedDb();
19 |
20 | app.listen(PORT, () => {
21 | console.log(`App listening on port ${PORT}`);
22 | });
23 |
24 | module.exports = app
25 |
--------------------------------------------------------------------------------
/api/routes/ranks.js:
--------------------------------------------------------------------------------
1 | const rankDb = require('../db/ranks');
2 | const companyDb = require('../db/companies');
3 | const { seedDb } = require('../db');
4 |
5 | module.exports.update = async (req, res, next) => {
6 | const {
7 | symbol,
8 | amount,
9 | } = req.query;
10 |
11 | try {
12 | await rankDb.zincrby(amount, symbol)
13 |
14 | res.json({ success: true });
15 | } catch (err) {
16 | console.log(err);
17 |
18 | next(err);
19 | }
20 | }
21 |
22 | module.exports.reset = async (req, res, next) => {
23 | try {
24 | await seedDb(true);
25 |
26 | res.json({ success: true });
27 | } catch (err) {
28 | console.log(err);
29 |
30 | next(err);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/api/routes/index.js:
--------------------------------------------------------------------------------
1 | const companies = require('./companies');
2 | const ranks = require('./ranks');
3 |
4 | module.exports = app => {
5 | app.get('/api/list/:method', companies.getList);
6 | app.get('/api/rank/update', ranks.update);
7 | app.get('/api/rank/reset', ranks.reset);
8 |
9 | app.use((err, req, res, next) => {
10 | err.statusCode = err.statusCode ? err.statusCode : 413;
11 | var errData = { reason: err.message, info: err.info };
12 |
13 | if (!res.headersSent) {
14 | res.status(err.statusCode).send(errData);
15 | }
16 |
17 | console.log('Unexpected server error', err, err.stack);
18 |
19 | err = new Error('Unexpected server error');
20 | err.statusCode = err.statusCode || 500;
21 | });
22 | };
23 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "github-redis-company-marketcap",
3 | "version": "0.0.1",
4 | "description": "Top 100 companies using marketcap",
5 | "main": "api/index.js",
6 | "scripts": {
7 | "start": "node api/index.js",
8 | "dev": "nodemon api/index.js",
9 | "test": "echo \"Error: no test specified\" && exit 1"
10 | },
11 | "keywords": [
12 | "redis",
13 | "nodejs",
14 | "example",
15 | "github",
16 | "leaderboard",
17 | "marketcap",
18 | "company",
19 | "top"
20 | ],
21 | "author": "adrphlhome",
22 | "license": "MIT",
23 | "dependencies": {
24 | "@vercel/node": "^1.9.0",
25 | "cors": "^2.8.5",
26 | "dotenv": "^8.2.0",
27 | "express": "^4.17.1",
28 | "nodemon": "^2.0.7",
29 | "redis": "^3.0.2"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/api/routes/companies.js:
--------------------------------------------------------------------------------
1 | const rankDb = require('../db/ranks');
2 | const companyDb = require('../db/companies');
3 |
4 | module.exports.getList = async (req, res, next) => {
5 | const { method } = req.params;
6 |
7 | if (typeof rankDb[method] !== 'function') {
8 | return res.status(404).json({ msg: 'Method not allowed' });
9 | }
10 |
11 | try {
12 | const ranks = await rankDb[method](req.query);
13 | const symbols = ranks.map(r => r.symbol);
14 | const companies = await Promise.all(symbols.map(companyDb.getBySymbol));
15 |
16 | const results = companies.map((company, index) => ({
17 | ...company,
18 | marketCap: ranks[index].marketCap,
19 | rank: ranks[index].rank,
20 | symbol: symbols[index],
21 | }))
22 | res.json(results);
23 | } catch (err) {
24 | console.log(err);
25 |
26 | next(err);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Redis Leaderboard Demo",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "rm ../public -rf && vue-cli-service build && mv ./dist ../public",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "axios": "^0.21.0",
12 | "core-js": "^3.6.5",
13 | "country-flags-svg": "^1.1.0",
14 | "vue": "^2.6.11",
15 | "vuetify": "^2.2.11"
16 | },
17 | "devDependencies": {
18 | "@vue/cli-plugin-babel": "~4.5.0",
19 | "@vue/cli-plugin-eslint": "~4.5.0",
20 | "@vue/cli-service": "~4.5.0",
21 | "babel-eslint": "^10.1.0",
22 | "eslint": "^6.7.2",
23 | "eslint-plugin-vue": "^6.2.2",
24 | "sass": "^1.19.0",
25 | "sass-loader": "^8.0.0",
26 | "vue-cli-plugin-vuetify": "~2.0.9",
27 | "vue-template-compiler": "^2.6.11",
28 | "vuetify-loader": "^1.3.0"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/client/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Redis Leaderboard Demo
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
27 |
28 |
45 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Redis Developer
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/client/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/api/db/index.js:
--------------------------------------------------------------------------------
1 | const redis = require('redis');
2 | const seedData = require('./seed');
3 |
4 | const DATA_READY_REDIS_KEY = 'LEADERBOARD_DATA_READY';
5 | const REDIS_LEADERBOARD = 'REDIS_LEADERBOARD';
6 | const { promisify } = require("util");
7 |
8 | const client = redis.createClient(process.env.REDIS_ENDPOINT_URI, {
9 | password: process.env.REDIS_PASSWORD,
10 | });
11 |
12 | const db = (func) => {
13 | return promisify(client[func]).bind(client);
14 | };
15 |
16 | const seedDb = async (force) => {
17 | const isDataReady = await db('get')(DATA_READY_REDIS_KEY);
18 | const shouldRunSeed = force || !isDataReady;
19 |
20 | if (!shouldRunSeed) return;
21 |
22 | console.log('Loading Seed Data');
23 |
24 | try {
25 | const loadCompany = (company, index) => {
26 | client.zadd([
27 | REDIS_LEADERBOARD,
28 | company.marketCap,
29 | company.symbol.toLowerCase(),
30 | ]);
31 |
32 | client.hset([
33 | `leaderboard:${company.symbol.toLowerCase()}`,
34 | 'symbol',
35 | company.symbol.toLowerCase(),
36 | 'company',
37 | company.company,
38 | 'country',
39 | company.country,
40 | ]);
41 | }
42 |
43 | seedData.forEach(loadCompany);
44 |
45 | await db('set')(DATA_READY_REDIS_KEY, true)
46 | } catch (err) {
47 | // pass
48 | }
49 | }
50 |
51 | module.exports = {
52 | client,
53 | seedDb,
54 | REDIS_LEADERBOARD,
55 | db,
56 | }
57 |
58 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 | client We're sorry but client doesn't work properly without JavaScript enabled. Please enable it to continue.
--------------------------------------------------------------------------------
/marketplace.json:
--------------------------------------------------------------------------------
1 | {
2 | "app_name": "Basic Redis leaderboard example in Nodejs",
3 | "description": "Showcases how to implement leaderboard application in NodeJs",
4 | "type": "Building Block",
5 | "contributed_by": "Redis",
6 | "repo_url": "https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs",
7 | "preview_image_url": "https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/images/app_preview_image.png",
8 | "download_url": "https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs/archive/main.zip",
9 | "hosted_url": "",
10 | "quick_deploy": "true",
11 | "deploy_buttons": [
12 | {
13 | "heroku": "https://heroku.com/deploy?template=https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs"
14 | },
15 | {
16 | "vercel": "https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fredis-developer%2Fbasic-redis-leaderboard-demo-nodejs&env=REDIS_ENDPOINT_URI,REDIS_PASSWORD&envDescription=REDIS_ENDPOINT_URI%20is%20required%20at%20least%20to%20connect%20to%20Redis%20clouding%20server"
17 | },
18 | {
19 | "Google": "https://deploy.cloud.run/?git_repo=https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs.git"
20 | }
21 | ],
22 | "language": [
23 | "JavaScript"
24 | ],
25 | "redis_commands": [
26 | "HSET",
27 | "ZADD",
28 | "ZREVRANGE",
29 | "ZRANGE",
30 | "ZREVRANGE",
31 | "ZSCORE",
32 | "ZINCRBY",
33 | "ZCOUNT"
34 | ],
35 | "redis_use_cases": [
36 | "leaderboard"
37 | ],
38 | "redis_features": [],
39 | "app_image_urls": [
40 | "https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs/raw/master/docs/screenshot001.png"
41 | ],
42 | "youtube_url": "https://www.youtube.com/watch?v=zzinHxdZ34I",
43 | "special_tags": [],
44 | "verticals": [
45 | "Others"
46 | ],
47 | "markdown": "https://raw.githubusercontent.com/redis-developer/basic-redis-leaderboard-demo-nodejs/master/README.md"
48 | }
--------------------------------------------------------------------------------
/api/db/ranks.js:
--------------------------------------------------------------------------------
1 | const { db, REDIS_LEADERBOARD } = require('.');
2 |
3 | const zrange = async (start, end, isDesc) => {
4 | const results = await db(isDesc ? 'zrevrange' : 'zrange')([REDIS_LEADERBOARD, start, end, 'WITHSCORES']);
5 |
6 | const data = [];
7 | let startRank = isDesc ? start + 1 : (results.length / 2 - start);
8 | const increaseFactor = isDesc ? 1 : -1;
9 |
10 | for (let i = 0; i < results.length; i += 2) {
11 | data.push({
12 | rank: startRank,
13 | symbol: results[i],
14 | marketCap: results[i + 1],
15 | });
16 | startRank += increaseFactor;
17 | }
18 |
19 | return data;
20 | }
21 |
22 | // 1.Top 10 companies: zrevrange companyLeaderboard 0 9 WITHSCORES
23 | module.exports.top10 = () => {
24 | return zrange(0, 9, true);
25 | }
26 |
27 | // 2.All companies: zrevrange companyLeaderboard 0 -1 WITHSCORES
28 | module.exports.all = () => {
29 | return zrange(0, -1, true);
30 | }
31 |
32 | // 3.Bottom 10 companies: zrange companyLeaderboard 0 9 WITHSCORES
33 | module.exports.bottom10 = () => {
34 | return zrange(0, 9);
35 | }
36 |
37 | // 4.Between rank 10 and 15: zrevange companyLeaderboard 9 14 WITHSCORES
38 | module.exports.inRank = ({ start, end }) => {
39 | return zrange(+start, +end, true);
40 | }
41 |
42 | // 5.Show ranks of AAPL, FB and TSLA: ZMSCORE companyLeaderBoard company:AAPL company:FB company:TSLA
43 | module.exports.getBySymbol = async ({ symbols }) => {
44 | const results = await Promise.all(
45 | symbols.map(symbol => db('zscore')([REDIS_LEADERBOARD, symbol]))
46 | )
47 | const data = [];
48 | results.forEach((marketCap, index) => {
49 | data.push({
50 | marketCap,
51 | symbol: symbols[index],
52 | });
53 | });
54 |
55 | return data;
56 | }
57 |
58 | const a = async ({ nextToken }) => {
59 | let results = [];
60 | if (!!nextToken) {
61 | results = await db('zscan')([nextToken, REDIS_LEADERBOARD, 'COUNT', 10]);
62 | } else {
63 | results = await db('zscan')([0, REDIS_LEADERBOARD, 'COUNT', 10]);
64 | }
65 | }
66 |
67 | // 6.Pagination: Show 1st 10 companies: ZSCAN 0 companyLeaderBoard COUNT 10
68 | module.exports.paginate = (nextToken) => {
69 | return zscan(nextToken);
70 | }
71 |
72 | // 7.Pagination: Show next 10 companies: ZSCAN companyLeaderBoard COUNT 10
73 |
74 | // 8. Adding market cap to companies: ZINCRBY companyLeaderBoard 1000000000 "company:FB"
75 | // 9. Reducing market cap to companies: ZINCRBY companyLeaderBoard -1000000000 "company:FB"
76 | module.exports.zincrby = async (amount, symbol) => {
77 | return db('zincrby')([REDIS_LEADERBOARD, amount, symbol]);
78 | }
79 |
80 | // 10. Companies over a Trillion: ZCOUNT companyLeaderBoard 1000000000000 +inf
81 | // 11. # companies between 500 billion and 1 trillion: ZCOUNT companyLeaderBoard 500000000000 1000000000000
82 |
83 |
--------------------------------------------------------------------------------
/client/src/components/RankSelectionModal.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 | mdi-close
19 |
20 |
21 |
22 |
23 | Select the menus below to update the rank of the companies
24 |
25 |
34 |
41 |
48 |
49 |
50 |
51 |
57 | Update
58 |
59 |
60 |
61 |
62 |
63 |
64 |
131 |
132 |
--------------------------------------------------------------------------------
/azuredeploy.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
3 | "contentVersion": "1.0.0.0",
4 | "parameters": {
5 | "siteName": {
6 | "defaultValue": "basic-redis-leaderboard-demo-nodejs",
7 | "type": "string"
8 | },
9 | "hostingPlanName": {
10 | "type": "string"
11 | },
12 | "siteLocation": {
13 | "type": "string"
14 | },
15 | "sku": {
16 | "type": "string",
17 | "allowedValues": [
18 | "Free",
19 | "Shared",
20 | "Basic",
21 | "Standard"
22 | ],
23 | "defaultValue": "Free"
24 | },
25 | "workerSize": {
26 | "type": "string",
27 | "allowedValues": [
28 | "0",
29 | "1",
30 | "2"
31 | ],
32 | "defaultValue": "0"
33 | },
34 | "repoUrl": {
35 | "type": "string"
36 | },
37 | "branch": {
38 | "type": "string"
39 | },
40 | "Project": {
41 | "type": "string",
42 | "defaultValue": "NodeRedis"
43 | },
44 | "WebsiteNodeDefaultVersion": {
45 | "type": "string",
46 | "defaultValue": "6.9.1"
47 | },
48 | "MicrosoftAppId": {
49 | "type": "string"
50 | },
51 | "MicrosoftAppPassword": {
52 | "type": "string"
53 | }
54 | },
55 | "resources": [
56 | {
57 | "apiVersion": "2014-06-01",
58 | "name": "[parameters('hostingPlanName')]",
59 | "type": "Microsoft.Web/serverFarms",
60 | "location": "[parameters('siteLocation')]",
61 | "properties": {
62 | "name": "[parameters('hostingPlanName')]",
63 | "sku": "[parameters('sku')]",
64 | "workerSize": "[parameters('workerSize')]",
65 | "numberOfWorkers": 1
66 | }
67 | },
68 | {
69 | "apiVersion": "2014-06-01",
70 | "name": "[parameters('siteName')]",
71 | "type": "Microsoft.Web/Sites",
72 | "location": "[parameters('siteLocation')]",
73 | "dependsOn": [
74 | "[concat('Microsoft.Web/serverFarms/', parameters('hostingPlanName'))]"
75 | ],
76 | "tags": {
77 | "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "empty"
78 | },
79 | "properties": {
80 | "name": "[parameters('siteName')]",
81 | "serverFarm": "[parameters('hostingPlanName')]"
82 | },
83 | "resources": [
84 | {
85 | "apiVersion": "2014-04-01",
86 | "type": "config",
87 | "name": "web",
88 | "dependsOn": [
89 | "[concat('Microsoft.Web/Sites/', parameters('siteName'))]"
90 | ],
91 | "properties": {
92 | "appSettings": [
93 | {
94 | "name": "WEBSITE_NODE_DEFAULT_VERSION",
95 | "value": "[parameters('WebsiteNodeDefaultVersion')]"
96 | },
97 | {
98 | "name": "Project",
99 | "value": "[parameters('Project')]"
100 | },
101 | {
102 | "name": "MICROSOFT_APP_ID",
103 | "value": "[parameters('MicrosoftAppId')]"
104 | },
105 | {
106 | "name": "MICROSOFT_APP_PASSWORD",
107 | "value": "[parameters('MicrosoftAppPassword')]"
108 | }
109 | ]
110 | }
111 | },
112 | {
113 | "apiVersion": "2014-04-01",
114 | "name": "web",
115 | "type": "sourcecontrols",
116 | "dependsOn": [
117 | "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]",
118 | "[concat('Microsoft.Web/Sites/', parameters('siteName'), '/config/web')]"
119 | ],
120 | "properties": {
121 | "RepoUrl": "[parameters('repoUrl')]",
122 | "branch": "[parameters('branch')]",
123 | "IsManualIntegration": true
124 | }
125 | }
126 | ]
127 | }
128 | ]
129 | }
130 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Basic Redis Leaderboard Demo NodeJS
3 |
4 | Show how the redis works with NodeJS, Express.
5 |
6 | ## Screenshots
7 |
8 | 
9 |
10 | # Overview video
11 |
12 | Here's a short video that explains the project and how it uses Redis:
13 |
14 | [](https://www.youtube.com/watch?v=zzinHxdZ34I)
15 |
16 | ## Try it out
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | (See notes: How to run on Google Cloud)
36 |
37 |
38 |
39 | ## How to run on Google Cloud
40 |
41 |
42 | If you don't have redis yet, plug it in (https://spring-gcp.saturnism.me/app-dev/cloud-services/cache/memorystore-redis).
43 | After successful deployment, you need to manually enable the vpc connector as shown in the pictures:
44 |
45 |
46 | 1. Open link google cloud console.
47 |
48 | 
49 |
50 | 2. Click "Edit and deploy new revision" button.
51 |
52 | 
53 |
54 | 3. Add environment.
55 |
56 | 
57 |
58 | 4. Select vpc-connector and deploy application.
59 |
60 | 
61 |
62 |
63 | Problem with unsupported flags when deploying google cloud run button
64 |
65 |
66 |
67 | # How it works?
68 | ## 1. How the data is stored:
69 |
70 | The company data is stored in a hash like below:
71 | HSET "company:AAPL" symbol "AAPL" market_cap "2600000000000" country USA
72 |
73 | The Ranks are stored in a ZSET.
74 | ZADD companyLeaderboard 2600000000000 company:AAPL
75 |
76 |
77 |
78 |
79 |
80 | ## 2. How the data is accessed:
81 |
82 | Top 10 companies: ZREVRANGE companyLeaderboard 0 9 WITHSCORES
83 | All companies: ZREVRANGE companyLeaderboard 0 -1 WITHSCORES
84 | Bottom 10 companies: ZRANGE companyLeaderboard 0 9 WITHSCORES
85 | Between rank 10 and 15: ZREVRANGE companyLeaderboard 9 14 WITHSCORES
86 | Show ranks of AAPL, FB and TSLA: ZSCORE companyLeaderBoard company:AAPL company:FB company:TSLA
87 |
88 | Adding market cap to companies: ZINCRBY companyLeaderBoard 1000000000 "company:FB"
89 | Reducing market cap to companies: ZINCRBY companyLeaderBoard -1000000000 "company:FB"
90 | Companies over a Trillion: ZCOUNT companyLeaderBoard 1000000000000 +inf
91 | Companies between 500 billion and 1 trillion: ZCOUNT companyLeaderBoard 500000000000 1000000000000
92 |
93 |
94 | ## How to run it locally?
95 |
96 | #### Copy `.env.example` to create `.env`. And provide the values for environment variables
97 |
98 | - REDIS_ENDPOINT_URI: Redis server URI
99 | - REDIS_PASSWORD: Password to the server
100 |
101 | #### Run frontend
102 |
103 | ```sh
104 | cd client
105 | yarn
106 | yarn serve
107 | ```
108 |
109 | #### Run backend
110 |
111 | ```sh
112 | yarn
113 | yarn dev
114 | ```
115 |
--------------------------------------------------------------------------------
/client/src/components/Example.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 | How it works?
11 |
12 | 1. How the data is stored:
13 |
14 | The company data is stored in a hash like below:
15 | HSET "company:AAPL" symbol "AAPL" market_cap "2600000000000" country USA
16 |
17 | The Ranks are stored in a ZSET.
18 | ZADD companyLeaderboard 2600000000000 company:AAPL
19 |
20 |
21 |
22 |
23 | 2. How the data is accessed:
24 |
25 | Top 10 companies: ZREVRANGE companyLeaderboard 0 9 WITHSCORES
26 | All companies: ZREVRANGE companyLeaderboard 0 -1 WITHSCORES
27 | Bottom 10 companies: ZRANGE companyLeaderboard 0 9 WITHSCORES
28 | Between rank 10 and 15: ZREVRANGE companyLeaderboard 9 14 WITHSCORES
29 | Show ranks of AAPL, FB and TSLA: ZSCORE companyLeaderBoard company:AAPL company:FB company:TSLA
30 |
31 | Adding market cap to companies: ZINCRBY companyLeaderBoard 1000000000 "company:FB"
32 | Reducing market cap to companies: ZINCRBY companyLeaderBoard -1000000000 "company:FB"
33 | Companies over a Trillion: ZCOUNT companyLeaderBoard 1000000000000 +inf
34 | Companies between 500 billion and 1 trillion: ZCOUNT companyLeaderBoard 500000000000 1000000000000
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
52 |
53 |
54 |
59 |
60 |
65 | mdi-cog-outline
66 | Update Rank
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
83 |
84 | {{ item.rank }}
85 |
86 |
87 |
88 |
89 |
95 |
96 |
97 |
{{ item.company }}
98 |
{{ item.symbol.toUpperCase() }}
99 |
100 |
101 |
102 |
103 | {{ formatUSD(item.marketCap) }}
104 |
105 |
106 |
107 |
108 |
113 |
114 |
{{ item.country }}
115 |
116 |
117 |
118 |
119 |
120 | No Results Found.
121 |
122 |
123 |
129 | Load next 10
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
266 |
267 |
268 |
277 |
--------------------------------------------------------------------------------
/public/js/app.2cb72c4f.js:
--------------------------------------------------------------------------------
1 | (function(e){function t(t){for(var n,i,l=t[0],c=t[1],s=t[2],u=0,d=[];uO?"$".concat((e/O).toFixed(3)," T"):e>L?"$".concat((e/L).toFixed(2)," B"):e>F?"$".concat((e/F).toFixed(1)," M"):"$ ".concat(e)},getCountryFlag:function(e){var t={"S. Arabia":"Saudi Arabia","S. Korea":"South Korea"},a=Object(u["findFlagUrlByCountryName"])(t[e]||e);return a}}},E=B,U=(a("1e58"),a("62ad")),j=a("a523"),N=a("8fea"),I=a("cd55"),$=a("49e2"),D=a("c865"),H=a("0393"),Z=a("0fd9"),M=Object(h["a"])(E,i,l,!1,null,"6d7466c0",null),G=M.exports;x()(M,{VBtn:_["a"],VCard:k["a"],VCol:U["a"],VContainer:j["a"],VDataTable:N["a"],VExpansionPanel:I["a"],VExpansionPanelContent:$["a"],VExpansionPanelHeader:D["a"],VExpansionPanels:H["a"],VIcon:w["a"],VRow:Z["a"],VSelect:R["a"]});var K={name:"App",components:{Example:G}},W=K,z=(a("034f"),a("7496")),J=Object(h["a"])(W,o,r,!1,null,null,null),Y=J.exports;x()(J,{VApp:z["a"]});var q=a("f309");n["a"].use(q["a"]);var Q=new q["a"]({});n["a"].config.productionTip=!1,new n["a"]({vuetify:Q,render:function(e){return e(Y)}}).$mount("#app")},"85ec":function(e,t,a){}});
2 | //# sourceMappingURL=app.2cb72c4f.js.map
--------------------------------------------------------------------------------
/api/db/seed.js:
--------------------------------------------------------------------------------
1 | module.exports = [
2 | {
3 | company: 'Apple',
4 | symbol: 'AAPL',
5 | marketCap: 2222000000,
6 | country: 'USA',
7 | },
8 | {
9 | company: 'Saudi Aramco',
10 | symbol: '2222.SR',
11 | marketCap: 2046000000,
12 | country: 'S. Arabia',
13 | },
14 | {
15 | company: 'Microsoft',
16 | symbol: 'MSFT',
17 | marketCap: 1660000000,
18 | country: 'USA',
19 | },
20 | {
21 | company: 'Amazon',
22 | symbol: 'AMZN',
23 | marketCap: 1597000000,
24 | country: 'USA',
25 | },
26 | {
27 | company: 'Alphabet (Google)',
28 | symbol: 'GOOG',
29 | marketCap: 1218000000,
30 | country: 'USA',
31 | },
32 | {
33 | company: 'Tesla',
34 | symbol: 'TSLA',
35 | marketCap: 834170000,
36 | country: 'USA',
37 | },
38 | {
39 | company: 'Facebook',
40 | symbol: 'FB',
41 | marketCap: 762110000,
42 | country: 'USA',
43 | },
44 | {
45 | company: 'Tencent',
46 | symbol: 'TCEHY',
47 | marketCap: 742230000,
48 | country: 'China',
49 | },
50 | {
51 | company: 'Alibaba',
52 | symbol: 'BABA',
53 | marketCap: 642220000,
54 | country: 'China',
55 | },
56 | {
57 | company: 'Berkshire Hathaway',
58 | symbol: 'BRK-A',
59 | marketCap: 549580000,
60 | country: 'USA',
61 | },
62 | {
63 | company: 'Samsung',
64 | symbol: '005930.KS',
65 | marketCap: 526630000,
66 | country: 'S. Korea',
67 | },
68 | {
69 | company: 'TSMC',
70 | symbol: 'TSM',
71 | marketCap: 511700000,
72 | country: 'Taiwan',
73 | },
74 | {
75 | company: 'Visa',
76 | symbol: 'V',
77 | marketCap: 474940000,
78 | country: 'USA',
79 | },
80 | {
81 | company: 'Johnson & Johnson',
82 | symbol: 'JNJ',
83 | marketCap: 421310000,
84 | country: 'USA',
85 | },
86 | {
87 | company: 'Walmart',
88 | symbol: 'WMT',
89 | marketCap: 414850000,
90 | country: 'USA',
91 | },
92 | {
93 | company: 'JPMorgan Chase',
94 | symbol: 'JPM',
95 | marketCap: 414610000,
96 | country: 'USA',
97 | },
98 | {
99 | company: 'Kweichow Moutai',
100 | symbol: '600519.SS',
101 | marketCap: 392630000,
102 | country: 'China',
103 | },
104 | {
105 | company: 'Mastercard',
106 | symbol: 'MA',
107 | marketCap: 352760000,
108 | country: 'USA',
109 | },
110 | {
111 | company: 'UnitedHealth',
112 | symbol: 'UNH',
113 | marketCap: 344790000,
114 | country: 'USA',
115 | },
116 | {
117 | company: 'Procter & Gamble',
118 | symbol: 'PG',
119 | marketCap: 344140000,
120 | country: 'USA',
121 | },
122 | {
123 | company: 'Nestlé',
124 | symbol: 'NSRGY',
125 | marketCap: 333610000,
126 | country: 'Switzerland',
127 | },
128 | {
129 | company: 'NVIDIA',
130 | symbol: 'NVDA',
131 | marketCap: 328730000,
132 | country: 'USA',
133 | },
134 | {
135 | company: 'LVMH',
136 | symbol: 'LVMUY',
137 | marketCap: 327040000,
138 | country: 'France',
139 | },
140 | {
141 | company: 'Walt Disney',
142 | symbol: 'DIS',
143 | marketCap: 322900000,
144 | country: 'USA',
145 | },
146 | {
147 | company: 'Roche',
148 | symbol: 'RHHBY',
149 | marketCap: 293520000,
150 | country: 'Switzerland',
151 | },
152 | {
153 | company: 'Home Depot',
154 | symbol: 'HD',
155 | marketCap: 289700000,
156 | country: 'USA',
157 | },
158 | {
159 | company: 'PayPal',
160 | symbol: 'PYPL',
161 | marketCap: 284080000,
162 | country: 'USA',
163 | },
164 | {
165 | company: 'Bank of America',
166 | symbol: 'BAC',
167 | marketCap: 281410000,
168 | country: 'USA',
169 | },
170 | {
171 | company: 'ICBC',
172 | symbol: '1398.HK',
173 | marketCap: 266230000,
174 | country: 'China',
175 | },
176 | {
177 | company: 'Meituan-Dianping',
178 | symbol: 'MPNGF',
179 | marketCap: 246210000,
180 | country: 'China',
181 | },
182 | {
183 | company: 'Verizon',
184 | symbol: 'VZ',
185 | marketCap: 239180000,
186 | country: 'USA',
187 | },
188 | {
189 | company: 'Ping An Insurance',
190 | symbol: 'PNGAY',
191 | marketCap: 237140000,
192 | country: 'China',
193 | },
194 | {
195 | company: 'Comcast',
196 | symbol: 'CMCSA',
197 | marketCap: 235810000,
198 | country: 'USA',
199 | },
200 | {
201 | company: 'Adobe',
202 | symbol: 'ADBE',
203 | marketCap: 232710000,
204 | country: 'USA',
205 | },
206 | {
207 | company: 'Nike',
208 | symbol: 'NKE',
209 | marketCap: 230710000,
210 | country: 'USA',
211 | },
212 | {
213 | company: 'Netflix',
214 | symbol: 'NFLX',
215 | marketCap: 225490000,
216 | country: 'USA',
217 | },
218 | {
219 | company: 'Pinduoduo',
220 | symbol: 'PDD',
221 | marketCap: 221680000,
222 | country: 'China',
223 | },
224 | {
225 | company: 'Coca-Cola',
226 | symbol: 'KO',
227 | marketCap: 219510000,
228 | country: 'USA',
229 | },
230 | {
231 | company: 'Novartis',
232 | symbol: 'NVS',
233 | marketCap: 214590000,
234 | country: 'Switzerland',
235 | },
236 | {
237 | company: 'Toyota',
238 | symbol: 'TM',
239 | marketCap: 212390000,
240 | country: 'Japan',
241 | },
242 | {
243 | company: 'ASML',
244 | symbol: 'ASML',
245 | marketCap: 212100000,
246 | country: 'Netherlands',
247 | },
248 | {
249 | company: 'Intel',
250 | symbol: 'INTC',
251 | marketCap: 211660000,
252 | country: 'USA',
253 | },
254 | {
255 | company: 'L\' Oréal',
256 | symbol: 'OR.PA',
257 | marketCap: 210160000,
258 | country: 'France',
259 | },
260 | {
261 | company: 'Merck',
262 | symbol: 'MRK',
263 | marketCap: 210060000,
264 | country: 'USA',
265 | },
266 | {
267 | company: 'AT&T',
268 | symbol: 'T',
269 | marketCap: 206790000,
270 | country: 'USA',
271 | },
272 | {
273 | company: 'Pfizer',
274 | symbol: 'PFE',
275 | marketCap: 206380000,
276 | country: 'USA',
277 | },
278 | {
279 | company: 'Salesforce',
280 | symbol: 'CRM',
281 | marketCap: 203770000,
282 | country: 'USA',
283 | },
284 | {
285 | company: 'Thermo Fisher Scientific',
286 | symbol: 'TMO',
287 | marketCap: 203040000,
288 | country: 'USA',
289 | },
290 | {
291 | company: 'Pepsico',
292 | symbol: 'PEP',
293 | marketCap: 199250000,
294 | country: 'USA',
295 | },
296 | {
297 | company: 'Abbott Laboratories',
298 | symbol: 'ABT',
299 | marketCap: 197810000,
300 | country: 'USA',
301 | },
302 | {
303 | company: 'China Construction Bank',
304 | symbol: 'CICHY',
305 | marketCap: 193710000,
306 | country: 'China',
307 | },
308 | {
309 | company: 'Exxon Mobil',
310 | symbol: 'XOM',
311 | marketCap: 192210000,
312 | country: 'USA',
313 | },
314 | {
315 | company: 'Oracle',
316 | symbol: 'ORCL',
317 | marketCap: 190830000,
318 | country: 'USA',
319 | },
320 | {
321 | company: 'Cisco',
322 | symbol: 'CSCO',
323 | marketCap: 190400000,
324 | country: 'USA',
325 | },
326 | {
327 | company: 'AbbVie',
328 | symbol: 'ABBV',
329 | marketCap: 189380000,
330 | country: 'USA',
331 | },
332 | {
333 | company: 'BHP Group',
334 | symbol: 'BHP',
335 | marketCap: 186040000,
336 | country: 'Australia',
337 | },
338 | {
339 | company: 'Broadcom',
340 | symbol: 'AVGO',
341 | marketCap: 181240000,
342 | country: 'USA',
343 | },
344 | {
345 | company: 'CM Bank',
346 | symbol: '3968.HK',
347 | marketCap: 180460000,
348 | country: 'China',
349 | },
350 | {
351 | company: 'QUALCOMM',
352 | symbol: 'QCOM',
353 | marketCap: 177150000,
354 | country: 'USA',
355 | },
356 | {
357 | company: 'Reliance Industries',
358 | symbol: 'RELIANCE.NS',
359 | marketCap: 177100000,
360 | country: 'India',
361 | },
362 | {
363 | company: 'Chevron',
364 | symbol: 'CVX',
365 | marketCap: 175320000,
366 | country: 'USA',
367 | },
368 | {
369 | company: 'Accenture',
370 | symbol: 'ACN',
371 | marketCap: 175020000,
372 | country: 'Ireland',
373 | },
374 | {
375 | company: 'Danaher',
376 | symbol: 'DHR',
377 | marketCap: 172960000,
378 | country: 'USA',
379 | },
380 | {
381 | company: 'Agricultural Bank of China',
382 | symbol: 'ACGBY',
383 | marketCap: 168730000,
384 | country: 'China',
385 | },
386 | {
387 | company: 'T-Mobile US',
388 | symbol: 'TMUS',
389 | marketCap: 167630000,
390 | country: 'USA',
391 | },
392 | {
393 | company: 'Prosus',
394 | symbol: 'PRX.VI',
395 | marketCap: 165690000,
396 | country: 'Netherlands',
397 | },
398 | {
399 | company: 'Costco',
400 | symbol: 'COST',
401 | marketCap: 163860000,
402 | country: 'USA',
403 | },
404 | {
405 | company: 'Novo Nordisk',
406 | symbol: 'NVO',
407 | marketCap: 162260000,
408 | country: 'Denmark',
409 | },
410 | {
411 | company: 'Medtronic',
412 | symbol: 'MDT',
413 | marketCap: 161130000,
414 | country: 'Ireland',
415 | },
416 | {
417 | company: 'McDonald',
418 | symbol: 'MCD',
419 | marketCap: 160840000,
420 | country: 'USA',
421 | },
422 | {
423 | company: 'Unilever',
424 | symbol: 'UL',
425 | marketCap: 160420000,
426 | country: 'Netherlands',
427 | },
428 | {
429 | company: 'Eli Lilly',
430 | symbol: 'LLY',
431 | marketCap: 159180000,
432 | country: 'USA',
433 | },
434 | {
435 | company: 'Nextera Energy',
436 | symbol: 'NEE',
437 | marketCap: 158930000,
438 | country: 'USA',
439 | },
440 | {
441 | company: 'Texas Instruments',
442 | symbol: 'TXN',
443 | marketCap: 157110000,
444 | country: 'USA',
445 | },
446 | {
447 | company: 'SAP',
448 | symbol: 'SAP',
449 | marketCap: 156750000,
450 | country: 'Germany',
451 | },
452 | {
453 | company: 'Tata',
454 | symbol: 'TCS.NS',
455 | marketCap: 156350000,
456 | country: 'India',
457 | },
458 | {
459 | company: 'Shell',
460 | symbol: 'RYDAF',
461 | marketCap: 155950000,
462 | country: 'Netherlands',
463 | },
464 | {
465 | company: 'AIA',
466 | symbol: 'AAIGF',
467 | marketCap: 153920000,
468 | country: 'Hong Kong',
469 | },
470 | {
471 | company: 'Union Pacific Corporation',
472 | symbol: 'UNP',
473 | marketCap: 147450000,
474 | country: 'USA',
475 | },
476 | {
477 | company: 'Honeywell',
478 | symbol: 'HON',
479 | marketCap: 147370000,
480 | country: 'USA',
481 | },
482 | {
483 | company: 'Jingdong Mall',
484 | symbol: 'JD',
485 | marketCap: 146600000,
486 | country: 'China',
487 | },
488 | {
489 | company: 'Shopify',
490 | symbol: 'SHOP',
491 | marketCap: 145120000,
492 | country: 'Canada',
493 | },
494 | {
495 | company: 'SoftBank',
496 | symbol: 'SFTBF',
497 | marketCap: 143310000,
498 | country: 'Japan',
499 | },
500 | {
501 | company: 'China Life Insurance',
502 | symbol: 'LFC',
503 | marketCap: 142650000,
504 | country: 'China',
505 | },
506 | {
507 | company: 'Linde',
508 | symbol: 'LIN',
509 | marketCap: 141920000,
510 | country: 'UK',
511 | },
512 | {
513 | company: 'Anheuser-Busch Inbev',
514 | symbol: 'BUD',
515 | marketCap: 141810000,
516 | country: 'Belgium',
517 | },
518 | {
519 | company: 'Bristol-Myers Squibb',
520 | symbol: 'BMY',
521 | marketCap: 141210000,
522 | country: 'USA',
523 | },
524 | {
525 | company: 'Amgen',
526 | symbol: 'AMGN',
527 | marketCap: 138840000,
528 | country: 'USA',
529 | },
530 | {
531 | company: 'Keyence',
532 | symbol: 'KYCCF',
533 | marketCap: 137430000,
534 | country: 'Japan',
535 | },
536 | {
537 | company: 'Wells Fargo',
538 | symbol: 'WFC',
539 | marketCap: 137220000,
540 | country: 'USA',
541 | },
542 | {
543 | company: 'United Parcel Service',
544 | symbol: 'UPS',
545 | marketCap: 136910000,
546 | country: 'USA',
547 | },
548 | {
549 | company: 'Morgan Stanley',
550 | symbol: 'MS',
551 | marketCap: 136140000,
552 | country: 'USA',
553 | },
554 | {
555 | company: 'Citigroup',
556 | symbol: 'C',
557 | marketCap: 136090000,
558 | country: 'USA',
559 | },
560 | {
561 | company: 'Astrazeneca',
562 | symbol: 'AZN',
563 | marketCap: 135460000,
564 | country: 'UK',
565 | },
566 | {
567 | company: 'Bank of China',
568 | symbol: 'BACHF',
569 | marketCap: 132660000,
570 | country: 'China',
571 | },
572 | {
573 | company: 'Philip Morris',
574 | symbol: 'PM',
575 | marketCap: 129390000,
576 | country: 'USA',
577 | },
578 | {
579 | company: 'Sony',
580 | symbol: 'SNE',
581 | marketCap: 127620000,
582 | country: 'Japan',
583 | },
584 | {
585 | company: 'Charter Communications',
586 | symbol: 'CHTR',
587 | marketCap: 126790000,
588 | country: 'USA',
589 | },
590 | {
591 | company: 'Starbucks',
592 | symbol: 'SBUX',
593 | marketCap: 124020000,
594 | country: 'USA',
595 | },
596 | {
597 | company: 'NTT Docomo',
598 | symbol: 'NTDMF',
599 | marketCap: 122470000,
600 | country: 'Japan',
601 | }
602 | ]
--------------------------------------------------------------------------------
/public/js/app.2cb72c4f.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?0f16","webpack:///./src/components/Example.vue?5af1","webpack:///./src/App.vue?0bd8","webpack:///./src/components/Example.vue?8026","webpack:///./src/components/RankSelectionModal.vue?a1d2","webpack:///src/components/RankSelectionModal.vue","webpack:///./src/components/RankSelectionModal.vue?8d6e","webpack:///./src/components/RankSelectionModal.vue","webpack:///src/components/Example.vue","webpack:///./src/components/Example.vue?8849","webpack:///./src/components/Example.vue?baf6","webpack:///src/App.vue","webpack:///./src/App.vue?3359","webpack:///./src/App.vue?2667","webpack:///./src/plugins/vuetify.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","staticStyle","_v","staticRenderFns","model","callback","$$v","panel","expression","ACTION_LIST","method","companies","on","onUpdateRank","scopedSlots","_u","fn","ref","_g","rankForm","headers","loading","item","_s","rank","symbol","toUpperCase","company","formatUSD","marketCap","getCountryFlag","country","proxy","loadData","_e","_t","dialog","close","internalValue","$set","RANK_OP","AMOUNT_LIST","isValid","components","props","type","Array","watch","computed","op","amount","set","$emit","val","methods","component","VBtn","VCard","VCardActions","VCardText","VCardTitle","VDialog","VIcon","VSelect","VSpacer","RankSelectionModal","handler","immediate","created","usd","MILLION","VCol","VContainer","VDataTable","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VExpansionPanels","VRow","Example","VApp","Vue","use","Vuetify","config","productionTip","vuetify","render","h","App","$mount"],"mappings":"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","file":"js/app.2cb72c4f.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\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 = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && 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(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\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\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// 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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Example.vue?vue&type=style&index=0&id=6d7466c0&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',{staticClass:\"mt-0\",attrs:{\"id\":\"app\"}},[_c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"-50px\",\"right\":\"0px\",\"width\":\"300px\"}},[_c('img',{attrs:{\"src\":\"https://redislabs.com/wp-content/uploads/2020/12/RedisLabs_Illustration_HomepageHero_v4.svg\"}})]),_c('div',{staticStyle:{\"height\":\"50px\"}}),_c('h1',{staticClass:\"text-center\",staticStyle:{\"color\":\"#444444\"}},[_vm._v(\"Redis Leadboard Demo\")]),_c('div',{staticStyle:{\"height\":\"50px\"}}),_c('example')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"example\"},[_c('v-row',{staticClass:\"mb-5\"},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-expansion-panels',{attrs:{\"multiple\":\"\"},model:{value:(_vm.panel),callback:function ($$v) {_vm.panel=$$v},expression:\"panel\"}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(\"How it works?\")]),_c('v-expansion-panel-content',[_c('b',[_vm._v(\"1. How the data is stored:\")]),_c('ol',[_c('li',[_vm._v(\"The company data is stored in a hash like below: \"),_c('pre',[_vm._v(\"HSET \\\"company:AAPL\\\" symbol \\\"AAPL\\\" market_cap \\\"2600000000000\\\" country USA\")])]),_c('li',[_vm._v(\"The Ranks are stored in a ZSET. \"),_c('pre',[_vm._v(\"ZADD companyLeaderboard 2600000000000 company:AAPL\")])])]),_c('br'),_c('b',[_vm._v(\"2. How the data is accessed:\")]),_c('ol',[_c('li',[_vm._v(\"Top 10 companies: \"),_c('pre',[_vm._v(\"ZREVRANGE companyLeaderboard 0 9 WITHSCORES\")])]),_c('li',[_vm._v(\"All companies: \"),_c('pre',[_vm._v(\"ZREVRANGE companyLeaderboard 0 -1 WITHSCORES\")])]),_c('li',[_vm._v(\"Bottom 10 companies: \"),_c('pre',[_vm._v(\"ZRANGE companyLeaderboard 0 9 WITHSCORES\")])]),_c('li',[_vm._v(\"Between rank 10 and 15: \"),_c('pre',[_vm._v(\"ZREVRANGE companyLeaderboard 9 14 WITHSCORES\")])]),_c('li',[_vm._v(\"Show ranks of AAPL, FB and TSLA: \"),_c('pre',[_vm._v(\"ZSCORE companyLeaderBoard company:AAPL company:FB company:TSLA\")])]),_c('li',[_vm._v(\"Adding market cap to companies: \"),_c('pre',[_vm._v(\"ZINCRBY companyLeaderBoard 1000000000 \\\"company:FB\\\"\")])]),_c('li',[_vm._v(\"Reducing market cap to companies: \"),_c('pre',[_vm._v(\"ZINCRBY companyLeaderBoard -1000000000 \\\"company:FB\\\"\")])]),_c('li',[_vm._v(\"Companies over a Trillion: \"),_c('pre',[_vm._v(\"ZCOUNT companyLeaderBoard 1000000000000 +inf\")])]),_c('li',[_vm._v(\"Companies between 500 billion and 1 trillion: \"),_c('pre',[_vm._v(\"ZCOUNT companyLeaderBoard 500000000000 1000000000000\")])])])])],1)],1)],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-select',{staticStyle:{\"background\":\"#FFF\"},attrs:{\"items\":_vm.ACTION_LIST,\"dense\":\"\",\"outlined\":\"\",\"hide-details\":\"\"},model:{value:(_vm.method),callback:function ($$v) {_vm.method=$$v},expression:\"method\"}})],1),_c('v-col',{staticClass:\"text-right\",attrs:{\"cols\":\"8\"}},[_c('rank-selection-modal',{attrs:{\"companies\":_vm.companies},on:{\"onUpdateRank\":_vm.onUpdateRank},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"color\":\"grey\",\"outlined\":\"\"}},on),[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-cog-outline\")]),_c('span',{staticStyle:{\"color\":\"#111\",\"text-transform\":\"initial\"}},[_vm._v(\"Update Rank\")])],1)]}}]),model:{value:(_vm.rankForm),callback:function ($$v) {_vm.rankForm=$$v},expression:\"rankForm\"}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-card',{staticClass:\"px-2\",staticStyle:{\"border-right\":\"10px\"}},[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.companies,\"loading\":_vm.loading,\"disable-pagination\":true,\"hide-default-footer\":true},scopedSlots:_vm._u([{key:\"item.rank\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.rank)+\" \")]}},{key:\"item.company\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex align-center py-2\"},[_c('div',[_c('img',{staticClass:\"mr-3 my-2\",attrs:{\"src\":(\"https://companiesmarketcap.com//img/company-logos/80/\" + (item.symbol.toUpperCase()) + \".png\"),\"width\":\"40\",\"height\":\"40\"}})]),_c('div',[_c('div',{staticStyle:{\"font-size\":\"1.1rem\"}},[_vm._v(_vm._s(item.company))]),_c('div',{staticClass:\"grey--text\",staticStyle:{\"font-size\":\"0.7rem\"}},[_vm._v(_vm._s(item.symbol.toUpperCase()))])])])]}},{key:\"item.marketCap\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{},[_vm._v(_vm._s(_vm.formatUSD(item.marketCap)))])]}},{key:\"item.country\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex align-center\"},[_c('div',[_c('img',{staticClass:\"mr-1\",attrs:{\"src\":_vm.getCountryFlag(item.country),\"width\":\"20\"}})]),_c('div',{},[_vm._v(_vm._s(item.country))])])]}},{key:\"no-data\",fn:function(){return [_c('span',[_vm._v(\" No Results Found. \")])]},proxy:true}])}),(_vm.method === 'paginate')?_c('v-btn',{attrs:{\"color\":\"primary\",\"block\":\"\"},on:{\"click\":_vm.loadData}},[_vm._v(\" Load next 10 \")]):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"transition\":\"dialog-bottom-transition\",\"max-width\":\"400px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_vm._t(\"activator\",null,null,{ on: on, attrs: attrs })]}}],null,true),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('v-spacer'),_c('v-icon',{attrs:{\"aria-label\":\"Close\"},on:{\"click\":_vm.close}},[_vm._v(\" mdi-close \")])],1),_c('v-card-text',[_c('div',{staticClass:\"headline text-center mb-4\"},[_vm._v(\" Select the menus below to update the rank of the companies \")]),_c('v-select',{attrs:{\"items\":_vm.companies,\"item-text\":\"company\",\"item-value\":\"symbol\",\"placeholder\":\"Select a company\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.internalValue.symbol),callback:function ($$v) {_vm.$set(_vm.internalValue, \"symbol\", $$v)},expression:\"internalValue.symbol\"}}),_c('v-select',{attrs:{\"items\":_vm.RANK_OP,\"placeholder\":\"Add or Subtract\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.internalValue.op),callback:function ($$v) {_vm.$set(_vm.internalValue, \"op\", $$v)},expression:\"internalValue.op\"}}),_c('v-select',{attrs:{\"items\":_vm.AMOUNT_LIST,\"placeholder\":\"Select Amount\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.internalValue.amount),callback:function ($$v) {_vm.$set(_vm.internalValue, \"amount\", $$v)},expression:\"internalValue.amount\"}})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"mb-4\",attrs:{\"color\":\"primary\",\"disabled\":!_vm.isValid},on:{\"click\":_vm.onUpdateRank}},[_vm._v(\" Update \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n\n \n mdi-close\n \n \n \n \n Select the menus below to update the rank of the companies\n
\n \n \n \n \n \n \n \n Update\n \n \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RankSelectionModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RankSelectionModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RankSelectionModal.vue?vue&type=template&id=67081f4c&\"\nimport script from \"./RankSelectionModal.vue?vue&type=script&lang=js&\"\nexport * from \"./RankSelectionModal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VIcon,VSelect,VSpacer})\n","\n \n \n \n \n \n How it works? \n \n 1. How the data is stored: \n \n The company data is stored in a hash like below:\n HSET \"company:AAPL\" symbol \"AAPL\" market_cap \"2600000000000\" country USA \n \n The Ranks are stored in a ZSET. \n ZADD companyLeaderboard 2600000000000 company:AAPL \n \n \n\n \n 2. How the data is accessed: \n \n Top 10 companies: ZREVRANGE companyLeaderboard 0 9 WITHSCORES \n All companies: ZREVRANGE companyLeaderboard 0 -1 WITHSCORES \n Bottom 10 companies: ZRANGE companyLeaderboard 0 9 WITHSCORES \n Between rank 10 and 15: ZREVRANGE companyLeaderboard 9 14 WITHSCORES \n Show ranks of AAPL, FB and TSLA: ZSCORE companyLeaderBoard company:AAPL company:FB company:TSLA \n \n Adding market cap to companies: ZINCRBY companyLeaderBoard 1000000000 \"company:FB\" \n Reducing market cap to companies: ZINCRBY companyLeaderBoard -1000000000 \"company:FB\" \n Companies over a Trillion: ZCOUNT companyLeaderBoard 1000000000000 +inf \n Companies between 500 billion and 1 trillion: ZCOUNT companyLeaderBoard 500000000000 1000000000000 \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n mdi-cog-outline \n Update Rank \n \n \n \n \n \n\n \n \n \n \n \n {{ item.rank }}\n \n \n \n
\n
\n
\n
\n
{{ item.company }}
\n
{{ item.symbol.toUpperCase() }}
\n
\n
\n \n \n {{ formatUSD(item.marketCap) }}
\n \n \n \n
\n
\n
\n
{{ item.country }}
\n
\n \n\n\n \n No Results Found. \n \n \n \n Load next 10\n \n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Example.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Example.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Example.vue?vue&type=template&id=6d7466c0&scoped=true&\"\nimport script from \"./Example.vue?vue&type=script&lang=js&\"\nexport * from \"./Example.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Example.vue?vue&type=style&index=0&id=6d7466c0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d7466c0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VBtn,VCard,VCol,VContainer,VDataTable,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VRow,VSelect})\n","\n \n \n
\n
\n\n
\n\n Redis Leadboard Demo \n\n
\n\n \n \n \n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=65c68803&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\ninstallComponents(component, {VApp})\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib/framework';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n});\n","import Vue from 'vue'\nimport App from './App.vue'\nimport vuetify from './plugins/vuetify';\n\nVue.config.productionTip = false\n\nnew Vue({\n vuetify,\n render: h => h(App)\n}).$mount('#app')\n"],"sourceRoot":""}
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@sindresorhus/is@^0.14.0":
6 | version "0.14.0"
7 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
8 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
9 |
10 | "@szmarczak/http-timer@^1.1.2":
11 | version "1.1.2"
12 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
13 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
14 | dependencies:
15 | defer-to-connect "^1.0.1"
16 |
17 | "@types/node@*":
18 | version "14.14.22"
19 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18"
20 | integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==
21 |
22 | "@vercel/node@^1.9.0":
23 | version "1.9.0"
24 | resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.9.0.tgz#6b64f3b9a962ddb1089276fad00f441a1f4b9cf0"
25 | integrity sha512-Vk/ZpuY4Cdc8oUwBi/kf8qETRaJb/KYdFddVkLuS10QwA0yJx+RQ11trhZ1KFUdc27aBr5S2k8/dDxK8sLr+IA==
26 | dependencies:
27 | "@types/node" "*"
28 | ts-node "8.9.1"
29 | typescript "3.9.3"
30 |
31 | abbrev@1:
32 | version "1.1.1"
33 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
34 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
35 |
36 | accepts@~1.3.7:
37 | version "1.3.7"
38 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
39 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
40 | dependencies:
41 | mime-types "~2.1.24"
42 | negotiator "0.6.2"
43 |
44 | ansi-align@^3.0.0:
45 | version "3.0.0"
46 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
47 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==
48 | dependencies:
49 | string-width "^3.0.0"
50 |
51 | ansi-regex@^4.1.0:
52 | version "4.1.0"
53 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
54 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
55 |
56 | ansi-regex@^5.0.0:
57 | version "5.0.0"
58 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
59 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
60 |
61 | ansi-styles@^4.1.0:
62 | version "4.3.0"
63 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
64 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
65 | dependencies:
66 | color-convert "^2.0.1"
67 |
68 | anymatch@~3.1.1:
69 | version "3.1.1"
70 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
71 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
72 | dependencies:
73 | normalize-path "^3.0.0"
74 | picomatch "^2.0.4"
75 |
76 | arg@^4.1.0:
77 | version "4.1.3"
78 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
79 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
80 |
81 | array-flatten@1.1.1:
82 | version "1.1.1"
83 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
84 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
85 |
86 | balanced-match@^1.0.0:
87 | version "1.0.0"
88 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
89 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
90 |
91 | binary-extensions@^2.0.0:
92 | version "2.2.0"
93 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
94 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
95 |
96 | body-parser@1.19.0:
97 | version "1.19.0"
98 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
99 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
100 | dependencies:
101 | bytes "3.1.0"
102 | content-type "~1.0.4"
103 | debug "2.6.9"
104 | depd "~1.1.2"
105 | http-errors "1.7.2"
106 | iconv-lite "0.4.24"
107 | on-finished "~2.3.0"
108 | qs "6.7.0"
109 | raw-body "2.4.0"
110 | type-is "~1.6.17"
111 |
112 | boxen@^4.2.0:
113 | version "4.2.0"
114 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64"
115 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==
116 | dependencies:
117 | ansi-align "^3.0.0"
118 | camelcase "^5.3.1"
119 | chalk "^3.0.0"
120 | cli-boxes "^2.2.0"
121 | string-width "^4.1.0"
122 | term-size "^2.1.0"
123 | type-fest "^0.8.1"
124 | widest-line "^3.1.0"
125 |
126 | brace-expansion@^1.1.7:
127 | version "1.1.11"
128 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
129 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
130 | dependencies:
131 | balanced-match "^1.0.0"
132 | concat-map "0.0.1"
133 |
134 | braces@~3.0.2:
135 | version "3.0.2"
136 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
137 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
138 | dependencies:
139 | fill-range "^7.0.1"
140 |
141 | buffer-from@^1.0.0:
142 | version "1.1.1"
143 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
144 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
145 |
146 | bytes@3.1.0:
147 | version "3.1.0"
148 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
149 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
150 |
151 | cacheable-request@^6.0.0:
152 | version "6.1.0"
153 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
154 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
155 | dependencies:
156 | clone-response "^1.0.2"
157 | get-stream "^5.1.0"
158 | http-cache-semantics "^4.0.0"
159 | keyv "^3.0.0"
160 | lowercase-keys "^2.0.0"
161 | normalize-url "^4.1.0"
162 | responselike "^1.0.2"
163 |
164 | camelcase@^5.3.1:
165 | version "5.3.1"
166 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
167 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
168 |
169 | chalk@^3.0.0:
170 | version "3.0.0"
171 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
172 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
173 | dependencies:
174 | ansi-styles "^4.1.0"
175 | supports-color "^7.1.0"
176 |
177 | chokidar@^3.2.2:
178 | version "3.5.0"
179 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.0.tgz#458a4816a415e9d3b3caa4faec2b96a6935a9e65"
180 | integrity sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==
181 | dependencies:
182 | anymatch "~3.1.1"
183 | braces "~3.0.2"
184 | glob-parent "~5.1.0"
185 | is-binary-path "~2.1.0"
186 | is-glob "~4.0.1"
187 | normalize-path "~3.0.0"
188 | readdirp "~3.5.0"
189 | optionalDependencies:
190 | fsevents "~2.3.1"
191 |
192 | ci-info@^2.0.0:
193 | version "2.0.0"
194 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
195 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
196 |
197 | cli-boxes@^2.2.0:
198 | version "2.2.1"
199 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
200 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
201 |
202 | clone-response@^1.0.2:
203 | version "1.0.2"
204 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
205 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
206 | dependencies:
207 | mimic-response "^1.0.0"
208 |
209 | color-convert@^2.0.1:
210 | version "2.0.1"
211 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
212 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
213 | dependencies:
214 | color-name "~1.1.4"
215 |
216 | color-name@~1.1.4:
217 | version "1.1.4"
218 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
219 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
220 |
221 | concat-map@0.0.1:
222 | version "0.0.1"
223 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
224 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
225 |
226 | configstore@^5.0.1:
227 | version "5.0.1"
228 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
229 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
230 | dependencies:
231 | dot-prop "^5.2.0"
232 | graceful-fs "^4.1.2"
233 | make-dir "^3.0.0"
234 | unique-string "^2.0.0"
235 | write-file-atomic "^3.0.0"
236 | xdg-basedir "^4.0.0"
237 |
238 | content-disposition@0.5.3:
239 | version "0.5.3"
240 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
241 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
242 | dependencies:
243 | safe-buffer "5.1.2"
244 |
245 | content-type@~1.0.4:
246 | version "1.0.4"
247 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
248 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
249 |
250 | cookie-signature@1.0.6:
251 | version "1.0.6"
252 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
253 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
254 |
255 | cookie@0.4.0:
256 | version "0.4.0"
257 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
258 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
259 |
260 | cors@^2.8.5:
261 | version "2.8.5"
262 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
263 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
264 | dependencies:
265 | object-assign "^4"
266 | vary "^1"
267 |
268 | crypto-random-string@^2.0.0:
269 | version "2.0.0"
270 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
271 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
272 |
273 | debug@2.6.9, debug@^2.2.0:
274 | version "2.6.9"
275 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
276 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
277 | dependencies:
278 | ms "2.0.0"
279 |
280 | debug@^3.2.6:
281 | version "3.2.7"
282 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
283 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
284 | dependencies:
285 | ms "^2.1.1"
286 |
287 | decompress-response@^3.3.0:
288 | version "3.3.0"
289 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
290 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
291 | dependencies:
292 | mimic-response "^1.0.0"
293 |
294 | deep-extend@^0.6.0:
295 | version "0.6.0"
296 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
297 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
298 |
299 | defer-to-connect@^1.0.1:
300 | version "1.1.3"
301 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
302 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
303 |
304 | denque@^1.4.1:
305 | version "1.5.0"
306 | resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de"
307 | integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==
308 |
309 | depd@~1.1.2:
310 | version "1.1.2"
311 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
312 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
313 |
314 | destroy@~1.0.4:
315 | version "1.0.4"
316 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
317 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
318 |
319 | diff@^4.0.1:
320 | version "4.0.2"
321 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
322 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
323 |
324 | dot-prop@^5.2.0:
325 | version "5.3.0"
326 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
327 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
328 | dependencies:
329 | is-obj "^2.0.0"
330 |
331 | dotenv@^8.2.0:
332 | version "8.2.0"
333 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
334 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
335 |
336 | duplexer3@^0.1.4:
337 | version "0.1.4"
338 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
339 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
340 |
341 | ee-first@1.1.1:
342 | version "1.1.1"
343 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
344 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
345 |
346 | emoji-regex@^7.0.1:
347 | version "7.0.3"
348 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
349 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
350 |
351 | emoji-regex@^8.0.0:
352 | version "8.0.0"
353 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
354 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
355 |
356 | encodeurl@~1.0.2:
357 | version "1.0.2"
358 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
359 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
360 |
361 | end-of-stream@^1.1.0:
362 | version "1.4.4"
363 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
364 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
365 | dependencies:
366 | once "^1.4.0"
367 |
368 | escape-goat@^2.0.0:
369 | version "2.1.1"
370 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
371 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
372 |
373 | escape-html@~1.0.3:
374 | version "1.0.3"
375 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
376 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
377 |
378 | etag@~1.8.1:
379 | version "1.8.1"
380 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
381 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
382 |
383 | express@^4.17.1:
384 | version "4.17.1"
385 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
386 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
387 | dependencies:
388 | accepts "~1.3.7"
389 | array-flatten "1.1.1"
390 | body-parser "1.19.0"
391 | content-disposition "0.5.3"
392 | content-type "~1.0.4"
393 | cookie "0.4.0"
394 | cookie-signature "1.0.6"
395 | debug "2.6.9"
396 | depd "~1.1.2"
397 | encodeurl "~1.0.2"
398 | escape-html "~1.0.3"
399 | etag "~1.8.1"
400 | finalhandler "~1.1.2"
401 | fresh "0.5.2"
402 | merge-descriptors "1.0.1"
403 | methods "~1.1.2"
404 | on-finished "~2.3.0"
405 | parseurl "~1.3.3"
406 | path-to-regexp "0.1.7"
407 | proxy-addr "~2.0.5"
408 | qs "6.7.0"
409 | range-parser "~1.2.1"
410 | safe-buffer "5.1.2"
411 | send "0.17.1"
412 | serve-static "1.14.1"
413 | setprototypeof "1.1.1"
414 | statuses "~1.5.0"
415 | type-is "~1.6.18"
416 | utils-merge "1.0.1"
417 | vary "~1.1.2"
418 |
419 | fill-range@^7.0.1:
420 | version "7.0.1"
421 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
422 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
423 | dependencies:
424 | to-regex-range "^5.0.1"
425 |
426 | finalhandler@~1.1.2:
427 | version "1.1.2"
428 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
429 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
430 | dependencies:
431 | debug "2.6.9"
432 | encodeurl "~1.0.2"
433 | escape-html "~1.0.3"
434 | on-finished "~2.3.0"
435 | parseurl "~1.3.3"
436 | statuses "~1.5.0"
437 | unpipe "~1.0.0"
438 |
439 | forwarded@~0.1.2:
440 | version "0.1.2"
441 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
442 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
443 |
444 | fresh@0.5.2:
445 | version "0.5.2"
446 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
447 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
448 |
449 | fsevents@~2.3.1:
450 | version "2.3.1"
451 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f"
452 | integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==
453 |
454 | get-stream@^4.1.0:
455 | version "4.1.0"
456 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
457 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
458 | dependencies:
459 | pump "^3.0.0"
460 |
461 | get-stream@^5.1.0:
462 | version "5.2.0"
463 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
464 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
465 | dependencies:
466 | pump "^3.0.0"
467 |
468 | glob-parent@~5.1.0:
469 | version "5.1.1"
470 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
471 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
472 | dependencies:
473 | is-glob "^4.0.1"
474 |
475 | global-dirs@^2.0.1:
476 | version "2.1.0"
477 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d"
478 | integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==
479 | dependencies:
480 | ini "1.3.7"
481 |
482 | got@^9.6.0:
483 | version "9.6.0"
484 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
485 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
486 | dependencies:
487 | "@sindresorhus/is" "^0.14.0"
488 | "@szmarczak/http-timer" "^1.1.2"
489 | cacheable-request "^6.0.0"
490 | decompress-response "^3.3.0"
491 | duplexer3 "^0.1.4"
492 | get-stream "^4.1.0"
493 | lowercase-keys "^1.0.1"
494 | mimic-response "^1.0.1"
495 | p-cancelable "^1.0.0"
496 | to-readable-stream "^1.0.0"
497 | url-parse-lax "^3.0.0"
498 |
499 | graceful-fs@^4.1.2:
500 | version "4.2.4"
501 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
502 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
503 |
504 | has-flag@^3.0.0:
505 | version "3.0.0"
506 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
507 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
508 |
509 | has-flag@^4.0.0:
510 | version "4.0.0"
511 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
512 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
513 |
514 | has-yarn@^2.1.0:
515 | version "2.1.0"
516 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
517 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
518 |
519 | http-cache-semantics@^4.0.0:
520 | version "4.1.0"
521 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
522 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
523 |
524 | http-errors@1.7.2:
525 | version "1.7.2"
526 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
527 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
528 | dependencies:
529 | depd "~1.1.2"
530 | inherits "2.0.3"
531 | setprototypeof "1.1.1"
532 | statuses ">= 1.5.0 < 2"
533 | toidentifier "1.0.0"
534 |
535 | http-errors@~1.7.2:
536 | version "1.7.3"
537 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
538 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
539 | dependencies:
540 | depd "~1.1.2"
541 | inherits "2.0.4"
542 | setprototypeof "1.1.1"
543 | statuses ">= 1.5.0 < 2"
544 | toidentifier "1.0.0"
545 |
546 | iconv-lite@0.4.24:
547 | version "0.4.24"
548 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
549 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
550 | dependencies:
551 | safer-buffer ">= 2.1.2 < 3"
552 |
553 | ignore-by-default@^1.0.1:
554 | version "1.0.1"
555 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
556 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk=
557 |
558 | import-lazy@^2.1.0:
559 | version "2.1.0"
560 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
561 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
562 |
563 | imurmurhash@^0.1.4:
564 | version "0.1.4"
565 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
566 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
567 |
568 | inherits@2.0.3:
569 | version "2.0.3"
570 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
571 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
572 |
573 | inherits@2.0.4:
574 | version "2.0.4"
575 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
576 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
577 |
578 | ini@1.3.7:
579 | version "1.3.7"
580 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
581 | integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
582 |
583 | ini@~1.3.0:
584 | version "1.3.8"
585 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
586 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
587 |
588 | ipaddr.js@1.9.1:
589 | version "1.9.1"
590 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
591 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
592 |
593 | is-binary-path@~2.1.0:
594 | version "2.1.0"
595 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
596 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
597 | dependencies:
598 | binary-extensions "^2.0.0"
599 |
600 | is-ci@^2.0.0:
601 | version "2.0.0"
602 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
603 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
604 | dependencies:
605 | ci-info "^2.0.0"
606 |
607 | is-extglob@^2.1.1:
608 | version "2.1.1"
609 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
610 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
611 |
612 | is-fullwidth-code-point@^2.0.0:
613 | version "2.0.0"
614 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
615 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
616 |
617 | is-fullwidth-code-point@^3.0.0:
618 | version "3.0.0"
619 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
620 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
621 |
622 | is-glob@^4.0.1, is-glob@~4.0.1:
623 | version "4.0.1"
624 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
625 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
626 | dependencies:
627 | is-extglob "^2.1.1"
628 |
629 | is-installed-globally@^0.3.1:
630 | version "0.3.2"
631 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141"
632 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==
633 | dependencies:
634 | global-dirs "^2.0.1"
635 | is-path-inside "^3.0.1"
636 |
637 | is-npm@^4.0.0:
638 | version "4.0.0"
639 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d"
640 | integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==
641 |
642 | is-number@^7.0.0:
643 | version "7.0.0"
644 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
645 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
646 |
647 | is-obj@^2.0.0:
648 | version "2.0.0"
649 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
650 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
651 |
652 | is-path-inside@^3.0.1:
653 | version "3.0.2"
654 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
655 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==
656 |
657 | is-typedarray@^1.0.0:
658 | version "1.0.0"
659 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
660 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
661 |
662 | is-yarn-global@^0.3.0:
663 | version "0.3.0"
664 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
665 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
666 |
667 | json-buffer@3.0.0:
668 | version "3.0.0"
669 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
670 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
671 |
672 | keyv@^3.0.0:
673 | version "3.1.0"
674 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
675 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
676 | dependencies:
677 | json-buffer "3.0.0"
678 |
679 | latest-version@^5.0.0:
680 | version "5.1.0"
681 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
682 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
683 | dependencies:
684 | package-json "^6.3.0"
685 |
686 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
687 | version "1.0.1"
688 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
689 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
690 |
691 | lowercase-keys@^2.0.0:
692 | version "2.0.0"
693 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
694 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
695 |
696 | make-dir@^3.0.0:
697 | version "3.1.0"
698 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
699 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
700 | dependencies:
701 | semver "^6.0.0"
702 |
703 | make-error@^1.1.1:
704 | version "1.3.6"
705 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
706 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
707 |
708 | media-typer@0.3.0:
709 | version "0.3.0"
710 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
711 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
712 |
713 | merge-descriptors@1.0.1:
714 | version "1.0.1"
715 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
716 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
717 |
718 | methods@~1.1.2:
719 | version "1.1.2"
720 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
721 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
722 |
723 | mime-db@1.45.0:
724 | version "1.45.0"
725 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
726 | integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
727 |
728 | mime-types@~2.1.24:
729 | version "2.1.28"
730 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
731 | integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
732 | dependencies:
733 | mime-db "1.45.0"
734 |
735 | mime@1.6.0:
736 | version "1.6.0"
737 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
738 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
739 |
740 | mimic-response@^1.0.0, mimic-response@^1.0.1:
741 | version "1.0.1"
742 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
743 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
744 |
745 | minimatch@^3.0.4:
746 | version "3.0.4"
747 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
748 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
749 | dependencies:
750 | brace-expansion "^1.1.7"
751 |
752 | minimist@^1.2.0:
753 | version "1.2.5"
754 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
755 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
756 |
757 | ms@2.0.0:
758 | version "2.0.0"
759 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
760 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
761 |
762 | ms@2.1.1:
763 | version "2.1.1"
764 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
765 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
766 |
767 | ms@^2.1.1:
768 | version "2.1.3"
769 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
770 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
771 |
772 | negotiator@0.6.2:
773 | version "0.6.2"
774 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
775 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
776 |
777 | nodemon@^2.0.7:
778 | version "2.0.7"
779 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32"
780 | integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==
781 | dependencies:
782 | chokidar "^3.2.2"
783 | debug "^3.2.6"
784 | ignore-by-default "^1.0.1"
785 | minimatch "^3.0.4"
786 | pstree.remy "^1.1.7"
787 | semver "^5.7.1"
788 | supports-color "^5.5.0"
789 | touch "^3.1.0"
790 | undefsafe "^2.0.3"
791 | update-notifier "^4.1.0"
792 |
793 | nopt@~1.0.10:
794 | version "1.0.10"
795 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
796 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
797 | dependencies:
798 | abbrev "1"
799 |
800 | normalize-path@^3.0.0, normalize-path@~3.0.0:
801 | version "3.0.0"
802 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
803 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
804 |
805 | normalize-url@^4.1.0:
806 | version "4.5.0"
807 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
808 | integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==
809 |
810 | object-assign@^4:
811 | version "4.1.1"
812 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
813 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
814 |
815 | on-finished@~2.3.0:
816 | version "2.3.0"
817 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
818 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
819 | dependencies:
820 | ee-first "1.1.1"
821 |
822 | once@^1.3.1, once@^1.4.0:
823 | version "1.4.0"
824 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
825 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
826 | dependencies:
827 | wrappy "1"
828 |
829 | p-cancelable@^1.0.0:
830 | version "1.1.0"
831 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
832 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
833 |
834 | package-json@^6.3.0:
835 | version "6.5.0"
836 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
837 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
838 | dependencies:
839 | got "^9.6.0"
840 | registry-auth-token "^4.0.0"
841 | registry-url "^5.0.0"
842 | semver "^6.2.0"
843 |
844 | parseurl@~1.3.3:
845 | version "1.3.3"
846 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
847 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
848 |
849 | path-to-regexp@0.1.7:
850 | version "0.1.7"
851 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
852 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
853 |
854 | picomatch@^2.0.4, picomatch@^2.2.1:
855 | version "2.2.2"
856 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
857 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
858 |
859 | prepend-http@^2.0.0:
860 | version "2.0.0"
861 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
862 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
863 |
864 | proxy-addr@~2.0.5:
865 | version "2.0.6"
866 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
867 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
868 | dependencies:
869 | forwarded "~0.1.2"
870 | ipaddr.js "1.9.1"
871 |
872 | pstree.remy@^1.1.7:
873 | version "1.1.8"
874 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
875 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==
876 |
877 | pump@^3.0.0:
878 | version "3.0.0"
879 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
880 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
881 | dependencies:
882 | end-of-stream "^1.1.0"
883 | once "^1.3.1"
884 |
885 | pupa@^2.0.1:
886 | version "2.1.1"
887 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
888 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
889 | dependencies:
890 | escape-goat "^2.0.0"
891 |
892 | qs@6.7.0:
893 | version "6.7.0"
894 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
895 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
896 |
897 | range-parser@~1.2.1:
898 | version "1.2.1"
899 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
900 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
901 |
902 | raw-body@2.4.0:
903 | version "2.4.0"
904 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
905 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
906 | dependencies:
907 | bytes "3.1.0"
908 | http-errors "1.7.2"
909 | iconv-lite "0.4.24"
910 | unpipe "1.0.0"
911 |
912 | rc@^1.2.8:
913 | version "1.2.8"
914 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
915 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
916 | dependencies:
917 | deep-extend "^0.6.0"
918 | ini "~1.3.0"
919 | minimist "^1.2.0"
920 | strip-json-comments "~2.0.1"
921 |
922 | readdirp@~3.5.0:
923 | version "3.5.0"
924 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
925 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
926 | dependencies:
927 | picomatch "^2.2.1"
928 |
929 | redis-commands@^1.5.0:
930 | version "1.6.0"
931 | resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.6.0.tgz#36d4ca42ae9ed29815cdb30ad9f97982eba1ce23"
932 | integrity sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ==
933 |
934 | redis-errors@^1.0.0, redis-errors@^1.2.0:
935 | version "1.2.0"
936 | resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
937 | integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=
938 |
939 | redis-parser@^3.0.0:
940 | version "3.0.0"
941 | resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
942 | integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=
943 | dependencies:
944 | redis-errors "^1.0.0"
945 |
946 | redis@^3.0.2:
947 | version "3.0.2"
948 | resolved "https://registry.yarnpkg.com/redis/-/redis-3.0.2.tgz#bd47067b8a4a3e6a2e556e57f71cc82c7360150a"
949 | integrity sha512-PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==
950 | dependencies:
951 | denque "^1.4.1"
952 | redis-commands "^1.5.0"
953 | redis-errors "^1.2.0"
954 | redis-parser "^3.0.0"
955 |
956 | registry-auth-token@^4.0.0:
957 | version "4.2.1"
958 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
959 | integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
960 | dependencies:
961 | rc "^1.2.8"
962 |
963 | registry-url@^5.0.0:
964 | version "5.1.0"
965 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
966 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
967 | dependencies:
968 | rc "^1.2.8"
969 |
970 | responselike@^1.0.2:
971 | version "1.0.2"
972 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
973 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
974 | dependencies:
975 | lowercase-keys "^1.0.0"
976 |
977 | safe-buffer@5.1.2:
978 | version "5.1.2"
979 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
980 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
981 |
982 | "safer-buffer@>= 2.1.2 < 3":
983 | version "2.1.2"
984 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
985 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
986 |
987 | semver-diff@^3.1.1:
988 | version "3.1.1"
989 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
990 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==
991 | dependencies:
992 | semver "^6.3.0"
993 |
994 | semver@^5.7.1:
995 | version "5.7.1"
996 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
997 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
998 |
999 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
1000 | version "6.3.0"
1001 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1002 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1003 |
1004 | send@0.17.1:
1005 | version "0.17.1"
1006 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
1007 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
1008 | dependencies:
1009 | debug "2.6.9"
1010 | depd "~1.1.2"
1011 | destroy "~1.0.4"
1012 | encodeurl "~1.0.2"
1013 | escape-html "~1.0.3"
1014 | etag "~1.8.1"
1015 | fresh "0.5.2"
1016 | http-errors "~1.7.2"
1017 | mime "1.6.0"
1018 | ms "2.1.1"
1019 | on-finished "~2.3.0"
1020 | range-parser "~1.2.1"
1021 | statuses "~1.5.0"
1022 |
1023 | serve-static@1.14.1:
1024 | version "1.14.1"
1025 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
1026 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
1027 | dependencies:
1028 | encodeurl "~1.0.2"
1029 | escape-html "~1.0.3"
1030 | parseurl "~1.3.3"
1031 | send "0.17.1"
1032 |
1033 | setprototypeof@1.1.1:
1034 | version "1.1.1"
1035 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
1036 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
1037 |
1038 | signal-exit@^3.0.2:
1039 | version "3.0.3"
1040 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
1041 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
1042 |
1043 | source-map-support@^0.5.17:
1044 | version "0.5.19"
1045 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
1046 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
1047 | dependencies:
1048 | buffer-from "^1.0.0"
1049 | source-map "^0.6.0"
1050 |
1051 | source-map@^0.6.0:
1052 | version "0.6.1"
1053 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1054 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1055 |
1056 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
1057 | version "1.5.0"
1058 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
1059 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
1060 |
1061 | string-width@^3.0.0:
1062 | version "3.1.0"
1063 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
1064 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
1065 | dependencies:
1066 | emoji-regex "^7.0.1"
1067 | is-fullwidth-code-point "^2.0.0"
1068 | strip-ansi "^5.1.0"
1069 |
1070 | string-width@^4.0.0, string-width@^4.1.0:
1071 | version "4.2.0"
1072 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
1073 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
1074 | dependencies:
1075 | emoji-regex "^8.0.0"
1076 | is-fullwidth-code-point "^3.0.0"
1077 | strip-ansi "^6.0.0"
1078 |
1079 | strip-ansi@^5.1.0:
1080 | version "5.2.0"
1081 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
1082 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
1083 | dependencies:
1084 | ansi-regex "^4.1.0"
1085 |
1086 | strip-ansi@^6.0.0:
1087 | version "6.0.0"
1088 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
1089 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
1090 | dependencies:
1091 | ansi-regex "^5.0.0"
1092 |
1093 | strip-json-comments@~2.0.1:
1094 | version "2.0.1"
1095 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
1096 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
1097 |
1098 | supports-color@^5.5.0:
1099 | version "5.5.0"
1100 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1101 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1102 | dependencies:
1103 | has-flag "^3.0.0"
1104 |
1105 | supports-color@^7.1.0:
1106 | version "7.2.0"
1107 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1108 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1109 | dependencies:
1110 | has-flag "^4.0.0"
1111 |
1112 | term-size@^2.1.0:
1113 | version "2.2.1"
1114 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
1115 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
1116 |
1117 | to-readable-stream@^1.0.0:
1118 | version "1.0.0"
1119 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
1120 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
1121 |
1122 | to-regex-range@^5.0.1:
1123 | version "5.0.1"
1124 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1125 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1126 | dependencies:
1127 | is-number "^7.0.0"
1128 |
1129 | toidentifier@1.0.0:
1130 | version "1.0.0"
1131 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
1132 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
1133 |
1134 | touch@^3.1.0:
1135 | version "3.1.0"
1136 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
1137 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==
1138 | dependencies:
1139 | nopt "~1.0.10"
1140 |
1141 | ts-node@8.9.1:
1142 | version "8.9.1"
1143 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5"
1144 | integrity sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ==
1145 | dependencies:
1146 | arg "^4.1.0"
1147 | diff "^4.0.1"
1148 | make-error "^1.1.1"
1149 | source-map-support "^0.5.17"
1150 | yn "3.1.1"
1151 |
1152 | type-fest@^0.8.1:
1153 | version "0.8.1"
1154 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
1155 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
1156 |
1157 | type-is@~1.6.17, type-is@~1.6.18:
1158 | version "1.6.18"
1159 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
1160 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
1161 | dependencies:
1162 | media-typer "0.3.0"
1163 | mime-types "~2.1.24"
1164 |
1165 | typedarray-to-buffer@^3.1.5:
1166 | version "3.1.5"
1167 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
1168 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
1169 | dependencies:
1170 | is-typedarray "^1.0.0"
1171 |
1172 | typescript@3.9.3:
1173 | version "3.9.3"
1174 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a"
1175 | integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==
1176 |
1177 | undefsafe@^2.0.3:
1178 | version "2.0.3"
1179 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae"
1180 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==
1181 | dependencies:
1182 | debug "^2.2.0"
1183 |
1184 | unique-string@^2.0.0:
1185 | version "2.0.0"
1186 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
1187 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
1188 | dependencies:
1189 | crypto-random-string "^2.0.0"
1190 |
1191 | unpipe@1.0.0, unpipe@~1.0.0:
1192 | version "1.0.0"
1193 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
1194 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
1195 |
1196 | update-notifier@^4.1.0:
1197 | version "4.1.3"
1198 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3"
1199 | integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==
1200 | dependencies:
1201 | boxen "^4.2.0"
1202 | chalk "^3.0.0"
1203 | configstore "^5.0.1"
1204 | has-yarn "^2.1.0"
1205 | import-lazy "^2.1.0"
1206 | is-ci "^2.0.0"
1207 | is-installed-globally "^0.3.1"
1208 | is-npm "^4.0.0"
1209 | is-yarn-global "^0.3.0"
1210 | latest-version "^5.0.0"
1211 | pupa "^2.0.1"
1212 | semver-diff "^3.1.1"
1213 | xdg-basedir "^4.0.0"
1214 |
1215 | url-parse-lax@^3.0.0:
1216 | version "3.0.0"
1217 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
1218 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
1219 | dependencies:
1220 | prepend-http "^2.0.0"
1221 |
1222 | utils-merge@1.0.1:
1223 | version "1.0.1"
1224 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
1225 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
1226 |
1227 | vary@^1, vary@~1.1.2:
1228 | version "1.1.2"
1229 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
1230 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
1231 |
1232 | widest-line@^3.1.0:
1233 | version "3.1.0"
1234 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
1235 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
1236 | dependencies:
1237 | string-width "^4.0.0"
1238 |
1239 | wrappy@1:
1240 | version "1.0.2"
1241 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1242 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1243 |
1244 | write-file-atomic@^3.0.0:
1245 | version "3.0.3"
1246 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
1247 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
1248 | dependencies:
1249 | imurmurhash "^0.1.4"
1250 | is-typedarray "^1.0.0"
1251 | signal-exit "^3.0.2"
1252 | typedarray-to-buffer "^3.1.5"
1253 |
1254 | xdg-basedir@^4.0.0:
1255 | version "4.0.0"
1256 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
1257 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
1258 |
1259 | yn@3.1.1:
1260 | version "3.1.1"
1261 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
1262 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
1263 |
--------------------------------------------------------------------------------