├── .gitignore ├── README.md ├── assets └── infra.png ├── bin ├── api │ ├── api.ts │ ├── metricsService │ │ ├── .gitignore │ │ ├── index.ts │ │ ├── package.json │ │ ├── utils │ │ │ ├── lambdaResponse.ts │ │ │ └── uuid.ts │ │ └── yarn.lock │ └── projectsService │ │ ├── .gitignore │ │ ├── index.ts │ │ ├── package.json │ │ ├── utils │ │ ├── lambdaResponse.ts │ │ └── uuid.ts │ │ └── yarn.lock ├── aws-web-performance-monitor.ts ├── collector │ ├── collector.ts │ └── src │ │ ├── .gitignore │ │ ├── index.ts │ │ ├── package.json │ │ ├── utils │ │ ├── lambdaResponse.ts │ │ └── uuid.ts │ │ └── yarn.lock ├── frontend │ └── frontend.ts └── types │ ├── MetricsDatapoint.ts │ └── Project.ts ├── cdk.json ├── frontend ├── .gitignore ├── README.md ├── package.json ├── public │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── robots.txt ├── src │ ├── App.tsx │ ├── components │ │ ├── Charts │ │ │ ├── BreakdownChart.tsx │ │ │ ├── HealthChart.tsx │ │ │ ├── ResponseTimeDistribution.tsx │ │ │ └── TotalResponseTimeChart.tsx │ │ ├── Footer.tsx │ │ ├── Project.tsx │ │ ├── ProjectDetails.tsx │ │ └── TimeRangePicker.tsx │ ├── consts │ │ └── timeRanges.ts │ ├── index.tsx │ ├── react-app-env.d.ts │ ├── types │ │ └── Region.ts │ └── utils │ │ └── everyNth.tsx ├── tsconfig.json └── yarn.lock ├── package.json ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | *.js 2 | *.d.ts 3 | node_modules 4 | cdk.out 5 | headless_shell 6 | bin/collector/layer/chrome-aws-lambda 7 | bin/collector/layer/chrome-aws-lambda 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Serverless Web Performance Monitor

2 |

3 | 4 | License: MIT 5 | 6 | 7 | Twitter: rafalwilinski 8 | 9 |

10 | 11 | > Self-hosted, cloud-native monitoring solution for your page/endpoint speed from multiple locations around the world. 12 | 13 | ## Prerequisites 14 | 15 | - AWS Account and credentials set in `~/.aws/credentials` 16 | - Node >10 17 | - Yarn or npm 18 | 19 | ## Install 20 | 21 | ```sh 22 | yarn 23 | ``` 24 | 25 | ## Usage 26 | 27 | - `yarn deploy:all` compiles all lambdas, CDK Stack, Frontend application and deploys it to the cloud 28 | - `yarn build:frontend` builds only frontend 29 | - `yarn build:cdk` builds only CDK from TS to JS 30 | 31 | You can also pass following environment variable to customize your deployment: 32 | 33 | - `REGION` - your base region where dashboard and projects table gets deployed 34 | - `COLLECTOR_REGIONS` - AWS regions where collectors should be deployed 35 | - `CRON_PATTERNS` - how frequently data should be gathered (by default it's every 5 minutes) 36 | 37 | ## Infrastructure 38 | 39 | ![Infrastructure](./assets/infra.png 'Infrastructure') 40 | 41 | ## Author 42 | 43 | 👤 **Rafal Wilinski <raf.wilinski@gmail.com>** 44 | 45 | - Twitter: [@rafalwilinski](https://twitter.com/rafalwilinski) 46 | - Github: [@RafalWilinski](https://github.com/RafalWilinski) 47 | 48 | ## 🤝 Contributing 49 | 50 | Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/RafalWilinski/servicefull/issues). 51 | 52 | ## Show your support 53 | 54 | Give a ⭐️ if this project helped you! 55 | 56 | ## 📝 License 57 | 58 | Copyright © 2019 [Rafal Wilinski <raf.wilinski@gmail.com>](https://github.com/RafalWilinski).
59 | This project is [MIT](https://github.com/RafalWilinski/servicefull/blob/master/LICENSE) licensed. 60 | -------------------------------------------------------------------------------- /assets/infra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RafalWilinski/serverless-web-performance-monitor/cefe556cee35c1d982c651d8b4a12adcc317755c/assets/infra.png -------------------------------------------------------------------------------- /bin/api/api.ts: -------------------------------------------------------------------------------- 1 | import apigateway = require('@aws-cdk/aws-apigateway'); 2 | import lambda = require('@aws-cdk/aws-lambda'); 3 | import path = require('path'); 4 | import { Effect, PolicyStatement } from '@aws-cdk/aws-iam'; 5 | import { Construct, Stack, StackProps, CfnOutput } from '@aws-cdk/core'; 6 | import { Cors } from '@aws-cdk/aws-apigateway'; 7 | 8 | interface APIStackProps extends StackProps { 9 | projectsTableArn: string; 10 | metricsTableArn: string; 11 | } 12 | 13 | class APIStack extends Stack { 14 | public api: apigateway.RestApi; 15 | 16 | constructor(parent: Construct, name: string, props: APIStackProps) { 17 | super(parent, name, props); 18 | 19 | const metricsService = new lambda.Function(this, `MetricsService`, { 20 | description: 'Metrics API between frontend and metrics', 21 | memorySize: 512, 22 | runtime: lambda.Runtime.NODEJS_10_X, 23 | handler: 'index.handler', 24 | code: lambda.AssetCode.fromAsset(path.join(__dirname, 'metricsService')), 25 | environment: { 26 | METRICS_TABLE_ARN: props.metricsTableArn, 27 | }, 28 | }); 29 | 30 | metricsService.addToRolePolicy( 31 | new PolicyStatement({ 32 | effect: Effect.ALLOW, 33 | actions: ['dynamodb:Query'], 34 | resources: [props.metricsTableArn], 35 | }), 36 | ); 37 | 38 | const projectsService = new lambda.Function(this, `ProjectsService`, { 39 | description: 'Projects API between frontend and metrics', 40 | memorySize: 512, 41 | runtime: lambda.Runtime.NODEJS_10_X, 42 | handler: 'index.handler', 43 | code: lambda.AssetCode.fromAsset(path.join(__dirname, 'projectsService')), 44 | environment: { 45 | PROJECTS_TABLE_ARN: props.projectsTableArn, 46 | }, 47 | }); 48 | 49 | projectsService.addToRolePolicy( 50 | new PolicyStatement({ 51 | effect: Effect.ALLOW, 52 | actions: ['dynamodb:Scan', 'dynamodb:PutItem'], 53 | resources: [props.projectsTableArn], 54 | }), 55 | ); 56 | 57 | const api = new apigateway.RestApi(this, 'metrics-api', { 58 | restApiName: 'Metrics Service', 59 | }); 60 | this.api = api; 61 | 62 | const metrics = api.root.addResource('metrics'); 63 | metrics.addMethod('GET', new apigateway.LambdaIntegration(metricsService)); 64 | metrics.addCorsPreflight({ 65 | allowOrigins: Cors.ALL_ORIGINS, 66 | }); 67 | 68 | const projects = api.root.addResource('projects'); 69 | projects.addMethod('GET', new apigateway.LambdaIntegration(projectsService)); 70 | projects.addMethod('POST', new apigateway.LambdaIntegration(projectsService)); 71 | projects.addCorsPreflight({ 72 | allowOrigins: Cors.ALL_ORIGINS, 73 | }); 74 | 75 | new CfnOutput(this, 'api-endpoint', { 76 | value: api.url, 77 | exportName: 'api-endpoint', 78 | }); 79 | } 80 | } 81 | 82 | export default APIStack; 83 | -------------------------------------------------------------------------------- /bin/api/metricsService/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /bin/api/metricsService/index.ts: -------------------------------------------------------------------------------- 1 | import { DynamoDB } from "aws-sdk"; 2 | import { APIGatewayProxyHandler } from "aws-lambda"; 3 | 4 | import response from "./utils/lambdaResponse"; 5 | 6 | const dynamoDB = new DynamoDB.DocumentClient(); 7 | const TableName = process.env.METRICS_TABLE_ARN!.split("/").slice(-1)[0]; 8 | 9 | const getMetrics = (event?: any) => { 10 | const FilterExpressions: string[] = []; 11 | const ExpressionAttributeValues: any = { 12 | ":pkey": event.id 13 | }; 14 | const ExpressionAttributeNames: any = { 15 | "#PROXY_id": "id" 16 | }; 17 | 18 | Object.keys(event).forEach(key => { 19 | if (key !== "id") { 20 | ExpressionAttributeValues[`:${key}`] = event[key]; 21 | ExpressionAttributeNames[`#PROXY_${key}`] = key; 22 | FilterExpressions.push(`#PROXY_${key} = :${key}`); 23 | } 24 | }); 25 | 26 | console.log( 27 | ExpressionAttributeNames, 28 | ExpressionAttributeValues, 29 | FilterExpressions 30 | ); 31 | 32 | return dynamoDB 33 | .query({ 34 | TableName, 35 | KeyConditionExpression: "#PROXY_id = :pkey", 36 | ExpressionAttributeValues, 37 | FilterExpression: 38 | FilterExpressions.length > 0 39 | ? FilterExpressions.join(" and ") 40 | : undefined, 41 | ExpressionAttributeNames 42 | }) 43 | .promise(); 44 | }; 45 | 46 | export const handler: APIGatewayProxyHandler = async (event, _context) => { 47 | console.log(event.queryStringParameters); 48 | return response({ 49 | metrics: (await getMetrics(event.queryStringParameters)).Items 50 | }); 51 | }; 52 | -------------------------------------------------------------------------------- /bin/api/metricsService/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aws-web-performance-monitor-collector", 3 | "version": "0.1.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "build": "tsc" 7 | }, 8 | "dependencies": { 9 | "source-map-support": "0.5.16" 10 | }, 11 | "devDependencies": { 12 | "@types/aws-lambda": "8.10.33", 13 | "aws-sdk": "2.552.0", 14 | "typescript": "3.6.4" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /bin/api/metricsService/utils/lambdaResponse.ts: -------------------------------------------------------------------------------- 1 | const response = (body: string | any, statusCode = 200) => ({ 2 | statusCode, 3 | body: typeof body !== "string" ? JSON.stringify(body, null, 2) : body, 4 | headers: { 5 | "Access-Control-Allow-Origin": "*" 6 | } 7 | }); 8 | 9 | export default response; 10 | -------------------------------------------------------------------------------- /bin/api/metricsService/utils/uuid.ts: -------------------------------------------------------------------------------- 1 | export default () => 2 | Math.random() 3 | .toString(36) 4 | .substring(2, 15) + 5 | Math.random() 6 | .toString(36) 7 | .substring(2, 15); 8 | -------------------------------------------------------------------------------- /bin/api/metricsService/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/aws-lambda@8.10.33": 6 | version "8.10.33" 7 | resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.33.tgz#64ad8f2e785e5c2cf86dc2d596c9a0b2e2e14ab5" 8 | integrity sha512-BZ8lPY/vyUq+Bid/BgYrKbUF36SZYuGOAMgOq/VgqnTQnCn9GBo3HejKZ6xrUzA8zLf9Pjs707amkt4f7rWujw== 9 | 10 | aws-sdk@2.552.0: 11 | version "2.552.0" 12 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.552.0.tgz#4b45b0a60b3728dbd111edd76445cf61661eb076" 13 | integrity sha512-GLZpKIX0BOQK8JEjFcJElnroLmUxnWUfHzRJwxVajH9S0tmBPsDYH5QLIb+Lg6wWq4sBAopgE+WOtAeb8/rcLw== 14 | dependencies: 15 | buffer "4.9.1" 16 | events "1.1.1" 17 | ieee754 "1.1.13" 18 | jmespath "0.15.0" 19 | querystring "0.2.0" 20 | sax "1.2.1" 21 | url "0.10.3" 22 | uuid "3.3.2" 23 | xml2js "0.4.19" 24 | 25 | base64-js@^1.0.2: 26 | version "1.3.1" 27 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 28 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 29 | 30 | buffer-from@^1.0.0: 31 | version "1.1.1" 32 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 33 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 34 | 35 | buffer@4.9.1: 36 | version "4.9.1" 37 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 38 | integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= 39 | dependencies: 40 | base64-js "^1.0.2" 41 | ieee754 "^1.1.4" 42 | isarray "^1.0.0" 43 | 44 | events@1.1.1: 45 | version "1.1.1" 46 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 47 | integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= 48 | 49 | ieee754@1.1.13, ieee754@^1.1.4: 50 | version "1.1.13" 51 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 52 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 53 | 54 | isarray@^1.0.0: 55 | version "1.0.0" 56 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 57 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 58 | 59 | jmespath@0.15.0: 60 | version "0.15.0" 61 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" 62 | integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= 63 | 64 | punycode@1.3.2: 65 | version "1.3.2" 66 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 67 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 68 | 69 | querystring@0.2.0: 70 | version "0.2.0" 71 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 72 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 73 | 74 | sax@1.2.1: 75 | version "1.2.1" 76 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 77 | integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= 78 | 79 | sax@>=0.6.0: 80 | version "1.2.4" 81 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 82 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 83 | 84 | source-map-support@0.5.16: 85 | version "0.5.16" 86 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" 87 | integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== 88 | dependencies: 89 | buffer-from "^1.0.0" 90 | source-map "^0.6.0" 91 | 92 | source-map@^0.6.0: 93 | version "0.6.1" 94 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 95 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 96 | 97 | typescript@3.6.4: 98 | version "3.6.4" 99 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.4.tgz#b18752bb3792bc1a0281335f7f6ebf1bbfc5b91d" 100 | integrity sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg== 101 | 102 | url@0.10.3: 103 | version "0.10.3" 104 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" 105 | integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= 106 | dependencies: 107 | punycode "1.3.2" 108 | querystring "0.2.0" 109 | 110 | uuid@3.3.2: 111 | version "3.3.2" 112 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 113 | integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== 114 | 115 | xml2js@0.4.19: 116 | version "0.4.19" 117 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" 118 | integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== 119 | dependencies: 120 | sax ">=0.6.0" 121 | xmlbuilder "~9.0.1" 122 | 123 | xmlbuilder@~9.0.1: 124 | version "9.0.7" 125 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" 126 | integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= 127 | -------------------------------------------------------------------------------- /bin/api/projectsService/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /bin/api/projectsService/index.ts: -------------------------------------------------------------------------------- 1 | import { DynamoDB } from 'aws-sdk'; 2 | import { APIGatewayProxyHandler } from 'aws-lambda'; 3 | 4 | import response from './utils/lambdaResponse'; 5 | import uuid from './utils/uuid'; 6 | 7 | const dynamoDB = new DynamoDB.DocumentClient(); 8 | const TableName = process.env.PROJECTS_TABLE_ARN!.split('/').slice(-1)[0]; 9 | 10 | const createProject = async (body: any) => { 11 | body.id = uuid(); 12 | 13 | if (!body.name) { 14 | throw new Error('"name" param cannot be null!'); 15 | } else if (!body.endpoint) { 16 | throw new Error('"endpoint" param cannot be null!'); 17 | } else if (!body.method) { 18 | throw new Error('"method" param cannot be null!'); 19 | } 20 | 21 | await dynamoDB 22 | .put({ 23 | TableName, 24 | Item: body, 25 | }) 26 | .promise(); 27 | }; 28 | 29 | const getProjects = () => 30 | dynamoDB 31 | .scan({ 32 | TableName, 33 | }) 34 | .promise(); 35 | 36 | export const handler: APIGatewayProxyHandler = async (event, _context) => { 37 | if (event.httpMethod.toUpperCase() === 'POST') { 38 | try { 39 | return response({ 40 | project: await createProject(JSON.parse(event.body!)), 41 | }); 42 | } catch (error) { 43 | return response({ error: JSON.stringify(error) }, 400); 44 | } 45 | } else { 46 | try { 47 | return response({ 48 | projects: ((await getProjects()).Items || []).sort((a: any, b: any) => a.id - b.id), 49 | }); 50 | } catch (error) { 51 | return response({ error: JSON.stringify(error) }, 400); 52 | } 53 | } 54 | }; 55 | -------------------------------------------------------------------------------- /bin/api/projectsService/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aws-web-performance-monitor-collector", 3 | "version": "0.1.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "build": "tsc" 7 | }, 8 | "dependencies": { 9 | "source-map-support": "0.5.16" 10 | }, 11 | "devDependencies": { 12 | "@types/aws-lambda": "8.10.33", 13 | "aws-sdk": "2.552.0", 14 | "typescript": "3.6.4" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /bin/api/projectsService/utils/lambdaResponse.ts: -------------------------------------------------------------------------------- 1 | const response = (body: string | any, statusCode = 200) => ({ 2 | statusCode, 3 | body: typeof body !== "string" ? JSON.stringify(body, null, 2) : body, 4 | headers: { 5 | "Access-Control-Allow-Origin": "*" 6 | } 7 | }); 8 | 9 | export default response; 10 | -------------------------------------------------------------------------------- /bin/api/projectsService/utils/uuid.ts: -------------------------------------------------------------------------------- 1 | export default () => 2 | Math.random() 3 | .toString(36) 4 | .substring(2, 15) + 5 | Math.random() 6 | .toString(36) 7 | .substring(2, 15); 8 | -------------------------------------------------------------------------------- /bin/api/projectsService/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/aws-lambda@8.10.33": 6 | version "8.10.33" 7 | resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.33.tgz#64ad8f2e785e5c2cf86dc2d596c9a0b2e2e14ab5" 8 | integrity sha512-BZ8lPY/vyUq+Bid/BgYrKbUF36SZYuGOAMgOq/VgqnTQnCn9GBo3HejKZ6xrUzA8zLf9Pjs707amkt4f7rWujw== 9 | 10 | aws-sdk@2.552.0: 11 | version "2.552.0" 12 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.552.0.tgz#4b45b0a60b3728dbd111edd76445cf61661eb076" 13 | integrity sha512-GLZpKIX0BOQK8JEjFcJElnroLmUxnWUfHzRJwxVajH9S0tmBPsDYH5QLIb+Lg6wWq4sBAopgE+WOtAeb8/rcLw== 14 | dependencies: 15 | buffer "4.9.1" 16 | events "1.1.1" 17 | ieee754 "1.1.13" 18 | jmespath "0.15.0" 19 | querystring "0.2.0" 20 | sax "1.2.1" 21 | url "0.10.3" 22 | uuid "3.3.2" 23 | xml2js "0.4.19" 24 | 25 | base64-js@^1.0.2: 26 | version "1.3.1" 27 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 28 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 29 | 30 | buffer-from@^1.0.0: 31 | version "1.1.1" 32 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 33 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 34 | 35 | buffer@4.9.1: 36 | version "4.9.1" 37 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 38 | integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= 39 | dependencies: 40 | base64-js "^1.0.2" 41 | ieee754 "^1.1.4" 42 | isarray "^1.0.0" 43 | 44 | events@1.1.1: 45 | version "1.1.1" 46 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 47 | integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= 48 | 49 | ieee754@1.1.13, ieee754@^1.1.4: 50 | version "1.1.13" 51 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 52 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 53 | 54 | isarray@^1.0.0: 55 | version "1.0.0" 56 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 57 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 58 | 59 | jmespath@0.15.0: 60 | version "0.15.0" 61 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" 62 | integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= 63 | 64 | punycode@1.3.2: 65 | version "1.3.2" 66 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 67 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 68 | 69 | querystring@0.2.0: 70 | version "0.2.0" 71 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 72 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 73 | 74 | sax@1.2.1: 75 | version "1.2.1" 76 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 77 | integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= 78 | 79 | sax@>=0.6.0: 80 | version "1.2.4" 81 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 82 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 83 | 84 | source-map-support@0.5.16: 85 | version "0.5.16" 86 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" 87 | integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== 88 | dependencies: 89 | buffer-from "^1.0.0" 90 | source-map "^0.6.0" 91 | 92 | source-map@^0.6.0: 93 | version "0.6.1" 94 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 95 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 96 | 97 | typescript@3.6.4: 98 | version "3.6.4" 99 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.4.tgz#b18752bb3792bc1a0281335f7f6ebf1bbfc5b91d" 100 | integrity sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg== 101 | 102 | url@0.10.3: 103 | version "0.10.3" 104 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" 105 | integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= 106 | dependencies: 107 | punycode "1.3.2" 108 | querystring "0.2.0" 109 | 110 | uuid@3.3.2: 111 | version "3.3.2" 112 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 113 | integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== 114 | 115 | xml2js@0.4.19: 116 | version "0.4.19" 117 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" 118 | integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== 119 | dependencies: 120 | sax ">=0.6.0" 121 | xmlbuilder "~9.0.1" 122 | 123 | xmlbuilder@~9.0.1: 124 | version "9.0.7" 125 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" 126 | integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= 127 | -------------------------------------------------------------------------------- /bin/aws-web-performance-monitor.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import cdk = require('@aws-cdk/core'); 3 | 4 | import CollectorStack from './collector/collector'; 5 | import FrontendStack from './frontend/frontend'; 6 | import { Construct, RemovalPolicy } from '@aws-cdk/core'; 7 | import { Table, AttributeType, BillingMode } from '@aws-cdk/aws-dynamodb'; 8 | import APIStack from './api/api'; 9 | 10 | const region = process.env.REGION || 'us-east-1'; 11 | const regions = process.env.COLLECTOR_REGIONS 12 | ? process.env.COLLECTOR_REGIONS.split(',') 13 | : ['us-east-1', 'ap-southeast-2', 'us-west-2', 'eu-central-1']; 14 | const cronPattern = process.env.CRON_PATTERN || 'rate(5 minutes)'; 15 | const commonConfig = { 16 | env: { 17 | region, 18 | }, 19 | }; 20 | 21 | console.log(regions); 22 | 23 | class RootStack extends cdk.Stack { 24 | public readonly projectsTable: Table; 25 | public readonly metricsTable: Table; 26 | 27 | constructor(scope: Construct, id: string, props: cdk.StackProps) { 28 | super(scope, id, props); 29 | 30 | this.metricsTable = new Table(this, 'metricsTable', { 31 | partitionKey: { name: 'id', type: AttributeType.STRING }, 32 | sortKey: { name: 'date', type: AttributeType.STRING }, 33 | billingMode: BillingMode.PAY_PER_REQUEST, 34 | tableName: 'WebPerformanceMonitorMetrics', 35 | removalPolicy: RemovalPolicy.DESTROY, 36 | }); 37 | 38 | this.projectsTable = new Table(this, 'projectsTable', { 39 | partitionKey: { name: 'id', type: AttributeType.STRING }, 40 | billingMode: BillingMode.PAY_PER_REQUEST, 41 | tableName: 'WebPerformanceMonitorProjects', 42 | removalPolicy: RemovalPolicy.DESTROY, 43 | }); 44 | 45 | const apiStack = new APIStack(this, 'perf-monitor-api', { 46 | ...commonConfig, 47 | projectsTableArn: this.projectsTable.tableArn, 48 | metricsTableArn: this.metricsTable.tableArn, 49 | }); 50 | new FrontendStack(this, 'perf-monitor-frontend', { 51 | ...commonConfig, 52 | apiUrl: apiStack.api.url, 53 | }); 54 | 55 | regions.forEach((reg: string) => { 56 | new CollectorStack(this, `perf-monitor-collector-${reg}`, { 57 | env: { 58 | region: reg, 59 | }, 60 | baseRegion: region, 61 | cronPattern, 62 | projectsTableArn: this.projectsTable.tableArn, 63 | metricsTableArn: this.metricsTable.tableArn, 64 | }); 65 | }); 66 | } 67 | } 68 | 69 | const app = new cdk.App(); 70 | 71 | new RootStack(app, 'perf-monitor', commonConfig); 72 | 73 | app.synth(); 74 | -------------------------------------------------------------------------------- /bin/collector/collector.ts: -------------------------------------------------------------------------------- 1 | import events = require("@aws-cdk/aws-events"); 2 | import targets = require("@aws-cdk/aws-events-targets"); 3 | import lambda = require("@aws-cdk/aws-lambda"); 4 | import path = require("path"); 5 | import { Effect, PolicyStatement } from "@aws-cdk/aws-iam"; 6 | import { Construct, Stack, StackProps } from "@aws-cdk/core"; 7 | 8 | interface CollectorStackProps extends StackProps { 9 | baseRegion: string; 10 | cronPattern: string; 11 | projectsTableArn: string; 12 | metricsTableArn: string; 13 | } 14 | 15 | class CollectorStack extends Stack { 16 | constructor(parent: Construct, name: string, props: CollectorStackProps) { 17 | super(parent, name, props); 18 | 19 | const func = new lambda.Function(this, `Collector`, { 20 | description: "Function collecting metrics", 21 | memorySize: 512, 22 | runtime: lambda.Runtime.NODEJS_10_X, 23 | handler: "index.handler", 24 | code: lambda.AssetCode.fromAsset(path.join(__dirname, "src")), 25 | environment: { 26 | PROJECTS_TABLE_ARN: props.projectsTableArn, 27 | METRICS_TABLE_ARN: props.metricsTableArn 28 | } 29 | }); 30 | 31 | const rule = new events.Rule(this, "Rule", { 32 | schedule: events.Schedule.expression(props.cronPattern) 33 | }); 34 | 35 | rule.addTarget(new targets.LambdaFunction(func)); 36 | 37 | func.addToRolePolicy( 38 | new PolicyStatement({ 39 | effect: Effect.ALLOW, 40 | actions: ["dynamodb:PutItem"], 41 | resources: [props.metricsTableArn] 42 | }) 43 | ); 44 | func.addToRolePolicy( 45 | new PolicyStatement({ 46 | effect: Effect.ALLOW, 47 | actions: [ 48 | "dynamodb:Query", 49 | "dynamodb:Scan", 50 | "dynamodb:PutItem", 51 | "dynamodb:UpdateItem", 52 | "dynamodb:GetItem" 53 | ], 54 | resources: [props.projectsTableArn] 55 | }) 56 | ); 57 | } 58 | } 59 | 60 | export default CollectorStack; 61 | -------------------------------------------------------------------------------- /bin/collector/src/.gitignore: -------------------------------------------------------------------------------- 1 | layer 2 | lib -------------------------------------------------------------------------------- /bin/collector/src/index.ts: -------------------------------------------------------------------------------- 1 | import { DynamoDB } from "aws-sdk"; 2 | import { APIGatewayProxyHandler } from "aws-lambda"; 3 | import * as request from "request-promise-native"; 4 | import "source-map-support/register"; 5 | import Project from "../../types/Project"; 6 | import MetricsDatapoint from "../../types/MetricsDatapoint"; 7 | import response from "./utils/lambdaResponse"; 8 | 9 | const [, , , region, , resourceTypeId] = process.env.PROJECTS_TABLE_ARN!.split( 10 | ":" 11 | ); 12 | const TableName = resourceTypeId.split("/")[1]; 13 | const dynamoDB = new DynamoDB.DocumentClient({ 14 | region 15 | }); 16 | 17 | const getAllProjects = async (): Promise => { 18 | const { Items } = await dynamoDB 19 | .scan({ 20 | TableName 21 | }) 22 | .promise(); 23 | 24 | return Items as Project[]; 25 | }; 26 | 27 | const insertMetrics = (metricsDatapoint: MetricsDatapoint) => { 28 | const [, , , , , resourceTypeId] = process.env.METRICS_TABLE_ARN!.split(":"); 29 | const TableName = resourceTypeId.split("/")[1]; 30 | 31 | return dynamoDB 32 | .put({ 33 | TableName, 34 | Item: metricsDatapoint 35 | }) 36 | .promise(); 37 | }; 38 | 39 | const updateAggregates = async ( 40 | projectId: string, 41 | isHealthy: boolean, 42 | responseTime?: number 43 | ) => { 44 | const { Item: project } = await dynamoDB 45 | .get({ 46 | Key: { 47 | id: projectId 48 | }, 49 | TableName 50 | }) 51 | .promise(); 52 | 53 | const newResponseTime = 54 | (project!.stats.meanResponse * project!.stats.count + 55 | (responseTime || project!.stats.meanResponse)) / 56 | (project!.stats.count + 1); 57 | 58 | const UpdateExpression = isHealthy 59 | ? "ADD stats.uptime :inc, #statsCount :inc SET stats.meanResponse = :responseTime" 60 | : "ADD stats.downtime :inc, #statsCount :inc"; 61 | 62 | return dynamoDB 63 | .update({ 64 | Key: { 65 | id: projectId 66 | }, 67 | TableName, 68 | ExpressionAttributeValues: { 69 | ":inc": 1, 70 | ":responseTime": newResponseTime 71 | }, 72 | ExpressionAttributeNames: { 73 | "#statsCount": "stats.count" 74 | }, 75 | UpdateExpression 76 | }) 77 | .promise(); 78 | }; 79 | 80 | const processProject = async (project: Project) => { 81 | console.log(`[PROJECT_${project.id}], URL: ${project.endpoint}`); 82 | 83 | const healthMetric: MetricsDatapoint = { 84 | id: `${project.id}`, 85 | date: (+new Date()).toString(), 86 | region: process.env.AWS_REGION!, 87 | unit: "Reachable", 88 | metricName: "Health", 89 | value: 0 90 | }; 91 | 92 | try { 93 | const response = await request({ 94 | uri: project.endpoint, 95 | method: project.method.toUpperCase(), 96 | headers: project.headers, 97 | timeout: project.timeout, 98 | time: project.measureRequestDetails, 99 | resolveWithFullResponse: true 100 | }).promise(); 101 | const data = typeof response === "string" ? JSON.parse(response) : response; 102 | const timings = { 103 | ...data.timings, 104 | ...data.timingPhases 105 | }; 106 | 107 | healthMetric.value = 1; 108 | 109 | if (project.measureRequestDetails) { 110 | healthMetric.timings = timings; 111 | await updateAggregates(project.id, true, timings.total); 112 | } 113 | } catch (error) { 114 | console.log(`[PROJECT_${project.id}] Error!`); 115 | console.error(error); 116 | healthMetric.value = 0; 117 | 118 | await updateAggregates(project.id, false); 119 | } 120 | 121 | if (project.measureLighthouseDetails) { 122 | console.log( 123 | `[PROJECT_${project.id}] Running Lightouse test, URL: ${project.endpoint}` 124 | ); 125 | // to be added 126 | } 127 | 128 | return insertMetrics(healthMetric); 129 | }; 130 | 131 | export const handler: APIGatewayProxyHandler = async (_, _context) => { 132 | const projects = await getAllProjects(); 133 | 134 | await Promise.all(projects.map(project => processProject(project))); 135 | 136 | return response({ projects }); 137 | }; 138 | -------------------------------------------------------------------------------- /bin/collector/src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aws-web-performance-monitor-collector", 3 | "version": "0.1.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "build": "tsc" 7 | }, 8 | "dependencies": { 9 | "puppeteer": "1.20.0", 10 | "request": "2.88.0", 11 | "request-promise-native": "1.0.7", 12 | "source-map-support": "0.5.16" 13 | }, 14 | "devDependencies": { 15 | "@types/aws-lambda": "8.10.33", 16 | "@types/puppeteer": "1.20.2", 17 | "@types/request": "2.48.3", 18 | "@types/request-promise-native": "1.0.17", 19 | "aws-sdk": "2.552.0", 20 | "typescript": "3.6.4" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /bin/collector/src/utils/lambdaResponse.ts: -------------------------------------------------------------------------------- 1 | const response = (body: string | any, statusCode = 200) => ({ 2 | statusCode, 3 | body: typeof body !== "string" ? JSON.stringify(body, null, 2) : body 4 | }); 5 | 6 | export default response; 7 | -------------------------------------------------------------------------------- /bin/collector/src/utils/uuid.ts: -------------------------------------------------------------------------------- 1 | export default () => 2 | Math.random() 3 | .toString(36) 4 | .substring(2, 15) + 5 | Math.random() 6 | .toString(36) 7 | .substring(2, 15); 8 | -------------------------------------------------------------------------------- /bin/collector/src/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/aws-lambda@8.10.33": 6 | version "8.10.33" 7 | resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.33.tgz#64ad8f2e785e5c2cf86dc2d596c9a0b2e2e14ab5" 8 | integrity sha512-BZ8lPY/vyUq+Bid/BgYrKbUF36SZYuGOAMgOq/VgqnTQnCn9GBo3HejKZ6xrUzA8zLf9Pjs707amkt4f7rWujw== 9 | 10 | "@types/caseless@*": 11 | version "0.12.2" 12 | resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" 13 | integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== 14 | 15 | "@types/node@*": 16 | version "12.12.1" 17 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.1.tgz#47d295109420cfd3381bdd7e4292976659bb9de8" 18 | integrity sha512-m6VgTAkmFCu/uSgAvm4zta1nxMU9U02BFZY36FILD4R/fdRXM7v0EHY3BAg+MCgDmDTIUDj2986G+rMPi49+SQ== 19 | 20 | "@types/puppeteer@1.20.2": 21 | version "1.20.2" 22 | resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-1.20.2.tgz#b123551fa868b78f1c65ef1cfc0dd5ea1f24234c" 23 | integrity sha512-oSFCtftHSfVx8K9XPdNNYs79Zt4pYJs/0NP78ltuGCB25zS3UNGJSiypBfbhbvRC5Dcsh0k1R5Z0i8HHtqQUPQ== 24 | dependencies: 25 | "@types/node" "*" 26 | 27 | "@types/request-promise-native@^1.0.17": 28 | version "1.0.17" 29 | resolved "https://registry.yarnpkg.com/@types/request-promise-native/-/request-promise-native-1.0.17.tgz#74a2d7269aebf18b9bdf35f01459cf0a7bfc7fab" 30 | integrity sha512-05/d0WbmuwjtGMYEdHIBZ0tqMJJQ2AD9LG2F6rKNBGX1SSFR27XveajH//2N/XYtual8T9Axwl+4v7oBtPUZqg== 31 | dependencies: 32 | "@types/request" "*" 33 | 34 | "@types/request@*", "@types/request@2.48.3": 35 | version "2.48.3" 36 | resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.3.tgz#970b8ed2317568c390361d29c555a95e74bd6135" 37 | integrity sha512-3Wo2jNYwqgXcIz/rrq18AdOZUQB8cQ34CXZo+LUwPJNpvRAL86+Kc2wwI8mqpz9Cr1V+enIox5v+WZhy/p3h8w== 38 | dependencies: 39 | "@types/caseless" "*" 40 | "@types/node" "*" 41 | "@types/tough-cookie" "*" 42 | form-data "^2.5.0" 43 | 44 | "@types/tough-cookie@*": 45 | version "2.3.5" 46 | resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.5.tgz#9da44ed75571999b65c37b60c9b2b88db54c585d" 47 | integrity sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg== 48 | 49 | agent-base@^4.3.0: 50 | version "4.3.0" 51 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" 52 | integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== 53 | dependencies: 54 | es6-promisify "^5.0.0" 55 | 56 | ajv@^6.5.5: 57 | version "6.10.2" 58 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" 59 | integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== 60 | dependencies: 61 | fast-deep-equal "^2.0.1" 62 | fast-json-stable-stringify "^2.0.0" 63 | json-schema-traverse "^0.4.1" 64 | uri-js "^4.2.2" 65 | 66 | asn1@~0.2.3: 67 | version "0.2.4" 68 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 69 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 70 | dependencies: 71 | safer-buffer "~2.1.0" 72 | 73 | assert-plus@1.0.0, assert-plus@^1.0.0: 74 | version "1.0.0" 75 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 76 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 77 | 78 | async-limiter@~1.0.0: 79 | version "1.0.1" 80 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" 81 | integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== 82 | 83 | asynckit@^0.4.0: 84 | version "0.4.0" 85 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 86 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 87 | 88 | aws-sdk@2.552.0: 89 | version "2.552.0" 90 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.552.0.tgz#4b45b0a60b3728dbd111edd76445cf61661eb076" 91 | integrity sha512-GLZpKIX0BOQK8JEjFcJElnroLmUxnWUfHzRJwxVajH9S0tmBPsDYH5QLIb+Lg6wWq4sBAopgE+WOtAeb8/rcLw== 92 | dependencies: 93 | buffer "4.9.1" 94 | events "1.1.1" 95 | ieee754 "1.1.13" 96 | jmespath "0.15.0" 97 | querystring "0.2.0" 98 | sax "1.2.1" 99 | url "0.10.3" 100 | uuid "3.3.2" 101 | xml2js "0.4.19" 102 | 103 | aws-sign2@~0.7.0: 104 | version "0.7.0" 105 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 106 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 107 | 108 | aws4@^1.8.0: 109 | version "1.8.0" 110 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 111 | integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== 112 | 113 | balanced-match@^1.0.0: 114 | version "1.0.0" 115 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 116 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 117 | 118 | base64-js@^1.0.2: 119 | version "1.3.1" 120 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 121 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 122 | 123 | bcrypt-pbkdf@^1.0.0: 124 | version "1.0.2" 125 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 126 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 127 | dependencies: 128 | tweetnacl "^0.14.3" 129 | 130 | brace-expansion@^1.1.7: 131 | version "1.1.11" 132 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 133 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 134 | dependencies: 135 | balanced-match "^1.0.0" 136 | concat-map "0.0.1" 137 | 138 | buffer-from@^1.0.0: 139 | version "1.1.1" 140 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 141 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 142 | 143 | buffer@4.9.1: 144 | version "4.9.1" 145 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 146 | integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= 147 | dependencies: 148 | base64-js "^1.0.2" 149 | ieee754 "^1.1.4" 150 | isarray "^1.0.0" 151 | 152 | caseless@~0.12.0: 153 | version "0.12.0" 154 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 155 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 156 | 157 | combined-stream@^1.0.6, combined-stream@~1.0.6: 158 | version "1.0.8" 159 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 160 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 161 | dependencies: 162 | delayed-stream "~1.0.0" 163 | 164 | concat-map@0.0.1: 165 | version "0.0.1" 166 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 167 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 168 | 169 | concat-stream@1.6.2: 170 | version "1.6.2" 171 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 172 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 173 | dependencies: 174 | buffer-from "^1.0.0" 175 | inherits "^2.0.3" 176 | readable-stream "^2.2.2" 177 | typedarray "^0.0.6" 178 | 179 | core-util-is@1.0.2, core-util-is@~1.0.0: 180 | version "1.0.2" 181 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 182 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 183 | 184 | dashdash@^1.12.0: 185 | version "1.14.1" 186 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 187 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 188 | dependencies: 189 | assert-plus "^1.0.0" 190 | 191 | debug@2.6.9: 192 | version "2.6.9" 193 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 194 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 195 | dependencies: 196 | ms "2.0.0" 197 | 198 | debug@^3.1.0: 199 | version "3.2.6" 200 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 201 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 202 | dependencies: 203 | ms "^2.1.1" 204 | 205 | debug@^4.1.0: 206 | version "4.1.1" 207 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 208 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 209 | dependencies: 210 | ms "^2.1.1" 211 | 212 | delayed-stream@~1.0.0: 213 | version "1.0.0" 214 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 215 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 216 | 217 | ecc-jsbn@~0.1.1: 218 | version "0.1.2" 219 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 220 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 221 | dependencies: 222 | jsbn "~0.1.0" 223 | safer-buffer "^2.1.0" 224 | 225 | es6-promise@^4.0.3: 226 | version "4.2.8" 227 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" 228 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 229 | 230 | es6-promisify@^5.0.0: 231 | version "5.0.0" 232 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 233 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 234 | dependencies: 235 | es6-promise "^4.0.3" 236 | 237 | events@1.1.1: 238 | version "1.1.1" 239 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 240 | integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= 241 | 242 | extend@~3.0.2: 243 | version "3.0.2" 244 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 245 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 246 | 247 | extract-zip@^1.6.6: 248 | version "1.6.7" 249 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" 250 | integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= 251 | dependencies: 252 | concat-stream "1.6.2" 253 | debug "2.6.9" 254 | mkdirp "0.5.1" 255 | yauzl "2.4.1" 256 | 257 | extsprintf@1.3.0: 258 | version "1.3.0" 259 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 260 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 261 | 262 | extsprintf@^1.2.0: 263 | version "1.4.0" 264 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 265 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 266 | 267 | fast-deep-equal@^2.0.1: 268 | version "2.0.1" 269 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 270 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 271 | 272 | fast-json-stable-stringify@^2.0.0: 273 | version "2.0.0" 274 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 275 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 276 | 277 | fd-slicer@~1.0.1: 278 | version "1.0.1" 279 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" 280 | integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= 281 | dependencies: 282 | pend "~1.2.0" 283 | 284 | forever-agent@~0.6.1: 285 | version "0.6.1" 286 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 287 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 288 | 289 | form-data@^2.5.0: 290 | version "2.5.1" 291 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" 292 | integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== 293 | dependencies: 294 | asynckit "^0.4.0" 295 | combined-stream "^1.0.6" 296 | mime-types "^2.1.12" 297 | 298 | form-data@~2.3.2: 299 | version "2.3.3" 300 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 301 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 302 | dependencies: 303 | asynckit "^0.4.0" 304 | combined-stream "^1.0.6" 305 | mime-types "^2.1.12" 306 | 307 | fs.realpath@^1.0.0: 308 | version "1.0.0" 309 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 310 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 311 | 312 | getpass@^0.1.1: 313 | version "0.1.7" 314 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 315 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 316 | dependencies: 317 | assert-plus "^1.0.0" 318 | 319 | glob@^7.1.3: 320 | version "7.1.5" 321 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" 322 | integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== 323 | dependencies: 324 | fs.realpath "^1.0.0" 325 | inflight "^1.0.4" 326 | inherits "2" 327 | minimatch "^3.0.4" 328 | once "^1.3.0" 329 | path-is-absolute "^1.0.0" 330 | 331 | har-schema@^2.0.0: 332 | version "2.0.0" 333 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 334 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 335 | 336 | har-validator@~5.1.0: 337 | version "5.1.3" 338 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 339 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 340 | dependencies: 341 | ajv "^6.5.5" 342 | har-schema "^2.0.0" 343 | 344 | http-signature@~1.2.0: 345 | version "1.2.0" 346 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 347 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 348 | dependencies: 349 | assert-plus "^1.0.0" 350 | jsprim "^1.2.2" 351 | sshpk "^1.7.0" 352 | 353 | https-proxy-agent@^2.2.1: 354 | version "2.2.4" 355 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" 356 | integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== 357 | dependencies: 358 | agent-base "^4.3.0" 359 | debug "^3.1.0" 360 | 361 | ieee754@1.1.13, ieee754@^1.1.4: 362 | version "1.1.13" 363 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 364 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 365 | 366 | inflight@^1.0.4: 367 | version "1.0.6" 368 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 369 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 370 | dependencies: 371 | once "^1.3.0" 372 | wrappy "1" 373 | 374 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 375 | version "2.0.4" 376 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 377 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 378 | 379 | is-typedarray@~1.0.0: 380 | version "1.0.0" 381 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 382 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 383 | 384 | isarray@^1.0.0, isarray@~1.0.0: 385 | version "1.0.0" 386 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 387 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 388 | 389 | isstream@~0.1.2: 390 | version "0.1.2" 391 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 392 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 393 | 394 | jmespath@0.15.0: 395 | version "0.15.0" 396 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" 397 | integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= 398 | 399 | jsbn@~0.1.0: 400 | version "0.1.1" 401 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 402 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 403 | 404 | json-schema-traverse@^0.4.1: 405 | version "0.4.1" 406 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 407 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 408 | 409 | json-schema@0.2.3: 410 | version "0.2.3" 411 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 412 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 413 | 414 | json-stringify-safe@~5.0.1: 415 | version "5.0.1" 416 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 417 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 418 | 419 | jsprim@^1.2.2: 420 | version "1.4.1" 421 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 422 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 423 | dependencies: 424 | assert-plus "1.0.0" 425 | extsprintf "1.3.0" 426 | json-schema "0.2.3" 427 | verror "1.10.0" 428 | 429 | lodash@^4.17.11: 430 | version "4.17.15" 431 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 432 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 433 | 434 | mime-db@1.40.0: 435 | version "1.40.0" 436 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" 437 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== 438 | 439 | mime-types@^2.1.12, mime-types@~2.1.19: 440 | version "2.1.24" 441 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" 442 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== 443 | dependencies: 444 | mime-db "1.40.0" 445 | 446 | mime@^2.0.3: 447 | version "2.4.4" 448 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" 449 | integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== 450 | 451 | minimatch@^3.0.4: 452 | version "3.0.4" 453 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 454 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 455 | dependencies: 456 | brace-expansion "^1.1.7" 457 | 458 | minimist@0.0.8: 459 | version "0.0.8" 460 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 461 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 462 | 463 | mkdirp@0.5.1: 464 | version "0.5.1" 465 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 466 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 467 | dependencies: 468 | minimist "0.0.8" 469 | 470 | ms@2.0.0: 471 | version "2.0.0" 472 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 473 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 474 | 475 | ms@^2.1.1: 476 | version "2.1.2" 477 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 478 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 479 | 480 | oauth-sign@~0.9.0: 481 | version "0.9.0" 482 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 483 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 484 | 485 | once@^1.3.0: 486 | version "1.4.0" 487 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 488 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 489 | dependencies: 490 | wrappy "1" 491 | 492 | path-is-absolute@^1.0.0: 493 | version "1.0.1" 494 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 495 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 496 | 497 | pend@~1.2.0: 498 | version "1.2.0" 499 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 500 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 501 | 502 | performance-now@^2.1.0: 503 | version "2.1.0" 504 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 505 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 506 | 507 | process-nextick-args@~2.0.0: 508 | version "2.0.1" 509 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 510 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 511 | 512 | progress@^2.0.1: 513 | version "2.0.3" 514 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 515 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 516 | 517 | proxy-from-env@^1.0.0: 518 | version "1.0.0" 519 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" 520 | integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= 521 | 522 | psl@^1.1.24, psl@^1.1.28: 523 | version "1.4.0" 524 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" 525 | integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== 526 | 527 | punycode@1.3.2: 528 | version "1.3.2" 529 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 530 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 531 | 532 | punycode@^1.4.1: 533 | version "1.4.1" 534 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 535 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 536 | 537 | punycode@^2.1.0, punycode@^2.1.1: 538 | version "2.1.1" 539 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 540 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 541 | 542 | puppeteer@1.20.0: 543 | version "1.20.0" 544 | resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.20.0.tgz#e3d267786f74e1d87cf2d15acc59177f471bbe38" 545 | integrity sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ== 546 | dependencies: 547 | debug "^4.1.0" 548 | extract-zip "^1.6.6" 549 | https-proxy-agent "^2.2.1" 550 | mime "^2.0.3" 551 | progress "^2.0.1" 552 | proxy-from-env "^1.0.0" 553 | rimraf "^2.6.1" 554 | ws "^6.1.0" 555 | 556 | qs@~6.5.2: 557 | version "6.5.2" 558 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 559 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 560 | 561 | querystring@0.2.0: 562 | version "0.2.0" 563 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 564 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 565 | 566 | readable-stream@^2.2.2: 567 | version "2.3.6" 568 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 569 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 570 | dependencies: 571 | core-util-is "~1.0.0" 572 | inherits "~2.0.3" 573 | isarray "~1.0.0" 574 | process-nextick-args "~2.0.0" 575 | safe-buffer "~5.1.1" 576 | string_decoder "~1.1.1" 577 | util-deprecate "~1.0.1" 578 | 579 | request-promise-core@1.1.2: 580 | version "1.1.2" 581 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" 582 | integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== 583 | dependencies: 584 | lodash "^4.17.11" 585 | 586 | request-promise-native@^1.0.7: 587 | version "1.0.7" 588 | resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" 589 | integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== 590 | dependencies: 591 | request-promise-core "1.1.2" 592 | stealthy-require "^1.1.1" 593 | tough-cookie "^2.3.3" 594 | 595 | request@2.88.0: 596 | version "2.88.0" 597 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 598 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== 599 | dependencies: 600 | aws-sign2 "~0.7.0" 601 | aws4 "^1.8.0" 602 | caseless "~0.12.0" 603 | combined-stream "~1.0.6" 604 | extend "~3.0.2" 605 | forever-agent "~0.6.1" 606 | form-data "~2.3.2" 607 | har-validator "~5.1.0" 608 | http-signature "~1.2.0" 609 | is-typedarray "~1.0.0" 610 | isstream "~0.1.2" 611 | json-stringify-safe "~5.0.1" 612 | mime-types "~2.1.19" 613 | oauth-sign "~0.9.0" 614 | performance-now "^2.1.0" 615 | qs "~6.5.2" 616 | safe-buffer "^5.1.2" 617 | tough-cookie "~2.4.3" 618 | tunnel-agent "^0.6.0" 619 | uuid "^3.3.2" 620 | 621 | rimraf@^2.6.1: 622 | version "2.7.1" 623 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 624 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 625 | dependencies: 626 | glob "^7.1.3" 627 | 628 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 629 | version "5.2.0" 630 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 631 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 632 | 633 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 634 | version "5.1.2" 635 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 636 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 637 | 638 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 639 | version "2.1.2" 640 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 641 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 642 | 643 | sax@1.2.1: 644 | version "1.2.1" 645 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 646 | integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= 647 | 648 | sax@>=0.6.0: 649 | version "1.2.4" 650 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 651 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 652 | 653 | source-map-support@0.5.16: 654 | version "0.5.16" 655 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" 656 | integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== 657 | dependencies: 658 | buffer-from "^1.0.0" 659 | source-map "^0.6.0" 660 | 661 | source-map@^0.6.0: 662 | version "0.6.1" 663 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 664 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 665 | 666 | sshpk@^1.7.0: 667 | version "1.16.1" 668 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 669 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 670 | dependencies: 671 | asn1 "~0.2.3" 672 | assert-plus "^1.0.0" 673 | bcrypt-pbkdf "^1.0.0" 674 | dashdash "^1.12.0" 675 | ecc-jsbn "~0.1.1" 676 | getpass "^0.1.1" 677 | jsbn "~0.1.0" 678 | safer-buffer "^2.0.2" 679 | tweetnacl "~0.14.0" 680 | 681 | stealthy-require@^1.1.1: 682 | version "1.1.1" 683 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 684 | integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 685 | 686 | string_decoder@~1.1.1: 687 | version "1.1.1" 688 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 689 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 690 | dependencies: 691 | safe-buffer "~5.1.0" 692 | 693 | tough-cookie@^2.3.3: 694 | version "2.5.0" 695 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 696 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 697 | dependencies: 698 | psl "^1.1.28" 699 | punycode "^2.1.1" 700 | 701 | tough-cookie@~2.4.3: 702 | version "2.4.3" 703 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 704 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== 705 | dependencies: 706 | psl "^1.1.24" 707 | punycode "^1.4.1" 708 | 709 | tunnel-agent@^0.6.0: 710 | version "0.6.0" 711 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 712 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 713 | dependencies: 714 | safe-buffer "^5.0.1" 715 | 716 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 717 | version "0.14.5" 718 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 719 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 720 | 721 | typedarray@^0.0.6: 722 | version "0.0.6" 723 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 724 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 725 | 726 | typescript@3.6.4: 727 | version "3.6.4" 728 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.4.tgz#b18752bb3792bc1a0281335f7f6ebf1bbfc5b91d" 729 | integrity sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg== 730 | 731 | uri-js@^4.2.2: 732 | version "4.2.2" 733 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 734 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 735 | dependencies: 736 | punycode "^2.1.0" 737 | 738 | url@0.10.3: 739 | version "0.10.3" 740 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" 741 | integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= 742 | dependencies: 743 | punycode "1.3.2" 744 | querystring "0.2.0" 745 | 746 | util-deprecate@~1.0.1: 747 | version "1.0.2" 748 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 749 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 750 | 751 | uuid@3.3.2: 752 | version "3.3.2" 753 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 754 | integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== 755 | 756 | uuid@^3.3.2: 757 | version "3.3.3" 758 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" 759 | integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== 760 | 761 | verror@1.10.0: 762 | version "1.10.0" 763 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 764 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 765 | dependencies: 766 | assert-plus "^1.0.0" 767 | core-util-is "1.0.2" 768 | extsprintf "^1.2.0" 769 | 770 | wrappy@1: 771 | version "1.0.2" 772 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 773 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 774 | 775 | ws@^6.1.0: 776 | version "6.2.1" 777 | resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" 778 | integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== 779 | dependencies: 780 | async-limiter "~1.0.0" 781 | 782 | xml2js@0.4.19: 783 | version "0.4.19" 784 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" 785 | integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== 786 | dependencies: 787 | sax ">=0.6.0" 788 | xmlbuilder "~9.0.1" 789 | 790 | xmlbuilder@~9.0.1: 791 | version "9.0.7" 792 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" 793 | integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= 794 | 795 | yauzl@2.4.1: 796 | version "2.4.1" 797 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" 798 | integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= 799 | dependencies: 800 | fd-slicer "~1.0.1" 801 | -------------------------------------------------------------------------------- /bin/frontend/frontend.ts: -------------------------------------------------------------------------------- 1 | import s3 = require('@aws-cdk/aws-s3'); 2 | import { join } from 'path'; 3 | import { writeFileSync } from 'fs'; 4 | import { BucketDeployment, Source } from '@aws-cdk/aws-s3-deployment'; 5 | import cloudfront = require('@aws-cdk/aws-cloudfront'); 6 | import { Construct, RemovalPolicy, CfnOutput } from '@aws-cdk/core'; 7 | 8 | interface FrontendStackProps { 9 | apiUrl: string; 10 | } 11 | 12 | class FrontendStack extends Construct { 13 | constructor(parent: Construct, name: string, { apiUrl }: FrontendStackProps) { 14 | super(parent, name); 15 | 16 | writeFileSync( 17 | join(__dirname, '..', '..', 'frontend', 'build', 'api.json'), 18 | `{ apiUrl: ${apiUrl}}`, 19 | 'utf8', 20 | ); 21 | 22 | const bucket = new s3.Bucket(this, 'FrontendBucket', { 23 | websiteIndexDocument: 'index.html', 24 | websiteErrorDocument: 'index.html', 25 | publicReadAccess: true, 26 | removalPolicy: RemovalPolicy.DESTROY, 27 | }); 28 | 29 | new BucketDeployment(this, 'BucketDeployment', { 30 | destinationBucket: bucket, 31 | sources: [Source.asset('./frontend/build')], 32 | destinationKeyPrefix: '/', 33 | }); 34 | 35 | const cdn = new cloudfront.CloudFrontWebDistribution(this, 'Distribution', { 36 | originConfigs: [ 37 | { 38 | s3OriginSource: { 39 | s3BucketSource: bucket, 40 | }, 41 | behaviors: [{ isDefaultBehavior: true }], 42 | }, 43 | ], 44 | }); 45 | 46 | new CfnOutput(this, 'cfn-distribution', { 47 | value: cdn.domainName, 48 | }); 49 | } 50 | } 51 | 52 | export default FrontendStack; 53 | -------------------------------------------------------------------------------- /bin/types/MetricsDatapoint.ts: -------------------------------------------------------------------------------- 1 | interface NumMap { 2 | [key: string]: number; 3 | } 4 | 5 | export default interface MetricsDatapoint { 6 | id: string; 7 | date: string; 8 | region: string; 9 | value: number; 10 | metricName: string; 11 | unit: string; 12 | timings?: NumMap; 13 | } 14 | -------------------------------------------------------------------------------- /bin/types/Project.ts: -------------------------------------------------------------------------------- 1 | interface StringMap { 2 | [key: string]: string; 3 | } 4 | 5 | export default interface Project { 6 | id: string; 7 | endpoint: string; 8 | name: string; 9 | measureRequestDetails: boolean; 10 | measureLighthouseDetails: boolean; 11 | headers: StringMap; 12 | timeout: number; // in MS 13 | method: 'get' | 'post'; 14 | 15 | stats: { 16 | uptime: number; 17 | downtime: number; 18 | meanResponse: number; 19 | count: number; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /cdk.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": "node bin/aws-web-performance-monitor.js" 3 | } 4 | -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /frontend/README.md: -------------------------------------------------------------------------------- 1 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 2 | 3 | ## Available Scripts 4 | 5 | In the project directory, you can run: 6 | 7 | ### `npm start` 8 | 9 | Runs the app in the development mode.
10 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 11 | 12 | The page will reload if you make edits.
13 | You will also see any lint errors in the console. 14 | 15 | ### `npm test` 16 | 17 | Launches the test runner in the interactive watch mode.
18 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 19 | 20 | ### `npm run build` 21 | 22 | Builds the app for production to the `build` folder.
23 | It correctly bundles React in production mode and optimizes the build for the best performance. 24 | 25 | The build is minified and the filenames include the hashes.
26 | Your app is ready to be deployed! 27 | 28 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 29 | 30 | ### `npm run eject` 31 | 32 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!** 33 | 34 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 35 | 36 | Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. 37 | 38 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. 39 | 40 | ## Learn More 41 | 42 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 43 | 44 | To learn React, check out the [React documentation](https://reactjs.org/). 45 | -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@rebass/forms": "^4.0.6", 7 | "@types/jest": "24.0.21", 8 | "@types/node": "12.12.1", 9 | "@types/react": "16.9.11", 10 | "@types/react-dom": "16.9.3", 11 | "color-convert": "2.0.1", 12 | "d3-array": "^2.4.0", 13 | "lodash": "4.17.15", 14 | "react": "16.11.0", 15 | "react-dom": "16.11.0", 16 | "react-scripts": "3.2.0", 17 | "react-spinners": "^0.6.1", 18 | "rebass": "4.0.7", 19 | "recharts": "1.8.5", 20 | "swr": "0.1.5", 21 | "typescript": "3.6.4" 22 | }, 23 | "scripts": { 24 | "start": "react-scripts start", 25 | "build": "react-scripts build", 26 | "test": "react-scripts test", 27 | "eject": "react-scripts eject" 28 | }, 29 | "eslintConfig": { 30 | "extends": "react-app" 31 | }, 32 | "browserslist": { 33 | "production": [ 34 | ">0.2%", 35 | "not dead", 36 | "not op_mini all" 37 | ], 38 | "development": [ 39 | "last 1 chrome version", 40 | "last 1 firefox version", 41 | "last 1 safari version" 42 | ] 43 | }, 44 | "devDependencies": { 45 | "@types/color-convert": "1.9.0", 46 | "@types/d3-array": "^2.0.0", 47 | "@types/lodash": "4.14.144", 48 | "@types/rebass": "4.0.3", 49 | "@types/recharts": "1.8.1" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RafalWilinski/serverless-web-performance-monitor/cefe556cee35c1d982c651d8b4a12adcc317755c/frontend/public/favicon.ico -------------------------------------------------------------------------------- /frontend/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Web Performance Monitor 13 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /frontend/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RafalWilinski/serverless-web-performance-monitor/cefe556cee35c1d982c651d8b4a12adcc317755c/frontend/public/logo192.png -------------------------------------------------------------------------------- /frontend/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RafalWilinski/serverless-web-performance-monitor/cefe556cee35c1d982c651d8b4a12adcc317755c/frontend/public/logo512.png -------------------------------------------------------------------------------- /frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | -------------------------------------------------------------------------------- /frontend/src/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import useSWR from "swr"; 3 | import { BarLoader } from "react-spinners"; 4 | import ProjectComponent from "./components/Project"; 5 | import Project from "../../bin/types/Project"; 6 | import ProjectDetails from "./components/ProjectDetails"; 7 | import Footer from "./components/Footer"; 8 | 9 | const apiUrl = "https://vyp8gdgq4c.execute-api.us-east-1.amazonaws.com/prod"; 10 | 11 | const _fetch = (query: string) => 12 | fetch(`${apiUrl}${query}`).then(res => res.json()); 13 | 14 | const App: React.FC = () => { 15 | const [currentProjectId, setCurrentProjectId] = useState("0"); 16 | const { data } = useSWR("/projects", _fetch); 17 | const { data: metricsData, error } = useSWR( 18 | () => `/metrics?id=${currentProjectId}`, 19 | _fetch 20 | ); 21 | 22 | if (!data) { 23 | return ( 24 |
25 | 26 |
27 | ); 28 | } 29 | 30 | return ( 31 |
37 | {data.projects.map((project: Project) => ( 38 | <> 39 | 43 | setCurrentProjectId( 44 | currentProjectId === project.id ? "-1" : project.id 45 | ) 46 | } 47 | /> 48 | {project.id === currentProjectId && ( 49 | 50 | )} 51 | 52 | ))} 53 |
54 | ); 55 | }; 56 | 57 | export default App; 58 | -------------------------------------------------------------------------------- /frontend/src/components/Charts/BreakdownChart.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { BarChart, Bar, XAxis, YAxis, Tooltip, Legend } from "recharts"; 3 | import Region from "../../types/Region"; 4 | 5 | const bars = ["connect", "download", "firstByte"]; 6 | 7 | interface BreakdownChartProps { 8 | region: Region; 9 | } 10 | 11 | const colors = ["#3683f7", "#af66de", "#f02ac5"]; 12 | 13 | const BreakdownChart: React.FC = ( 14 | props: BreakdownChartProps 15 | ) => { 16 | return ( 17 | 28 | 29 | 30 | 31 | 32 | {bars.map((bar: string, index: number) => ( 33 | 34 | ))} 35 | 36 | ); 37 | }; 38 | 39 | export default BreakdownChart; 40 | -------------------------------------------------------------------------------- /frontend/src/components/Charts/HealthChart.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LineChart, Line } from 'recharts'; 3 | import Region from '../../types/Region'; 4 | 5 | interface HealthChartProps { 6 | region: Region; 7 | } 8 | 9 | const HealthChart: React.FC = (props: HealthChartProps) => { 10 | return ( 11 | 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default HealthChart; 18 | -------------------------------------------------------------------------------- /frontend/src/components/Charts/ResponseTimeDistribution.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { BarChart, Bar, XAxis, YAxis, Tooltip, Legend } from "recharts"; 3 | import Region from "../../types/Region"; 4 | 5 | interface ResponseTimeDistributionChartProps { 6 | region: Region; 7 | } 8 | 9 | const ResponseTimeDistributionChart: React.FC = ( 10 | props: ResponseTimeDistributionChartProps 11 | ) => { 12 | const histogram = props.region.histogram.map(bin => ({ 13 | value: bin.length, 14 | name: (bin[bin.length - 1] || 0).toFixed(2) 15 | })); 16 | 17 | return ( 18 | 19 | 20 | 21 | 22 | 23 | 24 | ); 25 | }; 26 | 27 | export default ResponseTimeDistributionChart; 28 | -------------------------------------------------------------------------------- /frontend/src/components/Charts/TotalResponseTimeChart.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Line, XAxis, YAxis, Tooltip, LineChart } from "recharts"; 3 | import Region from "../../types/Region"; 4 | 5 | interface TotalResponseTimeChartProps { 6 | region: Region; 7 | } 8 | 9 | const TotalResponseTimeChart: React.FC = ( 10 | props: TotalResponseTimeChartProps 11 | ) => { 12 | return ( 13 | 24 | 25 | 26 | 27 | 35 | 36 | ); 37 | }; 38 | 39 | export default TotalResponseTimeChart; 40 | -------------------------------------------------------------------------------- /frontend/src/components/Footer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Flex } from 'rebass'; 3 | 4 | interface FooterProps {} 5 | 6 | const Footer: React.FC = (props: FooterProps) => { 7 | return ( 8 | 14 | 15 | Made by Rafal Wilinski 16 | 17 | 18 | Servicefull 19 | 20 | 21 | ); 22 | }; 23 | 24 | export default Footer; 25 | -------------------------------------------------------------------------------- /frontend/src/components/Project.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Project from '../../../bin/types/Project'; 3 | import { Text, Flex } from 'rebass'; 4 | 5 | interface ProjectProps { 6 | project: Project; 7 | onClick: (e: any) => void; 8 | } 9 | 10 | const ProjectComponent: React.FC = (props: ProjectProps) => { 11 | return ( 12 | 22 | 23 | 24 | {props.project.name || ''} 25 | 26 | 27 | {props.project.method.toUpperCase()} {props.project.endpoint} 28 | 29 | 30 | 31 | 32 | Uptime:{' '} 33 | {( 34 | (props.project.stats.uptime / 35 | (props.project.stats.uptime + props.project.stats.downtime)) * 36 | 100 37 | ).toFixed(2)} 38 | % 39 | 40 | 41 | Mean response time: {props.project.stats.meanResponse.toFixed(2)}ms 42 | 43 | 44 | 45 | ); 46 | }; 47 | 48 | export default ProjectComponent; 49 | -------------------------------------------------------------------------------- /frontend/src/components/ProjectDetails.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import { Text, Box, Flex } from "rebass"; 3 | import { takeRight, groupBy } from "lodash"; 4 | import * as d3 from "d3-array"; 5 | import BreakdownChart from "./Charts/BreakdownChart"; 6 | import { BarLoader } from "react-spinners"; 7 | import TotalResponseTimeChart from "./Charts/TotalResponseTimeChart"; 8 | import TimeRangePicker from "./TimeRangePicker"; 9 | import timeRanges from "../consts/timeRanges"; 10 | import everyNth from "../utils/everyNth"; 11 | import ResponseTimeDistributionChart from "./Charts/ResponseTimeDistribution"; 12 | 13 | interface ProjectDetailsProps { 14 | metricsData?: any; 15 | } 16 | 17 | const ProjectDetails: React.FC = ({ 18 | metricsData 19 | }: ProjectDetailsProps) => { 20 | const [takeEveryCount, setTakeEvery] = useState(4); 21 | const [takeRightCount, setTakeRight] = useState(288); 22 | 23 | if (!metricsData) { 24 | return ( 25 |
26 | 27 |
28 | ); 29 | } 30 | 31 | const regionGrouppedMetrics = groupBy(metricsData.metrics, "region"); 32 | const metricsPerRegion = Object.keys(regionGrouppedMetrics).map( 33 | regionName => { 34 | const responseTimes = takeRight( 35 | regionGrouppedMetrics[regionName].map(m => m.timings.total), 36 | takeRightCount 37 | ); 38 | const max = d3.max(responseTimes); 39 | const min = d3.min(responseTimes); 40 | const genHistogram = d3 41 | .histogram() 42 | .domain([min, max]) 43 | .thresholds(50); 44 | const histogram = genHistogram(responseTimes); 45 | 46 | return { 47 | name: regionName, 48 | timings: everyNth( 49 | takeRight( 50 | regionGrouppedMetrics[regionName].map((metric: any) => ({ 51 | name: new Date(parseInt(metric.date)).toLocaleTimeString(), 52 | ...metric.timings 53 | })), 54 | takeRightCount 55 | ), 56 | takeEveryCount 57 | ), 58 | health: everyNth( 59 | takeRight( 60 | regionGrouppedMetrics[regionName].map((metric: any) => ({ 61 | name: new Date(parseInt(metric.date)).toLocaleTimeString(), 62 | status: metric.value 63 | })), 64 | takeRightCount 65 | ), 66 | takeEveryCount 67 | ), 68 | histogram 69 | }; 70 | } 71 | ); 72 | 73 | const onRangeChange = (rangeName: string) => { 74 | const tr = timeRanges.find(timeRange => timeRange.name === rangeName); 75 | 76 | setTakeEvery(tr!.takeEvery); 77 | setTakeRight(tr!.takeRightCount); 78 | }; 79 | 80 | return ( 81 | 82 | {metricsPerRegion.map(region => ( 83 | 84 | 89 | 90 | Region: {region.name} 91 | 92 | t.name)} 94 | onChange={onRangeChange} 95 | /> 96 | 97 | 98 | Response Times distribution 99 | 100 | 101 | 102 | Response Times in time 103 | 104 | 105 | 106 | Request Breakdown 107 | 108 | 109 | 110 | ))} 111 | 112 | ); 113 | }; 114 | 115 | export default ProjectDetails; 116 | -------------------------------------------------------------------------------- /frontend/src/components/TimeRangePicker.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Box } from 'rebass'; 3 | import { Select } from '@rebass/forms'; 4 | 5 | interface TimeRangePickerProps { 6 | options: string[]; 7 | onChange: (val: string) => void; 8 | } 9 | 10 | const TimeRangePicker: React.FC = (props: TimeRangePickerProps) => { 11 | return ( 12 | 13 | 27 | 28 | ); 29 | }; 30 | 31 | export default TimeRangePicker; 32 | -------------------------------------------------------------------------------- /frontend/src/consts/timeRanges.ts: -------------------------------------------------------------------------------- 1 | const timeRanges = [ 2 | { 3 | name: 'Last hour', 4 | takeRightCount: 12, 5 | takeEvery: 1, 6 | }, 7 | { 8 | name: 'Last 6 hours', 9 | takeRightCount: 72, 10 | takeEvery: 2, 11 | }, 12 | { 13 | name: 'Last 12 hours', 14 | takeRightCount: 144, 15 | takeEvery: 4, 16 | }, 17 | { 18 | name: 'Last day', 19 | takeRightCount: 288, 20 | takeEvery: 4, 21 | }, 22 | { 23 | name: 'Last week', 24 | takeRightCount: 2016, 25 | takeEvery: 32, 26 | }, 27 | ]; 28 | 29 | export default timeRanges; 30 | -------------------------------------------------------------------------------- /frontend/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | ReactDOM.render(, document.getElementById('root')); 6 | -------------------------------------------------------------------------------- /frontend/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /frontend/src/types/Region.ts: -------------------------------------------------------------------------------- 1 | import { Bin } from "d3-array"; 2 | 3 | export default interface Region { 4 | name: string; 5 | timings: any[]; 6 | health: any[]; 7 | histogram: Bin[]; 8 | } 9 | -------------------------------------------------------------------------------- /frontend/src/utils/everyNth.tsx: -------------------------------------------------------------------------------- 1 | export default (arr: any[], nth: number) => arr.filter((e, i) => i % nth === nth - 1); 2 | -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "module": "esnext", 16 | "moduleResolution": "node", 17 | "resolveJsonModule": true, 18 | "isolatedModules": true, 19 | "noEmit": true, 20 | "jsx": "react" 21 | }, 22 | "include": [ 23 | "src" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aws-web-performance-monitor", 3 | "version": "0.1.0", 4 | "main": "bin/index.js", 5 | "types": "bin/index.d.ts", 6 | "bin": { 7 | "aws-web-performance-monitor": "bin/aws-web-performance-monitor.js" 8 | }, 9 | "scripts": { 10 | "build:cdk": "rm -fr cdk.out && tsc", 11 | "build:frontend": "cd frontend && npm run build", 12 | "build:chrome": "cd bin/collector/layer/ && ./prepare-chromium.sh", 13 | "cdk": "cdk", 14 | "synth": "cdk synth", 15 | "deploy:all": "npm run build:cdk && npm run build:frontend && cdk deploy \"*\"" 16 | }, 17 | "devDependencies": { 18 | "@types/node": "^8.9.4", 19 | "aws-cdk": "1.15.0", 20 | "typescript": "3.1.2" 21 | }, 22 | "dependencies": { 23 | "@aws-cdk/aws-apigateway": "1.15.0", 24 | "@aws-cdk/aws-cloudfront": "1.15.0", 25 | "@aws-cdk/aws-cloudwatch": "1.15.0", 26 | "@aws-cdk/aws-dynamodb": "1.15.0", 27 | "@aws-cdk/aws-dynamodb-global": "1.15.0", 28 | "@aws-cdk/aws-events": "1.15.0", 29 | "@aws-cdk/aws-events-targets": "1.15.0", 30 | "@aws-cdk/aws-lambda": "1.15.0", 31 | "@aws-cdk/aws-s3": "1.15.0", 32 | "@aws-cdk/aws-s3-deployment": "1.15.0" 33 | } 34 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2018", 4 | "module": "commonjs", 5 | "lib": ["es2016", "es2017.object", "es2017.string", "dom"], 6 | "declaration": true, 7 | "strict": true, 8 | "noImplicitAny": true, 9 | "strictNullChecks": true, 10 | "noImplicitThis": true, 11 | "alwaysStrict": true, 12 | "noUnusedLocals": true, 13 | "noUnusedParameters": true, 14 | "noImplicitReturns": true, 15 | "noFallthroughCasesInSwitch": false, 16 | "inlineSourceMap": true, 17 | "inlineSources": true, 18 | "experimentalDecorators": true, 19 | "strictPropertyInitialization": false 20 | }, 21 | "exclude": ["cdk.out","frontend","bin/collector/layer"] 22 | } 23 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@aws-cdk/assets@1.15.0": 6 | version "1.15.0" 7 | resolved "https://registry.yarnpkg.com/@aws-cdk/assets/-/assets-1.15.0.tgz#a63d6ddf04fe5edf28b39a5d17259f333c7f8e7e" 8 | integrity sha512-zQGaQxlIt+ddWIxeLRFhInC3XiJ73jv84uLXp5R7X3+86q6LZzw9BeFjMTwigt/5UFYMprt3JvVP71fJ3tmEbA== 9 | dependencies: 10 | "@aws-cdk/core" "1.15.0" 11 | "@aws-cdk/cx-api" "1.15.0" 12 | minimatch "^3.0.4" 13 | 14 | "@aws-cdk/aws-apigateway@1.15.0": 15 | version "1.15.0" 16 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigateway/-/aws-apigateway-1.15.0.tgz#cb8765a5a48486f352fcfd73521e3d311961f6c6" 17 | integrity sha512-KP88hEHYwnQ8inI6Nr8j4yv8PHXl5K1B50bZHF69ESaLhRd57T7OelSKSLZOQPMEZgmgT9blaqKAO1/47jABpQ== 18 | dependencies: 19 | "@aws-cdk/aws-certificatemanager" "1.15.0" 20 | "@aws-cdk/aws-elasticloadbalancingv2" "1.15.0" 21 | "@aws-cdk/aws-iam" "1.15.0" 22 | "@aws-cdk/aws-lambda" "1.15.0" 23 | "@aws-cdk/core" "1.15.0" 24 | 25 | "@aws-cdk/aws-applicationautoscaling@1.15.0": 26 | version "1.15.0" 27 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.15.0.tgz#2aea2c6e70157f829415746d4b7ccab1c2ca2d5f" 28 | integrity sha512-4fs0CN+4RDBxRe9wEoaYTUanHo4Zck8NoWhC35cDsaajh5FFzbplA10hfyhLUA6Tr/827KcTF/JHPerxpved4A== 29 | dependencies: 30 | "@aws-cdk/aws-autoscaling-common" "1.15.0" 31 | "@aws-cdk/aws-cloudwatch" "1.15.0" 32 | "@aws-cdk/aws-iam" "1.15.0" 33 | "@aws-cdk/core" "1.15.0" 34 | 35 | "@aws-cdk/aws-autoscaling-common@1.15.0": 36 | version "1.15.0" 37 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.15.0.tgz#4ab2a5b5ce68e26cc447d80da0135f4722c94cbc" 38 | integrity sha512-jN24sqqFBCibf+NlA69iE1+WdpXyHByKwqWKAVG4d31Bk5VvUSbKUlhXTknKo3wrxH0igttatWP7U0UpzMzKaA== 39 | dependencies: 40 | "@aws-cdk/aws-iam" "1.15.0" 41 | "@aws-cdk/core" "1.15.0" 42 | 43 | "@aws-cdk/aws-autoscaling-hooktargets@1.15.0": 44 | version "1.15.0" 45 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling-hooktargets/-/aws-autoscaling-hooktargets-1.15.0.tgz#85cdc543b4dc33c2ad1eefe190d0b3c7c8b46bb1" 46 | integrity sha512-J31eSCZeinTcTiSm1DmXsIBpf5GNeXPXDqUpB0nCSee29VpVtrKxLfBCWRqCEFoDK8NajPw2PSOh1d6N3k57wA== 47 | dependencies: 48 | "@aws-cdk/aws-autoscaling" "1.15.0" 49 | "@aws-cdk/aws-iam" "1.15.0" 50 | "@aws-cdk/aws-lambda" "1.15.0" 51 | "@aws-cdk/aws-sns" "1.15.0" 52 | "@aws-cdk/aws-sns-subscriptions" "1.15.0" 53 | "@aws-cdk/aws-sqs" "1.15.0" 54 | "@aws-cdk/core" "1.15.0" 55 | 56 | "@aws-cdk/aws-autoscaling@1.15.0": 57 | version "1.15.0" 58 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling/-/aws-autoscaling-1.15.0.tgz#53963210a9539a0bb80e9f9396aa3ddfd911b3dc" 59 | integrity sha512-+TTjf2GL+2uT4Q7eHp1BmiyVdyBGZKptjLT6cTwwLYL0uYiAItkYyQVaWTIbJtSXFgERadlxRsbCQgZOefR50A== 60 | dependencies: 61 | "@aws-cdk/aws-autoscaling-common" "1.15.0" 62 | "@aws-cdk/aws-cloudwatch" "1.15.0" 63 | "@aws-cdk/aws-ec2" "1.15.0" 64 | "@aws-cdk/aws-elasticloadbalancing" "1.15.0" 65 | "@aws-cdk/aws-elasticloadbalancingv2" "1.15.0" 66 | "@aws-cdk/aws-iam" "1.15.0" 67 | "@aws-cdk/aws-sns" "1.15.0" 68 | "@aws-cdk/core" "1.15.0" 69 | 70 | "@aws-cdk/aws-certificatemanager@1.15.0": 71 | version "1.15.0" 72 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.15.0.tgz#ccabc2be566bb2ea9d31dc13e2484a993660f7a3" 73 | integrity sha512-gF+8MnwnyMEczsBfqibSLPu3ab9aukThI1CZ3zbPrDqjjyMbWKuRrpjDOev4wdqDPSs0ujk/Kw1rKB1Z+zrUkA== 74 | dependencies: 75 | "@aws-cdk/aws-cloudformation" "1.15.0" 76 | "@aws-cdk/aws-iam" "1.15.0" 77 | "@aws-cdk/aws-lambda" "1.15.0" 78 | "@aws-cdk/aws-route53" "1.15.0" 79 | "@aws-cdk/core" "1.15.0" 80 | 81 | "@aws-cdk/aws-cloudformation@1.15.0": 82 | version "1.15.0" 83 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.15.0.tgz#600234d24633bd5a396bd45b095c2e2c34f0a1e7" 84 | integrity sha512-GOGQleKJ1Iw5LIqLlAY2Hq2zhKJj3De+exVztXHg++74euxegV7GwGkJS/xuWzbM0ditVbGXdDC664MFAXrWzw== 85 | dependencies: 86 | "@aws-cdk/aws-iam" "1.15.0" 87 | "@aws-cdk/aws-lambda" "1.15.0" 88 | "@aws-cdk/aws-s3" "1.15.0" 89 | "@aws-cdk/aws-sns" "1.15.0" 90 | "@aws-cdk/core" "1.15.0" 91 | "@aws-cdk/cx-api" "1.15.0" 92 | 93 | "@aws-cdk/aws-cloudfront@1.15.0": 94 | version "1.15.0" 95 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudfront/-/aws-cloudfront-1.15.0.tgz#3ad62b6e50e066d10e876a524dcd8227cf0daf7e" 96 | integrity sha512-jAtrBBdZ0eUq735XyAR77cafWHEnrJFbWE68OM0BQH4L9dQn3alX5Wu92Zsk9fW2TNiu3OSKZNr1RQpWQSV7fg== 97 | dependencies: 98 | "@aws-cdk/aws-certificatemanager" "1.15.0" 99 | "@aws-cdk/aws-iam" "1.15.0" 100 | "@aws-cdk/aws-kms" "1.15.0" 101 | "@aws-cdk/aws-lambda" "1.15.0" 102 | "@aws-cdk/aws-s3" "1.15.0" 103 | "@aws-cdk/core" "1.15.0" 104 | 105 | "@aws-cdk/aws-cloudwatch@1.15.0": 106 | version "1.15.0" 107 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.15.0.tgz#d4d0cd81ad283c9c13f11b71065f1ae3a3298293" 108 | integrity sha512-bYGCVP6479dnUOOJxxDzVzc6uzyNIHxsbF8zormEJeP0oLS/IF8+cReOM9nPhBdeAsAYgKkusRY+dRleC+tEbw== 109 | dependencies: 110 | "@aws-cdk/aws-iam" "1.15.0" 111 | "@aws-cdk/core" "1.15.0" 112 | 113 | "@aws-cdk/aws-codebuild@1.15.0": 114 | version "1.15.0" 115 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codebuild/-/aws-codebuild-1.15.0.tgz#644d8a95526885913771e68d5fea6faad17c5e9d" 116 | integrity sha512-K5jEIPiipeYm5OLKjWH2r5OCq8hajkrFy2wg1ZZMyZZyKmcu7sx79f32BgVyxB6tOb5EKyqDpodv6YQPN4qUIg== 117 | dependencies: 118 | "@aws-cdk/assets" "1.15.0" 119 | "@aws-cdk/aws-cloudwatch" "1.15.0" 120 | "@aws-cdk/aws-codecommit" "1.15.0" 121 | "@aws-cdk/aws-ec2" "1.15.0" 122 | "@aws-cdk/aws-ecr" "1.15.0" 123 | "@aws-cdk/aws-ecr-assets" "1.15.0" 124 | "@aws-cdk/aws-events" "1.15.0" 125 | "@aws-cdk/aws-iam" "1.15.0" 126 | "@aws-cdk/aws-kms" "1.15.0" 127 | "@aws-cdk/aws-s3" "1.15.0" 128 | "@aws-cdk/aws-s3-assets" "1.15.0" 129 | "@aws-cdk/aws-secretsmanager" "1.15.0" 130 | "@aws-cdk/core" "1.15.0" 131 | 132 | "@aws-cdk/aws-codecommit@1.15.0": 133 | version "1.15.0" 134 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codecommit/-/aws-codecommit-1.15.0.tgz#2d1dd47077c3305a756fdb852282f79dfc74ce65" 135 | integrity sha512-MH0iEJqhGh0IqQTkhnQI+RlJfPw73RabygR7h4EPOa/24BZ4Img+AR+ynTEjVVXtjC432iCgwGTwi54zy004Lw== 136 | dependencies: 137 | "@aws-cdk/aws-events" "1.15.0" 138 | "@aws-cdk/aws-iam" "1.15.0" 139 | "@aws-cdk/core" "1.15.0" 140 | 141 | "@aws-cdk/aws-codepipeline@1.15.0": 142 | version "1.15.0" 143 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codepipeline/-/aws-codepipeline-1.15.0.tgz#f216920fa716afe00a1dc9c8c4d60df468d57af5" 144 | integrity sha512-Bj4bNCP9mxrtf+deZLB/BBb98n93phxUx/Kj3NHNFuexSvzZIyNeX0x8X68NwP+xZYHszIL4AArVElY9+YvYnw== 145 | dependencies: 146 | "@aws-cdk/aws-events" "1.15.0" 147 | "@aws-cdk/aws-iam" "1.15.0" 148 | "@aws-cdk/aws-kms" "1.15.0" 149 | "@aws-cdk/aws-s3" "1.15.0" 150 | "@aws-cdk/core" "1.15.0" 151 | 152 | "@aws-cdk/aws-dynamodb-global@1.15.0": 153 | version "1.15.0" 154 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-dynamodb-global/-/aws-dynamodb-global-1.15.0.tgz#ce91b8e571a78ed3c2fc1922af95e943ea4d4b8b" 155 | integrity sha512-uWsAvIeYcrb3/B60ESkwBC8pqczt6YGvUW+FjWgV+P4A5z7CZyJp7OFFaUnmKqfkp2gBNDqbZ9D7gwAm7YUtow== 156 | dependencies: 157 | "@aws-cdk/aws-cloudformation" "1.15.0" 158 | "@aws-cdk/aws-dynamodb" "1.15.0" 159 | "@aws-cdk/aws-iam" "1.15.0" 160 | "@aws-cdk/aws-lambda" "1.15.0" 161 | "@aws-cdk/core" "1.15.0" 162 | 163 | "@aws-cdk/aws-dynamodb@1.15.0": 164 | version "1.15.0" 165 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-dynamodb/-/aws-dynamodb-1.15.0.tgz#95ea14ab164d0c9d04e2dec740f5bc0ba6e73b0e" 166 | integrity sha512-8BpQpKUFhjRJknvB5/MwnKn68ZYhuc6kf70/BXAtNmjUtS747yk3n5ORxMak7tIQvqUlWMCn+vXRCcruczj3hA== 167 | dependencies: 168 | "@aws-cdk/aws-applicationautoscaling" "1.15.0" 169 | "@aws-cdk/aws-iam" "1.15.0" 170 | "@aws-cdk/core" "1.15.0" 171 | 172 | "@aws-cdk/aws-ec2@1.15.0": 173 | version "1.15.0" 174 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ec2/-/aws-ec2-1.15.0.tgz#681741585d9cbc26807d842b7c7a567327ba8408" 175 | integrity sha512-o729HqLXtVA/mUUg/76q2HaBG4AczGSZMZO+x/ksSO1UnJLmWpdbNjCScaId/R6ip8YX7Gy969PytP8xIOayPA== 176 | dependencies: 177 | "@aws-cdk/aws-cloudwatch" "1.15.0" 178 | "@aws-cdk/aws-iam" "1.15.0" 179 | "@aws-cdk/aws-ssm" "1.15.0" 180 | "@aws-cdk/core" "1.15.0" 181 | "@aws-cdk/cx-api" "1.15.0" 182 | 183 | "@aws-cdk/aws-ecr-assets@1.15.0": 184 | version "1.15.0" 185 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.15.0.tgz#d80a0180371cf3197d4f9076509442b12faad97a" 186 | integrity sha512-X1YWleWLIIGwJFSoawKhYPI4aruiJ727lkzf2xwGBythiTQUS8m5aWk99FLWrnaNJ1lJY68M+Hu9+4QjlE/tzQ== 187 | dependencies: 188 | "@aws-cdk/assets" "1.15.0" 189 | "@aws-cdk/aws-cloudformation" "1.15.0" 190 | "@aws-cdk/aws-ecr" "1.15.0" 191 | "@aws-cdk/aws-iam" "1.15.0" 192 | "@aws-cdk/aws-lambda" "1.15.0" 193 | "@aws-cdk/aws-s3" "1.15.0" 194 | "@aws-cdk/core" "1.15.0" 195 | "@aws-cdk/cx-api" "1.15.0" 196 | 197 | "@aws-cdk/aws-ecr@1.15.0": 198 | version "1.15.0" 199 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr/-/aws-ecr-1.15.0.tgz#09c1af0ba50294dc9f6f68449605d5113b766198" 200 | integrity sha512-BVtVVijN4j9m1HTFBR0BVWBlKtRoZsLXPbBWuTegSH8v+ROmyDErkGHMEy3LzhrHzdRDjw36oWcvqkZyI6TqPw== 201 | dependencies: 202 | "@aws-cdk/aws-events" "1.15.0" 203 | "@aws-cdk/aws-iam" "1.15.0" 204 | "@aws-cdk/core" "1.15.0" 205 | 206 | "@aws-cdk/aws-ecs@1.15.0": 207 | version "1.15.0" 208 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecs/-/aws-ecs-1.15.0.tgz#e614e8d8aeda8facf89a1f147cd777c1c14a5350" 209 | integrity sha512-qfLWEcBTcN3BOAkV7QARhOP06XBlwu/r83S6DIhHSeAiW7JxLrSmuof4NDwh35DMWiv2KGF9r2Vx5HBrfW3RqA== 210 | dependencies: 211 | "@aws-cdk/aws-applicationautoscaling" "1.15.0" 212 | "@aws-cdk/aws-autoscaling" "1.15.0" 213 | "@aws-cdk/aws-autoscaling-hooktargets" "1.15.0" 214 | "@aws-cdk/aws-certificatemanager" "1.15.0" 215 | "@aws-cdk/aws-cloudformation" "1.15.0" 216 | "@aws-cdk/aws-cloudwatch" "1.15.0" 217 | "@aws-cdk/aws-ec2" "1.15.0" 218 | "@aws-cdk/aws-ecr" "1.15.0" 219 | "@aws-cdk/aws-ecr-assets" "1.15.0" 220 | "@aws-cdk/aws-elasticloadbalancing" "1.15.0" 221 | "@aws-cdk/aws-elasticloadbalancingv2" "1.15.0" 222 | "@aws-cdk/aws-iam" "1.15.0" 223 | "@aws-cdk/aws-lambda" "1.15.0" 224 | "@aws-cdk/aws-logs" "1.15.0" 225 | "@aws-cdk/aws-route53" "1.15.0" 226 | "@aws-cdk/aws-route53-targets" "1.15.0" 227 | "@aws-cdk/aws-secretsmanager" "1.15.0" 228 | "@aws-cdk/aws-servicediscovery" "1.15.0" 229 | "@aws-cdk/aws-sns" "1.15.0" 230 | "@aws-cdk/aws-sqs" "1.15.0" 231 | "@aws-cdk/aws-ssm" "1.15.0" 232 | "@aws-cdk/core" "1.15.0" 233 | "@aws-cdk/cx-api" "1.15.0" 234 | 235 | "@aws-cdk/aws-elasticloadbalancing@1.15.0": 236 | version "1.15.0" 237 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancing/-/aws-elasticloadbalancing-1.15.0.tgz#5f6ac4eb9f53216662423f707063eebf5c13ac45" 238 | integrity sha512-oH1NHCaKlsChrwF6jJ0YJ8gax47dSvMe/gpiuR/NiW9pdrAECjlgsGSmqiDS7FiBLLRmZoKIhJpa/ajfdl1B9A== 239 | dependencies: 240 | "@aws-cdk/aws-ec2" "1.15.0" 241 | "@aws-cdk/core" "1.15.0" 242 | 243 | "@aws-cdk/aws-elasticloadbalancingv2@1.15.0": 244 | version "1.15.0" 245 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancingv2/-/aws-elasticloadbalancingv2-1.15.0.tgz#388c0d4914b974bdc731588430c3c99c70383b38" 246 | integrity sha512-MakvmnhVDZS0rlCOvbWZ6CyfEySVVQbquy9rv4/p/ywEdTQ8RQWTJQ7hynplFt6Kbi4J3oz91iC4eUgSMERWtw== 247 | dependencies: 248 | "@aws-cdk/aws-certificatemanager" "1.15.0" 249 | "@aws-cdk/aws-cloudwatch" "1.15.0" 250 | "@aws-cdk/aws-ec2" "1.15.0" 251 | "@aws-cdk/aws-iam" "1.15.0" 252 | "@aws-cdk/aws-lambda" "1.15.0" 253 | "@aws-cdk/aws-s3" "1.15.0" 254 | "@aws-cdk/core" "1.15.0" 255 | 256 | "@aws-cdk/aws-events-targets@1.15.0": 257 | version "1.15.0" 258 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-events-targets/-/aws-events-targets-1.15.0.tgz#ce0b4a2ee2b746a839226185aea8807430ce39a7" 259 | integrity sha512-lJoNLr0PKIScwm1c/UC/RAwZfUEMwmsF9AHhdyH3l/EqrPwE25sOVoBbKa8FGiQJfzWcONxgYUIMQEcCa5QGKw== 260 | dependencies: 261 | "@aws-cdk/aws-cloudformation" "1.15.0" 262 | "@aws-cdk/aws-codebuild" "1.15.0" 263 | "@aws-cdk/aws-codepipeline" "1.15.0" 264 | "@aws-cdk/aws-ec2" "1.15.0" 265 | "@aws-cdk/aws-ecs" "1.15.0" 266 | "@aws-cdk/aws-events" "1.15.0" 267 | "@aws-cdk/aws-iam" "1.15.0" 268 | "@aws-cdk/aws-lambda" "1.15.0" 269 | "@aws-cdk/aws-sns" "1.15.0" 270 | "@aws-cdk/aws-sns-subscriptions" "1.15.0" 271 | "@aws-cdk/aws-sqs" "1.15.0" 272 | "@aws-cdk/aws-stepfunctions" "1.15.0" 273 | "@aws-cdk/core" "1.15.0" 274 | 275 | "@aws-cdk/aws-events@1.15.0": 276 | version "1.15.0" 277 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-events/-/aws-events-1.15.0.tgz#b8f83259a4e45e07612beec32057f1a985573ed8" 278 | integrity sha512-kkPn4PdgniSMED/1YTimVhAw5KIZfwbHS1CFtxPxAHtHVN8vQ0ewHgVlfZGaP9O96FpWkW+kuyc40Hfz8LES9g== 279 | dependencies: 280 | "@aws-cdk/aws-iam" "1.15.0" 281 | "@aws-cdk/core" "1.15.0" 282 | 283 | "@aws-cdk/aws-iam@1.15.0": 284 | version "1.15.0" 285 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-iam/-/aws-iam-1.15.0.tgz#9bcac3e3ca57f387b9ef7677ae012f1c561ceddd" 286 | integrity sha512-zOPMe7G2Fq/vKI4c9ip09L7v0gtVtrfO9i9nBH6l/Nt+K09N08GsavPAPQCgVaYdN6KRhGvEBTwnsBtGw2300A== 287 | dependencies: 288 | "@aws-cdk/core" "1.15.0" 289 | "@aws-cdk/region-info" "1.15.0" 290 | 291 | "@aws-cdk/aws-kms@1.15.0": 292 | version "1.15.0" 293 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kms/-/aws-kms-1.15.0.tgz#47907dfb206af466112d62b65170248cacd5da7d" 294 | integrity sha512-UOsxCEmUAa9t/Vt2OKmPV7gGyBODpAn/6pYIhBVgL7E8kVXxuL6VqeCVdMPDiAga3a5sR8HQypzLcxg1WOIObw== 295 | dependencies: 296 | "@aws-cdk/aws-iam" "1.15.0" 297 | "@aws-cdk/core" "1.15.0" 298 | 299 | "@aws-cdk/aws-lambda@1.15.0": 300 | version "1.15.0" 301 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-lambda/-/aws-lambda-1.15.0.tgz#c1c6768638ee9cb1c7b1f82eb5345c6fe3f200d5" 302 | integrity sha512-XGMN+6jzB2V4JPi3znmXMmclgMgYibwYU1kxTGXhfbGngCu7TcNGWoEhlZGTu20tWKqUOLaf3XPOzfBrnmc12g== 303 | dependencies: 304 | "@aws-cdk/aws-cloudwatch" "1.15.0" 305 | "@aws-cdk/aws-ec2" "1.15.0" 306 | "@aws-cdk/aws-events" "1.15.0" 307 | "@aws-cdk/aws-iam" "1.15.0" 308 | "@aws-cdk/aws-logs" "1.15.0" 309 | "@aws-cdk/aws-s3" "1.15.0" 310 | "@aws-cdk/aws-s3-assets" "1.15.0" 311 | "@aws-cdk/aws-sqs" "1.15.0" 312 | "@aws-cdk/core" "1.15.0" 313 | "@aws-cdk/cx-api" "1.15.0" 314 | 315 | "@aws-cdk/aws-logs@1.15.0": 316 | version "1.15.0" 317 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-logs/-/aws-logs-1.15.0.tgz#0da2c8ff9b99366dd6af400936fe92726136e83c" 318 | integrity sha512-TTTMU+Qo0VHlilaEW0+Vk28HZUx6naSJrzj9yYYLP+HIjBCROpPpNI3N0p/8rYGDCEGmTrv4XBbOjcvV0EDB8Q== 319 | dependencies: 320 | "@aws-cdk/aws-cloudwatch" "1.15.0" 321 | "@aws-cdk/aws-iam" "1.15.0" 322 | "@aws-cdk/core" "1.15.0" 323 | 324 | "@aws-cdk/aws-route53-targets@1.15.0": 325 | version "1.15.0" 326 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53-targets/-/aws-route53-targets-1.15.0.tgz#500a5d0cb43da328a84fe75db086ecb30d562584" 327 | integrity sha512-Lgy3wBps/IZBo6BFaN1a64q/HmwqWRNwiAyxOIeGCsJVdTb4Sk7dKKbhm4WGMT8V9Jb/CUDFOOxedYKqxDjY9Q== 328 | dependencies: 329 | "@aws-cdk/aws-apigateway" "1.15.0" 330 | "@aws-cdk/aws-cloudfront" "1.15.0" 331 | "@aws-cdk/aws-elasticloadbalancing" "1.15.0" 332 | "@aws-cdk/aws-elasticloadbalancingv2" "1.15.0" 333 | "@aws-cdk/aws-iam" "1.15.0" 334 | "@aws-cdk/aws-route53" "1.15.0" 335 | "@aws-cdk/aws-s3" "1.15.0" 336 | "@aws-cdk/core" "1.15.0" 337 | "@aws-cdk/region-info" "1.15.0" 338 | 339 | "@aws-cdk/aws-route53@1.15.0": 340 | version "1.15.0" 341 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53/-/aws-route53-1.15.0.tgz#46ab3f61e56e18a2322ac6bd56cca0f6a10e19d3" 342 | integrity sha512-dFcIKb28+aT3n5DOGUrwa6gMxKzHWtpUQcK4O7Or1OyxRoHCj6eUDdERT5lv/UZ7zRTL3UnPuC5rOYk0b0Ra1A== 343 | dependencies: 344 | "@aws-cdk/aws-ec2" "1.15.0" 345 | "@aws-cdk/aws-logs" "1.15.0" 346 | "@aws-cdk/core" "1.15.0" 347 | "@aws-cdk/cx-api" "1.15.0" 348 | 349 | "@aws-cdk/aws-s3-assets@1.15.0": 350 | version "1.15.0" 351 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.15.0.tgz#e220d746da3c51cddc7da329fbf9eaecf83b65ef" 352 | integrity sha512-4Y4egaDXWqzID/jLQaE+udBuTZJpCqvdm9fDJ6yEAzavQkwyO5WiZhQyUXFb2hMcUYUcnDj4D2uDATkVcc52tQ== 353 | dependencies: 354 | "@aws-cdk/assets" "1.15.0" 355 | "@aws-cdk/aws-iam" "1.15.0" 356 | "@aws-cdk/aws-s3" "1.15.0" 357 | "@aws-cdk/core" "1.15.0" 358 | "@aws-cdk/cx-api" "1.15.0" 359 | 360 | "@aws-cdk/aws-s3-deployment@1.15.0": 361 | version "1.15.0" 362 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-deployment/-/aws-s3-deployment-1.15.0.tgz#2d101261f2a9d5cf68c229a30a8128a7c799bed6" 363 | integrity sha512-ifPRPxC3xU3/Z58W0oTK7o6TX2OFOfi7yHvqs3e49YV1noCO2aA6rV6Y0G1UipnjkGUznL/8qij3kk3By3or9A== 364 | dependencies: 365 | "@aws-cdk/aws-cloudformation" "1.15.0" 366 | "@aws-cdk/aws-cloudfront" "1.15.0" 367 | "@aws-cdk/aws-iam" "1.15.0" 368 | "@aws-cdk/aws-lambda" "1.15.0" 369 | "@aws-cdk/aws-s3" "1.15.0" 370 | "@aws-cdk/aws-s3-assets" "1.15.0" 371 | "@aws-cdk/core" "1.15.0" 372 | 373 | "@aws-cdk/aws-s3@1.15.0": 374 | version "1.15.0" 375 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3/-/aws-s3-1.15.0.tgz#2cf935fcfe3283307c8326bf0e8df1584185142a" 376 | integrity sha512-4mMdRqJkY8rtcs0J2Y7dCunYFV79f0wZ2rgVlW3qS+mExLgTjoUwysajwwOvzGKG0rBp27DPCCW2f/t7l65FuA== 377 | dependencies: 378 | "@aws-cdk/aws-events" "1.15.0" 379 | "@aws-cdk/aws-iam" "1.15.0" 380 | "@aws-cdk/aws-kms" "1.15.0" 381 | "@aws-cdk/core" "1.15.0" 382 | 383 | "@aws-cdk/aws-secretsmanager@1.15.0": 384 | version "1.15.0" 385 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-secretsmanager/-/aws-secretsmanager-1.15.0.tgz#478a3c9198e8052a6da33cbf1bf292d1724cb3ec" 386 | integrity sha512-wxaoXRirdtfwoTSKmgKXaVzlXQ311vT5/j4GoWqyzLu+3lRA9jn60nUF1rbX4AKydlKFuoNAOG+z40A1B3xxsQ== 387 | dependencies: 388 | "@aws-cdk/aws-ec2" "1.15.0" 389 | "@aws-cdk/aws-iam" "1.15.0" 390 | "@aws-cdk/aws-kms" "1.15.0" 391 | "@aws-cdk/aws-lambda" "1.15.0" 392 | "@aws-cdk/core" "1.15.0" 393 | 394 | "@aws-cdk/aws-servicediscovery@1.15.0": 395 | version "1.15.0" 396 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-servicediscovery/-/aws-servicediscovery-1.15.0.tgz#2c68aeaf7230ab87e16337b38dd20e6bde096906" 397 | integrity sha512-UQyw2Q67FWqWArbfRbeweqgjiDD7B5g8lPG8T5LAVDNUIZRBkZ5X2KVSiEUTiq4n4sxMZAKEIxmFp5o6YPLe+w== 398 | dependencies: 399 | "@aws-cdk/aws-ec2" "1.15.0" 400 | "@aws-cdk/aws-elasticloadbalancingv2" "1.15.0" 401 | "@aws-cdk/aws-route53" "1.15.0" 402 | "@aws-cdk/core" "1.15.0" 403 | 404 | "@aws-cdk/aws-sns-subscriptions@1.15.0": 405 | version "1.15.0" 406 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns-subscriptions/-/aws-sns-subscriptions-1.15.0.tgz#9650670082916f20f851dff6f04bebd1b5e4f94e" 407 | integrity sha512-64Ql+ka9+jTY3D5mC4Y3SDfwEbhfYpVDzLe9yORQygcqazgz5mEVZs0TUc9AEvy7gaHkQz3JssnBYZpPdW558w== 408 | dependencies: 409 | "@aws-cdk/aws-iam" "1.15.0" 410 | "@aws-cdk/aws-lambda" "1.15.0" 411 | "@aws-cdk/aws-sns" "1.15.0" 412 | "@aws-cdk/aws-sqs" "1.15.0" 413 | "@aws-cdk/core" "1.15.0" 414 | 415 | "@aws-cdk/aws-sns@1.15.0": 416 | version "1.15.0" 417 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns/-/aws-sns-1.15.0.tgz#2cddd71c234bba1a246f0d96af549921a372df68" 418 | integrity sha512-9wLLT+zGNmgiii4LvILz6Yvfypg8ozYTdJMPvfonElWJqErz1x6vaSCNNJkWX4hkoLeEmjEscAFbiusqmngjJQ== 419 | dependencies: 420 | "@aws-cdk/aws-cloudwatch" "1.15.0" 421 | "@aws-cdk/aws-events" "1.15.0" 422 | "@aws-cdk/aws-iam" "1.15.0" 423 | "@aws-cdk/core" "1.15.0" 424 | 425 | "@aws-cdk/aws-sqs@1.15.0": 426 | version "1.15.0" 427 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sqs/-/aws-sqs-1.15.0.tgz#11a1130fcebb46668435686cafcdcf6e0a5bf7f6" 428 | integrity sha512-SbUyQgvCSrP/XdeQ7GoUdsoQ+/GvJtpP/fsq7cpiYVRJ6rMgtg3JiwliU8pEJSLqIumffmkuZah+rBKxHlqhxw== 429 | dependencies: 430 | "@aws-cdk/aws-cloudwatch" "1.15.0" 431 | "@aws-cdk/aws-iam" "1.15.0" 432 | "@aws-cdk/aws-kms" "1.15.0" 433 | "@aws-cdk/core" "1.15.0" 434 | 435 | "@aws-cdk/aws-ssm@1.15.0": 436 | version "1.15.0" 437 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ssm/-/aws-ssm-1.15.0.tgz#1a6316699dc509e4d2a1e5a6a664afff7b8e048f" 438 | integrity sha512-SGTT3B43Bh7EJmIg+vXpOOVWaqaoxP6P3bQtg098tM1I+CnKICZd7bTn2NpZkrZBwAuQT27n7/A9kN7qPA/8lw== 439 | dependencies: 440 | "@aws-cdk/aws-iam" "1.15.0" 441 | "@aws-cdk/aws-kms" "1.15.0" 442 | "@aws-cdk/core" "1.15.0" 443 | "@aws-cdk/cx-api" "1.15.0" 444 | 445 | "@aws-cdk/aws-stepfunctions@1.15.0": 446 | version "1.15.0" 447 | resolved "https://registry.yarnpkg.com/@aws-cdk/aws-stepfunctions/-/aws-stepfunctions-1.15.0.tgz#4e70ff09e09c1d31323c39ad5467dd9aca85dbe2" 448 | integrity sha512-0RUDphSJpxJLmqj3UiBmdnmK+IwcQpeffmq1eUEQtXyj+yYib9fNxKm9GIFJgUrusZevEphJ4Gn8bDJLToQcaw== 449 | dependencies: 450 | "@aws-cdk/aws-cloudwatch" "1.15.0" 451 | "@aws-cdk/aws-events" "1.15.0" 452 | "@aws-cdk/aws-iam" "1.15.0" 453 | "@aws-cdk/core" "1.15.0" 454 | 455 | "@aws-cdk/cfnspec@1.15.0": 456 | version "1.15.0" 457 | resolved "https://registry.yarnpkg.com/@aws-cdk/cfnspec/-/cfnspec-1.15.0.tgz#2c04d96dc119236dabd0a5bf199ead03ffceddbc" 458 | integrity sha512-vYwCHXeRKyc3OpH5ZH4Mb74kOCSq7vbFJHcjJ9sRlR+tewKKjIEMqTOVCMizNkv8UDkStJK8m3SiMG85OWX+Rw== 459 | dependencies: 460 | md5 "^2.2.1" 461 | 462 | "@aws-cdk/cloudformation-diff@1.15.0": 463 | version "1.15.0" 464 | resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.15.0.tgz#462ba70c18474d234496dd72a1bb0faafa5144fb" 465 | integrity sha512-MBb2JSagVVxZJ7vmTuf/LzxyODklrv4+6kV8mtR/lMDwEM4TWv2DddOonPi0Z4MLpBl/5R1FOTrvPWqEcFbbBg== 466 | dependencies: 467 | "@aws-cdk/cfnspec" "1.15.0" 468 | "@aws-cdk/cx-api" "1.15.0" 469 | colors "^1.4.0" 470 | diff "^4.0.1" 471 | fast-deep-equal "^2.0.1" 472 | source-map-support "^0.5.13" 473 | string-width "^4.1.0" 474 | table "^5.4.6" 475 | 476 | "@aws-cdk/core@1.15.0": 477 | version "1.15.0" 478 | resolved "https://registry.yarnpkg.com/@aws-cdk/core/-/core-1.15.0.tgz#b14ac205b160a92218996101ef428c0053172e57" 479 | integrity sha512-3AIuxumb+6VAowGpSUc6s84WVJYHV1lVjECJWlvzvQP2ObPKq46HzoUnBoGKEf2IlG3l7zr2q1spFHRO+fmaZQ== 480 | dependencies: 481 | "@aws-cdk/cx-api" "1.15.0" 482 | 483 | "@aws-cdk/cx-api@1.15.0": 484 | version "1.15.0" 485 | resolved "https://registry.yarnpkg.com/@aws-cdk/cx-api/-/cx-api-1.15.0.tgz#641d9f6d6bd9343f2e465ea8dc2f47cec3ce5189" 486 | integrity sha512-VSR+OQ7x/mMiyXgiqREraSGs00v9W/h2jXW1jCIxfcWTBWAEAVvRE5dsR8CHf6NyH/+6pq5YN6rUzEpwyd2UCA== 487 | dependencies: 488 | semver "^6.3.0" 489 | 490 | "@aws-cdk/region-info@1.15.0": 491 | version "1.15.0" 492 | resolved "https://registry.yarnpkg.com/@aws-cdk/region-info/-/region-info-1.15.0.tgz#6c1605b13d6e1c39de01b0f8edcfa00d6e79b662" 493 | integrity sha512-mpWoUTbJd80uZ0sPoxdK3W4heyra8nO5Q6FrXtLPjvubCik/wCoLRpkZtb5bJdX/c582o8onscT1OFFAyF/8YA== 494 | 495 | "@babel/runtime-corejs2@^7.2.0": 496 | version "7.7.1" 497 | resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.7.1.tgz#ae94a96dbb020169344b857f12514e39bc3e3dcb" 498 | integrity sha512-nlxajcFXWFyrFOyzOkphfby2izqoB9B4a3+rMqG4dBKMaHZUUS3BkgFBIAbNK6s+VOx0vaGJVgaQL0+3oWnxDQ== 499 | dependencies: 500 | core-js "^2.6.5" 501 | regenerator-runtime "^0.13.2" 502 | 503 | "@babel/runtime@^7.6.3": 504 | version "7.7.1" 505 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.1.tgz#b223497bbfbcbbb38116673904debc71470ca528" 506 | integrity sha512-SQ0sS7KUJDvgCI2cpZG0nJygO6002oTbhgSuw4WcocsnbxLwL5Q8I3fqbJdyBAc3uFrWZiR2JomseuxSuci3SQ== 507 | dependencies: 508 | regenerator-runtime "^0.13.2" 509 | 510 | "@types/node@^8.9.4": 511 | version "8.10.58" 512 | resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.58.tgz#98c14ce95a634701bd2d59d52df882c0610dd0eb" 513 | integrity sha512-NNcUk/rAdR7Pie7WiA5NHp345dTkD62qaxqscQXVIjCjog/ZXsrG8Wo7dZMZAzE7PSpA+qR2S3TYTeFCKuBFxQ== 514 | 515 | agent-base@4, agent-base@^4.2.0, agent-base@^4.3.0: 516 | version "4.3.0" 517 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" 518 | integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== 519 | dependencies: 520 | es6-promisify "^5.0.0" 521 | 522 | agent-base@~4.2.1: 523 | version "4.2.1" 524 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" 525 | integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== 526 | dependencies: 527 | es6-promisify "^5.0.0" 528 | 529 | ajv@^6.10.2, ajv@^6.5.5: 530 | version "6.10.2" 531 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" 532 | integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== 533 | dependencies: 534 | fast-deep-equal "^2.0.1" 535 | fast-json-stable-stringify "^2.0.0" 536 | json-schema-traverse "^0.4.1" 537 | uri-js "^4.2.2" 538 | 539 | ansi-regex@^4.1.0: 540 | version "4.1.0" 541 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 542 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 543 | 544 | ansi-styles@^3.2.0: 545 | version "3.2.1" 546 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 547 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 548 | dependencies: 549 | color-convert "^1.9.0" 550 | 551 | archiver-utils@^2.1.0: 552 | version "2.1.0" 553 | resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" 554 | integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== 555 | dependencies: 556 | glob "^7.1.4" 557 | graceful-fs "^4.2.0" 558 | lazystream "^1.0.0" 559 | lodash.defaults "^4.2.0" 560 | lodash.difference "^4.5.0" 561 | lodash.flatten "^4.4.0" 562 | lodash.isplainobject "^4.0.6" 563 | lodash.union "^4.6.0" 564 | normalize-path "^3.0.0" 565 | readable-stream "^2.0.0" 566 | 567 | archiver@^3.1.1: 568 | version "3.1.1" 569 | resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" 570 | integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== 571 | dependencies: 572 | archiver-utils "^2.1.0" 573 | async "^2.6.3" 574 | buffer-crc32 "^0.2.1" 575 | glob "^7.1.4" 576 | readable-stream "^3.4.0" 577 | tar-stream "^2.1.0" 578 | zip-stream "^2.1.2" 579 | 580 | asn1@~0.2.3: 581 | version "0.2.4" 582 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 583 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 584 | dependencies: 585 | safer-buffer "~2.1.0" 586 | 587 | assert-plus@1.0.0, assert-plus@^1.0.0: 588 | version "1.0.0" 589 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 590 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 591 | 592 | ast-types@0.x.x: 593 | version "0.13.2" 594 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" 595 | integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== 596 | 597 | astral-regex@^1.0.0: 598 | version "1.0.0" 599 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 600 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 601 | 602 | async@^2.6.3: 603 | version "2.6.3" 604 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" 605 | integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== 606 | dependencies: 607 | lodash "^4.17.14" 608 | 609 | asynckit@^0.4.0: 610 | version "0.4.0" 611 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 612 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 613 | 614 | aws-cdk@1.15.0: 615 | version "1.15.0" 616 | resolved "https://registry.yarnpkg.com/aws-cdk/-/aws-cdk-1.15.0.tgz#c8f6af3f776b5675a0901551dfee17fcf67c6ac9" 617 | integrity sha512-o/vSVb7JKkZsj0vkaVhnpapZI+q2KUJQEcewwUQ09jaheb+VKnHTP9eLEQX8RyfuuilLrVinijlQAIk2WS7dNw== 618 | dependencies: 619 | "@aws-cdk/cloudformation-diff" "1.15.0" 620 | "@aws-cdk/cx-api" "1.15.0" 621 | "@aws-cdk/region-info" "1.15.0" 622 | archiver "^3.1.1" 623 | aws-sdk "^2.556.0" 624 | camelcase "^5.3.1" 625 | colors "^1.4.0" 626 | decamelize "^3.2.0" 627 | fs-extra "^8.1.0" 628 | glob "^7.1.4" 629 | json-diff "^0.5.4" 630 | minimatch ">=3.0" 631 | promptly "^3.0.3" 632 | proxy-agent "^3.1.1" 633 | request "^2.88.0" 634 | semver "^6.3.0" 635 | source-map-support "^0.5.13" 636 | table "^5.4.6" 637 | yaml "^1.7.2" 638 | yargs "^14.2.0" 639 | 640 | aws-sdk@^2.556.0: 641 | version "2.564.0" 642 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.564.0.tgz#d5fef5220436306c1c2f48487a3d631280a3d944" 643 | integrity sha512-X5MbcebjQ3iPNBvZ27WZyMEVCleBLqot2hqVz2M9XvMDR4B8qqPuteWrtbLu+DVjENvVD7Oj0BOIjrYEVWacFA== 644 | dependencies: 645 | buffer "^4.9.1" 646 | events "^1.1.1" 647 | ieee754 "^1.1.13" 648 | jmespath "^0.15.0" 649 | querystring "^0.2.0" 650 | sax "^1.2.1" 651 | url "^0.10.3" 652 | uuid "^3.3.2" 653 | xml2js "^0.4.19" 654 | 655 | aws-sign2@~0.7.0: 656 | version "0.7.0" 657 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 658 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 659 | 660 | aws4@^1.8.0: 661 | version "1.8.0" 662 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 663 | integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== 664 | 665 | balanced-match@^1.0.0: 666 | version "1.0.0" 667 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 668 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 669 | 670 | base64-js@^1.0.2: 671 | version "1.3.1" 672 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 673 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 674 | 675 | bcrypt-pbkdf@^1.0.0: 676 | version "1.0.2" 677 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 678 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 679 | dependencies: 680 | tweetnacl "^0.14.3" 681 | 682 | bl@^3.0.0: 683 | version "3.0.0" 684 | resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88" 685 | integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A== 686 | dependencies: 687 | readable-stream "^3.0.1" 688 | 689 | brace-expansion@^1.1.7: 690 | version "1.1.11" 691 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 692 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 693 | dependencies: 694 | balanced-match "^1.0.0" 695 | concat-map "0.0.1" 696 | 697 | buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: 698 | version "0.2.13" 699 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 700 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 701 | 702 | buffer-from@^1.0.0: 703 | version "1.1.1" 704 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 705 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 706 | 707 | buffer@^4.9.1: 708 | version "4.9.1" 709 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 710 | integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= 711 | dependencies: 712 | base64-js "^1.0.2" 713 | ieee754 "^1.1.4" 714 | isarray "^1.0.0" 715 | 716 | buffer@^5.1.0: 717 | version "5.4.3" 718 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" 719 | integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== 720 | dependencies: 721 | base64-js "^1.0.2" 722 | ieee754 "^1.1.4" 723 | 724 | bytes@3.1.0: 725 | version "3.1.0" 726 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 727 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 728 | 729 | camelcase@^5.0.0, camelcase@^5.3.1: 730 | version "5.3.1" 731 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 732 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 733 | 734 | caseless@~0.12.0: 735 | version "0.12.0" 736 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 737 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 738 | 739 | charenc@~0.0.1: 740 | version "0.0.2" 741 | resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" 742 | integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= 743 | 744 | cli-color@~0.1.6: 745 | version "0.1.7" 746 | resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-0.1.7.tgz#adc3200fa471cc211b0da7f566b71e98b9d67347" 747 | integrity sha1-rcMgD6RxzCEbDaf1ZrcemLnWc0c= 748 | dependencies: 749 | es5-ext "0.8.x" 750 | 751 | cliui@^5.0.0: 752 | version "5.0.0" 753 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 754 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 755 | dependencies: 756 | string-width "^3.1.0" 757 | strip-ansi "^5.2.0" 758 | wrap-ansi "^5.1.0" 759 | 760 | co@^4.6.0: 761 | version "4.6.0" 762 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 763 | integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= 764 | 765 | color-convert@^1.9.0: 766 | version "1.9.3" 767 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 768 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 769 | dependencies: 770 | color-name "1.1.3" 771 | 772 | color-name@1.1.3: 773 | version "1.1.3" 774 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 775 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 776 | 777 | colors@^1.4.0: 778 | version "1.4.0" 779 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" 780 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== 781 | 782 | combined-stream@^1.0.6, combined-stream@~1.0.6: 783 | version "1.0.8" 784 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 785 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 786 | dependencies: 787 | delayed-stream "~1.0.0" 788 | 789 | compress-commons@^2.1.1: 790 | version "2.1.1" 791 | resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" 792 | integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== 793 | dependencies: 794 | buffer-crc32 "^0.2.13" 795 | crc32-stream "^3.0.1" 796 | normalize-path "^3.0.0" 797 | readable-stream "^2.3.6" 798 | 799 | concat-map@0.0.1: 800 | version "0.0.1" 801 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 802 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 803 | 804 | core-js@^2.6.5: 805 | version "2.6.10" 806 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" 807 | integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== 808 | 809 | core-util-is@1.0.2, core-util-is@~1.0.0: 810 | version "1.0.2" 811 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 812 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 813 | 814 | crc32-stream@^3.0.1: 815 | version "3.0.1" 816 | resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" 817 | integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== 818 | dependencies: 819 | crc "^3.4.4" 820 | readable-stream "^3.4.0" 821 | 822 | crc@^3.4.4: 823 | version "3.8.0" 824 | resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" 825 | integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== 826 | dependencies: 827 | buffer "^5.1.0" 828 | 829 | crypt@~0.0.1: 830 | version "0.0.2" 831 | resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" 832 | integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= 833 | 834 | dashdash@^1.12.0: 835 | version "1.14.1" 836 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 837 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 838 | dependencies: 839 | assert-plus "^1.0.0" 840 | 841 | data-uri-to-buffer@1: 842 | version "1.2.0" 843 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" 844 | integrity sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ== 845 | 846 | debug@2: 847 | version "2.6.9" 848 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 849 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 850 | dependencies: 851 | ms "2.0.0" 852 | 853 | debug@3.1.0: 854 | version "3.1.0" 855 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 856 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 857 | dependencies: 858 | ms "2.0.0" 859 | 860 | debug@4, debug@^4.1.1: 861 | version "4.1.1" 862 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 863 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 864 | dependencies: 865 | ms "^2.1.1" 866 | 867 | debug@^3.1.0: 868 | version "3.2.6" 869 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 870 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 871 | dependencies: 872 | ms "^2.1.1" 873 | 874 | decamelize@^1.2.0: 875 | version "1.2.0" 876 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 877 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 878 | 879 | decamelize@^3.2.0: 880 | version "3.2.0" 881 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851" 882 | integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw== 883 | dependencies: 884 | xregexp "^4.2.4" 885 | 886 | deep-is@~0.1.3: 887 | version "0.1.3" 888 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 889 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 890 | 891 | define-properties@^1.1.2, define-properties@^1.1.3: 892 | version "1.1.3" 893 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 894 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 895 | dependencies: 896 | object-keys "^1.0.12" 897 | 898 | degenerator@^1.0.4: 899 | version "1.0.4" 900 | resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" 901 | integrity sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU= 902 | dependencies: 903 | ast-types "0.x.x" 904 | escodegen "1.x.x" 905 | esprima "3.x.x" 906 | 907 | delayed-stream@~1.0.0: 908 | version "1.0.0" 909 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 910 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 911 | 912 | depd@~1.1.2: 913 | version "1.1.2" 914 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 915 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 916 | 917 | diff@^4.0.1: 918 | version "4.0.1" 919 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" 920 | integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== 921 | 922 | difflib@~0.2.1: 923 | version "0.2.4" 924 | resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" 925 | integrity sha1-teMDYabbAjF21WKJLbhZQKcY9H4= 926 | dependencies: 927 | heap ">= 0.2.0" 928 | 929 | dreamopt@~0.6.0: 930 | version "0.6.0" 931 | resolved "https://registry.yarnpkg.com/dreamopt/-/dreamopt-0.6.0.tgz#d813ccdac8d39d8ad526775514a13dda664d6b4b" 932 | integrity sha1-2BPM2sjTnYrVJndVFKE92mZNa0s= 933 | dependencies: 934 | wordwrap ">=0.0.2" 935 | 936 | ecc-jsbn@~0.1.1: 937 | version "0.1.2" 938 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 939 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 940 | dependencies: 941 | jsbn "~0.1.0" 942 | safer-buffer "^2.1.0" 943 | 944 | emoji-regex@^7.0.1: 945 | version "7.0.3" 946 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 947 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 948 | 949 | emoji-regex@^8.0.0: 950 | version "8.0.0" 951 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 952 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 953 | 954 | end-of-stream@^1.4.1: 955 | version "1.4.4" 956 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 957 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 958 | dependencies: 959 | once "^1.4.0" 960 | 961 | es-abstract@^1.5.1: 962 | version "1.16.0" 963 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.0.tgz#d3a26dc9c3283ac9750dca569586e976d9dcc06d" 964 | integrity sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg== 965 | dependencies: 966 | es-to-primitive "^1.2.0" 967 | function-bind "^1.1.1" 968 | has "^1.0.3" 969 | has-symbols "^1.0.0" 970 | is-callable "^1.1.4" 971 | is-regex "^1.0.4" 972 | object-inspect "^1.6.0" 973 | object-keys "^1.1.1" 974 | string.prototype.trimleft "^2.1.0" 975 | string.prototype.trimright "^2.1.0" 976 | 977 | es-to-primitive@^1.2.0: 978 | version "1.2.0" 979 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" 980 | integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== 981 | dependencies: 982 | is-callable "^1.1.4" 983 | is-date-object "^1.0.1" 984 | is-symbol "^1.0.2" 985 | 986 | es5-ext@0.8.x: 987 | version "0.8.2" 988 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.8.2.tgz#aba8d9e1943a895ac96837a62a39b3f55ecd94ab" 989 | integrity sha1-q6jZ4ZQ6iVrJaDemKjmz9V7NlKs= 990 | 991 | es6-promise@^4.0.3: 992 | version "4.2.8" 993 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" 994 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 995 | 996 | es6-promisify@^5.0.0: 997 | version "5.0.0" 998 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 999 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 1000 | dependencies: 1001 | es6-promise "^4.0.3" 1002 | 1003 | escodegen@1.x.x: 1004 | version "1.12.0" 1005 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" 1006 | integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== 1007 | dependencies: 1008 | esprima "^3.1.3" 1009 | estraverse "^4.2.0" 1010 | esutils "^2.0.2" 1011 | optionator "^0.8.1" 1012 | optionalDependencies: 1013 | source-map "~0.6.1" 1014 | 1015 | esprima@3.x.x, esprima@^3.1.3: 1016 | version "3.1.3" 1017 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 1018 | integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= 1019 | 1020 | estraverse@^4.2.0: 1021 | version "4.3.0" 1022 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1023 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1024 | 1025 | esutils@^2.0.2: 1026 | version "2.0.3" 1027 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1028 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1029 | 1030 | events@^1.1.1: 1031 | version "1.1.1" 1032 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 1033 | integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= 1034 | 1035 | extend@~3.0.2: 1036 | version "3.0.2" 1037 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1038 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 1039 | 1040 | extsprintf@1.3.0: 1041 | version "1.3.0" 1042 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 1043 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 1044 | 1045 | extsprintf@^1.2.0: 1046 | version "1.4.0" 1047 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 1048 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 1049 | 1050 | fast-deep-equal@^2.0.1: 1051 | version "2.0.1" 1052 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 1053 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 1054 | 1055 | fast-json-stable-stringify@^2.0.0: 1056 | version "2.0.0" 1057 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 1058 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 1059 | 1060 | fast-levenshtein@~2.0.4: 1061 | version "2.0.6" 1062 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1063 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1064 | 1065 | file-uri-to-path@1: 1066 | version "1.0.0" 1067 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 1068 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 1069 | 1070 | find-up@^3.0.0: 1071 | version "3.0.0" 1072 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 1073 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 1074 | dependencies: 1075 | locate-path "^3.0.0" 1076 | 1077 | forever-agent@~0.6.1: 1078 | version "0.6.1" 1079 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1080 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 1081 | 1082 | form-data@~2.3.2: 1083 | version "2.3.3" 1084 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 1085 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 1086 | dependencies: 1087 | asynckit "^0.4.0" 1088 | combined-stream "^1.0.6" 1089 | mime-types "^2.1.12" 1090 | 1091 | fs-constants@^1.0.0: 1092 | version "1.0.0" 1093 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 1094 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 1095 | 1096 | fs-extra@^8.1.0: 1097 | version "8.1.0" 1098 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 1099 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 1100 | dependencies: 1101 | graceful-fs "^4.2.0" 1102 | jsonfile "^4.0.0" 1103 | universalify "^0.1.0" 1104 | 1105 | fs.realpath@^1.0.0: 1106 | version "1.0.0" 1107 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1108 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1109 | 1110 | ftp@~0.3.10: 1111 | version "0.3.10" 1112 | resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" 1113 | integrity sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0= 1114 | dependencies: 1115 | readable-stream "1.1.x" 1116 | xregexp "2.0.0" 1117 | 1118 | function-bind@^1.1.1: 1119 | version "1.1.1" 1120 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1121 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1122 | 1123 | get-caller-file@^2.0.1: 1124 | version "2.0.5" 1125 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1126 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1127 | 1128 | get-uri@^2.0.0: 1129 | version "2.0.4" 1130 | resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.4.tgz#d4937ab819e218d4cb5ae18e4f5962bef169cc6a" 1131 | integrity sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q== 1132 | dependencies: 1133 | data-uri-to-buffer "1" 1134 | debug "2" 1135 | extend "~3.0.2" 1136 | file-uri-to-path "1" 1137 | ftp "~0.3.10" 1138 | readable-stream "2" 1139 | 1140 | getpass@^0.1.1: 1141 | version "0.1.7" 1142 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1143 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 1144 | dependencies: 1145 | assert-plus "^1.0.0" 1146 | 1147 | glob@^7.1.4: 1148 | version "7.1.5" 1149 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" 1150 | integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== 1151 | dependencies: 1152 | fs.realpath "^1.0.0" 1153 | inflight "^1.0.4" 1154 | inherits "2" 1155 | minimatch "^3.0.4" 1156 | once "^1.3.0" 1157 | path-is-absolute "^1.0.0" 1158 | 1159 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 1160 | version "4.2.3" 1161 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 1162 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 1163 | 1164 | har-schema@^2.0.0: 1165 | version "2.0.0" 1166 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1167 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 1168 | 1169 | har-validator@~5.1.0: 1170 | version "5.1.3" 1171 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 1172 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 1173 | dependencies: 1174 | ajv "^6.5.5" 1175 | har-schema "^2.0.0" 1176 | 1177 | has-symbols@^1.0.0: 1178 | version "1.0.0" 1179 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" 1180 | integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= 1181 | 1182 | has@^1.0.1, has@^1.0.3: 1183 | version "1.0.3" 1184 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1185 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1186 | dependencies: 1187 | function-bind "^1.1.1" 1188 | 1189 | "heap@>= 0.2.0": 1190 | version "0.2.6" 1191 | resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" 1192 | integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= 1193 | 1194 | http-errors@1.7.3: 1195 | version "1.7.3" 1196 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 1197 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 1198 | dependencies: 1199 | depd "~1.1.2" 1200 | inherits "2.0.4" 1201 | setprototypeof "1.1.1" 1202 | statuses ">= 1.5.0 < 2" 1203 | toidentifier "1.0.0" 1204 | 1205 | http-proxy-agent@^2.1.0: 1206 | version "2.1.0" 1207 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" 1208 | integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== 1209 | dependencies: 1210 | agent-base "4" 1211 | debug "3.1.0" 1212 | 1213 | http-signature@~1.2.0: 1214 | version "1.2.0" 1215 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1216 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 1217 | dependencies: 1218 | assert-plus "^1.0.0" 1219 | jsprim "^1.2.2" 1220 | sshpk "^1.7.0" 1221 | 1222 | https-proxy-agent@^3.0.0: 1223 | version "3.0.1" 1224 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" 1225 | integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== 1226 | dependencies: 1227 | agent-base "^4.3.0" 1228 | debug "^3.1.0" 1229 | 1230 | iconv-lite@0.4.24: 1231 | version "0.4.24" 1232 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1233 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1234 | dependencies: 1235 | safer-buffer ">= 2.1.2 < 3" 1236 | 1237 | ieee754@^1.1.13, ieee754@^1.1.4: 1238 | version "1.1.13" 1239 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 1240 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 1241 | 1242 | inflight@^1.0.4: 1243 | version "1.0.6" 1244 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1245 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1246 | dependencies: 1247 | once "^1.3.0" 1248 | wrappy "1" 1249 | 1250 | inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: 1251 | version "2.0.4" 1252 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1253 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1254 | 1255 | ip@^1.1.5: 1256 | version "1.1.5" 1257 | resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" 1258 | integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= 1259 | 1260 | is-buffer@~1.1.1: 1261 | version "1.1.6" 1262 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1263 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1264 | 1265 | is-callable@^1.1.4: 1266 | version "1.1.4" 1267 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 1268 | integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== 1269 | 1270 | is-date-object@^1.0.1: 1271 | version "1.0.1" 1272 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1273 | integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= 1274 | 1275 | is-fullwidth-code-point@^2.0.0: 1276 | version "2.0.0" 1277 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1278 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1279 | 1280 | is-fullwidth-code-point@^3.0.0: 1281 | version "3.0.0" 1282 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1283 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1284 | 1285 | is-regex@^1.0.4: 1286 | version "1.0.4" 1287 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1288 | integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= 1289 | dependencies: 1290 | has "^1.0.1" 1291 | 1292 | is-symbol@^1.0.2: 1293 | version "1.0.2" 1294 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" 1295 | integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== 1296 | dependencies: 1297 | has-symbols "^1.0.0" 1298 | 1299 | is-typedarray@~1.0.0: 1300 | version "1.0.0" 1301 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1302 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1303 | 1304 | isarray@0.0.1: 1305 | version "0.0.1" 1306 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1307 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 1308 | 1309 | isarray@^1.0.0, isarray@~1.0.0: 1310 | version "1.0.0" 1311 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1312 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1313 | 1314 | isstream@~0.1.2: 1315 | version "0.1.2" 1316 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1317 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 1318 | 1319 | jmespath@^0.15.0: 1320 | version "0.15.0" 1321 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" 1322 | integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= 1323 | 1324 | jsbn@~0.1.0: 1325 | version "0.1.1" 1326 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1327 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 1328 | 1329 | json-diff@^0.5.4: 1330 | version "0.5.4" 1331 | resolved "https://registry.yarnpkg.com/json-diff/-/json-diff-0.5.4.tgz#7bc8198c441756632aab66c7d9189d365a7a035a" 1332 | integrity sha512-q5Xmx9QXNOzOzIlMoYtLrLiu4Jl/Ce2bn0CNcv54PhyH89CI4GWlGVDye8ei2Ijt9R3U+vsWPsXpLUNob8bs8Q== 1333 | dependencies: 1334 | cli-color "~0.1.6" 1335 | difflib "~0.2.1" 1336 | dreamopt "~0.6.0" 1337 | 1338 | json-schema-traverse@^0.4.1: 1339 | version "0.4.1" 1340 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1341 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1342 | 1343 | json-schema@0.2.3: 1344 | version "0.2.3" 1345 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1346 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 1347 | 1348 | json-stringify-safe@~5.0.1: 1349 | version "5.0.1" 1350 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1351 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1352 | 1353 | jsonfile@^4.0.0: 1354 | version "4.0.0" 1355 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1356 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 1357 | optionalDependencies: 1358 | graceful-fs "^4.1.6" 1359 | 1360 | jsprim@^1.2.2: 1361 | version "1.4.1" 1362 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1363 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 1364 | dependencies: 1365 | assert-plus "1.0.0" 1366 | extsprintf "1.3.0" 1367 | json-schema "0.2.3" 1368 | verror "1.10.0" 1369 | 1370 | lazystream@^1.0.0: 1371 | version "1.0.0" 1372 | resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" 1373 | integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= 1374 | dependencies: 1375 | readable-stream "^2.0.5" 1376 | 1377 | levn@~0.3.0: 1378 | version "0.3.0" 1379 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1380 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1381 | dependencies: 1382 | prelude-ls "~1.1.2" 1383 | type-check "~0.3.2" 1384 | 1385 | locate-path@^3.0.0: 1386 | version "3.0.0" 1387 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1388 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1389 | dependencies: 1390 | p-locate "^3.0.0" 1391 | path-exists "^3.0.0" 1392 | 1393 | lodash.defaults@^4.2.0: 1394 | version "4.2.0" 1395 | resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" 1396 | integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= 1397 | 1398 | lodash.difference@^4.5.0: 1399 | version "4.5.0" 1400 | resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" 1401 | integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= 1402 | 1403 | lodash.flatten@^4.4.0: 1404 | version "4.4.0" 1405 | resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" 1406 | integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= 1407 | 1408 | lodash.isplainobject@^4.0.6: 1409 | version "4.0.6" 1410 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 1411 | integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= 1412 | 1413 | lodash.union@^4.6.0: 1414 | version "4.6.0" 1415 | resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" 1416 | integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= 1417 | 1418 | lodash@^4.17.14: 1419 | version "4.17.15" 1420 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1421 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1422 | 1423 | lru-cache@^5.1.1: 1424 | version "5.1.1" 1425 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 1426 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1427 | dependencies: 1428 | yallist "^3.0.2" 1429 | 1430 | md5@^2.2.1: 1431 | version "2.2.1" 1432 | resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" 1433 | integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= 1434 | dependencies: 1435 | charenc "~0.0.1" 1436 | crypt "~0.0.1" 1437 | is-buffer "~1.1.1" 1438 | 1439 | mime-db@1.40.0: 1440 | version "1.40.0" 1441 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" 1442 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== 1443 | 1444 | mime-types@^2.1.12, mime-types@~2.1.19: 1445 | version "2.1.24" 1446 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" 1447 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== 1448 | dependencies: 1449 | mime-db "1.40.0" 1450 | 1451 | minimatch@>=3.0, minimatch@^3.0.4: 1452 | version "3.0.4" 1453 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1454 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1455 | dependencies: 1456 | brace-expansion "^1.1.7" 1457 | 1458 | ms@2.0.0: 1459 | version "2.0.0" 1460 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1461 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1462 | 1463 | ms@^2.1.1: 1464 | version "2.1.2" 1465 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1466 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1467 | 1468 | mute-stream@~0.0.4: 1469 | version "0.0.8" 1470 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1471 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 1472 | 1473 | netmask@^1.0.6: 1474 | version "1.0.6" 1475 | resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" 1476 | integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU= 1477 | 1478 | normalize-path@^3.0.0: 1479 | version "3.0.0" 1480 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1481 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1482 | 1483 | oauth-sign@~0.9.0: 1484 | version "0.9.0" 1485 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 1486 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 1487 | 1488 | object-inspect@^1.6.0: 1489 | version "1.6.0" 1490 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" 1491 | integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== 1492 | 1493 | object-keys@^1.0.12, object-keys@^1.1.1: 1494 | version "1.1.1" 1495 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1496 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1497 | 1498 | object.getownpropertydescriptors@^2.0.3: 1499 | version "2.0.3" 1500 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" 1501 | integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= 1502 | dependencies: 1503 | define-properties "^1.1.2" 1504 | es-abstract "^1.5.1" 1505 | 1506 | once@^1.3.0, once@^1.4.0: 1507 | version "1.4.0" 1508 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1509 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1510 | dependencies: 1511 | wrappy "1" 1512 | 1513 | optionator@^0.8.1: 1514 | version "0.8.2" 1515 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1516 | integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= 1517 | dependencies: 1518 | deep-is "~0.1.3" 1519 | fast-levenshtein "~2.0.4" 1520 | levn "~0.3.0" 1521 | prelude-ls "~1.1.2" 1522 | type-check "~0.3.2" 1523 | wordwrap "~1.0.0" 1524 | 1525 | p-limit@^2.0.0: 1526 | version "2.2.1" 1527 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" 1528 | integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== 1529 | dependencies: 1530 | p-try "^2.0.0" 1531 | 1532 | p-locate@^3.0.0: 1533 | version "3.0.0" 1534 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1535 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1536 | dependencies: 1537 | p-limit "^2.0.0" 1538 | 1539 | p-try@^2.0.0: 1540 | version "2.2.0" 1541 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1542 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1543 | 1544 | pac-proxy-agent@^3.0.1: 1545 | version "3.0.1" 1546 | resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz#115b1e58f92576cac2eba718593ca7b0e37de2ad" 1547 | integrity sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ== 1548 | dependencies: 1549 | agent-base "^4.2.0" 1550 | debug "^4.1.1" 1551 | get-uri "^2.0.0" 1552 | http-proxy-agent "^2.1.0" 1553 | https-proxy-agent "^3.0.0" 1554 | pac-resolver "^3.0.0" 1555 | raw-body "^2.2.0" 1556 | socks-proxy-agent "^4.0.1" 1557 | 1558 | pac-resolver@^3.0.0: 1559 | version "3.0.0" 1560 | resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" 1561 | integrity sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA== 1562 | dependencies: 1563 | co "^4.6.0" 1564 | degenerator "^1.0.4" 1565 | ip "^1.1.5" 1566 | netmask "^1.0.6" 1567 | thunkify "^2.1.2" 1568 | 1569 | path-exists@^3.0.0: 1570 | version "3.0.0" 1571 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1572 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1573 | 1574 | path-is-absolute@^1.0.0: 1575 | version "1.0.1" 1576 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1577 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1578 | 1579 | performance-now@^2.1.0: 1580 | version "2.1.0" 1581 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1582 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 1583 | 1584 | pify@^3.0.0: 1585 | version "3.0.0" 1586 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1587 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1588 | 1589 | prelude-ls@~1.1.2: 1590 | version "1.1.2" 1591 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1592 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 1593 | 1594 | process-nextick-args@~2.0.0: 1595 | version "2.0.1" 1596 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1597 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1598 | 1599 | promptly@^3.0.3: 1600 | version "3.0.3" 1601 | resolved "https://registry.yarnpkg.com/promptly/-/promptly-3.0.3.tgz#e178f722e73d82c60d019462044bccfdd9872f42" 1602 | integrity sha512-EWnzOsxVKUjqKeE6SStH1/cO4+DE44QolaoJ4ojGd9z6pcNkpgfJKr1ncwxrOFHSTIzoudo7jG8y0re30/LO1g== 1603 | dependencies: 1604 | pify "^3.0.0" 1605 | read "^1.0.4" 1606 | 1607 | proxy-agent@^3.1.1: 1608 | version "3.1.1" 1609 | resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.1.1.tgz#7e04e06bf36afa624a1540be247b47c970bd3014" 1610 | integrity sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw== 1611 | dependencies: 1612 | agent-base "^4.2.0" 1613 | debug "4" 1614 | http-proxy-agent "^2.1.0" 1615 | https-proxy-agent "^3.0.0" 1616 | lru-cache "^5.1.1" 1617 | pac-proxy-agent "^3.0.1" 1618 | proxy-from-env "^1.0.0" 1619 | socks-proxy-agent "^4.0.1" 1620 | 1621 | proxy-from-env@^1.0.0: 1622 | version "1.0.0" 1623 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" 1624 | integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= 1625 | 1626 | psl@^1.1.24: 1627 | version "1.4.0" 1628 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" 1629 | integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== 1630 | 1631 | punycode@1.3.2: 1632 | version "1.3.2" 1633 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1634 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 1635 | 1636 | punycode@^1.4.1: 1637 | version "1.4.1" 1638 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1639 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 1640 | 1641 | punycode@^2.1.0: 1642 | version "2.1.1" 1643 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1644 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1645 | 1646 | qs@~6.5.2: 1647 | version "6.5.2" 1648 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1649 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 1650 | 1651 | querystring@0.2.0, querystring@^0.2.0: 1652 | version "0.2.0" 1653 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1654 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1655 | 1656 | raw-body@^2.2.0: 1657 | version "2.4.1" 1658 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" 1659 | integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== 1660 | dependencies: 1661 | bytes "3.1.0" 1662 | http-errors "1.7.3" 1663 | iconv-lite "0.4.24" 1664 | unpipe "1.0.0" 1665 | 1666 | read@^1.0.4: 1667 | version "1.0.7" 1668 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 1669 | integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= 1670 | dependencies: 1671 | mute-stream "~0.0.4" 1672 | 1673 | readable-stream@1.1.x: 1674 | version "1.1.14" 1675 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 1676 | integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= 1677 | dependencies: 1678 | core-util-is "~1.0.0" 1679 | inherits "~2.0.1" 1680 | isarray "0.0.1" 1681 | string_decoder "~0.10.x" 1682 | 1683 | readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.6: 1684 | version "2.3.6" 1685 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 1686 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 1687 | dependencies: 1688 | core-util-is "~1.0.0" 1689 | inherits "~2.0.3" 1690 | isarray "~1.0.0" 1691 | process-nextick-args "~2.0.0" 1692 | safe-buffer "~5.1.1" 1693 | string_decoder "~1.1.1" 1694 | util-deprecate "~1.0.1" 1695 | 1696 | readable-stream@^3.0.1, readable-stream@^3.1.1, readable-stream@^3.4.0: 1697 | version "3.4.0" 1698 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" 1699 | integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== 1700 | dependencies: 1701 | inherits "^2.0.3" 1702 | string_decoder "^1.1.1" 1703 | util-deprecate "^1.0.1" 1704 | 1705 | regenerator-runtime@^0.13.2: 1706 | version "0.13.3" 1707 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" 1708 | integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== 1709 | 1710 | request@^2.88.0: 1711 | version "2.88.0" 1712 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 1713 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== 1714 | dependencies: 1715 | aws-sign2 "~0.7.0" 1716 | aws4 "^1.8.0" 1717 | caseless "~0.12.0" 1718 | combined-stream "~1.0.6" 1719 | extend "~3.0.2" 1720 | forever-agent "~0.6.1" 1721 | form-data "~2.3.2" 1722 | har-validator "~5.1.0" 1723 | http-signature "~1.2.0" 1724 | is-typedarray "~1.0.0" 1725 | isstream "~0.1.2" 1726 | json-stringify-safe "~5.0.1" 1727 | mime-types "~2.1.19" 1728 | oauth-sign "~0.9.0" 1729 | performance-now "^2.1.0" 1730 | qs "~6.5.2" 1731 | safe-buffer "^5.1.2" 1732 | tough-cookie "~2.4.3" 1733 | tunnel-agent "^0.6.0" 1734 | uuid "^3.3.2" 1735 | 1736 | require-directory@^2.1.1: 1737 | version "2.1.1" 1738 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1739 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1740 | 1741 | require-main-filename@^2.0.0: 1742 | version "2.0.0" 1743 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1744 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1745 | 1746 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: 1747 | version "5.2.0" 1748 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 1749 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 1750 | 1751 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1752 | version "5.1.2" 1753 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1754 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1755 | 1756 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 1757 | version "2.1.2" 1758 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1759 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1760 | 1761 | sax@>=0.6.0, sax@^1.2.1: 1762 | version "1.2.4" 1763 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1764 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1765 | 1766 | semver@^6.3.0: 1767 | version "6.3.0" 1768 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1769 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1770 | 1771 | set-blocking@^2.0.0: 1772 | version "2.0.0" 1773 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1774 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1775 | 1776 | setprototypeof@1.1.1: 1777 | version "1.1.1" 1778 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1779 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1780 | 1781 | slice-ansi@^2.1.0: 1782 | version "2.1.0" 1783 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1784 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 1785 | dependencies: 1786 | ansi-styles "^3.2.0" 1787 | astral-regex "^1.0.0" 1788 | is-fullwidth-code-point "^2.0.0" 1789 | 1790 | smart-buffer@4.0.2: 1791 | version "4.0.2" 1792 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" 1793 | integrity sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw== 1794 | 1795 | socks-proxy-agent@^4.0.1: 1796 | version "4.0.2" 1797 | resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" 1798 | integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== 1799 | dependencies: 1800 | agent-base "~4.2.1" 1801 | socks "~2.3.2" 1802 | 1803 | socks@~2.3.2: 1804 | version "2.3.2" 1805 | resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" 1806 | integrity sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ== 1807 | dependencies: 1808 | ip "^1.1.5" 1809 | smart-buffer "4.0.2" 1810 | 1811 | source-map-support@^0.5.13: 1812 | version "0.5.16" 1813 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" 1814 | integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== 1815 | dependencies: 1816 | buffer-from "^1.0.0" 1817 | source-map "^0.6.0" 1818 | 1819 | source-map@^0.6.0, source-map@~0.6.1: 1820 | version "0.6.1" 1821 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1822 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1823 | 1824 | sshpk@^1.7.0: 1825 | version "1.16.1" 1826 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 1827 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 1828 | dependencies: 1829 | asn1 "~0.2.3" 1830 | assert-plus "^1.0.0" 1831 | bcrypt-pbkdf "^1.0.0" 1832 | dashdash "^1.12.0" 1833 | ecc-jsbn "~0.1.1" 1834 | getpass "^0.1.1" 1835 | jsbn "~0.1.0" 1836 | safer-buffer "^2.0.2" 1837 | tweetnacl "~0.14.0" 1838 | 1839 | "statuses@>= 1.5.0 < 2": 1840 | version "1.5.0" 1841 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1842 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1843 | 1844 | string-width@^3.0.0, string-width@^3.1.0: 1845 | version "3.1.0" 1846 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1847 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1848 | dependencies: 1849 | emoji-regex "^7.0.1" 1850 | is-fullwidth-code-point "^2.0.0" 1851 | strip-ansi "^5.1.0" 1852 | 1853 | string-width@^4.1.0: 1854 | version "4.1.0" 1855 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" 1856 | integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== 1857 | dependencies: 1858 | emoji-regex "^8.0.0" 1859 | is-fullwidth-code-point "^3.0.0" 1860 | strip-ansi "^5.2.0" 1861 | 1862 | string.prototype.trimleft@^2.1.0: 1863 | version "2.1.0" 1864 | resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" 1865 | integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== 1866 | dependencies: 1867 | define-properties "^1.1.3" 1868 | function-bind "^1.1.1" 1869 | 1870 | string.prototype.trimright@^2.1.0: 1871 | version "2.1.0" 1872 | resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" 1873 | integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== 1874 | dependencies: 1875 | define-properties "^1.1.3" 1876 | function-bind "^1.1.1" 1877 | 1878 | string_decoder@^1.1.1: 1879 | version "1.3.0" 1880 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1881 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1882 | dependencies: 1883 | safe-buffer "~5.2.0" 1884 | 1885 | string_decoder@~0.10.x: 1886 | version "0.10.31" 1887 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 1888 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= 1889 | 1890 | string_decoder@~1.1.1: 1891 | version "1.1.1" 1892 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1893 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1894 | dependencies: 1895 | safe-buffer "~5.1.0" 1896 | 1897 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1898 | version "5.2.0" 1899 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1900 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1901 | dependencies: 1902 | ansi-regex "^4.1.0" 1903 | 1904 | table@^5.4.6: 1905 | version "5.4.6" 1906 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1907 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1908 | dependencies: 1909 | ajv "^6.10.2" 1910 | lodash "^4.17.14" 1911 | slice-ansi "^2.1.0" 1912 | string-width "^3.0.0" 1913 | 1914 | tar-stream@^2.1.0: 1915 | version "2.1.0" 1916 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" 1917 | integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw== 1918 | dependencies: 1919 | bl "^3.0.0" 1920 | end-of-stream "^1.4.1" 1921 | fs-constants "^1.0.0" 1922 | inherits "^2.0.3" 1923 | readable-stream "^3.1.1" 1924 | 1925 | thunkify@^2.1.2: 1926 | version "2.1.2" 1927 | resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" 1928 | integrity sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0= 1929 | 1930 | toidentifier@1.0.0: 1931 | version "1.0.0" 1932 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1933 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1934 | 1935 | tough-cookie@~2.4.3: 1936 | version "2.4.3" 1937 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 1938 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== 1939 | dependencies: 1940 | psl "^1.1.24" 1941 | punycode "^1.4.1" 1942 | 1943 | tunnel-agent@^0.6.0: 1944 | version "0.6.0" 1945 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1946 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1947 | dependencies: 1948 | safe-buffer "^5.0.1" 1949 | 1950 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1951 | version "0.14.5" 1952 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1953 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 1954 | 1955 | type-check@~0.3.2: 1956 | version "0.3.2" 1957 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1958 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 1959 | dependencies: 1960 | prelude-ls "~1.1.2" 1961 | 1962 | typescript@3.1.2: 1963 | version "3.1.2" 1964 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.2.tgz#c03a5d16f30bb60ad8bb6fe8e7cb212eedeec950" 1965 | integrity sha512-gOoGJWbNnFAfP9FlrSV63LYD5DJqYJHG5ky1kOXSl3pCImn4rqWy/flyq1BRd4iChQsoCqjbQaqtmXO4yCVPCA== 1966 | 1967 | universalify@^0.1.0: 1968 | version "0.1.2" 1969 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1970 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1971 | 1972 | unpipe@1.0.0: 1973 | version "1.0.0" 1974 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1975 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1976 | 1977 | uri-js@^4.2.2: 1978 | version "4.2.2" 1979 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1980 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1981 | dependencies: 1982 | punycode "^2.1.0" 1983 | 1984 | url@^0.10.3: 1985 | version "0.10.3" 1986 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" 1987 | integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= 1988 | dependencies: 1989 | punycode "1.3.2" 1990 | querystring "0.2.0" 1991 | 1992 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 1993 | version "1.0.2" 1994 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1995 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1996 | 1997 | util.promisify@~1.0.0: 1998 | version "1.0.0" 1999 | resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" 2000 | integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== 2001 | dependencies: 2002 | define-properties "^1.1.2" 2003 | object.getownpropertydescriptors "^2.0.3" 2004 | 2005 | uuid@^3.3.2: 2006 | version "3.3.3" 2007 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" 2008 | integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== 2009 | 2010 | verror@1.10.0: 2011 | version "1.10.0" 2012 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2013 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 2014 | dependencies: 2015 | assert-plus "^1.0.0" 2016 | core-util-is "1.0.2" 2017 | extsprintf "^1.2.0" 2018 | 2019 | which-module@^2.0.0: 2020 | version "2.0.0" 2021 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 2022 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 2023 | 2024 | wordwrap@>=0.0.2, wordwrap@~1.0.0: 2025 | version "1.0.0" 2026 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2027 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 2028 | 2029 | wrap-ansi@^5.1.0: 2030 | version "5.1.0" 2031 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 2032 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 2033 | dependencies: 2034 | ansi-styles "^3.2.0" 2035 | string-width "^3.0.0" 2036 | strip-ansi "^5.0.0" 2037 | 2038 | wrappy@1: 2039 | version "1.0.2" 2040 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2041 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2042 | 2043 | xml2js@^0.4.19: 2044 | version "0.4.22" 2045 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.22.tgz#4fa2d846ec803237de86f30aa9b5f70b6600de02" 2046 | integrity sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw== 2047 | dependencies: 2048 | sax ">=0.6.0" 2049 | util.promisify "~1.0.0" 2050 | xmlbuilder "~11.0.0" 2051 | 2052 | xmlbuilder@~11.0.0: 2053 | version "11.0.1" 2054 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 2055 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 2056 | 2057 | xregexp@2.0.0: 2058 | version "2.0.0" 2059 | resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" 2060 | integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= 2061 | 2062 | xregexp@^4.2.4: 2063 | version "4.2.4" 2064 | resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.2.4.tgz#02a4aea056d65a42632c02f0233eab8e4d7e57ed" 2065 | integrity sha512-sO0bYdYeJAJBcJA8g7MJJX7UrOZIfJPd8U2SC7B2Dd/J24U0aQNoGp33shCaBSWeb0rD5rh6VBUIXOkGal1TZA== 2066 | dependencies: 2067 | "@babel/runtime-corejs2" "^7.2.0" 2068 | 2069 | y18n@^4.0.0: 2070 | version "4.0.0" 2071 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 2072 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 2073 | 2074 | yallist@^3.0.2: 2075 | version "3.1.1" 2076 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 2077 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 2078 | 2079 | yaml@^1.7.2: 2080 | version "1.7.2" 2081 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" 2082 | integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== 2083 | dependencies: 2084 | "@babel/runtime" "^7.6.3" 2085 | 2086 | yargs-parser@^15.0.0: 2087 | version "15.0.0" 2088 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" 2089 | integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== 2090 | dependencies: 2091 | camelcase "^5.0.0" 2092 | decamelize "^1.2.0" 2093 | 2094 | yargs@^14.2.0: 2095 | version "14.2.0" 2096 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" 2097 | integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg== 2098 | dependencies: 2099 | cliui "^5.0.0" 2100 | decamelize "^1.2.0" 2101 | find-up "^3.0.0" 2102 | get-caller-file "^2.0.1" 2103 | require-directory "^2.1.1" 2104 | require-main-filename "^2.0.0" 2105 | set-blocking "^2.0.0" 2106 | string-width "^3.0.0" 2107 | which-module "^2.0.0" 2108 | y18n "^4.0.0" 2109 | yargs-parser "^15.0.0" 2110 | 2111 | zip-stream@^2.1.2: 2112 | version "2.1.2" 2113 | resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.2.tgz#841efd23214b602ff49c497cba1a85d8b5fbc39c" 2114 | integrity sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg== 2115 | dependencies: 2116 | archiver-utils "^2.1.0" 2117 | compress-commons "^2.1.1" 2118 | readable-stream "^3.4.0" 2119 | --------------------------------------------------------------------------------