From 8d5bef140f8fadf2d8ddf13767a6433ca4835b49 Mon Sep 17 00:00:00 2001 From: ShiKhu Date: Mon, 3 May 2021 17:17:26 +0200 Subject: [PATCH 1/7] feat: init sourcemap-uploader --- sourcemap-uploader/.eslintrc.json | 26 + sourcemap-uploader/.gitignore | 3 + sourcemap-uploader/.npmignore | 2 + sourcemap-uploader/LICENSE | 19 + sourcemap-uploader/README.md | 34 + sourcemap-uploader/cli.js | 68 ++ sourcemap-uploader/index.js | 14 + sourcemap-uploader/lib/readDir.js | 17 + sourcemap-uploader/lib/readFile.js | 6 + sourcemap-uploader/lib/uploadSourcemaps.js | 68 ++ sourcemap-uploader/package-lock.json | 1091 ++++++++++++++++++++ sourcemap-uploader/package.json | 25 + 12 files changed, 1373 insertions(+) create mode 100644 sourcemap-uploader/.eslintrc.json create mode 100644 sourcemap-uploader/.gitignore create mode 100644 sourcemap-uploader/.npmignore create mode 100644 sourcemap-uploader/LICENSE create mode 100644 sourcemap-uploader/README.md create mode 100755 sourcemap-uploader/cli.js create mode 100644 sourcemap-uploader/index.js create mode 100644 sourcemap-uploader/lib/readDir.js create mode 100644 sourcemap-uploader/lib/readFile.js create mode 100644 sourcemap-uploader/lib/uploadSourcemaps.js create mode 100644 sourcemap-uploader/package-lock.json create mode 100644 sourcemap-uploader/package.json diff --git a/sourcemap-uploader/.eslintrc.json b/sourcemap-uploader/.eslintrc.json new file mode 100644 index 000000000..fb4d5e7ee --- /dev/null +++ b/sourcemap-uploader/.eslintrc.json @@ -0,0 +1,26 @@ +{ + "root": true, + "parserOptions": { + "ecmaVersion": 2018 + }, + "globals": { + "require": true, + "module": true, + "console": true, + "Promise": true, + "Buffer": true + }, + "plugins": [ + "prettier" + ], + "extends": [ + "eslint:recommended", + "plugin:prettier/recommended" + ], + "rules": { + "prettier/prettier": ["error", { + "singleQuote": true, + "trailingComma": "all" + }] + } +} diff --git a/sourcemap-uploader/.gitignore b/sourcemap-uploader/.gitignore new file mode 100644 index 000000000..d8bd84667 --- /dev/null +++ b/sourcemap-uploader/.gitignore @@ -0,0 +1,3 @@ +node_modules +npm-debug.log +.cache diff --git a/sourcemap-uploader/.npmignore b/sourcemap-uploader/.npmignore new file mode 100644 index 000000000..4efdcad21 --- /dev/null +++ b/sourcemap-uploader/.npmignore @@ -0,0 +1,2 @@ +.eslintrc.js +.cache diff --git a/sourcemap-uploader/LICENSE b/sourcemap-uploader/LICENSE new file mode 100644 index 000000000..b57f138e0 --- /dev/null +++ b/sourcemap-uploader/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2021 OpenReplay.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sourcemap-uploader/README.md b/sourcemap-uploader/README.md new file mode 100644 index 000000000..7e1fb5970 --- /dev/null +++ b/sourcemap-uploader/README.md @@ -0,0 +1,34 @@ +# sourcemaps-uploader + +A NPM module to upload your JS sourcemaps files to [OpenReplay](https://openreplay.com/). + +## Installation + +``` +npm i @openreplay/sourcemap-uploader -D +``` + +## CLI + +Upload sourcemap for one file + +``` +sourcemap-uploader -k API_KEY -p PROJECT_KEY file -m ./dist/index.js.map -u https://openreplay.com/index.js +``` + +Upload all sourcemaps in the directory. The path will be appended to the base url + +``` +sourcemap-uploader -k API_KEY -p PROJECT_KEY dir -m ./dist -u https://openreplay.com/ +``` + +## NPM + +There are two functions inside `index.js` of the package + +``` +uploadFile(api_key, project_key, sourcemap_file_path, js_file_url) +uploadDir(api_key, project_key, sourcemap_dir_path, js_dir_url) +``` + +Both functions return Promise. diff --git a/sourcemap-uploader/cli.js b/sourcemap-uploader/cli.js new file mode 100755 index 000000000..bdd227e82 --- /dev/null +++ b/sourcemap-uploader/cli.js @@ -0,0 +1,68 @@ +#!/usr/bin/env node +'use strict'; + +const { ArgumentParser } = require('argparse'); +const { version, description } = require('./package.json'); + +const { uploadFile, uploadDir } = require('./index.js'); + +const parser = new ArgumentParser({ + version, + description, +}); +parser.addArgument(['-k', '--api-key'], { + help: 'API key', + required: true, +}); +parser.addArgument(['-p', '-i', '--project-key'], { // -i is depricated + help: 'Project Key', + required: true, +}); + +parser.addArgument(['-s', '--server'], { + help: 'OpenReplay API server URL for upload', +}); + +const subparsers = parser.addSubparsers({ + title: 'commands', + dest: 'command', +}); + +const file = subparsers.addParser('file'); +file.addArgument(['-m', '--sourcemap-file-path'], { + help: 'Local path to the sourcemap file', + required: true, +}); +file.addArgument(['-u', '--js-file-url'], { + help: 'URL to the minified js file', + required: true, +}); + +const dir = subparsers.addParser('dir'); +dir.addArgument(['-m', '--sourcemap-dir-path'], { + help: 'Dir with the sourcemap files', + required: true, +}); +dir.addArgument(['-u', '--js-dir-url'], { + help: 'Base URL where the corresponding dir will be placed', + required: true, +}); + +const { command, api_key, project_key, server, ...args } = parser.parseArgs(); + +try { + global.SERVER = new URL(server || "https://api.openreplay.com"); +} catch (e) { + console.error(`Sourcemap Uploader: server URL parse error. ${e}`) +} + +(command === 'file' + ? uploadFile(api_key, project_key, args.sourcemap_file_path, args.js_file_url) + : uploadDir(api_key, project_key, args.sourcemap_dir_path, args.js_dir_url) +) +.then((uploadedFiles) => + console.log(`Sourcemap${uploadedFiles.length > 1 ? "s" : ""} successfully uploaded! (${uploadedFiles.length} files)\n` + + uploadedFiles.join("\t\n") + ) +) +.catch(e => console.error(`Sourcemap Uploader: ${e}`)); diff --git a/sourcemap-uploader/index.js b/sourcemap-uploader/index.js new file mode 100644 index 000000000..ad16b9ccd --- /dev/null +++ b/sourcemap-uploader/index.js @@ -0,0 +1,14 @@ +const readFile = require('./lib/readFile.js'), + readDir = require('./lib/readDir.js'), + uploadSourcemaps = require('./lib/uploadSourcemaps.js'); + +module.exports = { + async uploadFile(api_key, project_key, sourcemap_file_path, js_file_url) { + const sourcemap = await readFile(sourcemap_file_path, js_file_url); + return uploadSourcemaps(api_key, project_key, [sourcemap]); + }, + async uploadDir(api_key, project_key, sourcemap_dir_path, js_dir_url) { + const sourcemaps = await readDir(sourcemap_dir_path, js_dir_url); + return uploadSourcemaps(api_key, project_key, sourcemaps); + }, +}; diff --git a/sourcemap-uploader/lib/readDir.js b/sourcemap-uploader/lib/readDir.js new file mode 100644 index 000000000..56a51a72b --- /dev/null +++ b/sourcemap-uploader/lib/readDir.js @@ -0,0 +1,17 @@ +const glob = require('glob-promise'); +const readFile = require('./readFile'); + +module.exports = (sourcemap_dir_path, js_dir_url) => { + sourcemap_dir_path = (sourcemap_dir_path + '/').replace(/\/+/g, '/'); + js_dir_url = (js_dir_url + '/').replace(/\/+/g, '/'); + return glob(sourcemap_dir_path + '**/*.map').then(sourcemap_file_paths => + Promise.all( + sourcemap_file_paths.map(sourcemap_file_path => + readFile( + sourcemap_file_path, + js_dir_url + sourcemap_file_path.slice(sourcemap_dir_path.length, -4), + ), + ), + ), + ); +}; diff --git a/sourcemap-uploader/lib/readFile.js b/sourcemap-uploader/lib/readFile.js new file mode 100644 index 000000000..67cec2f82 --- /dev/null +++ b/sourcemap-uploader/lib/readFile.js @@ -0,0 +1,6 @@ +const fs = require('fs').promises; + +module.exports = (sourcemap_file_path, js_file_url) => + fs.readFile(sourcemap_file_path, 'utf8').then(body => { + return { sourcemap_file_path, js_file_url, body }; + }); diff --git a/sourcemap-uploader/lib/uploadSourcemaps.js b/sourcemap-uploader/lib/uploadSourcemaps.js new file mode 100644 index 000000000..4199d2e30 --- /dev/null +++ b/sourcemap-uploader/lib/uploadSourcemaps.js @@ -0,0 +1,68 @@ +const https = require('https'); + +const getUploadURLs = (api_key, project_key, js_file_urls) => + new Promise((resolve, reject) => { + const pathPrefix = (global.SERVER.pathname + "/").replace(/\/+/g, '/'); + const req = https.request( + { + method: 'PUT', + hostname: global.SERVER.host, + path: pathPrefix + `${project_key}/sourcemaps/`, + headers: { Authorization: api_key, 'Content-Type': 'application/json' }, + }, + res => { + if (res.statusCode === 403) { + reject("Authorisation rejected. Please, check your API_KEY and/or PROJECT_KEY.") + return + } else if (res.statusCode !== 200) { + reject("Server Error. Please, contact OpenReplay support."); + return; + } + let data = ''; + res.on('data', s => (data += s)); + res.on('end', () => resolve(JSON.parse(data).data)); + }, + ); + req.on('error', reject); + req.write(JSON.stringify({ URL: js_file_urls })); + req.end(); + }); + +const uploadSourcemap = (upload_url, sourcemap) => + new Promise((resolve, reject) => { + body = Buffer.from(JSON.stringify(sourcemap.body)); + const req = https.request( + upload_url, + { + method: 'PUT', + headers: { + 'Content-Length': body.length, + 'Content-Type': 'application/json', + }, + }, + res => { + if (res.statusCode !== 200) { + reject("Unable to upload. Please, contact OpenReplay support."); + return; + } + resolve(sourcemap.sourcemap_file_path) + //res.on('end', resolve); + }, + ); + req.on('error', reject); + req.write(body); + req.end(); + }); + +module.exports = (api_key, project_key, sourcemaps) => + getUploadURLs( + api_key, + project_key, + sourcemaps.map(({ js_file_url }) => js_file_url), + ).then(upload_urls => + Promise.all( + upload_urls.map((upload_url, i) => + uploadSourcemap(upload_url, sourcemaps[i]) + ), + ), + ); diff --git a/sourcemap-uploader/package-lock.json b/sourcemap-uploader/package-lock.json new file mode 100644 index 000000000..d9423165d --- /dev/null +++ b/sourcemap-uploader/package-lock.json @@ -0,0 +1,1091 @@ +{ + "name": "@asayerio/sourcemaps-uploader", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/node": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.0.tgz", + "integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ==" + }, + "acorn": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "dev": true + }, + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "dev": true + }, + "ajv": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-config-prettier": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", + "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-plugin-prettier": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "dev": true, + "requires": { + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-promise": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", + "integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==", + "requires": { + "@types/glob": "*" + } + }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } +} diff --git a/sourcemap-uploader/package.json b/sourcemap-uploader/package.json new file mode 100644 index 000000000..2ffe6f5b7 --- /dev/null +++ b/sourcemap-uploader/package.json @@ -0,0 +1,25 @@ +{ + "name": "@openreplay/sourcemap-uploader", + "version": "3.0.1", + "description": "NPM module to upload your JS sourcemaps files to OpenReplay", + "bin": "cli.js", + "main": "index.js", + "scripts": { + "lint": "eslint . --ext .js --fix" + }, + "author": "Alex Tsokurov", + "contributors": [ + "Aleksandr K " + ], + "license": "MIT", + "devDependencies": { + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.10.0", + "eslint-plugin-prettier": "^3.1.2", + "prettier": "^1.19.1" + }, + "dependencies": { + "argparse": "^1.0.10", + "glob-promise": "^3.4.0" + } +} From 83bc0ac7831e1ded0bb61f57a6705ef274c0f606 Mon Sep 17 00:00:00 2001 From: ShiKhu Date: Mon, 3 May 2021 17:53:25 +0200 Subject: [PATCH 2/7] feat: init backend --- backend/Dockerfile | 51 + backend/build.sh | 40 + backend/go.mod | 21 + backend/go.sum | 161 + backend/pkg/db/cache/messages_common.go | 30 + backend/pkg/db/cache/messages_ios.go | 140 + backend/pkg/db/cache/messages_web.go | 56 + backend/pkg/db/cache/pg_cache.go | 40 + backend/pkg/db/cache/project.go | 37 + backend/pkg/db/cache/session.go | 30 + backend/pkg/db/postgres/alert.go | 240 + backend/pkg/db/postgres/connector.go | 63 + backend/pkg/db/postgres/errors.go | 16 + backend/pkg/db/postgres/helpers.go | 35 + backend/pkg/db/postgres/integration.go | 49 + backend/pkg/db/postgres/listener.go | 82 + backend/pkg/db/postgres/messages_common.go | 224 + backend/pkg/db/postgres/messages_ios.go | 181 + backend/pkg/db/postgres/messages_web.go | 200 + backend/pkg/db/postgres/messages_web_stats.go | 68 + backend/pkg/db/postgres/notification.go | 60 + backend/pkg/db/postgres/project.go | 45 + backend/pkg/db/postgres/session.go | 106 + backend/pkg/db/postgres/unstarted_session.go | 45 + backend/pkg/db/types/project.go | 53 + backend/pkg/db/types/session.go | 65 + backend/pkg/dev/profiling/profiling.go | 37 + backend/pkg/env/aws.go | 29 + backend/pkg/env/fargate.go | 41 + backend/pkg/env/vars.go | 48 + backend/pkg/env/worker_id.go | 22 + backend/pkg/flakeid/flakeid.go | 20 + backend/pkg/flakeid/flaker.go | 47 + backend/pkg/hashid/hashid.go | 35 + backend/pkg/intervals/intervals.go | 11 + backend/pkg/messages/batch.go | 71 + backend/pkg/messages/facade.go | 41 + backend/pkg/messages/filters.go | 10 + backend/pkg/messages/messages.go | 1506 +++ .../pkg/messages/performance/performance.go | 33 + backend/pkg/messages/primitives.go | 155 + backend/pkg/messages/read_message.go | 678 ++ backend/pkg/queue/import.go | 15 + backend/pkg/queue/messages.go | 19 + backend/pkg/queue/types/types.go | 31 + backend/pkg/redisstream/consumer.go | 170 + backend/pkg/redisstream/producer.go | 44 + backend/pkg/redisstream/redis.go | 26 + backend/pkg/storage/s3.go | 98 + backend/pkg/token/http.go | 18 + backend/pkg/token/tokenizer.go | 65 + backend/pkg/url/assets/css.go | 63 + backend/pkg/url/assets/rewriter.go | 21 + backend/pkg/url/assets/url.go | 98 + backend/pkg/url/method.go | 12 + backend/pkg/url/url.go | 18 + backend/pkg/utime/utime.go | 11 + backend/services/alerts/main.go | 94 + backend/services/alerts/manager.go | 169 + backend/services/assets/cacher/cacher.go | 145 + backend/services/assets/cacher/timeoutMap.go | 45 + backend/services/assets/jsexception.go | 32 + backend/services/assets/main.go | 74 + backend/services/db/heuristics/anr.go | 52 + backend/services/db/heuristics/clickrage.go | 58 + backend/services/db/heuristics/heuristics.go | 65 + backend/services/db/heuristics/performance.go | 103 + .../db/heuristics/readyMessageStore.go | 21 + backend/services/db/heuristics/session.go | 47 + backend/services/db/main.go | 97 + backend/services/db/messages.go | 64 + backend/services/db/stats.go | 35 + backend/services/ender/builder/builder.go | 316 + backend/services/ender/builder/builderMap.go | 52 + .../ender/builder/clikRageDetector.go | 57 + .../services/ender/builder/cpuIssueFinder.go | 86 + .../ender/builder/deadClickDetector.go | 55 + .../services/ender/builder/domDropDetector.go | 42 + .../ender/builder/inputEventBuilder.go | 80 + .../ender/builder/memoryIssueFinder.go | 72 + .../ender/builder/pageEventBuilder.go | 91 + .../builder/performanceTrackAggrBuilder.go | 109 + backend/services/ender/main.go | 72 + backend/services/http/README.md | 72 + backend/services/http/assets.go | 20 + backend/services/http/geoip/geoip.go | 41 + backend/services/http/geoip/http.go | 13 + backend/services/http/handlers.go | 295 + backend/services/http/handlers_ios.go | 145 + backend/services/http/ios_device.go | 79 + backend/services/http/main.go | 137 + backend/services/http/project_id.go | 12 + backend/services/http/response.go | 23 + backend/services/http/uaparser/http.go | 8 + backend/services/http/uaparser/uaparser.go | 77 + backend/services/http/uuid.go | 15 + .../integrations/clientManager/manager.go | 51 + .../integrations/integration/bugsnag.go | 123 + .../integrations/integration/bugsnag.json | 9207 +++++++++++++++++ .../integrations/integration/client.go | 153 + .../integrations/integration/cloudwatch.go | 89 + .../integrations/integration/datadog.go | 132 + .../integrations/integration/datadog.json | 5872 +++++++++++ .../integrations/integration/elasticsearch.go | 193 + .../integration/elasticsearch.json | 469 + .../integrations/integration/newrelic.go | 104 + .../integrations/integration/newrelic.json | 153 + .../integration/newrelic_empty.json | 42 + .../integrations/integration/rollbar.go | 176 + .../integration/rollbar_error.json | 4 + .../integration/rollbar_job_result.json | 63 + .../integration/rollbar_job_start.json | 13 + .../integrations/integration/sentry.go | 154 + .../integrations/integration/sentry.json | 4438 ++++++++ .../integrations/integration/stackdriver.go | 104 + .../integrations/integration/sumologic.go | 219 + .../integration/sumologic_error.json | 6 + .../integration/sumologic_job_result.json | 146 + .../integration/sumologic_job_start.json | 7 + .../integration/sumologic_job_status.json | 16 + .../integrations/integration/utils.go | 34 + backend/services/integrations/main.go | 99 + backend/services/sink/main.go | 93 + backend/services/sink/writer.go | 99 + backend/services/storage/gzip.go | 19 + backend/services/storage/main.go | 81 + ee/backend/pkg/db/clickhouse/bulk.go | 45 + ee/backend/pkg/db/clickhouse/connector.go | 206 + ee/backend/pkg/db/clickhouse/helpers.go | 34 + ee/backend/pkg/db/clickhouse/messages_ios.go | 180 + ee/backend/pkg/db/clickhouse/messages_web.go | 246 + ee/backend/pkg/kafka/consumer.go | 238 + ee/backend/pkg/kafka/key.go | 20 + ee/backend/pkg/kafka/log.go | 16 + ee/backend/pkg/kafka/producer.go | 51 + ee/backend/pkg/queue/import.go | 15 + ee/backend/services/db/stats.go | 66 + 137 files changed, 32177 insertions(+) create mode 100644 backend/Dockerfile create mode 100644 backend/build.sh create mode 100644 backend/go.mod create mode 100644 backend/go.sum create mode 100644 backend/pkg/db/cache/messages_common.go create mode 100644 backend/pkg/db/cache/messages_ios.go create mode 100644 backend/pkg/db/cache/messages_web.go create mode 100644 backend/pkg/db/cache/pg_cache.go create mode 100644 backend/pkg/db/cache/project.go create mode 100644 backend/pkg/db/cache/session.go create mode 100644 backend/pkg/db/postgres/alert.go create mode 100644 backend/pkg/db/postgres/connector.go create mode 100644 backend/pkg/db/postgres/errors.go create mode 100644 backend/pkg/db/postgres/helpers.go create mode 100644 backend/pkg/db/postgres/integration.go create mode 100644 backend/pkg/db/postgres/listener.go create mode 100644 backend/pkg/db/postgres/messages_common.go create mode 100644 backend/pkg/db/postgres/messages_ios.go create mode 100644 backend/pkg/db/postgres/messages_web.go create mode 100644 backend/pkg/db/postgres/messages_web_stats.go create mode 100644 backend/pkg/db/postgres/notification.go create mode 100644 backend/pkg/db/postgres/project.go create mode 100644 backend/pkg/db/postgres/session.go create mode 100644 backend/pkg/db/postgres/unstarted_session.go create mode 100644 backend/pkg/db/types/project.go create mode 100644 backend/pkg/db/types/session.go create mode 100644 backend/pkg/dev/profiling/profiling.go create mode 100644 backend/pkg/env/aws.go create mode 100644 backend/pkg/env/fargate.go create mode 100644 backend/pkg/env/vars.go create mode 100644 backend/pkg/env/worker_id.go create mode 100644 backend/pkg/flakeid/flakeid.go create mode 100644 backend/pkg/flakeid/flaker.go create mode 100644 backend/pkg/hashid/hashid.go create mode 100644 backend/pkg/intervals/intervals.go create mode 100644 backend/pkg/messages/batch.go create mode 100644 backend/pkg/messages/facade.go create mode 100644 backend/pkg/messages/filters.go create mode 100644 backend/pkg/messages/messages.go create mode 100644 backend/pkg/messages/performance/performance.go create mode 100644 backend/pkg/messages/primitives.go create mode 100644 backend/pkg/messages/read_message.go create mode 100644 backend/pkg/queue/import.go create mode 100644 backend/pkg/queue/messages.go create mode 100644 backend/pkg/queue/types/types.go create mode 100644 backend/pkg/redisstream/consumer.go create mode 100644 backend/pkg/redisstream/producer.go create mode 100644 backend/pkg/redisstream/redis.go create mode 100644 backend/pkg/storage/s3.go create mode 100644 backend/pkg/token/http.go create mode 100644 backend/pkg/token/tokenizer.go create mode 100644 backend/pkg/url/assets/css.go create mode 100644 backend/pkg/url/assets/rewriter.go create mode 100644 backend/pkg/url/assets/url.go create mode 100644 backend/pkg/url/method.go create mode 100644 backend/pkg/url/url.go create mode 100644 backend/pkg/utime/utime.go create mode 100644 backend/services/alerts/main.go create mode 100644 backend/services/alerts/manager.go create mode 100644 backend/services/assets/cacher/cacher.go create mode 100644 backend/services/assets/cacher/timeoutMap.go create mode 100644 backend/services/assets/jsexception.go create mode 100644 backend/services/assets/main.go create mode 100644 backend/services/db/heuristics/anr.go create mode 100644 backend/services/db/heuristics/clickrage.go create mode 100644 backend/services/db/heuristics/heuristics.go create mode 100644 backend/services/db/heuristics/performance.go create mode 100644 backend/services/db/heuristics/readyMessageStore.go create mode 100644 backend/services/db/heuristics/session.go create mode 100644 backend/services/db/main.go create mode 100644 backend/services/db/messages.go create mode 100644 backend/services/db/stats.go create mode 100644 backend/services/ender/builder/builder.go create mode 100644 backend/services/ender/builder/builderMap.go create mode 100644 backend/services/ender/builder/clikRageDetector.go create mode 100644 backend/services/ender/builder/cpuIssueFinder.go create mode 100644 backend/services/ender/builder/deadClickDetector.go create mode 100644 backend/services/ender/builder/domDropDetector.go create mode 100644 backend/services/ender/builder/inputEventBuilder.go create mode 100644 backend/services/ender/builder/memoryIssueFinder.go create mode 100644 backend/services/ender/builder/pageEventBuilder.go create mode 100644 backend/services/ender/builder/performanceTrackAggrBuilder.go create mode 100644 backend/services/ender/main.go create mode 100644 backend/services/http/README.md create mode 100644 backend/services/http/assets.go create mode 100644 backend/services/http/geoip/geoip.go create mode 100644 backend/services/http/geoip/http.go create mode 100644 backend/services/http/handlers.go create mode 100644 backend/services/http/handlers_ios.go create mode 100644 backend/services/http/ios_device.go create mode 100644 backend/services/http/main.go create mode 100644 backend/services/http/project_id.go create mode 100644 backend/services/http/response.go create mode 100644 backend/services/http/uaparser/http.go create mode 100644 backend/services/http/uaparser/uaparser.go create mode 100644 backend/services/http/uuid.go create mode 100644 backend/services/integrations/clientManager/manager.go create mode 100644 backend/services/integrations/integration/bugsnag.go create mode 100644 backend/services/integrations/integration/bugsnag.json create mode 100644 backend/services/integrations/integration/client.go create mode 100644 backend/services/integrations/integration/cloudwatch.go create mode 100644 backend/services/integrations/integration/datadog.go create mode 100644 backend/services/integrations/integration/datadog.json create mode 100644 backend/services/integrations/integration/elasticsearch.go create mode 100644 backend/services/integrations/integration/elasticsearch.json create mode 100644 backend/services/integrations/integration/newrelic.go create mode 100644 backend/services/integrations/integration/newrelic.json create mode 100644 backend/services/integrations/integration/newrelic_empty.json create mode 100644 backend/services/integrations/integration/rollbar.go create mode 100644 backend/services/integrations/integration/rollbar_error.json create mode 100644 backend/services/integrations/integration/rollbar_job_result.json create mode 100644 backend/services/integrations/integration/rollbar_job_start.json create mode 100644 backend/services/integrations/integration/sentry.go create mode 100644 backend/services/integrations/integration/sentry.json create mode 100644 backend/services/integrations/integration/stackdriver.go create mode 100644 backend/services/integrations/integration/sumologic.go create mode 100644 backend/services/integrations/integration/sumologic_error.json create mode 100644 backend/services/integrations/integration/sumologic_job_result.json create mode 100644 backend/services/integrations/integration/sumologic_job_start.json create mode 100644 backend/services/integrations/integration/sumologic_job_status.json create mode 100644 backend/services/integrations/integration/utils.go create mode 100644 backend/services/integrations/main.go create mode 100644 backend/services/sink/main.go create mode 100644 backend/services/sink/writer.go create mode 100644 backend/services/storage/gzip.go create mode 100644 backend/services/storage/main.go create mode 100644 ee/backend/pkg/db/clickhouse/bulk.go create mode 100644 ee/backend/pkg/db/clickhouse/connector.go create mode 100644 ee/backend/pkg/db/clickhouse/helpers.go create mode 100644 ee/backend/pkg/db/clickhouse/messages_ios.go create mode 100644 ee/backend/pkg/db/clickhouse/messages_web.go create mode 100644 ee/backend/pkg/kafka/consumer.go create mode 100644 ee/backend/pkg/kafka/key.go create mode 100644 ee/backend/pkg/kafka/log.go create mode 100644 ee/backend/pkg/kafka/producer.go create mode 100644 ee/backend/pkg/queue/import.go create mode 100644 ee/backend/services/db/stats.go diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 000000000..085e15544 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,51 @@ +FROM golang:1.13-alpine AS build + +RUN apk add --no-cache git openssh openssl-dev pkgconf gcc g++ make libc-dev bash + +WORKDIR /root + +COPY go.mod . +COPY go.sum . + +RUN go mod download + +COPY . . + +ARG SERVICE_NAME + +RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o service -tags musl openreplay/backend/services/$SERVICE_NAME + +FROM alpine +RUN apk add --no-cache ca-certificates + +ENV TZ=UTC \ + FS_ULIMIT=1000 \ + FS_DIR=/mnt/efs \ + MAXMINDDB_FILE=/root/geoip.mmdb \ + UAPARSER_FILE=/root/regexes.yaml \ + HTTP_PORT=80 \ + KAFKA_USE_SSL=true \ + REDIS_STREAMS_MAX_LEN=3000 \ + TOPIC_RAW=raw \ + TOPIC_CACHE=cache \ + TOPIC_ANALYTICS=analytics \ + TOPIC_TRIGGER=trigger \ + TOPIC_EVENTS=events \ + GROUP_SINK=sink \ + GROUP_STORAGE=storage \ + GROUP_DB=db \ + GROUP_ENDER=ender \ + GROUP_CACHE=cache \ + AWS_REGION_WEB=eu-central-1 \ + AWS_REGION_IOS=eu-west-1 \ + AWS_REGION_ASSETS=eu-central-1 \ + + +ARG SERVICE_NAME +RUN if [ "$SERVICE_NAME" = "http" ]; then \ + wget https://raw.githubusercontent.com/ua-parser/uap-core/master/regexes.yaml -O "$UAPARSER_FILE" &&\ + wget https://static.openreplay.com/geoip/GeoLite2-Country.mmdb -O "$MAXMINDDB_FILE"; fi + + +COPY --from=build /root/service /root/service +ENTRYPOINT /root/service diff --git a/backend/build.sh b/backend/build.sh new file mode 100644 index 000000000..3b3014282 --- /dev/null +++ b/backend/build.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Script to build api module +# flags to accept: +# ee: build for enterprize edition. +# Default will be OSS build. + +# Example +# DOCKER_REPO=asayer.io bash buid.sh + +git_sha1=$(git rev-parse HEAD) +ee="false" +check_prereq() { + which docker || { + echo "Docker not installed, please install docker." + exit=1 + } + [[ exit -eq 1 ]] && exit 1 +} + +function build_api(){ + # Copy enterprize code + [[ $1 == "ee" ]] && { + cp ../ee/backend/* ./ + ee="true" + } + [[ $2 != "" ]] && { + image="$2" + docker build -t ${DOCKER_REPO:-'local'}/$image:${git_sha1} --build-arg SERVICE_NAME=$image . + return + } + for image in $(ls services); + do + docker build -t ${DOCKER_REPO:-'local'}/$image:${git_sha1} --build-arg SERVICE_NAME=$image . + echo "::set-output name=image::${DOCKER_REPO:-'local'}/$image:${git_sha1}" + done +} + +check_prereq +build_api $1 $2 diff --git a/backend/go.mod b/backend/go.mod new file mode 100644 index 000000000..2729bcccc --- /dev/null +++ b/backend/go.mod @@ -0,0 +1,21 @@ +module openreplay/backend + +go 1.13 + +require ( + github.com/btcsuite/btcutil v1.0.2 + github.com/confluentinc/confluent-kafka-go v1.5.2 // indirect + github.com/go-redis/redis v6.15.9+incompatible + github.com/google/uuid v1.1.1 + github.com/jackc/pgconn v1.6.0 + github.com/jackc/pgx/v4 v4.6.0 + github.com/jackc/pgerrcode v0.0.0-20201024163028-a0d42d470451 + github.com/klauspost/compress v1.11.9 + github.com/klauspost/pgzip v1.2.5 + github.com/oschwald/maxminddb-golang v1.7.0 + github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce + github.com/ua-parser/uap-go v0.0.0-20200325213135-e1c09f13e2fe + gopkg.in/confluentinc/confluent-kafka-go.v1 v1.5.2 + github.com/ClickHouse/clickhouse-go v1.4.3 + github.com/aws/aws-sdk-go v1.35.23 +) diff --git a/backend/go.sum b/backend/go.sum new file mode 100644 index 000000000..8e7453a17 --- /dev/null +++ b/backend/go.sum @@ -0,0 +1,161 @@ +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/confluentinc/confluent-kafka-go v1.4.2 h1:13EK9RTujF7lVkvHQ5Hbu6bM+Yfrq8L0MkJNnjHSd4Q= +github.com/confluentinc/confluent-kafka-go v1.4.2/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= +github.com/jackc/pgconn v1.6.0 h1:8FiBxMxS/Z0eQ9BeE1HhL6pzPL1R5x+ZuQ+T86WgZ4I= +github.com/jackc/pgconn v1.6.0/go.mod h1:yeseQo4xhQbgyJs2c87RAXOH2i624N0Fh1KSPJya7qo= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.0.2 h1:q1Hsy66zh4vuNsajBUF2PNqfAMMfxU5mk594lPE9vjY= +github.com/jackc/pgproto3/v2 v2.0.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8 h1:Q3tB+ExeflWUW7AFcAhXqk40s9mnNYLk1nOkKNZ5GnU= +github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.3.0 h1:l8JvKrby3RI7Kg3bYEeU9TA4vqC38QDpFCfcrC7KuN0= +github.com/jackc/pgtype v1.3.0/go.mod h1:b0JqxHvPmljG+HQ5IsvQ0yqeSi4nGcDTVjFoiLDb0Ik= +github.com/jackc/pgx v3.6.2+incompatible h1:2zP5OD7kiyR3xzRYMhOcXVvkDZsImVXfj+yIyTQf3/o= +github.com/jackc/pgx v3.6.2+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.6.0 h1:Fh0O9GdlG4gYpjpwOqjdEodJUQM9jzN3Hdv7PN0xmm0= +github.com/jackc/pgx/v4 v4.6.0/go.mod h1:vPh43ZzxijXUVJ+t/EmXBtFmbFVO72cuneCT9oAlxAg= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/oschwald/maxminddb-golang v1.7.0 h1:JmU4Q1WBv5Q+2KZy5xJI+98aUwTIrPPxZUkd5Cwr8Zc= +github.com/oschwald/maxminddb-golang v1.7.0/go.mod h1:RXZtst0N6+FY/3qCNmZMBApR19cdQj43/NM9VkrNAis= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= +github.com/ua-parser/uap-go v0.0.0-20200325213135-e1c09f13e2fe h1:aj/vX5epIlQQBEocKoM9nSAiNpakdQzElc8SaRFPu+I= +github.com/ua-parser/uap-go v0.0.0-20200325213135-e1c09f13e2fe/go.mod h1:OBcG9bn7sHtXgarhUEb3OfCnNsgtGnkVf41ilSZ3K3E= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= +golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191224085550-c709ea063b76 h1:Dho5nD6R3PcW2SH1or8vS0dszDaXRxIw55lBX7XiE5g= +golang.org/x/sys v0.0.0-20191224085550-c709ea063b76/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/confluentinc/confluent-kafka-go.v1 v1.4.2 h1:JabkIV98VYFqYKHHzXtgGMFuRgFBNTNzBytbGByzrJI= +gopkg.in/confluentinc/confluent-kafka-go.v1 v1.4.2/go.mod h1:ZdI3yfYmdNSLQPNCpO1y00EHyWaHG5EnQEyL/ntAegY= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/backend/pkg/db/cache/messages_common.go b/backend/pkg/db/cache/messages_common.go new file mode 100644 index 000000000..0b7d9a885 --- /dev/null +++ b/backend/pkg/db/cache/messages_common.go @@ -0,0 +1,30 @@ +package cache + +import ( + . "openreplay/backend/pkg/messages" +// . "openreplay/backend/pkg/db/types" +) + +func (c *PGCache) insertSessionEnd(sessionID uint64, timestamp uint64 ) error { + //duration, err := c.Conn.InsertSessionEnd(sessionID, timestamp) + _, err := c.Conn.InsertSessionEnd(sessionID, timestamp) + if err != nil { + return err + } + c.DeleteSession(sessionID) + // session, err := c.GetSession(sessionID) + // if err != nil { + // return err + // } + // session.Duration = &duration + return nil +} + + +func (c *PGCache) InsertIssueEvent(sessionID uint64, crash *IssueEvent) error { + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + return c.Conn.InsertIssueEvent(sessionID, session.ProjectID, crash) +} diff --git a/backend/pkg/db/cache/messages_ios.go b/backend/pkg/db/cache/messages_ios.go new file mode 100644 index 000000000..151ffe58e --- /dev/null +++ b/backend/pkg/db/cache/messages_ios.go @@ -0,0 +1,140 @@ +package cache + +import ( + "errors" + . "openreplay/backend/pkg/messages" + . "openreplay/backend/pkg/db/types" +) + +func (c *PGCache) InsertIOSSessionStart(sessionID uint64, s *IOSSessionStart) error { + if c.sessions[ sessionID ] != nil { + return errors.New("This session already in cache!") + } + c.sessions[ sessionID ] = &Session{ + SessionID: sessionID, + Platform: "ios", + Timestamp: s.Timestamp, + ProjectID: uint32(s.ProjectID), + TrackerVersion: s.TrackerVersion, + RevID: s.RevID, + UserUUID: s.UserUUID, + UserOS: s.UserOS, + UserOSVersion: s.UserOSVersion, + UserDevice: s.UserDevice, + UserCountry: s.UserCountry, + } + if err := c.Conn.InsertSessionStart(sessionID, c.sessions[ sessionID ]); err != nil { + c.sessions[ sessionID ] = nil + return err + } + return nil; +} + +func (c *PGCache) InsertIOSSessionEnd(sessionID uint64, e *IOSSessionEnd) error { + return c.insertSessionEnd(sessionID, e.Timestamp) +} + + +func (c *PGCache) InsertIOSScreenEnter(sessionID uint64, screenEnter *IOSScreenEnter) error { + if err := c.Conn.InsertIOSScreenEnter(sessionID, screenEnter); err != nil { + return err + } + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + session.PagesCount += 1 + return nil +} + +func (c *PGCache) InsertIOSClickEvent(sessionID uint64, clickEvent *IOSClickEvent) error { + if err := c.Conn.InsertIOSClickEvent(sessionID, clickEvent); err != nil { + return err + } + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + session.EventsCount += 1 + return nil +} + +func (c *PGCache) InsertIOSInputEvent(sessionID uint64, inputEvent *IOSInputEvent) error { + if err := c.Conn.InsertIOSInputEvent(sessionID, inputEvent); err != nil { + return err + } + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + session.EventsCount += 1 + return nil +} + +func (c *PGCache) InsertIOSCrash(sessionID uint64, crash *IOSCrash) error { + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + if err := c.Conn.InsertIOSCrash(sessionID, session.ProjectID, crash); err != nil { + return err + } + session.ErrorsCount += 1 + return nil +} + +func (c *PGCache) InsertIOSIssueEvent(sessionID uint64, issueEvent *IOSIssueEvent) error { + // session, err := c.GetSession(sessionID) + // if err != nil { + // return err + // } + // TODO: unite IssueEvent message for the all platforms + // if err := c.Conn.InsertIssueEvent(sessionID, session.ProjectID, issueEvent); err != nil { + // return err + // } + return nil +} + +func (c *PGCache) InsertUserID(sessionID uint64, userID *IOSUserID) error { + if err := c.Conn.InsertIOSUserID(sessionID, userID); err != nil { + return err + } + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + session.UserID = &userID.Value + return nil +} + +func (c *PGCache) InsertUserAnonymousID(sessionID uint64, userAnonymousID *IOSUserAnonymousID) error { + if err := c.Conn.InsertIOSUserAnonymousID(sessionID, userAnonymousID); err != nil { + return err + } + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + session.UserAnonymousID = &userAnonymousID.Value + return nil +} + +func (c *PGCache) InsertMetadata(sessionID uint64, metadata *Metadata) error { + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + project, err := c.GetProject(session.ProjectID) + if err != nil { + return err + } + + keyNo := project.GetMetadataNo(metadata.Key) + if err := c.Conn.InsertMetadata(sessionID, keyNo, metadata.Value); err != nil { + return err + } + + session.SetMetadata(keyNo, metadata.Value) + return nil +} + diff --git a/backend/pkg/db/cache/messages_web.go b/backend/pkg/db/cache/messages_web.go new file mode 100644 index 000000000..3afae8592 --- /dev/null +++ b/backend/pkg/db/cache/messages_web.go @@ -0,0 +1,56 @@ +package cache + +import ( + "errors" + . "openreplay/backend/pkg/messages" + . "openreplay/backend/pkg/db/types" +) + + +func (c *PGCache) InsertWebSessionStart(sessionID uint64, s *SessionStart) error { + if c.sessions[ sessionID ] != nil { + return errors.New("This session already in cache!") + } + c.sessions[ sessionID ] = &Session{ + SessionID: sessionID, + Platform: "web", + Timestamp: s.Timestamp, + ProjectID: uint32(s.ProjectID), + TrackerVersion: s.TrackerVersion, + RevID: s.RevID, + UserUUID: s.UserUUID, + UserOS: s.UserOS, + UserOSVersion: s.UserOSVersion, + UserDevice: s.UserDevice, + UserCountry: s.UserCountry, + // web properties (TODO: unite different platform types) + UserAgent: s.UserAgent, + UserBrowser: s.UserBrowser, + UserBrowserVersion: s.UserBrowserVersion, + UserDeviceType: s.UserDeviceType, + UserDeviceMemorySize: s.UserDeviceMemorySize, + UserDeviceHeapSize: s.UserDeviceHeapSize, + } + if err := c.Conn.InsertSessionStart(sessionID, c.sessions[ sessionID ]); err != nil { + c.sessions[ sessionID ] = nil + return err + } + return nil; +} + +func (c *PGCache) InsertWebSessionEnd(sessionID uint64, e *SessionEnd) error { + return c.insertSessionEnd(sessionID, e.Timestamp) +} + +func (c *PGCache) InsertWebErrorEvent(sessionID uint64, e *ErrorEvent) error { + session, err := c.GetSession(sessionID) + if err != nil { + return err + } + if err := c.Conn.InsertWebErrorEvent(sessionID, session.ProjectID, e); err != nil { + return err + } + session.ErrorsCount += 1 + return nil +} + diff --git a/backend/pkg/db/cache/pg_cache.go b/backend/pkg/db/cache/pg_cache.go new file mode 100644 index 000000000..0ca429eb5 --- /dev/null +++ b/backend/pkg/db/cache/pg_cache.go @@ -0,0 +1,40 @@ +package cache + +import ( + "time" + + "openreplay/backend/pkg/db/postgres" + . "openreplay/backend/pkg/db/types" +) + +type ProjectMeta struct { + *Project + expirationTime time.Time +} + +// !TODO: remove old sessions by timeout to avoid memleaks + +/* + * Cache layer around the stateless PG adapter +**/ +type PGCache struct { + *postgres.Conn + sessions map[uint64]*Session + projects map[uint32]*ProjectMeta + projectsByKeys map[string]*ProjectMeta + projectExpirationTimeout time.Duration +} + +// TODO: create conn automatically +func NewPGCache(pgConn *postgres.Conn, projectExpirationTimeoutMs int64) *PGCache { + return &PGCache{ + Conn: pgConn, + sessions: make(map[uint64]*Session), + projects: make(map[uint32]*ProjectMeta), + projectsByKeys: make(map[string]*ProjectMeta), + projectExpirationTimeout: time.Duration(1000 * projectExpirationTimeoutMs), + } +} + + + diff --git a/backend/pkg/db/cache/project.go b/backend/pkg/db/cache/project.go new file mode 100644 index 000000000..1411e608b --- /dev/null +++ b/backend/pkg/db/cache/project.go @@ -0,0 +1,37 @@ +package cache + +import ( + "time" + . "openreplay/backend/pkg/db/types" +) + +func (c *PGCache) GetProjectByKey(projectKey string) (*Project, error) { + if c.projectsByKeys[ projectKey ] != nil && + time.Now().Before(c.projectsByKeys[ projectKey ].expirationTime) { + return c.projectsByKeys[ projectKey ].Project, nil + } + p, err := c.Conn.GetProjectByKey(projectKey) + if err != nil { + return nil, err + } + c.projectsByKeys[ projectKey ] = &ProjectMeta{ p, time.Now().Add(c.projectExpirationTimeout) } + c.projects[ p.ProjectID ] = c.projectsByKeys[ projectKey ] + return p, nil +} + + + +func (c *PGCache) GetProject(projectID uint32) (*Project, error) { + if c.projects[ projectID ] != nil && + time.Now().Before(c.projects[ projectID ].expirationTime) { + return c.projects[ projectID ].Project, nil + } + p, err := c.Conn.GetProject(projectID) + if err != nil { + return nil, err + } + c.projects[ projectID ] = &ProjectMeta{ p, time.Now().Add(c.projectExpirationTimeout) } + c.projectsByKeys[ p.ProjectKey ] = c.projects[ projectID ] + return p, nil +} + diff --git a/backend/pkg/db/cache/session.go b/backend/pkg/db/cache/session.go new file mode 100644 index 000000000..2038fd1bd --- /dev/null +++ b/backend/pkg/db/cache/session.go @@ -0,0 +1,30 @@ +package cache + +import ( + "github.com/jackc/pgx/v4" + + . "openreplay/backend/pkg/db/types" +) + +func (c *PGCache) GetSession(sessionID uint64) (*Session, error) { + if s, inCache := c.sessions[ sessionID ]; inCache { + // TODO: review. Might cause bugs in case of multiple instances + if s == nil { + return nil, pgx.ErrNoRows + } + return s, nil + } + s, err := c.Conn.GetSession(sessionID) + if err == pgx.ErrNoRows { + c.sessions[ sessionID ] = nil + } + if err != nil { + return nil, err + } + c.sessions[ sessionID ] = s + return s, nil +} + +func (c *PGCache) DeleteSession(sessionID uint64) { + delete(c.sessions, sessionID) +} diff --git a/backend/pkg/db/postgres/alert.go b/backend/pkg/db/postgres/alert.go new file mode 100644 index 000000000..e00ecf953 --- /dev/null +++ b/backend/pkg/db/postgres/alert.go @@ -0,0 +1,240 @@ +package postgres + +import ( + "database/sql" + "errors" + "fmt" + sq "github.com/Masterminds/squirrel" + "log" + "strconv" + "time" +) + +type TimeString sql.NullString +type query struct { + Left string `db:"query.left" json:"left"` + Operator string `db:"query.operator" json:"operator"` + Right float64 `db:"query.right" json:"right"` +} +type options struct { + RenotifyInterval int64 `db:"options.renotifyInterval" json:"renotifyInterval"` + LastNotification int64 `db:"options.lastNotification" json:"lastNotification;omitempty"` + CurrentPeriod int64 `db:"options.currentPeriod" json:"currentPeriod"` + PreviousPeriod int64 `db:"options.previousPeriod" json:"previousPeriod;omitempty"` + Message []map[string]string `db:"options.message" json:"message;omitempty"` + Change string `db:"options.change" json:"change;omitempty"` +} +type Alert struct { + AlertID uint32 `db:"alert_id" json:"alert_id"` + ProjectID uint32 `db:"project_id" json:"project_id"` + Name string `db:"name" json:"name"` + Description sql.NullString `db:"description" json:"description"` + Active bool `db:"active" json:"active"` + DetectionMethod string `db:"detection_method" json:"detection_method"` + Query query `db:"query" json:"query"` + DeletedAt *int64 `db:"deleted_at" json:"deleted_at"` + CreatedAt *int64 `db:"created_at" json:"created_at"` + Options options `db:"options" json:"options"` + TenantId uint32 `db:"tenant_id" json:"tenant_id"` +} + +func (pg *Conn) IterateAlerts(iter func(alert *Alert, err error)) error { + rows, err := pg.query(` + SELECT + alerts.alert_id, + alerts.project_id, + alerts.name, + alerts.description, + alerts.active, + alerts.detection_method, + alerts.query, + CAST(EXTRACT(epoch FROM alerts.deleted_at) * 1000 AS BIGINT) AS deleted_at, + CAST(EXTRACT(epoch FROM alerts.created_at) * 1000 AS BIGINT) AS created_at, + alerts.options, + projects.tenant_id + FROM public.alerts INNER JOIN public.projects USING(project_id) + WHERE alerts.active AND alerts.deleted_at ISNULL; + `) + if err != nil { + return err + } + defer rows.Close() + for rows.Next() { + a := new(Alert) + if err = rows.Scan( + &a.AlertID, + &a.ProjectID, + &a.Name, + &a.Description, + &a.Active, + &a.DetectionMethod, + &a.Query, + &a.DeletedAt, + &a.CreatedAt, + &a.Options, + &a.TenantId, + ); err != nil { + iter(nil, err) + continue + } + iter(a, nil) + } + + if err = rows.Err(); err != nil { + return err + } + return nil +} + +func (pg *Conn) SaveLastNotification(allIds []uint32) error { + var paramrefs string + for _, v := range allIds { + paramrefs += strconv.Itoa(int(v)) + `,` + } + paramrefs = paramrefs[:len(paramrefs)-1] // remove last "," + q := "UPDATE public.Alerts SET options = options||'{\"lastNotification\":" + strconv.Itoa(int(time.Now().Unix()*1000)) + "}'::jsonb WHERE alert_id IN (" + paramrefs + ");" + //log.Println(q) + log.Println("Updating PG") + return pg.exec(q) +} + +type columnDefinition struct { + table string + formula string + condition string + group string +} + +var LeftToDb = map[string]columnDefinition{ + "performance.dom_content_loaded.average": {table: "pages", formula: "COALESCE(AVG(NULLIF(dom_content_loaded_event_start ,0)),0)"}, + "performance.first_meaningful_paint.average": {table: "pages", formula: "COALESCE(AVG(NULLIF(first_contentful_paint,0)),0)"}, + "performance.page_load_time.average": {table: "pages", formula: "AVG(NULLIF(load_event_end ,0))"}, + "performance.dom_build_time.average": {table: "pages", formula: "AVG(NULLIF(dom_building_time,0))"}, + "performance.speed_index.average": {table: "pages", formula: "AVG(NULLIF(speed_index,0))"}, + //"avgSpeedIndexByLocation": {table: "pages", formula: "AVG(NULLIF(speed_index,0))", group: "user_country"}, + "performance.page_response_time.average": {table: "pages", formula: "AVG(NULLIF(response_time,0))"}, + "performance.ttfb.average": {table: "pages", formula: "AVG(NULLIF(first_paint,0))"}, + //"avgDomContentLoaded": {table: "pages", formula: "AVG(NULLIF(dom_content_loaded_event_time,0))"}, + "performance.time_to_render.averag": {table: "pages", formula: "AVG(NULLIF(visually_complete,0))"}, + "performance.image_load_time.average": {table: "resources", formula: "AVG(NULLIF(duration,0))", condition: "type=='img'"}, + "performance.request_load_time.average": {table: "resources", formula: "AVG(NULLIF(duration,0))", condition: "type=='fetch'"}, + "resources.load_time.average": {table: "resources", formula: "AVG(NULLIF(duration,0))"}, + "resources.missing.count": {table: "resources", formula: "COUNT(DISTINCT url_hostpath)", condition: "success==0"}, + "errors.4xx_5xx.count": {table: "resources", formula: "COUNT(session_id)", condition: "intDiv(status, 100)!=2"}, + "errors.4xx.count": {table: "resources", formula: "COUNT(session_id)", condition: "intDiv(status, 100)==4"}, + "errors.5xx.count": {table: "resources", formula: "COUNT(session_id)", condition: "intDiv(status, 100)==5"}, + "errors.javascript.impacted_sessions.count": {table: "resources", formula: "COUNT(DISTINCT session_id)", condition: "success=0 AND type='script'"}, + "performance.crashes.count": {table: "sessions", formula: "COUNT(DISTINCT session_id)", condition: "errors_count > 0"}, + "errors.javascript.count": {table: "errors", formula: "COUNT(DISTINCT session_id)", condition: "source=='js_exception'"}, + "errors.backend.count": {table: "errors", formula: "COUNT(DISTINCT session_id)", condition: "source!='js_exception'"}, +} + +//This is the frequency of execution for each threshold +var TimeInterval = map[int64]int64{ + 15: 3, + 30: 5, + 60: 10, + 120: 20, + 240: 30, + 1440: 60, +} + +func (a *Alert) CanCheck() bool { + now := time.Now().Unix() * 1000 + var repetitionBase int64 + + if repetitionBase = a.Options.CurrentPeriod; a.DetectionMethod == "change" && a.Options.CurrentPeriod > a.Options.PreviousPeriod { + repetitionBase = a.Options.PreviousPeriod + } + + if _, ok := TimeInterval[repetitionBase]; !ok { + log.Printf("repetitionBase: %d NOT FOUND", repetitionBase) + return false + } + //for i := int64(0); i <= 10; i++ { + // now += 60 * 1000 + // log.Printf("%s: ((now-*a.CreatedAt)%%TimeInterval[repetitionBase]*60*1000) < 60*1000: %t", a.Name, ((now-*a.CreatedAt)%(TimeInterval[repetitionBase]*60*1000)) < 60*1000) + // log.Printf("now: %d", now) + // log.Printf("*a.CreatedAt: %d", *a.CreatedAt) + // log.Printf("now-*a.CreatedAt: %d", now-*a.CreatedAt) + // log.Printf("(now-*a.CreatedAt)%%TimeInterval[repetitionBase]*60*1000: %d", (now-*a.CreatedAt)%TimeInterval[repetitionBase]*60*1000) + //} + //return false + //log.Printf("%s: a.Options.RenotifyInterval<=0: %t", a.Name, a.Options.RenotifyInterval <= 0) + //log.Printf("%s: a.Options.LastNotification <= 0: %t", a.Name, a.Options.LastNotification <= 0) + //log.Printf("%s: (now-a.Options.LastNotification) > a.Options.RenotifyInterval*60*1000: %t", a.Name, (now-a.Options.LastNotification) > a.Options.RenotifyInterval*60*1000) + //log.Printf("%s: ((now-*a.CreatedAt)%%TimeInterval[repetitionBase]*60*1000) < 60*1000: %t", a.Name, ((now-*a.CreatedAt)%TimeInterval[repetitionBase]*60*1000) < 60*1000) + //log.Printf("%s: TimeInterval[repetitionBase]: %d", a.Name, TimeInterval[repetitionBase]) + return a.DeletedAt == nil && a.Active && + (a.Options.RenotifyInterval <= 0 || + a.Options.LastNotification <= 0 || + ((now - a.Options.LastNotification) > a.Options.RenotifyInterval*60*1000)) && + ((now-*a.CreatedAt)%(TimeInterval[repetitionBase]*60*1000)) < 60*1000 +} + +func (a *Alert) Build() (sq.SelectBuilder, error) { + colDef := LeftToDb[a.Query.Left] + subQ := sq. + Select(colDef.formula + " AS value"). + From(colDef.table). + Where(sq.And{sq.Eq{"project_id": a.ProjectID}, + sq.Expr(colDef.condition)}) + q := sq.Select(fmt.Sprint("value, coalesce(value,0)", a.Query.Operator, a.Query.Right, " AS valid")) + if len(colDef.group) > 0 { + subQ = subQ.Column(colDef.group + " AS group_value") + subQ = subQ.GroupBy(colDef.group) + q = q.Column("group_value") + } + + if a.DetectionMethod == "threshold" { + q = q.FromSelect(subQ.Where(sq.Expr("datetime>=toDateTime(?)", time.Now().Unix()-a.Options.CurrentPeriod*60)), "stat") + } else if a.DetectionMethod == "change" { + if a.Options.Change == "change" { + if len(colDef.group) == 0 { + sub1, args1, _ := subQ.Where(sq.Expr("datetime>=toDateTime(?)", time.Now().Unix()-a.Options.CurrentPeriod*60)).ToSql() + sub2, args2, _ := subQ.Where( + sq.And{ + sq.Expr("datetime=toDateTime(?)", time.Now().Unix()-2*a.Options.CurrentPeriod*60), + }).ToSql() + sub1, _, _ = sq.Expr("SELECT ((" + sub1 + ")-(" + sub2 + ")) AS value").ToSql() + q = q.JoinClause("FROM ("+sub1+") AS stat", append(args1, args2...)...) + } else { + subq1 := subQ.Where(sq.Expr("datetime>=toDateTime(?)", time.Now().Unix()-a.Options.CurrentPeriod*60)) + sub2, args2, _ := subQ.Where( + sq.And{ + sq.Expr("datetime=toDateTime(?)", time.Now().Unix()-2*a.Options.CurrentPeriod*60), + }).ToSql() + sub1 := sq.Select("group_value", "(stat1.value-stat2.value) AS value").FromSelect(subq1, "stat1").JoinClause("INNER JOIN ("+sub2+") AS stat2 USING(group_value)", args2...) + q = q.FromSelect(sub1, "stat") + } + } else if a.Options.Change == "percent" { + if len(colDef.group) == 0 { + sub1, args1, _ := subQ.Where(sq.Expr("datetime>=toDateTime(?)", time.Now().Unix()-a.Options.CurrentPeriod*60)).ToSql() + sub2, args2, _ := subQ.Where( + sq.And{ + sq.Expr("datetime=toDateTime(?)", time.Now().Unix()-a.Options.PreviousPeriod*60-a.Options.CurrentPeriod*60), + }).ToSql() + sub1, _, _ = sq.Expr("SELECT ((" + sub1 + ")/(" + sub2 + ")-1)*100 AS value").ToSql() + q = q.JoinClause("FROM ("+sub1+") AS stat", append(args1, args2...)...) + } else { + subq1 := subQ.Where(sq.Expr("datetime>=toDateTime(?)", time.Now().Unix()-a.Options.CurrentPeriod*60)) + sub2, args2, _ := subQ.Where( + sq.And{ + sq.Expr("datetime=toDateTime(?)", time.Now().Unix()-a.Options.PreviousPeriod*60-a.Options.CurrentPeriod*60), + }).ToSql() + sub1 := sq.Select("group_value", "(stat1.value/stat2.value-1)*100 AS value").FromSelect(subq1, "stat1").JoinClause("INNER JOIN ("+sub2+") AS stat2 USING(group_value)", args2...) + q = q.FromSelect(sub1, "stat") + } + } else { + return q, errors.New("unsupported change method") + } + + } else { + return q, errors.New("unsupported detection method") + } + return q, nil +} diff --git a/backend/pkg/db/postgres/connector.go b/backend/pkg/db/postgres/connector.go new file mode 100644 index 000000000..37e09f812 --- /dev/null +++ b/backend/pkg/db/postgres/connector.go @@ -0,0 +1,63 @@ +package postgres + +import ( + "context" + "log" + + "github.com/jackc/pgx/v4" + "github.com/jackc/pgx/v4/pgxpool" +) + +type Conn struct { + c *pgxpool.Pool // TODO: conditional usage of Pool/Conn (use interface?) +} + +func NewConn(url string) *Conn { + c, err := pgxpool.Connect(context.Background(), url) + if err != nil { + log.Fatalln(err) + } + return &Conn{c} +} + +func (conn *Conn) Close() error { + conn.c.Close() + return nil +} + +func (conn *Conn) query(sql string, args ...interface{}) (pgx.Rows, error) { + return conn.c.Query(context.Background(), sql, args...) +} + +func (conn *Conn) queryRow(sql string, args ...interface{}) pgx.Row { + return conn.c.QueryRow(context.Background(), sql, args...) +} + +func (conn *Conn) exec(sql string, args ...interface{}) error { + _, err := conn.c.Exec(context.Background(), sql, args...) + return err +} + +type _Tx struct { + pgx.Tx +} + +func (conn *Conn) begin() (_Tx, error) { + tx, err := conn.c.Begin(context.Background()) + return _Tx{tx}, err +} + +func (tx _Tx) exec(sql string, args ...interface{}) error { + _, err := tx.Exec(context.Background(), sql, args...) + return err; +} + +func (tx _Tx) rollback() error { + return tx.Rollback(context.Background()) +} + +func (tx _Tx) commit() error { + return tx.Commit(context.Background()) +} + + diff --git a/backend/pkg/db/postgres/errors.go b/backend/pkg/db/postgres/errors.go new file mode 100644 index 000000000..9012bfe6b --- /dev/null +++ b/backend/pkg/db/postgres/errors.go @@ -0,0 +1,16 @@ +package postgres + +import ( + "errors" + + "github.com/jackc/pgconn" + "github.com/jackc/pgerrcode" +) + +func IsPkeyViolation(err error) bool { + var pgErr *pgconn.PgError + if errors.As(err, &pgErr) && pgErr.Code == pgerrcode.UniqueViolation { + return true + } + return false +} \ No newline at end of file diff --git a/backend/pkg/db/postgres/helpers.go b/backend/pkg/db/postgres/helpers.go new file mode 100644 index 000000000..e6e9747e8 --- /dev/null +++ b/backend/pkg/db/postgres/helpers.go @@ -0,0 +1,35 @@ +package postgres + +import ( + "openreplay/backend/pkg/messages" +) + +func getIssueScore(issueEvent *messages.IssueEvent) int { + switch issueEvent.Type { + case "crash", "dead_click", "memory", "cpu": + return 1000 + case "bad_request", "excessive_scrolling", "click_rage", "missing_resource" : + return 500 + case "slow_resource", "slow_page_load": + return 100 + default: + return 100 + } +} + +func calcDomBuildingTime(pe *messages.PageEvent) uint64 { + if pe == nil { + return 0 + } + if pe.DomContentLoadedEventStart < pe.ResponseEnd { + return 0 + } + return pe.DomContentLoadedEventStart - pe.ResponseEnd +} + +func calcResponseTime(pe *messages.PageEvent) uint64 { + if pe.ResponseStart <= pe.ResponseEnd { + return pe.ResponseEnd - pe.ResponseStart + } + return 0 +} \ No newline at end of file diff --git a/backend/pkg/db/postgres/integration.go b/backend/pkg/db/postgres/integration.go new file mode 100644 index 000000000..94351b44d --- /dev/null +++ b/backend/pkg/db/postgres/integration.go @@ -0,0 +1,49 @@ +package postgres + +import ( + "encoding/json" +) + +//go:generate $GOPATH/bin/easytags $GOFILE json + +type Integration struct { + ProjectID uint32 `json:"project_id"` + Provider string `json:"provider"` + //DeletedAt *int64 `json:"deleted_at"` + RequestData json.RawMessage `json:"request_data"` + Options json.RawMessage `json:"options"` +} + +func (pg *Conn) IterateIntegrationsOrdered(iter func(integration *Integration, err error)) error { + rows, err := pg.query(` + SELECT project_id, provider, options, request_data + FROM integrations + `) + if err != nil { + return err + } + defer rows.Close() + + for rows.Next() { + i := new(Integration) + if err := rows.Scan(&i.ProjectID, &i.Provider, &i.Options, &i.RequestData); err != nil { + iter(nil, err) + continue + } + iter(i, nil) + } + + if err = rows.Err(); err != nil { + return err + } + return nil +} + +func (pg *Conn) UpdateIntegrationRequestData(i *Integration) error { + return pg.exec(` + UPDATE integrations + SET request_data = $1 + WHERE project_id=$2 AND provider=$3`, + i.RequestData, i.ProjectID, i.Provider, + ) +} diff --git a/backend/pkg/db/postgres/listener.go b/backend/pkg/db/postgres/listener.go new file mode 100644 index 000000000..0f6d73ef7 --- /dev/null +++ b/backend/pkg/db/postgres/listener.go @@ -0,0 +1,82 @@ +package postgres + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/jackc/pgx/v4" + + +) + +type Listener struct { + conn *pgx.Conn + Integrations chan *Integration + Alerts chan *Alert + Errors chan error +} + +func NewIntegrationsListener(url string) (*Listener, error) { + conn, err := pgx.Connect(context.Background(), url) + if err != nil { + return nil, err + } + listener := &Listener{ + conn: conn, + Errors: make(chan error), + } + listener.Integrations = make(chan *Integration, 50) + if _, err := conn.Exec(context.Background(), "LISTEN integration"); err != nil { + return nil, err + } + go listener.listen() + return listener, nil +} + +func NewAlertsListener(url string) (*Listener, error) { + conn, err := pgx.Connect(context.Background(), url) + if err != nil { + return nil, err + } + listener := &Listener{ + conn: conn, + Errors: make(chan error), + } + listener.Alerts = make(chan *Alert, 50) + if _, err := conn.Exec(context.Background(), "LISTEN alert"); err != nil { + return nil, err + } + go listener.listen() + return listener, nil +} + +func (listener *Listener) listen() { + for { + notification, err := listener.conn.WaitForNotification(context.Background()) + if err != nil { + listener.Errors <- err + continue + } + switch notification.Channel { + case "integration": + integrationP := new(Integration) + if err := json.Unmarshal([]byte(notification.Payload), integrationP); err != nil { + listener.Errors <- fmt.Errorf("%v | Payload: %v", err, notification.Payload) + } else { + listener.Integrations <- integrationP + } + case "alert": + alertP := new(Alert) + if err := json.Unmarshal([]byte(notification.Payload), alertP); err != nil { + listener.Errors <- fmt.Errorf("%v | Payload: %v", err, notification.Payload) + } else { + listener.Alerts <- alertP + } + } + } +} + +func (listener *Listener) Close() error { + return listener.conn.Close(context.Background()) +} diff --git a/backend/pkg/db/postgres/messages_common.go b/backend/pkg/db/postgres/messages_common.go new file mode 100644 index 000000000..e91af068f --- /dev/null +++ b/backend/pkg/db/postgres/messages_common.go @@ -0,0 +1,224 @@ +package postgres + +import ( + "log" + "strings" + "fmt" + + "openreplay/backend/pkg/hashid" + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/db/types" +) + +func getAutocompleteType(baseType string, platform string) string { + if platform == "web" { + return baseType + } + return baseType + "_" + strings.ToUpper(platform) + +} + +func (conn *Conn) insertAutocompleteValue(sessionID uint64, tp string, value string) { + if len(value) == 0 { + return + } + if err := conn.exec(` + INSERT INTO autocomplete ( + value, + type, + project_id + ) (SELECT + $1, $2, project_id + FROM sessions + WHERE session_id = $3 + ) ON CONFLICT DO NOTHING`, + value, tp, sessionID, + ); err != nil { + log.Printf("Insert autocomplete error: %v", err) + } +} + +func (conn *Conn) InsertSessionStart(sessionID uint64, s *types.Session) error { + if err := conn.exec(` + INSERT INTO sessions ( + session_id, project_id, start_ts, + user_uuid, user_device, user_device_type, user_country, + user_os, user_os_version, + rev_id, + tracker_version, issue_score, + platform, + user_agent, user_browser, user_browser_version, user_device_memory_size, user_device_heap_size + ) VALUES ( + $1, $2, $3, + $4, $5, $6, $7, + $8, NULLIF($9, ''), + NULLIF($10, ''), + $11, $12, + $13, + NULLIF($14, ''), NULLIF($15, ''), NULLIF($16, ''), NULLIF($17, 0), NULLIF($18, 0::bigint) + )`, + sessionID, s.ProjectID, s.Timestamp, + s.UserUUID, s.UserDevice, s.UserDeviceType, s.UserCountry, + s.UserOS, s.UserOSVersion, + s.RevID, + s.TrackerVersion, s.Timestamp/1000, + s.Platform, + s.UserAgent, s.UserBrowser, s.UserBrowserVersion, s.UserDeviceMemorySize, s.UserDeviceHeapSize, + ); err != nil { + return err; + } + conn.insertAutocompleteValue(sessionID, getAutocompleteType("USEROS", s.Platform), s.UserOS) + conn.insertAutocompleteValue(sessionID, getAutocompleteType("USERDEVICE", s.Platform), s.UserDevice) + conn.insertAutocompleteValue(sessionID, getAutocompleteType("USERCOUNTRY", s.Platform), s.UserCountry) + conn.insertAutocompleteValue(sessionID, getAutocompleteType("REVID", s.Platform), s.RevID) + // s.Platform == "web" + conn.insertAutocompleteValue(sessionID, "USERBROWSER", s.UserBrowser) + return nil +} + +func (conn *Conn) InsertSessionEnd(sessionID uint64, timestamp uint64) (uint64, error) { + // Search acceleration + if err := conn.exec(` + UPDATE sessions + SET issue_types=(SELECT COALESCE(ARRAY_AGG(DISTINCT ps.type), '{}')::issue_type[] + FROM events_common.issues + INNER JOIN issues AS ps USING (issue_id) + WHERE session_id = $1) + WHERE session_id = $1 + `, + sessionID, + ); err != nil { + log.Printf("Error while updating issue_types %v", sessionID) + } + + var dur uint64 + if err := conn.queryRow(` + UPDATE sessions SET duration=$2 - start_ts + WHERE session_id=$1 + RETURNING duration + `, + sessionID, timestamp, + ).Scan(&dur); err != nil { + return 0, err + } + return dur, nil +} + +func (conn *Conn) InsertRequest(sessionID uint64, timestamp uint64, index uint64, url string, duration uint64, success bool) error { + return conn.exec(` + INSERT INTO events_common.requests ( + session_id, timestamp, seq_index, url, duration, success + ) VALUES ( + $1, $2, $3, $4, $5, $6 + )`, + sessionID, timestamp, + getSqIdx(index), + url, duration, success, + ) +} + +func (conn *Conn) InsertCustomEvent(sessionID uint64, timestamp uint64, index uint64, name string, payload string) error { + return conn.exec(` + INSERT INTO events_common.customs ( + session_id, timestamp, seq_index, name, payload + ) VALUES ( + $1, $2, $3, $4, $5 + )`, + sessionID, timestamp, + getSqIdx(index), + name, payload, + ) +} + +func (conn *Conn) InsertUserID(sessionID uint64, userID string) error { + return conn.exec(` + UPDATE sessions SET user_id = $1 + WHERE session_id = $2`, + userID, sessionID, + ) +} + +func (conn *Conn) InsertUserAnonymousID(sessionID uint64, userAnonymousID string) error { + return conn.exec(` + UPDATE sessions SET user_anonymous_id = $1 + WHERE session_id = $2`, + userAnonymousID, sessionID, + ) +} + + +func (conn *Conn) InsertMetadata(sessionID uint64, keyNo uint, value string) error { + return conn.exec(fmt.Sprintf(` + UPDATE sessions SET metadata_%v = $1 + WHERE session_id = $2`, keyNo), + value, sessionID, + ) + // conn.insertAutocompleteValue(sessionID, "METADATA", value) +} + +func (conn *Conn) InsertIssueEvent(sessionID uint64, projectID uint32, e *messages.IssueEvent) error { + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + issueID := hashid.IssueID(projectID, e) + + // TEMP. TODO: nullable & json message field type + payload := &e.Payload; + if *payload == "" || *payload == "{}" { + payload = nil + } + context := &e.Context; + if *context == "" || *context == "{}" { + context = nil + } + + if err = tx.exec(` + INSERT INTO issues ( + project_id, issue_id, type, context_string, context + ) (SELECT + project_id, $2, $3, $4, CAST($5 AS jsonb) + FROM sessions + WHERE session_id = $1 + )ON CONFLICT DO NOTHING`, + sessionID, issueID, e.Type, e.ContextString, context, + ); err != nil { + return err + } + if err = tx.exec(` + INSERT INTO events_common.issues ( + session_id, issue_id, timestamp, seq_index, payload + ) VALUES ( + $1, $2, $3, $4, CAST($5 AS jsonb) + )`, + sessionID, issueID, e.Timestamp, + getSqIdx(e.MessageID), + payload, + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET issue_score = issue_score + $2 + WHERE session_id = $1`, + sessionID, getIssueScore(e), + ); err != nil { + return err + } + // TODO: no redundancy. Deliver to UI in a different way + if e.Type == "custom" { + if err = tx.exec(` + INSERT INTO events_common.customs + (session_id, seq_index, timestamp, name, payload, level) + VALUES + ($1, $2, $3, $4, $5, 'error') + `, + sessionID, getSqIdx(e.MessageID), e.Timestamp, e.ContextString, e.Payload, + ); err != nil { + return err + } + } + return tx.commit() +} + + diff --git a/backend/pkg/db/postgres/messages_ios.go b/backend/pkg/db/postgres/messages_ios.go new file mode 100644 index 000000000..b54a88af7 --- /dev/null +++ b/backend/pkg/db/postgres/messages_ios.go @@ -0,0 +1,181 @@ +package postgres + +import ( + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/hashid" + "openreplay/backend/pkg/url" +) + +func (conn *Conn) InsertIOSCustomEvent(sessionID uint64, e *messages.IOSCustomEvent) error { + err := conn.InsertCustomEvent(sessionID, e.Timestamp, e.Index, e.Name, e.Payload) + if err == nil { + conn.insertAutocompleteValue(sessionID, "CUSTOM_IOS", e.Name) + } + return err +} + +func (conn *Conn) InsertIOSUserID(sessionID uint64, userID *messages.IOSUserID) error { + err := conn.InsertUserID(sessionID, userID.Value) + if err == nil { + conn.insertAutocompleteValue(sessionID, "USERID_IOS", userID.Value) + } + return err +} + +func (conn *Conn) InsertIOSUserAnonymousID(sessionID uint64, userAnonymousID *messages.IOSUserAnonymousID) error { + err := conn.InsertUserAnonymousID(sessionID, userAnonymousID.Value) + if err == nil { + conn.insertAutocompleteValue(sessionID, "USERANONYMOUSID_IOS", userAnonymousID.Value) + } + return err +} + +func (conn *Conn) InsertIOSNetworkCall(sessionID uint64, e *messages.IOSNetworkCall) error { + err := conn.InsertRequest(sessionID, e.Timestamp, e.Index, e.URL, e.Duration, e.Success) + if err == nil { + conn.insertAutocompleteValue(sessionID, "REQUEST_IOS", url.DiscardURLQuery(e.URL)) + } + return err +} + +func (conn *Conn) InsertIOSScreenEnter(sessionID uint64, screenEnter *messages.IOSScreenEnter) error { + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + + if err = tx.exec(` + INSERT INTO events_ios.views ( + session_id, timestamp, seq_index, name + ) VALUES ( + $1, $2, $3, $4 + )`, + sessionID, screenEnter.Timestamp, screenEnter.Index, screenEnter.ViewName, + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET pages_count = pages_count + 1 + WHERE session_id = $1`, + sessionID, + ); err != nil { + return err + } + if err = tx.commit(); err != nil { + return err + } + conn.insertAutocompleteValue(sessionID, "VIEW_IOS", screenEnter.ViewName) + return nil +} + +func (conn *Conn) InsertIOSClickEvent(sessionID uint64, clickEvent *messages.IOSClickEvent) error { + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + + if err = tx.exec(` + INSERT INTO events_ios.clicks ( + session_id, timestamp, seq_index, label + ) VALUES ( + $1, $2, $3, $4 + )`, + sessionID, clickEvent.Timestamp, clickEvent.Index, clickEvent.Label, + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET events_count = events_count + 1 + WHERE session_id = $1`, + sessionID, + ); err != nil { + return err + } + if err = tx.commit(); err != nil { + return err + } + conn.insertAutocompleteValue(sessionID, "CLICK_IOS", clickEvent.Label) + return nil +} + +func (conn *Conn) InsertIOSInputEvent(sessionID uint64, inputEvent *messages.IOSInputEvent) error { + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + + var value interface{} = inputEvent.Value + if inputEvent.ValueMasked { + value = nil + } + + if err = tx.exec(` + INSERT INTO events_ios.inputs ( + session_id, timestamp, seq_index, label, value + ) VALUES ( + $1, $2, $3, $4, $5 + )`, + sessionID, inputEvent.Timestamp, inputEvent.Index, inputEvent.Label, value, + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET events_count = events_count + 1 + WHERE session_id = $1`, + sessionID, + ); err != nil { + return err + } + if err = tx.commit(); err != nil { + return err + } + conn.insertAutocompleteValue(sessionID, "INPUT_IOS", inputEvent.Label) + // conn.insertAutocompleteValue(sessionID, "INPUT_VALUE", inputEvent.Label) + return nil +} + +func (conn *Conn) InsertIOSCrash(sessionID uint64, projectID uint32, crash *messages.IOSCrash) error { + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + + crashID := hashid.IOSCrashID(projectID, crash) + + if err = tx.exec(` + INSERT INTO crashes_ios ( + project_id, crash_id, name, reason, stacktrace + ) (SELECT + project_id, $2, $3, $4, $5 + FROM sessions + WHERE session_id = $1 + )ON CONFLICT DO NOTHING`, + sessionID, crashID, crash.Name, crash.Reason, crash.Stacktrace, + ); err != nil { + return err + } + if err = tx.exec(` + INSERT INTO events_ios.crashes ( + session_id, timestamp, seq_index, crash_id + ) VALUES ( + $1, $2, $3, $4 + )`, + sessionID, crash.Timestamp, crash.Index, crashID, + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET errors_count = errors_count + 1, issue_score = issue_score + 1000 + WHERE session_id = $1`, + sessionID, + ); err != nil { + return err + } + return tx.commit() +} + + diff --git a/backend/pkg/db/postgres/messages_web.go b/backend/pkg/db/postgres/messages_web.go new file mode 100644 index 000000000..a39eb73d5 --- /dev/null +++ b/backend/pkg/db/postgres/messages_web.go @@ -0,0 +1,200 @@ +package postgres + +import ( + "math" + + "openreplay/backend/pkg/hashid" + "openreplay/backend/pkg/url" + . "openreplay/backend/pkg/messages" +) + +// TODO: change messages and replace everywhere to e.Index +func getSqIdx(messageID uint64) uint { + return uint(messageID % math.MaxInt32) +} + + +func (conn *Conn) InsertWebCustomEvent(sessionID uint64, e *CustomEvent) error { + err := conn.InsertCustomEvent(sessionID, e.Timestamp, + e.MessageID, + e.Name, e.Payload) + if err == nil { + conn.insertAutocompleteValue(sessionID, "CUSTOM", e.Name) + } + return err +} + +func (conn *Conn) InsertWebUserID(sessionID uint64, userID *UserID) error { + err := conn.InsertUserID(sessionID, userID.ID) + if err == nil { + conn.insertAutocompleteValue(sessionID, "USERID", userID.ID) + } + return err +} + +func (conn *Conn) InsertWebUserAnonymousID(sessionID uint64, userAnonymousID *UserAnonymousID) error { + err := conn.InsertUserAnonymousID(sessionID, userAnonymousID.ID) + if err == nil { + conn.insertAutocompleteValue(sessionID, "USERANONYMOUSID", userAnonymousID.ID) + } + return err +} + +func (conn *Conn) InsertWebResourceEvent(sessionID uint64, e *ResourceEvent) error { + if e.Type != "fetch" { + return nil + } + err := conn.InsertRequest(sessionID, e.Timestamp, + e.MessageID, + e.URL, e.Duration, e.Success, + ) + if err == nil { + conn.insertAutocompleteValue(sessionID, "REQUEST", url.DiscardURLQuery(e.URL)) + } + return err +} + +// TODO: fix column "dom_content_loaded_event_end" of relation "pages" +func (conn *Conn) InsertWebPageEvent(sessionID uint64, e *PageEvent) error { + host, path, err := url.GetURLParts(e.URL) + if err != nil { + return err + } + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + if err := tx.exec(` + INSERT INTO events.pages ( + session_id, message_id, timestamp, referrer, base_referrer, host, path, base_path, + dom_content_loaded_time, load_time, response_end, first_paint_time, first_contentful_paint_time, speed_index, visually_complete, time_to_interactive, + response_time, dom_building_time + ) VALUES ( + $1, $2, $3, $4, $5, $6, $7, $8, + NULLIF($9, 0), NULLIF($10, 0), NULLIF($11, 0), NULLIF($12, 0), NULLIF($13, 0), NULLIF($14, 0), NULLIF($15, 0), NULLIF($16, 0), + NULLIF($17, 0), NULLIF($18, 0) + ) + `, + sessionID, e.MessageID, e.Timestamp, e.Referrer, url.DiscardURLQuery(e.Referrer), host, path, url.DiscardURLQuery(path), + e.DomContentLoadedEventEnd, e.LoadEventEnd, e.ResponseEnd, e.FirstPaint, e.FirstContentfulPaint, e.SpeedIndex, e.VisuallyComplete, e.TimeToInteractive, + calcResponseTime(e), calcDomBuildingTime(e), + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET pages_count = pages_count + 1 + WHERE session_id = $1`, + sessionID, + ); err != nil { + return err + } + if err = tx.commit(); err != nil { + return err + } + conn.insertAutocompleteValue(sessionID, url.DiscardURLQuery(path), "LOCATION") + conn.insertAutocompleteValue(sessionID, url.DiscardURLQuery(e.Referrer), "REFERRER") + return nil +} + +func (conn *Conn) InsertWebClickEvent(sessionID uint64, e *ClickEvent) error { + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + if err = tx.exec(` + INSERT INTO events.clicks + (session_id, message_id, timestamp, label) + VALUES + ($1, $2, $3, NULLIF($4, '')) + `, + sessionID, e.MessageID, e.Timestamp, e.Label, + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET events_count = events_count + 1 + WHERE session_id = $1`, + sessionID, + ); err != nil { + return err + } + if err = tx.commit(); err != nil { + return err + } + conn.insertAutocompleteValue(sessionID, e.Label, "CLICK") + return nil +} + + +func (conn *Conn) InsertWebInputEvent(sessionID uint64, e *InputEvent) error { + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + value := &e.Value + if e.ValueMasked { + value = nil + } + if err = tx.exec(` + INSERT INTO events.inputs + (session_id, message_id, timestamp, value, label) + VALUES + ($1, $2, $3, $4, NULLIF($5,'')) + `, + sessionID, e.MessageID, e.Timestamp, value, e.Label, + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET events_count = events_count + 1 + WHERE session_id = $1`, + sessionID, + ); err != nil { + return err + } + if err = tx.commit(); err != nil { + return err + } + conn.insertAutocompleteValue(sessionID, e.Label, "INPUT") + return nil +} + +func (conn *Conn) InsertWebErrorEvent(sessionID uint64, projectID uint32, e *ErrorEvent) error { + tx, err := conn.begin() + if err != nil { + return err + } + defer tx.rollback() + errorID := hashid.WebErrorID(projectID, e) + if err = tx.exec(` + INSERT INTO errors + (error_id, project_id, source, name, message, payload) + VALUES + ($1, $2, $3, $4, $5, $6) + ON CONFLICT DO NOTHING`, + errorID, projectID, e.Source, e.Name, e.Message, e.Payload, + ); err != nil { + return err + } + if err = tx.exec(` + INSERT INTO events.errors + (session_id, message_id, timestamp, error_id) + VALUES + ($1, $2, $3, $4) + `, + sessionID, e.MessageID, e.Timestamp, errorID, + ); err != nil { + return err + } + if err = tx.exec(` + UPDATE sessions SET errors_count = errors_count + 1, issue_score = issue_score + 1000 + WHERE session_id = $1`, + sessionID, + ); err != nil { + return err + } + return tx.commit() +} diff --git a/backend/pkg/db/postgres/messages_web_stats.go b/backend/pkg/db/postgres/messages_web_stats.go new file mode 100644 index 000000000..9e3b5bc77 --- /dev/null +++ b/backend/pkg/db/postgres/messages_web_stats.go @@ -0,0 +1,68 @@ +package postgres + +import ( + "openreplay/backend/pkg/url" + . "openreplay/backend/pkg/messages" +) + + + +func (conn *Conn) InsertWebStatsLongtask(sessionID uint64, l *LongTask) error { + return nil // Do we even use them? + // conn.exec(``); +} + + +func (conn *Conn) InsertWebStatsPerformance(sessionID uint64, p *PerformanceTrackAggr) error { + timestamp := (p.TimestampEnd + p.TimestampStart) /2 + return conn.exec(` + INSERT INTO events.performance ( + session_id, timestamp, message_id, + min_fps, avg_fps, max_fps, + min_cpu, avg_cpu, max_cpu, + min_total_js_heap_size, avg_total_js_heap_size, max_total_js_heap_size, + min_used_js_heap_size, avg_used_js_heap_size, max_used_js_heap_size + ) VALUES ( + $1, $2, $3, + $4, $5, $6, + $7, $8, $9, + $10, $11, $12, + $13, $14, $15 + )`, + sessionID, timestamp, timestamp, // ??? TODO: primary key by timestamp+session_id + p.MinFPS, p.AvgFPS, p.MaxFPS, + p.MinCPU, p.AvgCPU, p.MinCPU, + p.MinTotalJSHeapSize, p.AvgTotalJSHeapSize, p.MaxTotalJSHeapSize, + p.MinUsedJSHeapSize, p.AvgUsedJSHeapSize, p.MaxUsedJSHeapSize, + ); +} + +func (conn *Conn) InsertWebStatsResourceEvent(sessionID uint64, e *ResourceEvent) error { + host, _, err := url.GetURLParts(e.URL) + if err != nil { + return err + } + return conn.exec(` + INSERT INTO events.resources ( + session_id, timestamp, message_id, + type, + url, url_host, url_hostpath, + success, status, + method, + duration, ttfb, header_size, encoded_body_size, decoded_body_size + ) VALUES ( + $1, $2, $3, + $4, + $5, $6, $7, + $8, $9, + NULLIF($10, '')::events.resource_method, + NULLIF($11, 0), NULLIF($12, 0), NULLIF($13, 0), NULLIF($14, 0), NULLIF($15, 0) + )`, + sessionID, e.Timestamp, e.MessageID, + e.Type, + e.URL, host, url.DiscardURLQuery(e.URL), + e.Success, e.Status, + url.EnsureMethod(e.Method), + e.Duration, e.TTFB, e.HeaderSize, e.EncodedBodySize, e.DecodedBodySize, + ) +} \ No newline at end of file diff --git a/backend/pkg/db/postgres/notification.go b/backend/pkg/db/postgres/notification.go new file mode 100644 index 000000000..063e92f7b --- /dev/null +++ b/backend/pkg/db/postgres/notification.go @@ -0,0 +1,60 @@ +package postgres + +import ( + "bytes" + "encoding/json" + "log" + "net/http" +) + +//go:generate $GOPATH/bin/easytags $GOFILE json + +type TenantNotification struct { + TenantId uint32 `db:"tenant_id" json:"tenantId"` + Title string `db:"title" json:"title"` + Description string `db:"description" json:"description"` + ButtonText string `db:"button_text" json:"buttonText"` + ButtonUrl string `db:"button_url" json:"buttonUrl"` + ImageUrl *string `db:"image_url" json:"imageUrl"` + Options map[string]interface{} `db:"options" json:"options"` +} + +type Notifications struct { + Notifications []*TenantNotification `json:"notifications"` + Token string `json:"token"` +} + +func (n *Notifications) Send(url string) { + n.Token = "nF46JdQqAM5v9KI9lPMpcu8o9xiJGvNNWOGL7TJP" + body, err := json.Marshal(n) + if err != nil { + log.Println(err) + return + } + //log.Println("------------ Sending a new notification") + req, err := http.NewRequest("POST", url, bytes.NewBuffer(body)) + if err != nil { + log.Printf("error in POST notifications: %v\n", err) + return + } + //req.Header.Set("X-Custom-Header", "myvalue") + req.Header.Set("Content-Type", "application/json") + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + panic(err) + } + defer resp.Body.Close() + //log.Println("response Status:", resp.Status) + //log.Println("response Headers:", resp.Header) + //respBody, _ := ioutil.ReadAll(resp.Body) + //log.Println("response Body:", string(respBody)) +} + +func (n TenantNotification) Send(url string) { + body := Notifications{ + Notifications: []*TenantNotification{&n}, + } + body.Send(url) +} diff --git a/backend/pkg/db/postgres/project.go b/backend/pkg/db/postgres/project.go new file mode 100644 index 000000000..461db66fb --- /dev/null +++ b/backend/pkg/db/postgres/project.go @@ -0,0 +1,45 @@ +package postgres + +import ( + "github.com/jackc/pgx/v4" + . "openreplay/backend/pkg/db/types" +) + +func (conn *Conn) GetProjectByKey(projectKey string) (*Project, error) { + p := &Project{ ProjectKey: projectKey } + if err := conn.queryRow(` + SELECT max_session_duration, sample_rate, project_id + FROM projects + WHERE project_key=$1 AND active = true + `, + projectKey, + ).Scan(&p.MaxSessionDuration, &p.SampleRate, &p.ProjectID); err != nil { + if err == pgx.ErrNoRows { + err = nil + } + return nil, err + } + return p, nil +} + +// TODO: logical separation of metadata +func (conn *Conn) GetProject(projectID uint32) (*Project, error) { + p := &Project{ ProjectID: projectID } + if err := conn.queryRow(` + SELECT project_key, max_session_duration, + metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, + metadata_6, metadata_7, metadata_8, metadata_9, metadata_10 + FROM projects + WHERE project_id=$1 AND active = true + `, + projectID, + ).Scan(&p.ProjectKey,&p.MaxSessionDuration, + &p.Metadata1, &p.Metadata2, &p.Metadata3, &p.Metadata4, &p.Metadata5, + &p.Metadata6, &p.Metadata7, &p.Metadata8, &p.Metadata9, &p.Metadata10); err != nil { + if err == pgx.ErrNoRows { + err = nil + } + return nil, err + } + return p, nil +} \ No newline at end of file diff --git a/backend/pkg/db/postgres/session.go b/backend/pkg/db/postgres/session.go new file mode 100644 index 000000000..c2e731088 --- /dev/null +++ b/backend/pkg/db/postgres/session.go @@ -0,0 +1,106 @@ +package postgres + +//import . "openreplay/backend/pkg/messages" +import . "openreplay/backend/pkg/db/types" +//import "log" + +func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { + s := &Session{ SessionID: sessionID } + var revID, userOSVersion *string + if err := conn.queryRow(` + SELECT platform, + duration, project_id, start_ts, + user_uuid, user_os, user_os_version, + user_device, user_device_type, user_country, + rev_id, tracker_version, + user_id, user_anonymous_id, + metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, + metadata_6, metadata_7, metadata_8, metadata_9, metadata_10 + FROM sessions + WHERE session_id=$1 + `, + sessionID, + ).Scan(&s.Platform, + &s.Duration, &s.ProjectID, &s.Timestamp, + &s.UserUUID, &s.UserOS, &userOSVersion, + &s.UserDevice, &s.UserDeviceType, &s.UserCountry, + &revID, &s.TrackerVersion, + &s.UserID, &s.UserAnonymousID, + &s.Metadata1, &s.Metadata2, &s.Metadata3, &s.Metadata4, &s.Metadata5, + &s.Metadata6, &s.Metadata7, &s.Metadata8, &s.Metadata9, &s.Metadata10); err != nil { + return nil, err + } + if userOSVersion != nil { // TODO: choose format, make f + s.UserOSVersion = *userOSVersion + } + if revID != nil { + s.RevID = *revID + } + return s, nil +} + +// func (conn *Conn) GetSessionClickEvents(sessionID uint64) (list []IOSClickEvent, err error) { +// rows, err := conn.query(` +// SELECT +// timestamp, seq_index, label +// FROM events_ios.clicks +// WHERE session_id=$1 +// `, sessionID) +// if err != nil { +// return err +// } +// defer rows.Close() +// for rows.Next() { +// e := new(IOSClickEvent) +// if err = rows.Scan(&e.Timestamp, &e.Index, &e.Label); err != nil { +// log.Printf("Error while scanning click events: %v", err) +// } else { +// list = append(list, e) +// } +// } +// return list +// } + +// func (conn *Conn) GetSessionInputEvents(sessionID uint64) (list []IOSInputEvent, err error) { +// rows, err := conn.query(` +// SELECT +// timestamp, seq_index, label, value +// FROM events_ios.inputs +// WHERE session_id=$1 +// `, sessionID) +// if err != nil { +// return err +// } +// defer rows.Close() +// for rows.Next() { +// e := new(IOSInputEvent) +// if err = rows.Scan(&e.Timestamp, &e.Index, &e.Label, &e.Value); err != nil { +// log.Printf("Error while scanning click events: %v", err) +// } else { +// list = append(list, e) +// } +// } +// return list +// } + +// func (conn *Conn) GetSessionCrashEvents(sessionID uint64) (list []IOSCrash, err error) { +// rows, err := conn.query(` +// SELECT +// timestamp, seq_index +// FROM events_ios.crashes +// WHERE session_id=$1 +// `, sessionID) +// if err != nil { +// return err +// } +// defer rows.Close() +// for rows.Next() { +// e := new(IOSCrash) +// if err = rows.Scan(&e.Timestamp, &e.Index, &e.Label, &e.Value); err != nil { +// log.Printf("Error while scanning click events: %v", err) +// } else { +// list = append(list, e) +// } +// } +// return list +// } \ No newline at end of file diff --git a/backend/pkg/db/postgres/unstarted_session.go b/backend/pkg/db/postgres/unstarted_session.go new file mode 100644 index 000000000..162946e97 --- /dev/null +++ b/backend/pkg/db/postgres/unstarted_session.go @@ -0,0 +1,45 @@ +package postgres + +type UnstartedSession struct { + ProjectKey string + TrackerVersion string + DoNotTrack bool + Platform string + UserAgent string + UserOS string + UserOSVersion string + UserBrowser string + UserBrowserVersion string + UserDevice string + UserDeviceType string + UserCountry string +} + +func (conn *Conn) InsertUnstartedSession(s UnstartedSession) error { + return conn.exec(` + INSERT INTO unstarted_sessions ( + project_id, + tracker_version, do_not_track, + platform, user_agent, + user_os, user_os_version, + user_browser, user_browser_version, + user_device, user_device_type, + user_country + ) VALUES ( + (SELECT project_id FROM projects WHERE project_key = $1), + $2, $3, + $4, $5, + $6, $7, + $8, $9, + $10, $11, + $12 + )`, + s.ProjectKey, + s.TrackerVersion, s.DoNotTrack, + s.Platform, s.UserAgent, + s.UserOS, s.UserOSVersion, + s.UserBrowser, s.UserBrowserVersion, + s.UserDevice, s.UserDeviceType, + s.UserCountry, + ) +} diff --git a/backend/pkg/db/types/project.go b/backend/pkg/db/types/project.go new file mode 100644 index 000000000..9a267d0c0 --- /dev/null +++ b/backend/pkg/db/types/project.go @@ -0,0 +1,53 @@ +package types + +type Project struct { + ProjectID uint32 + ProjectKey string + MaxSessionDuration int64 + SampleRate byte + Metadata1 *string + Metadata2 *string + Metadata3 *string + Metadata4 *string + Metadata5 *string + Metadata6 *string + Metadata7 *string + Metadata8 *string + Metadata9 *string + Metadata10 *string +} + + +func (p *Project) GetMetadataNo(key string) uint { + if p.Metadata1 != nil && *(p.Metadata1) == key { + return 1 + } + if p.Metadata2 != nil && *(p.Metadata2) == key { + return 2 + } + if p.Metadata3 != nil && *(p.Metadata3) == key { + return 3 + } + if p.Metadata4 != nil && *(p.Metadata4) == key { + return 4 + } + if p.Metadata5 != nil && *(p.Metadata5) == key { + return 5 + } + if p.Metadata6 != nil && *(p.Metadata6) == key { + return 6 + } + if p.Metadata7 != nil && *(p.Metadata7) == key { + return 7 + } + if p.Metadata8 != nil && *(p.Metadata8) == key { + return 8 + } + if p.Metadata9 != nil && *(p.Metadata9) == key { + return 9 + } + if p.Metadata10 != nil && *(p.Metadata10) == key { + return 10 + } + return 0 +} diff --git a/backend/pkg/db/types/session.go b/backend/pkg/db/types/session.go new file mode 100644 index 000000000..0205f76f3 --- /dev/null +++ b/backend/pkg/db/types/session.go @@ -0,0 +1,65 @@ +package types + +type Session struct { + SessionID uint64 + Timestamp uint64 + ProjectID uint32 + TrackerVersion string + RevID string + UserUUID string + UserOS string + UserOSVersion string + UserDevice string + UserCountry string + + Duration *uint64 + PagesCount int + EventsCount int + ErrorsCount int + UserID *string + UserAnonymousID *string + Metadata1 *string + Metadata2 *string + Metadata3 *string + Metadata4 *string + Metadata5 *string + Metadata6 *string + Metadata7 *string + Metadata8 *string + Metadata9 *string + Metadata10 *string + + Platform string + // Only-web properties + UserAgent string + UserBrowser string + UserBrowserVersion string + UserDeviceType string + UserDeviceMemorySize uint64 + UserDeviceHeapSize uint64 +} + +func (s *Session) SetMetadata(keyNo uint, value string) { + switch (keyNo) { + case 1: + s.Metadata1 = &value + case 2: + s.Metadata2 = &value + case 3: + s.Metadata3 = &value + case 4: + s.Metadata4 = &value + case 5: + s.Metadata5 = &value + case 6: + s.Metadata6 = &value + case 7: + s.Metadata7 = &value + case 8: + s.Metadata8 = &value + case 9: + s.Metadata9 = &value + case 10: + s.Metadata10 = &value + } +} \ No newline at end of file diff --git a/backend/pkg/dev/profiling/profiling.go b/backend/pkg/dev/profiling/profiling.go new file mode 100644 index 000000000..139aaeac6 --- /dev/null +++ b/backend/pkg/dev/profiling/profiling.go @@ -0,0 +1,37 @@ +package profiling + +import ( + "log" + "net/http" + "github.com/gorilla/mux" + _ "net/http/pprof" +) + +func Profile() { + go func() { + router := mux.NewRouter() + router.PathPrefix("/debug/pprof/").Handler(http.DefaultServeMux) + log.Println("Starting profiler...") + if err := http.ListenAndServe(":6060", router); err != nil { + panic(err) + } + }() +} + + +/* + +docker run -p 6060:6060 -e REQUIRED_ENV=http://value -e ANOTHER_ENV=anothervalue workername + +THEN +go tool pprof http://localhost:6060/debug/pprof/heap +OR +go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30 + +(Look up https://golang.org/pkg/net/http/pprof/) + + +THEN +https://www.speedscope.app/ + +*/ \ No newline at end of file diff --git a/backend/pkg/env/aws.go b/backend/pkg/env/aws.go new file mode 100644 index 000000000..dd277f2b1 --- /dev/null +++ b/backend/pkg/env/aws.go @@ -0,0 +1,29 @@ +package env + +import ( + "log" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + _session "github.com/aws/aws-sdk-go/aws/session" +) + +func AWSSessionOnRegion(region string) *_session.Session { + AWS_ACCESS_KEY_ID := String("AWS_ACCESS_KEY_ID") + AWS_SECRET_ACCESS_KEY := String("AWS_SECRET_ACCESS_KEY") + config := &aws.Config{ + Region: aws.String(region), + Credentials: credentials.NewStaticCredentials(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, ""), + } + AWS_ENDPOINT := StringOptional("AWS_ENDPOINT") + if AWS_ENDPOINT != "" { + config.Endpoint = aws.String(AWS_ENDPOINT) + config.DisableSSL = aws.Bool(true) + config.S3ForcePathStyle = aws.Bool(true) + } + aws_session, err := _session.NewSession(config) + if err != nil { + log.Fatalf("AWS session error: %v\n", err) + } + return aws_session +} diff --git a/backend/pkg/env/fargate.go b/backend/pkg/env/fargate.go new file mode 100644 index 000000000..b0f1da9ca --- /dev/null +++ b/backend/pkg/env/fargate.go @@ -0,0 +1,41 @@ +package env + +import ( + "encoding/json" + "errors" + "net" + "net/http" + "os" +) + +type fargateTaskContainer struct { + Networks []struct { + IPv4Addresses []string + } +} + +func fargateTaskIP() (net.IP, error) { + res, err := http.Get(os.Getenv("ECS_CONTAINER_METADATA_URI")) + if err != nil { + return nil, err + } + defer res.Body.Close() + + container := fargateTaskContainer{} + if err := json.NewDecoder(res.Body).Decode(&container); err != nil { + return nil, err + } + if len(container.Networks) != 1 { + return nil, errors.New("container should have exactly one network") + } + network := container.Networks[0] + if len(network.IPv4Addresses) != 1 { + return nil, errors.New("container should have exactly one IPv4") + } + + ip := net.ParseIP(network.IPv4Addresses[0]).To4() + if ip == nil { + return nil, errors.New("invalid ip address") + } + return ip, nil +} diff --git a/backend/pkg/env/vars.go b/backend/pkg/env/vars.go new file mode 100644 index 000000000..e6541d002 --- /dev/null +++ b/backend/pkg/env/vars.go @@ -0,0 +1,48 @@ +package env + +import ( + "log" + "os" + "strconv" +) + +func String(key string) string { + v := os.Getenv(key) + if v == "" { + log.Fatalln(key + " is missing") + } + return v +} + +func StringOptional(key string) string { + return os.Getenv(key) +} + +func Uint16(key string) uint16 { + v := String(key) + n, _ := strconv.ParseUint(v, 10, 16) + if n == 0 { + log.Fatalln(key + " has a wrong value") + } + return uint16(n) +} + +func Uint64(key string) uint64 { + v := String(key) + n, _ := strconv.ParseUint(v, 10, 64) + if n == 0 { + log.Fatalln(key + " has a wrong value") + } + return n +} + +func Bool(key string) bool { + v := String(key) + if v != "true" && v != "false" { + log.Fatalln(key + " has wrong value. Accepted only true or false") + } + if v == "true" { + return true + } + return false +} \ No newline at end of file diff --git a/backend/pkg/env/worker_id.go b/backend/pkg/env/worker_id.go new file mode 100644 index 000000000..47fdffc43 --- /dev/null +++ b/backend/pkg/env/worker_id.go @@ -0,0 +1,22 @@ +package env + +import ( + "log" +) + +func hashHostname(hostname string) uint16 { + var h uint16 ; + for i, b := range hostname { + h += uint16(i+1)*uint16(b) + } + return h +} + +func WorkerID() uint16 { + ip, err := fargateTaskIP() + if err != nil { + log.Printf("Warning: unable to retrieve Fargate Task IP: %v; trying to use HOSTNAME instead", err) + return hashHostname(String("HOSTNAME")) + } + return uint16(ip[2])<<8 + uint16(ip[3]) +} diff --git a/backend/pkg/flakeid/flakeid.go b/backend/pkg/flakeid/flakeid.go new file mode 100644 index 000000000..13e064896 --- /dev/null +++ b/backend/pkg/flakeid/flakeid.go @@ -0,0 +1,20 @@ +package flakeid + +const ( + SEQ_ID_SIZE = 8 + SHARD_ID_SIZE = 16 + TIMESTAMP_SIZE = 64 - SEQ_ID_SIZE - SHARD_ID_SHIFT + SEQ_ID_MAX = 1<> TIMESTAMP_SHIFT) +} diff --git a/backend/pkg/flakeid/flaker.go b/backend/pkg/flakeid/flaker.go new file mode 100644 index 000000000..5daba4feb --- /dev/null +++ b/backend/pkg/flakeid/flaker.go @@ -0,0 +1,47 @@ +package flakeid + +import ( + "errors" + "sync" +) + +type Flaker struct { + shardID uint16 + seqID uint8 + seqMutex *sync.Mutex +} + +func NewFlaker(shardID uint16) *Flaker { + return &Flaker{ + shardID: shardID, + seqID: 0, + seqMutex: &sync.Mutex{}, + } +} + +func (flaker *Flaker) nextSeqID() uint8 { + flaker.seqMutex.Lock() + defer flaker.seqMutex.Unlock() + seqID := flaker.seqID + if seqID == SEQ_ID_MAX { + flaker.seqID = 0 + } else { + flaker.seqID = seqID + 1 + } + return seqID +} + +func (flaker *Flaker) Compose(timestamp uint64) (uint64, error) { + if timestamp <= EPOCH { + return 0, errors.New("epoch is not in the past") + } + timestamp -= EPOCH + if timestamp > TIMESTAMP_MAX { + return 0, errors.New("epoch is too small") + } + return compose(timestamp, flaker.shardID, flaker.nextSeqID()), nil +} + +func (flaker *Flaker) ExtractTimestamp(id uint64) uint64 { + return extractTimestamp(id) + EPOCH +} diff --git a/backend/pkg/hashid/hashid.go b/backend/pkg/hashid/hashid.go new file mode 100644 index 000000000..1a33085ea --- /dev/null +++ b/backend/pkg/hashid/hashid.go @@ -0,0 +1,35 @@ +package hashid + +import ( + "encoding/hex" + "hash/fnv" + "strconv" + + "openreplay/backend/pkg/messages" +) + +func IssueID(projectID uint32, e *messages.IssueEvent) string { + hash := fnv.New128a() + hash.Write([]byte(e.Type)) + hash.Write([]byte(e.ContextString)) + //hash.Write([]byte(e.Context)) // More detailed that contextString (what about Data Redundancy?) + return strconv.FormatUint(uint64(projectID), 16) + hex.EncodeToString(hash.Sum(nil)) +} + + +func IOSCrashID(projectID uint32, crash *messages.IOSCrash) string { + hash := fnv.New128a() + hash.Write([]byte(crash.Name)) + hash.Write([]byte(crash.Reason)) + hash.Write([]byte(crash.Stacktrace)) + return strconv.FormatUint(uint64(projectID), 16) + hex.EncodeToString(hash.Sum(nil)) +} + +func WebErrorID(projectID uint32, errorEvent *messages.ErrorEvent) string { + hash := fnv.New128a() + hash.Write([]byte(errorEvent.Source)) + hash.Write([]byte(errorEvent.Name)) + hash.Write([]byte(errorEvent.Message)) + hash.Write([]byte(errorEvent.Payload)) + return strconv.FormatUint(uint64(projectID), 16) + hex.EncodeToString(hash.Sum(nil)) +} diff --git a/backend/pkg/intervals/intervals.go b/backend/pkg/intervals/intervals.go new file mode 100644 index 000000000..d7e6bfad5 --- /dev/null +++ b/backend/pkg/intervals/intervals.go @@ -0,0 +1,11 @@ +package intervals + +const EVENTS_COMMIT_INTERVAL = 1 * 60 * 1000 +const HEARTBEAT_INTERVAL = 2 * 60 * 1000 +const INTEGRATIONS_REQUEST_INTERVAL = 2 * 60 * 1000 +const EVENTS_PAGE_EVENT_TIMEOUT = 2 * 60 * 1000 +const EVENTS_INPUT_EVENT_TIMEOUT = 2 * 60 * 1000 +const EVENTS_PERFORMANCE_AGGREGATION_TIMEOUT = 2 * 60 * 1000 +const EVENTS_SESSION_END_TIMEOUT = HEARTBEAT_INTERVAL + 30 * 1000 +const EVENTS_SESSION_END_TIMEOUT_WITH_INTEGRATIONS = HEARTBEAT_INTERVAL + 3 * 60 * 1000 +const EVENTS_BACK_COMMIT_GAP = EVENTS_SESSION_END_TIMEOUT_WITH_INTEGRATIONS + 1*60*1000 diff --git a/backend/pkg/messages/batch.go b/backend/pkg/messages/batch.go new file mode 100644 index 000000000..97a3a58f1 --- /dev/null +++ b/backend/pkg/messages/batch.go @@ -0,0 +1,71 @@ +package messages + +import ( + "io" + "bytes" + + "github.com/pkg/errors" +) + +func ReadBatch(b []byte, callback func(Message)) error { + reader := bytes.NewReader(b) + var index uint64 + var timestamp int64 + for { + msg, err := ReadMessage(reader) + if err == io.EOF { + return nil + } else if err != nil { + return errors.Wrapf(err, "Batch Message decoding error on message with index %v", index) + } + isBatchMeta := false + switch m := msg.(type){ + case *BatchMeta: // Is not required to be present in batch since IOS doesn't have it (though we might change it) + if index != 0 { // Might be several 0-0 BatchMeta in a row without a error though + return errors.New("Batch Meta found at the end of the batch") + } + index = m.PageNo << 32 + m.FirstIndex // 2^32 is the maximum count of messages per page (ha-ha) + timestamp = m.Timestamp + isBatchMeta = true + // continue readLoop + case *Timestamp: + timestamp = int64(m.Timestamp) // TODO(?): replace timestamp type to int64 everywhere (including encoding part in tracker) + // No skipping here for making it easy to encode back the same sequence of message + // continue readLoop + } + msg.Meta().Index = index + msg.Meta().Timestamp = timestamp + callback(msg) + if !isBatchMeta { // Without that indexes will be unique anyway, though shifted by 1 because BatchMeta is not counted in tracker + index++ + } + } + return errors.New("Error of the codeflow. (Should return on EOF)") +} + +const AVG_MESSAGE_SIZE = 40 // TODO: calculate OR calculate dynamically +func WriteBatch(mList []Message) []byte { + batch := make([]byte, AVG_MESSAGE_SIZE * len(mList)) + p := 0 + for _, msg := range mList { + msgBytes := msg.Encode() + if len(batch) < p + len(msgBytes) { + newBatch := make([]byte, 2*len(batch) + len(msgBytes)) + copy(newBatch, batch) + batch = newBatch + } + copy(batch[p:], msgBytes) + p += len(msgBytes) + } + return batch[:p] +} + +func RewriteBatch(b []byte, rewrite func(Message) Message) ([]byte, error) { + mList := make([]Message, 0, len(b)/AVG_MESSAGE_SIZE) + if err := ReadBatch(b, func(m Message) { + mList = append(mList, rewrite(m)) + }); err != nil { + return nil, err + } + return WriteBatch(mList), nil +} \ No newline at end of file diff --git a/backend/pkg/messages/facade.go b/backend/pkg/messages/facade.go new file mode 100644 index 000000000..91d896d19 --- /dev/null +++ b/backend/pkg/messages/facade.go @@ -0,0 +1,41 @@ +package messages + +import ( + "bytes" + //"io" +) + +func Encode(msg Message) []byte { + return msg.Encode() +} + +// +// func EncodeList(msgs []Message) []byte { + +// } +// + +// func Decode(b []byte) (Message, error) { +// return ReadMessage(bytes.NewReader(b)) +// } + +// func DecodeEach(b []byte, callback func(Message)) error { +// var err error +// reader := bytes.NewReader(b) +// for { +// msg, err := ReadMessage(reader) +// if err != nil { +// break +// } +// callback(msg) +// } +// if err == io.EOF { +// return nil +// } +// return err +// } + +func GetMessageTypeID(b []byte) (uint64, error) { + reader := bytes.NewReader(b) + return ReadUint(reader) +} diff --git a/backend/pkg/messages/filters.go b/backend/pkg/messages/filters.go new file mode 100644 index 000000000..1d72b41f8 --- /dev/null +++ b/backend/pkg/messages/filters.go @@ -0,0 +1,10 @@ +package messages + + +func IsReplayerType(id uint64) bool { + return 0 == id || 4 == id || 5 == id || 6 == id || 7 == id || 8 == id || 9 == id || 10 == id || 11 == id || 12 == id || 13 == id || 14 == id || 15 == id || 16 == id || 18 == id || 19 == id || 20 == id || 22 == id || 37 == id || 38 == id || 39 == id || 40 == id || 41 == id || 44 == id || 45 == id || 46 == id || 47 == id || 48 == id || 49 == id || 54 == id || 55 == id || 59 == id || 90 == id || 93 == id || 100 == id || 102 == id || 103 == id || 105 == id +} + +func IsIOSType(id uint64) bool { + return 90 == id || 91 == id || 92 == id || 93 == id || 94 == id || 95 == id || 96 == id || 97 == id || 98 == id || 99 == id || 100 == id || 101 == id || 102 == id || 103 == id || 104 == id || 105 == id || 110 == id || 111 == id +} diff --git a/backend/pkg/messages/messages.go b/backend/pkg/messages/messages.go new file mode 100644 index 000000000..1677af87c --- /dev/null +++ b/backend/pkg/messages/messages.go @@ -0,0 +1,1506 @@ +// Auto-generated, do not edit +package messages + +type Message interface { + Encode() []byte + Meta() *meta +} + +type meta struct { + Timestamp int64 + Index uint64 + TypeID uint64 +} + +// Might also implement Encode() here (?) +func (m *meta) Meta() *meta { + return m +} + + +type BatchMeta struct { + *meta + PageNo uint64 +FirstIndex uint64 +Timestamp int64 +} +func (msg *BatchMeta) Encode() []byte{ + buf := make([]byte, 31 ) + buf[0] = 80 + p := 1 + p = WriteUint(msg.PageNo, buf, p) +p = WriteUint(msg.FirstIndex, buf, p) +p = WriteInt(msg.Timestamp, buf, p) + return buf[:p] +} + +type Timestamp struct { + *meta + Timestamp uint64 +} +func (msg *Timestamp) Encode() []byte{ + buf := make([]byte, 11 ) + buf[0] = 0 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) + return buf[:p] +} + +type SessionStart struct { + *meta + Timestamp uint64 +ProjectID uint64 +TrackerVersion string +RevID string +UserUUID string +UserAgent string +UserOS string +UserOSVersion string +UserBrowser string +UserBrowserVersion string +UserDevice string +UserDeviceType string +UserDeviceMemorySize uint64 +UserDeviceHeapSize uint64 +UserCountry string +} +func (msg *SessionStart) Encode() []byte{ + buf := make([]byte, 151 + len(msg.TrackerVersion)+ len(msg.RevID)+ len(msg.UserUUID)+ len(msg.UserAgent)+ len(msg.UserOS)+ len(msg.UserOSVersion)+ len(msg.UserBrowser)+ len(msg.UserBrowserVersion)+ len(msg.UserDevice)+ len(msg.UserDeviceType)+ len(msg.UserCountry)) + buf[0] = 1 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.ProjectID, buf, p) +p = WriteString(msg.TrackerVersion, buf, p) +p = WriteString(msg.RevID, buf, p) +p = WriteString(msg.UserUUID, buf, p) +p = WriteString(msg.UserAgent, buf, p) +p = WriteString(msg.UserOS, buf, p) +p = WriteString(msg.UserOSVersion, buf, p) +p = WriteString(msg.UserBrowser, buf, p) +p = WriteString(msg.UserBrowserVersion, buf, p) +p = WriteString(msg.UserDevice, buf, p) +p = WriteString(msg.UserDeviceType, buf, p) +p = WriteUint(msg.UserDeviceMemorySize, buf, p) +p = WriteUint(msg.UserDeviceHeapSize, buf, p) +p = WriteString(msg.UserCountry, buf, p) + return buf[:p] +} + +type SessionEnd struct { + *meta + Timestamp uint64 +} +func (msg *SessionEnd) Encode() []byte{ + buf := make([]byte, 11 ) + buf[0] = 3 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) + return buf[:p] +} + +type SetPageLocation struct { + *meta + URL string +Referrer string +NavigationStart uint64 +} +func (msg *SetPageLocation) Encode() []byte{ + buf := make([]byte, 31 + len(msg.URL)+ len(msg.Referrer)) + buf[0] = 4 + p := 1 + p = WriteString(msg.URL, buf, p) +p = WriteString(msg.Referrer, buf, p) +p = WriteUint(msg.NavigationStart, buf, p) + return buf[:p] +} + +type SetViewportSize struct { + *meta + Width uint64 +Height uint64 +} +func (msg *SetViewportSize) Encode() []byte{ + buf := make([]byte, 21 ) + buf[0] = 5 + p := 1 + p = WriteUint(msg.Width, buf, p) +p = WriteUint(msg.Height, buf, p) + return buf[:p] +} + +type SetViewportScroll struct { + *meta + X int64 +Y int64 +} +func (msg *SetViewportScroll) Encode() []byte{ + buf := make([]byte, 21 ) + buf[0] = 6 + p := 1 + p = WriteInt(msg.X, buf, p) +p = WriteInt(msg.Y, buf, p) + return buf[:p] +} + +type CreateDocument struct { + *meta + +} +func (msg *CreateDocument) Encode() []byte{ + buf := make([]byte, 1 ) + buf[0] = 7 + p := 1 + + return buf[:p] +} + +type CreateElementNode struct { + *meta + ID uint64 +ParentID uint64 +index uint64 +Tag string +SVG bool +} +func (msg *CreateElementNode) Encode() []byte{ + buf := make([]byte, 51 + len(msg.Tag)) + buf[0] = 8 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteUint(msg.ParentID, buf, p) +p = WriteUint(msg.index, buf, p) +p = WriteString(msg.Tag, buf, p) +p = WriteBoolean(msg.SVG, buf, p) + return buf[:p] +} + +type CreateTextNode struct { + *meta + ID uint64 +ParentID uint64 +Index uint64 +} +func (msg *CreateTextNode) Encode() []byte{ + buf := make([]byte, 31 ) + buf[0] = 9 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteUint(msg.ParentID, buf, p) +p = WriteUint(msg.Index, buf, p) + return buf[:p] +} + +type MoveNode struct { + *meta + ID uint64 +ParentID uint64 +Index uint64 +} +func (msg *MoveNode) Encode() []byte{ + buf := make([]byte, 31 ) + buf[0] = 10 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteUint(msg.ParentID, buf, p) +p = WriteUint(msg.Index, buf, p) + return buf[:p] +} + +type RemoveNode struct { + *meta + ID uint64 +} +func (msg *RemoveNode) Encode() []byte{ + buf := make([]byte, 11 ) + buf[0] = 11 + p := 1 + p = WriteUint(msg.ID, buf, p) + return buf[:p] +} + +type SetNodeAttribute struct { + *meta + ID uint64 +Name string +Value string +} +func (msg *SetNodeAttribute) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Name)+ len(msg.Value)) + buf[0] = 12 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Value, buf, p) + return buf[:p] +} + +type RemoveNodeAttribute struct { + *meta + ID uint64 +Name string +} +func (msg *RemoveNodeAttribute) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Name)) + buf[0] = 13 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Name, buf, p) + return buf[:p] +} + +type SetNodeData struct { + *meta + ID uint64 +Data string +} +func (msg *SetNodeData) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Data)) + buf[0] = 14 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Data, buf, p) + return buf[:p] +} + +type SetCSSData struct { + *meta + ID uint64 +Data string +} +func (msg *SetCSSData) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Data)) + buf[0] = 15 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Data, buf, p) + return buf[:p] +} + +type SetNodeScroll struct { + *meta + ID uint64 +X int64 +Y int64 +} +func (msg *SetNodeScroll) Encode() []byte{ + buf := make([]byte, 31 ) + buf[0] = 16 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteInt(msg.X, buf, p) +p = WriteInt(msg.Y, buf, p) + return buf[:p] +} + +type SetInputTarget struct { + *meta + ID uint64 +Label string +} +func (msg *SetInputTarget) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Label)) + buf[0] = 17 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Label, buf, p) + return buf[:p] +} + +type SetInputValue struct { + *meta + ID uint64 +Value string +Mask int64 +} +func (msg *SetInputValue) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Value)) + buf[0] = 18 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Value, buf, p) +p = WriteInt(msg.Mask, buf, p) + return buf[:p] +} + +type SetInputChecked struct { + *meta + ID uint64 +Checked bool +} +func (msg *SetInputChecked) Encode() []byte{ + buf := make([]byte, 21 ) + buf[0] = 19 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteBoolean(msg.Checked, buf, p) + return buf[:p] +} + +type MouseMove struct { + *meta + X uint64 +Y uint64 +} +func (msg *MouseMove) Encode() []byte{ + buf := make([]byte, 21 ) + buf[0] = 20 + p := 1 + p = WriteUint(msg.X, buf, p) +p = WriteUint(msg.Y, buf, p) + return buf[:p] +} + +type MouseClick struct { + *meta + ID uint64 +HesitationTime uint64 +Label string +} +func (msg *MouseClick) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Label)) + buf[0] = 21 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteUint(msg.HesitationTime, buf, p) +p = WriteString(msg.Label, buf, p) + return buf[:p] +} + +type ConsoleLog struct { + *meta + Level string +Value string +} +func (msg *ConsoleLog) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Level)+ len(msg.Value)) + buf[0] = 22 + p := 1 + p = WriteString(msg.Level, buf, p) +p = WriteString(msg.Value, buf, p) + return buf[:p] +} + +type PageLoadTiming struct { + *meta + RequestStart uint64 +ResponseStart uint64 +ResponseEnd uint64 +DomContentLoadedEventStart uint64 +DomContentLoadedEventEnd uint64 +LoadEventStart uint64 +LoadEventEnd uint64 +FirstPaint uint64 +FirstContentfulPaint uint64 +} +func (msg *PageLoadTiming) Encode() []byte{ + buf := make([]byte, 91 ) + buf[0] = 23 + p := 1 + p = WriteUint(msg.RequestStart, buf, p) +p = WriteUint(msg.ResponseStart, buf, p) +p = WriteUint(msg.ResponseEnd, buf, p) +p = WriteUint(msg.DomContentLoadedEventStart, buf, p) +p = WriteUint(msg.DomContentLoadedEventEnd, buf, p) +p = WriteUint(msg.LoadEventStart, buf, p) +p = WriteUint(msg.LoadEventEnd, buf, p) +p = WriteUint(msg.FirstPaint, buf, p) +p = WriteUint(msg.FirstContentfulPaint, buf, p) + return buf[:p] +} + +type PageRenderTiming struct { + *meta + SpeedIndex uint64 +VisuallyComplete uint64 +TimeToInteractive uint64 +} +func (msg *PageRenderTiming) Encode() []byte{ + buf := make([]byte, 31 ) + buf[0] = 24 + p := 1 + p = WriteUint(msg.SpeedIndex, buf, p) +p = WriteUint(msg.VisuallyComplete, buf, p) +p = WriteUint(msg.TimeToInteractive, buf, p) + return buf[:p] +} + +type JSException struct { + *meta + Name string +Message string +Payload string +} +func (msg *JSException) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Name)+ len(msg.Message)+ len(msg.Payload)) + buf[0] = 25 + p := 1 + p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Message, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type RawErrorEvent struct { + *meta + Timestamp uint64 +Source string +Name string +Message string +Payload string +} +func (msg *RawErrorEvent) Encode() []byte{ + buf := make([]byte, 51 + len(msg.Source)+ len(msg.Name)+ len(msg.Message)+ len(msg.Payload)) + buf[0] = 26 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.Source, buf, p) +p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Message, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type RawCustomEvent struct { + *meta + Name string +Payload string +} +func (msg *RawCustomEvent) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Name)+ len(msg.Payload)) + buf[0] = 27 + p := 1 + p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type UserID struct { + *meta + ID string +} +func (msg *UserID) Encode() []byte{ + buf := make([]byte, 11 + len(msg.ID)) + buf[0] = 28 + p := 1 + p = WriteString(msg.ID, buf, p) + return buf[:p] +} + +type UserAnonymousID struct { + *meta + ID string +} +func (msg *UserAnonymousID) Encode() []byte{ + buf := make([]byte, 11 + len(msg.ID)) + buf[0] = 29 + p := 1 + p = WriteString(msg.ID, buf, p) + return buf[:p] +} + +type Metadata struct { + *meta + Key string +Value string +} +func (msg *Metadata) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Key)+ len(msg.Value)) + buf[0] = 30 + p := 1 + p = WriteString(msg.Key, buf, p) +p = WriteString(msg.Value, buf, p) + return buf[:p] +} + +type PageEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +URL string +Referrer string +Loaded bool +RequestStart uint64 +ResponseStart uint64 +ResponseEnd uint64 +DomContentLoadedEventStart uint64 +DomContentLoadedEventEnd uint64 +LoadEventStart uint64 +LoadEventEnd uint64 +FirstPaint uint64 +FirstContentfulPaint uint64 +SpeedIndex uint64 +VisuallyComplete uint64 +TimeToInteractive uint64 +} +func (msg *PageEvent) Encode() []byte{ + buf := make([]byte, 171 + len(msg.URL)+ len(msg.Referrer)) + buf[0] = 31 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.URL, buf, p) +p = WriteString(msg.Referrer, buf, p) +p = WriteBoolean(msg.Loaded, buf, p) +p = WriteUint(msg.RequestStart, buf, p) +p = WriteUint(msg.ResponseStart, buf, p) +p = WriteUint(msg.ResponseEnd, buf, p) +p = WriteUint(msg.DomContentLoadedEventStart, buf, p) +p = WriteUint(msg.DomContentLoadedEventEnd, buf, p) +p = WriteUint(msg.LoadEventStart, buf, p) +p = WriteUint(msg.LoadEventEnd, buf, p) +p = WriteUint(msg.FirstPaint, buf, p) +p = WriteUint(msg.FirstContentfulPaint, buf, p) +p = WriteUint(msg.SpeedIndex, buf, p) +p = WriteUint(msg.VisuallyComplete, buf, p) +p = WriteUint(msg.TimeToInteractive, buf, p) + return buf[:p] +} + +type InputEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +Value string +ValueMasked bool +Label string +} +func (msg *InputEvent) Encode() []byte{ + buf := make([]byte, 51 + len(msg.Value)+ len(msg.Label)) + buf[0] = 32 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.Value, buf, p) +p = WriteBoolean(msg.ValueMasked, buf, p) +p = WriteString(msg.Label, buf, p) + return buf[:p] +} + +type ClickEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +HesitationTime uint64 +Label string +} +func (msg *ClickEvent) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Label)) + buf[0] = 33 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.HesitationTime, buf, p) +p = WriteString(msg.Label, buf, p) + return buf[:p] +} + +type ErrorEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +Source string +Name string +Message string +Payload string +} +func (msg *ErrorEvent) Encode() []byte{ + buf := make([]byte, 61 + len(msg.Source)+ len(msg.Name)+ len(msg.Message)+ len(msg.Payload)) + buf[0] = 34 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.Source, buf, p) +p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Message, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type ResourceEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +Duration uint64 +TTFB uint64 +HeaderSize uint64 +EncodedBodySize uint64 +DecodedBodySize uint64 +URL string +Type string +Success bool +Method string +Status uint64 +} +func (msg *ResourceEvent) Encode() []byte{ + buf := make([]byte, 121 + len(msg.URL)+ len(msg.Type)+ len(msg.Method)) + buf[0] = 35 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Duration, buf, p) +p = WriteUint(msg.TTFB, buf, p) +p = WriteUint(msg.HeaderSize, buf, p) +p = WriteUint(msg.EncodedBodySize, buf, p) +p = WriteUint(msg.DecodedBodySize, buf, p) +p = WriteString(msg.URL, buf, p) +p = WriteString(msg.Type, buf, p) +p = WriteBoolean(msg.Success, buf, p) +p = WriteString(msg.Method, buf, p) +p = WriteUint(msg.Status, buf, p) + return buf[:p] +} + +type CustomEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +Name string +Payload string +} +func (msg *CustomEvent) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Name)+ len(msg.Payload)) + buf[0] = 36 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type CSSInsertRule struct { + *meta + ID uint64 +Rule string +Index uint64 +} +func (msg *CSSInsertRule) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Rule)) + buf[0] = 37 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Rule, buf, p) +p = WriteUint(msg.Index, buf, p) + return buf[:p] +} + +type CSSDeleteRule struct { + *meta + ID uint64 +Index uint64 +} +func (msg *CSSDeleteRule) Encode() []byte{ + buf := make([]byte, 21 ) + buf[0] = 38 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteUint(msg.Index, buf, p) + return buf[:p] +} + +type Fetch struct { + *meta + Method string +URL string +Request string +Response string +Status uint64 +Timestamp uint64 +Duration uint64 +} +func (msg *Fetch) Encode() []byte{ + buf := make([]byte, 71 + len(msg.Method)+ len(msg.URL)+ len(msg.Request)+ len(msg.Response)) + buf[0] = 39 + p := 1 + p = WriteString(msg.Method, buf, p) +p = WriteString(msg.URL, buf, p) +p = WriteString(msg.Request, buf, p) +p = WriteString(msg.Response, buf, p) +p = WriteUint(msg.Status, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Duration, buf, p) + return buf[:p] +} + +type Profiler struct { + *meta + Name string +Duration uint64 +Args string +Result string +} +func (msg *Profiler) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Name)+ len(msg.Args)+ len(msg.Result)) + buf[0] = 40 + p := 1 + p = WriteString(msg.Name, buf, p) +p = WriteUint(msg.Duration, buf, p) +p = WriteString(msg.Args, buf, p) +p = WriteString(msg.Result, buf, p) + return buf[:p] +} + +type OTable struct { + *meta + Key string +Value string +} +func (msg *OTable) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Key)+ len(msg.Value)) + buf[0] = 41 + p := 1 + p = WriteString(msg.Key, buf, p) +p = WriteString(msg.Value, buf, p) + return buf[:p] +} + +type StateAction struct { + *meta + Type string +} +func (msg *StateAction) Encode() []byte{ + buf := make([]byte, 11 + len(msg.Type)) + buf[0] = 42 + p := 1 + p = WriteString(msg.Type, buf, p) + return buf[:p] +} + +type StateActionEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +Type string +} +func (msg *StateActionEvent) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Type)) + buf[0] = 43 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.Type, buf, p) + return buf[:p] +} + +type Redux struct { + *meta + Action string +State string +Duration uint64 +} +func (msg *Redux) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Action)+ len(msg.State)) + buf[0] = 44 + p := 1 + p = WriteString(msg.Action, buf, p) +p = WriteString(msg.State, buf, p) +p = WriteUint(msg.Duration, buf, p) + return buf[:p] +} + +type Vuex struct { + *meta + Mutation string +State string +} +func (msg *Vuex) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Mutation)+ len(msg.State)) + buf[0] = 45 + p := 1 + p = WriteString(msg.Mutation, buf, p) +p = WriteString(msg.State, buf, p) + return buf[:p] +} + +type MobX struct { + *meta + Type string +Payload string +} +func (msg *MobX) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Type)+ len(msg.Payload)) + buf[0] = 46 + p := 1 + p = WriteString(msg.Type, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type NgRx struct { + *meta + Action string +State string +Duration uint64 +} +func (msg *NgRx) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Action)+ len(msg.State)) + buf[0] = 47 + p := 1 + p = WriteString(msg.Action, buf, p) +p = WriteString(msg.State, buf, p) +p = WriteUint(msg.Duration, buf, p) + return buf[:p] +} + +type GraphQL struct { + *meta + OperationKind string +OperationName string +Variables string +Response string +} +func (msg *GraphQL) Encode() []byte{ + buf := make([]byte, 41 + len(msg.OperationKind)+ len(msg.OperationName)+ len(msg.Variables)+ len(msg.Response)) + buf[0] = 48 + p := 1 + p = WriteString(msg.OperationKind, buf, p) +p = WriteString(msg.OperationName, buf, p) +p = WriteString(msg.Variables, buf, p) +p = WriteString(msg.Response, buf, p) + return buf[:p] +} + +type PerformanceTrack struct { + *meta + Frames int64 +Ticks int64 +TotalJSHeapSize uint64 +UsedJSHeapSize uint64 +} +func (msg *PerformanceTrack) Encode() []byte{ + buf := make([]byte, 41 ) + buf[0] = 49 + p := 1 + p = WriteInt(msg.Frames, buf, p) +p = WriteInt(msg.Ticks, buf, p) +p = WriteUint(msg.TotalJSHeapSize, buf, p) +p = WriteUint(msg.UsedJSHeapSize, buf, p) + return buf[:p] +} + +type GraphQLEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +Name string +} +func (msg *GraphQLEvent) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Name)) + buf[0] = 50 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.Name, buf, p) + return buf[:p] +} + +type DOMDrop struct { + *meta + Timestamp uint64 +} +func (msg *DOMDrop) Encode() []byte{ + buf := make([]byte, 11 ) + buf[0] = 52 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) + return buf[:p] +} + +type ResourceTiming struct { + *meta + Timestamp uint64 +Duration uint64 +TTFB uint64 +HeaderSize uint64 +EncodedBodySize uint64 +DecodedBodySize uint64 +URL string +Initiator string +} +func (msg *ResourceTiming) Encode() []byte{ + buf := make([]byte, 81 + len(msg.URL)+ len(msg.Initiator)) + buf[0] = 53 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Duration, buf, p) +p = WriteUint(msg.TTFB, buf, p) +p = WriteUint(msg.HeaderSize, buf, p) +p = WriteUint(msg.EncodedBodySize, buf, p) +p = WriteUint(msg.DecodedBodySize, buf, p) +p = WriteString(msg.URL, buf, p) +p = WriteString(msg.Initiator, buf, p) + return buf[:p] +} + +type ConnectionInformation struct { + *meta + Downlink uint64 +Type string +} +func (msg *ConnectionInformation) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Type)) + buf[0] = 54 + p := 1 + p = WriteUint(msg.Downlink, buf, p) +p = WriteString(msg.Type, buf, p) + return buf[:p] +} + +type SetPageVisibility struct { + *meta + hidden bool +} +func (msg *SetPageVisibility) Encode() []byte{ + buf := make([]byte, 11 ) + buf[0] = 55 + p := 1 + p = WriteBoolean(msg.hidden, buf, p) + return buf[:p] +} + +type PerformanceTrackAggr struct { + *meta + TimestampStart uint64 +TimestampEnd uint64 +MinFPS uint64 +AvgFPS uint64 +MaxFPS uint64 +MinCPU uint64 +AvgCPU uint64 +MaxCPU uint64 +MinTotalJSHeapSize uint64 +AvgTotalJSHeapSize uint64 +MaxTotalJSHeapSize uint64 +MinUsedJSHeapSize uint64 +AvgUsedJSHeapSize uint64 +MaxUsedJSHeapSize uint64 +} +func (msg *PerformanceTrackAggr) Encode() []byte{ + buf := make([]byte, 141 ) + buf[0] = 56 + p := 1 + p = WriteUint(msg.TimestampStart, buf, p) +p = WriteUint(msg.TimestampEnd, buf, p) +p = WriteUint(msg.MinFPS, buf, p) +p = WriteUint(msg.AvgFPS, buf, p) +p = WriteUint(msg.MaxFPS, buf, p) +p = WriteUint(msg.MinCPU, buf, p) +p = WriteUint(msg.AvgCPU, buf, p) +p = WriteUint(msg.MaxCPU, buf, p) +p = WriteUint(msg.MinTotalJSHeapSize, buf, p) +p = WriteUint(msg.AvgTotalJSHeapSize, buf, p) +p = WriteUint(msg.MaxTotalJSHeapSize, buf, p) +p = WriteUint(msg.MinUsedJSHeapSize, buf, p) +p = WriteUint(msg.AvgUsedJSHeapSize, buf, p) +p = WriteUint(msg.MaxUsedJSHeapSize, buf, p) + return buf[:p] +} + +type LongTask struct { + *meta + Timestamp uint64 +Duration uint64 +Context uint64 +ContainerType uint64 +ContainerSrc string +ContainerId string +ContainerName string +} +func (msg *LongTask) Encode() []byte{ + buf := make([]byte, 71 + len(msg.ContainerSrc)+ len(msg.ContainerId)+ len(msg.ContainerName)) + buf[0] = 59 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Duration, buf, p) +p = WriteUint(msg.Context, buf, p) +p = WriteUint(msg.ContainerType, buf, p) +p = WriteString(msg.ContainerSrc, buf, p) +p = WriteString(msg.ContainerId, buf, p) +p = WriteString(msg.ContainerName, buf, p) + return buf[:p] +} + +type SetNodeAttributeURLBased struct { + *meta + ID uint64 +Name string +Value string +BaseURL string +} +func (msg *SetNodeAttributeURLBased) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Name)+ len(msg.Value)+ len(msg.BaseURL)) + buf[0] = 60 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Value, buf, p) +p = WriteString(msg.BaseURL, buf, p) + return buf[:p] +} + +type SetCSSDataURLBased struct { + *meta + ID uint64 +Data string +BaseURL string +} +func (msg *SetCSSDataURLBased) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Data)+ len(msg.BaseURL)) + buf[0] = 61 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Data, buf, p) +p = WriteString(msg.BaseURL, buf, p) + return buf[:p] +} + +type IssueEvent struct { + *meta + MessageID uint64 +Timestamp uint64 +Type string +ContextString string +Context string +Payload string +} +func (msg *IssueEvent) Encode() []byte{ + buf := make([]byte, 61 + len(msg.Type)+ len(msg.ContextString)+ len(msg.Context)+ len(msg.Payload)) + buf[0] = 62 + p := 1 + p = WriteUint(msg.MessageID, buf, p) +p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.Type, buf, p) +p = WriteString(msg.ContextString, buf, p) +p = WriteString(msg.Context, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type TechnicalInfo struct { + *meta + Type string +Value string +} +func (msg *TechnicalInfo) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Type)+ len(msg.Value)) + buf[0] = 63 + p := 1 + p = WriteString(msg.Type, buf, p) +p = WriteString(msg.Value, buf, p) + return buf[:p] +} + +type CustomIssue struct { + *meta + Name string +Payload string +} +func (msg *CustomIssue) Encode() []byte{ + buf := make([]byte, 21 + len(msg.Name)+ len(msg.Payload)) + buf[0] = 64 + p := 1 + p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type PageClose struct { + *meta + +} +func (msg *PageClose) Encode() []byte{ + buf := make([]byte, 1 ) + buf[0] = 65 + p := 1 + + return buf[:p] +} + +type AssetCache struct { + *meta + URL string +} +func (msg *AssetCache) Encode() []byte{ + buf := make([]byte, 11 + len(msg.URL)) + buf[0] = 66 + p := 1 + p = WriteString(msg.URL, buf, p) + return buf[:p] +} + +type CSSInsertRuleURLBased struct { + *meta + ID uint64 +Rule string +Index uint64 +BaseURL string +} +func (msg *CSSInsertRuleURLBased) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Rule)+ len(msg.BaseURL)) + buf[0] = 67 + p := 1 + p = WriteUint(msg.ID, buf, p) +p = WriteString(msg.Rule, buf, p) +p = WriteUint(msg.Index, buf, p) +p = WriteString(msg.BaseURL, buf, p) + return buf[:p] +} + +type IOSSessionStart struct { + *meta + Timestamp uint64 +ProjectID uint64 +TrackerVersion string +RevID string +UserUUID string +UserOS string +UserOSVersion string +UserDevice string +UserDeviceType string +UserCountry string +} +func (msg *IOSSessionStart) Encode() []byte{ + buf := make([]byte, 101 + len(msg.TrackerVersion)+ len(msg.RevID)+ len(msg.UserUUID)+ len(msg.UserOS)+ len(msg.UserOSVersion)+ len(msg.UserDevice)+ len(msg.UserDeviceType)+ len(msg.UserCountry)) + buf[0] = 90 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.ProjectID, buf, p) +p = WriteString(msg.TrackerVersion, buf, p) +p = WriteString(msg.RevID, buf, p) +p = WriteString(msg.UserUUID, buf, p) +p = WriteString(msg.UserOS, buf, p) +p = WriteString(msg.UserOSVersion, buf, p) +p = WriteString(msg.UserDevice, buf, p) +p = WriteString(msg.UserDeviceType, buf, p) +p = WriteString(msg.UserCountry, buf, p) + return buf[:p] +} + +type IOSSessionEnd struct { + *meta + Timestamp uint64 +} +func (msg *IOSSessionEnd) Encode() []byte{ + buf := make([]byte, 11 ) + buf[0] = 91 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) + return buf[:p] +} + +type IOSMetadata struct { + *meta + Timestamp uint64 +Length uint64 +Key string +Value string +} +func (msg *IOSMetadata) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Key)+ len(msg.Value)) + buf[0] = 92 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Key, buf, p) +p = WriteString(msg.Value, buf, p) + return buf[:p] +} + +type IOSCustomEvent struct { + *meta + Timestamp uint64 +Length uint64 +Name string +Payload string +} +func (msg *IOSCustomEvent) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Name)+ len(msg.Payload)) + buf[0] = 93 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + +type IOSUserID struct { + *meta + Timestamp uint64 +Length uint64 +Value string +} +func (msg *IOSUserID) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Value)) + buf[0] = 94 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Value, buf, p) + return buf[:p] +} + +type IOSUserAnonymousID struct { + *meta + Timestamp uint64 +Length uint64 +Value string +} +func (msg *IOSUserAnonymousID) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Value)) + buf[0] = 95 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Value, buf, p) + return buf[:p] +} + +type IOSScreenChanges struct { + *meta + Timestamp uint64 +SkipData []byte +} +func (msg *IOSScreenChanges) Encode() []byte{ + buf := make([]byte, 21 + len(msg.SkipData)) + buf[0] = 96 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteData(msg.SkipData, buf, p) + return buf[:p] +} + +type IOSCrash struct { + *meta + Timestamp uint64 +Length uint64 +Name string +Reason string +Stacktrace string +} +func (msg *IOSCrash) Encode() []byte{ + buf := make([]byte, 51 + len(msg.Name)+ len(msg.Reason)+ len(msg.Stacktrace)) + buf[0] = 97 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Name, buf, p) +p = WriteString(msg.Reason, buf, p) +p = WriteString(msg.Stacktrace, buf, p) + return buf[:p] +} + +type IOSScreenEnter struct { + *meta + Timestamp uint64 +Length uint64 +Title string +ViewName string +} +func (msg *IOSScreenEnter) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Title)+ len(msg.ViewName)) + buf[0] = 98 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Title, buf, p) +p = WriteString(msg.ViewName, buf, p) + return buf[:p] +} + +type IOSScreenLeave struct { + *meta + Timestamp uint64 +Length uint64 +Title string +ViewName string +} +func (msg *IOSScreenLeave) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Title)+ len(msg.ViewName)) + buf[0] = 99 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Title, buf, p) +p = WriteString(msg.ViewName, buf, p) + return buf[:p] +} + +type IOSClickEvent struct { + *meta + Timestamp uint64 +Length uint64 +Label string +X uint64 +Y uint64 +} +func (msg *IOSClickEvent) Encode() []byte{ + buf := make([]byte, 51 + len(msg.Label)) + buf[0] = 100 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Label, buf, p) +p = WriteUint(msg.X, buf, p) +p = WriteUint(msg.Y, buf, p) + return buf[:p] +} + +type IOSInputEvent struct { + *meta + Timestamp uint64 +Length uint64 +Value string +ValueMasked bool +Label string +} +func (msg *IOSInputEvent) Encode() []byte{ + buf := make([]byte, 51 + len(msg.Value)+ len(msg.Label)) + buf[0] = 101 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Value, buf, p) +p = WriteBoolean(msg.ValueMasked, buf, p) +p = WriteString(msg.Label, buf, p) + return buf[:p] +} + +type IOSPerformanceEvent struct { + *meta + Timestamp uint64 +Length uint64 +Name string +Value uint64 +} +func (msg *IOSPerformanceEvent) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Name)) + buf[0] = 102 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Name, buf, p) +p = WriteUint(msg.Value, buf, p) + return buf[:p] +} + +type IOSLog struct { + *meta + Timestamp uint64 +Length uint64 +Severity string +Content string +} +func (msg *IOSLog) Encode() []byte{ + buf := make([]byte, 41 + len(msg.Severity)+ len(msg.Content)) + buf[0] = 103 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Severity, buf, p) +p = WriteString(msg.Content, buf, p) + return buf[:p] +} + +type IOSInternalError struct { + *meta + Timestamp uint64 +Length uint64 +Content string +} +func (msg *IOSInternalError) Encode() []byte{ + buf := make([]byte, 31 + len(msg.Content)) + buf[0] = 104 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteString(msg.Content, buf, p) + return buf[:p] +} + +type IOSNetworkCall struct { + *meta + Timestamp uint64 +Length uint64 +Duration uint64 +Headers string +Body string +URL string +Success bool +Method string +Status uint64 +} +func (msg *IOSNetworkCall) Encode() []byte{ + buf := make([]byte, 91 + len(msg.Headers)+ len(msg.Body)+ len(msg.URL)+ len(msg.Method)) + buf[0] = 105 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteUint(msg.Length, buf, p) +p = WriteUint(msg.Duration, buf, p) +p = WriteString(msg.Headers, buf, p) +p = WriteString(msg.Body, buf, p) +p = WriteString(msg.URL, buf, p) +p = WriteBoolean(msg.Success, buf, p) +p = WriteString(msg.Method, buf, p) +p = WriteUint(msg.Status, buf, p) + return buf[:p] +} + +type IOSPerformanceAggregated struct { + *meta + TimestampStart uint64 +TimestampEnd uint64 +MinFPS uint64 +AvgFPS uint64 +MaxFPS uint64 +MinCPU uint64 +AvgCPU uint64 +MaxCPU uint64 +MinMemory uint64 +AvgMemory uint64 +MaxMemory uint64 +MinBattery uint64 +AvgBattery uint64 +MaxBattery uint64 +} +func (msg *IOSPerformanceAggregated) Encode() []byte{ + buf := make([]byte, 141 ) + buf[0] = 110 + p := 1 + p = WriteUint(msg.TimestampStart, buf, p) +p = WriteUint(msg.TimestampEnd, buf, p) +p = WriteUint(msg.MinFPS, buf, p) +p = WriteUint(msg.AvgFPS, buf, p) +p = WriteUint(msg.MaxFPS, buf, p) +p = WriteUint(msg.MinCPU, buf, p) +p = WriteUint(msg.AvgCPU, buf, p) +p = WriteUint(msg.MaxCPU, buf, p) +p = WriteUint(msg.MinMemory, buf, p) +p = WriteUint(msg.AvgMemory, buf, p) +p = WriteUint(msg.MaxMemory, buf, p) +p = WriteUint(msg.MinBattery, buf, p) +p = WriteUint(msg.AvgBattery, buf, p) +p = WriteUint(msg.MaxBattery, buf, p) + return buf[:p] +} + +type IOSIssueEvent struct { + *meta + Timestamp uint64 +Type string +ContextString string +Context string +Payload string +} +func (msg *IOSIssueEvent) Encode() []byte{ + buf := make([]byte, 51 + len(msg.Type)+ len(msg.ContextString)+ len(msg.Context)+ len(msg.Payload)) + buf[0] = 111 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) +p = WriteString(msg.Type, buf, p) +p = WriteString(msg.ContextString, buf, p) +p = WriteString(msg.Context, buf, p) +p = WriteString(msg.Payload, buf, p) + return buf[:p] +} + diff --git a/backend/pkg/messages/performance/performance.go b/backend/pkg/messages/performance/performance.go new file mode 100644 index 000000000..4cfb28045 --- /dev/null +++ b/backend/pkg/messages/performance/performance.go @@ -0,0 +1,33 @@ +package performance + +import ( + "math" +) + + +func TimeDiff(t1 uint64, t2 uint64) uint64 { + if t1 < t2 { + return 0 + } + return t1 - t2 +} + +func FrameRate(frames int64, dt uint64) float64 { + return float64(frames) * 1000 / float64(dt) +} + +func TickRate(ticks int64, dt uint64) float64 { + tickRate := float64(ticks) * 30 / float64(dt) + if tickRate > 1 { + tickRate = 1 + } + return tickRate +} + +func CPURateFromTickRate(tickRate float64) uint64 { + return 100 - uint64(math.Round(tickRate*100)) +} + +func CPURate(ticks int64, dt uint64) uint64 { + return CPURateFromTickRate(TickRate(ticks, dt)) +} \ No newline at end of file diff --git a/backend/pkg/messages/primitives.go b/backend/pkg/messages/primitives.go new file mode 100644 index 000000000..0c938d2b2 --- /dev/null +++ b/backend/pkg/messages/primitives.go @@ -0,0 +1,155 @@ +package messages + +import ( + "errors" + "io" + "encoding/json" + "log" +) + +func ReadByte(reader io.Reader) (byte, error) { + p := make([]byte, 1) + _, err := io.ReadFull(reader, p) + if err != nil { + return 0, err + } + return p[0], nil +} + +// func SkipBytes(reader io.ReadSeeker) error { +// n, err := ReadUint(reader) +// if err != nil { +// return err +// } +// _, err = reader.Seek(n, io.SeekCurrent); +// return err +// } + +func ReadData(reader io.Reader) ([]byte, error) { + n, err := ReadUint(reader) + if err != nil { + return nil, err + } + p := make([]byte, n) + _, err = io.ReadFull(reader, p) + if err != nil { + return nil, err + } + return p, nil +} + +func ReadUint(reader io.Reader) (uint64, error) { + var x uint64 + var s uint + i := 0 + for { + b, err := ReadByte(reader) + if err != nil { + return x, err + } + if b < 0x80 { + if i > 9 || i == 9 && b > 1 { + return x, errors.New("overflow") + } + return x | uint64(b)<> 1) + if err != nil { + return x, err + } + if ux&1 != 0 { + x = ^x + } + return x, err +} + +func ReadBoolean(reader io.Reader) (bool, error) { + p := make([]byte, 1) + _, err := io.ReadFull(reader, p) + if err != nil { + return false, err + } + return p[0] == 1, nil +} + +func ReadString(reader io.Reader) (string, error) { + l, err := ReadUint(reader) + if err != nil { + return "", err + } + if l > 10e6 { + return "", errors.New("Too long string") + } + buf := make([]byte, l) + _, err = io.ReadFull(reader, buf) + if err != nil { + return "", err + } + return string(buf), nil +} + +func ReadJson(reader io.Reader) (interface{}, error) { + jsonData, err := ReadData(reader) + if err != nil { + return nil, err + } + var v interface{} + if err = json.Unmarshal(jsonData, &v); err != nil { + return nil, err + } + return v, nil +} + +func WriteUint(v uint64, buf []byte, p int) int { + for v >= 0x80 { + buf[p] = byte(v) | 0x80 + v >>= 7 + p++ + } + buf[p] = byte(v) + return p + 1 +} + +func WriteInt(v int64, buf []byte, p int) int { + uv := uint64(v) << 1 + if v < 0 { + uv = ^uv + } + return WriteUint(uv, buf, p) +} + +func WriteBoolean(v bool, buf []byte, p int) int { + if v { + buf[p] = 1 + } else { + buf[p] = 0 + } + return p + 1 +} + +func WriteString(str string, buf []byte, p int) int { + p = WriteUint(uint64(len(str)), buf, p) + return p + copy(buf[p:], str) +} + +func WriteData(data []byte, buf []byte, p int) int { + p = WriteUint(uint64(len(data)), buf, p) + return p + copy(buf[p:], data) +} + +func WriteJson(v interface{}, buf []byte, p int) int { + data, err := json.Marshal(v) + if err != nil { + log.Printf("JSON encoding error: %v", err) + return WriteString("null", buf, p) + } + return WriteData(data, buf, p) +} \ No newline at end of file diff --git a/backend/pkg/messages/read_message.go b/backend/pkg/messages/read_message.go new file mode 100644 index 000000000..2efa8198a --- /dev/null +++ b/backend/pkg/messages/read_message.go @@ -0,0 +1,678 @@ +// Auto-generated, do not edit +package messages + +import ( + "fmt" + "io" +) + +func ReadMessage(reader io.Reader) (Message, error) { + t, err := ReadUint(reader); + if err != nil { + return nil, err + } + switch t { + + case 80: + msg := &BatchMeta{ meta: &meta{ TypeID: 80} } + if msg.PageNo, err = ReadUint(reader); err != nil { return nil, err } +if msg.FirstIndex, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadInt(reader); err != nil { return nil, err } + return msg, nil + + case 0: + msg := &Timestamp{ meta: &meta{ TypeID: 0} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 1: + msg := &SessionStart{ meta: &meta{ TypeID: 1} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.ProjectID, err = ReadUint(reader); err != nil { return nil, err } +if msg.TrackerVersion, err = ReadString(reader); err != nil { return nil, err } +if msg.RevID, err = ReadString(reader); err != nil { return nil, err } +if msg.UserUUID, err = ReadString(reader); err != nil { return nil, err } +if msg.UserAgent, err = ReadString(reader); err != nil { return nil, err } +if msg.UserOS, err = ReadString(reader); err != nil { return nil, err } +if msg.UserOSVersion, err = ReadString(reader); err != nil { return nil, err } +if msg.UserBrowser, err = ReadString(reader); err != nil { return nil, err } +if msg.UserBrowserVersion, err = ReadString(reader); err != nil { return nil, err } +if msg.UserDevice, err = ReadString(reader); err != nil { return nil, err } +if msg.UserDeviceType, err = ReadString(reader); err != nil { return nil, err } +if msg.UserDeviceMemorySize, err = ReadUint(reader); err != nil { return nil, err } +if msg.UserDeviceHeapSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.UserCountry, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 3: + msg := &SessionEnd{ meta: &meta{ TypeID: 3} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 4: + msg := &SetPageLocation{ meta: &meta{ TypeID: 4} } + if msg.URL, err = ReadString(reader); err != nil { return nil, err } +if msg.Referrer, err = ReadString(reader); err != nil { return nil, err } +if msg.NavigationStart, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 5: + msg := &SetViewportSize{ meta: &meta{ TypeID: 5} } + if msg.Width, err = ReadUint(reader); err != nil { return nil, err } +if msg.Height, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 6: + msg := &SetViewportScroll{ meta: &meta{ TypeID: 6} } + if msg.X, err = ReadInt(reader); err != nil { return nil, err } +if msg.Y, err = ReadInt(reader); err != nil { return nil, err } + return msg, nil + + case 7: + msg := &CreateDocument{ meta: &meta{ TypeID: 7} } + + return msg, nil + + case 8: + msg := &CreateElementNode{ meta: &meta{ TypeID: 8} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.ParentID, err = ReadUint(reader); err != nil { return nil, err } +if msg.index, err = ReadUint(reader); err != nil { return nil, err } +if msg.Tag, err = ReadString(reader); err != nil { return nil, err } +if msg.SVG, err = ReadBoolean(reader); err != nil { return nil, err } + return msg, nil + + case 9: + msg := &CreateTextNode{ meta: &meta{ TypeID: 9} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.ParentID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Index, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 10: + msg := &MoveNode{ meta: &meta{ TypeID: 10} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.ParentID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Index, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 11: + msg := &RemoveNode{ meta: &meta{ TypeID: 11} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 12: + msg := &SetNodeAttribute{ meta: &meta{ TypeID: 12} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 13: + msg := &RemoveNodeAttribute{ meta: &meta{ TypeID: 13} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 14: + msg := &SetNodeData{ meta: &meta{ TypeID: 14} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Data, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 15: + msg := &SetCSSData{ meta: &meta{ TypeID: 15} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Data, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 16: + msg := &SetNodeScroll{ meta: &meta{ TypeID: 16} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.X, err = ReadInt(reader); err != nil { return nil, err } +if msg.Y, err = ReadInt(reader); err != nil { return nil, err } + return msg, nil + + case 17: + msg := &SetInputTarget{ meta: &meta{ TypeID: 17} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Label, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 18: + msg := &SetInputValue{ meta: &meta{ TypeID: 18} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } +if msg.Mask, err = ReadInt(reader); err != nil { return nil, err } + return msg, nil + + case 19: + msg := &SetInputChecked{ meta: &meta{ TypeID: 19} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Checked, err = ReadBoolean(reader); err != nil { return nil, err } + return msg, nil + + case 20: + msg := &MouseMove{ meta: &meta{ TypeID: 20} } + if msg.X, err = ReadUint(reader); err != nil { return nil, err } +if msg.Y, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 21: + msg := &MouseClick{ meta: &meta{ TypeID: 21} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.HesitationTime, err = ReadUint(reader); err != nil { return nil, err } +if msg.Label, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 22: + msg := &ConsoleLog{ meta: &meta{ TypeID: 22} } + if msg.Level, err = ReadString(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 23: + msg := &PageLoadTiming{ meta: &meta{ TypeID: 23} } + if msg.RequestStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.ResponseStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.ResponseEnd, err = ReadUint(reader); err != nil { return nil, err } +if msg.DomContentLoadedEventStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.DomContentLoadedEventEnd, err = ReadUint(reader); err != nil { return nil, err } +if msg.LoadEventStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.LoadEventEnd, err = ReadUint(reader); err != nil { return nil, err } +if msg.FirstPaint, err = ReadUint(reader); err != nil { return nil, err } +if msg.FirstContentfulPaint, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 24: + msg := &PageRenderTiming{ meta: &meta{ TypeID: 24} } + if msg.SpeedIndex, err = ReadUint(reader); err != nil { return nil, err } +if msg.VisuallyComplete, err = ReadUint(reader); err != nil { return nil, err } +if msg.TimeToInteractive, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 25: + msg := &JSException{ meta: &meta{ TypeID: 25} } + if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Message, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 26: + msg := &RawErrorEvent{ meta: &meta{ TypeID: 26} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Source, err = ReadString(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Message, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 27: + msg := &RawCustomEvent{ meta: &meta{ TypeID: 27} } + if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 28: + msg := &UserID{ meta: &meta{ TypeID: 28} } + if msg.ID, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 29: + msg := &UserAnonymousID{ meta: &meta{ TypeID: 29} } + if msg.ID, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 30: + msg := &Metadata{ meta: &meta{ TypeID: 30} } + if msg.Key, err = ReadString(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 31: + msg := &PageEvent{ meta: &meta{ TypeID: 31} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.URL, err = ReadString(reader); err != nil { return nil, err } +if msg.Referrer, err = ReadString(reader); err != nil { return nil, err } +if msg.Loaded, err = ReadBoolean(reader); err != nil { return nil, err } +if msg.RequestStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.ResponseStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.ResponseEnd, err = ReadUint(reader); err != nil { return nil, err } +if msg.DomContentLoadedEventStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.DomContentLoadedEventEnd, err = ReadUint(reader); err != nil { return nil, err } +if msg.LoadEventStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.LoadEventEnd, err = ReadUint(reader); err != nil { return nil, err } +if msg.FirstPaint, err = ReadUint(reader); err != nil { return nil, err } +if msg.FirstContentfulPaint, err = ReadUint(reader); err != nil { return nil, err } +if msg.SpeedIndex, err = ReadUint(reader); err != nil { return nil, err } +if msg.VisuallyComplete, err = ReadUint(reader); err != nil { return nil, err } +if msg.TimeToInteractive, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 32: + msg := &InputEvent{ meta: &meta{ TypeID: 32} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } +if msg.ValueMasked, err = ReadBoolean(reader); err != nil { return nil, err } +if msg.Label, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 33: + msg := &ClickEvent{ meta: &meta{ TypeID: 33} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.HesitationTime, err = ReadUint(reader); err != nil { return nil, err } +if msg.Label, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 34: + msg := &ErrorEvent{ meta: &meta{ TypeID: 34} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Source, err = ReadString(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Message, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 35: + msg := &ResourceEvent{ meta: &meta{ TypeID: 35} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } +if msg.TTFB, err = ReadUint(reader); err != nil { return nil, err } +if msg.HeaderSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.EncodedBodySize, err = ReadUint(reader); err != nil { return nil, err } +if msg.DecodedBodySize, err = ReadUint(reader); err != nil { return nil, err } +if msg.URL, err = ReadString(reader); err != nil { return nil, err } +if msg.Type, err = ReadString(reader); err != nil { return nil, err } +if msg.Success, err = ReadBoolean(reader); err != nil { return nil, err } +if msg.Method, err = ReadString(reader); err != nil { return nil, err } +if msg.Status, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 36: + msg := &CustomEvent{ meta: &meta{ TypeID: 36} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 37: + msg := &CSSInsertRule{ meta: &meta{ TypeID: 37} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Rule, err = ReadString(reader); err != nil { return nil, err } +if msg.Index, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 38: + msg := &CSSDeleteRule{ meta: &meta{ TypeID: 38} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Index, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 39: + msg := &Fetch{ meta: &meta{ TypeID: 39} } + if msg.Method, err = ReadString(reader); err != nil { return nil, err } +if msg.URL, err = ReadString(reader); err != nil { return nil, err } +if msg.Request, err = ReadString(reader); err != nil { return nil, err } +if msg.Response, err = ReadString(reader); err != nil { return nil, err } +if msg.Status, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 40: + msg := &Profiler{ meta: &meta{ TypeID: 40} } + if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } +if msg.Args, err = ReadString(reader); err != nil { return nil, err } +if msg.Result, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 41: + msg := &OTable{ meta: &meta{ TypeID: 41} } + if msg.Key, err = ReadString(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 42: + msg := &StateAction{ meta: &meta{ TypeID: 42} } + if msg.Type, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 43: + msg := &StateActionEvent{ meta: &meta{ TypeID: 43} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Type, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 44: + msg := &Redux{ meta: &meta{ TypeID: 44} } + if msg.Action, err = ReadString(reader); err != nil { return nil, err } +if msg.State, err = ReadString(reader); err != nil { return nil, err } +if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 45: + msg := &Vuex{ meta: &meta{ TypeID: 45} } + if msg.Mutation, err = ReadString(reader); err != nil { return nil, err } +if msg.State, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 46: + msg := &MobX{ meta: &meta{ TypeID: 46} } + if msg.Type, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 47: + msg := &NgRx{ meta: &meta{ TypeID: 47} } + if msg.Action, err = ReadString(reader); err != nil { return nil, err } +if msg.State, err = ReadString(reader); err != nil { return nil, err } +if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 48: + msg := &GraphQL{ meta: &meta{ TypeID: 48} } + if msg.OperationKind, err = ReadString(reader); err != nil { return nil, err } +if msg.OperationName, err = ReadString(reader); err != nil { return nil, err } +if msg.Variables, err = ReadString(reader); err != nil { return nil, err } +if msg.Response, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 49: + msg := &PerformanceTrack{ meta: &meta{ TypeID: 49} } + if msg.Frames, err = ReadInt(reader); err != nil { return nil, err } +if msg.Ticks, err = ReadInt(reader); err != nil { return nil, err } +if msg.TotalJSHeapSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.UsedJSHeapSize, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 50: + msg := &GraphQLEvent{ meta: &meta{ TypeID: 50} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 52: + msg := &DOMDrop{ meta: &meta{ TypeID: 52} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 53: + msg := &ResourceTiming{ meta: &meta{ TypeID: 53} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } +if msg.TTFB, err = ReadUint(reader); err != nil { return nil, err } +if msg.HeaderSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.EncodedBodySize, err = ReadUint(reader); err != nil { return nil, err } +if msg.DecodedBodySize, err = ReadUint(reader); err != nil { return nil, err } +if msg.URL, err = ReadString(reader); err != nil { return nil, err } +if msg.Initiator, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 54: + msg := &ConnectionInformation{ meta: &meta{ TypeID: 54} } + if msg.Downlink, err = ReadUint(reader); err != nil { return nil, err } +if msg.Type, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 55: + msg := &SetPageVisibility{ meta: &meta{ TypeID: 55} } + if msg.hidden, err = ReadBoolean(reader); err != nil { return nil, err } + return msg, nil + + case 56: + msg := &PerformanceTrackAggr{ meta: &meta{ TypeID: 56} } + if msg.TimestampStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.TimestampEnd, err = ReadUint(reader); err != nil { return nil, err } +if msg.MinFPS, err = ReadUint(reader); err != nil { return nil, err } +if msg.AvgFPS, err = ReadUint(reader); err != nil { return nil, err } +if msg.MaxFPS, err = ReadUint(reader); err != nil { return nil, err } +if msg.MinCPU, err = ReadUint(reader); err != nil { return nil, err } +if msg.AvgCPU, err = ReadUint(reader); err != nil { return nil, err } +if msg.MaxCPU, err = ReadUint(reader); err != nil { return nil, err } +if msg.MinTotalJSHeapSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.AvgTotalJSHeapSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.MaxTotalJSHeapSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.MinUsedJSHeapSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.AvgUsedJSHeapSize, err = ReadUint(reader); err != nil { return nil, err } +if msg.MaxUsedJSHeapSize, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 59: + msg := &LongTask{ meta: &meta{ TypeID: 59} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } +if msg.Context, err = ReadUint(reader); err != nil { return nil, err } +if msg.ContainerType, err = ReadUint(reader); err != nil { return nil, err } +if msg.ContainerSrc, err = ReadString(reader); err != nil { return nil, err } +if msg.ContainerId, err = ReadString(reader); err != nil { return nil, err } +if msg.ContainerName, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 60: + msg := &SetNodeAttributeURLBased{ meta: &meta{ TypeID: 60} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } +if msg.BaseURL, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 61: + msg := &SetCSSDataURLBased{ meta: &meta{ TypeID: 61} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Data, err = ReadString(reader); err != nil { return nil, err } +if msg.BaseURL, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 62: + msg := &IssueEvent{ meta: &meta{ TypeID: 62} } + if msg.MessageID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Type, err = ReadString(reader); err != nil { return nil, err } +if msg.ContextString, err = ReadString(reader); err != nil { return nil, err } +if msg.Context, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 63: + msg := &TechnicalInfo{ meta: &meta{ TypeID: 63} } + if msg.Type, err = ReadString(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 64: + msg := &CustomIssue{ meta: &meta{ TypeID: 64} } + if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 65: + msg := &PageClose{ meta: &meta{ TypeID: 65} } + + return msg, nil + + case 66: + msg := &AssetCache{ meta: &meta{ TypeID: 66} } + if msg.URL, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 67: + msg := &CSSInsertRuleURLBased{ meta: &meta{ TypeID: 67} } + if msg.ID, err = ReadUint(reader); err != nil { return nil, err } +if msg.Rule, err = ReadString(reader); err != nil { return nil, err } +if msg.Index, err = ReadUint(reader); err != nil { return nil, err } +if msg.BaseURL, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 90: + msg := &IOSSessionStart{ meta: &meta{ TypeID: 90} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.ProjectID, err = ReadUint(reader); err != nil { return nil, err } +if msg.TrackerVersion, err = ReadString(reader); err != nil { return nil, err } +if msg.RevID, err = ReadString(reader); err != nil { return nil, err } +if msg.UserUUID, err = ReadString(reader); err != nil { return nil, err } +if msg.UserOS, err = ReadString(reader); err != nil { return nil, err } +if msg.UserOSVersion, err = ReadString(reader); err != nil { return nil, err } +if msg.UserDevice, err = ReadString(reader); err != nil { return nil, err } +if msg.UserDeviceType, err = ReadString(reader); err != nil { return nil, err } +if msg.UserCountry, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 91: + msg := &IOSSessionEnd{ meta: &meta{ TypeID: 91} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 92: + msg := &IOSMetadata{ meta: &meta{ TypeID: 92} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Key, err = ReadString(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 93: + msg := &IOSCustomEvent{ meta: &meta{ TypeID: 93} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 94: + msg := &IOSUserID{ meta: &meta{ TypeID: 94} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 95: + msg := &IOSUserAnonymousID{ meta: &meta{ TypeID: 95} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 96: + msg := &IOSScreenChanges{ meta: &meta{ TypeID: 96} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.SkipData, err = ReadData(reader); err != nil { return nil, err } + return msg, nil + + case 97: + msg := &IOSCrash{ meta: &meta{ TypeID: 97} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Reason, err = ReadString(reader); err != nil { return nil, err } +if msg.Stacktrace, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 98: + msg := &IOSScreenEnter{ meta: &meta{ TypeID: 98} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Title, err = ReadString(reader); err != nil { return nil, err } +if msg.ViewName, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 99: + msg := &IOSScreenLeave{ meta: &meta{ TypeID: 99} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Title, err = ReadString(reader); err != nil { return nil, err } +if msg.ViewName, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 100: + msg := &IOSClickEvent{ meta: &meta{ TypeID: 100} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Label, err = ReadString(reader); err != nil { return nil, err } +if msg.X, err = ReadUint(reader); err != nil { return nil, err } +if msg.Y, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 101: + msg := &IOSInputEvent{ meta: &meta{ TypeID: 101} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Value, err = ReadString(reader); err != nil { return nil, err } +if msg.ValueMasked, err = ReadBoolean(reader); err != nil { return nil, err } +if msg.Label, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 102: + msg := &IOSPerformanceEvent{ meta: &meta{ TypeID: 102} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Name, err = ReadString(reader); err != nil { return nil, err } +if msg.Value, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 103: + msg := &IOSLog{ meta: &meta{ TypeID: 103} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Severity, err = ReadString(reader); err != nil { return nil, err } +if msg.Content, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 104: + msg := &IOSInternalError{ meta: &meta{ TypeID: 104} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Content, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + case 105: + msg := &IOSNetworkCall{ meta: &meta{ TypeID: 105} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Length, err = ReadUint(reader); err != nil { return nil, err } +if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } +if msg.Headers, err = ReadString(reader); err != nil { return nil, err } +if msg.Body, err = ReadString(reader); err != nil { return nil, err } +if msg.URL, err = ReadString(reader); err != nil { return nil, err } +if msg.Success, err = ReadBoolean(reader); err != nil { return nil, err } +if msg.Method, err = ReadString(reader); err != nil { return nil, err } +if msg.Status, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 110: + msg := &IOSPerformanceAggregated{ meta: &meta{ TypeID: 110} } + if msg.TimestampStart, err = ReadUint(reader); err != nil { return nil, err } +if msg.TimestampEnd, err = ReadUint(reader); err != nil { return nil, err } +if msg.MinFPS, err = ReadUint(reader); err != nil { return nil, err } +if msg.AvgFPS, err = ReadUint(reader); err != nil { return nil, err } +if msg.MaxFPS, err = ReadUint(reader); err != nil { return nil, err } +if msg.MinCPU, err = ReadUint(reader); err != nil { return nil, err } +if msg.AvgCPU, err = ReadUint(reader); err != nil { return nil, err } +if msg.MaxCPU, err = ReadUint(reader); err != nil { return nil, err } +if msg.MinMemory, err = ReadUint(reader); err != nil { return nil, err } +if msg.AvgMemory, err = ReadUint(reader); err != nil { return nil, err } +if msg.MaxMemory, err = ReadUint(reader); err != nil { return nil, err } +if msg.MinBattery, err = ReadUint(reader); err != nil { return nil, err } +if msg.AvgBattery, err = ReadUint(reader); err != nil { return nil, err } +if msg.MaxBattery, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + + case 111: + msg := &IOSIssueEvent{ meta: &meta{ TypeID: 111} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } +if msg.Type, err = ReadString(reader); err != nil { return nil, err } +if msg.ContextString, err = ReadString(reader); err != nil { return nil, err } +if msg.Context, err = ReadString(reader); err != nil { return nil, err } +if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + return msg, nil + + } + return nil, fmt.Errorf("Unknown message code: %v", t) +} diff --git a/backend/pkg/queue/import.go b/backend/pkg/queue/import.go new file mode 100644 index 000000000..2bca9c8fd --- /dev/null +++ b/backend/pkg/queue/import.go @@ -0,0 +1,15 @@ +package queue + +import ( + "openreplay/backend/pkg/redisstream" + "openreplay/backend/pkg/queue/types" +) + +func NewConsumer(group string, topics []string, handler types.MessageHandler) types.Consumer { + return redisstream.NewConsumer(group, topics, handler) +} + +func NewProducer() types.Producer { + return redisstream.NewProducer() +} + diff --git a/backend/pkg/queue/messages.go b/backend/pkg/queue/messages.go new file mode 100644 index 000000000..eca4a4d49 --- /dev/null +++ b/backend/pkg/queue/messages.go @@ -0,0 +1,19 @@ +package queue + +import ( + "log" + + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/queue/types" +) + + +func NewMessageConsumer(group string, topics []string, handler types.DecodedMessageHandler) types.Consumer { + return NewConsumer(group, topics, func(sessionID uint64, value []byte, meta *types.Meta) { + if err := messages.ReadBatch(value, func(msg messages.Message) { + handler(sessionID, msg, meta) + }); err != nil { + log.Printf("Decode error: %v\n", err) + } + }) +} diff --git a/backend/pkg/queue/types/types.go b/backend/pkg/queue/types/types.go new file mode 100644 index 000000000..b671323d0 --- /dev/null +++ b/backend/pkg/queue/types/types.go @@ -0,0 +1,31 @@ +package types + +import ( + "openreplay/backend/pkg/messages" +) + +type Consumer interface { + ConsumeNext() error + DisableAutoCommit() + Commit() error + CommitBack(gap int64) error + Close() +} + + +type Producer interface { + Produce(topic string, key uint64, value []byte) error + Close(timeout int) + Flush(timeout int) +} + + +type Meta struct { + ID uint64 + Topic string + Timestamp int64 +} + +type MessageHandler func(uint64, []byte, *Meta) +type DecodedMessageHandler func(uint64, messages.Message, *Meta) + diff --git a/backend/pkg/redisstream/consumer.go b/backend/pkg/redisstream/consumer.go new file mode 100644 index 000000000..164ee9236 --- /dev/null +++ b/backend/pkg/redisstream/consumer.go @@ -0,0 +1,170 @@ +package redisstream + +import ( + "net" + "strconv" + "strings" + "log" + "sort" + "time" + + "github.com/pkg/errors" + _redis "github.com/go-redis/redis" + + "openreplay/backend/pkg/queue/types" +) + + + +type idsInfo struct{ + id []string + ts []int64 +} +type streamPendingIDsMap map[string]*idsInfo + +type Consumer struct { + redis *_redis.Client + streams []string + group string + messageHandler types.MessageHandler + idsPending streamPendingIDsMap + lastTs int64 + autoCommit bool +} + +func NewConsumer(group string, streams []string, messageHandler types.MessageHandler) *Consumer { + redis := getRedisClient() + for _, stream := range streams { + err := redis.XGroupCreateMkStream(stream, group, "0").Err() + if err != nil && err.Error() != "BUSYGROUP Consumer Group name already exists" { + log.Fatalln(err) + } + } + + + idsPending := make(streamPendingIDsMap) + + streamsCount := len(streams) + for i := 0; i < streamsCount; i++ { + // ">" is for never-delivered messages. + // Otherwise - never acknoledged only + // TODO: understand why in case of "0" it eats 100% cpu + streams = append(streams, ">") + + idsPending[streams[i]] = new(idsInfo) + } + + return &Consumer{ + redis: redis, + messageHandler: messageHandler, + streams: streams, + group: group, + autoCommit: true, + idsPending: idsPending, + } +} + +const READ_COUNT = 10 + +func (c *Consumer) ConsumeNext() error { + // MBTODO: read in go routine, send messages to channel + res, err := c.redis.XReadGroup(&_redis.XReadGroupArgs{ + Group: c.group, + Consumer: c.group, + Streams: c.streams, + Count: int64(READ_COUNT), + Block: 200 * time.Millisecond, + }).Result() + if err != nil { + if err, ok := err.(net.Error); ok && err.Timeout() { + return nil + } + if err == _redis.Nil { + return nil + } + return err + } + for _, r := range res { + for _, m := range r.Messages { + sessionIDString, ok := m.Values["sessionID"].(string) + if !ok { + return errors.Errorf("Can not cast value for messageID %v", m.ID) + } + sessionID, err := strconv.ParseUint(sessionIDString, 10, 64) + if err != nil { + return errors.Wrapf(err, "Can not parse sessionID '%v' for messageID %v", sessionID, m.ID) + } + valueString, ok := m.Values["value"].(string) + if !ok { + return errors.Errorf("Can not cast value for messageID %v", m.ID) + } + // assumming that ID has a correct format + idParts := strings.Split(m.ID, "-") + ts, _ := strconv.ParseUint(idParts[0], 10, 64) + idx, _ := strconv.ParseUint(idParts[1], 10, 64) + if idx > 0x1FFF { + return errors.New("Too many messages per ms in redis") + } + c.messageHandler(sessionID, []byte(valueString), &types.Meta{ + Topic: r.Stream, + Timestamp: int64(ts), + ID: ts << 13 | (idx & 0x1FFF), // Max: 4096 messages/ms for 69 years + }) + if c.autoCommit { + if err = c.redis.XAck(r.Stream, c.group, m.ID).Err(); err != nil { + return errors.Wrapf(err, "Acknoledgment error for messageID %v", m.ID) + } + } else { + c.lastTs = int64(ts) + c.idsPending[r.Stream].id = append(c.idsPending[r.Stream].id, m.ID) + c.idsPending[r.Stream].ts = append(c.idsPending[r.Stream].ts, int64(ts)) + } + + } + } + return nil +} + +func (c *Consumer) Commit() error { + for stream, idsInfo := range c.idsPending { + if len(idsInfo.id) == 0 { + continue + } + if err := c.redis.XAck(stream, c.group, idsInfo.id...).Err(); err != nil { + return errors.Wrapf(err, "Redisstreams: Acknoledgment error on commit %v", err) + } + c.idsPending[stream].id = nil + c.idsPending[stream].ts = nil + } + return nil +} + +func (c *Consumer) CommitBack(gap int64) error { + if c.lastTs == 0 { + return nil + } + maxTs := c.lastTs - gap + + for stream, idsInfo := range c.idsPending { + if len(idsInfo.id) == 0 { + continue + } + maxI := sort.Search(len(idsInfo.ts), func(i int) bool { + return idsInfo.ts[i] > maxTs + }) + if err := c.redis.XAck(stream, c.group, idsInfo.id[:maxI]...).Err(); err != nil { + return errors.Wrapf(err, "Redisstreams: Acknoledgment error on commit %v", err) + } + c.idsPending[stream].id = idsInfo.id[maxI:] + c.idsPending[stream].ts = idsInfo.ts[maxI:] + } + return nil +} + +func (c *Consumer) DisableAutoCommit() { + //c.autoCommit = false +} + +func (c *Consumer) Close() { + // noop +} \ No newline at end of file diff --git a/backend/pkg/redisstream/producer.go b/backend/pkg/redisstream/producer.go new file mode 100644 index 000000000..e67200a4f --- /dev/null +++ b/backend/pkg/redisstream/producer.go @@ -0,0 +1,44 @@ +package redisstream + +import ( + "github.com/go-redis/redis" + + "openreplay/backend/pkg/env" +) + + +type Producer struct { + redis *redis.Client + maxLenApprox int64 +} + +func NewProducer() *Producer { + return &Producer{ + redis: getRedisClient(), + maxLenApprox: int64(env.Uint64("REDIS_STREAMS_MAX_LEN")), + } +} + +func (p *Producer) Produce(topic string, key uint64, value []byte) error { + args := &redis.XAddArgs{ + Stream: topic, + Values: map[string]interface{}{ + "sessionID": key, + "value": value, + }, + } + args.MaxLenApprox = p.maxLenApprox + + _, err := p.redis.XAdd(args).Result() + if err != nil { + return err + } + return nil +} + +func (p *Producer) Close(_ int) { + // noop +} +func (p *Producer) Flush(_ int) { + // noop +} diff --git a/backend/pkg/redisstream/redis.go b/backend/pkg/redisstream/redis.go new file mode 100644 index 000000000..dea4afe9b --- /dev/null +++ b/backend/pkg/redisstream/redis.go @@ -0,0 +1,26 @@ +package redisstream + +import ( + "log" + + "github.com/go-redis/redis" + + "openreplay/backend/pkg/env" +) + + +var redisClient *redis.Client + + +func getRedisClient() *redis.Client { + if redisClient != nil { + return redisClient + } + redisClient = redis.NewClient(&redis.Options{ + Addr: env.String("REDIS_STRING"), + }) + if _, err := redisClient.Ping().Result(); err != nil { + log.Fatalln(err) + } + return redisClient +} \ No newline at end of file diff --git a/backend/pkg/storage/s3.go b/backend/pkg/storage/s3.go new file mode 100644 index 000000000..0f55e3851 --- /dev/null +++ b/backend/pkg/storage/s3.go @@ -0,0 +1,98 @@ +package storage + +import ( + "io" + "strconv" + "sort" + + _s3 "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3manager" + + "openreplay/backend/pkg/env" +) + +type S3 struct { + uploader *s3manager.Uploader + svc *_s3.S3 + bucket *string +} + + +func NewS3(region string, bucket string) *S3 { + sess := env.AWSSessionOnRegion(region) + return &S3{ + uploader: s3manager.NewUploader(sess), + svc: _s3.New(sess), // AWS Docs: "These clients are safe to use concurrently." + bucket: &bucket, + } +} + +func (s3 *S3) Upload(reader io.Reader, key string, contentType string, gzipped bool) error { + cacheControl := "max-age=2628000, immutable, private" + var contentEncoding *string + if gzipped { + gzipStr := "gzip" + contentEncoding = &gzipStr + } + _, err := s3.uploader.Upload(&s3manager.UploadInput{ + Body: reader, + Bucket: s3.bucket, + Key: &key, + ContentType: &contentType, + CacheControl: &cacheControl, + ContentEncoding: contentEncoding, + }) + return err +} + +func (s3 *S3) Get(key string) (io.ReadCloser, error) { + out, err := s3.svc.GetObject(&_s3.GetObjectInput{ + Bucket: s3.bucket, + Key: &key, + }) + if err != nil { + return nil, err + } + return out.Body, nil +} + +func (s3 *S3) Exists(key string) bool { + _, err := s3.svc.HeadObject(&_s3.HeadObjectInput{ + Bucket: s3.bucket, + Key: &key, + }) + if err == nil { + return true + } + return false +} + + +const MAX_RETURNING_COUNT = 40 +func (s3 *S3) GetFrequentlyUsedKeys(projectID uint64) ([]string, error) { + prefix := strconv.FormatUint(projectID, 10) + "/" + output, err := s3.svc.ListObjectsV2(&_s3.ListObjectsV2Input{ + Bucket: s3.bucket, + Prefix: &prefix, + }) + if err != nil { + return nil, err + } + //pagination may be here + + list := output.Contents + max := len(list) + if (max > MAX_RETURNING_COUNT) { + max = MAX_RETURNING_COUNT + sort.Slice(list, func(i, j int) bool { + return list[i].LastModified.After(*(list[j].LastModified)) + }) + } + + var keyList []string + s := len(prefix) + for _, obj := range list[:max] { + keyList = append(keyList, (*obj.Key)[s:]) + } + return keyList, nil +} \ No newline at end of file diff --git a/backend/pkg/token/http.go b/backend/pkg/token/http.go new file mode 100644 index 000000000..898bad559 --- /dev/null +++ b/backend/pkg/token/http.go @@ -0,0 +1,18 @@ +package token + +import ( + "errors" + "net/http" + "strings" +) + +const BEARER_SCHEMA = "Bearer " + +func (tokenizer *Tokenizer) ParseFromHTTPRequest(r *http.Request) (*TokenData, error) { + header := r.Header.Get("Authorization") + if !strings.HasPrefix(header, BEARER_SCHEMA) { + return nil, errors.New("Missing token") + } + token := header[len(BEARER_SCHEMA):] + return tokenizer.Parse(token) +} diff --git a/backend/pkg/token/tokenizer.go b/backend/pkg/token/tokenizer.go new file mode 100644 index 000000000..3f1069a63 --- /dev/null +++ b/backend/pkg/token/tokenizer.go @@ -0,0 +1,65 @@ +package token + +import ( + "crypto/hmac" + "crypto/sha256" + "errors" + "strconv" + "strings" + "time" + + "github.com/btcsuite/btcutil/base58" +) + +var EXPIRED = errors.New("token expired") + +type Tokenizer struct { + secret []byte +} + +func NewTokenizer(secret string) *Tokenizer { + return &Tokenizer{[]byte(secret)} +} + +type TokenData struct { + ID uint64 + ExpTime int64 +} + +func (tokenizer *Tokenizer) sign(body string) []byte { + mac := hmac.New(sha256.New, tokenizer.secret) + mac.Write([]byte(body)) + return mac.Sum(nil) +} + +func (tokenizer *Tokenizer) Compose(d TokenData) string { + body := strconv.FormatUint(d.ID, 36) + + "." + strconv.FormatInt(d.ExpTime, 36) + sign := base58.Encode(tokenizer.sign(body)) + return body + "." + sign +} + +func (tokenizer *Tokenizer) Parse(token string) (*TokenData, error) { + data := strings.Split(token, ".") + if len(data) != 3 { + return nil, errors.New("wrong token format") + } + if !hmac.Equal( + base58.Decode(data[len(data)-1]), + tokenizer.sign(data[0]+"."+data[1]), + ) { + return nil, errors.New("wrong token sign") + } + id, err := strconv.ParseUint(data[0], 36, 64) + if err != nil { + return nil, err + } + expTime, err := strconv.ParseInt(data[1], 36, 64) + if err != nil { + return nil, err + } + if expTime <= time.Now().UnixNano()/1e6 { + return &TokenData{id,expTime}, EXPIRED + } + return &TokenData{id,expTime}, nil +} diff --git a/backend/pkg/url/assets/css.go b/backend/pkg/url/assets/css.go new file mode 100644 index 000000000..728239837 --- /dev/null +++ b/backend/pkg/url/assets/css.go @@ -0,0 +1,63 @@ +package assets + +import ( + "regexp" + "sort" + "strings" +) + +// TODO: ignore data: , escaped quotes , spaces between brackets? +var cssURLs = regexp.MustCompile(`url\(("[^"]*"|'[^']*'|[^)]*)\)`) +var cssImports = regexp.MustCompile(`@import "(.*?)"`) + +func cssUrlsIndex(css string) [][]int { + var idxs [][]int + for _, match := range cssURLs.FindAllStringSubmatchIndex(css, -1) { + idxs = append(idxs, match[2:]) + } + for _, match := range cssImports.FindAllStringSubmatchIndex(css, -1) { + idxs = append(idxs, match[2:]) + } + sort.Slice(idxs, func(i, j int) bool { + return idxs[i][0] > idxs[j][0] + }) + return idxs +} + +func unquote(str string) (string, string) { + str = strings.TrimSpace(str) + if len(str) <= 2 { + return str, "" + } + if str[0] == '"' && str[len(str)-1] == '"' { + return str[1 : len(str)-1], "\"" + } + if str[0] == '\'' && str[len(str)-1] == '\'' { + return str[1 : len(str)-1], "'" + } + return str, "" +} + +func ExtractURLsFromCSS(css string) []string { + indexes := cssUrlsIndex(css) + urls := make([]string, len(indexes)) + for _, idx := range indexes { + + f := idx[0] + t := idx[1] + rawurl, _ := unquote(css[f:t]) + urls = append(urls, rawurl) + } + return urls +} + +func (r *Rewriter) RewriteCSS(sessionID uint64, baseurl string, css string) string { + for _, idx := range cssUrlsIndex(css) { + f := idx[0] + t := idx[1] + rawurl, q := unquote(css[f:t]) + // why exactly quote back? + css = css[:f] + q + r.RewriteURL(sessionID, baseurl, rawurl) + q + css[t:] + } + return strings.Replace(css, ":hover", ".-asayer-hover", -1) +} diff --git a/backend/pkg/url/assets/rewriter.go b/backend/pkg/url/assets/rewriter.go new file mode 100644 index 000000000..025e3cd5d --- /dev/null +++ b/backend/pkg/url/assets/rewriter.go @@ -0,0 +1,21 @@ +package assets + +import ( + "log" + "net/url" +) + +type Rewriter struct { + assetsURL *url.URL +} + +func NewRewriter(baseOrigin string) *Rewriter { + assetsURL, err := url.Parse(baseOrigin) + if err != nil { + log.Fatal(err) + } + return &Rewriter{ + assetsURL: assetsURL, + } + +} diff --git a/backend/pkg/url/assets/url.go b/backend/pkg/url/assets/url.go new file mode 100644 index 000000000..9f6c2c267 --- /dev/null +++ b/backend/pkg/url/assets/url.go @@ -0,0 +1,98 @@ +package assets + +import ( + "net/url" + "path/filepath" + "strconv" +) + +func getSessionKey(sessionID uint64) string { + // Based on timestamp, changes once per week. Check out utils/flacker for understanding sessionID + return strconv.FormatUint(sessionID>>50, 10) +} + +func ResolveURL(baseurl string, rawurl string) string { + base, _ := url.ParseRequestURI(baseurl) // fn Only for base urls + u, _ := url.Parse(rawurl) // TODO: handle errors ? + if base == nil || u == nil { + return rawurl + } + return base.ResolveReference(u).String() // ResolveReference same as base.Parse(rawurl) +} + +func isRelativeCachable(relativeURL string) bool { + if len(relativeURL) == 0 || relativeURL[0] == '#' { + return false + } + return true +} +func isCachable(rawurl string) bool { + u, _ := url.Parse(rawurl) + if u == nil || u.User != nil { + return false + } + if u.Scheme != "http" && u.Scheme != "https" { + return false + } + ext := filepath.Ext(u.Path) + return ext == ".css" || + ext == ".woff" || + ext == ".woff2" || + ext == ".ttf" || + ext == ".otf" +} + +func GetFullCachableURL(baseURL string, relativeURL string) (string, bool) { + if !isRelativeCachable(relativeURL) { + return "", false + } + return ResolveURL(baseURL, relativeURL), true +} + + +const ASAYER_QUERY_START = "ASAYER_QUERY_ESCtRT" + +func getCachePath(rawurl string) string { + u, _ := url.Parse(rawurl) + s := "/" + u.Scheme + "/" + u.Hostname() + u.Path + if u.RawQuery != "" { + if (s[len(s) - 1] != '/') { + s += "/" + } + s += ASAYER_QUERY_START + url.PathEscape(u.RawQuery) + } + return s +} + +func getCachePathWithKey(sessionID uint64, rawurl string) string { + return getCachePath(rawurl) + "." + getSessionKey(sessionID) // Be carefull with slashes +} + +func GetCachePathForJS(rawurl string) string { + return getCachePath(rawurl) +} + +func GetCachePathForAssets(sessionID uint64, rawurl string) string { + return getCachePathWithKey(sessionID, rawurl) +} + + +func (r *Rewriter) RewriteURL(sessionID uint64, baseURL string, relativeURL string) string { + // TODO: put it in one check within GetFullCachableURL + if !isRelativeCachable(relativeURL) { + return relativeURL + } + fullURL := ResolveURL(baseURL, relativeURL) + if !isCachable(fullURL) { + return relativeURL + } + + u := url.URL{ + Path: r.assetsURL.Path + getCachePathWithKey(sessionID, fullURL), + Host: r.assetsURL.Host, + Scheme: r.assetsURL.Scheme, + } + + return u.String() +} + diff --git a/backend/pkg/url/method.go b/backend/pkg/url/method.go new file mode 100644 index 000000000..e7dd9eb49 --- /dev/null +++ b/backend/pkg/url/method.go @@ -0,0 +1,12 @@ +package url + +var METHODS = []string{ "GET", "HEAD", "POST" , "PUT" , "DELETE" , "CONNECT" , "OPTIONS" , "TRACE" , "PATCH" } + +func EnsureMethod(method string) string { + for _, m := range METHODS { + if m == method { + return method + } + } + return "" +} \ No newline at end of file diff --git a/backend/pkg/url/url.go b/backend/pkg/url/url.go new file mode 100644 index 000000000..b9181774d --- /dev/null +++ b/backend/pkg/url/url.go @@ -0,0 +1,18 @@ +package url + +import ( + "strings" + _url "net/url" +) + +func DiscardURLQuery(url string) string { + return strings.Split(url, "?")[0] +} + +func GetURLParts(rawURL string) (string, string, error) { + u, err := _url.Parse(rawURL) + if err != nil { + return "", "", err + } + return u.Host, u.RequestURI(), nil +} \ No newline at end of file diff --git a/backend/pkg/utime/utime.go b/backend/pkg/utime/utime.go new file mode 100644 index 000000000..e3b5a2751 --- /dev/null +++ b/backend/pkg/utime/utime.go @@ -0,0 +1,11 @@ +package utime + +import "time" + +func CurrentTimestamp() int64 { + return time.Now().UnixNano() / 1e6 +} + +func ToMilliseconds(t time.Time) int64 { + return t.UnixNano() / 1e6 +} diff --git a/backend/services/alerts/main.go b/backend/services/alerts/main.go new file mode 100644 index 000000000..c4398f470 --- /dev/null +++ b/backend/services/alerts/main.go @@ -0,0 +1,94 @@ +package main + +import ( + "database/sql" + "log" + "os" + "os/signal" + "syscall" + "time" + + "github.com/ClickHouse/clickhouse-go" + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/db/postgres" +) + +func main() { + log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) + POSTGRES_STRING := env.String("POSTGRES_STRING") + CLICKHOUSE_STRING := env.String("CLICKHOUSE_STRING") + NOTIFICATIONS_STRING := env.String("ALERT_NOTIFICATION_STRING") + log.Printf("Notifications: %s \nCH: %s\n", NOTIFICATIONS_STRING, CLICKHOUSE_STRING) + pg := postgres.NewConn(POSTGRES_STRING) + defer pg.Close() + + ch, err := sql.Open("clickhouse", CLICKHOUSE_STRING) + if err != nil { + log.Fatal(err) + } + if err := ch.Ping(); err != nil { + if exception, ok := err.(*clickhouse.Exception); ok { + log.Printf("[%d] %s \n%s\n", exception.Code, exception.Message, exception.StackTrace) + } else { + log.Println(err) + } + return + } + + manager := NewManager(NOTIFICATIONS_STRING, ch, pg) + if err := pg.IterateAlerts(func(a *postgres.Alert, err error) { + if err != nil { + log.Printf("Postgres error: %v\n", err) + return + } + log.Printf("Alert initialization: %+v\n", *a) + //log.Printf("CreatedAt: %s\n", *a.CreatedAt) + err = manager.Update(a) + if err != nil { + log.Printf("Alert parse error: %v | Alert: %+v\n", err, *a) + return + } + }); err != nil { + log.Fatalf("Postgres error: %v\n", err) + } + + listener, err := postgres.NewAlertsListener(POSTGRES_STRING) + if err != nil { + log.Fatalf("Postgres listener error: %v\n", err) + } + defer listener.Close() + + sigchan := make(chan os.Signal, 1) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + + tickAlert := time.Tick(1 * time.Minute) + + log.Printf("Alert service started\n") + manager.RequestAll() + //return + for { + select { + case sig := <-sigchan: + log.Printf("Caught signal %v: terminating\n", sig) + listener.Close() + pg.Close() + os.Exit(0) + case <-tickAlert: + log.Printf("Requesting all...%d alerts\n", manager.Length()) + manager.RequestAll() + case iPointer := <-listener.Alerts: + log.Printf("Alert update: %+v\n", *iPointer) + //log.Printf("CreatedAt: %s\n", *iPointer.CreatedAt) + //log.Printf("Notification received for AlertId: %d\n", iPointer.AlertID) + err := manager.Update(iPointer) + if err != nil { + log.Printf("Alert parse error: %+v | Alert: %v\n", err, *iPointer) + } + case err := <-listener.Errors: + log.Printf("listener error: %v\n", err) + if err.Error() == "conn closed" { + panic("Listener conn lost") + } + } + } +} diff --git a/backend/services/alerts/manager.go b/backend/services/alerts/manager.go new file mode 100644 index 000000000..3f9e39851 --- /dev/null +++ b/backend/services/alerts/manager.go @@ -0,0 +1,169 @@ +package main + +import ( + "database/sql" + "fmt" + "log" + "sync" + "sync/atomic" + "time" + + "openreplay/backend/pkg/db/postgres" +) + +const CHParallelLimit = 2 + +var chCount int64 + +type manager struct { + notificationsUrl string + alertsCache map[uint32]*postgres.Alert + cacheMutex sync.Mutex + chParallel chan bool + ch *sql.DB + pg *postgres.Conn + pgMutex sync.Mutex + notifications map[uint32]*postgres.TenantNotification + notificationsGo *sync.WaitGroup + notificationsMutex sync.Mutex +} + +func NewManager(notificationsUrl string, ch *sql.DB, pg *postgres.Conn) *manager { + return &manager{ + notificationsUrl: notificationsUrl, + alertsCache: make(map[uint32]*postgres.Alert), + cacheMutex: sync.Mutex{}, + chParallel: make(chan bool, CHParallelLimit), + ch: ch, + pg: pg, + pgMutex: sync.Mutex{}, + notifications: make(map[uint32]*postgres.TenantNotification), + notificationsGo: &sync.WaitGroup{}, + notificationsMutex: sync.Mutex{}, + } + +} + +func (m *manager) Length() int { + return len(m.alertsCache) +} + +func (m *manager) Update(a *postgres.Alert) error { + m.cacheMutex.Lock() + defer m.cacheMutex.Unlock() + _, exists := m.alertsCache[a.AlertID] + if exists && a.DeletedAt != nil { + log.Println("deleting alert from memory") + delete(m.alertsCache, a.AlertID) + return nil + } else { + m.alertsCache[a.AlertID] = a + } + return nil +} +func (m *manager) processAlert(a *postgres.Alert) { + defer func() { + defer m.notificationsGo.Done() + <-m.chParallel + }() + if !a.CanCheck() { + //log.Printf("cannot check %+v", a) + //log.Printf("cannot check alertId %d", a.AlertID) + log.Printf("cannot check %s", a.Name) + return + } + //log.Printf("checking %+v", a) + log.Printf("quering %s", a.Name) + //--- For stats: + atomic.AddInt64(&chCount, 1) + q, err := a.Build() + if err != nil { + log.Println(err) + return + } + + //sub1, args, _ := q.ToSql() + //log.Println(sub1) + //log.Println(args) + //return + rows, err := q.RunWith(m.ch).Query() + + if err != nil { + log.Println(err) + return + } + defer rows.Close() + + for rows.Next() { + var ( + value sql.NullFloat64 + valid bool + ) + if err := rows.Scan(&value, &valid); err != nil { + log.Println(err) + continue + } + //log.Println(valid) + //log.Println(value.Valid) + if valid && value.Valid { + log.Printf("%s: valid", a.Name) + m.notificationsMutex.Lock() + m.notifications[a.AlertID] = &postgres.TenantNotification{ + TenantId: a.TenantId, + Title: a.Name, + Description: fmt.Sprintf("has been triggered, %s = %.0f (%s %.0f).", a.Query.Left, value.Float64, a.Query.Operator, a.Query.Right), + ButtonText: "Check metrics for more details", + ButtonUrl: fmt.Sprintf("/%d/metrics", a.ProjectID), + ImageUrl: nil, + Options: map[string]interface{}{"source": "ALERT", "sourceId": a.AlertID, "sourceMeta": a.DetectionMethod, "message": a.Options.Message, "projectId": a.ProjectID}, + } + m.notificationsMutex.Unlock() + } + } + +} +func (m *manager) RequestAll() { + now := time.Now().Unix() + m.cacheMutex.Lock() + for _, a := range m.alertsCache { + m.chParallel <- true + m.notificationsGo.Add(1) + go m.processAlert(a) + //m.processAlert(a) + } + //log.Println("releasing cache") + m.cacheMutex.Unlock() + //log.Println("waiting for all alerts to finish") + m.notificationsGo.Wait() + log.Printf("done %d CH queries in: %ds", chCount, time.Now().Unix()-now) + chCount = 0 + //log.Printf("Processing %d Notifications", len(m.notifications)) + m.notificationsMutex.Lock() + go m.ProcessNotifications(m.notifications) + m.notificationsMutex.Unlock() + m.notifications = make(map[uint32]*postgres.TenantNotification) + //log.Printf("Notifications purged: %d", len(m.notifications)) +} + +func (m *manager) ProcessNotifications(allNotifications map[uint32]*postgres.TenantNotification) { + //return + if len(allNotifications) == 0 { + log.Println("No notifications to process") + return + } + log.Printf("sending %d notifications", len(allNotifications)) + allIds := make([]uint32, 0, len(allNotifications)) + toSend := postgres.Notifications{ + Notifications: []*postgres.TenantNotification{}, + } + for k, n := range allNotifications { + //log.Printf("notification for %d", k) + allIds = append(allIds, k) + toSend.Notifications = append(toSend.Notifications, n) + } + toSend.Send(m.notificationsUrl) + if err := m.pg.SaveLastNotification(allIds); err != nil { + log.Printf("Error saving LastNotification time: %v", err) + return + } +} diff --git a/backend/services/assets/cacher/cacher.go b/backend/services/assets/cacher/cacher.go new file mode 100644 index 000000000..d9f39aa77 --- /dev/null +++ b/backend/services/assets/cacher/cacher.go @@ -0,0 +1,145 @@ +package cacher + +import ( + "fmt" + "io" + "io/ioutil" + "mime" + "net/http" + "crypto/tls" + "path/filepath" + "strings" + "time" + + "github.com/pkg/errors" + + "openreplay/backend/pkg/url/assets" + "openreplay/backend/pkg/storage" +) + +const BODY_LIMIT = 6 * (1 << 20) // 6 Mb +const MAX_CACHE_DEPTH = 5 + +type cacher struct { + timeoutMap *timeoutMap // Concurrency implemented + s3 *storage.S3 // AWS Docs: "These clients are safe to use concurrently." + httpClient *http.Client // Docs: "Clients are safe for concurrent use by multiple goroutines." + rewriter *assets.Rewriter // Read only + Errors chan error +} + +func NewCacher(region string, bucket string, origin string) *cacher { + rewriter := assets.NewRewriter(origin) + return &cacher{ + timeoutMap: newTimeoutMap(), + s3: storage.NewS3(region, bucket), + httpClient: &http.Client{ + Timeout: time.Duration(6) * time.Second, + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + }, + rewriter: rewriter, + Errors: make(chan error), + } +} + +func (c *cacher) cacheURL(requestURL string, sessionID uint64, depth byte, context string, isJS bool) { + if c.timeoutMap.contains(requestURL) { + return + } + c.timeoutMap.add(requestURL) + var cachePath string + if (isJS) { + cachePath = assets.GetCachePathForJS(requestURL) + } else { + cachePath = assets.GetCachePathForAssets(sessionID, requestURL) + } + if c.s3.Exists(cachePath) { + return + } + + req, _ := http.NewRequest("GET", requestURL, nil) + req.Header.Set("Cookie", "ABv=3;") // Hack for rueducommerce + res, err := c.httpClient.Do(req) + if err != nil { + c.Errors <- errors.Wrap(err, context) + return + } + defer res.Body.Close() + if res.StatusCode != 200 { + // TODO: retry + c.Errors <- errors.Wrap(fmt.Errorf("Status code is %v, ", res.StatusCode), context) + return + } + data, err := ioutil.ReadAll(io.LimitReader(res.Body, BODY_LIMIT+1)) + if err != nil { + c.Errors <- errors.Wrap(err, context) + return + } + if len(data) > BODY_LIMIT { + c.Errors <- errors.Wrap(errors.New("Maximum size exceeded"), context) + return + } + + contentType := res.Header.Get("Content-Type") + if contentType == "" { + contentType = mime.TypeByExtension(filepath.Ext(res.Request.URL.Path)) + } + isCSS := strings.HasPrefix(contentType, "text/css") + + strData := string(data) + if isCSS { + strData = c.rewriter.RewriteCSS(sessionID, requestURL, strData) // TODO: one method for reqrite and return list + } + + // TODO: implement in streams + err = c.s3.Upload(strings.NewReader(strData), cachePath, contentType, false) + if err != nil { + c.Errors <- errors.Wrap(err, context) + return + } + c.timeoutMap.add(requestURL) + + if isCSS { + if depth > 0 { + for _, extractedURL := range assets.ExtractURLsFromCSS(string(data)) { + if fullURL, cachable := assets.GetFullCachableURL(requestURL, extractedURL); cachable { + go c.cacheURL(fullURL, sessionID, depth-1, context + "\n -> " + fullURL, false) + } + } + if err != nil { + c.Errors <- errors.Wrap(err, context) + return + } + } else { + c.Errors <- errors.Wrap(errors.New("Maximum recursion cache depth exceeded"), context) + return + } + } + return +} + +func (c *cacher) CacheJSFile(sourceURL string) { + go c.cacheURL(sourceURL, 0, 0, sourceURL, true) +} + +func (c *cacher) CacheURL(sessionID uint64, fullURL string) { + go c.cacheURL(fullURL, sessionID, MAX_CACHE_DEPTH, fullURL, false) +} + +// func (c *cacher) CacheURL(sessionID uint64, baseURL string, relativeURL string) { +// if fullURL, cachable := assets.GetFullCachableURL(baseURL, relativeURL); cachable { +// c.CacheURL(sessionID, fullURL) +// } +// } + +// func (c *cacher) CacheCSSLinks(baseURL string, css string, sessionID uint64) { +// for _, extractedURL := range assets.ExtractURLsFromCSS(css) { +// c.CacheURL(sessionID, baseURL, extractedURL) +// } +// } + +func (c *cacher) UpdateTimeouts() { + c.timeoutMap.deleteOutdated() +} diff --git a/backend/services/assets/cacher/timeoutMap.go b/backend/services/assets/cacher/timeoutMap.go new file mode 100644 index 000000000..36fc4ee4d --- /dev/null +++ b/backend/services/assets/cacher/timeoutMap.go @@ -0,0 +1,45 @@ +package cacher + +import ( + "sync" + "time" +) + +const MAX_STORAGE_TIME = 18 * time.Hour + +// If problem with cache contention (>=4 core) look at sync.Map + +type timeoutMap struct { + mx sync.RWMutex + m map[string]time.Time +} + +func newTimeoutMap() *timeoutMap { + return &timeoutMap{ + m: make(map[string]time.Time), + } +} + +func (tm *timeoutMap) add(key string) { + tm.mx.Lock() + defer tm.mx.Unlock() + tm.m[key] = time.Now() +} + +func (tm *timeoutMap) contains(key string) bool { + tm.mx.RLock() + defer tm.mx.RUnlock() + _, ok := tm.m[key] + return ok +} + +func (tm *timeoutMap) deleteOutdated() { + now := time.Now() + tm.mx.Lock() + defer tm.mx.Unlock() + for key, t := range tm.m { + if now.Sub(t) > MAX_STORAGE_TIME { + delete(tm.m, key) + } + } +} diff --git a/backend/services/assets/jsexception.go b/backend/services/assets/jsexception.go new file mode 100644 index 000000000..ce5852bd5 --- /dev/null +++ b/backend/services/assets/jsexception.go @@ -0,0 +1,32 @@ +package main + +import ( + "encoding/json" + "strings" +) + + +type frame struct { + FileName string `json:"fileName"` +} + + +func extractJSExceptionSources(payload *string) ([]string, error) { + var frameList []frame + err := json.Unmarshal([]byte(*payload), &frameList) + if err != nil { + return nil, err + } + + presentedFileName := make(map[string]bool) + var fileNamesList []string + + for _, f := range frameList { + fn := strings.Split(f.FileName, "?")[0] + if strings.HasPrefix(fn, "http") && !presentedFileName[fn] { + fileNamesList = append(fileNamesList, f.FileName) + presentedFileName[fn] = true + } + } + return fileNamesList, nil +} \ No newline at end of file diff --git a/backend/services/assets/main.go b/backend/services/assets/main.go new file mode 100644 index 000000000..e62c277de --- /dev/null +++ b/backend/services/assets/main.go @@ -0,0 +1,74 @@ +package main + +import ( + "log" + "time" + + "os" + "os/signal" + "syscall" + + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/queue" + "openreplay/backend/pkg/queue/types" + "openreplay/backend/services/assets/cacher" +) + + +func main() { + log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) + + GROUP_CACHE := env.String("GROUP_CACHE") + TOPIC_TRIGGER := env.String("TOPIC_TRIGGER") + + cacher := cacher.NewCacher( + env.String("AWS_REGION"), + env.String("S3_BUCKET_ASSETS"), + env.String("ASSETS_ORIGIN"), + ) + + consumer := queue.NewMessageConsumer( + GROUP_CACHE, + []string{ TOPIC_TRIGGER }, + func(sessionID uint64, message messages.Message, e *types.Meta) { + switch msg := message.(type) { + case *messages.AssetCache: + cacher.CacheURL(sessionID, msg.URL) + case *messages.ErrorEvent: + if msg.Source != "js_exception" { + return + } + sourceList, err := extractJSExceptionSources(&msg.Payload) + if err != nil { + log.Printf("Error on source extraction: %v", err) + return + } + for _, source := range sourceList { + cacher.CacheJSFile(source) + } + } + }, + ) + + + tick := time.Tick(20 * time.Minute) + + sigchan := make(chan os.Signal, 1) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + + for { + select { + case sig := <-sigchan: + log.Printf("Caught signal %v: terminating\n", sig) + consumer.Close() + os.Exit(0) + case <-tick: + cacher.UpdateTimeouts() + default: + if err := consumer.ConsumeNext(); err != nil { + log.Fatalf("Error on consumption: %v", err) + } + } + } +} \ No newline at end of file diff --git a/backend/services/db/heuristics/anr.go b/backend/services/db/heuristics/anr.go new file mode 100644 index 000000000..266f882f9 --- /dev/null +++ b/backend/services/db/heuristics/anr.go @@ -0,0 +1,52 @@ +package heuristics + +import ( + . "openreplay/backend/pkg/messages" +) + + +const MIN_TIME_AFTER_LAST_HEARTBEAT = 60 * 1000 + +type anr struct { + readyMessageStore + lastLabel string + lastHeartbeatTimestamp uint64 + lastHeartbeatIndex uint64 +} + +func (h *anr) buildIf(timestamp uint64) { + if h.lastHeartbeatTimestamp != 0 && h.lastHeartbeatTimestamp + MIN_TIME_AFTER_LAST_HEARTBEAT <= timestamp { + m := &IOSIssueEvent{ + Type: "anr", + ContextString: h.lastLabel, + //Context: "{}", + //Payload: fmt.SPrint + } + m.Timestamp = h.lastHeartbeatTimestamp + m.Index = h.lastHeartbeatIndex // Associated Index/ MessageID ? + h.append(m) + h.lastHeartbeatTimestamp = 0 + h.lastHeartbeatIndex = 0 + } +} + +func (h *anr) HandleMessage(msg Message) { + switch m := msg.(type) { + case *IOSClickEvent: + h.buildIf(m.Timestamp) + h.lastLabel = m.Label + h.lastHeartbeatTimestamp = m.Timestamp + h.lastHeartbeatIndex = m.Index + case *IOSInputEvent: + h.buildIf(m.Timestamp) + h.lastLabel = m.Label + h.lastHeartbeatTimestamp = m.Timestamp + h.lastHeartbeatIndex = m.Index + case *IOSPerformanceEvent: + h.buildIf(m.Timestamp) + h.lastHeartbeatTimestamp = m.Timestamp + h.lastHeartbeatIndex = m.Index + case *IOSSessionEnd: + h.buildIf(m.Timestamp) + } +} \ No newline at end of file diff --git a/backend/services/db/heuristics/clickrage.go b/backend/services/db/heuristics/clickrage.go new file mode 100644 index 000000000..4dc86ee65 --- /dev/null +++ b/backend/services/db/heuristics/clickrage.go @@ -0,0 +1,58 @@ +package heuristics + +import ( + . "openreplay/backend/pkg/messages" +) + + +const CLICK_TIME_DIFF = 200 +const MIN_CLICKS_IN_A_ROW = 3 + +type clickrage struct { + readyMessageStore + lastTimestamp uint64 + lastLabel string + firstInARawTimestamp uint64 + firstInARawSeqIndex uint64 + countsInARow int +} + +func (h *clickrage) build() { + if h.countsInARow >= MIN_CLICKS_IN_A_ROW { + m := &IOSIssueEvent{ + Type: "click_rage", + ContextString: h.lastLabel, + //Context: "{}", + //Payload: fmt.SPrint + } + m.Timestamp = h.firstInARawTimestamp + m.Index = h.firstInARawSeqIndex // Associated Index/ MessageID ? + h.append(m) + } + h.lastTimestamp = 0 + h.lastLabel = "" + h.firstInARawTimestamp = 0 + h.firstInARawSeqIndex = 0 + h.countsInARow = 0 +} + +func (h *clickrage) HandleMessage(msg Message) { + switch m := msg.(type) { + case *IOSClickEvent: + if h.lastTimestamp + CLICK_TIME_DIFF < m.Timestamp && h.lastLabel == m.Label { + h.lastTimestamp = m.Timestamp + h.countsInARow += 1 + return + } + h.build() + if m.Label != "" { + h.lastTimestamp = m.Timestamp + h.lastLabel = m.Label + h.firstInARawTimestamp = m.Timestamp + h.firstInARawSeqIndex = m.Index + h.countsInARow = 1 + } + case *IOSSessionEnd: + h.build() + } +} \ No newline at end of file diff --git a/backend/services/db/heuristics/heuristics.go b/backend/services/db/heuristics/heuristics.go new file mode 100644 index 000000000..7832e0a82 --- /dev/null +++ b/backend/services/db/heuristics/heuristics.go @@ -0,0 +1,65 @@ +package heuristics + +import ( + . "openreplay/backend/pkg/messages" + . "openreplay/backend/pkg/db/types" +) + +type MessageHandler interface { + HandleMessage(Message) +} +type ReadyMessagesIterator interface { + IterateReadyMessages(func(Message)) +} + +type Handler interface { + MessageHandler + ReadyMessagesIterator +} + +type mainHandler map[uint64]*sessHandler + + +func NewHandler() mainHandler { + return make(mainHandler) +} + +func (m mainHandler) getSessHandler(session *Session) *sessHandler { + if session == nil { + //AAAA + return nil + } + s := m[session.SessionID] + if s == nil { + s = newSessHandler(session) + m[session.SessionID] = s + } + return s +} + +func (m mainHandler) HandleMessage(session *Session, msg Message) { + s := m.getSessHandler(session) + s.HandleMessage(msg) +} + +func (m mainHandler) IterateSessionReadyMessages(sessionID uint64, iter func(msg Message)) { + s, ok := m[ sessionID ] + if !ok { return } + s.IterateReadyMessages(iter) + if s.IsEnded() { + delete(m, sessionID) + } +} + +func (m mainHandler) IterateReadyMessages(iter func(sessionID uint64, msg Message)) { + for sessionID, s := range m { + s.IterateReadyMessages(func(msg Message) { + iter(sessionID, msg) + }) + if s.IsEnded() { + delete(m, sessionID) + } + } +} + + diff --git a/backend/services/db/heuristics/performance.go b/backend/services/db/heuristics/performance.go new file mode 100644 index 000000000..931d831e6 --- /dev/null +++ b/backend/services/db/heuristics/performance.go @@ -0,0 +1,103 @@ +package heuristics + +import ( + . "openreplay/backend/pkg/messages" +) + + +const AGGR_TIME = 15 * 60 * 1000 + + +type valueAggregator struct { + sum float64 + count float64 +} +func (va *valueAggregator) aggregate() uint64 { + if va.count == 0 { + return 0 + } + return uint64(va.sum/va.count) +} + +type performanceAggregator struct { + readyMessageStore + pa *IOSPerformanceAggregated + fps valueAggregator + cpu valueAggregator + memory valueAggregator + battery valueAggregator +} + +func (h *performanceAggregator) build(timestamp uint64) { + if h.pa == nil { + return + } + h.pa.TimestampEnd = timestamp + h.pa.AvgFPS = h.fps.aggregate() + h.pa.AvgCPU = h.cpu.aggregate() + h.pa.AvgMemory = h.memory.aggregate() + h.pa.AvgBattery = h.battery.aggregate() + + h.append(h.pa) + + h.pa = &IOSPerformanceAggregated{} + for _, agg := range []valueAggregator{h.fps, h.cpu, h.memory, h.battery} { + agg.sum = 0 + agg.count = 0 + } +} + +func (h *performanceAggregator) HandleMessage(msg Message) { + if h.pa == nil { + h.pa = &IOSPerformanceAggregated{} // TODO: struct type in messages + } + switch m := msg.(type) { // TODO: All Timestampe messages + case *IOSPerformanceEvent: + if h.pa.TimestampStart == 0 { + h.pa.TimestampStart = m.Timestamp + } + if h.pa.TimestampStart + AGGR_TIME <= m.Timestamp { + h.build(m.Timestamp) + } + switch m.Name { + case "fps": + h.fps.count += 1 + h.fps.sum += float64(m.Value) + if m.Value < h.pa.MinFPS || h.pa.MinFPS == 0 { + h.pa.MinFPS = m.Value + } + if m.Value > h.pa.MaxFPS { + h.pa.MaxFPS = m.Value + } + case "mainThreadCPU": + h.cpu.count += 1 + h.cpu.sum += float64(m.Value) + if m.Value < h.pa.MinCPU || h.pa.MinCPU == 0 { + h.pa.MinCPU = m.Value + } + if m.Value > h.pa.MaxCPU { + h.pa.MaxCPU = m.Value + } + case "memoryUsage": + h.memory.count += 1 + h.memory.sum += float64(m.Value) + if m.Value < h.pa.MinMemory || h.pa.MinMemory == 0 { + h.pa.MinMemory = m.Value + } + if m.Value > h.pa.MaxMemory { + h.pa.MaxMemory = m.Value + } + case "batteryLevel": + h.battery.count += 1 + h.battery.sum += float64(m.Value) + if m.Value < h.pa.MinBattery || h.pa.MinBattery == 0 { + h.pa.MinBattery = m.Value + } + if m.Value > h.pa.MaxBattery { + h.pa.MaxBattery = m.Value + } + } + case *IOSSessionEnd: + h.build(m.Timestamp) + } +} \ No newline at end of file diff --git a/backend/services/db/heuristics/readyMessageStore.go b/backend/services/db/heuristics/readyMessageStore.go new file mode 100644 index 000000000..9c619e20b --- /dev/null +++ b/backend/services/db/heuristics/readyMessageStore.go @@ -0,0 +1,21 @@ +package heuristics + +import ( + . "openreplay/backend/pkg/messages" +) + + +type readyMessageStore struct { + store []Message +} + +func (s *readyMessageStore) append(msg Message) { + s.store = append(s.store, msg) +} + +func (s *readyMessageStore) IterateReadyMessages(cb func(msg Message)) { + for _, msg := range s.store { + cb(msg) + } + s.store = nil +} \ No newline at end of file diff --git a/backend/services/db/heuristics/session.go b/backend/services/db/heuristics/session.go new file mode 100644 index 000000000..d828ca478 --- /dev/null +++ b/backend/services/db/heuristics/session.go @@ -0,0 +1,47 @@ +package heuristics + +import ( + . "openreplay/backend/pkg/messages" + . "openreplay/backend/pkg/db/types" +) + + +type sessHandler struct { + session *Session + handlers []Handler + ended bool +} + + +func newSessHandler(session *Session) *sessHandler { + return &sessHandler{ + session: session, + handlers: []Handler{ + new(clickrage), + new(performanceAggregator), + new(anr), + }, + } +} + +func (s *sessHandler) HandleMessage(msg Message) { + for _, h := range s.handlers { + h.HandleMessage(msg) + } + if _, isEnd := msg.(*IOSSessionEnd); isEnd { + s.ended = true + } + if _, isEnd := msg.(*SessionEnd); isEnd { + s.ended = true + } +} + +func (s *sessHandler) IterateReadyMessages(cb func(msg Message)) { + for _, h := range s.handlers { + h.IterateReadyMessages(cb) + } +} + +func (s *sessHandler) IsEnded() bool { + return s.ended +} \ No newline at end of file diff --git a/backend/services/db/main.go b/backend/services/db/main.go new file mode 100644 index 000000000..bd5c254e2 --- /dev/null +++ b/backend/services/db/main.go @@ -0,0 +1,97 @@ +package main + +import ( + "log" + "time" + + "os" + "os/signal" + "syscall" + + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/queue" + "openreplay/backend/pkg/queue/types" + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/db/postgres" + "openreplay/backend/pkg/db/cache" + "openreplay/backend/services/db/heuristics" +) + + +var pg *cache.PGCache + +func main() { + log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) + + initStats() + pg = cache.NewPGCache(postgres.NewConn(env.String("POSTGRES_STRING")), 1000 * 60 * 20) + defer pg.Close() + + heurFinder := heuristics.NewHandler() + + consumer := queue.NewMessageConsumer( + env.String("GROUP_DB"), + []string{ + //env.String("TOPIC_RAW"), + env.String("TOPIC_TRIGGER"), + }, + func(sessionID uint64, msg messages.Message, _ *types.Meta) { + if err := insertMessage(sessionID, msg); err != nil { + if !postgres.IsPkeyViolation(err) { + log.Printf("Message Insertion Error %v, Message %v", err, msg) + } + return + } + + session, err := pg.GetSession(sessionID) + if err != nil { + // Might happen due to the assets-related message TODO: log only if session is necessary for this kind of message + log.Printf("Error on session retrieving from cache: %v, Message %v, sessionID %v", err, msg, sessionID) + return; + } + + err = insertStats(session, msg) + if err != nil { + log.Printf("Stats Insertion Error %v; Session:%v, Message: %v", err, session, msg) + } + + heurFinder.HandleMessage(session, msg) + heurFinder.IterateSessionReadyMessages(sessionID, func(msg messages.Message) { + // TODO: DRY code (carefully with the return statement logic) + if err := insertMessage(sessionID, msg); err != nil { + if !postgres.IsPkeyViolation(err) { + log.Printf("Message Insertion Error %v, Message %v", err, msg) + } + return + } + + err = insertStats(session, msg) + if err != nil { + log.Printf("Stats Insertion Error %v", err) + } + }) + }, + ) + + sigchan := make(chan os.Signal, 1) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + + tick := time.Tick(15 * time.Second) + + for { + select { + case sig := <-sigchan: + log.Printf("Caught signal %v: terminating\n", sig) + consumer.Close() + os.Exit(0) + case <-tick: + commitStats() // TODO: sync with wueue commit + default: + err := consumer.ConsumeNext() + if err != nil { + log.Fatalf("Error on consumption: %v", err) // TODO: is always fatal? + } + } + } + +} \ No newline at end of file diff --git a/backend/services/db/messages.go b/backend/services/db/messages.go new file mode 100644 index 000000000..6aa4ac076 --- /dev/null +++ b/backend/services/db/messages.go @@ -0,0 +1,64 @@ +package main + +import ( + . "openreplay/backend/pkg/messages" +) + +func insertMessage(sessionID uint64, msg Message) error { + switch m := msg.(type) { + // Common + case *Metadata: + return pg.InsertMetadata(sessionID, m) + case *IssueEvent: + return pg.InsertIssueEvent(sessionID, m) + //TODO: message adapter (transformer) (at the level of pkg/message) for types: + // case *IOSMetadata, *IOSIssueEvent and others + + // Web + case *SessionStart: + return pg.InsertWebSessionStart(sessionID, m) + case *SessionEnd: + return pg.InsertWebSessionEnd(sessionID, m) + case *UserID: + return pg.InsertWebUserID(sessionID, m) + case *UserAnonymousID: + return pg.InsertWebUserAnonymousID(sessionID, m) + case *CustomEvent: + return pg.InsertWebCustomEvent(sessionID, m) + case *ClickEvent: + return pg.InsertWebClickEvent(sessionID, m) + case *InputEvent: + return pg.InsertWebInputEvent(sessionID, m) + // Unique Web messages + case *ResourceEvent: + return pg.InsertWebResourceEvent(sessionID, m) + case *PageEvent: + return pg.InsertWebPageEvent(sessionID, m) + case *ErrorEvent: + return pg.InsertWebErrorEvent(sessionID, m) + + // IOS + case *IOSSessionStart: + return pg.InsertIOSSessionStart(sessionID, m) + case *IOSSessionEnd: + return pg.InsertIOSSessionEnd(sessionID, m) + case *IOSUserID: + return pg.InsertIOSUserID(sessionID, m) + case *IOSUserAnonymousID: + return pg.InsertIOSUserAnonymousID(sessionID, m) + case *IOSCustomEvent: + return pg.InsertIOSCustomEvent(sessionID, m) + case *IOSClickEvent: + return pg.InsertIOSClickEvent(sessionID, m) + case *IOSInputEvent: + return pg.InsertIOSInputEvent(sessionID, m) + // Unique IOS messages + case *IOSNetworkCall: + return pg.InsertIOSNetworkCall(sessionID, m) + case *IOSScreenEnter: + return pg.InsertIOSScreenEnter(sessionID, m) + case *IOSCrash: + return pg.InsertIOSCrash(sessionID, m) + } + return nil // "Not implemented" +} \ No newline at end of file diff --git a/backend/services/db/stats.go b/backend/services/db/stats.go new file mode 100644 index 000000000..81abf1b91 --- /dev/null +++ b/backend/services/db/stats.go @@ -0,0 +1,35 @@ +package main + +import ( + + . "openreplay/backend/pkg/messages" + . "openreplay/backend/pkg/db/types" +) + +func initStats() { + // noop +} + + +func insertStats(session *Session, msg Message) error { + switch m := msg.(type) { + // Web + case *PerformanceTrackAggr: + return pg.InsertWebStatsPerformance(session.SessionID, m) + case *ResourceEvent: + return pg.InsertWebStatsResourceEvent(session.SessionID, m) + case *LongTask: + return pg.InsertWebStatsLongtask(session.SessionID, m) + + // IOS + // case *IOSPerformanceAggregated: + // return pg.InsertIOSPerformanceAggregated(session, m) + // case *IOSNetworkCall: + // return pg.InsertIOSNetworkCall(session, m) + } + return nil +} + +func commitStats() error { + return nil +} diff --git a/backend/services/ender/builder/builder.go b/backend/services/ender/builder/builder.go new file mode 100644 index 000000000..49fbd9443 --- /dev/null +++ b/backend/services/ender/builder/builder.go @@ -0,0 +1,316 @@ +package builder + +import ( + "net/url" + "strings" + + "log" + + "openreplay/backend/pkg/intervals" + . "openreplay/backend/pkg/messages" +) + +func getURLExtention(URL string) string { + u, err := url.Parse(URL) + if err != nil { + return "" + } + i := strings.LastIndex(u.Path, ".") + return u.Path[i+1:] +} + +func getResourceType(initiator string, URL string) string { + switch initiator { + case "xmlhttprequest", "fetch": + return "fetch" + case "img": + return "img" + default: + switch getURLExtention(URL) { + case "css": + return "stylesheet" + case "js": + return "script" + case "png", "gif", "jpg", "jpeg", "svg": + return "img" + case "mp4", "mkv", "ogg", "webm", "avi", "mp3": + return "media" + default: + return "other" + } + } +} + +type builder struct { + readyMsgs []Message + timestamp uint64 + peBuilder *pageEventBuilder + ptaBuilder *performanceTrackAggrBuilder + ieBuilder *inputEventBuilder + ciFinder *cpuIssueFinder + miFinder *memoryIssueFinder + ddDetector *domDropDetector + crDetector *clickRageDetector + dcDetector *deadClickDetector + integrationsWaiting bool + + + sid uint64 +} + +func NewBuilder() *builder { + return &builder{ + peBuilder: &pageEventBuilder{}, + ptaBuilder: &performanceTrackAggrBuilder{}, + ieBuilder: NewInputEventBuilder(), + ciFinder: &cpuIssueFinder{}, + miFinder: &memoryIssueFinder{}, + ddDetector: &domDropDetector{}, + crDetector: &clickRageDetector{}, + dcDetector: &deadClickDetector{}, + integrationsWaiting: true, + } +} + +func (b *builder) appendReadyMessage(msg Message) { // interface is never nil even if it holds nil value + b.readyMsgs = append(b.readyMsgs, msg) +} + +func (b *builder) iterateReadyMessage(iter func(msg Message)) { + for _, readyMsg := range b.readyMsgs { + iter(readyMsg) + } + b.readyMsgs = nil +} + +func (b *builder) buildSessionEnd() { + sessionEnd := &SessionEnd{ + Timestamp: b.timestamp, // + delay? + } + b.appendReadyMessage(sessionEnd) +} + +func (b *builder) buildPageEvent() { + if msg := b.peBuilder.Build(); msg != nil { + b.appendReadyMessage(msg) + } +} +func (b *builder) buildPerformanceTrackAggr() { + if msg := b.ptaBuilder.Build(); msg != nil { + b.appendReadyMessage(msg) + } +} +func (b *builder) buildInputEvent() { + if msg := b.ieBuilder.Build(); msg != nil { + b.appendReadyMessage(msg) + } +} + +func (b *builder) handleMessage(message Message, messageID uint64) { + timestamp := uint64(message.Meta().Timestamp) + if b.timestamp <= timestamp { + b.timestamp = timestamp + } + // Start from the first timestamp. + switch msg := message.(type) { + case *SessionStart, + *Metadata, + *UserID, + *UserAnonymousID: + b.appendReadyMessage(msg) + } + if b.timestamp == 0 { + return + } + switch msg := message.(type) { + case *SetPageLocation: + if msg.NavigationStart == 0 { + b.appendReadyMessage(&PageEvent{ + URL: msg.URL, + Referrer: msg.Referrer, + Loaded: false, + MessageID: messageID, + Timestamp: b.timestamp, + }) + } else { + b.buildPageEvent() + b.buildInputEvent() + b.ieBuilder.ClearLabels() + b.peBuilder.HandleSetPageLocation(msg, messageID, b.timestamp) + b.miFinder.HandleSetPageLocation(msg) + b.ciFinder.HandleSetPageLocation(msg) + } + case *PageLoadTiming: + if rm := b.peBuilder.HandlePageLoadTiming(msg); rm != nil { + b.appendReadyMessage(rm) + } + case *PageRenderTiming: + if rm := b.peBuilder.HandlePageRenderTiming(msg); rm != nil { + b.appendReadyMessage(rm) + } + case *PerformanceTrack: + if rm := b.ptaBuilder.HandlePerformanceTrack(msg, b.timestamp); rm != nil { + b.appendReadyMessage(rm) + } + if rm := b.ciFinder.HandlePerformanceTrack(msg, messageID, b.timestamp); rm != nil { + b.appendReadyMessage(rm) + } + if rm := b.miFinder.HandlePerformanceTrack(msg, messageID, b.timestamp); rm != nil { + b.appendReadyMessage(rm) + } + case *SetInputTarget: + if rm := b.ieBuilder.HandleSetInputTarget(msg); rm != nil { + b.appendReadyMessage(rm) + } + case *SetInputValue: + if rm := b.ieBuilder.HandleSetInputValue(msg, messageID, b.timestamp); rm != nil { + b.appendReadyMessage(rm) + } + case *MouseClick: + b.buildInputEvent() + if rm := b.crDetector.HandleMouseClick(msg, messageID, b.timestamp); rm != nil { + b.appendReadyMessage(rm) + } + if msg.Label != "" { + b.appendReadyMessage(&ClickEvent{ + MessageID: messageID, + Label: msg.Label, + HesitationTime: msg.HesitationTime, + Timestamp: b.timestamp, + }) + } + case *RawErrorEvent: + b.appendReadyMessage(&ErrorEvent{ + MessageID: messageID, + Timestamp: msg.Timestamp, + Source: msg.Source, + Name: msg.Name, + Message: msg.Message, + Payload: msg.Payload, + }) + case *JSException: + b.appendReadyMessage(&ErrorEvent{ + MessageID: messageID, + Timestamp: b.timestamp, + Source: "js_exception", + Name: msg.Name, + Message: msg.Message, + Payload: msg.Payload, + }) + case *ResourceTiming: + tp := getResourceType(msg.Initiator, msg.URL) + success := msg.Duration != 0 + b.appendReadyMessage(&ResourceEvent{ + MessageID: messageID, + Timestamp: msg.Timestamp, + Duration: msg.Duration, + TTFB: msg.TTFB, + HeaderSize: msg.HeaderSize, + EncodedBodySize: msg.EncodedBodySize, + DecodedBodySize: msg.DecodedBodySize, + URL: msg.URL, + Type: tp, + Success: success, + }) + if !success && tp == "fetch" { + b.appendReadyMessage(&IssueEvent{ + Type: "bad_request", + MessageID: messageID, + Timestamp: msg.Timestamp, + ContextString: msg.URL, + Context: "", + Payload: "", + }) + } + case *RawCustomEvent: + b.appendReadyMessage(&CustomEvent{ + MessageID: messageID, + Timestamp: b.timestamp, + Name: msg.Name, + Payload: msg.Payload, + }) + case *CustomIssue: + b.appendReadyMessage(&IssueEvent{ + Type: "custom", + Timestamp: b.timestamp, + MessageID: messageID, + ContextString: msg.Name, + Payload: msg.Payload, + }) + case *Fetch: + b.appendReadyMessage(&ResourceEvent{ + MessageID: messageID, + Timestamp: msg.Timestamp, + Duration: msg.Duration, + URL: msg.URL, + Type: "fetch", + Success: msg.Status < 300, + Method: msg.Method, + Status: msg.Status, + }) + case *StateAction: + b.appendReadyMessage(&StateActionEvent{ + MessageID: messageID, + Timestamp: b.timestamp, + Type: msg.Type, + }) + case *GraphQL: + b.appendReadyMessage(&GraphQLEvent{ + MessageID: messageID, + Timestamp: b.timestamp, + Name: msg.OperationName, + }) + case *CreateElementNode, + *CreateTextNode: + b.ddDetector.HandleNodeCreation() + case *RemoveNode: + b.ddDetector.HandleNodeRemoval(b.timestamp) + case *CreateDocument: + if rm := b.ddDetector.Build(); rm != nil { + b.appendReadyMessage(rm) + } + } + if rm := b.dcDetector.HandleMessage(message, messageID, b.timestamp); rm != nil { + b.appendReadyMessage(rm) + } +} + + +func (b *builder) checkTimeouts(ts int64) bool { + if b.timestamp == 0 { + return false // There was no timestamp events yet + } + + if b.peBuilder.HasInstance() && int64(b.peBuilder.GetTimestamp())+intervals.EVENTS_PAGE_EVENT_TIMEOUT < ts { + b.buildPageEvent() + } + if b.ieBuilder.HasInstance() && int64(b.ieBuilder.GetTimestamp())+intervals.EVENTS_INPUT_EVENT_TIMEOUT < ts { + b.buildInputEvent() + } + if b.ptaBuilder.HasInstance() && int64(b.ptaBuilder.GetStartTimestamp())+intervals.EVENTS_PERFORMANCE_AGGREGATION_TIMEOUT < ts { + b.buildPerformanceTrackAggr() + } + + lastTsGap := ts - int64(b.timestamp) + //log.Printf("checking timeouts for sess %v: %v now, %v sesstime; gap %v",b.sid, ts, b.timestamp, lastTsGap) + if lastTsGap > intervals.EVENTS_SESSION_END_TIMEOUT { + if rm := b.ddDetector.Build(); rm != nil { + b.appendReadyMessage(rm) + } + if rm := b.ciFinder.Build(); rm != nil { + b.appendReadyMessage(rm) + } + if rm := b.miFinder.Build(); rm != nil { + b.appendReadyMessage(rm) + } + if rm := b.crDetector.Build(); rm != nil { + b.appendReadyMessage(rm) + } + if rm := b.dcDetector.HandleReaction(b.timestamp); rm != nil { + b.appendReadyMessage(rm) + } + b.buildSessionEnd() + return true + } + return false +} diff --git a/backend/services/ender/builder/builderMap.go b/backend/services/ender/builder/builderMap.go new file mode 100644 index 000000000..6ab3c3ac7 --- /dev/null +++ b/backend/services/ender/builder/builderMap.go @@ -0,0 +1,52 @@ +package builder + +import ( + . "openreplay/backend/pkg/messages" +) + +type builderMap map[uint64]*builder + + +func NewBuilderMap() builderMap { + return make(builderMap) +} + +func (m builderMap) GetBuilder(sessionID uint64) *builder { + b := m[sessionID] + if b == nil { + b = NewBuilder() + m[sessionID] = b + b.sid = sessionID + + } + return b +} + +func (m builderMap) HandleMessage(sessionID uint64, msg Message, messageID uint64) { + b := m.GetBuilder(sessionID) + b.handleMessage(msg, messageID) +} + +func (m builderMap) IterateSessionReadyMessages(sessionID uint64, operatingTs int64, iter func(msg Message)) { + b, ok := m[ sessionID ] + if !ok { return } + sessionEnded := b.checkTimeouts(operatingTs) + b.iterateReadyMessage(iter) + if sessionEnded { + delete(m, sessionID) + } +} + +func (m builderMap) IterateReadyMessages(operatingTs int64, iter func(sessionID uint64, msg Message)) { + for sessionID, b := range m { + sessionEnded := b.checkTimeouts(operatingTs) + b.iterateReadyMessage(func(msg Message) { + iter(sessionID, msg) + }) + if sessionEnded { + delete(m, sessionID) + } + } +} + + diff --git a/backend/services/ender/builder/clikRageDetector.go b/backend/services/ender/builder/clikRageDetector.go new file mode 100644 index 000000000..318f9f26f --- /dev/null +++ b/backend/services/ender/builder/clikRageDetector.go @@ -0,0 +1,57 @@ +package builder + +import ( + "encoding/json" + + . "openreplay/backend/pkg/messages" +) + + +const CLICK_TIME_DIFF = 200 +const MIN_CLICKS_IN_A_ROW = 3 + +type clickRageDetector struct { + lastTimestamp uint64 + lastLabel string + firstInARawTimestamp uint64 + firstInARawMessageId uint64 + countsInARow int +} + + +func (crd *clickRageDetector) Build() *IssueEvent { + var i *IssueEvent + if crd.countsInARow >= MIN_CLICKS_IN_A_ROW { + payload, _ := json.Marshal(struct{Count int }{crd.countsInARow,}) + i = &IssueEvent{ + Type: "click_rage", + ContextString: crd.lastLabel, + Payload: string(payload), // TODO: json encoder + Timestamp: crd.firstInARawTimestamp, + MessageID: crd.firstInARawMessageId, + } + } + crd.lastTimestamp = 0 + crd.lastLabel = "" + crd.firstInARawTimestamp = 0 + crd.firstInARawMessageId = 0 + crd.countsInARow = 0 + return i +} + +func (crd *clickRageDetector) HandleMouseClick(msg *MouseClick, messageID uint64, timestamp uint64) *IssueEvent { + if crd.lastTimestamp + CLICK_TIME_DIFF < timestamp && crd.lastLabel == msg.Label { + crd.lastTimestamp = timestamp + crd.countsInARow += 1 + return nil + } + i := crd.Build() + if msg.Label != "" { + crd.lastTimestamp = timestamp + crd.lastLabel = msg.Label + crd.firstInARawTimestamp = timestamp + crd.firstInARawMessageId = messageID + crd.countsInARow = 1 + } + return i +} \ No newline at end of file diff --git a/backend/services/ender/builder/cpuIssueFinder.go b/backend/services/ender/builder/cpuIssueFinder.go new file mode 100644 index 000000000..be02c280f --- /dev/null +++ b/backend/services/ender/builder/cpuIssueFinder.go @@ -0,0 +1,86 @@ +package builder + +import ( + "encoding/json" + + "openreplay/backend/pkg/messages/performance" + . "openreplay/backend/pkg/messages" +) + +const CPU_THRESHOLD = 70 // % out of 100 +const CPU_MIN_DURATION_TRIGGER = 6 * 1000 + + +type cpuIssueFinder struct { + startTimestamp uint64 + startMessageID uint64 + lastTimestamp uint64 + maxRate uint64 + contextString string +} + +func (f *cpuIssueFinder) Build() *IssueEvent { + if f.startTimestamp == 0 { + return nil + } + duration := f.lastTimestamp - f.startTimestamp + timestamp := f.startTimestamp + messageID := f.startMessageID + maxRate := f.maxRate + + f.startTimestamp = 0 + f.startMessageID = 0 + f.maxRate = 0 + if duration < CPU_MIN_DURATION_TRIGGER { + return nil + } + + payload, _ := json.Marshal(struct{ + Duration uint64 + Rate uint64 + }{duration,maxRate}) + return &IssueEvent{ + Type: "cpu", + Timestamp: timestamp, + MessageID: messageID, + ContextString: f.contextString, + Payload: string(payload), + } +} + +func (f *cpuIssueFinder) HandleSetPageLocation(msg *SetPageLocation) { + f.contextString = msg.URL +} + + + +func (f *cpuIssueFinder) HandlePerformanceTrack(msg *PerformanceTrack, messageID uint64, timestamp uint64) *IssueEvent { + dt := performance.TimeDiff(timestamp, f.lastTimestamp) + if dt == 0 { + return nil // TODO: handle error + } + + f.lastTimestamp = timestamp + + if msg.Frames == -1 || msg.Ticks == -1 { + return f.Build() + } + + cpuRate := performance.CPURate(msg.Ticks, dt) + + if cpuRate >= CPU_THRESHOLD { + if f.startTimestamp == 0 { + f.startTimestamp = timestamp + f.startMessageID = messageID + } + if f.maxRate < cpuRate { + f.maxRate = cpuRate + } + } else { + return f.Build() + } + + return nil +} + + diff --git a/backend/services/ender/builder/deadClickDetector.go b/backend/services/ender/builder/deadClickDetector.go new file mode 100644 index 000000000..a34a9b08b --- /dev/null +++ b/backend/services/ender/builder/deadClickDetector.go @@ -0,0 +1,55 @@ +package builder + +import ( + . "openreplay/backend/pkg/messages" +) + + +const CLICK_RELATION_TIME = 1400 + +type deadClickDetector struct { + lastMouseClick *MouseClick + lastTimestamp uint64 + lastMessageID uint64 +} + + +func (d *deadClickDetector) HandleReaction(timestamp uint64) *IssueEvent { + var i *IssueEvent + if d.lastMouseClick != nil && d.lastTimestamp + CLICK_RELATION_TIME < timestamp { + i = &IssueEvent{ + Type: "dead_click", + ContextString: d.lastMouseClick.Label, + Timestamp: d.lastTimestamp, + MessageID: d.lastMessageID, + } + } + d.lastMouseClick = nil + d.lastTimestamp = 0 + d.lastMessageID = 0 + return i +} + +func (d *deadClickDetector) HandleMessage(msg Message, messageID uint64, timestamp uint64) *IssueEvent { + var i *IssueEvent + switch m := msg.(type) { + case *MouseClick: + i = d.HandleReaction(timestamp) + d.lastMouseClick = m + d.lastTimestamp = timestamp + d.lastMessageID = messageID + case *SetNodeAttribute, + *RemoveNodeAttribute, + *CreateElementNode, + *CreateTextNode, + *MoveNode, + *RemoveNode, + *SetCSSData, + *CSSInsertRule, + *CSSDeleteRule: + i = d.HandleReaction(timestamp) + } + return i +} + + diff --git a/backend/services/ender/builder/domDropDetector.go b/backend/services/ender/builder/domDropDetector.go new file mode 100644 index 000000000..3366a0163 --- /dev/null +++ b/backend/services/ender/builder/domDropDetector.go @@ -0,0 +1,42 @@ +package builder + +import ( + . "openreplay/backend/pkg/messages" +) + + +type domDropDetector struct { + removedCount int + lastDropTimestamp uint64 +} + +const DROP_WINDOW = 200 //ms +const CRITICAL_COUNT = 1 // Our login page contains 20. But on crush it removes only roots (1-3 nodes). + +func (dd *domDropDetector) HandleNodeCreation() { + dd.removedCount = 0 + dd.lastDropTimestamp = 0 +} + +func (dd *domDropDetector) HandleNodeRemoval(ts uint64) { + if dd.lastDropTimestamp + DROP_WINDOW > ts { + dd.removedCount += 1 + } else { + dd.removedCount = 1 + } + dd.lastDropTimestamp = ts +} + + +func (dd *domDropDetector) Build() *DOMDrop { + var domDrop *DOMDrop + if dd.removedCount >= CRITICAL_COUNT { + domDrop = &DOMDrop{ + Timestamp: dd.lastDropTimestamp, + } + } + dd.removedCount = 0 + dd.lastDropTimestamp = 0 + return domDrop +} + diff --git a/backend/services/ender/builder/inputEventBuilder.go b/backend/services/ender/builder/inputEventBuilder.go new file mode 100644 index 000000000..4938e47a9 --- /dev/null +++ b/backend/services/ender/builder/inputEventBuilder.go @@ -0,0 +1,80 @@ +package builder + +import ( + . "openreplay/backend/pkg/messages" +) + +type inputLabels map[uint64]string + +type inputEventBuilder struct { + inputEvent *InputEvent + inputLabels inputLabels + inputID uint64 +} + +func NewInputEventBuilder() *inputEventBuilder { + ieBuilder := &inputEventBuilder{} + ieBuilder.ClearLabels() + return ieBuilder +} + + +func (b *inputEventBuilder) ClearLabels() { + b.inputLabels = make(inputLabels) +} + +func (b *inputEventBuilder) HandleSetInputTarget(msg *SetInputTarget) *InputEvent { + var inputEvent *InputEvent + if b.inputID != msg.ID { + inputEvent = b.Build() + b.inputID = msg.ID + } + b.inputLabels[msg.ID] = msg.Label + return inputEvent +} + +func (b *inputEventBuilder) HandleSetInputValue(msg *SetInputValue, messageID uint64, timestamp uint64) *InputEvent { + var inputEvent *InputEvent + if b.inputID != msg.ID { + inputEvent = b.Build() + b.inputID = msg.ID + } + if b.inputEvent == nil { + b.inputEvent = &InputEvent{ + MessageID: messageID, + Timestamp: timestamp, + Value: msg.Value, + ValueMasked: msg.Mask > 0, + } + } else { + b.inputEvent.Value = msg.Value + b.inputEvent.ValueMasked = msg.Mask > 0 + } + return inputEvent +} + +func (b *inputEventBuilder) HasInstance() bool { + return b.inputEvent != nil +} + +func (b * inputEventBuilder) GetTimestamp() uint64 { + if b.inputEvent == nil { + return 0 + } + return b.inputEvent.Timestamp; +} + +func (b *inputEventBuilder) Build() *InputEvent { + if b.inputEvent == nil { + return nil + } + inputEvent := b.inputEvent + label := b.inputLabels[b.inputID] + // if !ok { + // return nil + // } + inputEvent.Label = label + + b.inputEvent = nil + return inputEvent +} diff --git a/backend/services/ender/builder/memoryIssueFinder.go b/backend/services/ender/builder/memoryIssueFinder.go new file mode 100644 index 000000000..a2702e505 --- /dev/null +++ b/backend/services/ender/builder/memoryIssueFinder.go @@ -0,0 +1,72 @@ +package builder + +import ( + "math" + "encoding/json" + + . "openreplay/backend/pkg/messages" +) + +const MIN_COUNT = 3 +const MEM_RATE_THRESHOLD = 300 // % to average + +type memoryIssueFinder struct { + startMessageID uint64 + startTimestamp uint64 + rate int + count float64 + sum float64 + contextString string +} + +func (f *memoryIssueFinder) Build() *IssueEvent { + if f.startTimestamp == 0 { + return nil + } + payload, _ := json.Marshal(struct{Rate int }{f.rate - 100,}) + i := &IssueEvent{ + Type: "memory", + Timestamp: f.startTimestamp, + MessageID: f.startMessageID, + ContextString: f.contextString, + Payload: string(payload), + } + f.startTimestamp = 0 + f.startMessageID = 0 + f.rate = 0 + return i +} + +func (f *memoryIssueFinder) HandleSetPageLocation(msg *SetPageLocation) { + f.contextString = msg.URL +} + +func (f *memoryIssueFinder) HandlePerformanceTrack(msg *PerformanceTrack, messageID uint64, timestamp uint64) *IssueEvent { + if f.count < MIN_COUNT { + f.sum += float64(msg.UsedJSHeapSize) + f.count++ + return nil + } + + average := f.sum/f.count + rate := int(math.Round(float64(msg.UsedJSHeapSize)/average * 100)) + + f.sum += float64(msg.UsedJSHeapSize) + f.count++ + + if rate >= MEM_RATE_THRESHOLD { + if f.startTimestamp == 0 { + f.startTimestamp = timestamp + f.startMessageID = messageID + } + if f.rate < rate { + f.rate = rate + } + } else { + return f.Build() + } + + return nil +} + + diff --git a/backend/services/ender/builder/pageEventBuilder.go b/backend/services/ender/builder/pageEventBuilder.go new file mode 100644 index 000000000..db602a996 --- /dev/null +++ b/backend/services/ender/builder/pageEventBuilder.go @@ -0,0 +1,91 @@ +package builder + +import ( + . "openreplay/backend/pkg/messages" +) + +type pageEventBuilder struct { + pageEvent *PageEvent + firstTimingHandled bool +} + +func (b *pageEventBuilder) buildIfTimingsComplete() *PageEvent { + if b.firstTimingHandled { + return b.Build() + } + b.firstTimingHandled = true + return nil +} + +// Only for Loaded: true +func (b *pageEventBuilder) HandleSetPageLocation(msg *SetPageLocation, messageID uint64, timestamp uint64) { + b.pageEvent = &PageEvent{ + URL: msg.URL, + Referrer: msg.Referrer, + Loaded: true, + MessageID: messageID, + Timestamp: timestamp, + } +} + +func (b * pageEventBuilder) HandlePageLoadTiming(msg *PageLoadTiming) *PageEvent { + if !b.HasInstance() { + return nil + } + if msg.RequestStart <= 30000 { + b.pageEvent.RequestStart = msg.RequestStart + } + if msg.ResponseStart <= 30000 { + b.pageEvent.ResponseStart = msg.ResponseStart + } + if msg.ResponseEnd <= 30000 { + b.pageEvent.ResponseEnd = msg.ResponseEnd + } + if msg.DomContentLoadedEventStart <= 30000 { + b.pageEvent.DomContentLoadedEventStart = msg.DomContentLoadedEventStart + } + if msg.DomContentLoadedEventEnd <= 30000 { + b.pageEvent.DomContentLoadedEventEnd = msg.DomContentLoadedEventEnd + } + if msg.LoadEventStart <= 30000 { + b.pageEvent.LoadEventStart = msg.LoadEventStart + } + if msg.LoadEventEnd <= 30000 { + b.pageEvent.LoadEventEnd = msg.LoadEventEnd + } + if msg.FirstPaint <= 30000 { + b.pageEvent.FirstPaint = msg.FirstPaint + } + if msg.FirstContentfulPaint <= 30000 { + b.pageEvent.FirstContentfulPaint = msg.FirstContentfulPaint + } + return b.buildIfTimingsComplete() +} + +func (b * pageEventBuilder) HandlePageRenderTiming(msg *PageRenderTiming) *PageEvent { + if !b.HasInstance() { + return nil + } + b.pageEvent.SpeedIndex = msg.SpeedIndex + b.pageEvent.VisuallyComplete = msg.VisuallyComplete + b.pageEvent.TimeToInteractive = msg.TimeToInteractive + return b.buildIfTimingsComplete() +} + +func (b *pageEventBuilder) HasInstance() bool { + return b.pageEvent != nil +} + +func (b * pageEventBuilder) GetTimestamp() uint64 { + if b.pageEvent == nil { + return 0 + } + return b.pageEvent.Timestamp; +} + +func (b * pageEventBuilder) Build() *PageEvent { + pageEvent := b.pageEvent + b.pageEvent = nil + b.firstTimingHandled = false + return pageEvent +} \ No newline at end of file diff --git a/backend/services/ender/builder/performanceTrackAggrBuilder.go b/backend/services/ender/builder/performanceTrackAggrBuilder.go new file mode 100644 index 000000000..b24090ff9 --- /dev/null +++ b/backend/services/ender/builder/performanceTrackAggrBuilder.go @@ -0,0 +1,109 @@ +package builder + +import ( + "math" + + "openreplay/backend/pkg/messages/performance" + . "openreplay/backend/pkg/messages" +) + + +type performanceTrackAggrBuilder struct { + performanceTrackAggr *PerformanceTrackAggr + lastTimestamp uint64 + count float64 + sumFrameRate float64 + sumTickRate float64 + sumTotalJSHeapSize float64 + sumUsedJSHeapSize float64 +} + + +func (b *performanceTrackAggrBuilder) start(timestamp uint64) { + b.performanceTrackAggr = &PerformanceTrackAggr{ + TimestampStart: timestamp, + } + b.lastTimestamp = timestamp +} + +func (b *performanceTrackAggrBuilder) HandlePerformanceTrack(msg *PerformanceTrack, timestamp uint64) *PerformanceTrackAggr { + if msg.Frames == -1 || msg.Ticks == -1 || !b.HasInstance() { + performanceTrackAggr := b.Build() + b.start(timestamp) + return performanceTrackAggr + } + + dt := performance.TimeDiff(timestamp, b.lastTimestamp) + if dt == 0 { + return nil // TODO: handle error + } + + frameRate := performance.FrameRate(msg.Frames, dt) + tickRate := performance.TickRate(msg.Ticks, dt) + + fps := uint64(math.Round(frameRate)) + cpu := performance.CPURateFromTickRate(tickRate) + if fps < b.performanceTrackAggr.MinFPS || b.performanceTrackAggr.MinFPS == 0 { + b.performanceTrackAggr.MinFPS = fps + } + if fps > b.performanceTrackAggr.MaxFPS { + b.performanceTrackAggr.MaxFPS = fps + } + if cpu < b.performanceTrackAggr.MinCPU || b.performanceTrackAggr.MinCPU == 0 { + b.performanceTrackAggr.MinCPU = cpu + } + if cpu > b.performanceTrackAggr.MaxCPU { + b.performanceTrackAggr.MaxCPU = cpu + } + if msg.TotalJSHeapSize < b.performanceTrackAggr.MinTotalJSHeapSize || b.performanceTrackAggr.MinTotalJSHeapSize == 0 { + b.performanceTrackAggr.MinTotalJSHeapSize = msg.TotalJSHeapSize + } + if msg.TotalJSHeapSize > b.performanceTrackAggr.MaxTotalJSHeapSize { + b.performanceTrackAggr.MaxTotalJSHeapSize = msg.TotalJSHeapSize + } + if msg.UsedJSHeapSize < b.performanceTrackAggr.MinUsedJSHeapSize || b.performanceTrackAggr.MinUsedJSHeapSize == 0 { + b.performanceTrackAggr.MinUsedJSHeapSize = msg.UsedJSHeapSize + } + if msg.UsedJSHeapSize > b.performanceTrackAggr.MaxUsedJSHeapSize { + b.performanceTrackAggr.MaxUsedJSHeapSize = msg.UsedJSHeapSize + } + b.sumFrameRate += frameRate + b.sumTickRate += tickRate + b.sumTotalJSHeapSize += float64(msg.TotalJSHeapSize) + b.sumUsedJSHeapSize += float64(msg.UsedJSHeapSize) + b.count += 1 + b.lastTimestamp = timestamp + return nil +} + +func (b *performanceTrackAggrBuilder) HasInstance() bool { + return b.performanceTrackAggr != nil +} + +func (b *performanceTrackAggrBuilder) GetStartTimestamp() uint64 { + if b.performanceTrackAggr == nil { + return 0 + } + return b.performanceTrackAggr.TimestampStart; +} + +func (b *performanceTrackAggrBuilder) Build() *PerformanceTrackAggr { + var performanceTrackAggr *PerformanceTrackAggr + if b.HasInstance() && b.GetStartTimestamp() != b.lastTimestamp && b.count != 0 { + performanceTrackAggr = b.performanceTrackAggr + performanceTrackAggr.TimestampEnd = b.lastTimestamp + performanceTrackAggr.AvgFPS = uint64(math.Round(b.sumFrameRate / b.count)) + performanceTrackAggr.AvgCPU = 100 - uint64(math.Round(b.sumTickRate*100/b.count)) + performanceTrackAggr.AvgTotalJSHeapSize = uint64(math.Round(b.sumTotalJSHeapSize / b.count)) + performanceTrackAggr.AvgUsedJSHeapSize = uint64(math.Round(b.sumUsedJSHeapSize / b.count)) + } + b.performanceTrackAggr = nil + b.count = 0 + b.sumFrameRate = 0 + b.sumTickRate = 0 + b.sumTotalJSHeapSize = 0 + b.sumUsedJSHeapSize = 0 + b.lastTimestamp = 0 + return performanceTrackAggr +} + diff --git a/backend/services/ender/main.go b/backend/services/ender/main.go new file mode 100644 index 000000000..d1e83e545 --- /dev/null +++ b/backend/services/ender/main.go @@ -0,0 +1,72 @@ +package main + +import ( + "log" + "time" + + "os" + "os/signal" + "syscall" + + "openreplay/backend/pkg/intervals" + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/queue" + "openreplay/backend/pkg/queue/types" + "openreplay/backend/services/ender/builder" +) + + +func main() { + log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) + + GROUP_EVENTS := env.String("GROUP_ENDER") + TOPIC_TRIGGER := env.String("TOPIC_TRIGGER") + + builderMap := builder.NewBuilderMap() + var lastTs int64 = 0 + + producer := queue.NewProducer() + consumer := queue.NewMessageConsumer( + GROUP_EVENTS, + []string{ + env.String("TOPIC_RAW"), + }, + func(sessionID uint64, msg messages.Message, meta *types.Meta) { + lastTs = meta.Timestamp + builderMap.HandleMessage(sessionID, msg, msg.Meta().Index) + // builderMap.IterateSessionReadyMessages(sessionID, lastTs, func(readyMsg messages.Message) { + // producer.Produce(TOPIC_TRIGGER, sessionID, messages.Encode(readyMsg)) + // }) + }, + ) + consumer.DisableAutoCommit() + + tick := time.Tick(intervals.EVENTS_COMMIT_INTERVAL * time.Millisecond) + + sigchan := make(chan os.Signal, 1) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + + for { + select { + case sig := <-sigchan: + log.Printf("Caught signal %v: terminating\n", sig) + producer.Close(2000) + consumer.CommitBack(intervals.EVENTS_BACK_COMMIT_GAP) + consumer.Close() + os.Exit(0) + case <- tick: + builderMap.IterateReadyMessages(time.Now().UnixNano()/1e6, func(sessionID uint64, readyMsg messages.Message) { + producer.Produce(TOPIC_TRIGGER, sessionID, messages.Encode(readyMsg)) + }) + // TODO: why exactly do we need Flush here and not in any other place? + producer.Flush(2000) + consumer.CommitBack(intervals.EVENTS_BACK_COMMIT_GAP) + default: + if err := consumer.ConsumeNext(); err != nil { + log.Fatalf("Error on consuming: %v", err) + } + } + } +} + diff --git a/backend/services/http/README.md b/backend/services/http/README.md new file mode 100644 index 000000000..f55051a82 --- /dev/null +++ b/backend/services/http/README.md @@ -0,0 +1,72 @@ +# HTTP Endpoints + +## Start Mobile Session +`POST` /v1/ios/start +### Request +`application/json` + +``` +* - required +{ + projectID* number // Encoded ProjectID + trackerVersion* string // Tracker version string + revID string // Set by user + userUUID string // User ID, should be derived from local storage connected to user + userOSVersion string + userDevice string + userDeviceType number // + performance // +} +``` + +### Responce + +``` +200 application/json +{ + imagesHashList // list of most friquently used image hash strings + token // Authorisation token to use in other requests (Bearer) + userUUID // Should be stored in local storage +} +``` + + +## Push message batch +`POST` /v1/ios/append +### Request +`application/octet-stream` +``` + +``` +### Responce +200 OK + +OR + +401 Unauthorised - token timed out. Start new session + + +## Push late message batch (after app reload - crashes etc.) +`POST` /v1/ios/late +### Request +`application/octet-stream` +``` + +``` +### Responce +200 OK + + + +## Push images +`POST` /v1/ios/images + +### Request +`multipart/form-data` values: +`projectID` [required] // Encoded ProjectID + +Binary files with the hash-filename in the `filename` header each. + + +### Responce +200 OK diff --git a/backend/services/http/assets.go b/backend/services/http/assets.go new file mode 100644 index 000000000..637aa5a5b --- /dev/null +++ b/backend/services/http/assets.go @@ -0,0 +1,20 @@ +package main + +import ( + "openreplay/backend/pkg/url/assets" + "openreplay/backend/pkg/messages" +) + +func sendAssetForCache(sessionID uint64, baseURL string, relativeURL string) { + if fullURL, cachable := assets.GetFullCachableURL(baseURL, relativeURL); cachable { + producer.Produce(topicTrigger, sessionID, messages.Encode(&messages.AssetCache{ + URL: fullURL, + })) + } +} + +func sendAssetsForCacheFromCSS(sessionID uint64, baseURL string, css string) { + for _, u := range assets.ExtractURLsFromCSS(css) { // TODO: in one shot with rewriting + sendAssetForCache(sessionID, baseURL, u) + } +} \ No newline at end of file diff --git a/backend/services/http/geoip/geoip.go b/backend/services/http/geoip/geoip.go new file mode 100644 index 000000000..131996d7c --- /dev/null +++ b/backend/services/http/geoip/geoip.go @@ -0,0 +1,41 @@ +package geoip + +import ( + "log" + "net" + + maxminddb "github.com/oschwald/maxminddb-golang" +) + +type geoIPRecord struct { + Country struct { + ISOCode string `maxminddb:"iso_code"` + } `maxminddb:"country"` +} + +type GeoIP struct { + r *maxminddb.Reader +} + +func NewGeoIP(file string) *GeoIP { + r, err := maxminddb.Open(file) + if err != nil { + log.Fatalln(err) + } + return &GeoIP{r} +} + +func (geoIP *GeoIP) ExtractISOCode(ip net.IP) string { + if ip == nil { + return "UN" + } + var code string + var record geoIPRecord + if geoIP.r.Lookup(ip, &record) == nil { + code = record.Country.ISOCode + } + if code == "" { + code = "UN" + } + return code +} diff --git a/backend/services/http/geoip/http.go b/backend/services/http/geoip/http.go new file mode 100644 index 000000000..49f919b92 --- /dev/null +++ b/backend/services/http/geoip/http.go @@ -0,0 +1,13 @@ +package geoip + +import ( + "net" + "net/http" + + "github.com/tomasen/realip" +) + +func (geoIP *GeoIP) ExtractISOCodeFromHTTPRequest(r *http.Request) string { + ip := net.ParseIP(realip.FromRequest(r)) + return geoIP.ExtractISOCode(ip) +} diff --git a/backend/services/http/handlers.go b/backend/services/http/handlers.go new file mode 100644 index 000000000..252eddc5a --- /dev/null +++ b/backend/services/http/handlers.go @@ -0,0 +1,295 @@ +package main + +import ( + "encoding/json" + "errors" + "time" + "log" + "io" + "io/ioutil" + "net/http" + "math/rand" + "strconv" + + gzip "github.com/klauspost/pgzip" + + . "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/db/postgres" + "openreplay/backend/pkg/token" +) + +const JSON_SIZE_LIMIT int64 = 1e3 // 1Kb +const BATCH_SIZE_LIMIT int64 = 1e6 // 1Mb + +func startSessionHandlerWeb(w http.ResponseWriter, r *http.Request) { + type request struct { + Token string `json:"token"` + UserUUID *string `json:"userUUID"` + RevID string `json:"revID"` + Timestamp uint64 `json:"timestamp"` + TrackerVersion string `json:"trackerVersion"` + IsSnippet bool `json:"isSnippet"` + DeviceMemory uint64 `json:"deviceMemory"` + JsHeapSizeLimit uint64 `json:"jsHeapSizeLimit"` + ProjectKey *string `json:"projectKey"` + } + type response struct { + Timestamp int64 `json:"timestamp"` + Delay int64 `json:"delay"` + Token string `json:"token"` + UserUUID string `json:"userUUID"` + SessionID string `json:"sessionID"` + } + + startTime := time.Now() + req := &request{} + body := http.MaxBytesReader(w, r.Body, JSON_SIZE_LIMIT) // what if Body == nil?? // use r.ContentLength to return specific error? + //defer body.Close() + if err := json.NewDecoder(body).Decode(req); err != nil { + responseWithError(w, http.StatusBadRequest, err) + return + } + + if req.ProjectKey == nil { + responseWithError(w, http.StatusForbidden, errors.New("ProjectKey value required")) + return + } + + p, err := pgconn.GetProjectByKey(*req.ProjectKey) + if p == nil { + if err == nil { + responseWithError(w, http.StatusNotFound, errors.New("Project doesn't exist or is not active")) + } else { + responseWithError(w, http.StatusInternalServerError, err) // TODO: send error here only on staging + } + return + } + + dice := byte(rand.Intn(100)) // [0, 100) + if dice >= p.SampleRate { + responseWithError(w, http.StatusForbidden, errors.New("cancel")) + return + } + + userUUID := getUUID(req.UserUUID) + tokenData, err := tokenizer.Parse(req.Token) + if err != nil { // Starting the new one + ua := uaParser.ParseFromHTTPRequest(r) + if ua == nil { + responseWithError(w, http.StatusForbidden, errors.New("browser not recognized")) + return + } + sessionID, err := flaker.Compose(uint64(startTime.UnixNano() / 1e6)) + if err != nil { + responseWithError(w, http.StatusInternalServerError, err) + return + } + // TODO: if EXPIRED => send message for two sessions association + expTime := startTime.Add(time.Duration(p.MaxSessionDuration) * time.Millisecond) + tokenData = &token.TokenData{sessionID, expTime.UnixNano() / 1e6} + + country := geoIP.ExtractISOCodeFromHTTPRequest(r) + producer.Produce(topicRaw, tokenData.ID, Encode(&SessionStart{ + Timestamp: req.Timestamp, + ProjectID: uint64(p.ProjectID), + TrackerVersion: req.TrackerVersion, + RevID: req.RevID, + UserUUID: userUUID, + UserAgent: r.Header.Get("User-Agent"), + UserOS: ua.OS, + UserOSVersion: ua.OSVersion, + UserBrowser: ua.Browser, + UserBrowserVersion: ua.BrowserVersion, + UserDevice: ua.Device, + UserDeviceType: ua.DeviceType, + UserCountry: country, + UserDeviceMemorySize: req.DeviceMemory, + UserDeviceHeapSize: req.JsHeapSizeLimit, + })) + } + + //delayDuration := time.Now().Sub(startTime) + responseWithJSON(w, &response{ + //Timestamp: startTime.UnixNano() / 1e6, + //Delay: delayDuration.Nanoseconds() / 1e6, + Token: tokenizer.Compose(*tokenData), + UserUUID: userUUID, + SessionID: strconv.FormatUint(tokenData.ID, 10), + }) +} + + + +func pushMessages(w http.ResponseWriter, r *http.Request, sessionID uint64) { + body := http.MaxBytesReader(w, r.Body, BATCH_SIZE_LIMIT) + //defer body.Close() + var reader io.ReadCloser + switch r.Header.Get("Content-Encoding") { + case "gzip": + reader, err := gzip.NewReader(body) + if err != nil { + responseWithError(w, http.StatusInternalServerError, err) // TODO: stage-dependent responce + return + } + defer reader.Close() + default: + reader = body + } + buf, err := ioutil.ReadAll(reader) + if err != nil { + responseWithError(w, http.StatusInternalServerError, err) // TODO: send error here only on staging + return + } + producer.Produce(topicRaw, sessionID, buf) // What if not able to send? + w.WriteHeader(http.StatusOK) +} + +func pushMessagesHandler(w http.ResponseWriter, r *http.Request) { + sessionData, err := tokenizer.ParseFromHTTPRequest(r) + if err != nil { + responseWithError(w, http.StatusUnauthorized, err) + return + } + pushMessages(w, r, sessionData.ID) +} + +func pushMessagesSeparatelyHandler(w http.ResponseWriter, r *http.Request) { + sessionData, err := tokenizer.ParseFromHTTPRequest(r) + if err != nil { + responseWithError(w, http.StatusUnauthorized, err) + return + } + body := http.MaxBytesReader(w, r.Body, BATCH_SIZE_LIMIT) + //defer body.Close() + buf, err := ioutil.ReadAll(body) + if err != nil { + responseWithError(w, http.StatusInternalServerError, err) // TODO: send error here only on staging + return + } + //log.Printf("Sending batch...") + //startTime := time.Now() + +// analyticsMessages := make([]Message, 0, 200) + + rewritenBuf, err := RewriteBatch(buf, func(msg Message) Message { + switch m := msg.(type) { + case *SetNodeAttributeURLBased: + if m.Name == "src" || m.Name == "href" { + sendAssetForCache(sessionData.ID, m.BaseURL, m.Value) + msg = &SetNodeAttribute{ + ID: m.ID, + Name: m.Name, + Value: rewriter.RewriteURL(sessionData.ID, m.BaseURL, m.Value), + } + } else if m.Name == "style" { + sendAssetsForCacheFromCSS(sessionData.ID, m.BaseURL, m.Value) + msg = &SetNodeAttribute{ + ID: m.ID, + Name: m.Name, + Value: rewriter.RewriteCSS(sessionData.ID, m.BaseURL, m.Value), + } + } + case *SetCSSDataURLBased: + sendAssetsForCacheFromCSS(sessionData.ID, m.BaseURL, m.Data) + msg = &SetCSSData{ + ID: m.ID, + Data: rewriter.RewriteCSS(sessionData.ID, m.BaseURL, m.Data), + } + case *CSSInsertRuleURLBased: + sendAssetsForCacheFromCSS(sessionData.ID, m.BaseURL, m.Rule) + msg = &CSSInsertRule{ + ID: m.ID, + Index: m.Index, + Rule: rewriter.RewriteCSS(sessionData.ID, m.BaseURL, m.Rule), + } + } + + // switch msg.(type) { + // case *BatchMeta, // TODO: watchout! Meta().Index'es are changed here (though it is still unique for the topic-session pair) + // *SetPageLocation, + // *PageLoadTiming, + // *PageRenderTiming, + // *PerformanceTrack, + // *SetInputTarget, + // *SetInputValue, + // *MouseClick, + // *RawErrorEvent, + // *JSException, + // *ResourceTiming, + // *RawCustomEvent, + // *CustomIssue, + // *Fetch, + // *StateAction, + // *GraphQL, + // *CreateElementNode, + // *CreateTextNode, + // *RemoveNode, + // *CreateDocument, + // *RemoveNodeAttribute, + // *MoveNode, + // *SetCSSData, + // *CSSInsertRule, + // *CSSDeleteRule: + // analyticsMessages = append(analyticsMessages, msg) + //} + + + + return msg + }) + if err != nil { + responseWithError(w, http.StatusForbidden, err) + return + } + producer.Produce(topicRaw, sessionData.ID, rewritenBuf) + //producer.Produce(topicAnalytics, sessionData.ID, WriteBatch(analyticsMessages)) + //duration := time.Now().Sub(startTime) + //log.Printf("Sended batch within %v nsec; %v nsek/byte", duration.Nanoseconds(), duration.Nanoseconds()/int64(len(buf))) + w.WriteHeader(http.StatusOK) +} + +func notStartedHandler(w http.ResponseWriter, r *http.Request) { + type request struct { + ProjectKey *string `json:"projectKey"` + TrackerVersion string `json:"trackerVersion"` + DoNotTrack bool `json:"DoNotTrack"` + // RevID string `json:"revID"` + } + req := &request{} + body := http.MaxBytesReader(w, r.Body, JSON_SIZE_LIMIT) + defer body.Close() + if err := json.NewDecoder(body).Decode(req); err != nil { + responseWithError(w, http.StatusBadRequest, err) + return + } + if req.ProjectKey == nil { + responseWithError(w, http.StatusForbidden, errors.New("ProjectKey value required")) + return + } + ua := uaParser.ParseFromHTTPRequest(r) // TODO?: insert anyway + if ua == nil { + responseWithError(w, http.StatusForbidden, errors.New("browser not recognized")) + return + } + country := geoIP.ExtractISOCodeFromHTTPRequest(r) + err := pgconn.InsertUnstartedSession(postgres.UnstartedSession{ + ProjectKey: *req.ProjectKey, + TrackerVersion: req.TrackerVersion, + DoNotTrack: req.DoNotTrack, + Platform: "web", + UserAgent: r.Header.Get("User-Agent"), + UserOS: ua.OS, + UserOSVersion: ua.OSVersion, + UserBrowser: ua.Browser, + UserBrowserVersion: ua.BrowserVersion, + UserDevice: ua.Device, + UserDeviceType: ua.DeviceType, + UserCountry: country, + }) + if err != nil { + log.Printf("Unable to insert Unstarted Session: %v\n", err); + } + w.WriteHeader(http.StatusOK) +} + + diff --git a/backend/services/http/handlers_ios.go b/backend/services/http/handlers_ios.go new file mode 100644 index 000000000..2c874a312 --- /dev/null +++ b/backend/services/http/handlers_ios.go @@ -0,0 +1,145 @@ +package main + +// const FILES_SIZE_LIMIT int64 = 1e8 // 100Mb + +// func startSessionHandlerIOS(w http.ResponseWriter, r *http.Request) { +// type request struct { +// // SessionID *string +// EncodedProjectID *uint64 `json:"projectID"` +// TrackerVersion string `json:"trackerVersion"` +// RevID string `json:"revID"` +// UserUUID *string `json:"userUUID"` +// //UserOS string `json"userOS"` //hardcoded 'MacOS' +// UserOSVersion string `json:"userOSVersion"` +// UserDevice string `json:"userDevice"` +// Timestamp uint64 `json:"timestamp"` +// // UserDeviceType uint 0:phone 1:pad 2:tv 3:carPlay 5:mac +// // “performances”:{ +// // “activeProcessorCount”:8, +// // “isLowPowerModeEnabled”:0, +// // “orientation”:0, +// // “systemUptime”:585430, +// // “batteryState”:0, +// // “thermalState”:0, +// // “batteryLevel”:0, +// // “processorCount”:8, +// // “physicalMemory”:17179869184 +// // }, +// } +// type response struct { +// Token string `json:"token"` +// ImagesHashList []string `json:"imagesHashList"` +// UserUUID string `json:"userUUID"` +// SESSION_ID uint64 `json:"SESSION_ID"` ///TEMP +// } +// startTime := time.Now() +// req := &request{} +// body := http.MaxBytesReader(w, r.Body, JSON_SIZE_LIMIT) +// //defer body.Close() +// if err := json.NewDecoder(body).Decode(req); err != nil { +// responseWithError(w, http.StatusBadRequest, err) +// return +// } + +// if req.EncodedProjectID == nil { +// responseWithError(w, http.StatusForbidden, errors.New("ProjectID value required")) +// return +// } +// projectID := decodeProjectID(*(req.EncodedProjectID)) +// if projectID == 0 { +// responseWithError(w, http.StatusUnprocessableEntity, errors.New("ProjectID value is invalid")) +// return +// } +// p, err := pgconn.GetProject(uint32(projectID)) +// if p == nil { +// if err == nil { +// responseWithError(w, http.StatusNotFound, errors.New("Project doesn't exist or is not active")) +// } else { +// responseWithError(w, http.StatusInternalServerError, err) // TODO: send error here only on staging +// } +// return +// } +// sessionID, err := flaker.Compose(req.Timestamp) +// if err != nil { +// responseWithError(w, http.StatusInternalServerError, err) +// return +// } +// userUUID := getUUID(req.UserUUID) +// country := geoIP.ExtractISOCodeFromHTTPRequest(r) +// expirationTime := startTime.Add(time.Duration(p.MaxSessionDuration) * time.Millisecond) + +// imagesHashList, err := s3.GetFrequentlyUsedKeys(*(req.EncodedProjectID)) // TODO: reuse index: ~ frequency * size +// if err != nil { +// responseWithError(w, http.StatusInternalServerError, err) +// return +// } + +// responseWithJSON(w, &response{ +// Token: tokenizer.Compose(sessionID, uint64(expirationTime.UnixNano()/1e6)), +// ImagesHashList: imagesHashList, +// UserUUID: userUUID, +// //TEMP: +// SESSION_ID: sessionID, +// }) +// producer.Produce(topicRaw, sessionID, messages.Encode(&messages.IOSSessionStart{ +// Timestamp: req.Timestamp, +// ProjectID: projectID, +// TrackerVersion: req.TrackerVersion, +// RevID: req.RevID, +// UserUUID: userUUID, +// UserOS: "MacOS", +// UserOSVersion: req.UserOSVersion, +// UserDevice: MapIOSDevice(req.UserDevice), +// UserDeviceType: GetIOSDeviceType(req.UserDevice), // string `json:"userDeviceType"` // From UserDevice; ENUM ? +// UserCountry: country, +// })) +// } + + +// func pushLateMessagesHandler(w http.ResponseWriter, r *http.Request) { +// sessionData, err := tokenizer.ParseFromHTTPRequest(r) +// if err != nil && err != token.EXPIRED { +// responseWithError(w, http.StatusUnauthorized, err) +// return +// } +// // Check timestamps here? +// pushMessages(w, r, sessionData.ID) +// } + + +// func iosImagesUploadHandler(w http.ResponseWriter, r *http.Request) { +// r.Body = http.MaxBytesReader(w, r.Body, FILES_SIZE_LIMIT) +// // defer r.Body.Close() +// err := r.ParseMultipartForm(1e5) // 100Kb +// if err == http.ErrNotMultipart || err == http.ErrMissingBoundary { +// responseWithError(w, http.StatusUnsupportedMediaType, err) +// // } else if err == multipart.ErrMessageTooLarge // if non-files part exceeds 10 MB +// } else if err != nil { +// responseWithError(w, http.StatusInternalServerError, err) // TODO: send error here only on staging +// } + +// if len(r.MultipartForm.Value["projectID"]) == 0 { +// responseWithError(w, http.StatusBadRequest, errors.New("projectID parameter required")) // status for missing/wrong parameter? +// return +// } +// // encodedProjectID, err := strconv.ParseUint(r.MultipartForm.Value["projectID"][0], 10, 64) +// // projectID := decodeProjectID(encodedProjectID) +// // if projectID == 0 || err != nil { +// // responseWithError(w, http.StatusUnprocessableEntity, errors.New("projectID value is incorrect")) +// // return +// // } +// prefix := r.MultipartForm.Value["projectID"][0] + "/" //strconv.FormatUint(uint64(projectID), 10) + "/" + +// for _, fileHeaderList := range r.MultipartForm.File { +// for _, fileHeader := range fileHeaderList { +// file, err := fileHeader.Open() +// if err != nil { +// continue // TODO: send server error or accumulate successful files +// } +// key := prefix + fileHeader.Filename // TODO: Malicious image put: use jwt? +// go s3.Upload(file, key, "image/png", false) +// } +// } + +// w.WriteHeader(http.StatusOK) +// } diff --git a/backend/services/http/ios_device.go b/backend/services/http/ios_device.go new file mode 100644 index 000000000..2c3474157 --- /dev/null +++ b/backend/services/http/ios_device.go @@ -0,0 +1,79 @@ +package main + +import ( + "strings" +) + +func MapIOSDevice(identifier string) string { + switch identifier { + case "iPod5,1": return "iPod touch (5th generation)" + case "iPod7,1": return "iPod touch (6th generation)" + case "iPod9,1": return "iPod touch (7th generation)" + case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone 4" + case "iPhone4,1": return "iPhone 4s" + case "iPhone5,1", "iPhone5,2": return "iPhone 5" + case "iPhone5,3", "iPhone5,4": return "iPhone 5c" + case "iPhone6,1", "iPhone6,2": return "iPhone 5s" + case "iPhone7,2": return "iPhone 6" + case "iPhone7,1": return "iPhone 6 Plus" + case "iPhone8,1": return "iPhone 6s" + case "iPhone8,2": return "iPhone 6s Plus" + case "iPhone8,4": return "iPhone SE" + case "iPhone9,1", "iPhone9,3": return "iPhone 7" + case "iPhone9,2", "iPhone9,4": return "iPhone 7 Plus" + case "iPhone10,1", "iPhone10,4": return "iPhone 8" + case "iPhone10,2", "iPhone10,5": return "iPhone 8 Plus" + case "iPhone10,3", "iPhone10,6": return "iPhone X" + case "iPhone11,2": return "iPhone XS" + case "iPhone11,4", "iPhone11,6": return "iPhone XS Max" + case "iPhone11,8": return "iPhone XR" + case "iPhone12,1": return "iPhone 11" + case "iPhone12,3": return "iPhone 11 Pro" + case "iPhone12,5": return "iPhone 11 Pro Max" + case "iPhone12,8": return "iPhone SE (2nd generation)" + case "iPhone13,1": return "iPhone 12 mini" + case "iPhone13,2": return "iPhone 12" + case "iPhone13,3": return "iPhone 12 Pro" + case "iPhone13,4": return "iPhone 12 Pro Max" + case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2" + case "iPad3,1", "iPad3,2", "iPad3,3": return "iPad (3rd generation)" + case "iPad3,4", "iPad3,5", "iPad3,6": return "iPad (4th generation)" + case "iPad6,11", "iPad6,12": return "iPad (5th generation)" + case "iPad7,5", "iPad7,6": return "iPad (6th generation)" + case "iPad7,11", "iPad7,12": return "iPad (7th generation)" + case "iPad11,6", "iPad11,7": return "iPad (8th generation)" + case "iPad4,1", "iPad4,2", "iPad4,3": return "iPad Air" + case "iPad5,3", "iPad5,4": return "iPad Air 2" + case "iPad11,3", "iPad11,4": return "iPad Air (3rd generation)" + case "iPad13,1", "iPad13,2": return "iPad Air (4th generation)" + case "iPad2,5", "iPad2,6", "iPad2,7": return "iPad mini" + case "iPad4,4", "iPad4,5", "iPad4,6": return "iPad mini 2" + case "iPad4,7", "iPad4,8", "iPad4,9": return "iPad mini 3" + case "iPad5,1", "iPad5,2": return "iPad mini 4" + case "iPad11,1", "iPad11,2": return "iPad mini (5th generation)" + case "iPad6,3", "iPad6,4": return "iPad Pro (9.7-inch)" + case "iPad7,3", "iPad7,4": return "iPad Pro (10.5-inch)" + case "iPad8,1", "iPad8,2", "iPad8,3", "iPad8,4":return "iPad Pro (11-inch) (1st generation)" + case "iPad8,9", "iPad8,10": return "iPad Pro (11-inch) (2nd generation)" + case "iPad6,7", "iPad6,8": return "iPad Pro (12.9-inch) (1st generation)" + case "iPad7,1", "iPad7,2": return "iPad Pro (12.9-inch) (2nd generation)" + case "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8":return "iPad Pro (12.9-inch) (3rd generation)" + case "iPad8,11", "iPad8,12": return "iPad Pro (12.9-inch) (4th generation)" + case "AppleTV5,3": return "Apple TV" + case "AppleTV6,2": return "Apple TV 4K" + case "AudioAccessory1,1": return "HomePod" + case "AudioAccessory5,1": return "HomePod mini" + case "i386", "x86_64": return "Simulator" + default: return identifier + } +} + +func GetIOSDeviceType(identifier string) string { + if strings.Contains(identifier, "iPhone") { + return "mobile" //"phone" + } + if strings.Contains(identifier, "iPad") { + return "tablet" + } + return "other" +} \ No newline at end of file diff --git a/backend/services/http/main.go b/backend/services/http/main.go new file mode 100644 index 000000000..b3e3b6d9d --- /dev/null +++ b/backend/services/http/main.go @@ -0,0 +1,137 @@ +package main + +import ( + "context" + "log" + "net/http" + "os" + "os/signal" + "syscall" + + + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/flakeid" + "openreplay/backend/pkg/queue" + "openreplay/backend/pkg/queue/types" + "openreplay/backend/pkg/storage" + "openreplay/backend/pkg/db/postgres" + "openreplay/backend/pkg/db/cache" + "openreplay/backend/pkg/url/assets" + "openreplay/backend/pkg/token" + "openreplay/backend/services/http/geoip" + "openreplay/backend/services/http/uaparser" + +) + +var rewriter *assets.Rewriter +var producer types.Producer +var pgconn *cache.PGCache +var flaker *flakeid.Flaker +var uaParser *uaparser.UAParser +var geoIP *geoip.GeoIP +var tokenizer *token.Tokenizer +var s3 *storage.S3 +var topicRaw string +var topicTrigger string +var topicAnalytics string +// var kafkaTopicEvents string + +func main() { + log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) + + producer = queue.NewProducer() + defer producer.Close(15000) + topicRaw = env.String("TOPIC_RAW") + topicTrigger = env.String("TOPIC_TRIGGER") + topicAnalytics = env.String("TOPIC_ANALYTICS") + rewriter = assets.NewRewriter(env.String("ASSETS_ORIGIN")) + pgconn = cache.NewPGCache(postgres.NewConn(env.String("POSTGRES_STRING")), 1000 * 60 * 20) + defer pgconn.Close() + //s3 = storage.NewS3(env.String("S3_BUCKET_IMAGES_IOS"), env.String("AWS_REGION")) + tokenizer = token.NewTokenizer(env.String("TOKEN_SECRET")) + uaParser = uaparser.NewUAParser(env.String("UAPARSER_FILE")) + geoIP = geoip.NewGeoIP(env.String("MAXMINDDB_FILE")) + flaker = flakeid.NewFlaker(env.WorkerID()) + HTTP_PORT := env.String("HTTP_PORT") + + server := &http.Server{ + Addr: ":" + HTTP_PORT, + Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + + // TODO: agree with specification + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Allow-Methods", "POST") + w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Authorization") + if r.Method == http.MethodOptions { + w.WriteHeader(http.StatusOK) + return + } + switch r.URL.Path { + case "/": + w.WriteHeader(http.StatusOK) + case "/v1/web/not-started": + switch r.Method { + case "POST": + notStartedHandler(w, r) + default: + w.WriteHeader(http.StatusMethodNotAllowed) + } + case "/v1/web/start": + switch r.Method { + case "POST": + startSessionHandlerWeb(w, r) + default: + w.WriteHeader(http.StatusMethodNotAllowed) + } + case "/v1/web/i": + switch r.Method { + case "POST": + pushMessagesSeparatelyHandler(w, r) + default: + w.WriteHeader(http.StatusMethodNotAllowed) + } + // case "/v1/ios/start": + // switch r.Method { + // case "POST": + // startSessionHandlerIOS(w, r) + // default: + // w.WriteHeader(http.StatusMethodNotAllowed) + // } + // case "/v1/ios/append": + // switch r.Method { + // case "POST": + // pushMessagesHandler(w, r) + // default: + // w.WriteHeader(http.StatusMethodNotAllowed) + // } + // case "/v1/ios/late": + // switch r.Method { + // case "POST": + // pushLateMessagesHandler(w, r) + // default: + // w.WriteHeader(http.StatusMethodNotAllowed) + // } + // case "/v1/ios/images": + // switch r.Method { + // case "POST": + // iosImagesUploadHandler(w, r) + // default: + // w.WriteHeader(http.StatusMethodNotAllowed) + // } + default: + w.WriteHeader(http.StatusNotFound) + } + }), + } + go func() { + if err := server.ListenAndServe(); err != nil { + log.Fatalf("Server error: %v\n", err) + } + }() + log.Printf("Server successfully started on port %v\n", HTTP_PORT) + sigchan := make(chan os.Signal, 1) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + <-sigchan + log.Printf("Shutting down the server\n") + server.Shutdown(context.Background()) +} diff --git a/backend/services/http/project_id.go b/backend/services/http/project_id.go new file mode 100644 index 000000000..059576fe8 --- /dev/null +++ b/backend/services/http/project_id.go @@ -0,0 +1,12 @@ +package main + +func decodeProjectID(projectID uint64) uint64 { + if projectID < 0x10000000000000 || projectID >= 0x20000000000000 { + return 0 + } + projectID = (projectID - 0x10000000000000) * 4212451012670231 & 0xfffffffffffff + if projectID > 0xffffffff { + return 0 + } + return projectID +} diff --git a/backend/services/http/response.go b/backend/services/http/response.go new file mode 100644 index 000000000..ffd22875e --- /dev/null +++ b/backend/services/http/response.go @@ -0,0 +1,23 @@ +package main + +import ( + "encoding/json" + "log" + "net/http" +) + +func responseWithJSON(w http.ResponseWriter, res interface{}) { + body, err := json.Marshal(res) + if err != nil { + log.Println(err) + } + w.Write(body) +} + +func responseWithError(w http.ResponseWriter, code int, err error) { + type response struct { + Error string `json:"error"` + } + w.WriteHeader(code) + responseWithJSON(w, &response{err.Error()}) +} diff --git a/backend/services/http/uaparser/http.go b/backend/services/http/uaparser/http.go new file mode 100644 index 000000000..1ed6b0a24 --- /dev/null +++ b/backend/services/http/uaparser/http.go @@ -0,0 +1,8 @@ +package uaparser + +import "net/http" + +func (parser *UAParser) ParseFromHTTPRequest(r *http.Request) *UA { + str := r.Header.Get("User-Agent") + return parser.Parse(str) +} diff --git a/backend/services/http/uaparser/uaparser.go b/backend/services/http/uaparser/uaparser.go new file mode 100644 index 000000000..e2bc78d9a --- /dev/null +++ b/backend/services/http/uaparser/uaparser.go @@ -0,0 +1,77 @@ +package uaparser + +import ( + "log" + "strings" + + "github.com/ua-parser/uap-go/uaparser" +) + +type UAParser struct { + p *uaparser.Parser +} + +func NewUAParser(regexFile string) *UAParser { + p, err := uaparser.New(regexFile) + if err != nil { + log.Fatalln(err) + } + return &UAParser{p} +} + +type UA struct { + OS string + OSVersion string + Browser string + BrowserVersion string + Device string + DeviceType string +} + +func (parser *UAParser) Parse(str string) *UA { + if str == "" { + return nil + } + data := parser.p.Parse(str) + if data == nil { + return nil + } + ua := &UA{ + OS: data.Os.Family, + Browser: strings.Split(data.UserAgent.Family, "/")[0], + Device: data.Device.Family, + } + if ua.OS == "" || ua.Browser == "" || ua.Device == "Spider" { + return nil + } + if ua.Device == "Other" || ua.Device == "Mac" { + ua.Device = "" + } + if data.Os.Major != "" { + ua.OSVersion += data.Os.Major + if data.Os.Minor != "" { + ua.OSVersion += "." + data.Os.Minor + if data.Os.Patch != "" { + ua.OSVersion += "." + data.Os.Patch + } + } + } + if data.UserAgent.Major != "" { + ua.BrowserVersion += data.UserAgent.Major + if data.UserAgent.Minor != "" { + ua.BrowserVersion += "." + data.UserAgent.Minor + if data.UserAgent.Patch != "" { + ua.BrowserVersion += "." + data.UserAgent.Patch + } + } + } + switch ua.OS { + case "Chrome OS", "Fedora", "FreeBSD", "Linux", "Mac OS X", "NetBSD", "Ubuntu", "Windows": + ua.DeviceType = "desktop" + case "Android", "BlackBerry OS", "BlackBerry Tablet OS", "iOS", "Windows Phone": + ua.DeviceType = "mobile" + default: + ua.DeviceType = "other" + } + return ua +} diff --git a/backend/services/http/uuid.go b/backend/services/http/uuid.go new file mode 100644 index 000000000..13f57bff0 --- /dev/null +++ b/backend/services/http/uuid.go @@ -0,0 +1,15 @@ +package main + +import ( + "github.com/google/uuid" +) + +func getUUID(u *string) string { + if u != nil { + _, err := uuid.Parse(*u) + if err == nil { + return *u + } + } + return uuid.New().String() +} \ No newline at end of file diff --git a/backend/services/integrations/clientManager/manager.go b/backend/services/integrations/clientManager/manager.go new file mode 100644 index 000000000..39cd8dd90 --- /dev/null +++ b/backend/services/integrations/clientManager/manager.go @@ -0,0 +1,51 @@ +package clientManager + +import ( + "strconv" + + "openreplay/backend/pkg/db/postgres" + "openreplay/backend/services/integrations/integration" +) + + +type manager struct { + clientMap integration.ClientMap + Events chan *integration.SessionErrorEvent + Errors chan error + RequestDataUpdates chan postgres.Integration // not pointer because it could change in other thread +} + + +func NewManager() *manager { + return &manager { + clientMap: make(integration.ClientMap), + RequestDataUpdates: make(chan postgres.Integration, 100), + Events: make(chan *integration.SessionErrorEvent, 100), + Errors: make(chan error, 100), + } + +} + +func (m* manager) Update(i *postgres.Integration) error { + key := strconv.Itoa(int(i.ProjectID)) + i.Provider + if i.Options == nil { + delete(m.clientMap, key) + return nil + } + c, exists := m.clientMap[ key ] + if !exists { + c, err := integration.NewClient(i, m.RequestDataUpdates, m.Events, m.Errors) + if err != nil { + return err + } + m.clientMap[ key ] = c + return nil + } + return c.Update(i) +} + +func (m *manager) RequestAll() { + for _, c := range m.clientMap { + go c.Request() + } +} diff --git a/backend/services/integrations/integration/bugsnag.go b/backend/services/integrations/integration/bugsnag.go new file mode 100644 index 000000000..7c31db3cb --- /dev/null +++ b/backend/services/integrations/integration/bugsnag.go @@ -0,0 +1,123 @@ +package integration + +import ( + "fmt" + "net/http" + "encoding/json" + "net/url" + "time" + "io" + "io/ioutil" + + "openreplay/backend/pkg/utime" + "openreplay/backend/pkg/messages" +) + +/* + - Bugsnag messages usually recived later then others +*/ + +type bugsnag struct { + BugsnagProjectId string // `json:"bugsnag_project_id"` + AuthorizationToken string // `json:"auth_token"` +} + + +type bugsnagEvent struct { + MetaData struct { + SpecialInfo struct { + AsayerSessionId uint64 `json:"asayerSessionId,string"` + OpenReplaySessionToken string `json:"openReplaySessionToken"` + } `json:"special_info"` + } `json:"metaData"` + ReceivedAt string `json:"received_at"` // can use time.Time as it implements UnmarshalJSON from RFC3339 format + Exceptions [1]struct { + Message string + } +} + +func (b *bugsnag) Request(c *client) error { + sinceTs := c.getLastMessageTimestamp() + 1000 // From next second + sinceFormatted := time.Unix(0, int64(sinceTs*1e6)).Format(time.RFC3339) + requestURL := fmt.Sprintf("https://api.bugsnag.com/projects/%v/events", b.BugsnagProjectId) + req, err := http.NewRequest("GET", requestURL, nil) + if err != nil { + return err + } + q := req.URL.Query() + // q.Add("per_page", "100") // Up to a maximum of 30. Default: 30 + // q.Add("sort", "timestamp") // Default: timestamp (timestamp == ReceivedAt ??) + q.Add("direction", "asc") // Default: desc + q.Add("full_reports", "true") // Default: false + q.Add("filters[event.since][][type]", "eq") + q.Add("filters[event.since][][value]", sinceFormatted) // seems like inclusively + req.URL.RawQuery = q.Encode() + + authToken := "token " + b.AuthorizationToken + req.Header.Add("Authorization", authToken) + req.Header.Add("X-Version", "2") + + for { + resp, err := http.DefaultClient.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + // Status code + // 401 (unauthorised) + if resp.StatusCode >= 400 { + io.Copy(ioutil.Discard, resp.Body) // Read the body to free socket + return fmt.Errorf("Bugsnag: server respond with the code %v | data: %v ", resp.StatusCode, *b) + } + + var jsonEventList []json.RawMessage + err = json.NewDecoder(resp.Body).Decode(&jsonEventList) + if err != nil { + return err + } + for _, jsonEvent := range jsonEventList { + var e bugsnagEvent + err = json.Unmarshal(jsonEvent, &e) + if err != nil { + c.errChan <- err + continue + } + sessionID := e.MetaData.SpecialInfo.AsayerSessionId + token := e.MetaData.SpecialInfo.OpenReplaySessionToken + if sessionID == 0 && token == "" { + // c.errChan <- "No AsayerSessionId found. | Message: %v", e + continue + } + parsedTime, err := time.Parse(time.RFC3339, e.ReceivedAt) + if err != nil { + c.errChan <- err + continue + } + timestamp := uint64(utime.ToMilliseconds(parsedTime)) + c.setLastMessageTimestamp(timestamp) + c.evChan <- &SessionErrorEvent{ + SessionID: sessionID, + Token: token, + RawErrorEvent: &messages.RawErrorEvent{ + Source: "bugsnag", + Timestamp: timestamp, + Name: e.Exceptions[0].Message, + Payload: string(jsonEvent), + }, + } + } + + linkHeader := resp.Header.Get("Link") + if linkHeader == "" { + break + } + + nextLink := GetLinkFromAngularBrackets(linkHeader) + req.URL, err = url.Parse(nextLink) + if err != nil { + return err + } + } + return nil +} diff --git a/backend/services/integrations/integration/bugsnag.json b/backend/services/integrations/integration/bugsnag.json new file mode 100644 index 000000000..38db0a569 --- /dev/null +++ b/backend/services/integrations/integration/bugsnag.json @@ -0,0 +1,9207 @@ +[ + { + "id": "5e40ebc80056035588f90000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebc80056035588f90000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:08.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 608, + "method": "get_performance", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "605": " \"aggs\": {", + "606": " \"duration_avg\": {", + "607": " \"avg\": {", + "608": " \"field\": \"duration\"", + "609": " }", + "610": " }", + "611": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1398, + "method": "get_dashboard_performance", + "file": "/var/task/app.py", + "code": { + "1395": " args = dashboard.dashboard_args(params)", + "1396": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1397": " return {\"errors\": [\"unauthorized site\"]}", + "1398": " return {\"data\": dashboard.get_performance(site_id=siteId, **args)}", + "1399": "", + "1400": "", + "1401": "@app.route('/{siteId}/dashboard/performance/search', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.238.85", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebce0055f9426eac0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebce0055f9426eac0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:14.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1233, + "method": "get_missing_resources_trend", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "1230": " \"url_hostpath\": {", + "1231": " \"terms\": {", + "1232": " \"size\": 10,", + "1233": " \"field\": \"url_hostpath.raw\"", + "1234": " }", + "1235": " }", + "1236": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1481, + "method": "get_performance_sessions", + "file": "/var/task/app.py", + "code": { + "1478": " args = dashboard.dashboard_args(params)", + "1479": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1480": " return {\"errors\": [\"unauthorized site\"]}", + "1481": " return {\"data\": dashboard.get_missing_resources_trend(site_id=siteId, **args)}", + "1482": "", + "1483": "", + "1484": "@app.route('/{siteId}/dashboard/network', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.14.137", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebce005604d753340000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebce005604d753340000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:14.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 345, + "method": "__get_application_activity", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "342": " \"aggs\": {", + "343": " \"avg_img_load\": {", + "344": " \"avg\": {", + "345": " \"field\": \"duration\"", + "346": " }", + "347": " }", + "348": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 285, + "method": "get_application_activity", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "282": "def get_application_activity(site_id, startTimestamp=int(time.time()) - 24 * 60 * 60 * 1000,", + "283": " endTimestamp=int(time.time()) * 1000, platform=None, **args):", + "284": " with pg_client.PostgresClient() as cur:", + "285": " row = __get_application_activity(cur, site_id, startTimestamp, endTimestamp, platform)", + "286": " results = helper.variable_to_camel_case(row)", + "287": " print(\"new\")", + "288": " print(row)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1371, + "method": "get_dashboard_application_activity", + "file": "/var/task/app.py", + "code": { + "1368": " args = dashboard.dashboard_args(params)", + "1369": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1370": " return {\"errors\": [\"unauthorized site\"]}", + "1371": " return {\"data\": dashboard.get_application_activity(site_id=siteId, **args)}", + "1372": "", + "1373": "", + "1374": "@app.route('/{siteId}/dashboard/page_metrics', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.198.37", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebe40055e91b7de10000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebe40055e91b7de10000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:36.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 483, + "method": "get_slowest_images", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "480": " \"sort\": [", + "481": " {\"impact\": {\"order\": \"desc\"}}", + "482": " ],", + "483": " \"size\": 10", + "484": " }", + "485": " }", + "486": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1429, + "method": "get_dashboard_slowest_images", + "file": "/var/task/app.py", + "code": { + "1426": " args = dashboard.dashboard_args(params)", + "1427": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1428": " return {\"errors\": [\"unauthorized site\"]}", + "1429": " return {\"data\": dashboard.get_slowest_images(site_id=siteId, **args)}", + "1430": "", + "1431": "", + "1432": "@app.route('/{siteId}/dashboard/sessions_feedback', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.179.21", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebee0055ffd373510000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebee0055ffd373510000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:46.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 345, + "method": "__get_application_activity", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "342": " \"aggs\": {", + "343": " \"avg_img_load\": {", + "344": " \"avg\": {", + "345": " \"field\": \"duration\"", + "346": " }", + "347": " }", + "348": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 285, + "method": "get_application_activity", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "282": "def get_application_activity(site_id, startTimestamp=int(time.time()) - 24 * 60 * 60 * 1000,", + "283": " endTimestamp=int(time.time()) * 1000, platform=None, **args):", + "284": " with pg_client.PostgresClient() as cur:", + "285": " row = __get_application_activity(cur, site_id, startTimestamp, endTimestamp, platform)", + "286": " results = helper.variable_to_camel_case(row)", + "287": " print(\"new\")", + "288": " print(row)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1371, + "method": "get_dashboard_application_activity", + "file": "/var/task/app.py", + "code": { + "1368": " args = dashboard.dashboard_args(params)", + "1369": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1370": " return {\"errors\": [\"unauthorized site\"]}", + "1371": " return {\"data\": dashboard.get_application_activity(site_id=siteId, **args)}", + "1372": "", + "1373": "", + "1374": "@app.route('/{siteId}/dashboard/page_metrics', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.238.85", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebee0055e63104bf0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebee0055e63104bf0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:46.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 608, + "method": "get_performance", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "605": " \"aggs\": {", + "606": " \"duration_avg\": {", + "607": " \"avg\": {", + "608": " \"field\": \"duration\"", + "609": " }", + "610": " }", + "611": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1398, + "method": "get_dashboard_performance", + "file": "/var/task/app.py", + "code": { + "1395": " args = dashboard.dashboard_args(params)", + "1396": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1397": " return {\"errors\": [\"unauthorized site\"]}", + "1398": " return {\"data\": dashboard.get_performance(site_id=siteId, **args)}", + "1399": "", + "1400": "", + "1401": "@app.route('/{siteId}/dashboard/performance/search', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.152.29", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebee0055f40f4f3d0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebee0055f40f4f3d0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:46.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1233, + "method": "get_missing_resources_trend", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "1230": " \"url_hostpath\": {", + "1231": " \"terms\": {", + "1232": " \"size\": 10,", + "1233": " \"field\": \"url_hostpath.raw\"", + "1234": " }", + "1235": " }", + "1236": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1481, + "method": "get_performance_sessions", + "file": "/var/task/app.py", + "code": { + "1478": " args = dashboard.dashboard_args(params)", + "1479": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1480": " return {\"errors\": [\"unauthorized site\"]}", + "1481": " return {\"data\": dashboard.get_missing_resources_trend(site_id=siteId, **args)}", + "1482": "", + "1483": "", + "1484": "@app.route('/{siteId}/dashboard/network', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.52.5", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebee0055e63104c00000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebee0055e63104c00000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:46.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 483, + "method": "get_slowest_images", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "480": " \"sort\": [", + "481": " {\"impact\": {\"order\": \"desc\"}}", + "482": " ],", + "483": " \"size\": 10", + "484": " }", + "485": " }", + "486": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1429, + "method": "get_dashboard_slowest_images", + "file": "/var/task/app.py", + "code": { + "1426": " args = dashboard.dashboard_args(params)", + "1427": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1428": " return {\"errors\": [\"unauthorized site\"]}", + "1429": " return {\"data\": dashboard.get_slowest_images(site_id=siteId, **args)}", + "1430": "", + "1431": "", + "1432": "@app.route('/{siteId}/dashboard/sessions_feedback', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.9.29", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebf70055f2604b970000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebf70055f2604b970000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:55.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 345, + "method": "__get_application_activity", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "342": " \"aggs\": {", + "343": " \"avg_img_load\": {", + "344": " \"avg\": {", + "345": " \"field\": \"duration\"", + "346": " }", + "347": " }", + "348": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 285, + "method": "get_application_activity", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "282": "def get_application_activity(site_id, startTimestamp=int(time.time()) - 24 * 60 * 60 * 1000,", + "283": " endTimestamp=int(time.time()) * 1000, platform=None, **args):", + "284": " with pg_client.PostgresClient() as cur:", + "285": " row = __get_application_activity(cur, site_id, startTimestamp, endTimestamp, platform)", + "286": " results = helper.variable_to_camel_case(row)", + "287": " print(\"new\")", + "288": " print(row)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1371, + "method": "get_dashboard_application_activity", + "file": "/var/task/app.py", + "code": { + "1368": " args = dashboard.dashboard_args(params)", + "1369": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1370": " return {\"errors\": [\"unauthorized site\"]}", + "1371": " return {\"data\": dashboard.get_application_activity(site_id=siteId, **args)}", + "1372": "", + "1373": "", + "1374": "@app.route('/{siteId}/dashboard/page_metrics', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.238.85", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ebf70055f1cb952e0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ebf70055f1cb952e0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:36:55.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1233, + "method": "get_missing_resources_trend", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "1230": " \"url_hostpath\": {", + "1231": " \"terms\": {", + "1232": " \"size\": 10,", + "1233": " \"field\": \"url_hostpath.raw\"", + "1234": " }", + "1235": " }", + "1236": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1481, + "method": "get_performance_sessions", + "file": "/var/task/app.py", + "code": { + "1478": " args = dashboard.dashboard_args(params)", + "1479": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1480": " return {\"errors\": [\"unauthorized site\"]}", + "1481": " return {\"data\": dashboard.get_missing_resources_trend(site_id=siteId, **args)}", + "1482": "", + "1483": "", + "1484": "@app.route('/{siteId}/dashboard/network', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.179.21", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ec480055f7dc02080000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ec480055f7dc02080000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:38:16.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 345, + "method": "__get_application_activity", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "342": " \"aggs\": {", + "343": " \"avg_img_load\": {", + "344": " \"avg\": {", + "345": " \"field\": \"duration\"", + "346": " }", + "347": " }", + "348": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 285, + "method": "get_application_activity", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "282": "def get_application_activity(site_id, startTimestamp=int(time.time()) - 24 * 60 * 60 * 1000,", + "283": " endTimestamp=int(time.time()) * 1000, platform=None, **args):", + "284": " with pg_client.PostgresClient() as cur:", + "285": " row = __get_application_activity(cur, site_id, startTimestamp, endTimestamp, platform)", + "286": " results = helper.variable_to_camel_case(row)", + "287": " print(\"new\")", + "288": " print(row)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1371, + "method": "get_dashboard_application_activity", + "file": "/var/task/app.py", + "code": { + "1368": " args = dashboard.dashboard_args(params)", + "1369": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1370": " return {\"errors\": [\"unauthorized site\"]}", + "1371": " return {\"data\": dashboard.get_application_activity(site_id=siteId, **args)}", + "1372": "", + "1373": "", + "1374": "@app.route('/{siteId}/dashboard/page_metrics', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.52.5", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ec480055f40f9e8b0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ec480055f40f9e8b0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:38:16.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 608, + "method": "get_performance", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "605": " \"aggs\": {", + "606": " \"duration_avg\": {", + "607": " \"avg\": {", + "608": " \"field\": \"duration\"", + "609": " }", + "610": " }", + "611": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1398, + "method": "get_dashboard_performance", + "file": "/var/task/app.py", + "code": { + "1395": " args = dashboard.dashboard_args(params)", + "1396": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1397": " return {\"errors\": [\"unauthorized site\"]}", + "1398": " return {\"data\": dashboard.get_performance(site_id=siteId, **args)}", + "1399": "", + "1400": "", + "1401": "@app.route('/{siteId}/dashboard/performance/search', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.179.21", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ec480056027165220000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ec480056027165220000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:38:16.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1233, + "method": "get_missing_resources_trend", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "1230": " \"url_hostpath\": {", + "1231": " \"terms\": {", + "1232": " \"size\": 10,", + "1233": " \"field\": \"url_hostpath.raw\"", + "1234": " }", + "1235": " }", + "1236": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1481, + "method": "get_performance_sessions", + "file": "/var/task/app.py", + "code": { + "1478": " args = dashboard.dashboard_args(params)", + "1479": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1480": " return {\"errors\": [\"unauthorized site\"]}", + "1481": " return {\"data\": dashboard.get_missing_resources_trend(site_id=siteId, **args)}", + "1482": "", + "1483": "", + "1484": "@app.route('/{siteId}/dashboard/network', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.9.29", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40ec480055ef78f0130000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40ec480055ef78f0130000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:38:16.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 483, + "method": "get_slowest_images", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "480": " \"sort\": [", + "481": " {\"impact\": {\"order\": \"desc\"}}", + "482": " ],", + "483": " \"size\": 10", + "484": " }", + "485": " }", + "486": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1429, + "method": "get_dashboard_slowest_images", + "file": "/var/task/app.py", + "code": { + "1426": " args = dashboard.dashboard_args(params)", + "1427": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1428": " return {\"errors\": [\"unauthorized site\"]}", + "1429": " return {\"data\": dashboard.get_slowest_images(site_id=siteId, **args)}", + "1430": "", + "1431": "", + "1432": "@app.route('/{siteId}/dashboard/sessions_feedback', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.198.37", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e40efe90055f6b0f1a70000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e40efe90055f6b0f1a70000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e20046253437b0019934804", + "received_at": "2020-02-10T05:53:45.000Z", + "exceptions": [ + { + "error_class": "Exception", + "message": "NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "stacktrace": [ + { + "column_number": null, + "in_project": false, + "line_number": 181, + "method": "_raise_error", + "file": "/var/task/elasticsearch/connection/base.py", + "code": { + "178": " logger.warning(\"Undecodable raw error response from server: %s\", err)", + "179": "", + "180": " raise HTTP_EXCEPTIONS.get(status_code, TransportError)(", + "181": " status_code, error_message, additional_info", + "182": " )", + "183": "", + "184": " def _get_default_user_agent(self):" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 156, + "method": "perform_request", + "file": "/var/task/elasticsearch/connection/http_requests.py", + "code": { + "153": " response.status_code,", + "154": " raw_data,", + "155": " )", + "156": " self._raise_error(response.status_code, raw_data)", + "157": "", + "158": " self.log_request_success(", + "159": " method," + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 350, + "method": "perform_request", + "file": "/var/task/elasticsearch/transport.py", + "code": { + "347": " body,", + "348": " headers=headers,", + "349": " ignore=ignore,", + "350": " timeout=timeout,", + "351": " )", + "352": "", + "353": " except TransportError as e:" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 819, + "method": "search", + "file": "/var/task/elasticsearch/client/__init__.py", + "code": { + "816": " if not index:", + "817": " index = \"_all\"", + "818": " return self.transport.perform_request(", + "819": " \"GET\", _make_path(index, \"_search\"), params=params, body=body", + "820": " )", + "821": "", + "822": " @query_params(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 84, + "method": "_wrapped", + "file": "/var/task/elasticsearch/client/utils.py", + "code": { + "81": " for p in (\"ignore\", \"request_timeout\"):", + "82": " if p in kwargs:", + "83": " params[p] = kwargs.pop(p)", + "84": " return func(*args, params=params, **kwargs)", + "85": "", + "86": " return _wrapped", + "87": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 58, + "method": "get_agg", + "file": "/var/task/chalicelib/utils/es_client.py", + "code": { + "54": " data = self.__es.search(", + "55": " index=index,", + "56": " scroll='2m',", + "57": " size=1000,", + "58": " body=query", + "59": " )", + "60": " return data[\"aggregations\"]" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 608, + "method": "get_performance", + "file": "/var/task/chalicelib/dashboard.py", + "code": { + "605": " \"aggs\": {", + "606": " \"duration_avg\": {", + "607": " \"avg\": {", + "608": " \"field\": \"duration\"", + "609": " }", + "610": " }", + "611": " }" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 1398, + "method": "get_dashboard_performance", + "file": "/var/task/app.py", + "code": { + "1395": " args = dashboard.dashboard_args(params)", + "1396": " if not sites.is_authorized(site_id=siteId, tenant_id=context[\"tenantId\"]):", + "1397": " return {\"errors\": [\"unauthorized site\"]}", + "1398": " return {\"data\": dashboard.get_performance(site_id=siteId, **args)}", + "1399": "", + "1400": "", + "1401": "@app.route('/{siteId}/dashboard/performance/search', methods=['GET'])" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 158, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "155": " # args['context'] = authorizer_context", + "156": "", + "157": " try:", + "158": " r = view_func(**args)", + "159": " pg_client.close()", + "160": " except Exception as e:", + "161": " pg_client.close()" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 168, + "method": "_view_func", + "file": "/var/task/app.py", + "code": { + "165": " scope.set_tag('asayer_session_id', app.current_request.headers.get('vnd.asayer.io.sid'))", + "166": " scope.set_extra(\"context\", args['context'])", + "167": " sentry_sdk.capture_exception(e)", + "168": " raise e", + "169": "", + "170": " return r", + "171": "" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": null, + "in_project": false, + "line_number": 731, + "method": "_get_view_function_response", + "file": "/var/task/chalice/app.py", + "code": { + "728": "", + "729": " def _get_view_function_response(self, view_function, function_args):", + "730": " try:", + "731": " response = view_function(**function_args)", + "732": " if not isinstance(response, Response):", + "733": " response = Response(body=response)", + "734": " self._validate_response(response)" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "special_info": { + "asayerSessionId": "525314475541266774" + }, + "environment": {}, + "session": {}, + "extraData": {} + }, + "customDiagnostics": {}, + "request": {}, + "app": { + "releaseStage": "production", + "version": null + }, + "device": { + "hostname": "169.254.9.29", + "runtimeVersions": { + "python": "3.6.10" + } + }, + "user": {}, + "breadcrumbs": [], + "context": "/var/task/elasticsearch/connection/base.py:181", + "severity": "warning", + "unhandled": false + }, + { + "id": "5e411c8b0055f891aaa90000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e411c8b0055f891aaa90000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T09:04:11.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e411cc00055e23d4cf60000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e411cc00055e23d4cf60000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T09:05:04.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T09:04:11.258Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T09:04:12.373Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/filters" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T09:04:13.599Z", + "metaData": { + "targetText": "(...)", + "targetSelector": "DIV.ui.icon.input.autoComplete_searchInput_2Jy11OB > INPUT:nth-child(1)" + } + }, + { + "type": "log", + "name": "Console output", + "timestamp": "2020-02-10T09:04:14.508Z", + "metaData": { + "severity": "log", + "[0]": "[object Object]" + } + }, + { + "type": "log", + "name": "Console output", + "timestamp": "2020-02-10T09:04:14.684Z", + "metaData": { + "severity": "log", + "[0]": "[object Object]" + } + }, + { + "type": "log", + "name": "Console output", + "timestamp": "2020-02-10T09:04:14.817Z", + "metaData": { + "severity": "log", + "[0]": "[object Object]" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T09:04:17.302Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/events/search?type=CLICK&q=log" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T09:04:18.951Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T09:04:20.066Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/0/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T09:04:20.353Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T09:04:28.368Z", + "metaData": { + "targetText": "Login", + "targetSelector": "DIV.filterItem_filterItem_198AqGF:nth-child(3)" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T09:04:30.658Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/0/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T09:04:30.949Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T09:04:33.684Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T09:04:36.655Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T09:05:03.190Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T09:05:04.485Z", + "metaData": { + "targetText": "OS", + "targetSelector": "DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412dc60055ed91d47b0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412dc60055ed91d47b0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:17:42.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(4) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412e330056040fdf1a0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412e330056040fdf1a0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:19:31.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(4) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:17:42.601Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:17:43.512Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/filters" + } + }, + { + "type": "log", + "name": "Console output", + "timestamp": "2020-02-10T10:17:44.380Z", + "metaData": { + "severity": "log", + "[0]": "[object Object]" + } + }, + { + "type": "log", + "name": "Console output", + "timestamp": "2020-02-10T10:17:44.791Z", + "metaData": { + "severity": "log", + "[0]": "[object Object]" + } + }, + { + "type": "log", + "name": "Console output", + "timestamp": "2020-02-10T10:17:44.966Z", + "metaData": { + "severity": "log", + "[0]": "[object Object]" + } + }, + { + "type": "log", + "name": "Console output", + "timestamp": "2020-02-10T10:17:45.281Z", + "metaData": { + "severity": "log", + "[0]": "[object Object]" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:17:47.278Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/events/search?type=LOCATION&q=runs" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:17:47.812Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:17:48.654Z", + "metaData": { + "targetText": "/runs", + "targetSelector": "DIV.filterItem_filterItem_198AqGF:nth-child(2)" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:17:50.958Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/0/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:17:51.290Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:17:56.351Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:18:06.784Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:18:36.785Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:19:07.276Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:19:22.671Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:19:28.025Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:19:31.408Z", + "metaData": { + "targetText": "Referrer", + "targetSelector": "DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(4) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412ed00055f6e66b350000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412ed00055f6e66b350000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:22:08.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:20:43.394Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:20:49.493Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:21:07.122Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:21:36.741Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:21:46.273Z", + "metaData": { + "targetText": "(...)", + "targetSelector": "BUTTON.eventEditor_button_3jCuBfU:nth-child(2) > SPAN.icon_wrapper_2jeksFN.fill-gray-medium > svg" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:21:48.430Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/0/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:21:48.730Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:21:54.910Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:21:59.604Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:03.994Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:22:06.686Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.074Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.964Z", + "metaData": { + "targetText": "Console Errors", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412ed300560576e5e50000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412ed300560576e5e50000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:22:11.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:20:43.394Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:20:49.493Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:21:07.122Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:21:36.741Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:21:46.273Z", + "metaData": { + "targetText": "(...)", + "targetSelector": "BUTTON.eventEditor_button_3jCuBfU:nth-child(2) > SPAN.icon_wrapper_2jeksFN.fill-gray-medium > svg" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:21:48.430Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/0/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:21:48.730Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:21:54.910Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:21:59.604Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:03.994Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:22:06.686Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.074Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.964Z", + "metaData": { + "targetText": "Console Errors", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:08.006Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:09.371Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:11.796Z", + "metaData": { + "targetText": "OS", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412ed60055e9547d230000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412ed60055e9547d230000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:22:14.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r SPAN.icon_wrapper_2jeksFN.fill-gray-medium > svg" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:21:48.430Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/0/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:21:48.730Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:21:54.910Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:21:59.604Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:03.994Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:22:06.686Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.074Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.964Z", + "metaData": { + "targetText": "Console Errors", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:08.006Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:09.371Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:11.796Z", + "metaData": { + "targetText": "OS", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:11.840Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:12.624Z", + "metaData": { + "targetText": "LIVE (2)Past 7 DaysTodayYesterdayPast 7 DaysPast 30 DaysThis MonthPrevious MonthThis YearCustom RangeIssuesMissing ResourceRage ClickSl(...)", + "targetSelector": "DIV.container-70" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.123Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.906Z", + "metaData": { + "targetText": "Device", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412ed70055e8a5044c0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412ed70055e8a5044c0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:22:15.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r SPAN.icon_wrapper_2jeksFN.fill-gray-medium > svg" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:21:48.430Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/0/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:21:48.730Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:21:54.910Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:21:59.604Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:03.994Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:22:06.686Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.074Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.964Z", + "metaData": { + "targetText": "Console Errors", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:08.006Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:09.371Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:11.796Z", + "metaData": { + "targetText": "OS", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:11.840Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:12.624Z", + "metaData": { + "targetText": "LIVE (2)Past 7 DaysTodayYesterdayPast 7 DaysPast 30 DaysThis MonthPrevious MonthThis YearCustom RangeIssuesMissing ResourceRage ClickSl(...)", + "targetSelector": "DIV.container-70" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.123Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.906Z", + "metaData": { + "targetText": "Device", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:13.939Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:14.796Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:15.482Z", + "metaData": { + "targetText": "Browser", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5 > DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412ed90055ebb627250000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412ed90055ebb627250000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:22:17.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:03.994Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:22:06.686Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.074Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.964Z", + "metaData": { + "targetText": "Console Errors", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:08.006Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:09.371Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:11.796Z", + "metaData": { + "targetText": "OS", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:11.840Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:12.624Z", + "metaData": { + "targetText": "LIVE (2)Past 7 DaysTodayYesterdayPast 7 DaysPast 30 DaysThis MonthPrevious MonthThis YearCustom RangeIssuesMissing ResourceRage ClickSl(...)", + "targetSelector": "DIV.container-70" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.123Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.906Z", + "metaData": { + "targetText": "Device", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:13.939Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:14.796Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:15.482Z", + "metaData": { + "targetText": "Browser", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5 > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:15.533Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:16.308Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:17.634Z", + "metaData": { + "targetText": "Country", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412edb0055ea9350dd0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412edb0055ea9350dd0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:22:19.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:07.964Z", + "metaData": { + "targetText": "Console Errors", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:08.006Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:09.371Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:11.796Z", + "metaData": { + "targetText": "OS", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:11.840Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:12.624Z", + "metaData": { + "targetText": "LIVE (2)Past 7 DaysTodayYesterdayPast 7 DaysPast 30 DaysThis MonthPrevious MonthThis YearCustom RangeIssuesMissing ResourceRage ClickSl(...)", + "targetSelector": "DIV.container-70" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.123Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.906Z", + "metaData": { + "targetText": "Device", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:13.939Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:14.796Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:15.482Z", + "metaData": { + "targetText": "Browser", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5 > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:15.533Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:16.308Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:17.634Z", + "metaData": { + "targetText": "Country", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:17.670Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:18.450Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:19.161Z", + "metaData": { + "targetText": "Duration", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5 > DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412ee10055ec653dbf0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412ee10055ec653dbf0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:22:25.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:08.006Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:09.371Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:11.796Z", + "metaData": { + "targetText": "OS", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:11.840Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:12.624Z", + "metaData": { + "targetText": "LIVE (2)Past 7 DaysTodayYesterdayPast 7 DaysPast 30 DaysThis MonthPrevious MonthThis YearCustom RangeIssuesMissing ResourceRage ClickSl(...)", + "targetSelector": "DIV.container-70" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.123Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.906Z", + "metaData": { + "targetText": "Device", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:13.939Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:14.796Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:15.482Z", + "metaData": { + "targetText": "Browser", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5 > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:15.533Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:16.308Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:17.634Z", + "metaData": { + "targetText": "Country", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:17.670Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:18.450Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:19.161Z", + "metaData": { + "targetText": "Duration", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5 > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:19.197Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:22.056Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:25.556Z", + "metaData": { + "targetText": "email", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(3) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e412eeb0055f714b5290000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e412eeb0055f714b5290000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:22:35.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:13.906Z", + "metaData": { + "targetText": "Device", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:13.939Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:14.796Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:15.482Z", + "metaData": { + "targetText": "Browser", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5 > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:15.533Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:16.308Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:17.634Z", + "metaData": { + "targetText": "Country", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:17.670Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:18.450Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:19.161Z", + "metaData": { + "targetText": "Duration", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5 > DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:19.197Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:22.056Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:25.556Z", + "metaData": { + "targetText": "email", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(3) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(3) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:22:25.596Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Cannot read property '0' of undefined", + "severity": "error" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:27.908Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:30.132Z", + "metaData": { + "targetText": "ADD STEP", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV:nth-child(1) > BUTTON.ui.button.search-bottom-button.button_plain_2pVBxaE.button_button_2rl5k6p" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:22:35.217Z", + "metaData": { + "targetText": "Console Errors", + "targetSelector": "DIV.bugFinder_bottom_3SBJs2c > DIV.customFilters_wrapper_wkzfriO:nth-child(1) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(1) > DIV.filterItem_filterItem_198AqGF > SPAN.filterItem_label_26N8IUB:nth-child(2)" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e41330d0055ed96770b0000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e41330d0055ed96770b0000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:40:13.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV.sessionItem_playLink_3KWWOLv:nth-child(2) > A.link_link_3wNogtO > SPAN.icon_wrapper_2jeksFN.fill-teal > svg" + } + }, + { + "type": "navigation", + "name": "History pushState", + "timestamp": "2020-02-10T10:39:41.323Z", + "metaData": { + "title": null, + "state": { + "key": "z188uo" + }, + "prevState": { + "key": "x8h7ck" + }, + "to": "/0/live/session/525627733332840073", + "from": "/0/sessions" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:39:41.867Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/integrations/slack/channels" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:39:41.868Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/integrations/jiracloud" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:39:47.121Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:39:48.083Z", + "metaData": { + "targetText": "Sessions", + "targetSelector": "A.playerBlockHeader_backLink_3-eqyfs.link_link_3wNogtO" + } + }, + { + "type": "navigation", + "name": "History pushState", + "timestamp": "2020-02-10T10:39:48.083Z", + "metaData": { + "title": null, + "state": { + "key": "068d67" + }, + "prevState": { + "key": "z188uo" + }, + "to": "/0/sessions", + "from": "/0/live/session/525627733332840073" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:39:48.724Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions2/favorite" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:39:48.729Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/integration/sources" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:39:48.731Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/integration/variables" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:39:48.731Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/0/sessions/live" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:39:48.733Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:39:48.927Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/0/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:39:49.239Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:39:53.846Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:39:55.619Z", + "metaData": { + "targetText": "app.asayer.ioapp.asayer.io104.155.66.82www.mynexity.frnexity.frmonbanquet.frSessionsTestsRunsInsightsGood Job!You have discovered 100% (...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:39:58.665Z", + "metaData": { + "targetText": "Load more...", + "targetSelector": "BUTTON.ui.button.button_button_2rl5k6p.button_outline_2i2l28b" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:40:02.865Z", + "metaData": { + "targetText": "Find sessions with Input", + "targetSelector": "DIV.randomPlaceholder_placeholder_3CSat_L" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:40:08.654Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:40:12.598Z", + "metaData": { + "targetText": "Country", + "targetSelector": "DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(4) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(3) > DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/0/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e4137080055f537dfa40000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e4137080055f537dfa40000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e4137081b4d7f0019be2d46", + "received_at": "2020-02-10T10:57:12.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Expected [K, V] tuple: Try Asayer", + "stacktrace": [ + { + "column_number": 19696, + "in_project": null, + "line_number": 6, + "method": "Pe", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "))},i}function De(e,t){return e===t?e:x(e)?t:e.constructor(t)}function Pe(e){if(e!==Object(e))throw new TypeError(\"Expected [K, V] tuple: \"+e)}function Ae(e){return v(e)?b:m(e)?w:_}function Ne(e){retu" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 13469, + "in_project": null, + "line_number": 6, + "method": "", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "eq()},t.prototype.__iterate=function(e,t){var n=this;return this._iter.__iterate((function(t){if(t){Pe(t);var r=h(t);return e(r?t.get(1):t[1],r?t.get(0):t[0],n)}}),t)},t.prototype.__iterator=function(" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 35265, + "in_project": null, + "line_number": 6, + "method": "t.__iterate", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": ")}))},t.prototype.__iterate=function(e,t){for(var n,r=t?this.size:0,i=Kt(this,t);(n=i())!==Gt&&!1!==e(n,t?--r:r++,this););return r},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 13440, + "in_project": null, + "line_number": 6, + "method": "t.__iterate", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "ction(){return this._iter.toSeq()},t.prototype.__iterate=function(e,t){var n=this;return this._iter.__iterate((function(t){if(t){Pe(t);var r=h(t);return e(r?t.get(1):t[1],r?t.get(0):t[0],n)}}),t)},t.p" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 51338, + "in_project": null, + "line_number": 6, + "method": "t.forEach", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "n(e,t,n){var r=this.findEntry(e,t);return r?r[1]:n},forEach:function(e,t){return Be(this.size),this.__iterate(t?e.bind(t):e)},join:function(e){Be(this.size),e=void 0!==e?\"\"+e:\",\";var t=\"\",n=!0;return " + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 24768, + "in_project": null, + "line_number": 6, + "method": "", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "tion t(t){return null==t?Pt():X(t)&&!S(t)?t:Pt().withMutations((function(n){var r=e(t);Be(r.size),r.forEach((function(e,t){return n.set(t,e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 24340, + "in_project": null, + "line_number": 6, + "method": "t.mt [as withMutations]", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "];return $e(this,e,Pt(),(function(e){return lt(e,t)}))}function mt(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this}function yt(){return this.__ownerID?this:th" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 24717, + "in_project": null, + "line_number": 6, + "method": "t [as constructor]", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "ge.prototype.cacheResult=Ie;var wt=function(e){function t(t){return null==t?Pt():X(t)&&!S(t)?t:Pt().withMutations((function(n){var r=e(t);Be(r.size),r.forEach((function(e,t){return n.set(t,e)}))}))}re" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 22884, + "in_project": null, + "line_number": 6, + "method": "ot", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "on(e){return e===r?t:n(e,t,i)}))}:function(t,n){e.set(n,t)},o=0;o0;)t[n]=arguments[n+1];retur" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 22374, + "in_project": null, + "line_number": 6, + "method": "t.rt", + "file": "https://app.asayer.io/1.app-531e376.js", + "code": { + "6": "){return $e(this,e,t,n)}function rt(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return ot(this,e)}function it(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];if(\"function" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + } + ] + } + ], + "threads": [], + "metaData": { + "device": { + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" + } + }, + "customDiagnostics": {}, + "request": { + "url": "https://app.asayer.io/72/sessions", + "clientIp": "185.64.149.99" + }, + "app": { + "releaseStage": "production" + }, + "device": { + "locale": "fr-FR", + "time": "2020-02-10T10:57:12.038Z", + "osName": "Windows 10.0", + "browserName": "Chrome", + "browserVersion": "79.0.3945" + }, + "user": { + "id": "185.64.149.99" + }, + "breadcrumbs": [ + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:00.406Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/events/search?q=try%20as" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:03.720Z", + "metaData": { + "targetText": "(...)", + "targetSelector": "DIV.sessionItem_sessionItem_1a0toO6:nth-child(2) > DIV.sessionItem_playLink_3KWWOLv:nth-child(2) > A.link_link_3wNogtO > SPAN.icon_wrapper_2jeksFN.fill-teal > svg" + } + }, + { + "type": "navigation", + "name": "History pushState", + "timestamp": "2020-02-10T10:57:03.732Z", + "metaData": { + "title": null, + "state": { + "key": "zw6xmd" + }, + "prevState": { + "key": "olgtps" + }, + "to": "/72/session/521925111024389735", + "from": "/72/sessions" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:04.022Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/integrations/slack/channels" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:04.145Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/sessions2/521925111024389735" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:57:04.302Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:04.415Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/integrations/jiracloud" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:04.449Z", + "metaData": { + "status": 200, + "request": "GET https://asayer-sessions-mobs.s3.amazonaws.com/72/521925111024389735.mob?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA6RAO3SOP7M3VQ76X%2F20200210%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20200210T105704Z&X-Amz-Expires=100000&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEFoaDGV1LWNlbnRyYWwtMSJHMEUCIEVe1WqkCTz4KIsdtiy2gqovOU%2B0ob%2FnonddeM3rR%2BQsAiEA17YmEYbn1LyP3pTgvVkeOIf8rvzg%2FuDsmU6xeRhZ0YMqyQEIExAAGgw5OTg2MTEwNjM3MTEiDOKUXz48dwdOjJOn0SqmAdsMmXq3Iiwo6JQGrFVkAIbIEKNnmrx9LnqEKrUWNzOK%2FdIkpzcSU3%2BOmZv2bBPVWMOkSlE61niH7JDPknexq03YMHrX9c1rTNvmd0amnORfIHomk%2FnEm2mddbb0YTG%2FmEAXTRw4ihLki9G06Skhenx%2BVAW4RlJtsIjgxiCMks55V06VTuha%2B%2BF%2FirITPIC4MnxbmNtHKtlAmWjGvDeEwq2rxamMkfQw6tqE8gU64AH4kxvtNVO%2FOQIHhEvyhAvoh82pmOjx0L0HeH5%2BeN1YZKO5%2FbCbIBTcwr5%2B0X%2BugKTAet0ya9O%2F8t5y%2BKb5dfriLV7AEwdmyFztdzNiv95bY9UkwEtrTUyMprX%2BPojz3QAFxnrKR%2Bzpd7%2FBDlWI2cdoEHK9yukmyNS0Ln7NOilOhRFwO1edwVdbkM3vmARUu4TQBVSLn9wdhBm5Fc%2FUoOTYrZHstQ0w6fp5a4CMaf2OEx8oxKoaAthtEvSnI0ReTqWY0iQMrOUBHOAAj9PTva%2B4Iv95PaNklDkfWCEMtWleNg%3D%3D&X-Amz-Signature=5b97d72871d43a4a43bf3732149a4b17ced2f324db17c27d8dbea5a9dae0f2ec" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:07.216Z", + "metaData": { + "targetText": "Sessions", + "targetSelector": "A.playerBlockHeader_backLink_3-eqyfs.link_link_3wNogtO > DIV:nth-child(2)" + } + }, + { + "type": "navigation", + "name": "History pushState", + "timestamp": "2020-02-10T10:57:07.216Z", + "metaData": { + "title": null, + "state": { + "key": "iq3oi2" + }, + "prevState": { + "key": "zw6xmd" + }, + "to": "/72/sessions", + "from": "/72/session/521925111024389735" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:07.561Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/sessions2/favorite" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:07.562Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/integration/sources" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:07.563Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/integration/variables" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:57:07.710Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:07.862Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/72/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:57:08.185Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:08.791Z", + "metaData": { + "targetText": "Find sessions with Click", + "targetSelector": "DIV.randomPlaceholder_placeholder_3CSat_L" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:10.177Z", + "metaData": { + "targetText": "(...)", + "targetSelector": "DIV.ui.fluid.left.icon.input.eventFilter_searchField_2MpErPW > INPUT:nth-child(1)" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:11.279Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/events/search?q=try%20asa" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:11.922Z", + "metaData": { + "targetText": "Try Asayer", + "targetSelector": "DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/72/sessions", + "severity": "error", + "unhandled": true + }, + { + "id": "5e41370e00560395da120000", + "url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227/events/5e41370e00560395da120000", + "project_url": "https://api.bugsnag.com/projects/5d00452ccbe86e001631f227", + "is_full_report": true, + "error_id": "5e399adc2a024a001971c551", + "received_at": "2020-02-10T10:57:18.000Z", + "exceptions": [ + { + "error_class": "TypeError", + "message": "Cannot read property '0' of undefined", + "stacktrace": [ + { + "column_number": 307952, + "in_project": null, + "line_number": 1, + "method": "t.n.onFilterClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "applyFilter,300),n.onFilterClick=function(e,t){n.addFilter(e),n.props.setFilterOption(e.key,[e.value[0]]),(t||e.hasNoValue)&&n.applyFilter()},n.addFilter=function(e){var t=n.props,r=t.index,o=t.filter" + }, + "macho_uuid": null, + "source_control_link": null, + "source_control_name": "" + }, + { + "column_number": 309878, + "in_project": null, + "line_number": 1, + "method": "onClick", + "file": "https://app.asayer.io/app-c093b08.js", + "code": { + "1": "r n=this;return a.a.createElement(b.a,{label:t.label||t.key,icon:t.icon,onClick:function(){return n.onFilterClick(t)}})}},{key:\"renderList\",value:function(e,t){for(var n=[],r=0;r DIV:nth-child(2)" + } + }, + { + "type": "navigation", + "name": "History pushState", + "timestamp": "2020-02-10T10:57:07.216Z", + "metaData": { + "title": null, + "state": { + "key": "iq3oi2" + }, + "prevState": { + "key": "zw6xmd" + }, + "to": "/72/sessions", + "from": "/72/session/521925111024389735" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:07.561Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/sessions2/favorite" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:07.562Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/integration/sources" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:07.563Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/integration/variables" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:57:07.710Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:07.862Z", + "metaData": { + "status": 200, + "request": "POST https://parrot.asayer.io/72/sessions/search2" + } + }, + { + "type": "request", + "name": "XMLHttpRequest succeeded", + "timestamp": "2020-02-10T10:57:08.185Z", + "metaData": { + "status": 200, + "request": "POST https://api.amplitude.com" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:08.791Z", + "metaData": { + "targetText": "Find sessions with Click", + "targetSelector": "DIV.randomPlaceholder_placeholder_3CSat_L" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:10.177Z", + "metaData": { + "targetText": "(...)", + "targetSelector": "DIV.ui.fluid.left.icon.input.eventFilter_searchField_2MpErPW > INPUT:nth-child(1)" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:11.279Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/events/search?q=try%20asa" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:11.922Z", + "metaData": { + "targetText": "Try Asayer", + "targetSelector": "DIV.filterItem_filterItem_198AqGF" + } + }, + { + "type": "error", + "name": "TypeError", + "timestamp": "2020-02-10T10:57:12.038Z", + "metaData": { + "errorClass": "TypeError", + "errorMessage": "Expected [K, V] tuple: Try Asayer", + "severity": "error" + } + }, + { + "type": "request", + "name": "fetch() succeeded", + "timestamp": "2020-02-10T10:57:12.161Z", + "metaData": { + "status": 200, + "request": "GET https://parrot.asayer.io/72/filters" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:14.201Z", + "metaData": { + "targetText": "asayer.ioasayer.ioSessionsInsightsFew more steps and you’re done!You have discovered 83% of Asayer features!Discover more of AsayerInst(...)", + "targetSelector": "DIV#app" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:15.103Z", + "metaData": { + "targetText": "(...)", + "targetSelector": "DIV.filterSelectionButton_wrapper_3asjaf8" + } + }, + { + "type": "user", + "name": "UI click", + "timestamp": "2020-02-10T10:57:18.460Z", + "metaData": { + "targetText": "Clicked", + "targetSelector": "DIV.customFilters_wrapper_wkzfriO:nth-child(2) > DIV.filterModal_modal_CKdnaaM:nth-child(2) > DIV > DIV.filterModal_filterListStatic_3QeEoBa:nth-child(2) > DIV.filterModal_filterGroup_1dsFuXp.mr-6.mb-6:nth-child(2) > DIV.filterModal_list_3AV7i2N:nth-child(2) > DIV.mr-5:nth-child(2) > DIV.filterItem_filterItem_198AqGF" + } + } + ], + "context": "/72/sessions", + "severity": "error", + "unhandled": true + } +] \ No newline at end of file diff --git a/backend/services/integrations/integration/client.go b/backend/services/integrations/integration/client.go new file mode 100644 index 000000000..3786f4324 --- /dev/null +++ b/backend/services/integrations/integration/client.go @@ -0,0 +1,153 @@ +package integration + +import ( + "sync" + "fmt" + "encoding/json" + + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/db/postgres" + "openreplay/backend/pkg/utime" +) + +const MAX_ATTEMPTS_IN_A_ROW = 4 +const MAX_ATTEMPTS = 40 +const ATTEMPTS_INTERVAL = 3 * 60 * 60 * 1000 + +type requester interface { + Request(*client) error +} + +type requestData struct { + LastMessageTimestamp uint64 // `json:"lastMessageTimestamp, string"` + LastMessageId string + UnsuccessfullAttemptsCount int + LastAttemptTimestamp int64 +} + +type client struct { + requestData + requester + integration *postgres.Integration + // TODO: timeout ? + mux sync.Mutex + updateChan chan<- postgres.Integration + evChan chan<- *SessionErrorEvent + errChan chan<- error +} + +type SessionErrorEvent struct { + SessionID uint64 + Token string + *messages.RawErrorEvent +} + +type ClientMap map[ string ]*client + +func NewClient(i *postgres.Integration, updateChan chan<- postgres.Integration, evChan chan<- *SessionErrorEvent, errChan chan<- error) (*client, error) { + c := new(client) + if err := c.Update(i); err != nil { + return nil, err + } + + if err := json.Unmarshal(i.RequestData, &c.requestData); err != nil { + return nil, err + } + c.evChan = evChan + c.errChan = errChan + c.updateChan = updateChan + // TODO: RequestData manager + if c.requestData.LastMessageTimestamp == 0 { + // ? + c.requestData.LastMessageTimestamp = uint64(utime.CurrentTimestamp() - 24*60*60*1000) + } + + return c, nil +} + + +// from outside +func (c* client) Update(i *postgres.Integration) error { + c.mux.Lock() + defer c.mux.Unlock() + var r requester + switch i.Provider { + case "bugsnag": + r = new(bugsnag) + case "cloudwatch": + r = new(cloudwatch) + case "datadog": + r = new(datadog) + case "elasticsearch": + r = new(elasticsearch) + case "newrelic": + r = new(newrelic) + case "rollbar": + r = new(rollbar) + case "sentry": + r = new(sentry) + case "stackdriver": + r = new(stackdriver) + case "sumologic": + r = new(sumologic) + } + if err := json.Unmarshal(i.Options, r); err != nil { + return err + } + c.integration = i + c.requester = r + return nil +} + +// package scope +func (c *client) setLastMessageTimestamp(timestamp uint64) { + if timestamp > c.requestData.LastMessageTimestamp { + c.requestData.LastMessageTimestamp = timestamp + } +} +func (c *client) getLastMessageTimestamp() uint64 { + return c.requestData.LastMessageTimestamp +} +func (c *client) setLastMessageId(timestamp uint64, id string) { + //if timestamp >= c.requestData.LastMessageTimestamp { + c.requestData.LastMessageId = id + c.requestData.LastMessageTimestamp = timestamp + //} +} +func (c *client) getLastMessageId() string { + return c.requestData.LastMessageId +} + +func (c *client) handleError(err error) { + c.errChan <- fmt.Errorf("%v | Integration: %v", err, *c.integration) +} + +// Thread-safe +func (c *client) Request() { + c.mux.Lock() + defer c.mux.Unlock() + if c.requestData.UnsuccessfullAttemptsCount >= MAX_ATTEMPTS || + (c.requestData.UnsuccessfullAttemptsCount >= MAX_ATTEMPTS_IN_A_ROW && + utime.CurrentTimestamp() - c.requestData.LastAttemptTimestamp < ATTEMPTS_INTERVAL) { + return + } + + c.requestData.LastAttemptTimestamp = utime.CurrentTimestamp() + err := c.requester.Request(c) + if err != nil { + c.handleError(err) + c.requestData.UnsuccessfullAttemptsCount++; + } else { + c.requestData.UnsuccessfullAttemptsCount = 0 + } + rd, err := json.Marshal(c.requestData) + if err != nil { + c.handleError(err) + } + // RequestData is a byte array (pointer-like type), but it's replacement + // won't affect the previous value sent by channel + c.integration.RequestData = rd + c.updateChan <- *c.integration +} + + diff --git a/backend/services/integrations/integration/cloudwatch.go b/backend/services/integrations/integration/cloudwatch.go new file mode 100644 index 000000000..fa2210138 --- /dev/null +++ b/backend/services/integrations/integration/cloudwatch.go @@ -0,0 +1,89 @@ +package integration + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/cloudwatchlogs" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + + "strings" + "regexp" + "openreplay/backend/pkg/messages" +) + + +var reIsException = regexp.MustCompile(`(?i)exception|error`) + +type cloudwatch struct { + AwsAccessKeyId string // `json:"aws_access_key_id"` + AwsSecretAccessKey string // `json:"aws_secret_access_key"` + LogGroupName string // `json:"log_group_name"` + Region string // `json:"region"` +} + + +func (cw *cloudwatch) Request(c *client) error { + startTs := int64(c.getLastMessageTimestamp() + 1) // From next millisecond + //endTs := utils.CurrentTimestamp() + sess, err := session.NewSession(aws.NewConfig(). + WithRegion(cw.Region). + WithCredentials( + credentials.NewStaticCredentials(cw.AwsAccessKeyId, cw.AwsSecretAccessKey, ""), + ), + ) + if err != nil { + return err + } + svc := cloudwatchlogs.New(sess) + + + filterOptions := new(cloudwatchlogs.FilterLogEventsInput). + SetStartTime(startTs). // Inclusively both startTime and endTime + // SetEndTime(endTs). // Default nil? + // SetLimit(10000). // Default 10000 + SetLogGroupName(cw.LogGroupName). + SetFilterPattern("openReplaySessionToken") + //SetFilterPattern("asayer_session_id") + + for { + output, err := svc.FilterLogEvents(filterOptions) + if err != nil { + return err + } + for _, e := range output.Events { + if e.Message == nil || e.Timestamp == nil { + continue + } + if !reIsException.MatchString(*e.Message) { // too weak condition ? + continue + } + token, err := GetToken(*e.Message) + if err != nil { + c.errChan <- err + continue + } + name := "" + if e.LogStreamName != nil { + name = *e.LogStreamName + } + timestamp := uint64(*e.Timestamp) + c.setLastMessageTimestamp(timestamp) + c.evChan <- &SessionErrorEvent{ + //SessionID: sessionID, + Token: token, + RawErrorEvent: &messages.RawErrorEvent{ + Source: "cloudwatch", + Timestamp: timestamp, // e.IngestionTime ?? + Name: name, + Payload: strings.ReplaceAll(e.String(), "\n", ""), + }, + } + } + + if output.NextToken == nil { + break; + } + filterOptions.NextToken = output.NextToken + } + return nil +} \ No newline at end of file diff --git a/backend/services/integrations/integration/datadog.go b/backend/services/integrations/integration/datadog.go new file mode 100644 index 000000000..eb7b5daee --- /dev/null +++ b/backend/services/integrations/integration/datadog.go @@ -0,0 +1,132 @@ +package integration + +import ( + "fmt" + "net/http" + "encoding/json" + "bytes" + "time" + "io" + "io/ioutil" + + "openreplay/backend/pkg/utime" + "openreplay/backend/pkg/messages" +) + +/* + We collect Logs. Datadog also has Events + +*/ + +type datadog struct { + ApplicationKey string //`json:"application_key"` + ApiKey string //`json:"api_key"` +} + +type datadogResponce struct { + Logs []json.RawMessage + NextLogId *string + Status string +} + +type datadogLog struct { + Content struct { + Timestamp string + Message string + Attributes struct { + Error struct { // Not sure about this + Message string + } + } + } +} + +func (d *datadog) makeRequest(nextLogId *string, fromTs uint64, toTs uint64) (*http.Request, error) { + requestURL := fmt.Sprintf( + "https://api.datadoghq.com/api/v1/logs-queries/list?api_key=%v&application_key=%v", + d.ApiKey, + d.ApplicationKey, + ) + startAt := "null" + if nextLogId != nil && *nextLogId != "" { + startAt = *nextLogId + } + // Query: status:error/info/warning? + // openReplaySessionToken instead of asayer_session_id + jsonBody := fmt.Sprintf(`{ + "limit": 1000, + "query": "status:error openReplaySessionToken", + "sort": "asc", + "time": { + "from": %v, + "to": %v + }, + "startAt": %v + }`, fromTs, toTs, startAt) // from/to: both inclusively, both required; limit: default=10, max 1000 + req, err := http.NewRequest("POST", requestURL, bytes.NewBuffer([]byte(jsonBody))) + if err != nil { + return nil, err + } + req.Header.Add("Content-Type", "application/json") + return req, nil +} + +func (d *datadog) Request(c *client) error { + fromTs := c.getLastMessageTimestamp() + 1 // From next millisecond + toTs := uint64(utime.CurrentTimestamp()) + var nextLogId *string + for { + req, err := d.makeRequest(nextLogId, fromTs, toTs) + if err != nil { + return err + } + resp, err := http.DefaultClient.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode >= 400 { + io.Copy(ioutil.Discard, resp.Body) // Read the body to free socket + return fmt.Errorf("Datadog: server respond with the code %v", resp.StatusCode) + } + var ddResp datadogResponce + if err = json.NewDecoder(resp.Body).Decode(&ddResp); err != nil { + return err + } + // if ddResp.Status != "done"/ "ok" + for _, jsonLog := range ddResp.Logs { + var ddLog datadogLog + err = json.Unmarshal(jsonLog, &ddLog) + if err != nil { + c.errChan <- err + continue + } + token, err := GetToken(ddLog.Content.Message) // sure here? + if err != nil { + c.errChan <- err + continue + } + parsedTime, err := time.Parse(time.RFC3339, ddLog.Content.Timestamp) + if err != nil { + c.errChan <- err + continue + } + timestamp := uint64(utime.ToMilliseconds(parsedTime)) + c.setLastMessageTimestamp(timestamp) + c.evChan <- &SessionErrorEvent{ + //SessionID: sessionID, + Token: token, + RawErrorEvent: &messages.RawErrorEvent{ + Source: "datadog", + Timestamp: timestamp, + Name: ddLog.Content.Attributes.Error.Message, + Payload: string(jsonLog), + }, + } + } + nextLogId = ddResp.NextLogId // ensure + if nextLogId == nil { + return nil + } + } +} \ No newline at end of file diff --git a/backend/services/integrations/integration/datadog.json b/backend/services/integrations/integration/datadog.json new file mode 100644 index 000000000..3e56ef79a --- /dev/null +++ b/backend/services/integrations/integration/datadog.json @@ -0,0 +1,5872 @@ +{ + "logs": [ + { + "id": "AQAAAXBULBWLl8WpFQAAAABBWEJVTEJvaG94Z0dJRTZSZzhDMg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "11c35a1c-e900-4463-8ae0-38e4d482743f" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278890000185259810132293709862379460665586328523243520", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]97e9c5eebb5a416d809333070664b4e2" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960140171 + }, + "message": "[WARNING]\t2020-02-17T17:22:20.171Z\t11c35a1c-e900-4463-8ae0-38e4d482743f\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960140, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"8a5e3540-99b0-4ff4-9251-ed86683b8f6d\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.132.29\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:22:20.171Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBULBWgyR0eOgAAAABBWEJVTEJvaEZ1QjAyaV9RRDNfXw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278890000653575459301436795861093828617443503873458182", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]97e9c5eebb5a416d809333070664b4e2" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960140192 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:22:20.192Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBULBYg4bYWMQAAAABBWEJVTEJvZ0dpZlQ0aDRaSVhEdQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "11c35a1c-e900-4463-8ae0-38e4d482743f" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278889997085456227536537093022009335760684577030864896", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]97e9c5eebb5a416d809333070664b4e2" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960140320 + }, + "message": "[WARNING]\t2020-02-17T17:22:20.32Z\t11c35a1c-e900-4463-8ae0-38e4d482743f\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960139, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"a9fc710d-b059-4197-9ab4-cc1cf5554742\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.132.29\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:22:20.320Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMEi00bMbLgAAAABBWEJVTUV6UHI0cVhDYjhkVkk5UQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "d6833386-c6ec-4121-a0a7-75630c46d06e" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896138264668998899538142086586326585235977160556544", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]50ee0782c850412baf8669ccccbcff36" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960415412 + }, + "message": "[WARNING]\t2020-02-17T17:26:55.412Z\td6833386-c6ec-4121-a0a7-75630c46d06e\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960415, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"519aae33-3dbd-4d3d-add1-39eb2adb322b\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.58.149\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:26:55.412Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMEk8yKqMtAAAAABBWEJVTUV6Tktsa3NEOXgyZmdVUQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "d6833386-c6ec-4121-a0a7-75630c46d06e" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896141297570345899702889454992321378994162079367168", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]50ee0782c850412baf8669ccccbcff36" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960415548 + }, + "message": "[WARNING]\t2020-02-17T17:26:55.548Z\td6833386-c6ec-4121-a0a7-75630c46d06e\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960415, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"6f902eb7-a029-4ea7-8ebd-d4b78c24801f\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.58.149\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:26:55.548Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMElFjNHk9gAAAABBWEJVTUlkNks4aGgtVElpdDI5VQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896141498277052686478515912613650029218075478982662", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]50ee0782c850412baf8669ccccbcff36" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960415557 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:26:55.557Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUME-zl3yDoQAAAABBWEJVTUZNeUlILU9OQUZlQ19TTA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "7b3643d0-7cdb-47e2-95d7-4b50a81b73cc" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896178205303649467884190699870991211539419286077440", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960417203 + }, + "message": "[WARNING]\t2020-02-17T17:26:57.203Z\t7b3643d0-7cdb-47e2-95d7-4b50a81b73cc\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960417, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"192bc729-f12c-4b47-a56c-1e5b55f39024\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.156.181\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:26:57.203Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUME_H4x4-5AAAAABBWEJVTUkxRnhjcTJuVmtlaG5uMw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896178651318553438496671709617928483581328236019718", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960417223 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:26:57.223Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMFHCgLwTewAAAABBWEJVTUZLOXhjcTJuVmtlZ21xRw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "7b3643d0-7cdb-47e2-95d7-4b50a81b73cc" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896175328507518857433805283507882367264624422486016", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960417730 + }, + "message": "[WARNING]\t2020-02-17T17:26:57.73Z\t7b3643d0-7cdb-47e2-95d7-4b50a81b73cc\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960416, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"c1270310-0a99-422f-8687-d2f38778ebf1\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.156.181\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:26:57.730Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMFKvqA16JgAAAABBWEJVTUZTajNRSnRDMlNoTmM1VQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "405fac3c-26c0-44ce-ac23-8b23dd3d00c9" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896195265373726343810894899563945991946747062255616", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960417967 + }, + "message": "[WARNING]\t2020-02-17T17:26:57.967Z\t405fac3c-26c0-44ce-ac23-8b23dd3d00c9\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960417, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"e7b249c7-6395-428c-89dd-d7b1974428ec\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:26:57.967Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMFNElXWtXQAAAABBWEJVTUpMQi05cEZWTHk1X0hzbA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896198565884015726343138186278237684871153284022278", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960418116 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:26:58.116Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMFakjzkgDAAAAABBWEJVTUZoRVcwSnJST1JvZ0Q2bg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "405fac3c-26c0-44ce-ac23-8b23dd3d00c9" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896198164470602152791903455511813556455727545778176", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960418980 + }, + "message": "[WARNING]\t2020-02-17T17:26:58.98Z\t405fac3c-26c0-44ce-ac23-8b23dd3d00c9\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960417, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"bcdf0537-0953-4473-863b-81953d733aec\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:26:58.980Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMGQUlXWtYQAAAABBWEJVTUpMQi05cEZWTHk1X0hzcg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "c9b5a3ab-75b0-491e-a5f0-2ef9f0269b5e" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896294570592095400675762497545401436067436529713162", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960422420 + }, + "message": "[WARNING]\t2020-02-17T17:27:02.420Z\tc9b5a3ab-75b0-491e-a5f0-2ef9f0269b5e\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960422, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"8e3d7259-9446-49e4-8179-9ec9ea65d4d4\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:27:02.420Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMGSWlXWtYgAAAABBWEJVTUpMQi05cEZWTHk1X0hzdA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "c9b5a3ab-75b0-491e-a5f0-2ef9f0269b5e" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896297447388226011126147755653058607706070801186827", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960422550 + }, + "message": "[WARNING]\t2020-02-17T17:27:02.550Z\tc9b5a3ab-75b0-491e-a5f0-2ef9f0269b5e\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960422, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"fceddc47-d4ea-4e06-b3df-a2a22c366318\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:27:02.550Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMGSalXWtaQAAAABBWEJVTUpNVy05cEZWTHk1X0lIRg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896297536591206805248640321795931698299516825108498", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960422554 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:27:02.554Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMG16lXWtbQAAAABBWEJVTUpNVy05cEZWTHk1X0lISg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "59da705c-55d2-46d7-9dda-e1b7661f73a1" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896348203884297866824417890947847155376858412613654", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960424826 + }, + "message": "[WARNING]\t2020-02-17T17:27:04.826Z\t59da705c-55d2-46d7-9dda-e1b7661f73a1\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960424, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"2aad2f43-c832-496f-83c8-cc086a06e326\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:27:04.826Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMG39lXWtbgAAAABBWEJVTUpNVy05cEZWTHk1X0lISw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "59da705c-55d2-46d7-9dda-e1b7661f73a1" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896351147582664072866672573662659144960577202028567", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960424957 + }, + "message": "[WARNING]\t2020-02-17T17:27:04.957Z\t59da705c-55d2-46d7-9dda-e1b7661f73a1\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960424, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"8da386d2-622c-4dc8-a133-616c152dd964\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:27:04.957Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMG4BlXWtdQAAAABBWEJVTUpNVy05cEZWTHk1X0lIUg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278896351214484899668458541998269813962905661719969822", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960424961 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:27:04.961Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMR6t1smdcgAAAABBWEJVTVNOZnZLemljMVVDbGJvOQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "5a1b4cc6-878d-416e-8259-5a94d0e06e14" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278897359832588738811482032167694712054978577644584960", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960470189 + }, + "message": "[WARNING]\t2020-02-17T17:27:50.189Z\t5a1b4cc6-878d-416e-8259-5a94d0e06e14\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960470, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"4ea6053f-fd03-426f-a7f6-b5630bf8c9e3\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:27:50.189Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMR8vu6RuTgAAAABBWEJVTVNOd2NFdmRyXzFZME50Qw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "5a1b4cc6-878d-416e-8259-5a94d0e06e14" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278897362753986359818993663864835055521603550992465920", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960470319 + }, + "message": "[WARNING]\t2020-02-17T17:27:50.319Z\t5a1b4cc6-878d-416e-8259-5a94d0e06e14\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960470, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"5ab5ac6b-381d-4fe5-948e-c5d6fd603cb1\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:27:50.319Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMR806NMarwAAAABBWEJVTVY0Wl8zT0VGeWk4bDljZw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278897362843189340613116174621582694999250842122452998", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960470324 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:27:50.324Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMSN16NMaswAAAABBWEJVTVY0Wl8zT0VGeWk4bDljbg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "3fe27da6-f95c-4c60-9970-178c61bc1487" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278897387151001607011495398895515612185964883641106442", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960471413 + }, + "message": "[WARNING]\t2020-02-17T17:27:51.413Z\t3fe27da6-f95c-4c60-9970-178c61bc1487\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960471, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"f02c730c-39da-4a82-9770-a17f663fc67c\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:27:51.413Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMSP16NMatAAAAABBWEJVTVY0YV8zT0VGeWk4bDljbw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "3fe27da6-f95c-4c60-9970-178c61bc1487" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278897389983196247224884537870551832812306794900619275", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960471541 + }, + "message": "[WARNING]\t2020-02-17T17:27:51.541Z\t3fe27da6-f95c-4c60-9970-178c61bc1487\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960471, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"f5587aed-55b0-40b9-8072-f9c426b1e517\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:27:51.541Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUMSP56NMauwAAAABBWEJVTVY1d18zT0VGeWk4bDk3Uw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278897390072399228019007030436694705902900240924540946", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960471545 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:27:51.545Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNCLuyM-cUAAAAABBWEJVTkNWRUlILU9OQUZlVTZMVA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "5487bd3e-cf82-4b04-b8f0-5cce5c995ce4" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278901768623012252720085483352034441644836427771936768", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960667886 + }, + "message": "[WARNING]\t2020-02-17T17:31:07.886Z\t5487bd3e-cf82-4b04-b8f0-5cce5c995ce4\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960667, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"d8f4cf02-c9be-42dc-8f35-69655f9b93c9\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:07.886Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNCNypWJ9ZgAAAABBWEJVTkdPQUlILU9OQUZlV2s0Yg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278901771566710618926127756383769161423429835543281670", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960668018 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:31:08.018Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNCPs22ufcQAAAABBWEJVTkNWVTItXy1jcjItRkpBZg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "5487bd3e-cf82-4b04-b8f0-5cce5c995ce4" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278901771477507638132005245624667790713457829453168640", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960668140 + }, + "message": "[WARNING]\t2020-02-17T17:31:08.14Z\t5487bd3e-cf82-4b04-b8f0-5cce5c995ce4\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960667, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"57358b83-61d4-4af0-a7e8-48554fde1739\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:08.140Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNCcjpWJ9agAAAABBWEJVTkdPQUlILU9OQUZlV2s0Zg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "6e18df97-ea8a-4864-b9f0-6c3bec495027" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278901792640914831537566625135022929076131458694774794", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960668963 + }, + "message": "[WARNING]\t2020-02-17T17:31:08.963Z\t6e18df97-ea8a-4864-b9f0-6c3bec495027\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960668, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"df286414-5824-41d6-98b0-7b5a215e95ce\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:08.963Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNCeopWJ9cgAAAABBWEJVTkdQV0lILU9OQUZlV2wzNg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278901795606913942942139502959273459338363538990170130", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960669096 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:31:09.096Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNCrgpWJ9awAAAABBWEJVTkdPQUlILU9OQUZlV2s0Zw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "6e18df97-ea8a-4864-b9f0-6c3bec495027" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278901795517710962148017010393130586247770092966248459", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960669920 + }, + "message": "[WARNING]\t2020-02-17T17:31:09.92Z\t6e18df97-ea8a-4864-b9f0-6c3bec495027\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960668, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"61e2e561-dd10-4ba4-b292-71b7b7c8b0ea\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:09.920Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGR23CN23wAAAABBWEJVTkdmVm94Z0dJRTZSRHM4eA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a6647a21-5ebf-43a9-985b-55819e8c3370" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902142740313703269819326043482739780083425881489408", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960684662 + }, + "message": "[WARNING]\t2020-02-17T17:31:24.662Z\ta6647a21-5ebf-43a9-985b-55819e8c3370\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960684, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"7ce61a98-4cd0-4540-adc1-5f9556055e93\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:24.662Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGT34KuMbAAAAABBWEJVTkdmWjdyclJnT2RTakk1Mg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a6647a21-5ebf-43a9-985b-55819e8c3370" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902145617109833880269711451561022249350734399537152", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960684791 + }, + "message": "[WARNING]\t2020-02-17T17:31:24.791Z\ta6647a21-5ebf-43a9-985b-55819e8c3370\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960684, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"877d3030-4b28-4278-bacc-5df530d6c279\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:24.791Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGT6n4mgdgAAAABBWEJVTktKZlVreVN1OHh3aEdvRg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902145684012069475861599062201880745813945823789062", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960684794 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:31:24.794Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGi2n4mgegAAAABBWEJVTktKZlVreVN1OHh3aEdvSg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "70e7665e-3e8a-4100-8d7b-c2cfd9dfc098" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902167025825224469667945511884267670295907047047178", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960685750 + }, + "message": "[WARNING]\t2020-02-17T17:31:25.750Z\t70e7665e-3e8a-4100-8d7b-c2cfd9dfc098\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960685, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"474a088a-22d6-4f0e-ac71-4421e4be8030\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:25.750Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGk5n4mgewAAAABBWEJVTktKZlVreVN1OHh3aEdvSw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "70e7665e-3e8a-4100-8d7b-c2cfd9dfc098" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902169947222845477179577053063361387231264330481675", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960685881 + }, + "message": "[WARNING]\t2020-02-17T17:31:25.881Z\t70e7665e-3e8a-4100-8d7b-c2cfd9dfc098\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960685, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"3922c242-9f51-4cdc-9066-64b856bd9d0b\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:25.881Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGk9n4mgggAAAABBWEJVTktLWlVreVN1OHh3aEczLQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902170014125081072771446477670516205176348848422930", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960685885 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:31:25.885Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGw-n4mghgAAAABBWEJVTktLWlVreVN1OHh3aEc0Qw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "2c0fac29-89c4-414d-96e2-5a999c55c526" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902187163398138742820642318637867871766346947362838", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960686654 + }, + "message": "[WARNING]\t2020-02-17T17:31:26.654Z\t2c0fac29-89c4-414d-96e2-5a999c55c526\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960686, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"f3f4c8f0-9a78-4060-9577-3b1962edcbc5\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:26.654Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGy_n4mghwAAAABBWEJVTktLWlVreVN1OHh3aEc0RA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "2c0fac29-89c4-414d-96e2-5a999c55c526" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902190040194269353271027576745525043404981218836503", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960686783 + }, + "message": "[WARNING]\t2020-02-17T17:31:26.783Z\t2c0fac29-89c4-414d-96e2-5a999c55c526\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960686, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"4a5723e0-e956-462d-9738-4062263b44d6\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:26.783Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNGzCn4mgjgAAAABBWEJVTktLblVreVN1OHh3aEc1bg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902190107096504948862897001352679861350065736777758", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960686786 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:31:26.786Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNHB1n4mgkgAAAABBWEJVTktLb1VreVN1OHh3aEc1cg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "e171a658-14fa-41f2-80aa-02bc4705329d" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902211225902207957363012035677884059348411900231714", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960687733 + }, + "message": "[WARNING]\t2020-02-17T17:31:27.733Z\te171a658-14fa-41f2-80aa-02bc4705329d\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960687, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"48b77e84-700a-4dee-8639-cd4afe7dd00b\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:27.733Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNHD1n4mgkwAAAABBWEJVTktLb1VreVN1OHh3aEc1cw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "e171a658-14fa-41f2-80aa-02bc4705329d" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902214080397593369282774152249822958338684665724963", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960687861 + }, + "message": "[WARNING]\t2020-02-17T17:31:27.861Z\te171a658-14fa-41f2-80aa-02bc4705329d\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960687, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"6db5919b-6228-416d-a2ce-75b51595528a\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:31:27.861Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNHD5n4mgmgAAAABBWEJVTktMeFVreVN1OHh3aEhKRA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278902214169600574163405266718392696048932130689646634", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960687865 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:31:27.865Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQlmlaiVYAAAAABBWEJVTlF3MS05cEZWTHk1VUZMNg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "67874f03-e0b1-4e9f-b628-33602f4ef355" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903084389279711225381528430218830756520936086700032", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960726886 + }, + "message": "[WARNING]\t2020-02-17T17:32:06.886Z\t67874f03-e0b1-4e9f-b628-33602f4ef355\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960726, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"fd33c89d-08b8-4ad7-89f2-9a270e2f10d6\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:06.886Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQnrw0TDugAAAABBWEJVTlVvdlBQSlBKbnd3SW9CUw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903087332978077431423801459328149603679600775987206", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727019 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:07.019Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQpNj67eEAAAAABBWEJVTlEzYzl0anJaNlJRY1BjYg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "6bec467f-525e-4fd3-bb19-193369e4f2a0" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903089518451106887424851263681094016809700641669120", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727117 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.117Z\t6bec467f-525e-4fd3-bb19-193369e4f2a0\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960726, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"35c84447-de1c-44f2-938c-d2d0246f4a22\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.156.181\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.117Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQpuz-5FhAAAAABBWEJVTlF3NXhjcTJuVmtlMTl1Zw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "67874f03-e0b1-4e9f-b628-33602f4ef355" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903087266075841835831913842593478981722380101943296", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727150 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.15Z\t67874f03-e0b1-4e9f-b628-33602f4ef355\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960726, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"d9769f59-3232-4548-8c27-db867307039e\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.150Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQrOvqYylwAAAABBWEJVTlEzZ0dpZlQ0aDRacU82Qg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "6bec467f-525e-4fd3-bb19-193369e4f2a0" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903092395247237497875236676678577550179676838428672", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727246 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.246Z\t6bec467f-525e-4fd3-bb19-193369e4f2a0\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"b815987f-fa94-44e8-9647-ebae1791414e\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.156.181\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.246Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQrS3yLW_wAAAABBWEJVTlVoaW94Z0dJRTZSSURqSQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903092484450218291997747421221452898216837860098054", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727250 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:07.250Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQrrrM7NJwAAAABBWEJVTlFfQzdyclJnT2RTbElyRQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "bb2b579b-4f4d-484e-b08e-29e17b41b389" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903093041968848255263307815966294289455569020846080", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]50ee0782c850412baf8669ccccbcff36" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727275 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.275Z\tbb2b579b-4f4d-484e-b08e-29e17b41b389\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"fc6da1be-ee18-4f1b-b9e9-4bc06e3bf91a\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.58.149\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.275Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQsuw0TDvgAAAABBWEJVTlVvdlBQSlBKbnd3SW9CVw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "5c5749e2-8959-4bab-8d97-cd4f1d3c12fb" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903094536118776556815076175365151669100367207661578", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727342 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.342Z\t5c5749e2-8959-4bab-8d97-cd4f1d3c12fb\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"32ac8078-961e-4b95-889f-61ba1b2d84e3\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.342Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQtx9w7ygwAAAABBWEJVTlFfRXJVUGwtQmU5UUR3Nw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "bb2b579b-4f4d-484e-b08e-29e17b41b389" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903096030268704858366808944078066657618964372586496", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]50ee0782c850412baf8669ccccbcff36" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727409 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.409Z\tbb2b579b-4f4d-484e-b08e-29e17b41b389\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"6e93e834-ae54-470f-9245-6abb9df4b093\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.58.149\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.409Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQt1vb2wLgAAAABBWEJVTlVwWUMwTmF2TjVhbmdYbw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903096119471685652489319685297484637549112435671046", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]50ee0782c850412baf8669ccccbcff36" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727413 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:07.413Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQvAw0TDvwAAAABBWEJVTlVvdlBQSlBKbnd3SW9CWA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "5c5749e2-8959-4bab-8d97-cd4f1d3c12fb" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903097814328320740816677981115737748409508586782731", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727488 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.488Z\t5c5749e2-8959-4bab-8d97-cd4f1d3c12fb\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"ded8e07f-5514-45e0-a892-e2e18681fb85\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.488Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQvC3yLXAwAAAABBWEJVTlVoaW94Z0dJRTZSSURqTQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "3d7ada38-cde5-46ba-866a-dbbea6393f46" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903097836629065939347301389793838333823599295397898", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727490 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.490Z\t3d7ada38-cde5-46ba-866a-dbbea6393f46\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"28e24935-52af-4938-9ac5-7e1a7a9a4fbc\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.156.181\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.490Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQvEw0TDxgAAAABBWEJVTlVwMlBQSlBKbnd3SW9PTQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903097881230556336408547405722892566354593104723986", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727492 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:07.492Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQxF3yLXBAAAAABBWEJVTlVoaW94Z0dJRTZSSURqTg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "3d7ada38-cde5-46ba-866a-dbbea6393f46" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903100758026686946858932930972932050758956578832395", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727621 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.621Z\t3d7ada38-cde5-46ba-866a-dbbea6393f46\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"b9f214a1-77d8-4c81-9742-29600cb67393\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.156.181\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.621Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQxJ3yLXCwAAAABBWEJVTlVpM294Z0dJRTZSSUVMcA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903100847229667740981425497115805141352402602754066", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727625 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:07.625Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQyvw0TDygAAAABBWEJVTlVwMlBQSlBKbnd3SW9PUQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "9f65476e-e445-4728-aa6d-e0ab88fcd3d9" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903103121905677991104985666616686638719547010121750", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727727 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.727Z\t9f65476e-e445-4728-aa6d-e0ab88fcd3d9\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"7b89fb30-6309-4311-9240-4d6bcc932407\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.727Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQ0uw0TDywAAAABBWEJVTlVwMlBQSlBKbnd3SW9PUg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "9f65476e-e445-4728-aa6d-e0ab88fcd3d9" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903105954100318204494124641652907265061458269634583", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727854 + }, + "message": "[WARNING]\t2020-02-17T17:32:07.854Z\t9f65476e-e445-4728-aa6d-e0ab88fcd3d9\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960727, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"8a163336-8ef9-4f01-a743-cc6a47727384\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:07.854Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNQ0ww0TD0gAAAABBWEJVTlVxRVBQSlBKbnd3SW9ScA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903105998701808601555370924724343810358181281595422", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960727856 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:07.856Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRDAw0TD1gAAAABBWEJVTlVxRVBQSlBKbnd3SW9SdA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "ef1fa9b5-f63b-4fc1-a398-3f34b34efdfa" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903126336981429661483676005299408465663874735734818", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960728768 + }, + "message": "[WARNING]\t2020-02-17T17:32:08.768Z\tef1fa9b5-f63b-4fc1-a398-3f34b34efdfa\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960728, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"ab727ab3-1d02-43da-80e1-f1bf9926f1fd\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:08.768Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRE_w0TD1wAAAABBWEJVTlVxRVBQSlBKbnd3SW9SdQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "ef1fa9b5-f63b-4fc1-a398-3f34b34efdfa" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903129169176069874872814980335629092005785995247651", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960728895 + }, + "message": "[WARNING]\t2020-02-17T17:32:08.895Z\tef1fa9b5-f63b-4fc1-a398-3f34b34efdfa\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960728, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"23c7c474-b128-4463-9f36-55d03b28ea27\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:08.895Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRFDw0TD3gAAAABBWEJVTlVyTVBQSlBKbnd3SW9neQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903129258379050668995307546478502182599232019169322", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960728899 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:08.899Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRRK9Ott3gAAAABBWEJVTlJnakZZNkduTFVZdldBVw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "f0a94b5c-0262-4381-8698-0ccf71c3b9d8" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903146541456579530228227261681532271304742861012992", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960729674 + }, + "message": "[WARNING]\t2020-02-17T17:32:09.674Z\tf0a94b5c-0262-4381-8698-0ccf71c3b9d8\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960729, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"67e13aa1-27c7-4059-b9bc-97727b2498ea\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:09.674Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRTM7G9g3wAAAABBWEJVTlJnM3IwZ29yZHV3TlA0Zg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "f0a94b5c-0262-4381-8698-0ccf71c3b9d8" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903149440553455339209235818321002943580325726322688", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960729804 + }, + "message": "[WARNING]\t2020-02-17T17:32:09.804Z\tf0a94b5c-0262-4381-8698-0ccf71c3b9d8\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960729, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"6a3af199-ec6a-4042-a08f-e1ab7aa83b39\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:09.804Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRTewDstQQAAAABBWEJVTlZMTnZLemljMVVDMDh1YQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903149841966868912760470543678724895583585183596550", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960729822 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:09.822Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRduwDstRQAAAABBWEJVTlZMTnZLemljMVVDMDh1Ng", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "25d80dda-deff-4cef-b008-ef45036e64fa" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903164471255719148849251391109911752908733106749450", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960730478 + }, + "message": "[WARNING]\t2020-02-17T17:32:10.478Z\t25d80dda-deff-4cef-b008-ef45036e64fa\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960730, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"beb8e286-6f39-4c64-814d-23df622c0803\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": null}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:10.478Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRf2wDstRgAAAABBWEJVTlZMTnZLemljMVVDMDh2Qg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "25d80dda-deff-4cef-b008-ef45036e64fa" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903167504157066149013998639967596833085897920086027", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960730614 + }, + "message": "[WARNING]\t2020-02-17T17:32:10.614Z\t25d80dda-deff-4cef-b008-ef45036e64fa\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960730, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"85899303-158a-42ae-a345-1ab4e32212d7\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:32:10.614Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUNRf6wDstTQAAAABBWEJVTlZNanZLemljMVVDMDg0cg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278903167593360046943136491206110469923679343944007698", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960730618 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:32:10.618Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOJMfxGqrEQAAAABBWEJVT0piSUZ1QjAyaV9Rei1aYg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "eef068a9-69e0-4353-b799-25f83fb7cae0" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908255129264423329785897774472633258025408685998080", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960958751 + }, + "message": "[WARNING]\t2020-02-17T17:35:58.751Z\teef068a9-69e0-4353-b799-25f83fb7cae0\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960958, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"fe4e06c1-0f82-48d1-8bc0-39b27c47301c\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:35:58.751Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOJOggq4iGAAAAABBWEJVT0piYWVJNUlYNjZoUzJSZA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "eef068a9-69e0-4353-b799-25f83fb7cae0" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908258006060553940236283188155145220915591948730368", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960958880 + }, + "message": "[WARNING]\t2020-02-17T17:35:58.880Z\teef068a9-69e0-4353-b799-25f83fb7cae0\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960958, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"eb77fcbd-c605-4d14-b109-08efed46810d\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:35:58.880Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOJOkhBrL7gAAAABBWEJVT05HUEtsa3NEOXgyLUZfdA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908258095263534734358793953323969076966814257446918", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960958884 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:35:58.884Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOJ1GhBrL8gAAAABBWEJVT05HUUtsa3NEOXgyLUZfeA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a505c6d0-04e8-4408-86cf-479cb338c8b7" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908313088901194310875460980405229427826288005152778", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960961350 + }, + "message": "[WARNING]\t2020-02-17T17:36:01.350Z\ta505c6d0-04e8-4408-86cf-479cb338c8b7\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960961, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"1a7ec240-5523-4a27-a943-2aa113337c5b\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:01.350Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOJ3ThBrL8wAAAABBWEJVT05HUUtsa3NEOXgyLUZfeQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a505c6d0-04e8-4408-86cf-479cb338c8b7" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908316233306267303693323936941505871245260348391435", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960961491 + }, + "message": "[WARNING]\t2020-02-17T17:36:01.491Z\ta505c6d0-04e8-4408-86cf-479cb338c8b7\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960961, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"6bf0ebc9-7e41-4156-b67c-c2c1dd4889ec\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:01.491Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOJ3XhBrL-gAAAABBWEJVT05Ibktsa3NEOXgyLUdKNg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908316322509248097815816503084378961838706372313106", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960961495 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:01.495Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKDshBrL_gAAAABBWEJVT05Ibktsa3NEOXgyLUdKLQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "1672c893-9b37-4117-8d8e-8bc3d9178fc4" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908333917797209738477475174766096081395934590861334", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960962284 + }, + "message": "[WARNING]\t2020-02-17T17:36:02.284Z\t1672c893-9b37-4117-8d8e-8bc3d9178fc4\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960962, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"51f5ad37-22d9-4721-bfbe-60fe9e3a2a71\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:02.284Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKFuhBrL_wAAAABBWEJVT05Ibktsa3NEOXgyLUdKXw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "1672c893-9b37-4117-8d8e-8bc3d9178fc4" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908336839194830745989106715945189798331291874295831", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960962414 + }, + "message": "[WARNING]\t2020-02-17T17:36:02.414Z\t1672c893-9b37-4117-8d8e-8bc3d9178fc4\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960962, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"0979d67b-caba-4b28-a2c3-6436bef953ba\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:02.414Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKFyhBrMBgAAAABBWEJVT05Ibktsa3NEOXgyLUdLRw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908336906097066341580976140552344616276376392237086", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960962418 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:02.418Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKQmhBrMCgAAAABBWEJVT05Ibktsa3NEOXgyLUdLSw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a4bf78e3-56e7-4e7c-a60b-2f73fb3e77fe" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908352338212743724772190083269389288942538530684962", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960963110 + }, + "message": "[WARNING]\t2020-02-17T17:36:03.110Z\ta4bf78e3-56e7-4e7c-a60b-2f73fb3e77fe\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960962, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"dfdd4aa5-3be8-4209-bcd4-8a0bcd197039\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:03.110Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKS_hBrMCwAAAABBWEJVT05Ibktsa3NEOXgyLUdLTA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a4bf78e3-56e7-4e7c-a60b-2f73fb3e77fe" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908355750226759099957530738234285004141848945688611", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960963263 + }, + "message": "[WARNING]\t2020-02-17T17:36:03.263Z\ta4bf78e3-56e7-4e7c-a60b-2f73fb3e77fe\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960963, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"e05fbc83-3093-4edc-bda9-106e0b697ee4\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:03.263Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKTUhBrMEgAAAABBWEJVT05JOEtsa3NEOXgyLUdVZg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908356218542408269100616710484368729757440571277354", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960963284 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:03.284Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKkFhBrMFgAAAABBWEJVT05JOEtsa3NEOXgyLUdVag", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "30a51b11-730d-4d57-aaf6-142de8e731cf" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908380147242006292459247578310075281449336488263726", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960964357 + }, + "message": "[WARNING]\t2020-02-17T17:36:04.357Z\t30a51b11-730d-4d57-aaf6-142de8e731cf\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960964, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"da95be65-29c8-49ac-8b76-0318f89ccd29\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:04.357Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKmIhBrMFwAAAABBWEJVT05JOEtsa3NEOXgyLUdVaw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "30a51b11-730d-4d57-aaf6-142de8e731cf" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908383068639627299970879119489168998384693771698223", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960964488 + }, + "message": "[WARNING]\t2020-02-17T17:36:04.488Z\t30a51b11-730d-4d57-aaf6-142de8e731cf\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960964, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"8f733e32-1a96-47b4-ab78-0941e55c97ed\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:04.488Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOKmMhBrMHgAAAABBWEJVT05JOUtsa3NEOXgyLUdVcg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908383157842608094093371685632042088978139795619894", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960964492 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:04.492Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOK0EhBrMIgAAAABBWEJVT05JOUtsa3NEOXgyLUdVdg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "2785e5fc-7425-4a13-802b-200d8a1f1ed0" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908402960904344389286721369349868200723157106229306", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960965380 + }, + "message": "[WARNING]\t2020-02-17T17:36:05.380Z\t2785e5fc-7425-4a13-802b-200d8a1f1ed0\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960965, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"cf85daf6-5583-4ca2-b38e-310a7783bd17\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:05.380Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOK2YhBrMIwAAAABBWEJVT05JOUtsa3NEOXgyLUdVdw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "2785e5fc-7425-4a13-802b-200d8a1f1ed0" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908406283715378970349569458171890825329021497311291", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960965528 + }, + "message": "[WARNING]\t2020-02-17T17:36:05.528Z\t2785e5fc-7425-4a13-802b-200d8a1f1ed0\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960965, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"c3fb7c50-984b-4673-8c8b-bd112ce658e4\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:05.528Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOK2chBrMKgAAAABBWEJVT05JOUtsa3NEOXgyLUdVMw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908406350617614565941438882779045643274106015252546", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960965532 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:05.532Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOK_3hBrMLgAAAABBWEJVT05JOUtsa3NEOXgyLUdVNw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "2476dc61-55f5-42db-92ce-3f6298287e04" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908419797966969279907193228817164050236094121443398", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960966135 + }, + "message": "[WARNING]\t2020-02-17T17:36:06.135Z\t2476dc61-55f5-42db-92ce-3f6298287e04\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960966, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"40c2191b-252c-4ee9-a457-d000d751cd4b\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:06.135Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLCDhBrMLwAAAABBWEJVT05JOUtsa3NEOXgyLUdWQQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "2476dc61-55f5-42db-92ce-3f6298287e04" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908422920071297074194433043817722221006704958701639", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960966275 + }, + "message": "[WARNING]\t2020-02-17T17:36:06.275Z\t2476dc61-55f5-42db-92ce-3f6298287e04\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960966, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"8b7bed24-1d14-45ac-a7dc-e5be445bfb11\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:06.275Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLCHhBrMNgAAAABBWEJVT05JOUtsa3NEOXgyLUdWSA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908423009274277868316925609960595311600150982623310", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960966279 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:06.279Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLLIhBrMOgAAAABBWEJVT05JOUtsa3NEOXgyLUdWTA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "ef3338af-7d50-4b8b-bcb9-3466c90f88ac" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908435899105002619017101417605756902353101439303762", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960966856 + }, + "message": "[WARNING]\t2020-02-17T17:36:06.856Z\tef3338af-7d50-4b8b-bcb9-3466c90f88ac\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960966, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"0574a9b2-ecf0-4cbf-8760-cc68a626f91c\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:06.856Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLNOhBrMOwAAAABBWEJVT05JOUtsa3NEOXgyLUdWTQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "ef3338af-7d50-4b8b-bcb9-3466c90f88ac" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908438865104114023589979241856287164585181734699091", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960966990 + }, + "message": "[WARNING]\t2020-02-17T17:36:06.990Z\tef3338af-7d50-4b8b-bcb9-3466c90f88ac\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960966, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"4a578477-9770-4860-9c69-046edf6774eb\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:06.990Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLNRhBrMQgAAAABBWEJVT05JLUtsa3NEOXgyLUdWVA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908438932006349619181848666463441982530266252640346", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960966993 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:06.993Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLYAhBrMRgAAAABBWEJVT05LVEtsa3NEOXgyLUd0aQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "b22f7fc3-afd5-4998-b9fd-debf2c1d6426" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908454252618301009719946901501895291954620861186142", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960967680 + }, + "message": "[WARNING]\t2020-02-17T17:36:07.680Z\tb22f7fc3-afd5-4998-b9fd-debf2c1d6426\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960967, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"23ec9a21-2284-4d00-ad18-e79d344f95a1\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:07.680Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLaEhBrMRwAAAABBWEJVT05LVEtsa3NEOXgyLUd0ag", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "b22f7fc3-afd5-4998-b9fd-debf2c1d6426" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908457218617412414292824725752425554186701156581471", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960967812 + }, + "message": "[WARNING]\t2020-02-17T17:36:07.812Z\tb22f7fc3-afd5-4998-b9fd-debf2c1d6426\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960967, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"4b3ed9dc-bf83-4ac9-8fa6-2a7ed077ca68\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:07.812Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLaIhBrMTgAAAABBWEJVT05LVEtsa3NEOXgyLUd0cQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908457285519648009884694150359580372131785674522726", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960967816 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:07.816Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLiihBrMUgAAAABBWEJVT05LVEtsa3NEOXgyLUd0dQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "f9ec4c54-1196-4e94-b197-39c83356dfe2" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908469283320564819359944296576011056950275891986538", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960968354 + }, + "message": "[WARNING]\t2020-02-17T17:36:08.354Z\tf9ec4c54-1196-4e94-b197-39c83356dfe2\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960968, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"4e297723-bede-48a5-97ae-3d196ec1e078\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:08.354Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLknhBrMUwAAAABBWEJVT05LVEtsa3NEOXgyLUd0dg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "f9ec4c54-1196-4e94-b197-39c83356dfe2" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908472249319676223932822120826541319182356187381867", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960968487 + }, + "message": "[WARNING]\t2020-02-17T17:36:08.487Z\tf9ec4c54-1196-4e94-b197-39c83356dfe2\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960968, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"aebdd4d5-b62c-4378-bf92-510918e1d342\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:08.487Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLkqhBrMWgAAAABBWEJVT05LVEtsa3NEOXgyLUd0Mg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908472316221911819524691545433696137127440705323122", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960968490 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:08.490Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLoS_FFALgAAAABBWEJVT0wweVBXVmVPMHZHM1pWWQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "231a6ce9-4430-43b8-9948-2451a2787e0c" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908477489994797878629254081216553800615680367722496", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960968722 + }, + "message": "[WARNING]\t2020-02-17T17:36:08.722Z\t231a6ce9-4430-43b8-9948-2451a2787e0c\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960968, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"805b963d-108c-47b8-a59b-389de543d374\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:08.722Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLrE21bwqgAAAABBWEJVT0wwNmVKSDRac044OGhTZA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "231a6ce9-4430-43b8-9948-2451a2787e0c" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908481481828188415610796632575563726304965251235840", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960968900 + }, + "message": "[WARNING]\t2020-02-17T17:36:08.900Z\t231a6ce9-4430-43b8-9948-2451a2787e0c\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960968, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"217daee4-17a2-408c-ade5-0b35a40170a4\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:08.900Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLrJyu3ABgAAAABBWEJVT1BmY3IwZ29yZHV3YXBmWA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908481571031169209733307518347467946127302039240710", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960968905 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:08.905Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLrmhBrMXgAAAABBWEJVT05LVEtsa3NEOXgyLUd0Ng", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a211efb2-2b69-4205-a70b-8d2bdb9b79f1" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908482217752779967121366387292609192999949360627830", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960968934 + }, + "message": "[WARNING]\t2020-02-17T17:36:08.934Z\ta211efb2-2b69-4205-a70b-8d2bdb9b79f1\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960968, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"267070d3-3523-4b12-91e6-69c532b3de1b\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:08.934Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLuZhBrMXwAAAABBWEJVT05LVEtsa3NEOXgyLUd0Nw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a211efb2-2b69-4205-a70b-8d2bdb9b79f1" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908486209586170504102908722186179997056658931122295", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960969113 + }, + "message": "[WARNING]\t2020-02-17T17:36:09.113Z\ta211efb2-2b69-4205-a70b-8d2bdb9b79f1\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960968, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"33cdbdf7-3e71-48bf-95b1-6a868482d55e\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.47.125\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:09.113Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLudhBrMZgAAAABBWEJVT05LVEtsa3NEOXgyLUd1Qw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908486298789151298225401288329053087650104955043966", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]047e2fde7d1d485a8bd1c83ab1b9d092" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960969117 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:09.117Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLu6viMsdAAAAABBWEJVT0w5U2JMczZ2SHB2TnZBQg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "aa3ee2be-6c6e-467e-9648-bbd2b4d80044" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908486967811507254144089748626025618352092354969600", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960969146 + }, + "message": "[WARNING]\t2020-02-17T17:36:09.146Z\taa3ee2be-6c6e-467e-9648-bbd2b4d80044\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960968, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"b26b1485-00a0-4b1f-aa7b-5d0ac63f0e80\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.156.181\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:09.146Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLxgtra0xQAAAABBWEJVT0w5TmxTUEpvVEJ6S1pRTQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "aa3ee2be-6c6e-467e-9648-bbd2b4d80044" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908490669735210210227531444074079999332572630155264", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960969312 + }, + "message": "[WARNING]\t2020-02-17T17:36:09.312Z\taa3ee2be-6c6e-467e-9648-bbd2b4d80044\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960969, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"0aa2a936-5389-4b68-b476-3a64add59653\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.156.181\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:09.312Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLxoyu3ACgAAAABBWEJVT1BmY3IwZ29yZHV3YXBmYg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "7c15c225-32d9-4211-8e93-395149064a60" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908490825840426599941911255670551095197327021113354", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960969320 + }, + "message": "[WARNING]\t2020-02-17T17:36:09.320Z\t7c15c225-32d9-4211-8e93-395149064a60\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960969, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"d46ca0ad-c4fb-4e16-989d-95d2fb730cd9\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:09.320Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLxvlHYv2AAAAABBWEJVT1BvV0w0VXlVekd5TVRHQQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908490981945642989656273598297963671299138546499590", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]ffe40bac5a41429ab760ae80fcb0d598" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960969327 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:09.327Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOLz9yu3ACwAAAABBWEJVT1BmY3IwZ29yZHV3YXBmYw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "7c15c225-32d9-4211-8e93-395149064a60" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908494148651461181004759344492573719803191412195339", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960969469 + }, + "message": "[WARNING]\t2020-02-17T17:36:09.469Z\t7c15c225-32d9-4211-8e93-395149064a60\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960969, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"05e8d7a3-f16d-4d37-803e-b92f9f6a2155\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:09.469Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOL0Byu3AEgAAAABBWEJVT1BneXIwZ29yZHV3YXB3Rg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908494237854441975127251910635446810396637436117010", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960969473 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:09.473Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOMF-yu3AFgAAAABBWEJVT1BneXIwZ29yZHV3YXB3Sg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "06b22657-b44f-46ba-a937-e86a359f7217" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908519861410675086813241535175742083364007807614998", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960970622 + }, + "message": "[WARNING]\t2020-02-17T17:36:10.622Z\t06b22657-b44f-46ba-a937-e86a359f7217\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960970, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"3bde7812-be3e-443e-ad02-706565984ebc\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:10.622Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOMIiyu3AFwAAAABBWEJVT1BneXIwZ29yZHV3YXB3Sw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "06b22657-b44f-46ba-a937-e86a359f7217" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908523518732887645835436747033538797695294788403223", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960970786 + }, + "message": "[WARNING]\t2020-02-17T17:36:10.786Z\t06b22657-b44f-46ba-a937-e86a359f7217\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960970, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"aa6559a3-671c-4b85-9311-7d44fff947d2\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:10.786Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOMIlyu3AHgAAAABBWEJVT1BneXIwZ29yZHV3YXB3Ug", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908523585635123241427306171640693615640379306344478", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960970789 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:10.789Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOMUpyu3AIgAAAABBWEJVT1BneXIwZ29yZHV3YXB3Vg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "d0eb19c7-9814-4939-b13f-54352e571c08" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908540801810416507068371437215200100175461923225634", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960971561 + }, + "message": "[WARNING]\t2020-02-17T17:36:11.561Z\td0eb19c7-9814-4939-b13f-54352e571c08\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960971, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"22aad693-3e5d-4d6f-b217-24263e260885\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:11.561Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOMXLyu3AIwAAAABBWEJVT1BneXIwZ29yZHV3YXB3Vw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "d0eb19c7-9814-4939-b13f-54352e571c08" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908544436831883867559943507537278541858387398033443", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960971723 + }, + "message": "[WARNING]\t2020-02-17T17:36:11.723Z\td0eb19c7-9814-4939-b13f-54352e571c08\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960971, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"975ffcf3-7338-4f9a-b16e-9b71e12de722\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:11.723Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOMXPyu3AKgAAAABBWEJVT1BpSXIwZ29yZHV3YXA0cw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908544503734119463151812932144433359803471915974698", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960971727 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:11.727Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUORKnlTMrRgAAAABBWEJVT1JjR1BQSlBKbnd3VnRUWQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "6f509c34-f3c6-4dc1-8586-c256d6cef774" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908983203993664957570262125571774491122468805345280", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960991399 + }, + "message": "[WARNING]\t2020-02-17T17:36:31.399Z\t6f509c34-f3c6-4dc1-8586-c256d6cef774\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960991, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"2b3d4ff2-a01e-46cd-a16c-3c7d0b359a6a\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:31.399Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUORM60Yur1QAAAABBWEJVT1ZJczR4YWdPZVNQQmJ1Uw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "6f509c34-f3c6-4dc1-8586-c256d6cef774" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908986482203209141571882117243534990773199914860599", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960991546 + }, + "message": "[WARNING]\t2020-02-17T17:36:31.546Z\t6f509c34-f3c6-4dc1-8586-c256d6cef774\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960991, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"9ea64451-e4ef-482d-b671-b9a1dcf87d31\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:31.546Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUORM-0Yur3AAAAABBWEJVT1ZJczR4YWdPZVNQQmJ1Wg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278908986571406189935694374683386408081366645938782270", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960991550 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:31.550Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUORcL0Yur4AAAAABBWEJVT1ZJczR4YWdPZVNQQmJ1ZA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "f601dda1-7089-4d37-801a-9599eb47b3a6" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909008270031268105990691397640287368222391257727042", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960992523 + }, + "message": "[WARNING]\t2020-02-17T17:36:32.523Z\tf601dda1-7089-4d37-801a-9599eb47b3a6\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960992, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"b3c84741-3ff6-40e0-83eb-37872275c7e1\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:32.523Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOReL0Yur4QAAAABBWEJVT1ZJczR4YWdPZVNQQmJ1bA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "f601dda1-7089-4d37-801a-9599eb47b3a6" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909011124526653517910453514212226267212664023220291", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960992651 + }, + "message": "[WARNING]\t2020-02-17T17:36:32.651Z\tf601dda1-7089-4d37-801a-9599eb47b3a6\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960992, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"0872684c-a6a3-498f-8ba3-a4a7fcbe6648\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:32.651Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOReO0Yur6AAAAABBWEJVT1ZJczR4YWdPZVNQQmJ2RQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909011191428889113502322938819381085157748541161546", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960992654 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:32.654Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUORvR0Yur7AAAAABBWEJVT1ZJczR4YWdPZVNQQmJ2SQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "4b0ccb2e-bba2-4de3-b804-5c8d3ed35cf0" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909035521541900710412170354288016544520151565795406", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960993745 + }, + "message": "[WARNING]\t2020-02-17T17:36:33.745Z\t4b0ccb2e-bba2-4de3-b804-5c8d3ed35cf0\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960993, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"956ed261-8d2e-4ec4-960d-ccdcad5780b8\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:33.745Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUORxQ0Yur7QAAAABBWEJVT1ZJczR4YWdPZVNQQmJ2Sg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "4b0ccb2e-bba2-4de3-b804-5c8d3ed35cf0" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909038353736540923801309329324237170862062825308239", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960993872 + }, + "message": "[WARNING]\t2020-02-17T17:36:33.872Z\t4b0ccb2e-bba2-4de3-b804-5c8d3ed35cf0\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960993, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"fbb003f6-2870-4063-b248-cbbebb56e25c\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:33.872Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUORxT0Yur9AAAAABBWEJVT1ZJczR4YWdPZVNQQmJ2UQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909038420638776519393178753931391988807147343249494", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960993875 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:33.875Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOR-P0Yur-AAAAABBWEJVT1ZJczR4YWdPZVNQQmJ2VQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "97e1d0bc-451b-4dc0-9e50-5dc7d4d17d1e" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909056907956546101279763087041840014298835801014362", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960994703 + }, + "message": "[WARNING]\t2020-02-17T17:36:34.703Z\t97e1d0bc-451b-4dc0-9e50-5dc7d4d17d1e\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960994, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"0160ce58-2c7b-4554-a728-6ed668e07664\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:34.703Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOSAP0Yur-QAAAABBWEJVT1ZKVjR4YWdPZVNQQmJfOA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "97e1d0bc-451b-4dc0-9e50-5dc7d4d17d1e" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909059762451931513199525203613778913289108566507611", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960994831 + }, + "message": "[WARNING]\t2020-02-17T17:36:34.831Z\t97e1d0bc-451b-4dc0-9e50-5dc7d4d17d1e\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960994, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"1e0bcf94-fdbc-493f-8179-3c367aca12f9\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:34.831Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOSAT0YusAAAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXVA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909059829354167108791394628220933731234193084448866", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960994835 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:34.835Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOSNj0YusBAAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXWA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a715559f-75ef-42ca-8b17-f9281e2ba17a" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909078740386095462759818650510028937044750155841638", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960995683 + }, + "message": "[WARNING]\t2020-02-17T17:36:35.683Z\ta715559f-75ef-42ca-8b17-f9281e2ba17a\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960995, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"04aea8a8-99ac-4254-b7a5-db5fc4db3d3b\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:35.683Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOSPi0YusBQAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXWQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a715559f-75ef-42ca-8b17-f9281e2ba17a" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909081572580735676148957625546249563386661415354471", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960995810 + }, + "message": "[WARNING]\t2020-02-17T17:36:35.810Z\ta715559f-75ef-42ca-8b17-f9281e2ba17a\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960995, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"72367b23-c8ea-43dd-8f58-1e3b97b7030b\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:35.810Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOSPq0YusDAAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXZg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909081750986697264393942757831995744573553463197806", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960995818 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:35.818Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOSc90YusEAAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXag", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "435b84a2-87aa-43e0-b43b-0e2fc665fc32" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909100728920861213954236204728245768329195052531826", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960996669 + }, + "message": "[WARNING]\t2020-02-17T17:36:36.669Z\t435b84a2-87aa-43e0-b43b-0e2fc665fc32\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960996, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"40947a47-7d0c-48d6-bedf-3765e37ef1e3\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:36.669Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOSfF0YusEQAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXaw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "435b84a2-87aa-43e0-b43b-0e2fc665fc32" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909103784122953412649606595121649121154721371848819", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960996805 + }, + "message": "[WARNING]\t2020-02-17T17:36:36.805Z\t435b84a2-87aa-43e0-b43b-0e2fc665fc32\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960996, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"78099195-41f3-4e26-8af4-d27b15b7840a\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:36.805Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOSfJ0YusGAAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXcg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909103851025189008241476019728803939099805889790074", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960996809 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:36.809Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOTKh0YusHAAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXdg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "31e2c600-7c32-4258-94d5-ed98d8e47e3d" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909165757893860129251316922882728810951346491424894", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960999585 + }, + "message": "[WARNING]\t2020-02-17T17:36:39.585Z\t31e2c600-7c32-4258-94d5-ed98d8e47e3d\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960999, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"49b5d5c1-13d6-44fb-b7c9-e1a9f64edbd1\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:39.585Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOTMi0YusHQAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXdw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "31e2c600-7c32-4258-94d5-ed98d8e47e3d" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909168634689990739701702180990385982589980762898559", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960999714 + }, + "message": "[WARNING]\t2020-02-17T17:36:39.714Z\t31e2c600-7c32-4258-94d5-ed98d8e47e3d\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581960999, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"66a2e4b9-9622-45a1-a27c-d335492c9328\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:36:39.714Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOTMm0YusJAAAAABBWEJVT1ZLQzR4YWdPZVNQQmNXMw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278909168723892971533824194747133259073183426786820230", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581960999718 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:36:39.718Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOjK47CjJHQAAAABBWEJVT25LaU5VNGJ4LUE3NUdDVw", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "c7f4482d-c43d-4997-a3b7-3dad41886604" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910627794749075796904565143397822812163733898723328", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961065144 + }, + "message": "[WARNING]\t2020-02-17T17:37:45.144Z\tc7f4482d-c43d-4997-a3b7-3dad41886604\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961064, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"d707ca40-fbba-4524-bb54-c179882959b5\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:37:45.144Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOjM47CjJHgAAAABBWEJVT25LaU5VNGJ4LUE3NUdDWA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "c7f4482d-c43d-4997-a3b7-3dad41886604" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910630649244461208824327259969761711154006664216577", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961065272 + }, + "message": "[WARNING]\t2020-02-17T17:37:45.272Z\tc7f4482d-c43d-4997-a3b7-3dad41886604\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961065, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"fd3f841a-71f3-4590-9c5c-d9c5b1f418d5\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:37:45.272Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOjM87CjJJQAAAABBWEJVT25LaU5VNGJ4LUE3NUdDZQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910630716146696804416196684576916529099091182157832", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961065276 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:37:45.276Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOjYD7CjJKQAAAABBWEJVT25MM05VNGJ4LUE3NUdmWg", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a3c23d3a-c7b6-4bea-b56c-2fe3e23d0f4b" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910646571976532959689250316472608382084121934233612", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961065987 + }, + "message": "[WARNING]\t2020-02-17T17:37:45.987Z\ta3c23d3a-c7b6-4bea-b56c-2fe3e23d0f4b\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961065, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"c6084819-e304-4277-8b15-d07dec2ebeee\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:37:45.987Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOjaE7CjJKgAAAABBWEJVT25MM05VNGJ4LUE3NUdmYQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "a3c23d3a-c7b6-4bea-b56c-2fe3e23d0f4b" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910649448772663570139635574580265553722756205707277", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961066116 + }, + "message": "[WARNING]\t2020-02-17T17:37:46.116Z\ta3c23d3a-c7b6-4bea-b56c-2fe3e23d0f4b\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961065, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"de994b4c-55ba-4400-bc5e-cd2a19e92378\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:37:46.116Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOjaJ7CjJMQAAAABBWEJVT25MM05VNGJ4LUE3NUdmaA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910649560276389562792751282258856916964563735609364", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961066121 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:37:46.121Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOjnU7CjJNQAAAABBWEJVT25MM05VNGJ4LUE3NUdmbA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "797c2727-93cb-4d1b-a8bb-7c5c9b40d0bc" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910668359804591924108059596869360759533313277100056", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961066964 + }, + "message": "[WARNING]\t2020-02-17T17:37:46.964Z\t797c2727-93cb-4d1b-a8bb-7c5c9b40d0bc\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961066, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"5beebac9-4756-4c6e-a5e1-2a8247ec196b\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:37:46.964Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOjpZ7CjJPQAAAABBWEJVT25MM05VNGJ4LUE3NUdmdA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910671325803703328680937421119891021765393572495392", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961067097 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:37:47.097Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOj2a7CjJNgAAAABBWEJVT25MM05VNGJ4LUE3NUdmbQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "797c2727-93cb-4d1b-a8bb-7c5c9b40d0bc" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910671236600722534558444854977017931171947548573721", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961067930 + }, + "message": "[WARNING]\t2020-02-17T17:37:47.93Z\t797c2727-93cb-4d1b-a8bb-7c5c9b40d0bc\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961066, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"6e021ff5-2653-4aac-89fa-bd1624a33674\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:37:47.930Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOj6p7CjJQQAAAABBWEJVT25OTk5VNGJ4LUE3NUd3cA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "5e3633d1-3337-471a-bea1-45a76b1285a6" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910695945826402506488885676552864025556496174874660", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961068201 + }, + "message": "[WARNING]\t2020-02-17T17:37:48.201Z\t5e3633d1-3337-471a-bea1-45a76b1285a6\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961068, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"b24e1dfa-0397-4d59-87ea-2fc1fc22117b\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:37:48.201Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOj8r7CjJQgAAAABBWEJVT25OTk5VNGJ4LUE3NUd3cQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "5e3633d1-3337-471a-bea1-45a76b1285a6" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910698844923278315469894076196239469843491952328741", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961068331 + }, + "message": "[WARNING]\t2020-02-17T17:37:48.331Z\t5e3633d1-3337-471a-bea1-45a76b1285a6\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961068, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"48492fff-6477-41d0-813b-1f518ea927d1\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:37:48.331Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOj8v7CjJSQAAAABBWEJVT25OTk5VNGJ4LUE3NUd3eA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278910698934126259109592386642339112560436937976250412", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961068335 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:37:48.335Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOvz-olgpTAAAAABBWEJVT3YtUUZZNkduTFVZQ2RMLQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "4fa5c502-7734-47f9-85be-7614bcf1c3dd" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278911782549636200911101501410478619824248558506672128", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961116926 + }, + "message": "[WARNING]\t2020-02-17T17:38:36.926Z\t4fa5c502-7734-47f9-85be-7614bcf1c3dd\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961116, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"04d0b9a2-f18c-4c82-9b8f-4c9e665e1c6c\", \"body\": {\"trace\": {\"frames\": [{\"filename\": \"/var/task/chalice/app.py\", \"lineno\": 731, \"method\": \"_get_view_function_response\", \"code\": \"response = view_function(**function_args)\", \"argspec\": [\"self\", \"view_function\", \"function_args\"], \"locals\": {\"headers\": {}, \"function_args\": {}, \"view_function\": \"\", \"self\": \"\"}}, {\"filename\": \"/var/task/app.py\", \"lineno\": 1874, \"method\": \"async_send_admin_welcome\", \"code\": \"1 / 0\", \"locals\": {\"params\": {\"sessionId\": \"123456\"}}}], \"exception\": {\"class\": \"ZeroDivisionError\", \"message\": \"division by zero\"}}}, \"custom\": {\"asayerSessionId\": \"123456\"}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:38:36.926Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOv2B1nf01AAAAABBWEJVT3pvdTJLeXpRX1FIVmRORA", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod" + }, + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278911785471033821918613151291457774968821827287580678", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961117057 + }, + "message": "ZeroDivisionError: [asayer_session_id=123456] division by zero", + "timestamp": "2020-02-17T17:38:37.057Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + }, + { + "id": "AQAAAXBUOv9atLL4TQAAAABBWEJVT3YtaFVreVN1OHh3M1dRRQ", + "content": { + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "attributes": { + "lambda": { + "arn": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "request_id": "4fa5c502-7734-47f9-85be-7614bcf1c3dd" + }, + "level": "WARNING", + "service": "lambda", + "host": "arn:aws:lambda:eu-central-1:998611063711:function:parrot-preprod", + "id": "35278911785404131586323021263680787087390697352578465792", + "aws": { + "awslogs": { + "owner": "998611063711", + "logGroup": "/aws/lambda/parrot-preprod", + "logStream": "2020/02/17/[$LATEST]0c50a28217504eb7b706e8ac1c64b702" + }, + "invoked_function_arn": "arn:aws:lambda:eu-central-1:998611063711:function:serverlessrepo-Datadog-Log-For-loglambdaddfunction-2FEJZRLZFKS", + "function_version": "$LATEST" + }, + "timestamp": 1581961117530 + }, + "message": "[WARNING]\t2020-02-17T17:38:37.53Z\t4fa5c502-7734-47f9-85be-7614bcf1c3dd\tRollbar: over rate limit, data was dropped. Payload was: '{\"access_token\": \"940d9aeee5c84024be6a244fe1965599\", \"data\": {\"timestamp\": 1581961116, \"environment\": \"production\", \"level\": \"error\", \"language\": \"python 3.6.10\", \"notifier\": {\"name\": \"pyrollbar\", \"version\": \"0.14.7\"}, \"uuid\": \"03875b42-dd90-4c74-876a-9c3862910315\", \"body\": {\"message\": {\"body\": \"division by zero\", \"asayerSessionId\": \"123456\"}}, \"server\": {\"host\": \"169.254.36.117\", \"pid\": 1, \"argv\": [\"/var/runtime/awslambda/bootstrap.py\"]}}}'", + "timestamp": "2020-02-17T17:38:37.530Z", + "tags": [ + "functionname:parrot-preprod", + "source:lambda", + "forwardername:serverlessrepo-datadog-log-for-loglambdaddfunction-2fejzrlzfks", + "forwarder_version:1.4.1", + "memorysize:1024", + "functionname:parrot-preprod", + "sourcecategory:aws", + "source:lambda" + ] + } + } + ], + "nextLogId": null, + "status": "done", + "requestId": "c2NEeVF4MWNTaXl2QUVGRDRFMWgyUXx0YlJRWTJnaXNiVEtEaWxEMWp6VGF3" +} diff --git a/backend/services/integrations/integration/elasticsearch.go b/backend/services/integrations/integration/elasticsearch.go new file mode 100644 index 000000000..66389f7b9 --- /dev/null +++ b/backend/services/integrations/integration/elasticsearch.go @@ -0,0 +1,193 @@ +package integration + +import ( + elasticlib "github.com/elastic/go-elasticsearch/v7" + "context" + "time" + "encoding/json" + "fmt" + "bytes" + "strconv" + + "openreplay/backend/pkg/utime" + "openreplay/backend/pkg/messages" +) + + +type elasticsearch struct { + Host string + Port json.Number + ApiKeyId string //`json:"api_key_id"` + ApiKey string //`json:"api_key"` + Indexes string +} + +type elasticsearchLog struct { + Message string + Time time.Time `json:"utc_time"` // Should be parsed automatically from RFC3339 +} + +type elasticResponce struct { + Hits struct { + //Total struct { + // Value int + //} + Hits []struct { + Id string `json:"_id"` + Source json.RawMessage `json:"_source"` + } + } + ScrollId string `json:"_scroll_id"` +} + + +func (es *elasticsearch) Request(c* client) error { + address := es.Host + ":" + es.Port.String() + cfg := elasticlib.Config{ + Addresses: []string{ + address, + }, + Username: es.ApiKeyId, + Password: es.ApiKey, + } + esC, err := elasticlib.NewClient(cfg) + + if err != nil { + return err + } + + // TODO: ping/versions/ client host check + // res0, err := esC.Info() + // if err != nil { + // log.Printf("ELASTIC Error getting info: %s", err) + // } + // defer res0.Body.Close() + // // Check response status + // if res0.IsError() { + // log.Printf("ELASTIC Error: %s", res0.String()) + // } + // log.Printf("ELASTIC Info: %v ", res0.String()) + + gteTs := c.getLastMessageTimestamp() + 1000 // Sec or millisec to add ? + + var buf bytes.Buffer + query := map[string]interface{}{ + "query": map[string]interface{}{ + "bool": map[string]interface{}{ + "filter": []map[string]interface{}{ + map[string]interface{}{ + "match": map[string]interface{} { + "message": map[string]interface{}{ + "query": "openReplaySessionToken=", // asayer_session_id= + }, + }, + }, + map[string]interface{}{ + "range": map[string]interface{} { + "utc_time": map[string]interface{}{ + "gte": strconv.FormatUint(gteTs, 10), + "lte": "now", + }, + }, + }, + map[string]interface{}{ + "term": map[string]interface{}{ + "tags": "error", + }, + }, + }, + }, + }, + } + if err := json.NewEncoder(&buf).Encode(query); err != nil { + return fmt.Errorf("Error encoding the query: %s", err) + } + + res, err := esC.Search( + esC.Search.WithContext(context.Background()), + esC.Search.WithIndex(es.Indexes), + esC.Search.WithSize(1000), + esC.Search.WithScroll(time.Minute * 2), + esC.Search.WithBody(&buf), + esC.Search.WithSort("timestamp:asc"), + ) + if err != nil { + return fmt.Errorf("Error getting response: %s", err) + } + defer res.Body.Close() + if res.IsError() { + var e map[string]interface{} + if err := json.NewDecoder(res.Body).Decode(&e); err != nil { + return fmt.Errorf("Error parsing the response body: %v", err) + } else { + return fmt.Errorf("Elasticsearch [%s] %s: %s", + res.Status(), + e["error"],//.(map[string]interface{})["type"], + e["error"],//.(map[string]interface{})["reason"], + ) + } + } + + for { + var esResp elasticResponce + if err := json.NewDecoder(res.Body).Decode(&esResp); err != nil { + return fmt.Errorf("Error parsing the response body: %s", err) + } + if len(esResp.Hits.Hits) == 0 { + break + } + + for _, hit := range esResp.Hits.Hits { + var esLog elasticsearchLog + if err = json.Unmarshal(hit.Source, &esLog); err != nil { + c.errChan <- err + continue + } + token, err := GetToken(esLog.Message) + if err != nil { + c.errChan <- err + continue + } + //parsedTime, err := time.Parse(time.RFC3339, esLog.Timestamp) + //if err != nil { + // c.errChan <- err + // continue + //} + timestamp := uint64(utime.ToMilliseconds(esLog.Time)) + c.setLastMessageTimestamp(timestamp) + c.evChan <- &SessionErrorEvent{ + //SessionID: sessionID, + Token: token, + RawErrorEvent: &messages.RawErrorEvent{ + Source: "elasticsearch", + Timestamp: timestamp, + Name: hit.Id, // sure? + Payload: string(hit.Source), + }, + } + } + + res, err = esC.Scroll( + esC.Scroll.WithContext(context.Background()), + esC.Scroll.WithScrollID(esResp.ScrollId), + esC.Scroll.WithScroll(time.Minute * 2), + ) + if err != nil { + return fmt.Errorf("Error getting scroll response: %s", err) + } + defer res.Body.Close() + if res.IsError() { + var e map[string]interface{} + if err := json.NewDecoder(res.Body).Decode(&e); err != nil { + return fmt.Errorf("Error parsing the response body: %v", err) + } else { + return fmt.Errorf("Elasticsearch [%s] %s: %s", + res.Status(), + e["error"],//.(map[string]interface{})["type"], + e["error"],//.(map[string]interface{})["reason"], + ) + } + } + } + return nil +} \ No newline at end of file diff --git a/backend/services/integrations/integration/elasticsearch.json b/backend/services/integrations/integration/elasticsearch.json new file mode 100644 index 000000000..bfeeb2843 --- /dev/null +++ b/backend/services/integrations/integration/elasticsearch.json @@ -0,0 +1,469 @@ +{ + "took" : 2, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "skipped" : 0, + "failed" : 0 + }, + "hits" : { + "total" : { + "value" : 10, + "relation" : "eq" + }, + "max_score" : null, + "hits" : [ + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "TaSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://www.elastic-elastic-elastic.com/success/christopher-loria", + "request" : "/elasticsearch", + "agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1", + "extension" : "", + "memory" : null, + "ip" : "245.169.167.67", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]245.169.167.67 - - [2018-08-03T16:20:11.988Z] "GET /elasticsearch HTTP/1.1" 200 9950 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1"""", + "url" : "https://www.elastic.co/downloads/elasticsearch", + "tags" : [ + "success", + "info", + "error" + ], + "geo" : { + "srcdest" : "PK:RW", + "src" : "PK", + "coordinates" : { + "lon" : -76.069, + "lat" : 38.80416667 + }, + "dest" : "RW" + }, + "utc_time" : "2020-02-21T16:20:11.988Z", + "bytes" : 9950, + "machine" : { + "os" : "osx", + "ram" : 18253611008 + }, + "response" : 200, + "clientip" : "245.169.167.67", + "host" : "www.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T16:20:11.988Z" + }, + "sort" : [ + 1582302011988 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "fKSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://facebook.com/error/charles-fullerton", + "request" : "/elasticsearch", + "agent" : "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24", + "extension" : "", + "memory" : null, + "ip" : "26.150.255.63", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]26.150.255.63 - - [2018-08-03T16:20:52.802Z] "GET /elasticsearch HTTP/1.1" 200 7330 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24"""", + "url" : "https://www.elastic.co/downloads/elasticsearch", + "tags" : [ + "success", + "info", + "error" + ], + "geo" : { + "srcdest" : "US:FR", + "src" : "US", + "coordinates" : { + "lon" : -82.70288889, + "lat" : 34.80997222 + }, + "dest" : "FR" + }, + "utc_time" : "2020-02-21T16:20:52.802Z", + "bytes" : 7330, + "machine" : { + "os" : "ios", + "ram" : 17179869184 + }, + "response" : 200, + "clientip" : "26.150.255.63", + "host" : "www.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T16:20:52.802Z" + }, + "sort" : [ + 1582302052802 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "QqSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://nytimes.com/warning/yelena-kondakova", + "request" : "/enterprise", + "agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1", + "extension" : "", + "memory" : null, + "ip" : "6.63.231.192", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]6.63.231.192 - - [2018-08-03T16:24:33.154Z] "GET /enterprise HTTP/1.1" 503 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1"""", + "url" : "https://www.elastic.co/downloads/enterprise", + "tags" : [ + "success", + "login", + "error" + ], + "geo" : { + "srcdest" : "BR:IN", + "src" : "BR", + "coordinates" : { + "lon" : -91.67833333, + "lat" : 40.12916667 + }, + "dest" : "IN" + }, + "utc_time" : "2020-02-21T16:24:33.154Z", + "bytes" : 0, + "machine" : { + "os" : "osx", + "ram" : 21474836480 + }, + "response" : 503, + "clientip" : "6.63.231.192", + "host" : "www.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T16:24:33.154Z" + }, + "sort" : [ + 1582302273154 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "t6SPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://nytimes.com/success/ronald-grabe", + "request" : "/", + "agent" : "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24", + "extension" : "", + "memory" : null, + "ip" : "111.58.155.54", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]111.58.155.54 - - [2018-08-03T16:26:12.645Z] "GET / HTTP/1.1" 200 3354 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24"""", + "url" : "https://www.elastic.co/downloads", + "tags" : [ + "success", + "info", + "error" + ], + "geo" : { + "srcdest" : "CN:CN", + "src" : "CN", + "coordinates" : { + "lon" : -93.30739306, + "lat" : 31.99071694 + }, + "dest" : "CN" + }, + "utc_time" : "2020-02-21T16:26:12.645Z", + "bytes" : 3354, + "machine" : { + "os" : "win 8", + "ram" : 9663676416 + }, + "response" : 200, + "clientip" : "111.58.155.54", + "host" : "www.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T16:26:12.645Z" + }, + "sort" : [ + 1582302372645 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "lqSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://www.elastic-elastic-elastic.com/warning/gregory-h-johnson", + "request" : "/styles/ad-blocker.css", + "agent" : "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24", + "extension" : "css", + "memory" : null, + "ip" : "85.130.95.75", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]85.130.95.75 - - [2018-08-03T16:36:29.881Z] "GET /styles/ad-blocker.css HTTP/1.1" 200 7755 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24"""", + "url" : "https://cdn.elastic-elastic-elastic.org/styles/ad-blocker.css", + "tags" : [ + "warning", + "login", + "error" + ], + "geo" : { + "srcdest" : "US:CD", + "src" : "US", + "coordinates" : { + "lon" : -80.09559417, + "lat" : 26.68316194 + }, + "dest" : "CD" + }, + "utc_time" : "2020-02-21T16:36:29.881Z", + "bytes" : 7755, + "machine" : { + "os" : "win 8", + "ram" : 18253611008 + }, + "response" : 200, + "clientip" : "85.130.95.75", + "host" : "cdn.elastic-elastic-elastic.org", + "phpmemory" : null, + "timestamp" : "2020-02-21T16:36:29.881Z" + }, + "sort" : [ + 1582302989881 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "qqSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://nytimes.com/success/liu-wang", + "request" : "/elasticsearch", + "agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1", + "extension" : "", + "memory" : null, + "ip" : "107.238.94.231", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]107.238.94.231 - - [2018-08-03T16:52:30.202Z] "GET /elasticsearch HTTP/1.1" 503 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1"""", + "url" : "https://www.elastic.co/downloads/elasticsearch", + "tags" : [ + "success", + "security", + "error" + ], + "geo" : { + "srcdest" : "CN:BR", + "src" : "CN", + "coordinates" : { + "lon" : -85.24216667, + "lat" : 37.63355556 + }, + "dest" : "BR" + }, + "utc_time" : "2020-02-21T16:52:30.202Z", + "bytes" : 0, + "machine" : { + "os" : "osx", + "ram" : 9663676416 + }, + "response" : 503, + "clientip" : "107.238.94.231", + "host" : "www.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T16:52:30.202Z" + }, + "sort" : [ + 1582303950202 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "5KSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://facebook.com/success/edward-gibson", + "request" : "/beats/filebeat", + "agent" : "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24", + "extension" : "", + "memory" : null, + "ip" : "231.185.3.235", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]231.185.3.235 - - [2018-08-03T16:54:58.604Z] "GET /beats/filebeat HTTP/1.1" 200 7616 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24"""", + "url" : "https://www.elastic.co/downloads/beats/filebeat", + "tags" : [ + "success", + "security", + "error" + ], + "geo" : { + "srcdest" : "BO:IN", + "src" : "BO", + "coordinates" : { + "lon" : -151.1913661, + "lat" : 61.965295 + }, + "dest" : "IN" + }, + "utc_time" : "2020-02-21T16:54:58.604Z", + "bytes" : 7616, + "machine" : { + "os" : "osx", + "ram" : 13958643712 + }, + "response" : 200, + "clientip" : "231.185.3.235", + "host" : "www.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T16:54:58.604Z" + }, + "sort" : [ + 1582304098604 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "6aSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://www.elastic-elastic-elastic.com/success/umberto-guidoni", + "request" : "/beats/filebeat/filebeat-6.3.2-linux-x86.tar.gz", + "agent" : "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24", + "extension" : "gz", + "memory" : null, + "ip" : "251.250.144.158", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]251.250.144.158 - - [2018-08-03T17:01:11.333Z] "GET /beats/filebeat/filebeat-6.3.2-linux-x86.tar.gz HTTP/1.1" 200 9860 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24"""", + "url" : "https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-linux-x86.tar.gz", + "tags" : [ + "success", + "info", + "error" + ], + "geo" : { + "srcdest" : "IN:IT", + "src" : "IN", + "coordinates" : { + "lon" : -92.464455, + "lat" : 39.72870694 + }, + "dest" : "IT" + }, + "utc_time" : "2020-02-21T17:01:11.333Z", + "bytes" : 9860, + "machine" : { + "os" : "ios", + "ram" : 6442450944 + }, + "response" : 200, + "clientip" : "251.250.144.158", + "host" : "artifacts.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T17:01:11.333Z" + }, + "sort" : [ + 1582304471333 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "uaSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://www.elastic-elastic-elastic.com/success/daniel-barry", + "request" : "/kibana/kibana-6.3.2-linux-x86_64.tar.gz", + "agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1", + "extension" : "gz", + "memory" : null, + "ip" : "247.50.93.227", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]247.50.93.227 - - [2018-08-03T17:08:38.706Z] "GET /kibana/kibana-6.3.2-linux-x86_64.tar.gz HTTP/1.1" 200 3119 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1"""", + "url" : "https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-linux-x86_64.tar.gz", + "tags" : [ + "success", + "info", + "error" + ], + "geo" : { + "srcdest" : "IN:US", + "src" : "IN", + "coordinates" : { + "lon" : -90.32484722, + "lat" : 36.77394444 + }, + "dest" : "US" + }, + "utc_time" : "2020-02-21T17:08:38.706Z", + "bytes" : 3119, + "machine" : { + "os" : "osx", + "ram" : 9663676416 + }, + "response" : 200, + "clientip" : "247.50.93.227", + "host" : "artifacts.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T17:08:38.706Z" + }, + "sort" : [ + 1582304918706 + ] + }, + { + "_index" : "kibana_sample_data_logs", + "_type" : "_doc", + "_id" : "MKSPaHABZ3Nzf4SJcTnh", + "_score" : null, + "_source" : { + "referer" : "http://twitter.com/success/anthony-w-england", + "request" : "/elasticsearch/elasticsearch-6.3.2.zip", + "agent" : "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24", + "extension" : "zip", + "memory" : null, + "ip" : "179.153.116.46", + "index" : "kibana_sample_data_logs", + "message" : """[asayer_session_id=123456677890]179.153.116.46 - - [2018-08-03T17:11:18.968Z] "GET /elasticsearch/elasticsearch-6.3.2.zip HTTP/1.1" 200 4685 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24"""", + "url" : "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.zip", + "tags" : [ + "success", + "info", + "error" + ], + "geo" : { + "srcdest" : "IN:IT", + "src" : "IN", + "coordinates" : { + "lon" : -97.10931306, + "lat" : 40.86525806 + }, + "dest" : "IT" + }, + "utc_time" : "2020-02-21T17:11:18.968Z", + "bytes" : 4685, + "machine" : { + "os" : "ios", + "ram" : 4294967296 + }, + "response" : 200, + "clientip" : "179.153.116.46", + "host" : "artifacts.elastic.co", + "phpmemory" : null, + "timestamp" : "2020-02-21T17:11:18.968Z" + }, + "sort" : [ + 1582305078968 + ] + } + ] + } +} diff --git a/backend/services/integrations/integration/newrelic.go b/backend/services/integrations/integration/newrelic.go new file mode 100644 index 000000000..937ab166d --- /dev/null +++ b/backend/services/integrations/integration/newrelic.go @@ -0,0 +1,104 @@ +package integration + +import ( + "encoding/json" + "time" + "fmt" + "net/http" + "io" + "io/ioutil" + "errors" + + "openreplay/backend/pkg/messages" +) + +/* + We use insights-api for query. They also have Logs and Events +*/ + + +// TODO: Eu/us +type newrelic struct { + ApplicationId string //`json:"application_id"` + XQueryKey string //`json:"x_query_key"` +} + +// TODO: Recheck +type newrelicResponce struct { + Results []struct { + Events []json.RawMessage + } + // Metadata +} + +type newrelicEvent struct { + //AsayerSessionID uint64 `json:"asayer_session_id,string"` // string/int decoder? + OpenReplaySessionToken string `json:"openReplaySessionToken"` + ErrorClass string `json:"error.class"` + Timestamp uint64 `json:"timestamp"` +} + +func (nr *newrelic) Request(c *client) error { + sinceTs := c.getLastMessageTimestamp() + 1000 // From next second + // In docs - format "yyyy-mm-dd HH:MM:ss", but time.RFC3339 works fine too + sinceFormatted := time.Unix(0, int64(sinceTs*1e6)).Format(time.RFC3339) + // US/EU endpoint ?? + requestURL := fmt.Sprintf("https://insights-api.eu.newrelic.com/v1/accounts/%v/query", nr.ApplicationId) + req, err := http.NewRequest("GET", requestURL, nil) + if err != nil { + return err + } + + // The docks and api are awfull. Seems like SINCE works inclusively. + nrql := fmt.Sprintf("SELECT * FROM TransactionError SINCE '%v' WHERE openReplaySessionToken IS NOT NULL", sinceFormatted) + q := req.URL.Query() + q.Add("nrql", nrql) + req.URL.RawQuery = q.Encode() + + req.Header.Add("X-Query-Key", nr.XQueryKey) + req.Header.Add("Accept", "application/json") + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + + // 401 (unauthorised) if wrong XQueryKey/deploymentServer is wrong or 403 (Forbidden) if ApplicationId is wrong + // 400 if Query has problems + if resp.StatusCode >= 400 { + io.Copy(ioutil.Discard, resp.Body) // Read the body to free socket + return fmt.Errorf("Newrelic: server respond with the code %v| Request: ", resp.StatusCode, *req) + } + // Pagination depending on returning metadata ? + var nrResp newrelicResponce + if err = json.NewDecoder(resp.Body).Decode(&nrResp); err != nil { + return err + } + for _, r := range nrResp.Results { + for _, jsonEvent := range r.Events { + var e newrelicEvent + if err = json.Unmarshal(jsonEvent, &e); err != nil { + c.errChan <- err + continue + } + if e.OpenReplaySessionToken == "" { + c.errChan <- errors.New("Token is empty") + continue + } + + c.setLastMessageTimestamp(e.Timestamp) + c.evChan <- &SessionErrorEvent{ + Token: e.OpenReplaySessionToken, + RawErrorEvent: &messages.RawErrorEvent{ + Source: "newrelic", + Timestamp: e.Timestamp, + Name: e.ErrorClass, + Payload: string(jsonEvent), + }, + } + } + } + return nil +} \ No newline at end of file diff --git a/backend/services/integrations/integration/newrelic.json b/backend/services/integrations/integration/newrelic.json new file mode 100644 index 000000000..2730220e8 --- /dev/null +++ b/backend/services/integrations/integration/newrelic.json @@ -0,0 +1,153 @@ +{ + "results": [ + { + "events": [ + { + "aggregateFacet": "WebTransaction/Function/flaskr.auth:register::builtins:ZeroDivisionError", + "appId": 28925082, + "appName": "My Flask Python Application", + "duration": 0.0017523765563964844, + "entityGuid": "MjYyNzMzN3xBUE18QVBQTElDQVRJT058Mjg5MjUwODI", + "error.class": "builtins:ZeroDivisionError", + "error.message": "division by zero", + "host": "new-relic-flask2", + "port": 8080, + "realAgentId": 28925084, + "request.headers.accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "request.headers.host": "35.236.108.92:8080", + "request.headers.referer": "http://35.236.108.92:8080/", + "request.headers.userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36", + "request.method": "GET", + "request.uri": "/auth/register", + "thread.concurrency": 0.9917959662585014, + "timestamp": 1582133149351, + "transactionName": "WebTransaction/Function/flaskr.auth:register", + "transactionUiName": "/flaskr.auth:register" + }, + { + "aggregateFacet": "WebTransaction/Function/flaskr.auth:register::builtins:ZeroDivisionError", + "appId": 28925082, + "appName": "My Flask Python Application", + "duration": 0.0011684894561767578, + "entityGuid": "MjYyNzMzN3xBUE18QVBQTElDQVRJT058Mjg5MjUwODI", + "error.class": "builtins:ZeroDivisionError", + "error.message": "division by zero", + "host": "new-relic-flask2", + "port": 8080, + "realAgentId": 28925084, + "request.headers.accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "request.headers.host": "35.236.108.92:8080", + "request.headers.referer": "http://35.236.108.92:8080/", + "request.headers.userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36", + "request.method": "GET", + "request.uri": "/auth/register", + "thread.concurrency": 0.9858882285247911, + "timestamp": 1582133148418, + "transactionName": "WebTransaction/Function/flaskr.auth:register", + "transactionUiName": "/flaskr.auth:register" + }, + { + "aggregateFacet": "WebTransaction/Function/flaskr.auth:register::builtins:ZeroDivisionError", + "appId": 28925082, + "appName": "My Flask Python Application", + "duration": 0.0011768341064453125, + "entityGuid": "MjYyNzMzN3xBUE18QVBQTElDQVRJT058Mjg5MjUwODI", + "error.class": "builtins:ZeroDivisionError", + "error.message": "division by zero", + "host": "new-relic-flask2", + "port": 8080, + "realAgentId": 28925084, + "request.headers.accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "request.headers.host": "35.236.108.92:8080", + "request.headers.referer": "http://35.236.108.92:8080/", + "request.headers.userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36", + "request.method": "GET", + "request.uri": "/auth/register", + "thread.concurrency": 0.9890943792544556, + "timestamp": 1582133147569, + "transactionName": "WebTransaction/Function/flaskr.auth:register", + "transactionUiName": "/flaskr.auth:register" + }, + { + "aggregateFacet": "WebTransaction/Function/flaskr.auth:register::builtins:ZeroDivisionError", + "appId": 28925082, + "appName": "My Flask Python Application", + "duration": 0.0011293888092041016, + "entityGuid": "MjYyNzMzN3xBUE18QVBQTElDQVRJT058Mjg5MjUwODI", + "error.class": "builtins:ZeroDivisionError", + "error.message": "division by zero", + "host": "new-relic-flask2", + "port": 8080, + "realAgentId": 28925084, + "request.headers.accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "request.headers.host": "35.236.108.92:8080", + "request.headers.referer": "http://35.236.108.92:8080/", + "request.headers.userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36", + "request.method": "GET", + "request.uri": "/auth/register", + "thread.concurrency": 0.986374214903945, + "timestamp": 1582133146601, + "transactionName": "WebTransaction/Function/flaskr.auth:register", + "transactionUiName": "/flaskr.auth:register" + }, + { + "aggregateFacet": "WebTransaction/Function/flaskr.auth:register::builtins:ZeroDivisionError", + "appId": 28925082, + "appName": "My Flask Python Application", + "duration": 0.0011687278747558594, + "entityGuid": "MjYyNzMzN3xBUE18QVBQTElDQVRJT058Mjg5MjUwODI", + "error.class": "builtins:ZeroDivisionError", + "error.message": "division by zero", + "host": "new-relic-flask2", + "port": 8080, + "realAgentId": 28925084, + "request.headers.accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "request.headers.host": "35.236.108.92:8080", + "request.headers.referer": "http://35.236.108.92:8080/", + "request.headers.userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36", + "request.method": "GET", + "request.uri": "/auth/register", + "thread.concurrency": 0.9839758465932258, + "timestamp": 1582133139999, + "transactionName": "WebTransaction/Function/flaskr.auth:register", + "transactionUiName": "/flaskr.auth:register" + } + ] + } + ], + "performanceStats": { + "inspectedCount": 5, + "omittedCount": 0, + "matchCount": 5, + "wallClockTime": 18 + }, + "metadata": { + "eventTypes": [ + "TransactionError" + ], + "eventType": "TransactionError", + "openEnded": false, + "beginTime": "2020-02-18T18:00:00Z", + "endTime": "2020-02-19T19:38:58Z", + "beginTimeMillis": 1582048800000, + "endTimeMillis": 1582141138000, + "rawSince": "'2020-02-18T18:00:00Z'", + "rawUntil": "'2020-02-19T19:38:58Z'", + "rawCompareWith": "", + "guid": "5890296a-5092-5fcc-f05d-b55dbeb8a500", + "routerGuid": "729a50a2-a73f-5d88-cd1f-ea0a9ace54a6", + "messages": [ + "Your query's end time is in the future. Results may be incomplete." + ], + "contents": [ + { + "function": "events", + "limit": 100, + "order": { + "column": "timestamp", + "descending": true + } + } + ] + } +} diff --git a/backend/services/integrations/integration/newrelic_empty.json b/backend/services/integrations/integration/newrelic_empty.json new file mode 100644 index 000000000..1971eb592 --- /dev/null +++ b/backend/services/integrations/integration/newrelic_empty.json @@ -0,0 +1,42 @@ +{ + "results": [ + { + "events": [] + } + ], + "performanceStats": { + "inspectedCount": 0, + "omittedCount": 0, + "matchCount": 0, + "wallClockTime": 10 + }, + "metadata": { + "eventTypes": [ + "TransactionError" + ], + "eventType": "TransactionError", + "openEnded": true, + "beginTime": "2014-08-04T00:00:00Z", + "endTime": "2020-02-14T18:04:23Z", + "beginTimeMillis": 1407110400000, + "endTimeMillis": 1581703463865, + "rawSince": "'2014-08-04 00:00:00'", + "rawUntil": "NOW", + "rawCompareWith": "", + "guid": "27d3fd61-735a-ab46-51b4-f96f07226d2b", + "routerGuid": "979f0b32-b13b-fad1-7577-60f2025da513", + "messages": [ + "No events found -- do you have the correct event type and time range?" + ], + "contents": [ + { + "function": "events", + "limit": 100, + "order": { + "column": "timestamp", + "descending": true + } + } + ] + } +} diff --git a/backend/services/integrations/integration/rollbar.go b/backend/services/integrations/integration/rollbar.go new file mode 100644 index 000000000..369ee31f9 --- /dev/null +++ b/backend/services/integrations/integration/rollbar.go @@ -0,0 +1,176 @@ +package integration + +import ( + "net/http" + "encoding/json" + "fmt" + "time" + "strings" + "strconv" + "io" + "io/ioutil" + "errors" + + "openreplay/backend/pkg/messages" +) + +// Old name: asayerSessionId + +// QUERY: what can be modified? +const RB_QUERY = + "SELECT item.id, item.title,body.message.openReplaySessionToken,item.level,"+ + " item.counter,item.environment,body.crash_report.raw,body.message.body,timestamp"+ + " FROM item_occurrence"+ + " WHERE body.message.openReplaySessionToken != null"+ + " AND timestamp>= %v"+ + " AND item.level>30"+ + " ORDER BY timestamp"+ + " LIMIT 1000" +// ASC by default +// \n\t symbols can spoil the request body, so it wouldn't work (OR probably it happend because of job hashing) + +/* + - `read` Access Token required + - timstamp in seconds +*/ + +type rollbar struct { + AccessToken string // `json:"access_token"` +} + +type rollbarJobResponce struct { + Err int + Message string + Result struct { + Id int + } +} + +type rollbarJobStatusResponce struct { + Err int + Result struct { + Status string + Result struct { + Rows [][] json.Number + Columns[] string + } + } +} + +type rollbarEvent map[string]string + +/* + It is possible to use /api/1/instances (20 per page) + Jobs for the identical requests are hashed +*/ +func (rb *rollbar) Request(c *client) error { + fromTs := c.getLastMessageTimestamp() + 1000 // From next second + c.setLastMessageTimestamp(fromTs) // anti-job-hashing + fromTsSec := fromTs / 1e3 + query := fmt.Sprintf(RB_QUERY, fromTsSec) + jsonBody := fmt.Sprintf(`{ + "access_token": "%v", + "query_string": "%v" + }`, rb.AccessToken, query) + req, err := http.NewRequest("POST", "https://api.rollbar.com/api/1/rql/jobs", strings.NewReader(jsonBody)) + if err != nil { + return err + } + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + // status != 200 || 201 + // status can be 403 then should report about wrong token + if resp.StatusCode >= 400 { + io.Copy(ioutil.Discard, resp.Body) // Read the body to free socket + return fmt.Errorf("Rollbar: server respond with the code %v", resp.StatusCode) + } + + var jobResponce rollbarJobResponce + if err = json.NewDecoder(resp.Body).Decode(&jobResponce); err != nil { + return err + } + if jobResponce.Err != 0 { + return fmt.Errorf("Rollbar job responce error: %v", jobResponce.Message) + } + + requestURL := fmt.Sprintf( + "https://api.rollbar.com/api/1/rql/job/%v?access_token=%v&expand=result", + jobResponce.Result.Id, + rb.AccessToken, + ) + req, err = http.NewRequest("GET", requestURL, nil) + if err != nil { + return err + } + + tick := time.Tick(5 * time.Second) + for { + <- tick + resp, err = http.DefaultClient.Do(req) + if err != nil { + return err // continue + timeout/maxAttempts + } + defer resp.Body.Close() + // status != 200 + var jobStatus rollbarJobStatusResponce + err := json.NewDecoder(resp.Body).Decode(&jobStatus) + if err != nil { + return err + } + + //todo: pagintation; limit: 1000 + + if jobStatus.Result.Status == "success" { + for _, row := range jobStatus.Result.Result.Rows { + e := make(rollbarEvent) + for i, col := range jobStatus.Result.Result.Columns { + //if len(row) <= i { error } + e[ col ] = row[ i ].String() // here I make them all string. That's not good + } + // sessionID, err := strconv.ParseUint(e[ "body.message.asayerSessionId" ], 10, 64) + // if err != nil { + // c.errChan <- err + // continue + // } + if e[ "body.message.openReplaySessionToken" ] == "" { + c.errChan <- errors.New("Token is empty!") + continue + } + payload, err := json.Marshal(e) + if err != nil { + c.errChan <- err + continue + } + timestampSec, err := strconv.ParseUint(e[ "timestamp" ], 10, 64) + if err != nil { + c.errChan <- err + continue + } + timestamp := timestampSec * 1000 + c.setLastMessageTimestamp(timestamp) + c.evChan <- &SessionErrorEvent{ + Token: e[ "body.message.openReplaySessionToken" ], + RawErrorEvent: &messages.RawErrorEvent{ + Source: "rollbar", + Timestamp: timestamp, + Name: e[ "item.title" ], + Payload: string(payload), + }, + } + } + break + } + if jobStatus.Result.Status != "new" && + jobStatus.Result.Status != "running" { + // error + break + } + } + return nil +} \ No newline at end of file diff --git a/backend/services/integrations/integration/rollbar_error.json b/backend/services/integrations/integration/rollbar_error.json new file mode 100644 index 000000000..95dc591db --- /dev/null +++ b/backend/services/integrations/integration/rollbar_error.json @@ -0,0 +1,4 @@ +{ + "err": 1, + "message": "insufficient privileges: read scope is required but the access token only has post_server_item." +} \ No newline at end of file diff --git a/backend/services/integrations/integration/rollbar_job_result.json b/backend/services/integrations/integration/rollbar_job_result.json new file mode 100644 index 000000000..da88b3a08 --- /dev/null +++ b/backend/services/integrations/integration/rollbar_job_result.json @@ -0,0 +1,63 @@ +{ + "err": 0, + "result": { + "status": "success", + "job_hash": "2d7141f57204ea9cfe59304beed947313b538608", + "result": { + "isSimpleSelect": true, + "errors": [ + ], + "warnings": [ + ], + "executionTime": 0.021143198013305664, + "effectiveTimestamp": 1582125712, + "rowcount": 1, + "rows": [ + [ + 866038147, + "division by zero", + "250250", + 40, + 2, + "production", + null, + "division by zero", + 1582125312, + 115079899839 + ] + ], + "selectionColumns": [ + "item.id", + "item.title", + "body.message.asayerSessionId", + "item.level", + "item.counter", + "item.environment", + "body.crash_report.raw", + "body.message.body", + "timestamp" + ], + "projectIds": [ + 349886 + ], + "columns": [ + "item.id", + "item.title", + "body.message.asayerSessionId", + "item.level", + "item.counter", + "item.environment", + "body.crash_report.raw", + "body.message.body", + "timestamp", + "occurrence_id" + ] + }, + "date_modified": 1582125712, + "query_string": "SELECT item.id, item.title,body.message.asayerSessionId,item.level,item.counter,item.environment,body.crash_report.raw,body.message.body,timestamp FROM item_occurrence WHERE body.message.asayerSessionId != null\tAND timestamp>= 1582124402\tAND item.level>30\tORDER BY timestamp\tLIMIT 1000", + "date_created": 1582125712, + "project_id": 349886, + "id": 82765415, + "project_group_id": 16555 + } +} diff --git a/backend/services/integrations/integration/rollbar_job_start.json b/backend/services/integrations/integration/rollbar_job_start.json new file mode 100644 index 000000000..8d8b5359b --- /dev/null +++ b/backend/services/integrations/integration/rollbar_job_start.json @@ -0,0 +1,13 @@ +{ + "err": 0, + "result": { + "status": "new", + "job_hash": "2d7141f57204ea9cfe59304beed947313b538608", + "date_modified": 1582125712, + "query_string": "SELECT item.id, item.title,body.message.asayerSessionId,item.level,item.counter,item.environment,body.crash_report.raw,body.message.body,timestamp FROM item_occurrence WHERE body.message.asayerSessionId != null\tAND timestamp>= 1582124402\tAND item.level>30\tORDER BY timestamp\tLIMIT 1000", + "date_created": 1582125712, + "project_id": 349886, + "id": 82765415, + "project_group_id": 16555 + } +} diff --git a/backend/services/integrations/integration/sentry.go b/backend/services/integrations/integration/sentry.go new file mode 100644 index 000000000..2ac095a63 --- /dev/null +++ b/backend/services/integrations/integration/sentry.go @@ -0,0 +1,154 @@ +package integration + +import ( + "net/http" + "net/url" + "encoding/json" + "strings" + "fmt" + "time" + "strconv" + "io" + "io/ioutil" + + "openreplay/backend/pkg/utime" + "openreplay/backend/pkg/messages" +) + + +/* + They also have different stuff + Documentation says: + "Note: This endpoint is experimental and may be removed without notice." +*/ + +type sentry struct { + OrganizationSlug string // `json:"organization_slug"` + ProjectSlug string // `json:"project_slug"` + Token string // `json:"token"` +} + +type sentryEvent struct { + Tags []struct { + Key string + Value string `json:"value"` + } + DateCreated string `json:"dateCreated"` // or dateReceived ? + Title string + EventID string `json:"eventID"` +} + + +func (sn *sentry) Request(c *client) error { + requestURL := fmt.Sprintf("https://sentry.io/api/0/projects/%v/%v/events/", sn.OrganizationSlug, sn.ProjectSlug) + req, err := http.NewRequest("GET", requestURL, nil) + if err != nil { + return err + } + authHeader := "Bearer " + sn.Token + req.Header.Add("Authorization", authHeader) + + // by link ? + lastEventId := c.getLastMessageId() + firstEvent := true + +PageLoop: + for { + resp, err := http.DefaultClient.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + if resp.StatusCode >= 400 { + io.Copy(ioutil.Discard, resp.Body) // Read the body to free socket + return fmt.Errorf("Sentry: server respond with the code %v", resp.StatusCode) + } + + var jsonEventList []json.RawMessage + err = json.NewDecoder(resp.Body).Decode(&jsonEventList) + if err != nil { + return err + } + + for _, jsonEvent := range jsonEventList { + var e sentryEvent + err = json.Unmarshal(jsonEvent, &e) + if err != nil { + c.errChan <- err + continue + } + + if lastEventId == e.EventID { + break PageLoop + } + + parsedTime, err := time.Parse(time.RFC3339, e.DateCreated) + if err != nil { + c.errChan <- fmt.Errorf("%v | Event: %v", err, e) + continue + } + timestamp := uint64(utime.ToMilliseconds(parsedTime)) + // TODO: not to receive all the messages (use default integration timestamp) + if firstEvent { // TODO: reverse range? + c.setLastMessageId(timestamp, e.EventID) + firstEvent = false + } + + var sessionID uint64 + var token string + for _, tag := range e.Tags { + if tag.Key == "OpenreplaySession" { + token = tag.Value + break + } + if tag.Key == "asayer_session_id" { + sessionID, err = strconv.ParseUint(tag.Value, 10, 64) + break + } + } + if err != nil { + c.errChan <- err + continue + } + if sessionID == 0 { // We can't felter them on request + continue + } + + c.evChan <- &SessionErrorEvent{ + SessionID: sessionID, + Token: token, + RawErrorEvent: &messages.RawErrorEvent{ + Source: "sentry", + Timestamp: timestamp, + Name: e.Title, + Payload: string(jsonEvent), + }, + } + } + + // check link before parsing body? + linkHeader := resp.Header.Get("Link") + if linkHeader == "" { + return fmt.Errorf("No Link header found in the responce.") + } + pagInfo := strings.Split(linkHeader, ",") + if len(pagInfo) < 2 { + return fmt.Errorf("Link header format error. Got: '%v'", linkHeader) + } + + nextLinkInfo := pagInfo[ 1 ] + if strings.Contains(nextLinkInfo, `results="false"`) { + break + } + if !strings.Contains(nextLinkInfo, `results="true"`) { + return fmt.Errorf("Link header format error. Results status not found. Got: '%v'", linkHeader) + } + nextLink := GetLinkFromAngularBrackets(nextLinkInfo) + req.URL, err = url.Parse(nextLink) + if err != nil { + return err + } + } + return nil +} \ No newline at end of file diff --git a/backend/services/integrations/integration/sentry.json b/backend/services/integrations/integration/sentry.json new file mode 100644 index 000000000..c9b791c6d --- /dev/null +++ b/backend/services/integrations/integration/sentry.json @@ -0,0 +1,4438 @@ +[ + { + "eventID": "f07cccf7831043d48e4501d93455d646", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.9.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "91742e607f184afe9e58c3dd43fddcf1", + "key": "trace" + }, + { + "value": "91742e607f184afe9e58c3dd43fddcf1-89e01ba57559b01c", + "key": "trace.ctx" + }, + { + "value": "89e01ba57559b01c", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:51:14Z", + "user": null, + "message": "", + "id": "f07cccf7831043d48e4501d93455d646", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "d2601fd4b82145f1a8d754a03005688f", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.238.85", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:51:14Z", + "user": null, + "message": "", + "id": "d2601fd4b82145f1a8d754a03005688f", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116070824" + }, + { + "eventID": "a3ffd317170c4708a16fb4a999f39b90", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.152.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "8b2e42df2ada4b4b915deae3a8574a4e", + "key": "trace" + }, + { + "value": "8b2e42df2ada4b4b915deae3a8574a4e-826320136c93cabc", + "key": "trace.ctx" + }, + { + "value": "826320136c93cabc", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:51:14Z", + "user": null, + "message": "", + "id": "a3ffd317170c4708a16fb4a999f39b90", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "997490f56fa941b7b9546ad4493ded8e", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.14.137", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "5c689b0458234e71b56ad1fe57cb00ed", + "key": "trace" + }, + { + "value": "5c689b0458234e71b56ad1fe57cb00ed-aa3761a195b6383e", + "key": "trace.ctx" + }, + { + "value": "aa3761a195b6383e", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:51:14Z", + "user": null, + "message": "", + "id": "997490f56fa941b7b9546ad4493ded8e", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + }, + { + "eventID": "7387392f77ee4922a57440210e22bca1", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.198.37", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "36f2c208d1724c31a0b40dc3128e21be", + "key": "trace" + }, + { + "value": "36f2c208d1724c31a0b40dc3128e21be-9d1edbc0b4aec2d2", + "key": "trace.ctx" + }, + { + "value": "9d1edbc0b4aec2d2", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:38:15Z", + "user": null, + "message": "", + "id": "7387392f77ee4922a57440210e22bca1", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + }, + { + "eventID": "008aa9bac3b447539ce6f813880a6204", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.9.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "91742e607f184afe9e58c3dd43fddcf1", + "key": "trace" + }, + { + "value": "91742e607f184afe9e58c3dd43fddcf1-8064b97f218669e3", + "key": "trace.ctx" + }, + { + "value": "8064b97f218669e3", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:38:15Z", + "user": null, + "message": "", + "id": "008aa9bac3b447539ce6f813880a6204", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116070824" + }, + { + "eventID": "9080b39e779d4b4ebfdc723f1f46339d", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.179.21", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "2d3db3e3dd4e4c84992c7fc6299d2fb9", + "key": "trace" + }, + { + "value": "2d3db3e3dd4e4c84992c7fc6299d2fb9-b4f306612f165f1d", + "key": "trace.ctx" + }, + { + "value": "b4f306612f165f1d", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:38:14Z", + "user": null, + "message": "", + "id": "9080b39e779d4b4ebfdc723f1f46339d", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "7f6b5351867743f9a388d5c20b9123cb", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.9.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "91742e607f184afe9e58c3dd43fddcf1", + "key": "trace" + }, + { + "value": "91742e607f184afe9e58c3dd43fddcf1-8064b97f218669e3", + "key": "trace.ctx" + }, + { + "value": "8064b97f218669e3", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:38:14Z", + "user": null, + "message": "", + "id": "7f6b5351867743f9a388d5c20b9123cb", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "1540e3198824499c81da4f234088b931", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.52.5", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "61a8ed635f414436bedbb4c7c01f048f", + "key": "trace" + }, + { + "value": "61a8ed635f414436bedbb4c7c01f048f-ae9b1968b73aed0c", + "key": "trace.ctx" + }, + { + "value": "ae9b1968b73aed0c", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:38:14Z", + "user": null, + "message": "", + "id": "1540e3198824499c81da4f234088b931", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "97d968028d5e437e87b025dee96e6a0e", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.52.5", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "61a8ed635f414436bedbb4c7c01f048f", + "key": "trace" + }, + { + "value": "61a8ed635f414436bedbb4c7c01f048f-ae9b1968b73aed0c", + "key": "trace.ctx" + }, + { + "value": "ae9b1968b73aed0c", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:38:06Z", + "user": null, + "message": "", + "id": "97d968028d5e437e87b025dee96e6a0e", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "8414ffb72d574b00a2e183a89b8bbab2", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.238.85", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:46Z", + "user": null, + "message": "", + "id": "8414ffb72d574b00a2e183a89b8bbab2", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "5803d9ec146f4be8a3f5a8d302e8ddf3", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.52.5", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "61a8ed635f414436bedbb4c7c01f048f", + "key": "trace" + }, + { + "value": "61a8ed635f414436bedbb4c7c01f048f-95024f2f40862eeb", + "key": "trace.ctx" + }, + { + "value": "95024f2f40862eeb", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:46Z", + "user": null, + "message": "", + "id": "5803d9ec146f4be8a3f5a8d302e8ddf3", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "47b258ce392749d1970ba8806cfac3af", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.9.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "91742e607f184afe9e58c3dd43fddcf1", + "key": "trace" + }, + { + "value": "91742e607f184afe9e58c3dd43fddcf1-a9971d83e8d39ecc", + "key": "trace.ctx" + }, + { + "value": "a9971d83e8d39ecc", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:46Z", + "user": null, + "message": "", + "id": "47b258ce392749d1970ba8806cfac3af", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + }, + { + "eventID": "344dc8e9da5b45e79bd366afc726e71b", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.179.21", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "2d3db3e3dd4e4c84992c7fc6299d2fb9", + "key": "trace" + }, + { + "value": "2d3db3e3dd4e4c84992c7fc6299d2fb9-b4f306612f165f1d", + "key": "trace.ctx" + }, + { + "value": "b4f306612f165f1d", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:46Z", + "user": null, + "message": "", + "id": "344dc8e9da5b45e79bd366afc726e71b", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116070824" + }, + { + "eventID": "b8ee9ea891204a02b605b049001315b6", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.9.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:38Z", + "user": null, + "message": "", + "id": "b8ee9ea891204a02b605b049001315b6", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + }, + { + "eventID": "ad81ff00a30c4d38abb729358bd013ed", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.238.85", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:36Z", + "user": null, + "message": "", + "id": "ad81ff00a30c4d38abb729358bd013ed", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "9a0a2ba486c54b34a30146bc27b4a6d6", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.52.5", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:36Z", + "user": null, + "message": "", + "id": "9a0a2ba486c54b34a30146bc27b4a6d6", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116070824" + }, + { + "eventID": "679ba71075324ab18cd3d42d742ae84d", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.152.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:36Z", + "user": null, + "message": "", + "id": "679ba71075324ab18cd3d42d742ae84d", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "b00313a201034a3db253755c92cd515e", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.198.37", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:10Z", + "user": null, + "message": "", + "id": "b00313a201034a3db253755c92cd515e", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "da3dfb8f7a1e4971ac43444315003f20", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.14.137", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:09Z", + "user": null, + "message": "", + "id": "da3dfb8f7a1e4971ac43444315003f20", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116070824" + }, + { + "eventID": "f6e60cf553bb4d8a949cf11ec1878fd1", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.179.21", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:08Z", + "user": null, + "message": "", + "id": "f6e60cf553bb4d8a949cf11ec1878fd1", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + }, + { + "eventID": "4a6a45f345df4a35b3b43a21187db677", + "tags": [ + { + "value": "525314475541266774", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.238.85", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-10T05:36:07Z", + "user": null, + "message": "", + "id": "4a6a45f345df4a35b3b43a21187db677", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_494, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "871da51bfd7d4c8f85bba05f7830e34f", + "tags": [ + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.10", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.210.77", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-07T01:38:41Z", + "user": null, + "message": "Internal Error for ", + "id": "871da51bfd7d4c8f85bba05f7830e34f", + "culprit": "app in login", + "title": "KeyError: 'email'", + "platform": "python", + "location": "app.py", + "crashFile": null, + "event.type": "error", + "groupID": "1430828026" + }, + { + "eventID": "ad9310581f0e40508c3245f75c6613ad", + "tags": [ + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.151.229", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-05T15:59:49Z", + "user": null, + "message": "Internal Error for ", + "id": "ad9310581f0e40508c3245f75c6613ad", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "RequestError: RequestError(400, 'invalid_index_name_exception', 'Invalid index name [resources_", + "id": "54a3be2a2a3c47fbb0e47192a7676945", + "culprit": "psycopg2.extras in execute", + "title": "TypeError: 'int' object does not support indexing", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1321104332" + }, + { + "eventID": "fd419f7de2334b8d80263ee246bc2757", + "tags": [ + { + "value": "518443449861084160", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.13.157", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-05T11:22:53Z", + "user": null, + "message": "", + "id": "fd419f7de2334b8d80263ee246bc2757", + "culprit": "chalicelib.sessions in search2_pg", + "title": "IndexError: tuple index out of range", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1342967916" + }, + { + "eventID": "259df7fe53094607ac763e43fcdb6490", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.62.229", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-05T10:02:09Z", + "user": null, + "message": "", + "id": "259df7fe53094607ac763e43fcdb6490", + "culprit": "chalicelib.sessions in search_by_metadata", + "title": "KeyError: 454", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1363409660" + }, + { + "eventID": "f4b493e8075145ddbad1bf74d9e097cd", + "tags": [ + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.214.93", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-05T09:25:32Z", + "user": null, + "message": "", + "id": "f4b493e8075145ddbad1bf74d9e097cd", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "4a71fbacc1114ce196df0fb4366429fd", + "tags": [ + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.214.77", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-05T09:22:35Z", + "user": null, + "message": "Internal Error for ", + "id": "4a71fbacc1114ce196df0fb4366429fd", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "RequestError: RequestError(400, 'invalid_index_name_exception', 'Invalid index name [resources_", + "id": "54898e0197934faab9ab73dea8218244", + "culprit": "psycopg2.extras in execute", + "title": "TypeError: 'int' object does not support indexing", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1321104332" + }, + { + "eventID": "b0f52d9012ef4f85a323c897380634e6", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.60.73", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:14:02Z", + "user": null, + "message": "", + "id": "b0f52d9012ef4f85a323c897380634e6", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "30820461bc274b8383722ed8c0a84e77", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.132.245", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:14:02Z", + "user": null, + "message": "", + "id": "30820461bc274b8383722ed8c0a84e77", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "fdcf7433ce704285a7e97340db850cc7", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.132.245", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:13:49Z", + "user": null, + "message": "", + "id": "fdcf7433ce704285a7e97340db850cc7", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_483, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "789d6509476745eb9207ba87eeea0a14", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.60.73", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:13:49Z", + "user": null, + "message": "", + "id": "789d6509476745eb9207ba87eeea0a14", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_483, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116070824" + }, + { + "eventID": "a2e9e496e3334e37909628f03740a11d", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.178.125", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:13:47Z", + "user": null, + "message": "", + "id": "a2e9e496e3334e37909628f03740a11d", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_483, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + }, + { + "eventID": "64011a721b774f50b0a757c89a85f54e", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.44.61", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:13:47Z", + "user": null, + "message": "", + "id": "64011a721b774f50b0a757c89a85f54e", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_483, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "ea8a88c67cd74825b756d926e0c68067", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.166.189", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:05:44Z", + "user": null, + "message": "", + "id": "ea8a88c67cd74825b756d926e0c68067", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "3f1449f697674487bd22e41edf7e42c9", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.236.101", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:05:44Z", + "user": null, + "message": "", + "id": "3f1449f697674487bd22e41edf7e42c9", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "ccb26875e0254082aa8eb0c91ffab3c4", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.109.181", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:05:42Z", + "user": null, + "message": "", + "id": "ccb26875e0254082aa8eb0c91ffab3c4", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "a2b33db153ab4a01a3938a218602ffce", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.109.181", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:05:29Z", + "user": null, + "message": "", + "id": "a2b33db153ab4a01a3938a218602ffce", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_483, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "6a9a938c7baa4f77be9c0d288949e483", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.236.101", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:05:29Z", + "user": null, + "message": "", + "id": "6a9a938c7baa4f77be9c0d288949e483", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_483, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "1412c00082004f61a88690a719f674d4", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.166.189", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:05:29Z", + "user": null, + "message": "", + "id": "1412c00082004f61a88690a719f674d4", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_483, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + }, + { + "eventID": "0c36633cecfe45ff8e33f722110dd038", + "tags": [ + { + "value": "517219005934528592", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.137.85", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T15:05:29Z", + "user": null, + "message": "", + "id": "0c36633cecfe45ff8e33f722110dd038", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_483, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116070824" + }, + { + "eventID": "5c944c11c52b4393b32d11dc4192d12e", + "tags": [ + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.44.61", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-02-04T14:51:34Z", + "user": null, + "message": "Internal Error for ", + "id": "5c944c11c52b4393b32d11dc4192d12e", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "RequestError: RequestError(400, 'invalid_index_name_exception', 'Invalid index name [resources_", + "id": "d4fcbeac21a94c4aa93cbb43e0ca9f69", + "culprit": "psycopg2.extras in execute", + "title": "TypeError: 'int' object does not support indexing", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1321104332" + }, + { + "eventID": "b11f94ca49cc44a9945ac1323af3dac3", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.146.69", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-31T15:39:56Z", + "user": null, + "message": "", + "id": "b11f94ca49cc44a9945ac1323af3dac3", + "culprit": "psycopg2.extras in execute", + "title": "InvalidTextRepresentation: invalid input syntax for integer: \"search\"", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1487659217" + }, + { + "eventID": "1cb8fc38dec044d280c8cc0476189b37", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.219.173", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-31T05:47:45Z", + "user": null, + "message": "", + "id": "1cb8fc38dec044d280c8cc0476189b37", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "8136adbc1f8d4b6abec9a0fcb9156fbc", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.219.173", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-31T05:47:25Z", + "user": null, + "message": "", + "id": "8136adbc1f8d4b6abec9a0fcb9156fbc", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "d82526781cb74d9fafe86b0caae5a50e", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.219.173", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-31T05:46:56Z", + "user": null, + "message": "", + "id": "d82526781cb74d9fafe86b0caae5a50e", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "92cd1ede67f545f989456032d8e9ef2e", + "tags": [ + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.181.61", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-31T03:16:59Z", + "user": null, + "message": "Internal Error for ", + "id": "92cd1ede67f545f989456032d8e9ef2e", + "culprit": "psycopg2.extras in execute", + "title": "TypeError: 'int' object does not support indexing", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1321104332" + }, + { + "eventID": "aebbbb2dd7ae47bbaba5007064cc1f64", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.35.105", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:41:23Z", + "user": null, + "message": "", + "id": "aebbbb2dd7ae47bbaba5007064cc1f64", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "039279990d1246b180b817239670cce1", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.238.149", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:34:55Z", + "user": null, + "message": "", + "id": "039279990d1246b180b817239670cce1", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "70a34d3638cb4ba98796e8f525d076af", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.112.77", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:34:04Z", + "user": null, + "message": "", + "id": "70a34d3638cb4ba98796e8f525d076af", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "9b09718595244c1f9bdb6c5fae7b2642", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.97.221", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:33:57Z", + "user": null, + "message": "", + "id": "9b09718595244c1f9bdb6c5fae7b2642", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "d49f291e62cd488f8126223cadaf4bf0", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.112.77", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:08:48Z", + "user": null, + "message": "", + "id": "d49f291e62cd488f8126223cadaf4bf0", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "fcd2150f33be4aaea317bee6ab4c5753", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.112.77", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:08:26Z", + "user": null, + "message": "", + "id": "fcd2150f33be4aaea317bee6ab4c5753", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "80276deb85df4d65b6467fed7e2cab9b", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.182.213", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:06:48Z", + "user": null, + "message": "", + "id": "80276deb85df4d65b6467fed7e2cab9b", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "93965953f2054e5cb8dd12343b8e1310", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.35.105", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:04:58Z", + "user": null, + "message": "", + "id": "93965953f2054e5cb8dd12343b8e1310", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "a19aa2b29da94e5c8e79bfd99e28979b", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.96.221", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T12:04:07Z", + "user": null, + "message": "", + "id": "a19aa2b29da94e5c8e79bfd99e28979b", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "c0e4017b1349495f9dde0545aa5f3b41", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.44.189", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T10:02:03Z", + "user": null, + "message": "", + "id": "c0e4017b1349495f9dde0545aa5f3b41", + "culprit": "chalicelib.sessions in search2_pg", + "title": "IndexError: tuple index out of range", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1342967916" + }, + { + "eventID": "26589f5ffbbd4511b5cbc54e1977cb03", + "tags": [ + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.44.189", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-30T09:57:11Z", + "user": null, + "message": "", + "id": "26589f5ffbbd4511b5cbc54e1977cb03", + "culprit": "chalicelib.sessions in search2_pg", + "title": "IndexError: tuple index out of range", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1342967916" + }, + { + "eventID": "60bcb30ad66e431fad1dadc1049e9471", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.32.213", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "9bb4c80672d14d1698763cfde36c938a", + "key": "trace" + }, + { + "value": "9bb4c80672d14d1698763cfde36c938a-9ffd91f46356078b", + "key": "trace.ctx" + }, + { + "value": "9ffd91f46356078b", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:48:00Z", + "user": null, + "message": "", + "id": "60bcb30ad66e431fad1dadc1049e9471", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "63c86a6f9a0d47418451b8bb2bfc85a9", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.32.213", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:44:34Z", + "user": null, + "message": "", + "id": "63c86a6f9a0d47418451b8bb2bfc85a9", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "b2cc1698df4d4391a65906957606b67b", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.180.109", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "34bc65135869438b85c1951ef428bc69", + "key": "trace" + }, + { + "value": "34bc65135869438b85c1951ef428bc69-9db631c2787505cf", + "key": "trace.ctx" + }, + { + "value": "9db631c2787505cf", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:44:26Z", + "user": null, + "message": "", + "id": "b2cc1698df4d4391a65906957606b67b", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "d71f68e590204a27b8ee65b6fce02273", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.32.213", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:43:55Z", + "user": null, + "message": "", + "id": "d71f68e590204a27b8ee65b6fce02273", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "dd5f5c0d689943cf9e8ba84000559e17", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.180.109", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:43:48Z", + "user": null, + "message": "", + "id": "dd5f5c0d689943cf9e8ba84000559e17", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "fe0b3a8c3c8540fbb0f931596419b128", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.242.205", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "f8aa019bc95d42d6bc3124462d8b91f6", + "key": "trace" + }, + { + "value": "f8aa019bc95d42d6bc3124462d8b91f6-b07924e62d9973a0", + "key": "trace.ctx" + }, + { + "value": "b07924e62d9973a0", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:43:39Z", + "user": null, + "message": "", + "id": "fe0b3a8c3c8540fbb0f931596419b128", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "720cfec0987c4d1aa5db1902201db587", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.70.253", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "09cd4e6592ac4025a6d22b9235cec8d6", + "key": "trace" + }, + { + "value": "09cd4e6592ac4025a6d22b9235cec8d6-bd58b560cda37495", + "key": "trace.ctx" + }, + { + "value": "bd58b560cda37495", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:43:20Z", + "user": null, + "message": "", + "id": "720cfec0987c4d1aa5db1902201db587", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "19e8db755d1149f2bf393669912aaaf1", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.70.253", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:42:35Z", + "user": null, + "message": "", + "id": "19e8db755d1149f2bf393669912aaaf1", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "4a2d46c549a344e989197cf106fb914e", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.242.205", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:42:23Z", + "user": null, + "message": "", + "id": "4a2d46c549a344e989197cf106fb914e", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "1ee2a3e3f74d45f0a75288eb312e34c5", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.132.69", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:41:15Z", + "user": null, + "message": "", + "id": "1ee2a3e3f74d45f0a75288eb312e34c5", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column s.console_log_count does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1355521385" + }, + { + "eventID": "e6b6417f26d24b2ea25c575bd09e0aa5", + "tags": [ + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.180.109", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:23:49Z", + "user": null, + "message": "", + "id": "e6b6417f26d24b2ea25c575bd09e0aa5", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "e288fbe341f34f069136ef7b4feef46b", + "tags": [ + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.180.109", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:23:15Z", + "user": null, + "message": "Internal Error for ", + "id": "e288fbe341f34f069136ef7b4feef46b", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "RequestError: RequestError(400, 'invalid_index_name_exception', 'Invalid index name [resources_", + "id": "8df03f0f93224369a4555a56e43a340a", + "culprit": "psycopg2.extras in execute", + "title": "TypeError: 'int' object does not support indexing", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1321104332" + }, + { + "eventID": "a4ca36db2ec540b0b11992f720e4338f", + "tags": [ + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.23.109", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:23:12Z", + "user": null, + "message": "", + "id": "a4ca36db2ec540b0b11992f720e4338f", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "afc1816db4fb4127ae5e3102f408bd56", + "tags": [ + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.23.109", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:22:12Z", + "user": null, + "message": "Internal Error for ", + "id": "afc1816db4fb4127ae5e3102f408bd56", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "RequestError: RequestError(400, 'invalid_index_name_exception', 'Invalid index name [resources_", + "id": "423d5cbb1e07428baa6575fd394b014e", + "culprit": "psycopg2.extras in execute", + "title": "TypeError: 'int' object does not support indexing", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1321104332" + }, + { + "eventID": "e32635c1c97a4de78e3edc2f6b683a79", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.126.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:14:27Z", + "user": null, + "message": "", + "id": "e32635c1c97a4de78e3edc2f6b683a79", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "8df9ffd4acdd466785a4acb767441cea", + "tags": [ + { + "value": "496927055579173623", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.126.29", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T15:10:41Z", + "user": null, + "message": "", + "id": "8df9ffd4acdd466785a4acb767441cea", + "culprit": "psycopg2.extras in execute", + "title": "UndefinedColumn: column \"filters\" of relation \"filters\" does not exist", + "platform": "python", + "location": "psycopg2/extras.py", + "crashFile": null, + "event.type": "error", + "groupID": "1306789194" + }, + { + "eventID": "43843ccce0904d30a6de81d16aff2fd2", + "tags": [ + { + "value": "496888723695543585", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.13.157", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "3d3e4136eb7f4db69f3f28d847745782", + "key": "trace" + }, + { + "value": "3d3e4136eb7f4db69f3f28d847745782-a5596feb6edcf697", + "key": "trace.ctx" + }, + { + "value": "a5596feb6edcf697", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T14:35:56Z", + "user": null, + "message": "", + "id": "43843ccce0904d30a6de81d16aff2fd2", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "75506c1c20c64431a24cf3a0c918fce1", + "tags": [ + { + "value": "496888723695543585", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.13.157", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "3d3e4136eb7f4db69f3f28d847745782", + "key": "trace" + }, + { + "value": "3d3e4136eb7f4db69f3f28d847745782-a79977809b88b89c", + "key": "trace.ctx" + }, + { + "value": "a79977809b88b89c", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T14:35:54Z", + "user": null, + "message": "", + "id": "75506c1c20c64431a24cf3a0c918fce1", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "2c86ba13b3cd48188112994e12da7fe4", + "tags": [ + { + "value": "496888723695543585", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.13.157", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + }, + { + "value": "3d3e4136eb7f4db69f3f28d847745782", + "key": "trace" + }, + { + "value": "3d3e4136eb7f4db69f3f28d847745782-873289cca1462152", + "key": "trace.ctx" + }, + { + "value": "873289cca1462152", + "key": "trace.span" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T14:35:47Z", + "user": null, + "message": "", + "id": "2c86ba13b3cd48188112994e12da7fe4", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "aed00b6d56304b468b0851c6a2051f8a", + "tags": [ + { + "value": "496888723695543585", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.13.157", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T14:35:28Z", + "user": null, + "message": "", + "id": "aed00b6d56304b468b0851c6a2051f8a", + "culprit": "chalicelib.sessions in search2_pg", + "title": "ProgrammingError: argument formats can't be mixed", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341564580" + }, + { + "eventID": "a2faad5f419241a0951c63510c1bc532", + "tags": [ + { + "value": "496539098302424786", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.67.141", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T08:43:13Z", + "user": null, + "message": "", + "id": "a2faad5f419241a0951c63510c1bc532", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "eaf2b36857264f64b7e20f06fb993a91", + "tags": [ + { + "value": "496539098302424786", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.10.205", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T08:42:39Z", + "user": null, + "message": "", + "id": "eaf2b36857264f64b7e20f06fb993a91", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "648ad2698ef04ab08e9e25b7fc1b307e", + "tags": [ + { + "value": "496539098302424786", + "key": "asayer_session_id" + }, + { + "value": "no", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "threading", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.104.37", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T08:42:39Z", + "user": null, + "message": "", + "id": "648ad2698ef04ab08e9e25b7fc1b307e", + "culprit": "requests.adapters in send", + "title": "SSLError: HTTPSConnectionPool(host='notify.bugsnag.com', port=443): Max retries exceeded with url: / (Cause...", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1265908049" + }, + { + "eventID": "3bc286b53a2f4a0d8394a0c723153936", + "tags": [ + { + "value": "496539098302424786", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.10.205", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T08:41:56Z", + "user": null, + "message": "", + "id": "3bc286b53a2f4a0d8394a0c723153936", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_477, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116070824" + }, + { + "eventID": "68af914e0b694dd1986e3f18692b1e70", + "tags": [ + { + "value": "496539098302424786", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.104.37", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T08:41:53Z", + "user": null, + "message": "", + "id": "68af914e0b694dd1986e3f18692b1e70", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_477, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "65cce0e929bc4a7a92b6344ee2e8b14c", + "tags": [ + { + "value": "496539098302424786", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.67.141", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T08:41:53Z", + "user": null, + "message": "", + "id": "65cce0e929bc4a7a92b6344ee2e8b14c", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_477, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "5f88471651a349c3b16e13443255618d", + "tags": [ + { + "value": "496539098302424786", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.104.109", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-21T08:41:53Z", + "user": null, + "message": "", + "id": "5f88471651a349c3b16e13443255618d", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_477, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + }, + { + "eventID": "705045e17e144d3b8f7059d121962a63", + "tags": [ + { + "value": "495408099984196478", + "key": "asayer_session_id" + }, + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.87.237", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-20T14:57:47Z", + "user": null, + "message": "Internal Error for ._register_view.._view_func at 0x7f6814a242f0>", + "id": "705045e17e144d3b8f7059d121962a63", + "culprit": "chalicelib.sessions in search_by_metadata", + "title": "KeyError: 454", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1457168623" + }, + { + "eventID": "0236bc697a634270ac5b1dcaab0b571f", + "tags": [ + { + "value": "495408099984196478", + "key": "asayer_session_id" + }, + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "rollbar", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.87.237", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-20T14:57:46Z", + "user": null, + "message": "Exception while posting item \"ReadTimeout(ReadTimeoutError(\\\"HTTPSConnectionPool(host='api.rollbar.com', port=443): Read timed out. (read timeout=3)\\\",),)\"", + "id": "0236bc697a634270ac5b1dcaab0b571f", + "culprit": "requests.adapters in send", + "title": "ReadTimeout: HTTPSConnectionPool(host='api.rollbar.com', port=443): Read timed out. (read timeout=3)", + "platform": "python", + "location": "requests/adapters.py", + "crashFile": null, + "event.type": "error", + "groupID": "1341662732" + }, + { + "eventID": "7a8313d3920a4957b231a4005063adb4", + "tags": [ + { + "value": "495408099984196478", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.87.237", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-20T14:57:33Z", + "user": null, + "message": "", + "id": "7a8313d3920a4957b231a4005063adb4", + "culprit": "chalicelib.sessions in search_by_metadata", + "title": "KeyError: 454", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1363409660" + }, + { + "eventID": "4d9bd0d9c4e64141bf47a113e5a3ebcb", + "tags": [ + { + "value": "495408099984196478", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.215.85", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-20T14:55:07Z", + "user": null, + "message": "", + "id": "4d9bd0d9c4e64141bf47a113e5a3ebcb", + "culprit": "chalicelib.sessions in search_by_metadata", + "title": "KeyError: 454", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1363409660" + }, + { + "eventID": "d7da03a8b0c14a87a0a842a6d1c80802", + "tags": [ + { + "value": "495408099984196478", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.137.37", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-20T14:00:45Z", + "user": null, + "message": "", + "id": "d7da03a8b0c14a87a0a842a6d1c80802", + "culprit": "chalicelib.sessions in search_by_metadata", + "title": "KeyError: 454", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1363409660" + }, + { + "eventID": "37f3b106d22c4a379fc6a08d3895262e", + "tags": [ + { + "value": "495408099984196478", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.42.81", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-20T13:57:27Z", + "user": null, + "message": "", + "id": "37f3b106d22c4a379fc6a08d3895262e", + "culprit": "chalicelib.sessions in search_by_metadata", + "title": "KeyError: 454", + "platform": "python", + "location": "/var/task/chalicelib/sessions.py", + "crashFile": null, + "event.type": "error", + "groupID": "1363409660" + }, + { + "eventID": "7ceff8b3b2d14717a7a084d9bd8b6f0c", + "tags": [ + { + "value": "yes", + "key": "handled" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "parrot", + "key": "logger" + }, + { + "value": "logging", + "key": "mechanism" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.213.61", + "key": "server_name" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-16T17:00:09Z", + "user": null, + "message": "Internal Error for ", + "id": "7ceff8b3b2d14717a7a084d9bd8b6f0c", + "culprit": "app in login", + "title": "KeyError: 'email'", + "platform": "python", + "location": "app.py", + "crashFile": null, + "event.type": "error", + "groupID": "1430828026" + }, + { + "eventID": "f1d6e7bdc7fb45b9a0e7497e04a154b1", + "tags": [ + { + "value": "489170522397413008", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.53.141", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-16T07:18:25Z", + "user": null, + "message": "", + "id": "f1d6e7bdc7fb45b9a0e7497e04a154b1", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_476, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063197" + }, + { + "eventID": "321d91bac073407a8a8db6f1d6f4db9a", + "tags": [ + { + "value": "489170522397413008", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.247.229", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-16T07:18:25Z", + "user": null, + "message": "", + "id": "321d91bac073407a8a8db6f1d6f4db9a", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_476, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116063196" + }, + { + "eventID": "23d88885741a403689f92f26cb1e4808", + "tags": [ + { + "value": "489170522397413008", + "key": "asayer_session_id" + }, + { + "value": "error", + "key": "level" + }, + { + "value": "CPython 3.6.9", + "key": "runtime" + }, + { + "value": "CPython", + "key": "runtime.name" + }, + { + "value": "169.254.75.53", + "key": "server_name" + }, + { + "value": "prod", + "key": "stage" + } + ], + "projectID": "1485249", + "dateCreated": "2020-01-16T07:18:25Z", + "user": null, + "message": "", + "id": "23d88885741a403689f92f26cb1e4808", + "culprit": "elasticsearch.connection.base in _raise_error", + "title": "NotFoundError: NotFoundError(404, 'index_not_found_exception', 'no such index', resources_476, index_or_alias)", + "platform": "python", + "location": "elasticsearch/connection/base.py", + "crashFile": null, + "event.type": "error", + "groupID": "1116236058" + } +] \ No newline at end of file diff --git a/backend/services/integrations/integration/stackdriver.go b/backend/services/integrations/integration/stackdriver.go new file mode 100644 index 000000000..bb8e3cef9 --- /dev/null +++ b/backend/services/integrations/integration/stackdriver.go @@ -0,0 +1,104 @@ +package integration + + +import ( + "google.golang.org/api/option" + "cloud.google.com/go/logging/logadmin" + "google.golang.org/api/iterator" + + //"strconv" + "encoding/json" + "time" + "fmt" + "context" + + "openreplay/backend/pkg/utime" + "openreplay/backend/pkg/messages" +) + + +// Old: asayerSessionId + +const SD_FILTER_QUERY = ` + logName = "projects/%v/logs/%v" + labels.openReplaySessionToken!=null AND + severity>=ERROR AND + timestamp>="%v" +` + +type stackdriver struct { + ServiceAccountCredentials string // `json:"service_account_credentials"` + LogName string // `json:"log_name"` +} + +type saCreds struct { + ProjectId string `json:"project_id"` +} + +func (sd *stackdriver) Request(c *client) error { + fromTs := c.getLastMessageTimestamp() + 1 // Timestamp is RFC3339Nano, so we take the next millisecond + fromFormatted := time.Unix(0, int64(fromTs *1e6)).Format(time.RFC3339Nano) + ctx := context.Background() + + var parsedCreds saCreds + err := json.Unmarshal([]byte(sd.ServiceAccountCredentials), &parsedCreds) + if err != nil { + return err + } + + opt := option.WithCredentialsJSON([]byte(sd.ServiceAccountCredentials)) + client, err := logadmin.NewClient(ctx, parsedCreds.ProjectId, opt) + if err != nil { + return err + } + defer client.Close() + + filter := fmt.Sprintf(SD_FILTER_QUERY, parsedCreds.ProjectId, sd.LogName, fromFormatted) + // By default, Entries are listed from oldest to newest. + /* ResourceNames(rns []string) + "projects/[PROJECT_ID]" + "organizations/[ORGANIZATION_ID]" + "billingAccounts/[BILLING_ACCOUNT_ID]" + "folders/[FOLDER_ID]" + */ + it := client.Entries(ctx, logadmin.Filter(filter)) + + // TODO: Pagination: + //pager := iterator.NewPager(it, 1000, "") + //nextToken, err := pager.NextPage(&entries) + //if nextToken == "" { break } + for { + e, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + return err + } + + token := e.Labels["openReplaySessionToken"] + // sessionID, err := strconv.ParseUint(strSessionID, 10, 64) + // if err != nil { + // c.errChan <- err + // continue + // } + jsonEvent, err := json.Marshal(e) + if err != nil { + c.errChan <- err + continue + } + timestamp := uint64(utime.ToMilliseconds(e.Timestamp)) + c.setLastMessageTimestamp(timestamp) + c.evChan <- &SessionErrorEvent{ + //SessionID: sessionID, + Token: token, + RawErrorEvent: &messages.RawErrorEvent{ + Source: "stackdriver", + Timestamp: timestamp, + Name: e.InsertID, // not sure about that + Payload: string(jsonEvent), + }, + } + } + return nil +} \ No newline at end of file diff --git a/backend/services/integrations/integration/sumologic.go b/backend/services/integrations/integration/sumologic.go new file mode 100644 index 000000000..2660dd6ac --- /dev/null +++ b/backend/services/integrations/integration/sumologic.go @@ -0,0 +1,219 @@ +package integration + +import ( + "net/http" + "time" + "encoding/json" + "fmt" + "strings" + "io" + "io/ioutil" + + "openreplay/backend/pkg/utime" + "openreplay/backend/pkg/messages" +) + +/* + The maximum value for limit is 10,000 messages or 100 MB in total message size, + which means the query may return less than 10,000 messages if you exceed the size limit. + + API Documentation: https://help.sumologic.com/APIs/Search-Job-API/About-the-Search-Job-API +*/ +const SL_LIMIT = 10000 + +type sumologic struct { + AccessId string // `json:"access_id"` + AccessKey string // `json:"access_key"` + cookies []*http.Cookie +} + + +type sumplogicJobResponce struct { + Id string +} + +type sumologicJobStatusResponce struct { + State string + MessageCount int + //PendingErrors []string +} + +type sumologicResponce struct { + Messages [] struct { + Map json.RawMessage + } +} + +type sumologicEvent struct { + Timestamp uint64 `json:"_messagetime,string"` + Raw string `json:"_raw"` +} + +func (sl *sumologic) deleteJob(jobId string, errChan chan<- error) { + requestURL := fmt.Sprintf("https://api.%vsumologic.com/api/v1/search/jobs/%v", "eu.", jobId) + req, err := http.NewRequest("DELETE", requestURL, nil) + if err != nil { + errChan <- fmt.Errorf("Error on DELETE request creation: %v", err) + return + } + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.SetBasicAuth(sl.AccessId, sl.AccessKey) + resp, err := http.DefaultClient.Do(req) + if err != nil { + errChan <- fmt.Errorf("Error on DELETE request: %v", err) + return + } + io.Copy(ioutil.Discard, resp.Body) + resp.Body.Close() +} + + +func (sl *sumologic) Request(c *client) error { + fromTs := c.getLastMessageTimestamp() + 1 // From next millisecond + toTs := utime.CurrentTimestamp() + requestURL := fmt.Sprintf("https://api.%vsumologic.com/api/v1/search/jobs", "eu.") // deployment server?? + jsonBody := fmt.Sprintf(`{ + "query": "\"openReplaySessionToken=\" AND (*error* OR *fail* OR *exception*)", + "from": %v, + "to": %v + }`, fromTs, toTs) // docs and api are awful. from/to seems to work inclusively + req, err := http.NewRequest("POST", requestURL, strings.NewReader(jsonBody)) + if err != nil { + return err + } + //q := req.URL.Query() + //q.Add("query", "\"asayer_session_id=\" AND (*error* OR *fail* OR *exception*)") + //q.Add("from", ) + //q.Add("to") + //q.Add("timeZone", "UTC") + //q.Add("byReceiptTime", "true") + + for _, cookie := range sl.cookies { + req.AddCookie(cookie) + } + + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + req.SetBasicAuth(sl.AccessId, sl.AccessKey) + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return fmt.Errorf("Error while requesting search job start: %v", err) + } + defer resp.Body.Close() + + // Can be 202/400/415 according to docs + // https://help.sumologic.com/APIs/Search-Job-API/About-the-Search-Job-API#status-codes + // responce body is NOT the same as in docs (look at the sumologic_job_start.json) + if resp.StatusCode >= 400 { + io.Copy(ioutil.Discard, resp.Body) // Read the body to free socket + return fmt.Errorf("Sumologic: server respond with the code %v | req %v |Resp: %v", resp.StatusCode, *req, *resp) + } + sl.cookies = resp.Cookies() + + var jobResponce sumplogicJobResponce + if err = json.NewDecoder(resp.Body).Decode(&jobResponce); err != nil { + return fmt.Errorf("Error on parsing responce: %v", err) + } + + defer sl.deleteJob(jobResponce.Id, c.errChan) + + requestURL = fmt.Sprintf("https://api.%vsumologic.com/api/v1/search/jobs/%v", "eu.", jobResponce.Id) + req, err = http.NewRequest("GET", requestURL, nil) + if err != nil { + return err + } + req.Header.Add("Accept", "application/json") + req.SetBasicAuth(sl.AccessId, sl.AccessKey) + for _, cookie := range sl.cookies { + req.AddCookie(cookie) + } + + tick := time.Tick(5 * time.Second) + for { + <- tick + resp, err = http.DefaultClient.Do(req) + if err != nil { + return err // TODO: retry, counter/timeout + } + defer resp.Body.Close() + // TODO: check resp.StatusCode + //sl.cookies = resp.Cookies() TODO? + var jobStatus sumologicJobStatusResponce + err := json.NewDecoder(resp.Body).Decode(&jobStatus) + if err != nil { + return err // TODO: retry, counter/timeout + } + if jobStatus.State == "DONE GATHERING RESULTS" { + offset := 0 + for ;offset < jobStatus.MessageCount; { + requestURL = fmt.Sprintf( + "https://api.%vsumologic.com/api/v1/search/jobs/%v/messages?offset=%v&limit=%v", + "eu.", + jobResponce.Id, + offset, + SL_LIMIT, + ) + req, err = http.NewRequest("GET", requestURL, nil) + if err != nil { + return err // TODO: retry, counter/timeout + } + req.Header.Add("Accept", "application/json") + req.SetBasicAuth(sl.AccessId, sl.AccessKey) + for _, cookie := range sl.cookies { + req.AddCookie(cookie) + } + resp, err = http.DefaultClient.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + var slResp sumologicResponce + err := json.NewDecoder(resp.Body).Decode(&slResp) + if err != nil { + return err + } + for _, m := range slResp.Messages { + var e sumologicEvent + err = json.Unmarshal(m.Map, &e) + if err != nil { + c.errChan <- err + continue + } + + token, err := GetToken(e.Raw) + if err != nil { + c.errChan <- err + continue + } + name := e.Raw + if len(name) > 20 { + name = name[:20] // not sure about that + } + c.setLastMessageTimestamp(e.Timestamp) + c.evChan <- &SessionErrorEvent{ + //SessionID: sessionID, + Token: token, + RawErrorEvent: &messages.RawErrorEvent{ + Source: "sumologic", + Timestamp: e.Timestamp, + Name: name, + Payload: string(m.Map), //e.Raw ? + }, + } + + } + offset += len(slResp.Messages) + } + break + } + if jobStatus.State != "NOT STARTED" && + jobStatus.State != "GATHERING RESULTS" { + // error + break + } + } + return nil +} \ No newline at end of file diff --git a/backend/services/integrations/integration/sumologic_error.json b/backend/services/integrations/integration/sumologic_error.json new file mode 100644 index 000000000..c48ebd514 --- /dev/null +++ b/backend/services/integrations/integration/sumologic_error.json @@ -0,0 +1,6 @@ +{ +"status": 400, +"id": "EV5YQ-N96Y8-RNDUF", +"code": "searchjob.offset.missing", +"message": "Offset is missing." +} \ No newline at end of file diff --git a/backend/services/integrations/integration/sumologic_job_result.json b/backend/services/integrations/integration/sumologic_job_result.json new file mode 100644 index 000000000..fed5c051f --- /dev/null +++ b/backend/services/integrations/integration/sumologic_job_result.json @@ -0,0 +1,146 @@ +{ + "fields": [ + { + "name": "_blockid", + "fieldType": "long", + "keyField": false + }, + { + "name": "_collector", + "fieldType": "string", + "keyField": false + }, + { + "name": "_collectorid", + "fieldType": "long", + "keyField": false + }, + { + "name": "_format", + "fieldType": "string", + "keyField": false + }, + { + "name": "_messagecount", + "fieldType": "int", + "keyField": false + }, + { + "name": "_messageid", + "fieldType": "long", + "keyField": false + }, + { + "name": "_messagetime", + "fieldType": "long", + "keyField": false + }, + { + "name": "_raw", + "fieldType": "string", + "keyField": false + }, + { + "name": "_receipttime", + "fieldType": "long", + "keyField": false + }, + { + "name": "_size", + "fieldType": "long", + "keyField": false + }, + { + "name": "_source", + "fieldType": "string", + "keyField": false + }, + { + "name": "_sourcecategory", + "fieldType": "string", + "keyField": false + }, + { + "name": "_sourcehost", + "fieldType": "string", + "keyField": false + }, + { + "name": "_sourceid", + "fieldType": "long", + "keyField": false + }, + { + "name": "_sourcename", + "fieldType": "string", + "keyField": false + }, + { + "name": "_view", + "fieldType": "string", + "keyField": false + } + ], + "messages": [ + { + "map": { + "_blockid": "-9223372036854750790", + "_messagetime": "1582286762789", + "_raw": "ZeroDivisionError: [asayer_session_id=9999999999] division by zero", + "_collectorid": "108084884", + "_sourceid": "148051672", + "_collector": "new-relic-flask2", + "_messagecount": "11", + "_sourcehost": "new-relic-flask2", + "_messageid": "-9223372036854423342", + "_sourcename": "/home/tahay_asayer_io/tutorial/example.log", + "_size": "66", + "_view": "", + "_receipttime": "1582286762789", + "_sourcecategory": "linux/system", + "_format": "t:fail:o:-1:l:0:p:null", + "_source": "Linux System_2" + } + }, + { + "map": { + "_blockid": "-9223372036854750791", + "_messagetime": "1582286727679", + "_raw": "ZeroDivisionError: [asayer_session_id=9999999999] division by zero", + "_collectorid": "108084884", + "_sourceid": "148051672", + "_collector": "new-relic-flask2", + "_messagecount": "8", + "_sourcehost": "new-relic-flask2", + "_messageid": "-9223372036854423345", + "_sourcename": "/home/tahay_asayer_io/tutorial/example.log", + "_size": "66", + "_view": "", + "_receipttime": "1582286727679", + "_sourcecategory": "linux/system", + "_format": "t:fail:o:-1:l:0:p:null", + "_source": "Linux System_2" + } + }, + { + "map": { + "_blockid": "-9223372036854750791", + "_messagetime": "1582286723677", + "_raw": "ZeroDivisionError: [asayer_session_id=9999999999] division by zero", + "_collectorid": "108084884", + "_sourceid": "148051672", + "_collector": "new-relic-flask2", + "_messagecount": "5", + "_sourcehost": "new-relic-flask2", + "_messageid": "-9223372036854423348", + "_sourcename": "/home/tahay_asayer_io/tutorial/example.log", + "_size": "66", + "_view": "", + "_receipttime": "1582286723677", + "_sourcecategory": "linux/system", + "_format": "t:fail:o:-1:l:0:p:null", + "_source": "Linux System_2" + } + } + ] +} diff --git a/backend/services/integrations/integration/sumologic_job_start.json b/backend/services/integrations/integration/sumologic_job_start.json new file mode 100644 index 000000000..617571fa2 --- /dev/null +++ b/backend/services/integrations/integration/sumologic_job_start.json @@ -0,0 +1,7 @@ +{ + "id":"6F17F4197B438B68", + "link": { + "rel":"self", + "href":"https://api.eu.sumologic.com/api/v1/search/jobs/6F17F4197B438B68" + } +} \ No newline at end of file diff --git a/backend/services/integrations/integration/sumologic_job_status.json b/backend/services/integrations/integration/sumologic_job_status.json new file mode 100644 index 000000000..2b3c00b88 --- /dev/null +++ b/backend/services/integrations/integration/sumologic_job_status.json @@ -0,0 +1,16 @@ +{ + "state": "DONE GATHERING RESULTS", + "histogramBuckets": [ + { + "startTimestamp": 1582243200000, + "length": 55087270, + "count": 194 + } + ], + "messageCount": 194, + "recordCount": 0, + "pendingWarnings": [ + ], + "pendingErrors": [ + ] +} diff --git a/backend/services/integrations/integration/utils.go b/backend/services/integrations/integration/utils.go new file mode 100644 index 000000000..396a177bd --- /dev/null +++ b/backend/services/integrations/integration/utils.go @@ -0,0 +1,34 @@ +package integration + +import ( + "regexp" + "strconv" + "strings" + "fmt" +) + +var reSessionID = regexp.MustCompile(`(?i)asayer_session_id=([0-9]+)`) +func GetAsayerSessionId(s string) (uint64, error) { + matches := reSessionID.FindStringSubmatch(s) + if len(matches) < 2 { + return 0, fmt.Errorf("'asayer_session_id' not found in '%v' ", s) + } + return strconv.ParseUint(matches[ 1 ], 10, 64) +} + +func GetLinkFromAngularBrackets(s string) string { + beg := strings.Index(s, "<") + 1 + end := strings.Index(s, ">") + if end < 0 { return "" } + return strings.TrimSpace(s[beg:end]) +} + + +var reToken = regexp.MustCompile(`(?i)openReplaySessionToken=([0-9a-zA-Z\.]+)`) +func GetToken(s string) (string, error) { + matches := reToken.FindStringSubmatch(s) + if len(matches) < 2 { + return "", fmt.Errorf("'openReplaySessionToken' not found in '%v' ", s) + } + return matches[ 1 ], nil +} \ No newline at end of file diff --git a/backend/services/integrations/main.go b/backend/services/integrations/main.go new file mode 100644 index 000000000..68b4ec5aa --- /dev/null +++ b/backend/services/integrations/main.go @@ -0,0 +1,99 @@ +package main + +import ( + "log" + "time" + + "os" + "os/signal" + "syscall" + + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/intervals" + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/queue" + "openreplay/backend/pkg/db/postgres" + "openreplay/backend/pkg/token" + "openreplay/backend/services/integrations/clientManager" +) + +func main() { + log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) + TOPIC_TRIGGER := env.String("TOPIC_TRIGGER") + POSTGRES_STRING := env.String("POSTGRES_STRING") + + pg := postgres.NewConn(POSTGRES_STRING) + defer pg.Close() + + tokenizer := token.NewTokenizer(env.String("TOKEN_SECRET")) + + manager := clientManager.NewManager() + + pg.IterateIntegrationsOrdered(func(i *postgres.Integration, err error) { + if err != nil { + log.Printf("Postgres error: %v\n", err) + return + } + log.Printf("Integration initialization: %v\n", *i) + err = manager.Update(i) + if err != nil { + log.Printf("Integration parse error: %v | Integration: %v\n", err, *i) + return + } + }) + + producer:= queue.NewProducer() + + listener, err := postgres.NewIntegrationsListener(POSTGRES_STRING) + if err != nil { + log.Fatalf("Postgres listener error: %v\n", err) + } + defer listener.Close() + + sigchan := make(chan os.Signal, 1) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + + tick := time.Tick(intervals.INTEGRATIONS_REQUEST_INTERVAL * time.Millisecond) + + log.Printf("Integration service started\n") + manager.RequestAll() + for { + select { + case sig := <-sigchan: + log.Printf("Caught signal %v: terminating\n", sig) + listener.Close() + pg.Close() + os.Exit(0) + case <-tick: + // log.Printf("Requesting all...\n") + manager.RequestAll() + case event := <-manager.Events: + // log.Printf("New integration event: %v\n", *event.RawErrorEvent) + sessionID := event.SessionID + if sessionID == 0 { + sessData, err := tokenizer.Parse(event.Token) + if err != nil { + log.Printf("Error on token parsing: %v; Token: %v", err, event.Token) + continue + } + sessionID = sessData.ID + } + producer.Produce(TOPIC_TRIGGER, sessionID, messages.Encode(event.RawErrorEvent)) + case err := <-manager.Errors: + log.Printf("Integration error: %v\n", err) + case i := <-manager.RequestDataUpdates: + // log.Printf("Last request integration update: %v || %v\n", i, string(i.RequestData)) + if err := pg.UpdateIntegrationRequestData(&i); err != nil { + log.Printf("Postgres Update request_data error: %v\n", err) + } + //case err := <-listener.Errors: + //log.Printf("Postgres listen error: %v\n", err) + case iPointer := <-listener.Integrations: + // log.Printf("Integration update: %v\n", *iPointer) + err := manager.Update(iPointer) + if err != nil { + log.Printf("Integration parse error: %v | Integration: %v\n", err, *iPointer) + } + } + } +} diff --git a/backend/services/sink/main.go b/backend/services/sink/main.go new file mode 100644 index 000000000..a4f2d6273 --- /dev/null +++ b/backend/services/sink/main.go @@ -0,0 +1,93 @@ +package main + +import ( + "log" + "encoding/binary" + "time" + + "os" + "os/signal" + "syscall" + + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/queue" + "openreplay/backend/pkg/queue/types" +) + + + +func main() { + log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) + + writer := NewWriter(env.Uint16("FS_ULIMIT"), env.String("FS_DIR")) + + count := 0 + + consumer := queue.NewMessageConsumer( + env.String("GROUP_SINK"), + []string{ + env.String("TOPIC_RAW"), + }, + func(sessionID uint64, message messages.Message, _ *types.Meta) { + //typeID, err := messages.GetMessageTypeID(value) + // if err != nil { + // log.Printf("Message type decoding error: %v", err) + // return + // } + typeID := message.Meta().TypeID + if !messages.IsReplayerType(typeID) { + return + } + + count++ + + value := message.Encode() + var data []byte + if messages.IsIOSType(typeID) { + data = value + } else { + data = make([]byte, len(value)+8) + copy(data[8:], value[:]) + binary.LittleEndian.PutUint64(data[0:], message.Meta().Index) + } + if err := writer.Write(sessionID, data); err != nil { + log.Printf("Writer error: %v\n", err) + } + }, + ) + consumer.DisableAutoCommit() + + + sigchan := make(chan os.Signal, 1) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + + tick := time.Tick(30 * time.Second) + + log.Println("Start consuming") + for { + select { + case sig := <-sigchan: + log.Printf("Caught signal %v: terminating\n", sig) + consumer.Commit() + consumer.Close() + os.Exit(0) + case <-tick: + if err := writer.SyncAll(); err != nil { + log.Fatalf("Sync error: %v\n", err) + } + + log.Printf("%v messages during 30 sec", count) + count = 0 + + consumer.Commit() + default: + err := consumer.ConsumeNext() + if err != nil { + log.Fatalf("Error on consumption: %v", err) + } + } + } + +} + diff --git a/backend/services/sink/writer.go b/backend/services/sink/writer.go new file mode 100644 index 000000000..6fcfdddbc --- /dev/null +++ b/backend/services/sink/writer.go @@ -0,0 +1,99 @@ +package main + +import ( + "math" + "os" + "strconv" + "time" +) + +type Writer struct { + ulimit int + dir string + files map[uint64]*os.File + atimes map[uint64]int64 +} + +func NewWriter(ulimit uint16, dir string) *Writer { + return &Writer{ + ulimit: int(ulimit), + dir: dir + "/", + files: make(map[uint64]*os.File), + atimes: make(map[uint64]int64), + } +} + +func (w *Writer) open(key uint64) (*os.File, error) { + file, ok := w.files[key] + if ok { + return file, nil + } + if len(w.atimes) == w.ulimit { + var m_k uint64 + var m_t int64 = math.MaxInt64 + for k, t := range w.atimes { + if t < m_t { + m_k = k + m_t = t + } + } + if err := w.Close(m_k); err != nil { + return nil, err + } + } + file, err := os.OpenFile(w.dir+strconv.FormatUint(key, 10), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) + if err != nil { + return nil, err + } + w.files[key] = file + w.atimes[key] = time.Now().Unix() + return file, nil +} + +func (w *Writer) Close(key uint64) error { + file := w.files[key] + if file == nil { + return nil + } + if err := file.Sync(); err != nil { + return err + } + if err := file.Close(); err != nil { + return err + } + delete(w.files, key) + delete(w.atimes, key) + return nil +} + +func (w *Writer) Write(key uint64, data []byte) error { + file, err := w.open(key) + if err != nil { + return err + } + _, err = file.Write(data) + return err +} + +func (w *Writer) SyncAll() error { + for _, file := range w.files { + if err := file.Sync(); err != nil { + return err + } + } + return nil +} + +func (w *Writer) CloseAll() error { + for _, file := range w.files { + if err := file.Sync(); err != nil { + return err + } + if err := file.Close(); err != nil { + return err + } + } + w.files = nil + w.atimes = nil + return nil +} diff --git a/backend/services/storage/gzip.go b/backend/services/storage/gzip.go new file mode 100644 index 000000000..d574ec4ae --- /dev/null +++ b/backend/services/storage/gzip.go @@ -0,0 +1,19 @@ +package main + +import ( + "io" + gzip "github.com/klauspost/pgzip" +) + + +func gzipFile(file io.ReadSeeker) io.Reader { + reader, writer := io.Pipe() + go func() { + gw, _ := gzip.NewWriterLevel(writer, gzip.BestSpeed) + io.Copy(gw, file) + + gw.Close() + writer.Close() + }() + return reader +} \ No newline at end of file diff --git a/backend/services/storage/main.go b/backend/services/storage/main.go new file mode 100644 index 000000000..83337d8a6 --- /dev/null +++ b/backend/services/storage/main.go @@ -0,0 +1,81 @@ +package main + +import ( + "log" + "time" + "os" + "strconv" + + "os/signal" + "syscall" + + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/storage" + "openreplay/backend/pkg/messages" + "openreplay/backend/pkg/queue" + "openreplay/backend/pkg/queue/types" +) + + + +func main() { + log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) + + + storageWeb := storage.NewS3(env.String("AWS_REGION_WEB"), env.String("S3_BUCKET_WEB")) + storageIos := storage.NewS3(env.String("AWS_REGION_IOS"), env.String("S3_BUCKET_IOS")) + FS_DIR := env.String("FS_DIR") + "/" + + var uploadKey func(string, int, *storage.S3) + uploadKey = func(key string, retryCount int, s *storage.S3) { + if retryCount <= 0 { + return; + } + file, err := os.Open(FS_DIR + key) + defer file.Close() + if err != nil { + log.Printf("File error: %v; Will retry %v more time(s)\n", err, retryCount) + time.AfterFunc(2*time.Minute, func() { + uploadKey(key, retryCount - 1, s) + }) + } else { + if err := s.Upload(gzipFile(file), key, "application/octet-stream", true); err != nil { + log.Fatalf("Storage upload error: %v\n", err) + } + } + } + + consumer := queue.NewMessageConsumer( + env.String("GROUP_STORAGE"), + []string{ + env.String("TOPIC_TRIGGER"), + }, + func(sessionID uint64, msg messages.Message, meta *types.Meta) { + switch msg.(type) { + case *messages.SessionEnd: + uploadKey(strconv.FormatUint(sessionID, 10), 5, storageWeb) + case *messages.IOSSessionEnd: + uploadKey(strconv.FormatUint(sessionID, 10), 5, storageIos) + } + }, + ) + + sigchan := make(chan os.Signal, 1) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + + log.Println("Start consuming") + for { + select { + case sig := <-sigchan: + log.Printf("Caught signal %v: terminating\n", sig) + consumer.Close() + os.Exit(0) + default: + err := consumer.ConsumeNext() + if err != nil { + log.Fatalf("Error on consumption: %v", err) + } + } + } +} + diff --git a/ee/backend/pkg/db/clickhouse/bulk.go b/ee/backend/pkg/db/clickhouse/bulk.go new file mode 100644 index 000000000..121cdbbf0 --- /dev/null +++ b/ee/backend/pkg/db/clickhouse/bulk.go @@ -0,0 +1,45 @@ +package clickhouse + +import ( + "errors" + "database/sql" +) + +type bulk struct { + db *sql.DB + query string + tx *sql.Tx + stmt *sql.Stmt +} + +func newBulk(db *sql.DB, query string) *bulk { + return &bulk{ + db: db, + query: query, + } +} + +func (b *bulk) prepare() error { + var err error + b.tx, err = b.db.Begin() + if err != nil { + return err + } + b.stmt, err = b.tx.Prepare(b.query) + if err != nil { + return err + } + return nil +} + +func (b *bulk) commit() error { + return b.tx.Commit() +} + +func (b *bulk) exec(args ...interface{}) error { + if b.stmt == nil { + return errors.New("Bulk is not prepared.") + } + _, err := b.stmt.Exec(args...) + return err +} diff --git a/ee/backend/pkg/db/clickhouse/connector.go b/ee/backend/pkg/db/clickhouse/connector.go new file mode 100644 index 000000000..195f2fa48 --- /dev/null +++ b/ee/backend/pkg/db/clickhouse/connector.go @@ -0,0 +1,206 @@ +package clickhouse + +import ( + "log" + "database/sql" + _ "github.com/ClickHouse/clickhouse-go" +) + +type Connector struct { + sessionsIOS *bulk + //viewsIOS *bulk + clicksIOS *bulk + inputsIOS *bulk + crashesIOS *bulk + performanceIOS *bulk + resourcesIOS *bulk + sessions *bulk + metadata *bulk // TODO: join sessions, sessions_metadata & sessions_ios + resources *bulk + pages *bulk + clicks *bulk + inputs *bulk + errors *bulk + performance *bulk + longtasks *bulk +} + +func NewConnector(url string) *Connector { + db, err := sql.Open("clickhouse", url) + if err != nil { + log.Fatalln(err) + } + return &Connector{ + sessionsIOS: newBulk(db, ` + INSERT INTO sessions_ios (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, duration, views_count, events_count, crashes_count, metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, metadata_6, metadata_7, metadata_8, metadata_9, metadata_10) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + // viewsIOS: newBulk(db, ` + // INSERT INTO views_ios (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, url, request_start, response_start, response_end, dom_content_loaded_event_start, dom_content_loaded_event_end, load_event_start, load_event_end, first_paint, first_contentful_paint, speed_index, visually_complete, time_to_interactive) + // VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + // `), + clicksIOS: newBulk(db, ` + INSERT INTO clicks_ios (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, label) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + inputsIOS: newBulk(db, ` + INSERT INTO inputs_ios (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, label) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + crashesIOS: newBulk(db, ` + INSERT INTO crashes_ios (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, name, reason, crash_id) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + performanceIOS: newBulk(db, ` + INSERT INTO performance_ios (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, min_fps, avg_fps, max_fps, min_cpu, avg_cpu, max_cpu, min_memory, avg_memory, max_memory) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + resourcesIOS: newBulk(db, ` + INSERT INTO resources_ios (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, url, duration, body_size, success, method, status) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, nullIf(?, ''), ?) + `), + + sessions: newBulk(db, ` + INSERT INTO sessions (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, duration, pages_count, events_count, errors_count, user_browser, user_browser_version) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + // TODO: join sessions, sessions_metadata & sessions_ios + metadata: newBulk(db, ` + INSERT INTO sessions_metadata (session_id, user_id, user_anonymous_id, metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, metadata_6, metadata_7, metadata_8, metadata_9, metadata_10, datetime) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + resources: newBulk(db, ` + INSERT INTO resources (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_browser, user_browser_version, user_device, user_device_type, user_country, datetime, url, type, duration, ttfb, header_size, encoded_body_size, decoded_body_size, success, method, status) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + pages: newBulk(db, ` + INSERT INTO pages (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_browser, user_browser_version, user_device, user_device_type, user_country, datetime, url, request_start, response_start, response_end, dom_content_loaded_event_start, dom_content_loaded_event_end, load_event_start, load_event_end, first_paint, first_contentful_paint, speed_index, visually_complete, time_to_interactive) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + clicks: newBulk(db, ` + INSERT INTO clicks (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_browser, user_browser_version, user_device, user_device_type, user_country, datetime, label, hesitation_time) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + inputs: newBulk(db, ` + INSERT INTO inputs (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_browser, user_browser_version, user_device, user_device_type, user_country, datetime, label) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + errors: newBulk(db, ` + INSERT INTO errors (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_browser, user_browser_version, user_device, user_device_type, user_country, datetime, source, name, message, error_id) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + performance: newBulk(db, ` + INSERT INTO performance (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_browser, user_browser_version, user_device, user_device_type, user_country, datetime, min_fps, avg_fps, max_fps, min_cpu, avg_cpu, max_cpu, min_total_js_heap_size, avg_total_js_heap_size, max_total_js_heap_size, min_used_js_heap_size, avg_used_js_heap_size, max_used_js_heap_size) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + longtasks: newBulk(db, ` + INSERT INTO longtasks (session_id, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_browser, user_browser_version, user_device, user_device_type, user_country, datetime, context, container_type, container_id, container_name, container_src) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `), + + } +} + +func (conn *Connector) Prepare() error { + if err := conn.sessionsIOS.prepare(); err != nil { + return err + } + // if err := conn.viewsIOS.prepare(); err != nil { + // return err + // } + if err := conn.clicksIOS.prepare(); err != nil { + return err + } + if err := conn.inputsIOS.prepare(); err != nil { + return err + } + if err := conn.crashesIOS.prepare(); err != nil { + return err + } + if err := conn.performanceIOS.prepare(); err != nil { + return err + } + if err := conn.resourcesIOS.prepare(); err != nil { + return err + } + if err := conn.sessions.prepare(); err != nil { + return err + } + if err := conn.metadata.prepare(); err != nil { + return err + } + if err := conn.resources.prepare(); err != nil { + return err + } + if err := conn.pages.prepare(); err != nil { + return err + } + if err := conn.clicks.prepare(); err != nil { + return err + } + if err := conn.inputs.prepare(); err != nil { + return err + } + if err := conn.errors.prepare(); err != nil { + return err + } + if err := conn.performance.prepare(); err != nil { + return err + } + if err := conn.longtasks.prepare(); err != nil { + return err + } + return nil +} + +func (conn *Connector) Commit() error { + if err := conn.sessionsIOS.commit(); err != nil { + return err + } + // if err := conn.viewsIOS.commit(); err != nil { + // return err + // } + if err := conn.clicksIOS.commit(); err != nil { + return err + } + if err := conn.inputsIOS.commit(); err != nil { + return err + } + if err := conn.crashesIOS.commit(); err != nil { + return err + } + if err := conn.performanceIOS.commit(); err != nil { + return err + } + if err := conn.resourcesIOS.commit(); err != nil { + return err + } + if err := conn.sessions.commit(); err != nil { + return err + } + if err := conn.metadata.commit(); err != nil { + return err + } + if err := conn.resources.commit(); err != nil { + return err + } + if err := conn.pages.commit(); err != nil { + return err + } + if err := conn.clicks.commit(); err != nil { + return err + } + if err := conn.inputs.commit(); err != nil { + return err + } + if err := conn.errors.commit(); err != nil { + return err + } + if err := conn.performance.commit(); err != nil { + return err + } + if err := conn.longtasks.commit(); err != nil { + return err + } + return nil +} diff --git a/ee/backend/pkg/db/clickhouse/helpers.go b/ee/backend/pkg/db/clickhouse/helpers.go new file mode 100644 index 000000000..37e30518c --- /dev/null +++ b/ee/backend/pkg/db/clickhouse/helpers.go @@ -0,0 +1,34 @@ +package clickhouse + +import ( + "time" +) + + +func nullableUint16(v uint16) *uint16 { + var p *uint16 = nil + if v != 0 { + p = &v + } + return p +} + +func nullableUint32(v uint32) *uint32 { + var p *uint32 = nil + if v != 0 { + p = &v + } + return p +} + +func nullableString(v string) *string { + var p *string = nil + if v != "" { + p = &v + } + return p +} + +func datetime(timestamp uint64) time.Time { + return time.Unix(int64(timestamp/1e3), 0) +} diff --git a/ee/backend/pkg/db/clickhouse/messages_ios.go b/ee/backend/pkg/db/clickhouse/messages_ios.go new file mode 100644 index 000000000..f5ca30495 --- /dev/null +++ b/ee/backend/pkg/db/clickhouse/messages_ios.go @@ -0,0 +1,180 @@ +package clickhouse + +import ( + "errors" + + "openreplay/backend/pkg/hashid" + "openreplay/backend/pkg/url" + . "openreplay/backend/pkg/db/types" + . "openreplay/backend/pkg/messages" +) + + +// TODO: join sessions & sessions_ios clcikhouse tables +func (conn *Connector) InsertIOSSession(session *Session) error { + if (session.Duration == nil) { + return errors.New("Clickhouse: trying to insert session with ") + } + return conn.sessionsIOS.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(session.Timestamp), + uint32(*session.Duration), + session.PagesCount, + session.EventsCount, + session.ErrorsCount, + session.Metadata1, + session.Metadata2, + session.Metadata3, + session.Metadata4, + session.Metadata5, + session.Metadata6, + session.Metadata7, + session.Metadata8, + session.Metadata9, + session.Metadata10, + ) +} + +// func (conn *Connector) IOSScreenEnter(session *Session, msg *PageEvent) error { +// return conn.pagesIOS.exec( +// session.SessionID, +// session.ProjectID, +// session.TrackerVersion, nullableString(session.RevID), +// session.UserUUID, +// session.UserOS, +// nullableString(session.UserOSVersion), +// nullableString(session.UserDevice), +// session.UserDeviceType, +// session.UserCountry, +// datetime(msg.Timestamp), +// utils.DiscardURLQuery(msg.URL), +// nullableUint16(uint16(msg.RequestStart)), +// nullableUint16(uint16(msg.ResponseStart)), +// nullableUint16(uint16(msg.ResponseEnd)), +// nullableUint16(uint16(msg.DomContentLoadedEventStart)), +// nullableUint16(uint16(msg.DomContentLoadedEventEnd)), +// nullableUint16(uint16(msg.LoadEventStart)), +// nullableUint16(uint16(msg.LoadEventEnd)), +// nullableUint16(uint16(msg.FirstPaint)), +// nullableUint16(uint16(msg.FirstContentfulPaint)), +// nullableUint16(uint16(msg.SpeedIndex)), +// nullableUint16(uint16(msg.VisuallyComplete)), +// nullableUint16(uint16(msg.TimeToInteractive)), +// ) +// } + +func (conn *Connector) InsertIOSClickEvent(session *Session, msg *IOSClickEvent) error { + if msg.Label == "" { + return nil + } + return conn.clicksIOS.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + msg.Label, + ) +} + +func (conn *Connector) InsertIOSInputEvent(session *Session, msg *IOSInputEvent) error { + if msg.Label == "" { + return nil + } + return conn.inputsIOS.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + msg.Label, + ) +} + +func (conn *Connector) InsertIOSCrash(session *Session, msg *IOSCrash) error { + return conn.crashesIOS.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + msg.Name, + msg.Reason, + hashid.IOSCrashID(session.ProjectID, msg), + ) +} + +func (conn *Connector) InsertIOSNetworkCall(session *Session, msg *IOSNetworkCall) error { + return conn.resourcesIOS.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + url.DiscardURLQuery(msg.URL), + nullableUint16(uint16(msg.Duration)), + nullableUint32(uint32(len(msg.Body))), + msg.Success, + url.EnsureMethod(msg.Method), // nullableString causes error "unexpected type *string" + nullableUint16(uint16(msg.Status)), + ) +} + +func (conn *Connector) InsertIOSPerformanceAggregated(session *Session, msg *IOSPerformanceAggregated) error { + var timestamp uint64 = (msg.TimestampStart + msg.TimestampEnd) / 2 + return conn.performanceIOS.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(timestamp), + uint8(msg.MinFPS), + uint8(msg.AvgFPS), + uint8(msg.MaxFPS), + uint8(msg.MinCPU), + uint8(msg.AvgCPU), + uint8(msg.MaxCPU), + msg.MinMemory, + msg.AvgMemory, + msg.MaxMemory, + ) +} diff --git a/ee/backend/pkg/db/clickhouse/messages_web.go b/ee/backend/pkg/db/clickhouse/messages_web.go new file mode 100644 index 000000000..0c4de6a7b --- /dev/null +++ b/ee/backend/pkg/db/clickhouse/messages_web.go @@ -0,0 +1,246 @@ +package clickhouse + +import ( + "errors" + + "openreplay/backend/pkg/hashid" + "openreplay/backend/pkg/url" + . "openreplay/backend/pkg/db/types" + . "openreplay/backend/pkg/messages" +) + + +func (conn *Connector) InsertWebSession(session *Session) error { + if (session.Duration == nil) { + return errors.New("Clickhouse: trying to insert session with ") + } + + if err := conn.sessions.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(session.Timestamp), + uint32(*session.Duration), + session.PagesCount, + session.EventsCount, + session.ErrorsCount, + // Web unique columns + session.UserBrowser, + nullableString(session.UserBrowserVersion), + ); err != nil { + return err + } + // TODO: join sessions, sessions_metadata & sessions_ios + return conn.metadata.exec( + session.SessionID, + session.UserID, + session.UserAnonymousID, + session.Metadata1, + session.Metadata2, + session.Metadata3, + session.Metadata4, + session.Metadata5, + session.Metadata6, + session.Metadata7, + session.Metadata8, + session.Metadata9, + session.Metadata10, + datetime(session.Timestamp), + ) +} + +func (conn *Connector) InsertWebResourceEvent(session *Session, msg *ResourceEvent) error { + // nullableString causes error "unexpected type *string" on Nullable Enum type + // (apparently, a clickhouse-go bug) https://github.com/ClickHouse/clickhouse-go/pull/204 + var method interface{} = url.EnsureMethod(msg.Method) + if method == "" { + method = nil + } + return conn.resources.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + session.UserBrowser, + nullableString(session.UserBrowserVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + url.DiscardURLQuery(msg.URL), + msg.Type, + nullableUint16(uint16(msg.Duration)), + nullableUint16(uint16(msg.TTFB)), + nullableUint16(uint16(msg.HeaderSize)), + nullableUint32(uint32(msg.EncodedBodySize)), + nullableUint32(uint32(msg.DecodedBodySize)), + msg.Success, + method, + nullableUint16(uint16(msg.Status)), + ) +} + +func (conn *Connector) InsertWebPageEvent(session *Session, msg *PageEvent) error { + return conn.pages.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + session.UserBrowser, + nullableString(session.UserBrowserVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + url.DiscardURLQuery(msg.URL), + nullableUint16(uint16(msg.RequestStart)), + nullableUint16(uint16(msg.ResponseStart)), + nullableUint16(uint16(msg.ResponseEnd)), + nullableUint16(uint16(msg.DomContentLoadedEventStart)), + nullableUint16(uint16(msg.DomContentLoadedEventEnd)), + nullableUint16(uint16(msg.LoadEventStart)), + nullableUint16(uint16(msg.LoadEventEnd)), + nullableUint16(uint16(msg.FirstPaint)), + nullableUint16(uint16(msg.FirstContentfulPaint)), + nullableUint16(uint16(msg.SpeedIndex)), + nullableUint16(uint16(msg.VisuallyComplete)), + nullableUint16(uint16(msg.TimeToInteractive)), + ) +} + +func (conn *Connector) InsertWebClickEvent(session *Session, msg *ClickEvent) error { + if msg.Label == "" { + return nil + } + return conn.clicks.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + session.UserBrowser, + nullableString(session.UserBrowserVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + msg.Label, + nullableUint32(uint32(msg.HesitationTime)), + ) +} + +func (conn *Connector) InsertWebInputEvent(session *Session, msg *InputEvent) error { + if msg.Label == "" { + return nil + } + return conn.inputs.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + session.UserBrowser, + nullableString(session.UserBrowserVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + msg.Label, + ) +} + +func (conn *Connector) InsertWebErrorEvent(session *Session, msg *ErrorEvent) error { + return conn.errors.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + session.UserBrowser, + nullableString(session.UserBrowserVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + msg.Source, + nullableString(msg.Name), + msg.Message, + hashid.WebErrorID(session.ProjectID, msg), + ) +} + +func (conn *Connector) InsertWebPerformanceTrackAggr(session *Session, msg *PerformanceTrackAggr) error { + var timestamp uint64 = (msg.TimestampStart + msg.TimestampEnd) / 2 + return conn.performance.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + session.UserBrowser, + nullableString(session.UserBrowserVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(timestamp), + uint8(msg.MinFPS), + uint8(msg.AvgFPS), + uint8(msg.MaxFPS), + uint8(msg.MinCPU), + uint8(msg.AvgCPU), + uint8(msg.MaxCPU), + msg.MinTotalJSHeapSize, + msg.AvgTotalJSHeapSize, + msg.MaxTotalJSHeapSize, + msg.MinUsedJSHeapSize, + msg.AvgUsedJSHeapSize, + msg.MaxUsedJSHeapSize, + ) +} + +// TODO: make enum message type +var CONTEXT_MAP = map[uint64]string{0:"unknown",1:"self",2:"same-origin-ancestor",3:"same-origin-descendant",4:"same-origin",5:"cross-origin-ancestor",6:"cross-origin-descendant",7:"cross-origin-unreachable",8:"multiple-contexts"} +var CONTAINER_TYPE_MAP = map[uint64]string{0:"window",1:"iframe",2:"embed",3:"object"} + +func (conn *Connector) InsertLongtask(session *Session, msg *LongTask) error { + return conn.longtasks.exec( + session.SessionID, + session.ProjectID, + session.TrackerVersion, + nullableString(session.RevID), + session.UserUUID, + session.UserOS, + nullableString(session.UserOSVersion), + session.UserBrowser, + nullableString(session.UserBrowserVersion), + nullableString(session.UserDevice), + session.UserDeviceType, + session.UserCountry, + datetime(msg.Timestamp), + CONTEXT_MAP[ msg.Context ], + CONTAINER_TYPE_MAP[ msg.ContainerType ], + msg.ContainerId, + msg.ContainerName, + msg.ContainerSrc, + ) +} diff --git a/ee/backend/pkg/kafka/consumer.go b/ee/backend/pkg/kafka/consumer.go new file mode 100644 index 000000000..d15f5fa41 --- /dev/null +++ b/ee/backend/pkg/kafka/consumer.go @@ -0,0 +1,238 @@ +package kafka + +import ( + "log" + "os" + // "os/signal" + // "syscall" + "time" + + "github.com/pkg/errors" + + "openreplay/backend/pkg/env" + "openreplay/backend/pkg/queue/types" + "gopkg.in/confluentinc/confluent-kafka-go.v1/kafka" +) + +type Message = kafka.Message + +type Consumer struct { + c *kafka.Consumer + messageHandler types.MessageHandler + commitTicker *time.Ticker + pollTimeout uint + + lastKafkaEventTs int64 + partitions []kafka.TopicPartition +} + +func NewConsumer(group string, topics []string, messageHandler types.MessageHandler) *Consumer { + protocol := "plaintext" + if env.Bool("KAFKA_USE_SSL") { + protocol = "ssl" + } + c, err := kafka.NewConsumer(&kafka.ConfigMap{ + "bootstrap.servers": env.String("KAFKA_SERVERS"), + "group.id": group, + "auto.offset.reset": "earliest", + "enable.auto.commit": "false", + "security.protocol": protocol, + "go.application.rebalance.enable": true, + }) + if err != nil { + log.Fatalln(err) + } + subREx := "^(" + for i, t := range topics { + if i != 0 { + subREx += "|" + } + subREx += t + } + subREx += ")$" + if err := c.Subscribe(subREx, nil); err != nil { + log.Fatalln(err) + } + + return &Consumer{ + c: c, + messageHandler: messageHandler, + commitTicker: time.NewTicker(2 * time.Minute), + pollTimeout: 200, + } +} + +func (consumer *Consumer) DisableAutoCommit() { + consumer.commitTicker.Stop() +} + + +func (consumer *Consumer) Commit() error { + _, err := consumer.c.Commit() + return err +} + +func (consumer *Consumer) CommitBack(gap int64) error { + if consumer.lastKafkaEventTs == 0 || consumer.partitions == nil { + return nil + } + commitTs := consumer.lastKafkaEventTs - gap + var timestamps []kafka.TopicPartition + for _, p := range consumer.partitions { // p is a copy here sinse partition is not a pointer + p.Offset = kafka.Offset(commitTs) + timestamps = append(timestamps, p) + } + offsets, err := consumer.c.OffsetsForTimes(timestamps, 2000) + if err != nil { + return errors.Wrap(err, "Kafka Consumer back commit error") + } + // TODO: check per-partition errors: offsets[i].Error + // As an option: can store offsets and enable autocommit instead + _, err = consumer.c.CommitOffsets(offsets) + return errors.Wrap(err, "Kafka Consumer back commit error") +} + + +func (consumer *Consumer) ConsumeNext() error { + ev := consumer.c.Poll(int(consumer.pollTimeout)) + if ev == nil { + return nil + } + + select { + case <-consumer.commitTicker.C: + consumer.Commit() + default: + } + + switch e := ev.(type) { + case *kafka.Message: + if e.TopicPartition.Error != nil { + return errors.Wrap(e.TopicPartition.Error, "Consumer Partition Error") + } + ts := e.Timestamp.UnixNano()/ 1e6 + consumer.messageHandler(decodeKey(e.Key), e.Value, &types.Meta{ + Topic: *(e.TopicPartition.Topic), + ID: uint64(e.TopicPartition.Offset), + Timestamp: ts, + }) + consumer.lastKafkaEventTs = ts + case kafka.AssignedPartitions: + logPartitions("Kafka Consumer: Partitions Assigned", e.Partitions) + consumer.partitions = e.Partitions + consumer.c.Assign(e.Partitions) + case kafka.RevokedPartitions: + log.Println("Kafka Cosumer: Partitions Revoked") + consumer.partitions = nil + consumer.c.Unassign() + case kafka.Error: + if e.Code() == kafka.ErrAllBrokersDown { + os.Exit(1) + } + log.Printf("Consumer error: %v\n", e) + } + return nil +} + +func (consumer *Consumer) Close() { + if consumer.commitTicker != nil { + consumer.Commit() + } + if err := consumer.c.Close(); err != nil { + log.Printf("Kafka consumer close error: %v", err) + } +} + + + +// func (consumer *Consumer) consume( +// message func(m *kafka.Message) error, +// commit func(c *kafka.Consumer) error, +// ) error { +// if err := consumer.c.Subscribe(consumer.topic, nil); err != nil { +// return err +// } +// defer consumer.close() +// sigchan := make(chan os.Signal, 1) +// signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) +// ticker := time.NewTicker(consumer.commitInterval) +// defer ticker.Stop() +// for { +// select { +// case <-sigchan: +// return commit(consumer.c) +// case <-ticker.C: +// if err := commit(consumer.c); err != nil { +// return err +// } +// default: +// ev := consumer.c.Poll(consumer.pollTimeout) +// if ev == nil { +// continue +// } +// switch e := ev.(type) { +// case *kafka.Message: +// if e.TopicPartition.Error != nil { +// log.Println(e.TopicPartition.Error) +// continue +// } +// if err := message(e); err != nil { +// return err +// } +// case kafka.AssignedPartitions: +// if err := consumer.c.Assign(e.Partitions); err != nil { +// return err +// } +// case kafka.RevokedPartitions: +// if err := commit(consumer.c); err != nil { +// return err +// } +// if err := consumer.c.Unassign(); err != nil { +// return err +// } +// case kafka.Error: +// log.Println(e) +// if e.Code() == kafka.ErrAllBrokersDown { +// return e +// } +// } +// } +// } +// } + + +// func (consumer *Consumer) Consume( +// message func(key uint64, value []byte) error, +// ) error { +// return consumer.consume( +// func(m *kafka.Message) error { +// return message(decodeKey(m.Key), m.Value) +// }, +// func(c *kafka.Consumer) error { +// if _, err := c.Commit(); err != nil { +// log.Println(err) +// } +// return nil +// }, +// ) +// } + +// func (consumer *Consumer) ConsumeWithCommitHook( +// message func(key uint64, value []byte) error, +// commit func() error, +// ) error { +// return consumer.consume( +// func(m *kafka.Message) error { +// return message(decodeKey(m.Key), m.Value) +// }, +// func(c *kafka.Consumer) error { +// if err := commit(); err != nil { +// return err +// } +// if _, err := c.Commit(); err != nil { +// log.Println(err) +// } +// return nil +// }, +// ) +// } diff --git a/ee/backend/pkg/kafka/key.go b/ee/backend/pkg/kafka/key.go new file mode 100644 index 000000000..5106df722 --- /dev/null +++ b/ee/backend/pkg/kafka/key.go @@ -0,0 +1,20 @@ +package kafka + +import "encoding/binary" + +const PARTITIONS_EXPONENT = 3 +const PARTITIONS_MAX_INDEX uint64 = 1< Date: Mon, 3 May 2021 20:09:11 +0200 Subject: [PATCH 3/7] fix: orgName in signup form --- frontend/app/components/Signup/SignupForm/SignupForm.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/app/components/Signup/SignupForm/SignupForm.js b/frontend/app/components/Signup/SignupForm/SignupForm.js index ffd5027e4..b49750016 100644 --- a/frontend/app/components/Signup/SignupForm/SignupForm.js +++ b/frontend/app/components/Signup/SignupForm/SignupForm.js @@ -27,6 +27,7 @@ export default class SignupForm extends React.Component { password: '', email: '', projectName: '', + organizationName: '', }; componentDidMount() { @@ -34,8 +35,8 @@ export default class SignupForm extends React.Component { } handleSubmit = (token) => { - const { tenantId, fullname, password, email, projectName, auth } = this.state; - this.props.signup({ tenantId, fullname, password, email, projectName, auth, 'g-recaptcha-response': token }) + const { tenantId, fullname, password, email, projectName, organizationName, auth } = this.state; + this.props.signup({ tenantId, fullname, password, email, projectName, organizationName, auth, 'g-recaptcha-response': token }) } write = ({ target: { value, name } }) => this.setState({ [ name ]: value }) From fb50d9efa34fb2754e389c20f003a5d500852fd3 Mon Sep 17 00:00:00 2001 From: ShiKhu Date: Mon, 3 May 2021 21:07:07 +0200 Subject: [PATCH 4/7] fix (tracker): prevent send if not active --- tracker/tracker/src/main/app/index.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tracker/tracker/src/main/app/index.ts b/tracker/tracker/src/main/app/index.ts index d0e7771b0..91dc20322 100644 --- a/tracker/tracker/src/main/app/index.ts +++ b/tracker/tracker/src/main/app/index.ts @@ -97,6 +97,9 @@ export default class App { } catch (e) { /* TODO: send report */} } send(message: Message, urgent = false): void { + if (!this.isActive) { + return; + } this.messages.push(message); if (urgent) { this.commit(); @@ -224,7 +227,7 @@ export default class App { log("OpenReplay tracking started."); if (typeof this.options.onStart === 'function') { - this.options.onStart({ sessionToken: token, userUUID, sessionID: token }); + this.options.onStart({ sessionToken: token, userUUID, sessionID: token /* back compat (depricated) */ }); } }) .catch(e => { @@ -257,6 +260,7 @@ export default class App { this.nodes.clear(); this.ticker.stop(); this.stopCallbacks.forEach((cb) => cb()); + log("OpenReplay tracking stopped.") } finally { this.isActive = false; } From debf13ff997f04d0041b11aa580bb40647f3e759 Mon Sep 17 00:00:00 2001 From: ShiKhu Date: Mon, 3 May 2021 23:14:50 +0200 Subject: [PATCH 5/7] feat (backend-http): handle reset parameter on start --- backend/services/http/handlers.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/services/http/handlers.go b/backend/services/http/handlers.go index 252eddc5a..607f302f9 100644 --- a/backend/services/http/handlers.go +++ b/backend/services/http/handlers.go @@ -32,6 +32,7 @@ func startSessionHandlerWeb(w http.ResponseWriter, r *http.Request) { DeviceMemory uint64 `json:"deviceMemory"` JsHeapSizeLimit uint64 `json:"jsHeapSizeLimit"` ProjectKey *string `json:"projectKey"` + Reset boolean `json:"reset"` } type response struct { Timestamp int64 `json:"timestamp"` @@ -73,7 +74,7 @@ func startSessionHandlerWeb(w http.ResponseWriter, r *http.Request) { userUUID := getUUID(req.UserUUID) tokenData, err := tokenizer.Parse(req.Token) - if err != nil { // Starting the new one + if err != nil || req.Reset { // Starting the new one ua := uaParser.ParseFromHTTPRequest(r) if ua == nil { responseWithError(w, http.StatusForbidden, errors.New("browser not recognized")) From bf8054576682340404f3a48ee4d86949685d483b Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Tue, 4 May 2021 18:59:46 +0530 Subject: [PATCH 6/7] integrations doc links --- .../Integrations/BugsnagForm/BugsnagForm.js | 35 +- .../CloudwatchForm/CloudwatchForm.js | 3 +- .../Client/Integrations/DatadogForm.js | 3 +- .../Client/Integrations/ElasticsearchForm.js | 3 +- .../Client/Integrations/FetchDoc/FetchDoc.js | 5 +- .../Client/Integrations/GithubForm.js | 3 +- .../Integrations/GraphQLDoc/GraphQLDoc.js | 5 +- .../Client/Integrations/Integrations.js | 6 +- .../Client/Integrations/JiraForm/JiraForm.js | 47 +- .../Client/Integrations/MobxDoc/MobxDoc.js | 5 +- .../Integrations/NewrelicForm/NewrelicForm.js | 3 +- .../Client/Integrations/NgRxDoc/NgRxDoc.js | 5 +- .../Integrations/ProfilerDoc/ProfilerDoc.js | 5 +- .../Client/Integrations/ReduxDoc/ReduxDoc.js | 3 +- .../Client/Integrations/RollbarForm.js | 3 +- .../Client/Integrations/SentryForm.js | 3 +- .../Client/Integrations/StackdriverForm.js | 3 +- .../SumoLogicForm/SumoLogicForm.js | 3 +- .../Client/Integrations/VueDoc/VueDoc.js | 3 +- .../OnboardingTabs/InstallDocs/InstallDocs.js | 2 +- .../Session_/Player/Controls/Timeline.js | 3 +- .../app/components/shared/DocLink/DocLink.js | 6 +- frontend/app/svg/icons/integrations/mobx.svg | 1 + .../app/svg/icons/integrations/openreplay.svg | 2 +- frontend/env.js | 2 +- frontend/package-lock.json | 20740 ++++++---------- frontend/scripts/upload-minio.js | 11 +- 27 files changed, 7902 insertions(+), 13011 deletions(-) create mode 100644 frontend/app/svg/icons/integrations/mobx.svg diff --git a/frontend/app/components/Client/Integrations/BugsnagForm/BugsnagForm.js b/frontend/app/components/Client/Integrations/BugsnagForm/BugsnagForm.js index fc3dc1c72..e73f19bcd 100644 --- a/frontend/app/components/Client/Integrations/BugsnagForm/BugsnagForm.js +++ b/frontend/app/components/Client/Integrations/BugsnagForm/BugsnagForm.js @@ -1,22 +1,29 @@ import { tokenRE } from 'Types/integrations/bugsnagConfig'; import IntegrationForm from '../IntegrationForm'; import ProjectListDropdown from './ProjectListDropdown'; +import DocLink from 'Shared/DocLink/DocLink'; const BugsnagForm = (props) => ( - tokenRE.test(config.authorizationToken), - component: ProjectListDropdown, - } - ]} - /> + <> +
+
How to integrate Bugsnag with OpenReplay and see backend errors alongside session recordings.
+ +
+ tokenRE.test(config.authorizationToken), + component: ProjectListDropdown, + } + ]} + /> + ); BugsnagForm.displayName = "BugsnagForm"; diff --git a/frontend/app/components/Client/Integrations/CloudwatchForm/CloudwatchForm.js b/frontend/app/components/Client/Integrations/CloudwatchForm/CloudwatchForm.js index df7fbd1ce..e29e343f9 100644 --- a/frontend/app/components/Client/Integrations/CloudwatchForm/CloudwatchForm.js +++ b/frontend/app/components/Client/Integrations/CloudwatchForm/CloudwatchForm.js @@ -2,12 +2,13 @@ import { ACCESS_KEY_ID_LENGTH, SECRET_ACCESS_KEY_LENGTH } from 'Types/integratio import IntegrationForm from '../IntegrationForm'; import LogGroupDropdown from './LogGroupDropdown'; import RegionDropdown from './RegionDropdown'; +import DocLink from 'Shared/DocLink/DocLink'; const CloudwatchForm = (props) => ( <>
How to integrate CloudWatch with OpenReplay and see backend errors alongside session replays.
-
See Documentation for more details.
+
( <>
How to integrate Datadog with OpenReplay and see backend errors alongside session recordings.
-
See Documentation for more details.
+
({ config: state.getIn([ 'elasticsearch', 'instance' ]) @@ -43,7 +44,7 @@ export default class ElasticsearchForm extends React.PureComponent { <>
How to integrate Elasticsearch with OpenReplay and see backend errors alongside session recordings.
-
See Documentation for more details.
+
{ return ( @@ -55,7 +56,7 @@ fetch('https://api.openreplay.com/').then(response => console.log(response.json( } /> -
See API for more options.
+ ) }; diff --git a/frontend/app/components/Client/Integrations/GithubForm.js b/frontend/app/components/Client/Integrations/GithubForm.js index f9daeebe4..32bc42ceb 100644 --- a/frontend/app/components/Client/Integrations/GithubForm.js +++ b/frontend/app/components/Client/Integrations/GithubForm.js @@ -1,11 +1,12 @@ import IntegrationForm from './IntegrationForm'; +import DocLink from 'Shared/DocLink/DocLink'; const GithubForm = (props) => ( <>
Integrate GitHub with OpenReplay and create issues directly from the recording page.
{ return ( @@ -52,7 +53,7 @@ export const recordGraphQL = tracker.use(trackerGraphQL());`} } /> -
See API for more options.
+ ) }; diff --git a/frontend/app/components/Client/Integrations/Integrations.js b/frontend/app/components/Client/Integrations/Integrations.js index c148d7f31..d90587e5f 100644 --- a/frontend/app/components/Client/Integrations/Integrations.js +++ b/frontend/app/components/Client/Integrations/Integrations.js @@ -289,7 +289,7 @@ export default class Integrations extends React.PureComponent { this.showIntegrationConfig(FETCH) } @@ -298,7 +298,7 @@ export default class Integrations extends React.PureComponent { this.showIntegrationConfig(MOBX) } @@ -307,7 +307,7 @@ export default class Integrations extends React.PureComponent { this.showIntegrationConfig(PROFILER) } diff --git a/frontend/app/components/Client/Integrations/JiraForm/JiraForm.js b/frontend/app/components/Client/Integrations/JiraForm/JiraForm.js index 278f89890..867ebbcd1 100644 --- a/frontend/app/components/Client/Integrations/JiraForm/JiraForm.js +++ b/frontend/app/components/Client/Integrations/JiraForm/JiraForm.js @@ -1,25 +1,34 @@ import IntegrationForm from '../IntegrationForm'; +import DocLink from 'Shared/DocLink/DocLink'; const JiraForm = (props) => ( - + <> +
+
How to integrate Jira Cloud with OpenReplay.
+
+ +
+
+ + ); JiraForm.displayName = "JiraForm"; diff --git a/frontend/app/components/Client/Integrations/MobxDoc/MobxDoc.js b/frontend/app/components/Client/Integrations/MobxDoc/MobxDoc.js index f8ab34fa0..7c4b3233b 100644 --- a/frontend/app/components/Client/Integrations/MobxDoc/MobxDoc.js +++ b/frontend/app/components/Client/Integrations/MobxDoc/MobxDoc.js @@ -1,5 +1,6 @@ import Highlight from 'react-highlight' -import ToggleContent from '../../../shared/ToggleContent' +import ToggleContent from 'Shared/ToggleContent' +import DocLink from 'Shared/DocLink/DocLink'; const MobxDoc = (props) => { return ( @@ -49,7 +50,7 @@ function SomeFunctionalComponent() { } /> -
See API for more options.
+ ) }; diff --git a/frontend/app/components/Client/Integrations/NewrelicForm/NewrelicForm.js b/frontend/app/components/Client/Integrations/NewrelicForm/NewrelicForm.js index 769a17551..0e7b0bed6 100644 --- a/frontend/app/components/Client/Integrations/NewrelicForm/NewrelicForm.js +++ b/frontend/app/components/Client/Integrations/NewrelicForm/NewrelicForm.js @@ -1,10 +1,11 @@ import IntegrationForm from '../IntegrationForm'; +import DocLink from 'Shared/DocLink/DocLink'; const NewrelicForm = (props) => ( <>
How to integrate NewRelic with OpenReplay and see backend errors alongside session recordings.
-
See Documentation for more details.
+
{ return ( @@ -65,7 +66,7 @@ const metaReducers = [tracker.use(trackerNgRx())]; // check list of ava } /> -
See API for more options.
+ ) }; diff --git a/frontend/app/components/Client/Integrations/ProfilerDoc/ProfilerDoc.js b/frontend/app/components/Client/Integrations/ProfilerDoc/ProfilerDoc.js index 4a3e4a3d9..e61f968b9 100644 --- a/frontend/app/components/Client/Integrations/ProfilerDoc/ProfilerDoc.js +++ b/frontend/app/components/Client/Integrations/ProfilerDoc/ProfilerDoc.js @@ -1,5 +1,6 @@ import Highlight from 'react-highlight' -import ToggleContent from '../../../shared/ToggleContent' +import ToggleContent from 'Shared/ToggleContent' +import DocLink from 'Shared/DocLink/DocLink'; const ProfilerDoc = (props) => { return ( @@ -59,7 +60,7 @@ const fn = profiler('call_name')(() => { } /> -
See API for more options.
+ ) }; diff --git a/frontend/app/components/Client/Integrations/ReduxDoc/ReduxDoc.js b/frontend/app/components/Client/Integrations/ReduxDoc/ReduxDoc.js index a88fb4103..acc083a97 100644 --- a/frontend/app/components/Client/Integrations/ReduxDoc/ReduxDoc.js +++ b/frontend/app/components/Client/Integrations/ReduxDoc/ReduxDoc.js @@ -1,5 +1,6 @@ import Highlight from 'react-highlight' import ToggleContent from '../../../shared/ToggleContent'; +import DocLink from 'Shared/DocLink/DocLink'; const ReduxDoc = (props) => { return ( @@ -58,7 +59,7 @@ const store = createStore( } /> -
See API for more options.
+ ) }; diff --git a/frontend/app/components/Client/Integrations/RollbarForm.js b/frontend/app/components/Client/Integrations/RollbarForm.js index 87a2033e4..04ccc8b2b 100644 --- a/frontend/app/components/Client/Integrations/RollbarForm.js +++ b/frontend/app/components/Client/Integrations/RollbarForm.js @@ -1,10 +1,11 @@ import IntegrationForm from './IntegrationForm'; +import DocLink from 'Shared/DocLink/DocLink'; const RollbarForm = (props) => ( <>
How to integrate Rollbar with OpenReplay and see backend errors alongside session replays.
-
See Documentation for more details.
+
( <>
How to integrate Sentry with OpenReplay and see backend errors alongside session recordings.
-
See Documentation for more details.
+
( <>
How to integrate Stackdriver with OpenReplay and see backend errors alongside session recordings.
-
See Documentation for more details.
+
( <>
How to integrate SumoLogic with OpenReplay and see backend errors alongside session recordings.
-
See Documentation for more details.
+
{ return ( @@ -59,7 +60,7 @@ const store = new Vuex.Store({ } /> -
See API for more options.
+ ) }; diff --git a/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js b/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js index 4072b2018..2d6230c0a 100644 --- a/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js +++ b/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js @@ -88,7 +88,7 @@ function InstallDocs({ site }) { -
See Documentation for the list of available options.
+
See Documentation for the list of available options.
) } diff --git a/frontend/app/components/Session_/Player/Controls/Timeline.js b/frontend/app/components/Session_/Player/Controls/Timeline.js index aeab1af64..4114929c9 100644 --- a/frontend/app/components/Session_/Player/Controls/Timeline.js +++ b/frontend/app/components/Session_/Player/Controls/Timeline.js @@ -112,6 +112,7 @@ export default class Timeline extends React.PureComponent { style={ { left: `${ interval.start * scale }%`, width: `${ (interval.end - interval.start) * scale }%`, + top: '-30px' } } />)) } @@ -120,7 +121,7 @@ export default class Timeline extends React.PureComponent {
)) } diff --git a/frontend/app/components/shared/DocLink/DocLink.js b/frontend/app/components/shared/DocLink/DocLink.js index 052d648a1..d750fe192 100644 --- a/frontend/app/components/shared/DocLink/DocLink.js +++ b/frontend/app/components/shared/DocLink/DocLink.js @@ -1,13 +1,13 @@ import React from 'react' import { Button } from 'UI' -export default function DocLink({ link, label }) { +export default function DocLink({ className = '', url, label }) { const openLink = () => { - window.open(link, '_blank') + window.open(url, '_blank') } return ( -
+
diff --git a/frontend/app/svg/icons/integrations/mobx.svg b/frontend/app/svg/icons/integrations/mobx.svg new file mode 100644 index 000000000..2747797bd --- /dev/null +++ b/frontend/app/svg/icons/integrations/mobx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/app/svg/icons/integrations/openreplay.svg b/frontend/app/svg/icons/integrations/openreplay.svg index 77fb302b9..667be8f22 100644 --- a/frontend/app/svg/icons/integrations/openreplay.svg +++ b/frontend/app/svg/icons/integrations/openreplay.svg @@ -1,5 +1,5 @@ - + Group diff --git a/frontend/env.js b/frontend/env.js index 4c5902987..0bdc0ab4a 100644 --- a/frontend/env.js +++ b/frontend/env.js @@ -8,7 +8,7 @@ const oss = { CAPTCHA_ENABLED: process.env.CAPTCHA_ENABLED, CAPTCHA_SITE_KEY: process.env.CAPTCHA_SITE_KEY, ORIGIN: () => 'window.location.origin', - API_EDP: () => 'window.location.origin + "/api"', + API_EDP: 'https://staging-parrot.asayer.io', ASSETS_HOST: () => 'window.location.origin + "/assets"', VERSION: '1.0.1', SOURCEMAP: true, diff --git a/frontend/package-lock.json b/frontend/package-lock.json index fa3abbf98..9f40b8bba 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -106,16 +106,15 @@ } }, "node_modules/@babel/cli": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.10.tgz", - "integrity": "sha512-lYSBC7B4B9hJ7sv0Ojx1BrGhuzCoOIYfLjd+Xpd4rOzdS+a47yi8voV8vFkfjlZR1N5qZO7ixOCbobUdT304PQ==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.16.tgz", + "integrity": "sha512-cL9tllhqvsQ6r1+d9Invf7nNXg/3BlfL1vvvL/AdH9fZ2l5j0CeBcoq6UjsqHpvyN1v5nXSZgqJZoGeK+ZOAbw==", "dev": true, "dependencies": { "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.19", "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" @@ -151,31 +150,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", "dev": true }, "node_modules/@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", + "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", + "@babel/generator": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.0", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", "semver": "^6.3.0", "source-map": "^0.5.0" }, @@ -197,12 +195,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.14.1", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -236,12 +234,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", - "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", + "@babel/compat-data": "^7.13.15", "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", "semver": "^6.3.0" @@ -251,15 +249,16 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", + "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", "dev": true, "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13" }, "peerDependencies": { @@ -280,9 +279,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -328,13 +327,13 @@ } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" } }, "node_modules/@babel/helper-member-expression-to-functions": { @@ -356,19 +355,19 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", - "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.13.12", "@babel/helper-replace-supers": "^7.13.12", "@babel/helper-simple-access": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.0", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" } }, "node_modules/@babel/helper-optimise-call-expression": { @@ -437,9 +436,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", "dev": true }, "node_modules/@babel/helper-validator-option": { @@ -461,31 +460,31 @@ } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", "dev": true, "dependencies": { "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.0", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "node_modules/@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -509,9 +508,9 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.13.0", @@ -535,13 +534,26 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.13.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz", - "integrity": "sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag==", + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", + "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.15.tgz", + "integrity": "sha512-ibAMAqUm97yzi+LPgdr5Nqb9CMkeieGHvwPg1ywSGjZrZHQEGqE01HmOio8kxRpA/+VtOHouIVy2FMpBbtltjA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.11", "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-decorators": "^7.12.13" }, @@ -696,6 +708,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", @@ -748,6 +775,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", + "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-decorators": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", @@ -904,6 +943,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", @@ -967,12 +1018,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", + "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.13.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1009,9 +1060,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.13.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" @@ -1121,12 +1172,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", + "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -1135,14 +1186,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-simple-access": "^7.13.12", "babel-plugin-dynamic-import-node": "^2.3.3" }, "peerDependencies": { @@ -1166,12 +1217,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0" }, "peerDependencies": { @@ -1240,9 +1291,9 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.10.tgz", - "integrity": "sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz", + "integrity": "sha512-SNJU53VM/SjQL0bZhyU+f4kJQz7bQQajnrZRSaU21hruG/NWY41AEM9AWXeXX90pYr/C2yAmTgI6yW3LlLrAUQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.13.0" @@ -1329,9 +1380,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" @@ -1477,18 +1528,19 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz", + "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-validator-option": "^7.12.17", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", + "@babel/plugin-proposal-async-generator-functions": "^7.13.15", "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.13.11", "@babel/plugin-proposal-dynamic-import": "^7.13.8", "@babel/plugin-proposal-export-namespace-from": "^7.12.13", "@babel/plugin-proposal-json-strings": "^7.13.8", @@ -1499,9 +1551,11 @@ "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", "@babel/plugin-proposal-optional-chaining": "^7.13.12", "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1511,14 +1565,15 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", "@babel/plugin-syntax-top-level-await": "^7.12.13", "@babel/plugin-transform-arrow-functions": "^7.13.0", "@babel/plugin-transform-async-to-generator": "^7.13.0", "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.14.1", "@babel/plugin-transform-classes": "^7.13.0", "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.17", "@babel/plugin-transform-dotall-regex": "^7.12.13", "@babel/plugin-transform-duplicate-keys": "^7.12.13", "@babel/plugin-transform-exponentiation-operator": "^7.12.13", @@ -1526,16 +1581,16 @@ "@babel/plugin-transform-function-name": "^7.12.13", "@babel/plugin-transform-literals": "^7.12.13", "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-amd": "^7.14.0", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-modules-umd": "^7.14.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", "@babel/plugin-transform-new-target": "^7.12.13", "@babel/plugin-transform-object-super": "^7.12.13", "@babel/plugin-transform-parameters": "^7.13.0", "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", "@babel/plugin-transform-reserved-words": "^7.12.13", "@babel/plugin-transform-shorthand-properties": "^7.12.13", "@babel/plugin-transform-spread": "^7.13.0", @@ -1545,10 +1600,10 @@ "@babel/plugin-transform-unicode-escapes": "^7.12.13", "@babel/plugin-transform-unicode-regex": "^7.12.13", "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", + "@babel/types": "^7.14.1", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", "core-js-compat": "^3.9.0", "semver": "^6.3.0" }, @@ -1557,13 +1612,14 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.12.13.tgz", - "integrity": "sha512-gcEjiwcGHa3bo9idURBp5fmJPcyFPOszPQjztXrOjUE2wWVqc6fIVJPgWPIQksaQ5XZ2HWiRsf2s1fRGVjUtVw==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.13.13.tgz", + "integrity": "sha512-MDtwtamMifqq3R2mC7l3A3uFalUb3NH5TIBQWjN/epEPlZktcLq4se3J+ivckKrLMGsR7H9LW8+pYuIUN9tsKg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-transform-flow-strip-types": "^7.12.13" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-transform-flow-strip-types": "^7.13.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1586,15 +1642,16 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz", - "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz", + "integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", "@babel/plugin-transform-react-display-name": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.12.13", - "@babel/plugin-transform-react-jsx-development": "^7.12.12", + "@babel/plugin-transform-react-jsx": "^7.13.12", + "@babel/plugin-transform-react-jsx-development": "^7.12.17", "@babel/plugin-transform-react-pure-annotations": "^7.12.1" }, "peerDependencies": { @@ -1616,13 +1673,13 @@ } }, "node_modules/@babel/register": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.8.tgz", - "integrity": "sha512-yCVtABcmvQjRsX2elcZFUV5Q5kDDpHdtXKKku22hNDma60lYuhKmtp1ykZ/okRCPLT2bR5S+cA1kvtBdAFlDTQ==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.16.tgz", + "integrity": "sha512-dh2t11ysujTwByQjXNgJ48QZ2zcXKQVdV8s0TbeMI0flmtGWCdTwK9tJiACHXPLmncm5+ktNn/diojA45JE4jg==", "dev": true, "dependencies": { + "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", - "lodash": "^4.17.19", "make-dir": "^2.1.0", "pirates": "^4.0.0", "source-map-support": "^0.5.16" @@ -1632,17 +1689,17 @@ } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dependencies": { "regenerator-runtime": "^0.13.4" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", - "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", + "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", "dev": true, "dependencies": { "core-js-pure": "^3.0.0", @@ -1661,30 +1718,28 @@ } }, "node_modules/@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", + "@babel/generator": "^7.14.0", "@babel/helper-function-name": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" } }, "node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.14.0", "to-fast-properties": "^2.0.0" } }, @@ -1966,15 +2021,6 @@ "react": ">=0.14.0" } }, - "node_modules/@icons/material": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", - "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", - "dev": true, - "peerDependencies": { - "react": "*" - } - }, "node_modules/@jest/console": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", @@ -2075,15 +2121,6 @@ "node": ">=0.10.0" } }, - "node_modules/@jest/core/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@jest/core/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -2307,15 +2344,6 @@ "node": ">=0.10.0" } }, - "node_modules/@jest/transform/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@jest/transform/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -2532,9 +2560,9 @@ } }, "node_modules/@popperjs/core": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz", - "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", + "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==", "dev": true, "funding": { "type": "opencollective", @@ -2646,19 +2674,19 @@ } }, "node_modules/@storybook/addons": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.1.21.tgz", - "integrity": "sha512-xo5TGu9EZVCqgh3D1veVnfuGzyKDWWsvOMo18phVqRxj21G3/+hScVyfIYwNTv7Ys5/Ahp9JxJUMXL3V3ny+tw==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.2.9.tgz", + "integrity": "sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ==", "dev": true, "dependencies": { - "@storybook/api": "6.1.21", - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/core-events": "6.1.21", - "@storybook/router": "6.1.21", - "@storybook/theming": "6.1.21", - "core-js": "^3.0.1", - "global": "^4.3.2", + "@storybook/api": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/router": "6.2.9", + "@storybook/theming": "6.2.9", + "core-js": "^3.8.2", + "global": "^4.4.0", "regenerator-runtime": "^0.13.7" }, "peerDependencies": { @@ -2667,28 +2695,29 @@ } }, "node_modules/@storybook/api": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.1.21.tgz", - "integrity": "sha512-QjZk70VSXMw/wPPoWdMp5Bl9VmkfmGhIz8PALrFLLEZHjzptpfZE2qkGEEJHG0NAksFUv6NxGki2/632dzR7Ug==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.2.9.tgz", + "integrity": "sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ==", "dev": true, "dependencies": { - "@reach/router": "^1.3.3", - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/core-events": "6.1.21", + "@reach/router": "^1.3.4", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", "@storybook/csf": "0.0.1", - "@storybook/router": "6.1.21", + "@storybook/router": "6.2.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.1.21", + "@storybook/theming": "6.2.9", "@types/reach__router": "^1.3.7", - "core-js": "^3.0.1", - "fast-deep-equal": "^3.1.1", - "global": "^4.3.2", - "lodash": "^4.17.15", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", "memoizerific": "^1.11.3", + "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", - "store2": "^2.7.1", - "telejson": "^5.0.2", + "store2": "^2.12.0", + "telejson": "^5.1.0", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, @@ -2697,122 +2726,23 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/channel-postmessage": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.1.21.tgz", - "integrity": "sha512-SuI/ffqcPT02VNda32k8V0D4XpLm5bIy8CLIs0OAnQg+zt5KjGBpQBngk3q4EaAiOoAhbMWAQiUzRUXfrgkgXg==", + "node_modules/@storybook/builder-webpack4": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.2.9.tgz", + "integrity": "sha512-swECic1huVdj+B+iRJIQ8ds59HuPVE4fmhI+j/nhw0CQCsgAEKqDlOQVYEimW6nZX8GO4WxNm6tiiRzxixejbw==", "dev": true, "dependencies": { - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/core-events": "6.1.21", - "core-js": "^3.0.1", - "global": "^4.3.2", - "qs": "^6.6.0", - "telejson": "^5.0.2" - } - }, - "node_modules/@storybook/channels": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.1.21.tgz", - "integrity": "sha512-7WoizMjyHqCyvcWncLexSg9FLPIErWAZL4NvluEthwsHSO2sDybn9mh1pzsFHdYMuTP6ml06Zt9ayWMtIveHDg==", - "dev": true, - "dependencies": { - "core-js": "^3.0.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - } - }, - "node_modules/@storybook/client-api": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.1.21.tgz", - "integrity": "sha512-uLFXQ5z1LLWYnw1w+YUJPzIPRVlwCCvM2Si37aHDZn1F3fnbMg+huEhEqIQ1TTTw3wiJoTeGuShYvqyaiNwq/w==", - "dev": true, - "dependencies": { - "@storybook/addons": "6.1.21", - "@storybook/channel-postmessage": "6.1.21", - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/core-events": "6.1.21", - "@storybook/csf": "0.0.1", - "@types/qs": "^6.9.0", - "@types/webpack-env": "^1.15.3", - "core-js": "^3.0.1", - "global": "^4.3.2", - "lodash": "^4.17.15", - "memoizerific": "^1.11.3", - "qs": "^6.6.0", - "regenerator-runtime": "^0.13.7", - "stable": "^0.1.8", - "store2": "^2.7.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@storybook/client-logger": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.1.21.tgz", - "integrity": "sha512-QJV+gnVM2fQ4M7lSkRLCXkOw/RU+aEtUefo9TAnXxPHK3UGG+DyvLmha6fHGaz9GAcFxyWtgqCyVOhMe03Q35g==", - "dev": true, - "dependencies": { - "core-js": "^3.0.1", - "global": "^4.3.2" - } - }, - "node_modules/@storybook/components": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.1.21.tgz", - "integrity": "sha512-2NjkyS1yeYXlRY7azt88woqd6eqJA00oloIxgMAFLVpRmvFxoHalY61wNrvxl2QSu9cNofp984AbGc8gPbizBA==", - "dev": true, - "dependencies": { - "@popperjs/core": "^2.5.4", - "@storybook/client-logger": "6.1.21", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.1.21", - "@types/overlayscrollbars": "^1.9.0", - "@types/react-color": "^3.0.1", - "@types/react-syntax-highlighter": "11.0.4", - "core-js": "^3.0.1", - "fast-deep-equal": "^3.1.1", - "global": "^4.3.2", - "lodash": "^4.17.15", - "markdown-to-jsx": "^6.11.4", - "memoizerific": "^1.11.3", - "overlayscrollbars": "^1.10.2", - "polished": "^3.4.4", - "react-color": "^2.17.0", - "react-popper-tooltip": "^3.1.1", - "react-syntax-highlighter": "^13.5.0", - "react-textarea-autosize": "^8.1.1", - "regenerator-runtime": "^0.13.7", - "ts-dedent": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@storybook/core": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.1.21.tgz", - "integrity": "sha512-ITqSid3VVL5/fkx7Wwu7QfD2Y5xjl3V6p7yUpLSzP8GpBnCHKDvJ4pFJUdJlGQ0mnGz6ACa0qVnSc+V0hiy1sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", + "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-decorators": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", "@babel/plugin-proposal-export-default-from": "^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", "@babel/plugin-proposal-private-methods": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", "@babel/plugin-transform-classes": "^7.12.1", "@babel/plugin-transform-destructuring": "^7.12.1", "@babel/plugin-transform-for-of": "^7.12.1", @@ -2820,86 +2750,55 @@ "@babel/plugin-transform-shorthand-properties": "^7.12.1", "@babel/plugin-transform-spread": "^7.12.1", "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.1", - "@babel/preset-typescript": "^7.12.1", - "@babel/register": "^7.12.1", - "@storybook/addons": "6.1.21", - "@storybook/api": "6.1.21", - "@storybook/channel-postmessage": "6.1.21", - "@storybook/channels": "6.1.21", - "@storybook/client-api": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/components": "6.1.21", - "@storybook/core-events": "6.1.21", - "@storybook/csf": "0.0.1", - "@storybook/node-logger": "6.1.21", - "@storybook/router": "6.1.21", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@storybook/addons": "6.2.9", + "@storybook/api": "6.2.9", + "@storybook/channel-postmessage": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-api": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/components": "6.2.9", + "@storybook/core-common": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/node-logger": "6.2.9", + "@storybook/router": "6.2.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.1.21", - "@storybook/ui": "6.1.21", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", - "@types/node-fetch": "^2.5.4", - "airbnb-js-shims": "^2.2.1", - "ansi-to-html": "^0.6.11", - "autoprefixer": "^9.7.2", - "babel-loader": "^8.0.6", - "babel-plugin-emotion": "^10.0.20", + "@storybook/theming": "6.2.9", + "@storybook/ui": "6.2.9", + "@types/node": "^14.0.10", + "@types/webpack": "^4.41.26", + "autoprefixer": "^9.8.6", + "babel-loader": "^8.2.2", "babel-plugin-macros": "^2.8.0", - "babel-preset-minify": "^0.5.0 || 0.6.0-alpha.5", - "better-opn": "^2.0.0", - "boxen": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.2.0", - "chalk": "^4.0.0", - "cli-table3": "0.6.0", - "commander": "^5.0.0", - "core-js": "^3.0.1", - "cpy": "^8.1.1", - "css-loader": "^3.5.3", - "detect-port": "^1.3.0", - "dotenv-webpack": "^1.7.0", - "ejs": "^3.1.2", - "express": "^4.17.0", - "file-loader": "^6.0.0", - "file-system-cache": "^1.0.5", - "find-up": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^4.1.4", - "fs-extra": "^9.0.0", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "dotenv-webpack": "^1.8.0", + "file-loader": "^6.2.0", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^4.1.6", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", "glob-promise": "^3.4.0", - "global": "^4.3.2", - "html-webpack-plugin": "^4.2.1", - "inquirer": "^7.0.0", - "interpret": "^2.0.0", - "ip": "^1.1.5", - "json5": "^2.1.1", - "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", - "node-fetch": "^2.6.0", - "pkg-dir": "^4.2.0", + "global": "^4.4.0", + "html-webpack-plugin": "^4.0.0", "pnp-webpack-plugin": "1.6.4", - "postcss-flexbugs-fixes": "^4.1.0", - "postcss-loader": "^3.0.0", - "pretty-hrtime": "^1.0.3", - "qs": "^6.6.0", - "raw-loader": "^4.0.1", + "postcss": "^7.0.35", + "postcss-flexbugs-fixes": "^4.2.1", + "postcss-loader": "^4.2.0", + "raw-loader": "^4.0.2", "react-dev-utils": "^11.0.3", - "regenerator-runtime": "^0.13.7", - "resolve-from": "^5.0.0", - "serve-favicon": "^2.5.0", - "shelljs": "^0.8.4", "stable": "^0.1.8", - "style-loader": "^1.2.1", - "telejson": "^5.0.2", - "terser-webpack-plugin": "^3.0.0", + "style-loader": "^1.3.0", + "terser-webpack-plugin": "^3.1.0", "ts-dedent": "^2.0.0", - "unfetch": "^4.1.0", - "url-loader": "^4.0.0", + "url-loader": "^4.1.1", "util-deprecate": "^1.0.2", - "webpack": "^4.44.2", - "webpack-dev-middleware": "^3.7.0", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", "webpack-filter-warnings-plugin": "^1.2.1", "webpack-hot-middleware": "^2.25.0", "webpack-virtual-modules": "^0.2.2" @@ -2907,33 +2806,33 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0", "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/core-events": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.1.21.tgz", - "integrity": "sha512-KWqnh1C7M1pT//WfQb3AD60yTR8jL48AfaeLGto2gO9VK7VVgj/EGsrXZP/GTL90ygyExbbBI5gkr7EBTu/HYw==", + "node_modules/@storybook/builder-webpack4/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "dev": true, "dependencies": { - "core-js": "^3.0.1" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "node_modules/@storybook/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@storybook/core/node_modules/autoprefixer": { + "node_modules/@storybook/builder-webpack4/node_modules/autoprefixer": { "version": "9.8.6", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", @@ -2955,50 +2854,101 @@ "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, - "node_modules/@storybook/core/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" } }, - "node_modules/@storybook/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/@storybook/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@storybook/core/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", "dev": true, - "engines": { - "node": ">= 6" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@storybook/core/node_modules/html-webpack-plugin": { + "node_modules/@storybook/builder-webpack4/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "engines": { + "node": ">=6.11.5", + "yarn": ">=1.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/html-webpack-plugin": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", @@ -3021,105 +2971,132 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/core/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "node_modules/@storybook/builder-webpack4/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", + "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/core/node_modules/postcss-value-parser": { + "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader/node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/@storybook/core/node_modules/postcss/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@storybook/core/node_modules/postcss/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@storybook/core/node_modules/postcss/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@storybook/core/node_modules/postcss/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@storybook/core/node_modules/postcss/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@storybook/core/node_modules/postcss/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@storybook/core/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/core/node_modules/style-loader": { + "node_modules/@storybook/builder-webpack4/node_modules/style-loader": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", @@ -3139,7 +3116,7 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/core/node_modules/style-loader/node_modules/loader-utils": { + "node_modules/@storybook/builder-webpack4/node_modules/style-loader/node_modules/loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", @@ -3153,7 +3130,309 @@ "node": ">=8.9.0" } }, - "node_modules/@storybook/core/node_modules/supports-color": { + "node_modules/@storybook/builder-webpack4/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@storybook/channel-postmessage": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.2.9.tgz", + "integrity": "sha512-OqV+gLeeCHR0KExsIz0B7gD17Cjd9D+I75qnBsLWM9inWO5kc/WZ5svw8Bvjlcm6snWpvxUaT8L+svuqcPSmww==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^5.1.0" + } + }, + "node_modules/@storybook/channels": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.2.9.tgz", + "integrity": "sha512-6dC8Fb2ipNyOQXnUZMDeEUaJGH5DMLzyHlGLhVyDtrO5WR6bO8mQdkzf4+5dSKXgCBNX0BSkssXth4pDjn18rg==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "node_modules/@storybook/client-api": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.2.9.tgz", + "integrity": "sha512-aLvEUVkbvv6Qo/2mF4rFCecdqi2CGOUDdsV1a6EFIVS/9gXFdpirsOwKHo9qNjacGdWPlBYGCUcbrw+DvNaSFA==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.2.9", + "@storybook/channel-postmessage": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/csf": "0.0.1", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "stable": "^0.1.8", + "store2": "^2.12.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/client-logger": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.2.9.tgz", + "integrity": "sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "node_modules/@storybook/components": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.2.9.tgz", + "integrity": "sha512-hnV1MI2aB2g1sJ7NJphpxi7TwrMZQ/tpCJeHnkjmzyC6ez1MXqcBXGrEEdSXzRfAxjQTOEpu6H1mnns0xMP0Ag==", + "dev": true, + "dependencies": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.2.9", + "@storybook/csf": "0.0.1", + "@storybook/theming": "6.2.9", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^7.1.0", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.0.1", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/core": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.2.9.tgz", + "integrity": "sha512-pzbyjWvj0t8m0kR2pC9GQne4sZn7Y/zfcbm6/31CL+yhzOQjfJEj3n4ZFUlxikXqQJPg1aWfypfyaeaLL0QyuA==", + "dev": true, + "dependencies": { + "@storybook/core-client": "6.2.9", + "@storybook/core-server": "6.2.9" + }, + "peerDependencies": { + "@storybook/builder-webpack5": "6.2.9", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@storybook/builder-webpack5": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/core-client": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.2.9.tgz", + "integrity": "sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.2.9", + "@storybook/channel-postmessage": "6.2.9", + "@storybook/client-api": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/csf": "0.0.1", + "@storybook/ui": "6.2.9", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0", + "webpack": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/core-common": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.2.9.tgz", + "integrity": "sha512-ve0Qb4EMit8jGibfZBprmaU2i4LtpB4vSMIzD9nB1YeBmw2cGhHubtmayZ0TwcV3fPQhtYH9wwRWuWyzzHyQyw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.2.9", + "@storybook/semver": "^7.3.2", + "@types/glob-base": "^0.3.0", + "@types/micromatch": "^4.0.1", + "@types/node": "^14.0.10", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.2.2", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "glob": "^7.1.6", + "glob-base": "^0.3.0", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "micromatch": "^4.0.2", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/core-common/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@storybook/core-common/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/core-common/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@storybook/core-common/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/core-common/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/core-common/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -3165,7 +3444,130 @@ "node": ">=8" } }, - "node_modules/@storybook/core/node_modules/supports-color/node_modules/has-flag": { + "node_modules/@storybook/core-events": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.2.9.tgz", + "integrity": "sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2" + } + }, + "node_modules/@storybook/core-server": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.2.9.tgz", + "integrity": "sha512-DzihO73pj1Ro0Y4tq9hjw2mLMUYeSRPrx7CndCOBxcTHCKQ8Kd7Dee3wJ49t5/19V7TW1+4lYR59GAy73FeOAQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@storybook/addons": "6.2.9", + "@storybook/builder-webpack4": "6.2.9", + "@storybook/core-client": "6.2.9", + "@storybook/core-common": "6.2.9", + "@storybook/node-logger": "6.2.9", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.2.9", + "@storybook/ui": "6.2.9", + "@types/node": "^14.0.10", + "@types/node-fetch": "^2.5.7", + "@types/pretty-hrtime": "^1.0.0", + "@types/webpack": "^4.41.26", + "airbnb-js-shims": "^2.2.1", + "babel-loader": "^8.2.2", + "better-opn": "^2.1.1", + "boxen": "^4.2.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chalk": "^4.1.0", + "cli-table3": "0.6.0", + "commander": "^6.2.1", + "core-js": "^3.8.2", + "cpy": "^8.1.1", + "css-loader": "^3.6.0", + "detect-port": "^1.3.0", + "dotenv-webpack": "^1.8.0", + "express": "^4.17.1", + "file-loader": "^6.2.0", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fs-extra": "^9.0.1", + "global": "^4.4.0", + "html-webpack-plugin": "^4.0.0", + "ip": "^1.1.5", + "node-fetch": "^2.6.1", + "pnp-webpack-plugin": "1.6.4", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "serve-favicon": "^2.5.0", + "style-loader": "^1.3.0", + "telejson": "^5.1.0", + "terser-webpack-plugin": "^3.1.0", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-virtual-modules": "^0.2.2" + }, + "peerDependencies": { + "@storybook/builder-webpack5": "6.2.9", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@storybook/builder-webpack5": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/core-server/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/core-server/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/core-server/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@storybook/core-server/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -3174,6 +3576,75 @@ "node": ">=8" } }, + "node_modules/@storybook/core-server/node_modules/html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/style-loader/node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/csf": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", @@ -3184,14 +3655,14 @@ } }, "node_modules/@storybook/node-logger": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.1.21.tgz", - "integrity": "sha512-wQZZw4n1PG3kGOsczWCBC6+8RagYkrGYDqsVOpUcs5shGbPg5beCXDuzP4nxz2IlsoP9ZtTSaX741H791OIOjA==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.2.9.tgz", + "integrity": "sha512-ryRBChWZf1A5hOVONErJZosS25IdMweoMVFAUAcj91iC0ynoSA6YL2jmoE71jQchxEXEgkDeRkX9lR/GlqFGZQ==", "dev": true, "dependencies": { "@types/npmlog": "^4.1.2", - "chalk": "^4.0.0", - "core-js": "^3.0.1", + "chalk": "^4.1.0", + "core-js": "^3.8.2", "npmlog": "^4.1.2", "pretty-hrtime": "^1.0.3" } @@ -3212,9 +3683,9 @@ } }, "node_modules/@storybook/node-logger/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -3227,24 +3698,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/node-logger/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@storybook/node-logger/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/@storybook/node-logger/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3267,32 +3720,34 @@ } }, "node_modules/@storybook/react": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.1.21.tgz", - "integrity": "sha512-j3gq/ssWxRCCH5iCHbP3ihXSGS7lVWh1HpmBmGbbhHGHgdmSPsRjwDXiQGE81EmE7bzbC8NECBhU3zHJ6h1TvA==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.2.9.tgz", + "integrity": "sha512-glvw+o/Vek2oapYIXCYDK6gm3cuSnx0XdOpiJVcXk3KLb8JfLbdzGYYp6dcWUbyOBqGcGFRpXIgMmkcwgn+fvQ==", "dev": true, "dependencies": { "@babel/preset-flow": "^7.12.1", - "@babel/preset-react": "^7.12.1", - "@pmmmwh/react-refresh-webpack-plugin": "^0.4.2", - "@storybook/addons": "6.1.21", - "@storybook/core": "6.1.21", - "@storybook/node-logger": "6.1.21", + "@babel/preset-react": "^7.12.10", + "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", + "@storybook/addons": "6.2.9", + "@storybook/core": "6.2.9", + "@storybook/core-common": "6.2.9", + "@storybook/node-logger": "6.2.9", "@storybook/semver": "^7.3.2", - "@types/webpack-env": "^1.15.3", + "@types/webpack-env": "^1.16.0", "babel-plugin-add-react-displayname": "^0.0.5", "babel-plugin-named-asset-import": "^0.3.1", "babel-plugin-react-docgen": "^4.2.1", - "core-js": "^3.0.1", - "global": "^4.3.2", - "lodash": "^4.17.15", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", "prop-types": "^15.7.2", "react-dev-utils": "^11.0.3", "react-docgen-typescript-plugin": "^0.6.2", "react-refresh": "^0.8.3", + "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", - "webpack": "^4.44.2" + "webpack": "4" }, "bin": { "build-storybook": "bin/build.js", @@ -3300,26 +3755,38 @@ "storybook-server": "bin/index.js" }, "engines": { - "node": ">=8.0.0" + "node": ">=10.13.0" }, "peerDependencies": { "@babel/core": "^7.11.5", "react": "^16.8.0 || ^17.0.0", "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "typescript": { + "optional": true + } } }, "node_modules/@storybook/router": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.1.21.tgz", - "integrity": "sha512-m75WvUhoCBWDVekICAdbkidji/w5hCjHo+M8L13UghpwXWEnyr4/QqvkOb/PcSC8aZzxeMqSCpRQ1o6LWULneg==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.2.9.tgz", + "integrity": "sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg==", "dev": true, "dependencies": { - "@reach/router": "^1.3.3", + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.2.9", "@types/reach__router": "^1.3.7", - "core-js": "^3.0.1", - "global": "^4.3.2", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", "memoizerific": "^1.11.3", - "qs": "^6.6.0" + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0", @@ -3342,22 +3809,59 @@ "node": ">=10" } }, + "node_modules/@storybook/semver/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/semver/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/semver/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/theming": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.1.21.tgz", - "integrity": "sha512-yq7+/mpdljRdSRJYw/In/9tnDGXIUDe//mhyMftFfrB2mq6zi1yAZpowCerWhiDE2ipGkrfzIYx/Sn7bcaXgqg==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.2.9.tgz", + "integrity": "sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", - "@emotion/styled": "^10.0.23", - "@storybook/client-logger": "6.1.21", - "core-js": "^3.0.1", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.2.9", + "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", - "emotion-theming": "^10.0.19", - "global": "^4.3.2", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", "memoizerific": "^1.11.3", - "polished": "^3.4.4", + "polished": "^4.0.5", "resolve-from": "^5.0.0", "ts-dedent": "^2.0.0" }, @@ -3367,47 +3871,62 @@ } }, "node_modules/@storybook/ui": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.1.21.tgz", - "integrity": "sha512-2nRb5egnSBKbosuR7g5PsuM4XnRLXZUf7TBjwT6eRlomnE2wrWM5DtTLpFeUpDob0SI5hPlOV1xCpPz3XmeyyA==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.2.9.tgz", + "integrity": "sha512-jq2xmw3reIqik/6ibUSbNKGR+Xvr9wkAEwexiOl+5WQ5BeYJpw4dmDmsFQf+SQuWaSEUUPolbzkakRQM778Kdg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.1.21", - "@storybook/api": "6.1.21", - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/components": "6.1.21", - "@storybook/core-events": "6.1.21", - "@storybook/router": "6.1.21", + "@storybook/addons": "6.2.9", + "@storybook/api": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/components": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/router": "6.2.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.1.21", - "@types/markdown-to-jsx": "^6.11.0", - "copy-to-clipboard": "^3.0.8", - "core-js": "^3.0.1", - "core-js-pure": "^3.0.1", - "downshift": "^6.0.6", - "emotion-theming": "^10.0.19", + "@storybook/theming": "6.2.9", + "@types/markdown-to-jsx": "^6.11.3", + "copy-to-clipboard": "^3.3.1", + "core-js": "^3.8.2", + "core-js-pure": "^3.8.2", + "downshift": "^6.0.15", + "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", - "global": "^4.3.2", - "lodash": "^4.17.15", + "global": "^4.4.0", + "lodash": "^4.17.20", "markdown-to-jsx": "^6.11.4", "memoizerific": "^1.11.3", - "polished": "^3.4.4", - "qs": "^6.6.0", - "react-draggable": "^4.0.3", - "react-helmet-async": "^1.0.2", - "react-hotkeys": "2.0.0", - "react-sizeme": "^2.6.7", + "polished": "^4.0.5", + "qs": "^6.10.0", + "react-draggable": "^4.4.3", + "react-helmet-async": "^1.0.7", + "react-sizeme": "^3.0.1", "regenerator-runtime": "^0.13.7", "resolve-from": "^5.0.0", - "store2": "^2.7.1" + "store2": "^2.12.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0", "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/ui/node_modules/markdown-to-jsx": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", + "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", + "dev": true, + "dependencies": { + "prop-types": "^15.6.2", + "unquote": "^1.1.0" + }, + "engines": { + "node": ">= 4" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", @@ -3513,18 +4032,6 @@ "node": ">=8" } }, - "node_modules/@svgr/core/node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@svgr/core/node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -3616,18 +4123,6 @@ "node": ">=8" } }, - "node_modules/@svgr/plugin-svgo/node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -3750,6 +4245,21 @@ "integrity": "sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw==", "dev": true }, + "node_modules/@types/color-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz", + "integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==", + "dev": true, + "dependencies": { + "@types/color-name": "*" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "node_modules/@types/component-emitter": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", @@ -3859,27 +4369,33 @@ } }, "node_modules/@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", "dev": true }, "node_modules/@types/node": { - "version": "14.14.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", - "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", + "version": "14.14.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.43.tgz", + "integrity": "sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ==", "dev": true }, "node_modules/@types/node-fetch": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.8.tgz", - "integrity": "sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz", + "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==", "dev": true, "dependencies": { "@types/node": "*", "form-data": "^3.0.0" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, "node_modules/@types/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.2.tgz", @@ -3898,6 +4414,12 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "node_modules/@types/pretty-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz", + "integrity": "sha512-xl+5r2rcrxdLViAYkkiLMYsoUs3qEyrAnHFyEzYysgRxdVp3WbhysxIvJIxZp9FvZ2CYezh0TaHZorivH+voOQ==", + "dev": true + }, "node_modules/@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -3926,9 +4448,9 @@ } }, "node_modules/@types/react": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz", - "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==", + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.4.tgz", + "integrity": "sha512-onz2BqScSFMoTRdJUZUDD/7xrusM8hBA2Fktk2qgaTYPCgPvWnDEgkrOs8hhPUf2jfcIXkJ5yK6VfYormJS3Jw==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -3936,40 +4458,21 @@ "csstype": "^3.0.2" } }, - "node_modules/@types/react-color": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.4.tgz", - "integrity": "sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw==", - "dev": true, - "dependencies": { - "@types/react": "*", - "@types/reactcss": "*" - } - }, "node_modules/@types/react-syntax-highlighter": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz", - "integrity": "sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz", + "integrity": "sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react/node_modules/csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==", "dev": true }, - "node_modules/@types/reactcss": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.3.tgz", - "integrity": "sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/scheduler": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz", @@ -3989,9 +4492,9 @@ "dev": true }, "node_modules/@types/tapable": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", - "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz", + "integrity": "sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==", "dev": true }, "node_modules/@types/uglify-js": { @@ -4019,14 +4522,14 @@ "dev": true }, "node_modules/@types/webpack": { - "version": "4.41.26", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", - "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", + "version": "4.41.27", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.27.tgz", + "integrity": "sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA==", "dev": true, "dependencies": { "@types/anymatch": "*", "@types/node": "*", - "@types/tapable": "*", + "@types/tapable": "^1", "@types/uglify-js": "*", "@types/webpack-sources": "*", "source-map": "^0.6.0" @@ -4073,6 +4576,34 @@ "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", "dev": true }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^2.0.0", + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@typescript-eslint/experimental-utils": { "version": "2.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", @@ -4095,17 +4626,31 @@ "eslint": "*" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=8.0.0" + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/typescript-estree": { @@ -4375,10 +4920,9 @@ } }, "node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true, + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "bin": { "acorn": "bin/acorn" }, @@ -4409,26 +4953,12 @@ } }, "node_modules/acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, - "peer": true, - "dependencies": { - "acorn": "^3.0.4" - } - }, - "node_modules/acorn-jsx/node_modules/acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-node": { @@ -4441,17 +4971,6 @@ "xtend": "^4.0.2" } }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-node/node_modules/acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -4552,16 +5071,19 @@ } }, "node_modules/ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "peer": true, "dependencies": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ajv-errors": { @@ -4574,22 +5096,14 @@ } }, "node_modules/ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "peer": true, "peerDependencies": { - "ajv": "^5.0.0" + "ajv": "^6.9.1" } }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true, - "peer": true - }, "node_modules/alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", @@ -4841,12 +5355,12 @@ } }, "node_modules/ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" @@ -4856,12 +5370,12 @@ } }, "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5019,6 +5533,19 @@ "node": ">=4" } }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, "node_modules/ansi-to-html": { "version": "0.6.14", "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", @@ -5127,15 +5654,6 @@ "node": ">=0.10.0" } }, - "node_modules/anymatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/anymatch/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -5194,6 +5712,30 @@ "readable-stream": "^2.0.6" } }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -5479,9 +6021,9 @@ "dev": true }, "node_modules/ast-types/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true }, "node_modules/astral-regex": { @@ -5494,9 +6036,9 @@ } }, "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", "dev": true }, "node_modules/async-each": { @@ -5569,11 +6111,35 @@ "browserslist": "cli.js" } }, - "node_modules/aws-sdk": { - "version": "2.870.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.870.0.tgz", - "integrity": "sha512-pbNO+RuEx45aaEZind0Tl9NADxncLJf0mRAwof0szyYMB+FZm165yz7FCxFLumU4R9qw8vOG5YFACBaNoQkJdg==", + "node_modules/autoprefixer/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/autoprefixer/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aws-sdk": { + "version": "2.899.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.899.0.tgz", + "integrity": "sha512-k8jSANDQGvTyyj1f/7Hj4SWaV61/gjj/BopRmavAr6n1ayjXtUeVrV8G29+ABD3V82pHXDqLq47bqNmZ9m86xQ==", + "dev": true, + "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", "events": "1.1.1", @@ -5605,9 +6171,9 @@ "dev": true }, "node_modules/axe-core": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz", - "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.0.tgz", + "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==", "dev": true, "engines": { "node": ">=4" @@ -5630,15 +6196,6 @@ "js-tokens": "^3.0.2" } }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/babel-code-frame/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -5670,18 +6227,6 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/babel-code-frame/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -5691,81 +6236,6 @@ "node": ">=0.8.0" } }, - "node_modules/babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "peer": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "node_modules/babel-core/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-core/node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/babel-core/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "peer": true - }, - "node_modules/babel-core/node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/babel-eslint": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", @@ -5799,96 +6269,6 @@ "node": ">=4" } }, - "node_modules/babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "peer": true, - "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "node_modules/babel-generator/node_modules/jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/babel-generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-helper-evaluate-path": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", - "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", - "dev": true - }, - "node_modules/babel-helper-flip-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", - "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", - "dev": true - }, - "node_modules/babel-helper-is-nodes-equiv": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", - "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", - "dev": true - }, - "node_modules/babel-helper-is-void-0": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", - "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", - "dev": true - }, - "node_modules/babel-helper-mark-eval-scopes": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", - "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", - "dev": true - }, - "node_modules/babel-helper-remove-or-void": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", - "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", - "dev": true - }, - "node_modules/babel-helper-to-multiple-sequence-expressions": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", - "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", - "dev": true - }, - "node_modules/babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "peer": true, - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, "node_modules/babel-jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", @@ -5946,6 +6326,31 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/babel-loader/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -5961,14 +6366,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "node_modules/babel-loader/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "peer": true, "dependencies": { - "babel-runtime": "^6.22.0" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/babel-plugin-add-react-displayname": { @@ -6004,6 +6423,33 @@ "source-map": "^0.5.7" } }, + "node_modules/babel-plugin-emotion/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-emotion/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/babel-plugin-emotion/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -6065,6 +6511,15 @@ "node": ">=6" } }, + "node_modules/babel-plugin-istanbul/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/babel-plugin-jest-hoist": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", @@ -6078,125 +6533,18 @@ } }, "node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.0.1.tgz", + "integrity": "sha512-CKt4+Oy9k2wiN+hT1uZzOw7d8zb1anbQpf7KLwaaXRCi/4pzKdFKHf7v5mvoPmjkmxshh7eKZQuRop06r5WP4w==", "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "node_modules/babel-plugin-minify-builtins": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", - "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", - "dev": true - }, - "node_modules/babel-plugin-minify-constant-folding": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", - "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "node_modules/babel-plugin-minify-dead-code-elimination": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", - "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-mark-eval-scopes": "^0.4.3", - "babel-helper-remove-or-void": "^0.4.3", - "lodash": "^4.17.11" - } - }, - "node_modules/babel-plugin-minify-flip-comparisons": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", - "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", - "dev": true, - "dependencies": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "node_modules/babel-plugin-minify-guarded-expressions": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", - "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3" - } - }, - "node_modules/babel-plugin-minify-infinity": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", - "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", - "dev": true - }, - "node_modules/babel-plugin-minify-mangle-names": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", - "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", - "dev": true, - "dependencies": { - "babel-helper-mark-eval-scopes": "^0.4.3" - } - }, - "node_modules/babel-plugin-minify-numeric-literals": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", - "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", - "dev": true - }, - "node_modules/babel-plugin-minify-replace": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", - "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", - "dev": true - }, - "node_modules/babel-plugin-minify-simplify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", - "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3", - "babel-helper-is-nodes-equiv": "^0.0.1", - "babel-helper-to-multiple-sequence-expressions": "^0.5.0" - } - }, - "node_modules/babel-plugin-minify-type-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", - "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", - "dev": true, - "dependencies": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "node_modules/babel-plugin-module-resolver": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", - "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", - "dev": true, - "peer": true, - "dependencies": { - "find-babel-config": "^1.1.0", - "glob": "^7.1.2", - "pkg-up": "^2.0.0", - "reselect": "^3.0.1", - "resolve": "^1.4.0" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=10", + "npm": ">=6" } }, "node_modules/babel-plugin-named-asset-import": { @@ -6209,13 +6557,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -6223,25 +6571,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.2.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -6281,30 +6629,6 @@ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, - "node_modules/babel-plugin-transform-inline-consecutive-adds": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", - "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", - "dev": true - }, - "node_modules/babel-plugin-transform-member-expression-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", - "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", - "dev": true - }, - "node_modules/babel-plugin-transform-merge-sibling-variables": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", - "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", - "dev": true - }, - "node_modules/babel-plugin-transform-minify-booleans": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", - "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", - "dev": true - }, "node_modules/babel-plugin-transform-object-rest-spread": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", @@ -6315,60 +6639,12 @@ "babel-runtime": "^6.26.0" } }, - "node_modules/babel-plugin-transform-property-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", - "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - } - }, "node_modules/babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", "dev": true }, - "node_modules/babel-plugin-transform-regexp-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", - "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", - "dev": true - }, - "node_modules/babel-plugin-transform-remove-console": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", - "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", - "dev": true - }, - "node_modules/babel-plugin-transform-remove-debugger": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", - "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", - "dev": true - }, - "node_modules/babel-plugin-transform-remove-undefined": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", - "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "node_modules/babel-plugin-transform-simplify-comparison-operators": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", - "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", - "dev": true - }, - "node_modules/babel-plugin-transform-undefined-to-void": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", - "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", - "dev": true - }, "node_modules/babel-preset-jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", @@ -6385,37 +6661,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/babel-preset-minify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", - "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", - "dev": true, - "dependencies": { - "babel-plugin-minify-builtins": "^0.5.0", - "babel-plugin-minify-constant-folding": "^0.5.0", - "babel-plugin-minify-dead-code-elimination": "^0.5.1", - "babel-plugin-minify-flip-comparisons": "^0.4.3", - "babel-plugin-minify-guarded-expressions": "^0.4.4", - "babel-plugin-minify-infinity": "^0.4.3", - "babel-plugin-minify-mangle-names": "^0.5.0", - "babel-plugin-minify-numeric-literals": "^0.4.3", - "babel-plugin-minify-replace": "^0.5.0", - "babel-plugin-minify-simplify": "^0.5.1", - "babel-plugin-minify-type-constructors": "^0.4.3", - "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", - "babel-plugin-transform-member-expression-literals": "^6.9.4", - "babel-plugin-transform-merge-sibling-variables": "^6.9.4", - "babel-plugin-transform-minify-booleans": "^6.9.4", - "babel-plugin-transform-property-literals": "^6.9.4", - "babel-plugin-transform-regexp-constructors": "^0.4.3", - "babel-plugin-transform-remove-console": "^6.9.4", - "babel-plugin-transform-remove-debugger": "^6.9.4", - "babel-plugin-transform-remove-undefined": "^0.5.0", - "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", - "babel-plugin-transform-undefined-to-void": "^6.9.4", - "lodash": "^4.17.11" - } - }, "node_modules/babel-preset-react-app": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz", @@ -6671,6 +6916,33 @@ "regenerator-runtime": "^0.13.4" } }, + "node_modules/babel-preset-react-app/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-preset-react-app/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/babel-preset-react-app/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -6689,51 +6961,6 @@ "node": ">=0.10.0" } }, - "node_modules/babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "peer": true, - "dependencies": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "node_modules/babel-register/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.", - "dev": true, - "hasInstallScript": true, - "peer": true - }, - "node_modules/babel-register/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-register/node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "peer": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, "node_modules/babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -6747,7 +6974,7 @@ "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", "hasInstallScript": true }, "node_modules/babel-runtime/node_modules/regenerator-runtime": { @@ -6755,88 +6982,6 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "peer": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "peer": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "peer": true - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "peer": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", @@ -6852,9 +6997,9 @@ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base": { "version": "0.11.2", @@ -7005,6 +7150,35 @@ "node": ">= 6" } }, + "node_modules/block-stream2/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/block-stream2/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -7138,24 +7312,6 @@ "node": ">=8" } }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/boxen/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -7221,6 +7377,28 @@ "brfs": "bin/cmd.js" } }, + "node_modules/brfs/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/brfs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/brfs/node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -7355,6 +7533,15 @@ } ] }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -7365,15 +7552,15 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^1.1.71" }, "bin": { "browserslist": "cli.js" @@ -7548,26 +7735,15 @@ } }, "node_modules/caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, - "peer": true, "dependencies": { - "callsites": "^0.2.0" + "caller-callsite": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/caller-path/node_modules/callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/callsites": { @@ -7619,9 +7795,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001204", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", - "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==" + "version": "1.0.30001221", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001221.tgz", + "integrity": "sha512-b9TOZfND3uGSLjMOrLh8XxSQ41x8mX+9MLJYDM4AAHLfaZHttrLNPrScWjVnBITRZbY5sPpCt7X85n7VSLZ+/g==" }, "node_modules/capture-exit": { "version": "2.0.0", @@ -7756,9 +7932,9 @@ } }, "node_modules/chokidar/node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -7865,13 +8041,10 @@ "dev": true }, "node_modules/chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, "engines": { "node": ">=6.0" } @@ -7904,14 +8077,6 @@ "webpack": ">=4.0.1" } }, - "node_modules/circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", - "dev": true, - "peer": true - }, "node_modules/class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -7951,6 +8116,18 @@ "node": ">=0.10.0" } }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/class-utils/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -7963,6 +8140,18 @@ "node": ">=0.10.0" } }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/class-utils/node_modules/is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -7977,7 +8166,7 @@ "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/is-descriptor/node_modules/kind-of": { + "node_modules/class-utils/node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", @@ -7987,9 +8176,9 @@ } }, "node_modules/classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "node_modules/clean-css": { "version": "4.2.3", @@ -8127,27 +8316,17 @@ } }, "node_modules/clone-deep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz", - "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "for-own": "^1.0.0", "is-plain-object": "^2.0.4", - "kind-of": "^5.0.0", - "shallow-clone": "^1.0.0" + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/clsx": { @@ -8192,9 +8371,9 @@ } }, "node_modules/codemirror": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.60.0.tgz", - "integrity": "sha512-AEL7LhFOlxPlCL8IdTcJDblJm8yrAGib7I+DErJPdZd4l6imx8IMgKK3RblVgBQqz3TZJR4oknQ03bz+uNjBYA==" + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.61.0.tgz", + "integrity": "sha512-D3wYH90tYY1BsKlUe0oNj2JAhQ9TepkD51auk3N7q+4uz7A/cgJ5JsWHreT0PqieW1QhOuqxQ2reCXV1YXzecg==" }, "node_modules/collection-visit": { "version": "1.0.0", @@ -8219,17 +8398,20 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-string": { "version": "1.5.5", @@ -8240,6 +8422,19 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, "node_modules/colorette": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", @@ -8274,6 +8469,21 @@ "color-string": "^1.5.2" } }, + "node_modules/colorspace/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/colorspace/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -8426,6 +8636,28 @@ "typedarray": "^0.0.6" } }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/confusing-browser-globals": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", @@ -8575,37 +8807,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/copy-webpack-plugin/node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -8621,9 +8822,9 @@ } }, "node_modules/core-js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", - "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.11.2.tgz", + "integrity": "sha512-3tfrrO1JpJSYGKnd9LKTBPqgUES/UYiCzMKeqwR1+jF16q4kD1BY2NvqkfuzXwQ6+CIWm55V9cjD7PQd+hijdw==", "dev": true, "hasInstallScript": true, "funding": { @@ -8632,12 +8833,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.11.2.tgz", + "integrity": "sha512-gYhNwu7AJjecNtRrIfyoBabQ3ZG+llfPmg9BifIX8yxIpDyfNLRM73zIjINSm6z3dMdI1nwNC9C7uiy4pIC6cw==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.16.6", "semver": "7.0.0" }, "funding": { @@ -8655,9 +8856,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz", - "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.11.2.tgz", + "integrity": "sha512-DQxdEKm+zFsnON7ZGOgUAQXBt1UJJ01tOzN/HgQ7cNf0oEHW1tcBLfCQQd1q6otdLu5gAdvKYxKHAoXGwE/kiQ==", "dev": true, "hasInstallScript": true, "funding": { @@ -8671,19 +8872,19 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/country-data": { @@ -8841,15 +9042,6 @@ "node": ">=0.10.0" } }, - "node_modules/cpy/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cpy/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -8950,43 +9142,27 @@ } }, "node_modules/cross-fetch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz", - "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", "dependencies": { "node-fetch": "2.6.1" } }, "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "peer": true, "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/cross-spawn/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "peer": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/cross-spawn/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true, - "peer": true - }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -9045,45 +9221,6 @@ "node": ">=6.0.0" } }, - "node_modules/css-blank-pseudo/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-blank-pseudo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-blank-pseudo/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -9106,45 +9243,6 @@ "node": ">4" } }, - "node_modules/css-declaration-sorter/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-declaration-sorter/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-declaration-sorter/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", @@ -9173,24 +9271,6 @@ "node": ">=4" } }, - "node_modules/css-has-pseudo/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -9205,27 +9285,6 @@ "node": ">=4" } }, - "node_modules/css-has-pseudo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-has-pseudo/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/css-loader": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", @@ -9257,51 +9316,12 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/css-loader/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/css-loader/node_modules/postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/css-loader/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-loader/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", @@ -9317,45 +9337,6 @@ "node": ">=6.0.0" } }, - "node_modules/css-prefers-color-scheme/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-prefers-color-scheme/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-prefers-color-scheme/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", @@ -9437,13 +9418,13 @@ } }, "node_modules/cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", "dev": true, "dependencies": { "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", + "cssnano-preset-default": "^4.0.8", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" }, @@ -9452,9 +9433,9 @@ } }, "node_modules/cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", "dev": true, "dependencies": { "css-declaration-sorter": "^4.0.1", @@ -9485,52 +9466,13 @@ "postcss-ordered-values": "^4.1.2", "postcss-reduce-initial": "^4.0.3", "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", + "postcss-svgo": "^4.0.3", "postcss-unique-selectors": "^4.0.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/cssnano-preset-default/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-preset-default/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano-preset-default/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/cssnano-util-get-arguments": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", @@ -9561,45 +9503,6 @@ "node": ">=6.9.0" } }, - "node_modules/cssnano-util-raw-cache/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-util-raw-cache/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano-util-raw-cache/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/cssnano-util-same-parent": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", @@ -9609,18 +9512,6 @@ "node": ">=6.9.0" } }, - "node_modules/cssnano/node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/cssnano/node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -9662,24 +9553,6 @@ "node": ">=4" } }, - "node_modules/cssnano/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/cssnano/node_modules/resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -9689,27 +9562,6 @@ "node": ">=4" } }, - "node_modules/cssnano/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/csso": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", @@ -9723,9 +9575,9 @@ } }, "node_modules/csso/node_modules/css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "dependencies": { "mdn-data": "2.0.14", @@ -9766,9 +9618,9 @@ } }, "node_modules/csstype": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz", - "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==", + "version": "2.6.17", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", + "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==", "dev": true }, "node_modules/currency-symbol-map": { @@ -9928,9 +9780,9 @@ } }, "node_modules/date-fns": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz", - "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==", + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.1.tgz", + "integrity": "sha512-m1WR0xGiC6j6jNFAyW4Nvh4WxAi4JF4w9jRJwSI8nBmNcyZXPcP9VUQG+6gHQXAmqaGEKDKhOqAtENDC941UkA==", "engines": { "node": ">=0.11" }, @@ -10044,6 +9896,15 @@ "integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==", "dev": true }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -10221,19 +10082,6 @@ "node": ">=0.10.0" } }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "peer": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -10432,21 +10280,22 @@ } }, "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "esutils": "^2.0.2", + "isarray": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/dom-align": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz", - "integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA==" + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.1.tgz", + "integrity": "sha512-CdTD9EdA5WviP8oO3n+okOm0Xt7dSuWxRTLcJiW0memwUr3Tvz66JDDCh9cb50IZFHXvBmLoyX454uJU/EVg+g==" }, "node_modules/dom-converter": { "version": "0.2.0", @@ -10458,18 +10307,18 @@ } }, "node_modules/dom-helpers": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", - "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, "node_modules/dom-helpers/node_modules/csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" }, "node_modules/dom-serializer": { "version": "0.2.2", @@ -10481,9 +10330,9 @@ } }, "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "funding": [ { "type": "github", @@ -10576,9 +10425,9 @@ } }, "node_modules/dot-case/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true }, "node_modules/dot-prop": { @@ -10639,15 +10488,15 @@ } }, "node_modules/downshift": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.1.tgz", - "integrity": "sha512-ch8Sh/j7gVqQd7Kcv3A5TkGfldmxmlQrRPZJYWEhzh24+h7WA4vXssuhcGNJrD8YPJlZYQGHcaX8BNhS0IcOvg==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.3.tgz", + "integrity": "sha512-RA1MuaNcTbt0j+sVLhSs8R2oZbBXYAtdQP/V+uHhT3DoDteZzJPjlC+LQVm9T07Wpvo84QXaZtUCePLDTDwGXg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.12.5", + "@babel/runtime": "^7.13.10", "compute-scroll-into-view": "^1.0.17", "prop-types": "^15.7.2", - "react-is": "^17.0.1" + "react-is": "^17.0.2" }, "peerDependencies": { "react": ">=16.12.0" @@ -10667,6 +10516,28 @@ "readable-stream": "^2.0.2" } }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -10679,6 +10550,30 @@ "stream-shift": "^1.0.0" } }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -10696,24 +10591,19 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", "dev": true, - "dependencies": { - "jake": "^10.6.1" - }, - "bin": { - "ejs": "bin/cli.js" - }, + "hasInstallScript": true, "engines": { "node": ">=0.10.0" } }, "node_modules/electron-to-chromium": { - "version": "1.3.698", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.698.tgz", - "integrity": "sha512-VEXDzYblnlT+g8Q3gedwzgKOso1evkeJzV8lih7lV8mL8eAnGVnKyC3KsFT6S+R5PQO4ffdr1PI16/ElibY/kQ==" + "version": "1.3.726", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.726.tgz", + "integrity": "sha512-dw7WmrSu/JwtACiBzth8cuKf62NKL1xVJuNvyOg0jvruN/n4NLtGYoTzciQquCPNaS2eR+BT5GrxHbslfc/w1w==" }, "node_modules/element-resize-detector": { "version": "1.2.2", @@ -10811,9 +10701,9 @@ } }, "node_modules/engine.io-client": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.2.tgz", - "integrity": "sha512-1mwvwKYMa0AaCy+sPgvJ/SnKyO5MJZ1HEeXfA3Rm/KHkHGiYD5bQVq8QzvIrkI01FuVtOdZC5lWdRw1BGXB2NQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.3.tgz", + "integrity": "sha512-C3JYYyvna0FvSKOWGWpo0/EQ6MayO8uEKam1oedLZRpxLego9Fk6K3UH/Phieu1xPHauM7YqAygJ+6SraVc0Qg==", "dependencies": { "base64-arraybuffer": "0.1.4", "component-emitter": "~1.3.0", @@ -10828,9 +10718,9 @@ } }, "node_modules/engine.io-client/node_modules/ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", "engines": { "node": ">=8.3.0" }, @@ -10885,6 +10775,30 @@ "node": ">=4.3.0 <5.0.0 || >=5.10" } }, + "node_modules/enhanced-resolve/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/enhanced-resolve/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -11111,56 +11025,57 @@ } }, "node_modules/eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, - "peer": true, "dependencies": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", + "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", + "optionator": "^0.8.3", "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": ">=4" + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-airbnb": { @@ -11197,6 +11112,26 @@ "eslint-plugin-import": "^2.7.0" } }, + "node_modules/eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.9" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "2.x", + "@typescript-eslint/parser": "2.x", + "babel-eslint": "10.x", + "eslint": "6.x", + "eslint-plugin-flowtype": "3.x || 4.x", + "eslint-plugin-import": "2.x", + "eslint-plugin-jsx-a11y": "6.x", + "eslint-plugin-react": "7.x", + "eslint-plugin-react-hooks": "1.x || 2.x" + } + }, "node_modules/eslint-import-resolver-babel-module": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/eslint-import-resolver-babel-module/-/eslint-import-resolver-babel-module-4.0.0.tgz", @@ -11239,6 +11174,59 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/eslint-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", + "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", + "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin", + "dev": true, + "dependencies": { + "fs-extra": "^8.1.0", + "loader-fs-cache": "^1.0.2", + "loader-utils": "^1.2.3", + "object-hash": "^2.0.1", + "schema-utils": "^2.6.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/eslint-loader/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/eslint-loader/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/eslint-loader/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/eslint-module-utils": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", @@ -11325,6 +11313,15 @@ "node": ">=4" } }, + "node_modules/eslint-module-utils/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/eslint-module-utils/node_modules/pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -11337,6 +11334,21 @@ "node": ">=4" } }, + "node_modules/eslint-plugin-flowtype": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", + "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": ">=6.1.0" + } + }, "node_modules/eslint-plugin-import": { "version": "2.22.1", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", @@ -11373,17 +11385,29 @@ "ms": "2.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "node_modules/eslint-plugin-import/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/eslint-plugin-import/node_modules/ms": { @@ -11392,6 +11416,96 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/eslint-plugin-import/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", @@ -11418,9 +11532,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.1.tgz", - "integrity": "sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz", + "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==", "dev": true, "dependencies": { "array-includes": "^3.1.3", @@ -11455,6 +11569,18 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" } }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", @@ -11475,17 +11601,16 @@ "dev": true }, "node_modules/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "peer": true, "dependencies": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=8.0.0" } }, "node_modules/eslint-utils": { @@ -11512,196 +11637,180 @@ "node": ">=4" } }, - "node_modules/eslint/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "node_modules/eslint/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true, - "peer": true - }, - "node_modules/eslint/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "peer": true, "dependencies": { - "restore-cursor": "^2.0.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">=4" + "node": ">=4.8" } }, - "node_modules/eslint/node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true, - "peer": true - }, - "node_modules/eslint/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint/node_modules/external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "peer": true, - "dependencies": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/eslint/node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "peer": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - } - }, - "node_modules/eslint/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true, - "peer": true - }, - "node_modules/eslint/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "peer": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "peer": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/semver": { + "node_modules/eslint/node_modules/cross-spawn/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "peer": true, "bin": { "semver": "bin/semver" } }, - "node_modules/eslint/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "node_modules/eslint/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "peer": true, "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "esutils": "^2.0.2" }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, "engines": { "node": ">=4" } }, - "node_modules/espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "node_modules/eslint/node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, - "peer": true, "dependencies": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "shebang-regex": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -11858,6 +11967,15 @@ "node": ">=4.8" } }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/execa/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -11867,6 +11985,39 @@ "semver": "bin/semver" } }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/exenv": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", @@ -11931,6 +12082,18 @@ "node": ">=0.10.0" } }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expand-brackets/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -11943,6 +12106,18 @@ "node": ">=0.10.0" } }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expand-brackets/node_modules/is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -11957,7 +12132,7 @@ "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/is-descriptor/node_modules/kind-of": { + "node_modules/expand-brackets/node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", @@ -12159,17 +12334,6 @@ "node": ">=0.4.0" } }, - "node_modules/falafel/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/falafel/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -12317,9 +12481,9 @@ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, "node_modules/fecha": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", + "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==", "dev": true }, "node_modules/figgy-pudding": { @@ -12344,17 +12508,15 @@ } }, "node_modules/file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, - "peer": true, "dependencies": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/file-loader": { @@ -12377,37 +12539,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/file-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/file-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/file-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/file-loader/node_modules/loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -12479,15 +12610,6 @@ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "dev": true }, - "node_modules/filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, "node_modules/filesize": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", @@ -12545,30 +12667,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", - "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", - "dev": true, - "peer": true, - "dependencies": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-babel-config/node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - } - }, "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -12620,6 +12718,15 @@ "node": ">=6" } }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/find-cache-dir/node_modules/pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -12639,25 +12746,19 @@ "dev": true }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/find-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/findup-sync": { @@ -12713,15 +12814,6 @@ "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/findup-sync/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -12747,19 +12839,17 @@ } }, "node_modules/flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, - "peer": true, "dependencies": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/flat-cache/node_modules/rimraf": { @@ -12767,7 +12857,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, - "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -12809,6 +12898,30 @@ "readable-stream": "^2.3.6" } }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/flux": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.1.tgz", @@ -12828,9 +12941,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", + "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==", "dev": true, "funding": [ { @@ -12857,9 +12970,9 @@ } }, "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "dependencies": { "for-in": "^1.0.1" @@ -12883,104 +12996,149 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", - "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.6.tgz", + "integrity": "sha512-f/oF2BFFPKEWQ3wgfq4bWALSDm7+f21shVONplo1xHKs1IdMfdmDa/aREgEurkIyrsyMFed42W7NVp4mh4DXzg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.5.5", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" }, "engines": { - "node": ">=6.11.5", + "node": ">=10", "yarn": ">=1.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -13044,6 +13202,30 @@ "readable-stream": "^2.0.0" } }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -13071,6 +13253,12 @@ "node": ">= 8" } }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -13171,15 +13359,6 @@ "wide-align": "^1.1.0" } }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/gauge/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -13206,18 +13385,6 @@ "node": ">=0.10.0" } }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -13426,13 +13593,16 @@ "node": ">=6" } }, - "node_modules/global-prefix/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, "node_modules/globals": { @@ -13562,32 +13732,10 @@ "node": ">=6" } }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/har-validator/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/harmony-reflect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", - "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", "dev": true }, "node_modules/has": { @@ -13772,6 +13920,15 @@ } ] }, + "node_modules/hash-base/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -13825,9 +13982,9 @@ "dev": true }, "node_modules/highlight.js": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.1.tgz", - "integrity": "sha512-S6G97tHGqJ/U8DsXcEdnACbirtbx58Bx9CzIVeYli8OuswCfYI/LsXH2EiGcoGio1KAC3x4mmUwulOllJ2ZyRA==", + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", + "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==", "engines": { "node": "*" } @@ -13869,20 +14026,6 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "node_modules/home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "peer": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -13905,9 +14048,9 @@ } }, "node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "node_modules/hpack.js": { @@ -13922,6 +14065,30 @@ "wbuf": "^1.1.0" } }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/hsl-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", @@ -13934,12 +14101,6 @@ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", "dev": true }, - "node_modules/html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, "node_modules/html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -14024,9 +14185,9 @@ } }, "node_modules/html-minifier-terser/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true }, "node_modules/html-minifier/node_modules/commander": { @@ -14121,27 +14282,6 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" }, - "node_modules/htmlparser2/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/htmlparser2/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/htmlparser2/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -14243,15 +14383,6 @@ "node": ">=0.10.0" } }, - "node_modules/http-proxy-middleware/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/http-proxy-middleware/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -14321,45 +14452,6 @@ "node": ">= 6" } }, - "node_modules/icss-utils/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/icss-utils/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", @@ -14516,6 +14608,15 @@ "node": ">=6" } }, + "node_modules/import-local/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/import-local/node_modules/pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -14549,7 +14650,8 @@ "node_modules/indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true }, "node_modules/infer-owner": { "version": "1.0.4", @@ -14635,9 +14737,9 @@ } }, "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -14650,24 +14752,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/inquirer/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -14790,15 +14874,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-alphabetical": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", @@ -14924,9 +14999,9 @@ } }, "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", "dependencies": { "has": "^1.0.3" }, @@ -14946,15 +15021,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -14990,15 +15056,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", @@ -15009,9 +15066,9 @@ } }, "node_modules/is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, "bin": { "is-docker": "cli.js" @@ -15041,19 +15098,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -15145,6 +15189,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -15277,18 +15333,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "dependencies": { - "html-comment-regex": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -15466,24 +15510,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", - "dev": true, - "dependencies": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", @@ -15604,6 +15630,15 @@ "node": ">=6" } }, + "node_modules/jest-cli/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/jest-cli/node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -15738,15 +15773,6 @@ "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-config/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -16027,15 +16053,6 @@ "node": ">=0.10.0" } }, - "node_modules/jest-haste-map/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-haste-map/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -16172,15 +16189,6 @@ "node": ">=0.10.0" } }, - "node_modules/jest-message-util/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-message-util/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -16403,6 +16411,15 @@ "node": ">=6" } }, + "node_modules/jest-runtime/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/jest-runtime/node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -16726,6 +16743,18 @@ "xml-name-validator": "^3.0.0" } }, + "node_modules/jsdom/node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/jsdom/node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -16762,28 +16791,6 @@ "jshint": "bin/jshint" } }, - "node_modules/jshint/node_modules/shelljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", - "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/jshint/node_modules/strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", - "bin": { - "strip-json-comments": "cli.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -16803,11 +16810,10 @@ "dev": true }, "node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true, - "peer": true + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify": { "version": "1.0.1", @@ -16924,13 +16930,10 @@ "dev": true }, "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { "node": ">=0.10.0" } @@ -16953,6 +16956,15 @@ "node": ">=6" } }, + "node_modules/klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/koalas": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz", @@ -17211,15 +17223,18 @@ } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -17493,14 +17508,10 @@ } }, "node_modules/markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.2.tgz", + "integrity": "sha512-O8DMCl32V34RrD+ZHxcAPc2+kYytuDIoQYjY36RVdsLK7uHjgNVvFec4yv0X6LgB4YEZgSvK5QtFi5YVqEpoMA==", "dev": true, - "dependencies": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - }, "engines": { "node": ">= 4" }, @@ -17508,12 +17519,6 @@ "react": ">= 0.14.0" } }, - "node_modules/material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", - "dev": true - }, "node_modules/math-expression-evaluator": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.7.tgz", @@ -17557,6 +17562,18 @@ "node": ">= 0.6" } }, + "node_modules/memfs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.2.tgz", + "integrity": "sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/memoizerific": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", @@ -17576,6 +17593,30 @@ "readable-stream": "^2.0.1" } }, + "node_modules/memory-fs/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/memory-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/merge-deep": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", @@ -17606,13 +17647,13 @@ "node": ">=0.10.0" } }, - "node_modules/merge-deep/node_modules/for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "node_modules/merge-deep/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "dependencies": { - "for-in": "^1.0.1" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" @@ -17716,16 +17757,16 @@ "dev": true }, "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, "node_modules/micromatch/node_modules/braces": { @@ -17805,21 +17846,21 @@ } }, "node_modules/mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, "dependencies": { - "mime-db": "1.46.0" + "mime-db": "1.47.0" }, "engines": { "node": ">= 0.6" @@ -17870,37 +17911,6 @@ "webpack": "^4.4.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -17966,12 +17976,6 @@ "node": ">= 4" } }, - "node_modules/minio/node_modules/async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, "node_modules/minipass": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", @@ -18066,6 +18070,30 @@ "node": ">=4.0.0" } }, + "node_modules/mississippi/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/mississippi/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/mississippi/node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -18136,9 +18164,9 @@ } }, "node_modules/mobx": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.1.8.tgz", - "integrity": "sha512-U4yCvUeh6yKXRwFxm2lyJjXPVekOEar/R8ZKWAXem/3fthJqYflViawfjDAUh7lZEvbKqljC3NT/pSaUKpE+gg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.0.tgz", + "integrity": "sha512-Aa1+VXsg4WxqJMTQfWoYuJi5UD10VZhiobSmcs5kcmI3BIT0aVtn7DysvCeDADCzl7dnbX+0BTHUj/v7gLlZpQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" @@ -18311,15 +18339,6 @@ "node": ">=0.10.0" } }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/native-url": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz", @@ -18471,6 +18490,59 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "node_modules/node-libs-browser/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/node-libs-browser/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/node-libs-browser/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/node-libs-browser/node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -18527,6 +18599,18 @@ "semver": "bin/semver" } }, + "node_modules/node-notifier/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/node-releases": { "version": "1.1.71", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", @@ -18585,19 +18669,6 @@ "node": ">=4" } }, - "node_modules/normalize-url/node_modules/query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "dependencies": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", @@ -18615,6 +18686,15 @@ "node": ">=4" } }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -18746,6 +18826,18 @@ "node": ">=0.10.0" } }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-hash": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", @@ -18755,9 +18847,9 @@ } }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz", + "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -19064,16 +19156,6 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -19183,15 +19265,33 @@ } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { @@ -19265,6 +19365,30 @@ "readable-stream": "^2.1.5" } }, + "node_modules/parallel-transform/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/parallel-transform/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -19399,9 +19523,9 @@ } }, "node_modules/pascal-case/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true }, "node_modules/pascalcase": { @@ -19426,12 +19550,12 @@ "dev": true }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -19449,12 +19573,12 @@ "dev": true }, "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-parse": { @@ -19478,9 +19602,9 @@ } }, "node_modules/pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "dependencies": { "create-hash": "^1.1.2", @@ -19499,9 +19623,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", "dev": true, "engines": { "node": ">=8.6" @@ -19553,15 +19677,15 @@ } }, "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/pkg-up": { @@ -19634,12 +19758,11 @@ "node": ">=4" } }, - "node_modules/pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -19672,12 +19795,12 @@ } }, "node_modules/polished": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-3.7.1.tgz", - "integrity": "sha512-/QgHrNGYwIA4mwxJ/7FSvalUJsm7KNfnXiScVSEG2Xa5qxDeBn4nmdjN2pW00mkM2Tts64ktc47U8F7Ed1BRAA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.2.tgz", + "integrity": "sha512-jq4t3PJUpVRcveC53nnbEX35VyQI05x3tniwp26WFdm1dwaNUBHAi5awa/roBlwQxx1uRhwNSYeAi/aMbfiJCQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.12.5" + "@babel/runtime": "^7.13.17" }, "engines": { "node": ">=10" @@ -19735,33 +19858,9 @@ } }, "node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" - } - }, - "node_modules/postcss-attribute-case-insensitive/node_modules/postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -19775,25 +19874,14 @@ "url": "https://opencollective.com/postcss/" } }, - "node_modules/postcss-attribute-case-insensitive/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-attribute-case-insensitive/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" } }, "node_modules/postcss-browser-comments": { @@ -19811,45 +19899,6 @@ "browserslist": "^4" } }, - "node_modules/postcss-browser-comments/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-browser-comments/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-browser-comments/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-calc": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", @@ -19861,51 +19910,12 @@ "postcss-value-parser": "^4.0.2" } }, - "node_modules/postcss-calc/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-calc/node_modules/postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/postcss-calc/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-calc/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", @@ -19919,45 +19929,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-color-functional-notation/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-functional-notation/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-functional-notation/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", @@ -19972,45 +19943,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-color-gray/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-gray/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-gray/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", @@ -20024,45 +19956,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-color-hex-alpha/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-hex-alpha/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-hex-alpha/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", @@ -20077,45 +19970,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-color-mod-function/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-mod-function/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-mod-function/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", @@ -20129,45 +19983,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-color-rebeccapurple/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-rebeccapurple/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-rebeccapurple/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-colormin": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", @@ -20184,45 +19999,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-colormin/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-colormin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-colormin/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-convert-values": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", @@ -20236,45 +20012,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-convert-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-convert-values/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", @@ -20287,45 +20024,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-custom-media/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-custom-media/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-custom-media/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", @@ -20339,45 +20037,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-custom-properties/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-custom-properties/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-custom-properties/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", @@ -20403,24 +20062,6 @@ "node": ">=4" } }, - "node_modules/postcss-custom-selectors/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -20435,27 +20076,6 @@ "node": ">=4" } }, - "node_modules/postcss-custom-selectors/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-custom-selectors/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", @@ -20481,24 +20101,6 @@ "node": ">=4" } }, - "node_modules/postcss-dir-pseudo-class/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -20513,27 +20115,6 @@ "node": ">=4" } }, - "node_modules/postcss-dir-pseudo-class/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-dir-pseudo-class/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-discard-comments": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", @@ -20546,45 +20127,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-comments/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-comments/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-discard-duplicates": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", @@ -20597,45 +20139,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-discard-empty": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", @@ -20648,45 +20151,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-empty/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-empty/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-discard-overridden": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", @@ -20699,45 +20163,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-overridden/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-overridden/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", @@ -20751,45 +20176,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-double-position-gradients/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-double-position-gradients/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-double-position-gradients/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", @@ -20803,45 +20189,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-env-function/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-env-function/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-env-function/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-flexbugs-fixes": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", @@ -20851,45 +20198,6 @@ "postcss": "^7.0.26" } }, - "node_modules/postcss-flexbugs-fixes/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-flexbugs-fixes/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-flexbugs-fixes/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", @@ -20902,45 +20210,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-focus-visible/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-focus-visible/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-focus-visible/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", @@ -20953,45 +20222,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-focus-within/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-focus-within/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-focus-within/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-font-variant": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", @@ -21001,45 +20231,6 @@ "postcss": "^7.0.2" } }, - "node_modules/postcss-font-variant/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-font-variant/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-font-variant/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-functions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz", @@ -21051,6 +20242,27 @@ "postcss-value-parser": "^3.3.0" } }, + "node_modules/postcss-functions/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-functions/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", @@ -21063,45 +20275,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-gap-properties/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-gap-properties/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-gap-properties/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", @@ -21115,45 +20288,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-image-set-function/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-image-set-function/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-image-set-function/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-import": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", @@ -21169,94 +20303,15 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-import/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-import/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-import/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-initial": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", - "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", + "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", "dev": true, "dependencies": { - "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, - "node_modules/postcss-initial/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-initial/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-initial/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-inline-svg": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/postcss-inline-svg/-/postcss-inline-svg-3.1.1.tgz", @@ -21294,6 +20349,20 @@ "readable-stream": "^3.1.1" } }, + "node_modules/postcss-inline-svg/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/postcss-inline-svg/node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -21308,6 +20377,44 @@ "node": ">= 6" } }, + "node_modules/postcss-inline-svg/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/postcss-inline-svg/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-inline-svg/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/postcss-js": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz", @@ -21317,42 +20424,6 @@ "postcss": "^7.0.18" } }, - "node_modules/postcss-js/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-js/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-js/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", @@ -21367,45 +20438,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-lab-function/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-lab-function/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-lab-function/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-load-config": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", @@ -21423,18 +20455,6 @@ "url": "https://opencollective.com/postcss/" } }, - "node_modules/postcss-load-config/node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-load-config/node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -21500,55 +20520,6 @@ "node": ">= 6" } }, - "node_modules/postcss-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/postcss-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/postcss-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/postcss-loader/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-loader/node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -21563,27 +20534,6 @@ "node": ">= 4" } }, - "node_modules/postcss-loader/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-loader/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", @@ -21596,45 +20546,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-logical/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-logical/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-logical/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", @@ -21647,45 +20558,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-media-minmax/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-media-minmax/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-media-minmax/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-merge-longhand": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", @@ -21701,45 +20573,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-longhand/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-merge-rules": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", @@ -21757,24 +20590,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -21789,27 +20604,6 @@ "node": ">=8" } }, - "node_modules/postcss-merge-rules/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-merge-rules/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-minify-font-values": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", @@ -21823,45 +20617,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-font-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-font-values/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-minify-gradients": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", @@ -21877,45 +20632,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-gradients/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-minify-params": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", @@ -21933,45 +20649,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-params/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-params/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-minify-selectors": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", @@ -21987,24 +20664,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -22019,27 +20678,6 @@ "node": ">=8" } }, - "node_modules/postcss-minify-selectors/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-mixins": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-6.2.3.tgz", @@ -22157,15 +20795,6 @@ "node": ">=0.10.0" } }, - "node_modules/postcss-mixins/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/postcss-mixins/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -22202,24 +20831,6 @@ "node": ">=4" } }, - "node_modules/postcss-mixins/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-mixins/node_modules/postcss-simple-vars": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-5.0.2.tgz", @@ -22238,27 +20849,6 @@ "node": ">=0.10.0" } }, - "node_modules/postcss-mixins/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-mixins/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-modules-extract-imports": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", @@ -22271,45 +20861,6 @@ "node": ">= 6" } }, - "node_modules/postcss-modules-extract-imports/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-extract-imports/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-extract-imports/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-modules-local-by-default": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", @@ -22325,51 +20876,12 @@ "node": ">= 6" } }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-modules-local-by-default/node_modules/postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/postcss-modules-local-by-default/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-modules-scope": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", @@ -22383,45 +20895,6 @@ "node": ">= 6" } }, - "node_modules/postcss-modules-scope/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-scope/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-scope/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-modules-values": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", @@ -22432,45 +20905,6 @@ "postcss": "^7.0.6" } }, - "node_modules/postcss-modules-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-values/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-nested": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz", @@ -22480,42 +20914,6 @@ "postcss-selector-parser": "^6.0.2" } }, - "node_modules/postcss-nested/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-nested/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-nested/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-nesting": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-4.2.1.tgz", @@ -22528,6 +20926,29 @@ "node": ">=4.0.0" } }, + "node_modules/postcss-nesting/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/postcss-normalize": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", @@ -22556,45 +20977,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-charset/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-charset/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-normalize-display-values": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", @@ -22609,45 +20991,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-normalize-display-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-normalize-positions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", @@ -22663,45 +21006,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-normalize-positions/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-positions/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-positions/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-normalize-repeat-style": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", @@ -22717,45 +21021,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-normalize-string": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", @@ -22770,45 +21035,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-normalize-string/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-string/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-string/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-normalize-timing-functions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", @@ -22823,45 +21049,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-normalize-unicode": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", @@ -22876,45 +21063,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-normalize-unicode/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-normalize-url": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", @@ -22939,45 +21087,6 @@ "node": ">=6" } }, - "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-url/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-normalize-whitespace": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", @@ -22991,84 +21100,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-normalize/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-ordered-values": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", @@ -23083,45 +21114,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-ordered-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", @@ -23134,45 +21126,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-overflow-shorthand/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-overflow-shorthand/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-overflow-shorthand/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", @@ -23182,45 +21135,6 @@ "postcss": "^7.0.2" } }, - "node_modules/postcss-page-break/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-page-break/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-page-break/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", @@ -23234,45 +21148,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-place/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-place/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-place/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", @@ -23343,24 +21218,6 @@ "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, - "node_modules/postcss-preset-env/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-preset-env/node_modules/postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", @@ -23379,27 +21236,6 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/postcss-preset-env/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-preset-env/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", @@ -23425,24 +21261,6 @@ "node": ">=4" } }, - "node_modules/postcss-pseudo-class-any-link/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -23457,27 +21275,6 @@ "node": ">=4" } }, - "node_modules/postcss-pseudo-class-any-link/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-reduce-initial": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", @@ -23493,45 +21290,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-initial/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-reduce-initial/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-reduce-transforms": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", @@ -23547,45 +21305,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", @@ -23595,45 +21314,6 @@ "postcss": "^7.0.2" } }, - "node_modules/postcss-replace-overflow-wrap/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-replace-overflow-wrap/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-replace-overflow-wrap/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-safe-parser": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", @@ -23646,45 +21326,6 @@ "node": ">=6.0.0" } }, - "node_modules/postcss-safe-parser/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-safe-parser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-safe-parser/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", @@ -23695,45 +21336,6 @@ "postcss": "^7.0.2" } }, - "node_modules/postcss-selector-matches/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-selector-matches/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-selector-matches/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-selector-not": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", @@ -23744,53 +21346,12 @@ "postcss": "^7.0.2" } }, - "node_modules/postcss-selector-not/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-selector-not/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-selector-not/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz", + "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==", "dependencies": { "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", "util-deprecate": "^1.0.2" }, "engines": { @@ -23806,40 +21367,21 @@ "postcss": "^6.0.9" } }, - "node_modules/postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "node_modules/postcss-simple-vars/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "dependencies": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-svgo/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", + "chalk": "^2.4.1", "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "supports-color": "^5.4.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=4.0.0" } }, - "node_modules/postcss-svgo/node_modules/source-map": { + "node_modules/postcss-simple-vars/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", @@ -23848,16 +21390,18 @@ "node": ">=0.10.0" } }, - "node_modules/postcss-svgo/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, "node_modules/postcss-unique-selectors": { @@ -23874,45 +21418,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-unique-selectors/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-unique-selectors/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", @@ -23940,6 +21445,17 @@ "node": ">=0.10.0" } }, + "node_modules/postcss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -24017,16 +21533,6 @@ "clipboard": "^2.0.0" } }, - "node_modules/private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -24184,20 +21690,6 @@ "node": ">=4.0.0" } }, - "node_modules/prompt-choices/node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/prompt-choices/node_modules/define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -24220,27 +21712,6 @@ "node": ">=0.10.0" } }, - "node_modules/prompt-choices/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prompt-choices/node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/prompt-confirm": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/prompt-confirm/-/prompt-confirm-2.0.4.tgz", @@ -24272,6 +21743,21 @@ "node": ">=4.0.0" } }, + "node_modules/prompt-question/node_modules/clone-deep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz", + "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^5.0.0", + "shallow-clone": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prompt-question/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -24281,6 +21767,18 @@ "ms": "^2.1.1" } }, + "node_modules/prompt-question/node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prompt-question/node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", @@ -24290,10 +21788,24 @@ "node": ">=0.10.0" } }, + "node_modules/prompt-question/node_modules/shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", "dev": true, "dependencies": { "kleur": "^3.0.3", @@ -24350,13 +21862,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true, - "peer": true - }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -24511,6 +22016,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -24568,6 +22086,28 @@ "quote-stream": "bin/cmd.js" } }, + "node_modules/quote-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/quote-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/quote-stream/node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -24668,37 +22208,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/raw-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/raw-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/raw-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/raw-loader/node_modules/loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -24871,11 +22380,11 @@ } }, "node_modules/react-circular-progressbar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.3.tgz", - "integrity": "sha512-YKN+xAShXA3gYihevbQZbavfiJxo83Dt1cUxqg/cltj4VVsRQpDr7Fg1mvjDG3x1KHGtd9NmYKvJ2mMrPwbKyw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.4.tgz", + "integrity": "sha512-OfX0ThSxRYEVGaQSt0DlXfyl5w4DbXHsXetyeivmoQrh9xA9bzVPHNf8aAhOIiwiaxX2WYWpLDB3gcpsDJ9oww==", "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/react-codemirror2": { @@ -24887,22 +22396,14 @@ "react": ">=15.5 <=16.x" } }, - "node_modules/react-color": { - "version": "2.19.3", - "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", - "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", + "node_modules/react-colorful": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.1.4.tgz", + "integrity": "sha512-WOEpRNz8Oo2SEU4eYQ279jEKFSjpFPa9Vi2U/K0DGwP9wOQ8wYkJcNSd5Qbv1L8OFvyKDCbWekjftXaU5mbmtg==", "dev": true, - "dependencies": { - "@icons/material": "^0.2.4", - "lodash": "^4.17.15", - "lodash-es": "^4.17.15", - "material-colors": "^1.2.1", - "prop-types": "^15.5.10", - "reactcss": "^1.2.0", - "tinycolor2": "^1.4.1" - }, "peerDependencies": { - "react": "*" + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, "node_modules/react-confirm": { @@ -25044,18 +22545,17 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } }, - "node_modules/react-dev-utils/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/react-dev-utils/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, "node_modules/react-dev-utils/node_modules/dir-glob": { @@ -25079,6 +22579,51 @@ "node": ">=8" } }, + "node_modules/react-dev-utils/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "engines": { + "node": ">=6.11.5", + "yarn": ">=1.0.0" + } + }, "node_modules/react-dev-utils/node_modules/globby": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", @@ -25108,6 +22653,18 @@ "node": ">= 4" } }, + "node_modules/react-dev-utils/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-dev-utils/node_modules/loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -25123,35 +22680,49 @@ } }, "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/react-dev-utils/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -25180,25 +22751,60 @@ "node": ">=6" } }, - "node_modules/react-dev-utils/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/react-dev-utils/node_modules/shebang-regex": { + "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/react-dev-utils/node_modules/prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/react-dev-utils/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" } }, "node_modules/react-dev-utils/node_modules/slash": { @@ -25222,21 +22828,6 @@ "node": ">=8" } }, - "node_modules/react-dev-utils/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/react-dnd": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.6.0.tgz", @@ -25289,9 +22880,9 @@ } }, "node_modules/react-docgen-typescript": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.21.0.tgz", - "integrity": "sha512-E4y/OcXwHukgiVafCGlxwoNHr4BDmM70Ww7oimL/QkMo5dmGALhceewe/xmVjdMxxI7E5syOGOc9/tbHL742rg==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.22.0.tgz", + "integrity": "sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg==", "dev": true, "peerDependencies": { "typescript": ">= 3.x" @@ -25314,9 +22905,9 @@ } }, "node_modules/react-docgen-typescript-plugin/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true }, "node_modules/react-docgen/node_modules/commander": { @@ -25414,18 +23005,6 @@ "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/react-hotkeys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-hotkeys/-/react-hotkeys-2.0.0.tgz", - "integrity": "sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q==", - "dev": true, - "dependencies": { - "prop-types": "^15.6.1" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -25532,9 +23111,9 @@ } }, "node_modules/react-popper-tooltip/node_modules/react-popper": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz", - "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", "dev": true, "dependencies": { "react-fast-compare": "^3.0.1", @@ -25777,61 +23356,6 @@ "node": ">= 6" } }, - "node_modules/react-scripts/node_modules/@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", - "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^2.0.0", - "eslint": "^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/react-scripts/node_modules/@typescript-eslint/parser": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", - "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", - "dev": true, - "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/react-scripts/node_modules/@webassemblyjs/ast": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", @@ -26009,9 +23533,9 @@ } }, "node_modules/react-scripts/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -26020,40 +23544,6 @@ "node": ">=0.4.0" } }, - "node_modules/react-scripts/node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/react-scripts/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/react-scripts/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/react-scripts/node_modules/aria-query": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", @@ -26141,18 +23631,6 @@ "node": ">= 8" } }, - "node_modules/react-scripts/node_modules/cacache/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/react-scripts/node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", @@ -26193,6 +23671,18 @@ "node": ">=6" } }, + "node_modules/react-scripts/node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/react-scripts/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -26200,28 +23690,17 @@ "dev": true }, "node_modules/react-scripts/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" - } - }, - "node_modules/react-scripts/node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">= 8" } }, "node_modules/react-scripts/node_modules/css-loader": { @@ -26313,116 +23792,6 @@ "node": ">=8" } }, - "node_modules/react-scripts/node_modules/eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/react-scripts/node_modules/eslint-config-react-app": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", - "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.9" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "2.x", - "@typescript-eslint/parser": "2.x", - "babel-eslint": "10.x", - "eslint": "6.x", - "eslint-plugin-flowtype": "3.x || 4.x", - "eslint-plugin-import": "2.x", - "eslint-plugin-jsx-a11y": "6.x", - "eslint-plugin-react": "7.x", - "eslint-plugin-react-hooks": "1.x || 2.x" - } - }, - "node_modules/react-scripts/node_modules/eslint-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", - "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", - "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin", - "dev": true, - "dependencies": { - "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.2", - "loader-utils": "^1.2.3", - "object-hash": "^2.0.1", - "schema-utils": "^2.6.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/react-scripts/node_modules/eslint-plugin-flowtype": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", - "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": ">=6.1.0" - } - }, "node_modules/react-scripts/node_modules/eslint-plugin-import": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", @@ -26458,19 +23827,6 @@ "ms": "2.0.0" } }, - "node_modules/react-scripts/node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-scripts/node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -26526,6 +23882,18 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" } }, + "node_modules/react-scripts/node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-scripts/node_modules/eslint-plugin-react/node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -26540,63 +23908,16 @@ } }, "node_modules/react-scripts/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", + "esrecurse": "^4.1.0", "estraverse": "^4.1.1" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/react-scripts/node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/react-scripts/node_modules/eslint/node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/react-scripts/node_modules/eslint/node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true, - "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/react-scripts/node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" + "node": ">=4.0.0" } }, "node_modules/react-scripts/node_modules/extend-shallow": { @@ -26629,40 +23950,6 @@ "node": ">=4.0.0" } }, - "node_modules/react-scripts/node_modules/fast-glob/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/react-scripts/node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-scripts/node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "dependencies": { - "flat-cache": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/react-scripts/node_modules/file-loader": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", @@ -26688,18 +23975,17 @@ "node": ">= 0.4.0" } }, - "node_modules/react-scripts/node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "node_modules/react-scripts/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/react-scripts/node_modules/fork-ts-checker-webpack-plugin": { @@ -26760,33 +24046,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/react-scripts/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/react-scripts/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/react-scripts/node_modules/globby": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", @@ -26805,12 +24064,6 @@ "node": ">=4" } }, - "node_modules/react-scripts/node_modules/globby/node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, "node_modules/react-scripts/node_modules/globby/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -26820,6 +24073,15 @@ "node": ">=4" } }, + "node_modules/react-scripts/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/react-scripts/node_modules/html-webpack-plugin": { "version": "4.0.0-beta.11", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", @@ -26841,15 +24103,6 @@ "webpack": "^4.0.0" } }, - "node_modules/react-scripts/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/react-scripts/node_modules/immer": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", @@ -26880,6 +24133,18 @@ "node": ">=6.0.0" } }, + "node_modules/react-scripts/node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/react-scripts/node_modules/is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", @@ -26932,33 +24197,6 @@ "node": ">= 8.3" } }, - "node_modules/react-scripts/node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-scripts/node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-scripts/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/react-scripts/node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -26981,26 +24219,16 @@ "node": ">=4.0" } }, - "node_modules/react-scripts/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-scripts/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/react-scripts/node_modules/make-dir": { @@ -27087,15 +24315,24 @@ } }, "node_modules/react-scripts/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" } }, "node_modules/react-scripts/node_modules/path-type": { @@ -27128,6 +24365,18 @@ "node": ">=6" } }, + "node_modules/react-scripts/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/react-scripts/node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -27152,22 +24401,38 @@ "node": ">=6" } }, - "node_modules/react-scripts/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "node_modules/react-scripts/node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=6" + } + }, + "node_modules/react-scripts/node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "engines": { + "node": ">=6" + } + }, + "node_modules/react-scripts/node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" } }, "node_modules/react-scripts/node_modules/postcss-flexbugs-fixes": { @@ -27185,15 +24450,6 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/react-scripts/node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-scripts/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", @@ -27244,20 +24500,6 @@ "node": ">=8" } }, - "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -27284,27 +24526,6 @@ "node": ">=4.0.0" } }, - "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -27317,31 +24538,110 @@ "node": ">=8" } }, - "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/react-scripts/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/react-scripts/node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "node_modules/react-scripts/node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/react-scripts/node_modules/read-pkg/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "engines": { + "node": ">=4" + } + }, + "node_modules/react-scripts/node_modules/read-pkg/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/react-scripts/node_modules/resolve": { @@ -27356,27 +24656,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react-scripts/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/react-scripts/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/react-scripts/node_modules/slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -27386,20 +24665,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-scripts/node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/react-scripts/node_modules/sockjs": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", @@ -27468,69 +24733,16 @@ "node": ">= 8" } }, - "node_modules/react-scripts/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/react-scripts/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "has-flag": "^4.0.0" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/react-scripts/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-scripts/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/react-scripts/node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/react-scripts/node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" } }, "node_modules/react-scripts/node_modules/terser-webpack-plugin": { @@ -27747,15 +24959,6 @@ } } }, - "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -27798,26 +25001,13 @@ "node": ">= 4.0" } }, - "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/schema-utils": { @@ -27834,28 +25024,16 @@ "node": ">= 4" } }, - "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-scripts/node_modules/webpack/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, "node_modules/react-scripts/node_modules/webpack/node_modules/cacache": { @@ -27881,19 +25059,6 @@ "y18n": "^4.0.0" } }, - "node_modules/react-scripts/node_modules/webpack/node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/react-scripts/node_modules/webpack/node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -27918,9 +25083,9 @@ } }, "node_modules/react-scripts/node_modules/webpack/node_modules/ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "dependencies": { "figgy-pudding": "^3.5.1" @@ -27989,16 +25154,16 @@ "node": ">=6" } }, - "node_modules/react-scripts/node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "node_modules/react-scripts/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "dependencies": { - "mkdirp": "^0.5.1" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/react-scripts/node_modules/ws": { @@ -28050,6 +25215,40 @@ "node": ">=6" } }, + "node_modules/react-scripts/node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-scripts/node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-scripts/node_modules/yargs/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/react-scripts/node_modules/yargs/node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -28064,20 +25263,32 @@ "node": ">=6" } }, - "node_modules/react-sizeme": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-2.6.12.tgz", - "integrity": "sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw==", + "node_modules/react-scripts/node_modules/yargs/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "dependencies": { - "element-resize-detector": "^1.2.1", + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-sizeme": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-3.0.1.tgz", + "integrity": "sha512-9Hf1NLgSbny1bha77l9HwvwwxQUJxFUqi44Ih+y3evA+PezBpGdCGlnvye6avss2cIgs9PgdYgMnfuzJWn/RUw==", + "dev": true, + "dependencies": { + "element-resize-detector": "^1.2.2", "invariant": "^2.2.4", "shallowequal": "^1.1.0", - "throttle-debounce": "^2.1.0" + "throttle-debounce": "^3.0.1" }, "peerDependencies": { - "react": "^0.14.0 || ^15.0.0-0 || ^16.0.0", - "react-dom": "^0.14.0 || ^15.0.0-0 || ^16.0.0" + "react": "^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0", + "react-dom": "^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0" } }, "node_modules/react-smooth": { @@ -28197,15 +25408,6 @@ "react-dom": "^15.3.0 || ^16.0.0-alpha" } }, - "node_modules/reactcss": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", - "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", - "dev": true, - "dependencies": { - "lodash": "^4.0.1" - } - }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -28225,125 +25427,99 @@ } }, "node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dependencies": { "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, "node_modules/readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", @@ -28396,15 +25572,6 @@ "node": ">=0.10.0" } }, - "node_modules/readdirp/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/readdirp/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -28429,6 +25596,30 @@ "node": ">=0.10.0" } }, + "node_modules/readdirp/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/readline-ui": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/readline-ui/-/readline-ui-2.2.3.tgz", @@ -28444,6 +25635,15 @@ "node": ">=4.0" } }, + "node_modules/readline-ui/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/readline-ui/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -28481,6 +25681,18 @@ "node": ">=4" } }, + "node_modules/readline-ui/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/readline-utils": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/readline-utils/-/readline-utils-2.2.3.tgz", @@ -28542,9 +25754,9 @@ } }, "node_modules/recharts-scale": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.4.tgz", - "integrity": "sha512-e7MCnuD1+gtY9N7TYxzB+QXvi4s30kvNqVbI1p5m4rf47GusEQaEHxi8zvlZkdOOZ90UhpGHcnkYlyYkUJ2JoQ==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", "dependencies": { "decimal.js-light": "^2.4.1" } @@ -28553,21 +25765,9 @@ "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", "hasInstallScript": true }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -28604,12 +25804,11 @@ } }, "node_modules/redux": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", - "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", + "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", "dependencies": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" + "@babel/runtime": "^7.9.2" } }, "node_modules/redux-immutable": { @@ -28732,13 +25931,15 @@ } }, "node_modules/regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true, - "peer": true, "engines": { - "node": ">=4.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, "node_modules/regexpu-core": { @@ -28813,15 +26014,6 @@ "strip-ansi": "^3.0.0" } }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/renderkid/node_modules/css-select": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", @@ -28884,22 +26076,39 @@ "node": ">= 6" } }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/renderkid/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/renderkid/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.2.0" } }, "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -28914,19 +26123,6 @@ "node": ">=0.10" } }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "peer": true, - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -29030,43 +26226,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "node_modules/require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "peer": true, - "dependencies": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-uncached/node_modules/resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "node_modules/reselect": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", - "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=", - "dev": true, - "peer": true - }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", @@ -29148,6 +26313,18 @@ "node": ">=0.10.0" } }, + "node_modules/resolve-dir/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -29412,27 +26589,10 @@ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" }, - "node_modules/rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true, - "peer": true - }, - "node_modules/rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "peer": true, - "dependencies": { - "rx-lite": "*" - } - }, "node_modules/rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "dependencies": { "tslib": "^1.9.0" @@ -29522,15 +26682,6 @@ "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sane/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -29598,41 +26749,6 @@ } } }, - "node_modules/sass-loader/node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sass-loader/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sass-loader/node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -29678,37 +26794,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -29977,26 +27062,15 @@ } }, "node_modules/shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "dependencies": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" + "kind-of": "^6.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shallow-clone/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shallow-copy": { @@ -30038,24 +27112,24 @@ } }, "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shell-quote": { @@ -30065,29 +27139,14 @@ "dev": true }, "node_modules/shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", "bin": { "shjs": "bin/shjs" }, "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" + "node": ">=0.8.0" } }, "node_modules/shellwords": { @@ -30145,16 +27204,17 @@ } }, "node_modules/slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, - "peer": true, "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { @@ -30162,7 +27222,6 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -30212,6 +27271,18 @@ "node": ">=0.10.0" } }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/snapdragon/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -30245,6 +27316,18 @@ "node": ">=0.10.0" } }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/snapdragon/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -30257,6 +27340,18 @@ "node": ">=0.10.0" } }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/snapdragon/node_modules/is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -30271,7 +27366,7 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-descriptor/node_modules/kind-of": { + "node_modules/snapdragon/node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", @@ -30337,9 +27432,9 @@ } }, "node_modules/sockjs-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", - "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "dev": true, "dependencies": { "debug": "^3.2.6", @@ -30347,7 +27442,7 @@ "faye-websocket": "^0.11.3", "inherits": "^2.0.4", "json3": "^3.3.3", - "url-parse": "^1.4.7" + "url-parse": "^1.5.1" } }, "node_modules/sockjs-client/node_modules/debug": { @@ -30518,6 +27613,35 @@ "node": ">= 6" } }, + "node_modules/spdy-transport/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/spdy-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -30582,9 +27706,9 @@ } }, "node_modules/ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "dependencies": { "figgy-pudding": "^3.5.1" @@ -30606,9 +27730,9 @@ } }, "node_modules/stack-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", - "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" @@ -30677,6 +27801,18 @@ "node": ">=0.10.0" } }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/static-extend/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -30689,6 +27825,18 @@ "node": ">=0.10.0" } }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/static-extend/node_modules/is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -30703,7 +27851,7 @@ "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/is-descriptor/node_modules/kind-of": { + "node_modules/static-extend/node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", @@ -30771,6 +27919,20 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" }, + "node_modules/static-module/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, "node_modules/static-module/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -30780,6 +27942,14 @@ "node": ">=0.10.0" } }, + "node_modules/static-module/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/static-module/node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -30823,6 +27993,30 @@ "readable-stream": "^2.0.2" } }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-browserify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -30846,6 +28040,30 @@ "xtend": "^4.0.0" } }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -30862,12 +28080,9 @@ } }, "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "node_modules/string-length": { "version": "2.0.0", @@ -30882,6 +28097,27 @@ "node": ">=4" } }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -31016,24 +28252,24 @@ } }, "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/strip-bom": { @@ -31089,13 +28325,14 @@ } }, "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "peer": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "bin": { + "strip-json-comments": "cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, "node_modules/style-loader": { @@ -31111,37 +28348,6 @@ "node": ">= 0.12.0" } }, - "node_modules/style-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/style-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/style-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/style-loader/node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -31170,24 +28376,6 @@ "node": ">=6.9.0" } }, - "node_modules/stylehacks/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/stylehacks/node_modules/postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -31202,27 +28390,6 @@ "node": ">=8" } }, - "node_modules/stylehacks/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylehacks/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/success-symbol": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", @@ -31241,45 +28408,6 @@ "postcss": "^7.0.2" } }, - "node_modules/sugarss/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/sugarss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sugarss/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -31402,42 +28530,59 @@ "integrity": "sha512-KHDsGQ4UcP+wSMaqH7wjH4DHxeHKRlmEO5jlSVCS+0x9xA4ZhdKYg/ameGF7RXaFDUcsti6Zj5s5W1Z4/YsbHA==" }, "node_modules/table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, - "peer": true, "dependencies": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "node_modules/table/node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true, - "peer": true, "engines": { "node": ">=4" } }, "node_modules/table/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, - "peer": true, "dependencies": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/tailwindcss": { @@ -31512,9 +28657,9 @@ } }, "node_modules/tailwindcss/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -31526,22 +28671,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/tailwindcss/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tailwindcss/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/tailwindcss/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -31555,6 +28684,14 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/tailwindcss/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/tailwindcss/node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -31563,87 +28700,11 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/tailwindcss/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/tailwindcss/node_modules/postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, - "node_modules/tailwindcss/node_modules/postcss/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tailwindcss/node_modules/postcss/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tailwindcss/node_modules/postcss/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tailwindcss/node_modules/postcss/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/tailwindcss/node_modules/postcss/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/tailwindcss/node_modules/postcss/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tailwindcss/node_modules/reduce-css-calc": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", @@ -31658,14 +28719,6 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, - "node_modules/tailwindcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/tailwindcss/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -31677,14 +28730,6 @@ "node": ">=8" } }, - "node_modules/tailwindcss/node_modules/supports-color/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/tailwindcss/node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -31747,18 +28792,18 @@ "dev": true }, "node_modules/telejson": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.0.tgz", - "integrity": "sha512-Yy0N2OV0mosmr1SCZEm3Ezhu/oi5Dbao5RqauZu4+VI5I/XtVBHXajRk0txuqbFYtKdzzWGDZFGSif9ovVLjEA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.1.tgz", + "integrity": "sha512-aU7x+nwodmODJPXhU9sC/REOcX/dx1tNbyeOFV1PCTh6e9Mj+bnyfQ7sr13zfJYya9BtpGwnUNn9Fd76Ybj2eg==", "dev": true, "dependencies": { "@types/is-function": "^1.0.0", "global": "^4.4.0", "is-function": "^1.0.2", - "is-regex": "^1.1.1", + "is-regex": "^1.1.2", "is-symbol": "^1.0.3", "isobject": "^4.0.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3" } }, @@ -31910,6 +28955,19 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/terser-webpack-plugin/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/terser-webpack-plugin/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -31933,6 +28991,18 @@ "node": ">= 10.13.0" } }, + "node_modules/terser-webpack-plugin/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/terser-webpack-plugin/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -31987,6 +29057,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/terser-webpack-plugin/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/terser-webpack-plugin/node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -32002,6 +29099,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/terser-webpack-plugin/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -32151,6 +29260,15 @@ "node": ">=4" } }, + "node_modules/test-exclude/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/test-exclude/node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -32209,12 +29327,12 @@ "dev": true }, "node_modules/throttle-debounce": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz", - "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/through": { @@ -32233,6 +29351,49 @@ "readable-stream": "2 || 3" } }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -32283,15 +29444,6 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, - "node_modules/tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -32337,6 +29489,18 @@ "node": ">=0.10.0" } }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -32478,16 +29642,6 @@ "punycode": "^2.1.0" } }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", @@ -32501,9 +29655,9 @@ "dev": true }, "node_modules/ts-dedent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.0.tgz", - "integrity": "sha512-HbmrG+lCgk5W8LQTALxBxQRBDeAhQKRzdqVhHLUkVd5nYT+b6zDzbRMjiA8wqrWDa33X09WdnW4zEsdwQArTaw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.1.tgz", + "integrity": "sha512-riHuwnzAUCfdIeTBNUq7+Yj+ANnrMXo/7+Z74dIdudS7ys2k8aSGMzpJRMFDF7CLwUTbtvi1ZZff/Wl+XxmqIA==", "dev": true, "engines": { "node": ">=6.10" @@ -32644,24 +29798,10 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "node_modules/typescript": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", - "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/ua-parser-js": { - "version": "0.7.25", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.25.tgz", - "integrity": "sha512-8NFExdfI24Ny8R3Vc6+uUytP/I7dpqk3JERlvxPWlrtx5YboqCgxAXYKPAifbPLV2zKbgmmPL53ufW7mUC/VOQ==", + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", "funding": [ { "type": "opencollective", @@ -32708,21 +29848,24 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "dependencies": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", "dev": true }, "node_modules/unfetch": { @@ -32804,7 +29947,8 @@ "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true }, "node_modules/uniqs": { "version": "2.0.0", @@ -32971,37 +30115,6 @@ } } }, - "node_modules/url-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/url-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/url-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/url-loader/node_modules/loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -33422,18 +30535,6 @@ "node": ">= 6.14.4" } }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -33449,16 +30550,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/webpack-bundle-analyzer/node_modules/ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true, - "hasInstallScript": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack-bundle-analyzer/node_modules/filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -33593,6 +30684,24 @@ "node": ">=6" } }, + "node_modules/webpack-cli/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/webpack-cli/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -33602,6 +30711,27 @@ "semver": "bin/semver" } }, + "node_modules/webpack-cli/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-cli/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/webpack-cli/node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -33640,6 +30770,18 @@ "node": ">=6" } }, + "node_modules/webpack-cli/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/webpack-cli/node_modules/wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -33768,40 +30910,6 @@ } } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack-dev-server/node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -33836,15 +30944,6 @@ "wrap-ansi": "^5.1.0" } }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -33912,12 +31011,6 @@ "node": ">=4" } }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/webpack-dev-server/node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -33943,6 +31036,15 @@ "node": ">=6" } }, + "node_modules/webpack-dev-server/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/webpack-dev-server/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", @@ -33977,15 +31079,6 @@ "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -33998,18 +31091,6 @@ "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack-dev-server/node_modules/supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -34046,15 +31127,6 @@ "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -34128,27 +31200,6 @@ "strip-ansi": "^3.0.0" } }, - "node_modules/webpack-hot-middleware/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-hot-middleware/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack-log": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", @@ -34270,31 +31321,6 @@ "node": ">=0.4.0" } }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/webpack/node_modules/define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -34355,21 +31381,6 @@ "node": ">=4" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/webpack/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -34496,15 +31507,18 @@ } }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { @@ -34538,6 +31552,15 @@ "string-width": "^1.0.2 || 2" } }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/wide-align/node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -34560,6 +31583,18 @@ "node": ">=4" } }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -34621,11 +31656,29 @@ "node": ">= 6.4.0" } }, - "node_modules/winston/node_modules/async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/winston-transport/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } }, "node_modules/winston/node_modules/is-stream": { "version": "2.0.0", @@ -34650,6 +31703,35 @@ "node": ">= 6" } }, + "node_modules/winston/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/winston/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -34928,24 +32010,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -34964,16 +32028,15 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, - "peer": true, "dependencies": { "mkdirp": "^0.5.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/write-file-atomic": { @@ -35059,9 +32122,9 @@ } }, "node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "node_modules/yallist": { @@ -35107,9 +32170,9 @@ } }, "node_modules/yargs/node_modules/y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "engines": { "node": ">=10" @@ -35135,9 +32198,9 @@ }, "dependencies": { "@babel/cli": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.10.tgz", - "integrity": "sha512-lYSBC7B4B9hJ7sv0Ojx1BrGhuzCoOIYfLjd+Xpd4rOzdS+a47yi8voV8vFkfjlZR1N5qZO7ixOCbobUdT304PQ==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.16.tgz", + "integrity": "sha512-cL9tllhqvsQ6r1+d9Invf7nNXg/3BlfL1vvvL/AdH9fZ2l5j0CeBcoq6UjsqHpvyN1v5nXSZgqJZoGeK+ZOAbw==", "dev": true, "requires": { "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents", @@ -35146,7 +32209,6 @@ "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.19", "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" @@ -35170,31 +32232,30 @@ } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", "dev": true }, "@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", + "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", + "@babel/generator": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.0", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", "semver": "^6.3.0", "source-map": "^0.5.0" }, @@ -35208,12 +32269,12 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.14.1", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -35246,27 +32307,28 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", - "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", + "@babel/compat-data": "^7.13.15", "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", + "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", "dev": true, "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13" } }, @@ -35281,9 +32343,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -35326,13 +32388,13 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" } }, "@babel/helper-member-expression-to-functions": { @@ -35354,19 +32416,19 @@ } }, "@babel/helper-module-transforms": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", - "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.13.12", "@babel/helper-replace-supers": "^7.13.12", "@babel/helper-simple-access": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.0", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" } }, "@babel/helper-optimise-call-expression": { @@ -35435,9 +32497,9 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", "dev": true }, "@babel/helper-validator-option": { @@ -35459,31 +32521,31 @@ } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", "dev": true, "requires": { "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.0", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", "dev": true }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { @@ -35498,9 +32560,9 @@ } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0", @@ -35518,13 +32580,23 @@ "@babel/helper-plugin-utils": "^7.13.0" } }, - "@babel/plugin-proposal-decorators": { - "version": "7.13.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz", - "integrity": "sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag==", + "@babel/plugin-proposal-class-static-block": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", + "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.15.tgz", + "integrity": "sha512-ibAMAqUm97yzi+LPgdr5Nqb9CMkeieGHvwPg1ywSGjZrZHQEGqE01HmOio8kxRpA/+VtOHouIVy2FMpBbtltjA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.11", "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-decorators": "^7.12.13" } @@ -35643,6 +32715,18 @@ "@babel/helper-plugin-utils": "^7.13.0" } }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + } + }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", @@ -35680,6 +32764,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", + "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, "@babel/plugin-syntax-decorators": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", @@ -35797,6 +32890,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, "@babel/plugin-syntax-top-level-await": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", @@ -35845,12 +32947,12 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", + "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-classes": { @@ -35878,9 +32980,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.13.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0" @@ -35963,25 +33065,25 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", + "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-simple-access": "^7.13.12", "babel-plugin-dynamic-import-node": "^2.3.3" } }, @@ -35999,12 +33101,12 @@ } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0" } }, @@ -36055,9 +33157,9 @@ } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.10.tgz", - "integrity": "sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz", + "integrity": "sha512-SNJU53VM/SjQL0bZhyU+f4kJQz7bQQajnrZRSaU21hruG/NWY41AEM9AWXeXX90pYr/C2yAmTgI6yW3LlLrAUQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0" @@ -36123,9 +33225,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" @@ -36237,18 +33339,19 @@ } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz", + "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-validator-option": "^7.12.17", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", + "@babel/plugin-proposal-async-generator-functions": "^7.13.15", "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.13.11", "@babel/plugin-proposal-dynamic-import": "^7.13.8", "@babel/plugin-proposal-export-namespace-from": "^7.12.13", "@babel/plugin-proposal-json-strings": "^7.13.8", @@ -36259,9 +33362,11 @@ "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", "@babel/plugin-proposal-optional-chaining": "^7.13.12", "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -36271,14 +33376,15 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", "@babel/plugin-syntax-top-level-await": "^7.12.13", "@babel/plugin-transform-arrow-functions": "^7.13.0", "@babel/plugin-transform-async-to-generator": "^7.13.0", "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.14.1", "@babel/plugin-transform-classes": "^7.13.0", "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.17", "@babel/plugin-transform-dotall-regex": "^7.12.13", "@babel/plugin-transform-duplicate-keys": "^7.12.13", "@babel/plugin-transform-exponentiation-operator": "^7.12.13", @@ -36286,16 +33392,16 @@ "@babel/plugin-transform-function-name": "^7.12.13", "@babel/plugin-transform-literals": "^7.12.13", "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-amd": "^7.14.0", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-modules-umd": "^7.14.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", "@babel/plugin-transform-new-target": "^7.12.13", "@babel/plugin-transform-object-super": "^7.12.13", "@babel/plugin-transform-parameters": "^7.13.0", "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", "@babel/plugin-transform-reserved-words": "^7.12.13", "@babel/plugin-transform-shorthand-properties": "^7.12.13", "@babel/plugin-transform-spread": "^7.13.0", @@ -36305,22 +33411,23 @@ "@babel/plugin-transform-unicode-escapes": "^7.12.13", "@babel/plugin-transform-unicode-regex": "^7.12.13", "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", + "@babel/types": "^7.14.1", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", "core-js-compat": "^3.9.0", "semver": "^6.3.0" } }, "@babel/preset-flow": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.12.13.tgz", - "integrity": "sha512-gcEjiwcGHa3bo9idURBp5fmJPcyFPOszPQjztXrOjUE2wWVqc6fIVJPgWPIQksaQ5XZ2HWiRsf2s1fRGVjUtVw==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.13.13.tgz", + "integrity": "sha512-MDtwtamMifqq3R2mC7l3A3uFalUb3NH5TIBQWjN/epEPlZktcLq4se3J+ivckKrLMGsR7H9LW8+pYuIUN9tsKg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-transform-flow-strip-types": "^7.12.13" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-transform-flow-strip-types": "^7.13.0" } }, "@babel/preset-modules": { @@ -36337,15 +33444,16 @@ } }, "@babel/preset-react": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz", - "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz", + "integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", "@babel/plugin-transform-react-display-name": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.12.13", - "@babel/plugin-transform-react-jsx-development": "^7.12.12", + "@babel/plugin-transform-react-jsx": "^7.13.12", + "@babel/plugin-transform-react-jsx-development": "^7.12.17", "@babel/plugin-transform-react-pure-annotations": "^7.12.1" } }, @@ -36361,30 +33469,30 @@ } }, "@babel/register": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.8.tgz", - "integrity": "sha512-yCVtABcmvQjRsX2elcZFUV5Q5kDDpHdtXKKku22hNDma60lYuhKmtp1ykZ/okRCPLT2bR5S+cA1kvtBdAFlDTQ==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.16.tgz", + "integrity": "sha512-dh2t11ysujTwByQjXNgJ48QZ2zcXKQVdV8s0TbeMI0flmtGWCdTwK9tJiACHXPLmncm5+ktNn/diojA45JE4jg==", "dev": true, "requires": { + "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", - "lodash": "^4.17.19", "make-dir": "^2.1.0", "pirates": "^4.0.0", "source-map-support": "^0.5.16" } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", - "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", + "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", "dev": true, "requires": { "core-js-pure": "^3.0.0", @@ -36403,30 +33511,28 @@ } }, "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", + "@babel/generator": "^7.14.0", "@babel/helper-function-name": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.14.0", "to-fast-properties": "^2.0.0" } }, @@ -36668,13 +33774,6 @@ "warning": "^4.0.3" } }, - "@icons/material": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", - "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", - "dev": true, - "requires": {} - }, "@jest/console": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", @@ -36757,12 +33856,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -36950,12 +34043,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -37104,9 +34191,9 @@ } }, "@popperjs/core": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz", - "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", + "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==", "dev": true }, "@reach/router": { @@ -37188,157 +34275,67 @@ } }, "@storybook/addons": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.1.21.tgz", - "integrity": "sha512-xo5TGu9EZVCqgh3D1veVnfuGzyKDWWsvOMo18phVqRxj21G3/+hScVyfIYwNTv7Ys5/Ahp9JxJUMXL3V3ny+tw==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.2.9.tgz", + "integrity": "sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ==", "dev": true, "requires": { - "@storybook/api": "6.1.21", - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/core-events": "6.1.21", - "@storybook/router": "6.1.21", - "@storybook/theming": "6.1.21", - "core-js": "^3.0.1", - "global": "^4.3.2", + "@storybook/api": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/router": "6.2.9", + "@storybook/theming": "6.2.9", + "core-js": "^3.8.2", + "global": "^4.4.0", "regenerator-runtime": "^0.13.7" } }, "@storybook/api": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.1.21.tgz", - "integrity": "sha512-QjZk70VSXMw/wPPoWdMp5Bl9VmkfmGhIz8PALrFLLEZHjzptpfZE2qkGEEJHG0NAksFUv6NxGki2/632dzR7Ug==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.2.9.tgz", + "integrity": "sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ==", "dev": true, "requires": { - "@reach/router": "^1.3.3", - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/core-events": "6.1.21", + "@reach/router": "^1.3.4", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", "@storybook/csf": "0.0.1", - "@storybook/router": "6.1.21", + "@storybook/router": "6.2.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.1.21", + "@storybook/theming": "6.2.9", "@types/reach__router": "^1.3.7", - "core-js": "^3.0.1", - "fast-deep-equal": "^3.1.1", - "global": "^4.3.2", - "lodash": "^4.17.15", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", "memoizerific": "^1.11.3", + "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", - "store2": "^2.7.1", - "telejson": "^5.0.2", + "store2": "^2.12.0", + "telejson": "^5.1.0", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" } }, - "@storybook/channel-postmessage": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.1.21.tgz", - "integrity": "sha512-SuI/ffqcPT02VNda32k8V0D4XpLm5bIy8CLIs0OAnQg+zt5KjGBpQBngk3q4EaAiOoAhbMWAQiUzRUXfrgkgXg==", + "@storybook/builder-webpack4": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.2.9.tgz", + "integrity": "sha512-swECic1huVdj+B+iRJIQ8ds59HuPVE4fmhI+j/nhw0CQCsgAEKqDlOQVYEimW6nZX8GO4WxNm6tiiRzxixejbw==", "dev": true, "requires": { - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/core-events": "6.1.21", - "core-js": "^3.0.1", - "global": "^4.3.2", - "qs": "^6.6.0", - "telejson": "^5.0.2" - } - }, - "@storybook/channels": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.1.21.tgz", - "integrity": "sha512-7WoizMjyHqCyvcWncLexSg9FLPIErWAZL4NvluEthwsHSO2sDybn9mh1pzsFHdYMuTP6ml06Zt9ayWMtIveHDg==", - "dev": true, - "requires": { - "core-js": "^3.0.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - } - }, - "@storybook/client-api": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.1.21.tgz", - "integrity": "sha512-uLFXQ5z1LLWYnw1w+YUJPzIPRVlwCCvM2Si37aHDZn1F3fnbMg+huEhEqIQ1TTTw3wiJoTeGuShYvqyaiNwq/w==", - "dev": true, - "requires": { - "@storybook/addons": "6.1.21", - "@storybook/channel-postmessage": "6.1.21", - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/core-events": "6.1.21", - "@storybook/csf": "0.0.1", - "@types/qs": "^6.9.0", - "@types/webpack-env": "^1.15.3", - "core-js": "^3.0.1", - "global": "^4.3.2", - "lodash": "^4.17.15", - "memoizerific": "^1.11.3", - "qs": "^6.6.0", - "regenerator-runtime": "^0.13.7", - "stable": "^0.1.8", - "store2": "^2.7.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - } - }, - "@storybook/client-logger": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.1.21.tgz", - "integrity": "sha512-QJV+gnVM2fQ4M7lSkRLCXkOw/RU+aEtUefo9TAnXxPHK3UGG+DyvLmha6fHGaz9GAcFxyWtgqCyVOhMe03Q35g==", - "dev": true, - "requires": { - "core-js": "^3.0.1", - "global": "^4.3.2" - } - }, - "@storybook/components": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.1.21.tgz", - "integrity": "sha512-2NjkyS1yeYXlRY7azt88woqd6eqJA00oloIxgMAFLVpRmvFxoHalY61wNrvxl2QSu9cNofp984AbGc8gPbizBA==", - "dev": true, - "requires": { - "@popperjs/core": "^2.5.4", - "@storybook/client-logger": "6.1.21", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.1.21", - "@types/overlayscrollbars": "^1.9.0", - "@types/react-color": "^3.0.1", - "@types/react-syntax-highlighter": "11.0.4", - "core-js": "^3.0.1", - "fast-deep-equal": "^3.1.1", - "global": "^4.3.2", - "lodash": "^4.17.15", - "markdown-to-jsx": "^6.11.4", - "memoizerific": "^1.11.3", - "overlayscrollbars": "^1.10.2", - "polished": "^3.4.4", - "react-color": "^2.17.0", - "react-popper-tooltip": "^3.1.1", - "react-syntax-highlighter": "^13.5.0", - "react-textarea-autosize": "^8.1.1", - "regenerator-runtime": "^0.13.7", - "ts-dedent": "^2.0.0" - } - }, - "@storybook/core": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.1.21.tgz", - "integrity": "sha512-ITqSid3VVL5/fkx7Wwu7QfD2Y5xjl3V6p7yUpLSzP8GpBnCHKDvJ4pFJUdJlGQ0mnGz6ACa0qVnSc+V0hiy1sA==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", + "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-decorators": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", "@babel/plugin-proposal-export-default-from": "^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", "@babel/plugin-proposal-private-methods": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", "@babel/plugin-transform-classes": "^7.12.1", "@babel/plugin-transform-destructuring": "^7.12.1", "@babel/plugin-transform-for-of": "^7.12.1", @@ -37346,98 +34343,74 @@ "@babel/plugin-transform-shorthand-properties": "^7.12.1", "@babel/plugin-transform-spread": "^7.12.1", "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.1", - "@babel/preset-typescript": "^7.12.1", - "@babel/register": "^7.12.1", - "@storybook/addons": "6.1.21", - "@storybook/api": "6.1.21", - "@storybook/channel-postmessage": "6.1.21", - "@storybook/channels": "6.1.21", - "@storybook/client-api": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/components": "6.1.21", - "@storybook/core-events": "6.1.21", - "@storybook/csf": "0.0.1", - "@storybook/node-logger": "6.1.21", - "@storybook/router": "6.1.21", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@storybook/addons": "6.2.9", + "@storybook/api": "6.2.9", + "@storybook/channel-postmessage": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-api": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/components": "6.2.9", + "@storybook/core-common": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/node-logger": "6.2.9", + "@storybook/router": "6.2.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.1.21", - "@storybook/ui": "6.1.21", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", - "@types/node-fetch": "^2.5.4", - "airbnb-js-shims": "^2.2.1", - "ansi-to-html": "^0.6.11", - "autoprefixer": "^9.7.2", - "babel-loader": "^8.0.6", - "babel-plugin-emotion": "^10.0.20", + "@storybook/theming": "6.2.9", + "@storybook/ui": "6.2.9", + "@types/node": "^14.0.10", + "@types/webpack": "^4.41.26", + "autoprefixer": "^9.8.6", + "babel-loader": "^8.2.2", "babel-plugin-macros": "^2.8.0", - "babel-preset-minify": "^0.5.0 || 0.6.0-alpha.5", - "better-opn": "^2.0.0", - "boxen": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.2.0", - "chalk": "^4.0.0", - "cli-table3": "0.6.0", - "commander": "^5.0.0", - "core-js": "^3.0.1", - "cpy": "^8.1.1", - "css-loader": "^3.5.3", - "detect-port": "^1.3.0", - "dotenv-webpack": "^1.7.0", - "ejs": "^3.1.2", - "express": "^4.17.0", - "file-loader": "^6.0.0", - "file-system-cache": "^1.0.5", - "find-up": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^4.1.4", - "fs-extra": "^9.0.0", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "dotenv-webpack": "^1.8.0", + "file-loader": "^6.2.0", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^4.1.6", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", "glob-promise": "^3.4.0", - "global": "^4.3.2", - "html-webpack-plugin": "^4.2.1", - "inquirer": "^7.0.0", - "interpret": "^2.0.0", - "ip": "^1.1.5", - "json5": "^2.1.1", - "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", - "node-fetch": "^2.6.0", - "pkg-dir": "^4.2.0", + "global": "^4.4.0", + "html-webpack-plugin": "^4.0.0", "pnp-webpack-plugin": "1.6.4", - "postcss-flexbugs-fixes": "^4.1.0", - "postcss-loader": "^3.0.0", - "pretty-hrtime": "^1.0.3", - "qs": "^6.6.0", - "raw-loader": "^4.0.1", + "postcss": "^7.0.35", + "postcss-flexbugs-fixes": "^4.2.1", + "postcss-loader": "^4.2.0", + "raw-loader": "^4.0.2", "react-dev-utils": "^11.0.3", - "regenerator-runtime": "^0.13.7", - "resolve-from": "^5.0.0", - "serve-favicon": "^2.5.0", - "shelljs": "^0.8.4", "stable": "^0.1.8", - "style-loader": "^1.2.1", - "telejson": "^5.0.2", - "terser-webpack-plugin": "^3.0.0", + "style-loader": "^1.3.0", + "terser-webpack-plugin": "^3.1.0", "ts-dedent": "^2.0.0", - "unfetch": "^4.1.0", - "url-loader": "^4.0.0", + "url-loader": "^4.1.1", "util-deprecate": "^1.0.2", - "webpack": "^4.44.2", - "webpack-dev-middleware": "^3.7.0", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", "webpack-filter-warnings-plugin": "^1.2.1", "webpack-hot-middleware": "^2.25.0", "webpack-virtual-modules": "^0.2.2" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" } }, "autoprefixer": { @@ -37455,36 +34428,84 @@ "postcss-value-parser": "^4.1.0" } }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + } } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", "dev": true, "requires": { - "color-name": "~1.1.4" + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } }, "html-webpack-plugin": { "version": "4.5.2", @@ -37503,70 +34524,87 @@ "util.promisify": "1.0.0" } }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "is-plain-object": "^2.0.4" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "postcss-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", + "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "lru-cache": "^6.0.0" } } } @@ -37577,11 +34615,400 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + } + } + }, + "@storybook/channel-postmessage": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.2.9.tgz", + "integrity": "sha512-OqV+gLeeCHR0KExsIz0B7gD17Cjd9D+I75qnBsLWM9inWO5kc/WZ5svw8Bvjlcm6snWpvxUaT8L+svuqcPSmww==", + "dev": true, + "requires": { + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^5.1.0" + } + }, + "@storybook/channels": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.2.9.tgz", + "integrity": "sha512-6dC8Fb2ipNyOQXnUZMDeEUaJGH5DMLzyHlGLhVyDtrO5WR6bO8mQdkzf4+5dSKXgCBNX0BSkssXth4pDjn18rg==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-api": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.2.9.tgz", + "integrity": "sha512-aLvEUVkbvv6Qo/2mF4rFCecdqi2CGOUDdsV1a6EFIVS/9gXFdpirsOwKHo9qNjacGdWPlBYGCUcbrw+DvNaSFA==", + "dev": true, + "requires": { + "@storybook/addons": "6.2.9", + "@storybook/channel-postmessage": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/csf": "0.0.1", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "stable": "^0.1.8", + "store2": "^2.12.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.2.9.tgz", + "integrity": "sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.2.9.tgz", + "integrity": "sha512-hnV1MI2aB2g1sJ7NJphpxi7TwrMZQ/tpCJeHnkjmzyC6ez1MXqcBXGrEEdSXzRfAxjQTOEpu6H1mnns0xMP0Ag==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.2.9", + "@storybook/csf": "0.0.1", + "@storybook/theming": "6.2.9", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^7.1.0", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.0.1", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.2.9.tgz", + "integrity": "sha512-pzbyjWvj0t8m0kR2pC9GQne4sZn7Y/zfcbm6/31CL+yhzOQjfJEj3n4ZFUlxikXqQJPg1aWfypfyaeaLL0QyuA==", + "dev": true, + "requires": { + "@storybook/core-client": "6.2.9", + "@storybook/core-server": "6.2.9" + } + }, + "@storybook/core-client": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.2.9.tgz", + "integrity": "sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA==", + "dev": true, + "requires": { + "@storybook/addons": "6.2.9", + "@storybook/channel-postmessage": "6.2.9", + "@storybook/client-api": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/csf": "0.0.1", + "@storybook/ui": "6.2.9", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-common": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.2.9.tgz", + "integrity": "sha512-ve0Qb4EMit8jGibfZBprmaU2i4LtpB4vSMIzD9nB1YeBmw2cGhHubtmayZ0TwcV3fPQhtYH9wwRWuWyzzHyQyw==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.2.9", + "@storybook/semver": "^7.3.2", + "@types/glob-base": "^0.3.0", + "@types/micromatch": "^4.0.1", + "@types/node": "^14.0.10", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.2.2", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "glob": "^7.1.6", + "glob-base": "^0.3.0", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "micromatch": "^4.0.2", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@storybook/core-events": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.2.9.tgz", + "integrity": "sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/core-server": { + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.2.9.tgz", + "integrity": "sha512-DzihO73pj1Ro0Y4tq9hjw2mLMUYeSRPrx7CndCOBxcTHCKQ8Kd7Dee3wJ49t5/19V7TW1+4lYR59GAy73FeOAQ==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@storybook/addons": "6.2.9", + "@storybook/builder-webpack4": "6.2.9", + "@storybook/core-client": "6.2.9", + "@storybook/core-common": "6.2.9", + "@storybook/node-logger": "6.2.9", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.2.9", + "@storybook/ui": "6.2.9", + "@types/node": "^14.0.10", + "@types/node-fetch": "^2.5.7", + "@types/pretty-hrtime": "^1.0.0", + "@types/webpack": "^4.41.26", + "airbnb-js-shims": "^2.2.1", + "babel-loader": "^8.2.2", + "better-opn": "^2.1.1", + "boxen": "^4.2.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chalk": "^4.1.0", + "cli-table3": "0.6.0", + "commander": "^6.2.1", + "core-js": "^3.8.2", + "cpy": "^8.1.1", + "css-loader": "^3.6.0", + "detect-port": "^1.3.0", + "dotenv-webpack": "^1.8.0", + "express": "^4.17.1", + "file-loader": "^6.2.0", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fs-extra": "^9.0.1", + "global": "^4.4.0", + "html-webpack-plugin": "^4.0.0", + "ip": "^1.1.5", + "node-fetch": "^2.6.1", + "pnp-webpack-plugin": "1.6.4", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "serve-favicon": "^2.5.0", + "style-loader": "^1.3.0", + "telejson": "^5.1.0", + "terser-webpack-plugin": "^3.1.0", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-virtual-modules": "^0.2.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + } }, "style-loader": { "version": "1.3.0", @@ -37613,27 +35040,10 @@ "dev": true, "requires": { "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - } } } } }, - "@storybook/core-events": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.1.21.tgz", - "integrity": "sha512-KWqnh1C7M1pT//WfQb3AD60yTR8jL48AfaeLGto2gO9VK7VVgj/EGsrXZP/GTL90ygyExbbBI5gkr7EBTu/HYw==", - "dev": true, - "requires": { - "core-js": "^3.0.1" - } - }, "@storybook/csf": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", @@ -37644,14 +35054,14 @@ } }, "@storybook/node-logger": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.1.21.tgz", - "integrity": "sha512-wQZZw4n1PG3kGOsczWCBC6+8RagYkrGYDqsVOpUcs5shGbPg5beCXDuzP4nxz2IlsoP9ZtTSaX741H791OIOjA==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.2.9.tgz", + "integrity": "sha512-ryRBChWZf1A5hOVONErJZosS25IdMweoMVFAUAcj91iC0ynoSA6YL2jmoE71jQchxEXEgkDeRkX9lR/GlqFGZQ==", "dev": true, "requires": { "@types/npmlog": "^4.1.2", - "chalk": "^4.0.0", - "core-js": "^3.0.1", + "chalk": "^4.1.0", + "core-js": "^3.8.2", "npmlog": "^4.1.2", "pretty-hrtime": "^1.0.3" }, @@ -37666,30 +35076,15 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -37708,46 +35103,52 @@ } }, "@storybook/react": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.1.21.tgz", - "integrity": "sha512-j3gq/ssWxRCCH5iCHbP3ihXSGS7lVWh1HpmBmGbbhHGHgdmSPsRjwDXiQGE81EmE7bzbC8NECBhU3zHJ6h1TvA==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.2.9.tgz", + "integrity": "sha512-glvw+o/Vek2oapYIXCYDK6gm3cuSnx0XdOpiJVcXk3KLb8JfLbdzGYYp6dcWUbyOBqGcGFRpXIgMmkcwgn+fvQ==", "dev": true, "requires": { "@babel/preset-flow": "^7.12.1", - "@babel/preset-react": "^7.12.1", - "@pmmmwh/react-refresh-webpack-plugin": "^0.4.2", - "@storybook/addons": "6.1.21", - "@storybook/core": "6.1.21", - "@storybook/node-logger": "6.1.21", + "@babel/preset-react": "^7.12.10", + "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", + "@storybook/addons": "6.2.9", + "@storybook/core": "6.2.9", + "@storybook/core-common": "6.2.9", + "@storybook/node-logger": "6.2.9", "@storybook/semver": "^7.3.2", - "@types/webpack-env": "^1.15.3", + "@types/webpack-env": "^1.16.0", "babel-plugin-add-react-displayname": "^0.0.5", "babel-plugin-named-asset-import": "^0.3.1", "babel-plugin-react-docgen": "^4.2.1", - "core-js": "^3.0.1", - "global": "^4.3.2", - "lodash": "^4.17.15", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", "prop-types": "^15.7.2", "react-dev-utils": "^11.0.3", "react-docgen-typescript-plugin": "^0.6.2", "react-refresh": "^0.8.3", + "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", - "webpack": "^4.44.2" + "webpack": "4" } }, "@storybook/router": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.1.21.tgz", - "integrity": "sha512-m75WvUhoCBWDVekICAdbkidji/w5hCjHo+M8L13UghpwXWEnyr4/QqvkOb/PcSC8aZzxeMqSCpRQ1o6LWULneg==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.2.9.tgz", + "integrity": "sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg==", "dev": true, "requires": { - "@reach/router": "^1.3.3", + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.2.9", "@types/reach__router": "^1.3.7", - "core-js": "^3.0.1", - "global": "^4.3.2", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", "memoizerific": "^1.11.3", - "qs": "^6.6.0" + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" } }, "@storybook/semver": { @@ -37758,64 +35159,105 @@ "requires": { "core-js": "^3.6.5", "find-up": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } } }, "@storybook/theming": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.1.21.tgz", - "integrity": "sha512-yq7+/mpdljRdSRJYw/In/9tnDGXIUDe//mhyMftFfrB2mq6zi1yAZpowCerWhiDE2ipGkrfzIYx/Sn7bcaXgqg==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.2.9.tgz", + "integrity": "sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA==", "dev": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", - "@emotion/styled": "^10.0.23", - "@storybook/client-logger": "6.1.21", - "core-js": "^3.0.1", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.2.9", + "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", - "emotion-theming": "^10.0.19", - "global": "^4.3.2", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", "memoizerific": "^1.11.3", - "polished": "^3.4.4", + "polished": "^4.0.5", "resolve-from": "^5.0.0", "ts-dedent": "^2.0.0" } }, "@storybook/ui": { - "version": "6.1.21", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.1.21.tgz", - "integrity": "sha512-2nRb5egnSBKbosuR7g5PsuM4XnRLXZUf7TBjwT6eRlomnE2wrWM5DtTLpFeUpDob0SI5hPlOV1xCpPz3XmeyyA==", + "version": "6.2.9", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.2.9.tgz", + "integrity": "sha512-jq2xmw3reIqik/6ibUSbNKGR+Xvr9wkAEwexiOl+5WQ5BeYJpw4dmDmsFQf+SQuWaSEUUPolbzkakRQM778Kdg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.1.21", - "@storybook/api": "6.1.21", - "@storybook/channels": "6.1.21", - "@storybook/client-logger": "6.1.21", - "@storybook/components": "6.1.21", - "@storybook/core-events": "6.1.21", - "@storybook/router": "6.1.21", + "@storybook/addons": "6.2.9", + "@storybook/api": "6.2.9", + "@storybook/channels": "6.2.9", + "@storybook/client-logger": "6.2.9", + "@storybook/components": "6.2.9", + "@storybook/core-events": "6.2.9", + "@storybook/router": "6.2.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.1.21", - "@types/markdown-to-jsx": "^6.11.0", - "copy-to-clipboard": "^3.0.8", - "core-js": "^3.0.1", - "core-js-pure": "^3.0.1", - "downshift": "^6.0.6", - "emotion-theming": "^10.0.19", + "@storybook/theming": "6.2.9", + "@types/markdown-to-jsx": "^6.11.3", + "copy-to-clipboard": "^3.3.1", + "core-js": "^3.8.2", + "core-js-pure": "^3.8.2", + "downshift": "^6.0.15", + "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", - "global": "^4.3.2", - "lodash": "^4.17.15", + "global": "^4.4.0", + "lodash": "^4.17.20", "markdown-to-jsx": "^6.11.4", "memoizerific": "^1.11.3", - "polished": "^3.4.4", - "qs": "^6.6.0", - "react-draggable": "^4.0.3", - "react-helmet-async": "^1.0.2", - "react-hotkeys": "2.0.0", - "react-sizeme": "^2.6.7", + "polished": "^4.0.5", + "qs": "^6.10.0", + "react-draggable": "^4.4.3", + "react-helmet-async": "^1.0.7", + "react-sizeme": "^3.0.1", "regenerator-runtime": "^0.13.7", "resolve-from": "^5.0.0", - "store2": "^2.7.1" + "store2": "^2.12.0" + }, + "dependencies": { + "markdown-to-jsx": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", + "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", + "dev": true, + "requires": { + "prop-types": "^15.6.2", + "unquote": "^1.1.0" + } + } } }, "@svgr/babel-plugin-add-jsx-attribute": { @@ -37893,15 +35335,6 @@ "cosmiconfig": "^5.2.1" }, "dependencies": { - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -37974,15 +35407,6 @@ "svgo": "^1.2.2" }, "dependencies": { - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -38092,6 +35516,21 @@ "integrity": "sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw==", "dev": true }, + "@types/color-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz", + "integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==", + "dev": true, + "requires": { + "@types/color-name": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/component-emitter": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", @@ -38201,27 +35640,33 @@ } }, "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", "dev": true }, "@types/node": { - "version": "14.14.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", - "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", + "version": "14.14.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.43.tgz", + "integrity": "sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ==", "dev": true }, "@types/node-fetch": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.8.tgz", - "integrity": "sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz", + "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==", "dev": true, "requires": { "@types/node": "*", "form-data": "^3.0.0" } }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, "@types/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.2.tgz", @@ -38240,6 +35685,12 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/pretty-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz", + "integrity": "sha512-xl+5r2rcrxdLViAYkkiLMYsoUs3qEyrAnHFyEzYysgRxdVp3WbhysxIvJIxZp9FvZ2CYezh0TaHZorivH+voOQ==", + "dev": true + }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -38268,9 +35719,9 @@ } }, "@types/react": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz", - "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==", + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.4.tgz", + "integrity": "sha512-onz2BqScSFMoTRdJUZUDD/7xrusM8hBA2Fktk2qgaTYPCgPvWnDEgkrOs8hhPUf2jfcIXkJ5yK6VfYormJS3Jw==", "dev": true, "requires": { "@types/prop-types": "*", @@ -38279,36 +35730,17 @@ }, "dependencies": { "csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==", "dev": true } } }, - "@types/react-color": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.4.tgz", - "integrity": "sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw==", - "dev": true, - "requires": { - "@types/react": "*", - "@types/reactcss": "*" - } - }, "@types/react-syntax-highlighter": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz", - "integrity": "sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/reactcss": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.3.tgz", - "integrity": "sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz", + "integrity": "sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==", "dev": true, "requires": { "@types/react": "*" @@ -38333,9 +35765,9 @@ "dev": true }, "@types/tapable": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", - "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz", + "integrity": "sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==", "dev": true }, "@types/uglify-js": { @@ -38362,14 +35794,14 @@ "dev": true }, "@types/webpack": { - "version": "4.41.26", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", - "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", + "version": "4.41.27", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.27.tgz", + "integrity": "sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA==", "dev": true, "requires": { "@types/anymatch": "*", "@types/node": "*", - "@types/tapable": "*", + "@types/tapable": "^1", "@types/uglify-js": "*", "@types/webpack-sources": "*", "source-map": "^0.6.0" @@ -38415,6 +35847,18 @@ "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, "@typescript-eslint/experimental-utils": { "version": "2.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", @@ -38425,18 +35869,18 @@ "@typescript-eslint/typescript-estree": "2.34.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - } + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" } }, "@typescript-eslint/typescript-estree": { @@ -38684,10 +36128,9 @@ } }, "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-globals": { "version": "4.3.4", @@ -38708,23 +36151,10 @@ } }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "peer": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "peer": true - } - } + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true }, "acorn-node": { "version": "1.8.2", @@ -38736,11 +36166,6 @@ "xtend": "^4.0.2" }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -38827,41 +36252,28 @@ } }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "peer": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - }, - "dependencies": { - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true, - "peer": true - } + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true, - "peer": true, - "requires": {} + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -39065,18 +36477,18 @@ } }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true } } @@ -39189,6 +36601,21 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + } } }, "ansi-to-html": { @@ -39272,12 +36699,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -39330,6 +36751,32 @@ "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "argparse": { @@ -39555,9 +37002,9 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true } } @@ -39575,9 +37022,9 @@ "dev": true }, "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", "dev": true }, "async-each": { @@ -39633,13 +37080,30 @@ "caniuse-lite": "^1.0.30000792", "electron-to-chromium": "^1.3.30" } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, "aws-sdk": { - "version": "2.870.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.870.0.tgz", - "integrity": "sha512-pbNO+RuEx45aaEZind0Tl9NADxncLJf0mRAwof0szyYMB+FZm165yz7FCxFLumU4R9qw8vOG5YFACBaNoQkJdg==", + "version": "2.899.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.899.0.tgz", + "integrity": "sha512-k8jSANDQGvTyyj1f/7Hj4SWaV61/gjj/BopRmavAr6n1ayjXtUeVrV8G29+ABD3V82pHXDqLq47bqNmZ9m86xQ==", "dev": true, "requires": { "buffer": "4.9.2", @@ -39666,9 +37130,9 @@ "dev": true }, "axe-core": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz", - "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.0.tgz", + "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==", "dev": true }, "axobject-query": { @@ -39688,12 +37152,6 @@ "js-tokens": "^3.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -39719,15 +37177,6 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -39736,74 +37185,6 @@ } } }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "peer": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.0.0" - } - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true, - "peer": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "peer": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true, - "peer": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "peer": true - } - } - }, "babel-eslint": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", @@ -39827,92 +37208,6 @@ "babylon": "^6.18.0" } }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "peer": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true, - "peer": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "peer": true - } - } - }, - "babel-helper-evaluate-path": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", - "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", - "dev": true - }, - "babel-helper-flip-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", - "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", - "dev": true - }, - "babel-helper-is-nodes-equiv": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", - "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", - "dev": true - }, - "babel-helper-is-void-0": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", - "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", - "dev": true - }, - "babel-helper-mark-eval-scopes": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", - "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", - "dev": true - }, - "babel-helper-remove-or-void": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", - "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", - "dev": true - }, - "babel-helper-to-multiple-sequence-expressions": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", - "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", - "dev": true - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "peer": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, "babel-jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", @@ -39951,6 +37246,25 @@ "pkg-dir": "^4.1.0" } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -39959,19 +37273,27 @@ "requires": { "semver": "^6.0.0" } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } } } }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "peer": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, "babel-plugin-add-react-displayname": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz", @@ -40005,6 +37327,30 @@ "source-map": "^0.5.7" }, "dependencies": { + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -40052,6 +37398,12 @@ "requires": { "p-limit": "^2.0.0" } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true } } }, @@ -40065,159 +37417,50 @@ } }, "babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.0.1.tgz", + "integrity": "sha512-CKt4+Oy9k2wiN+hT1uZzOw7d8zb1anbQpf7KLwaaXRCi/4pzKdFKHf7v5mvoPmjkmxshh7eKZQuRop06r5WP4w==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "babel-plugin-minify-builtins": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", - "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", - "dev": true - }, - "babel-plugin-minify-constant-folding": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", - "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "babel-plugin-minify-dead-code-elimination": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", - "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-mark-eval-scopes": "^0.4.3", - "babel-helper-remove-or-void": "^0.4.3", - "lodash": "^4.17.11" - } - }, - "babel-plugin-minify-flip-comparisons": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", - "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", - "dev": true, - "requires": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "babel-plugin-minify-guarded-expressions": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", - "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3" - } - }, - "babel-plugin-minify-infinity": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", - "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", - "dev": true - }, - "babel-plugin-minify-mangle-names": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", - "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", - "dev": true, - "requires": { - "babel-helper-mark-eval-scopes": "^0.4.3" - } - }, - "babel-plugin-minify-numeric-literals": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", - "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", - "dev": true - }, - "babel-plugin-minify-replace": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", - "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", - "dev": true - }, - "babel-plugin-minify-simplify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", - "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3", - "babel-helper-is-nodes-equiv": "^0.0.1", - "babel-helper-to-multiple-sequence-expressions": "^0.5.0" - } - }, - "babel-plugin-minify-type-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", - "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", - "dev": true, - "requires": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "babel-plugin-module-resolver": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", - "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", - "dev": true, - "peer": true, - "requires": { - "find-babel-config": "^1.1.0", - "glob": "^7.1.2", - "pkg-up": "^2.0.0", - "reselect": "^3.0.1", - "resolve": "^1.4.0" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" } }, "babel-plugin-named-asset-import": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz", "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==", - "dev": true, - "requires": {} + "dev": true }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.2.0" } }, "babel-plugin-react-docgen": { @@ -40254,30 +37497,6 @@ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, - "babel-plugin-transform-inline-consecutive-adds": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", - "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", - "dev": true - }, - "babel-plugin-transform-member-expression-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", - "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", - "dev": true - }, - "babel-plugin-transform-merge-sibling-variables": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", - "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", - "dev": true - }, - "babel-plugin-transform-minify-booleans": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", - "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", - "dev": true - }, "babel-plugin-transform-object-rest-spread": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", @@ -40288,60 +37507,12 @@ "babel-runtime": "^6.26.0" } }, - "babel-plugin-transform-property-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", - "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", "dev": true }, - "babel-plugin-transform-regexp-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", - "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", - "dev": true - }, - "babel-plugin-transform-remove-console": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", - "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", - "dev": true - }, - "babel-plugin-transform-remove-debugger": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", - "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", - "dev": true - }, - "babel-plugin-transform-remove-undefined": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", - "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "babel-plugin-transform-simplify-comparison-operators": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", - "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", - "dev": true - }, - "babel-plugin-transform-undefined-to-void": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", - "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", - "dev": true - }, "babel-preset-jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", @@ -40352,37 +37523,6 @@ "babel-plugin-jest-hoist": "^24.9.0" } }, - "babel-preset-minify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", - "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", - "dev": true, - "requires": { - "babel-plugin-minify-builtins": "^0.5.0", - "babel-plugin-minify-constant-folding": "^0.5.0", - "babel-plugin-minify-dead-code-elimination": "^0.5.1", - "babel-plugin-minify-flip-comparisons": "^0.4.3", - "babel-plugin-minify-guarded-expressions": "^0.4.4", - "babel-plugin-minify-infinity": "^0.4.3", - "babel-plugin-minify-mangle-names": "^0.5.0", - "babel-plugin-minify-numeric-literals": "^0.4.3", - "babel-plugin-minify-replace": "^0.5.0", - "babel-plugin-minify-simplify": "^0.5.1", - "babel-plugin-minify-type-constructors": "^0.4.3", - "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", - "babel-plugin-transform-member-expression-literals": "^6.9.4", - "babel-plugin-transform-merge-sibling-variables": "^6.9.4", - "babel-plugin-transform-minify-booleans": "^6.9.4", - "babel-plugin-transform-property-literals": "^6.9.4", - "babel-plugin-transform-regexp-constructors": "^0.4.3", - "babel-plugin-transform-remove-console": "^6.9.4", - "babel-plugin-transform-remove-debugger": "^6.9.4", - "babel-plugin-transform-remove-undefined": "^0.5.0", - "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", - "babel-plugin-transform-undefined-to-void": "^6.9.4", - "lodash": "^4.17.11" - } - }, "babel-preset-react-app": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz", @@ -40601,6 +37741,30 @@ "regenerator-runtime": "^0.13.4" } }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -40615,48 +37779,6 @@ } } }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "peer": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true, - "peer": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "peer": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "peer": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -40678,86 +37800,6 @@ } } }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "peer": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "peer": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "peer": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "peer": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "peer": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true, - "peer": true - } - } - }, "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", @@ -40770,9 +37812,9 @@ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base": { "version": "0.11.2", @@ -40887,6 +37929,21 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } } } }, @@ -41006,21 +38063,6 @@ "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -41076,6 +38118,28 @@ "through2": "^2.0.0" }, "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -41196,6 +38260,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } } } }, @@ -41209,15 +38282,15 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^1.1.71" } }, "bser": { @@ -41365,22 +38438,12 @@ } }, "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, - "peer": true, "requires": { - "callsites": "^0.2.0" - }, - "dependencies": { - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true, - "peer": true - } + "caller-callsite": "^2.0.0" } }, "callsites": { @@ -41423,9 +38486,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001204", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", - "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==" + "version": "1.0.30001221", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001221.tgz", + "integrity": "sha512-b9TOZfND3uGSLjMOrLh8XxSQ41x8mX+9MLJYDM4AAHLfaZHttrLNPrScWjVnBITRZbY5sPpCt7X85n7VSLZ+/g==" }, "capture-exit": { "version": "2.0.0", @@ -41533,9 +38596,9 @@ }, "dependencies": { "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -41617,13 +38680,10 @@ "dev": true }, "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "ci-info": { "version": "2.0.0", @@ -41645,15 +38705,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true, - "peer": true + "dev": true }, "class-utils": { "version": "0.3.6", @@ -41683,6 +38735,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-data-descriptor": { @@ -41692,6 +38755,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-descriptor": { @@ -41703,22 +38777,20 @@ "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "clean-css": { "version": "4.2.3", @@ -41825,23 +38897,14 @@ } }, "clone-deep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz", - "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { - "for-own": "^1.0.0", "is-plain-object": "^2.0.4", - "kind-of": "^5.0.0", - "shallow-clone": "^1.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" } }, "clsx": { @@ -41873,9 +38936,9 @@ "dev": true }, "codemirror": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.60.0.tgz", - "integrity": "sha512-AEL7LhFOlxPlCL8IdTcJDblJm8yrAGib7I+DErJPdZd4l6imx8IMgKK3RblVgBQqz3TZJR4oknQ03bz+uNjBYA==" + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.61.0.tgz", + "integrity": "sha512-D3wYH90tYY1BsKlUe0oNj2JAhQ9TepkD51auk3N7q+4uz7A/cgJ5JsWHreT0PqieW1QhOuqxQ2reCXV1YXzecg==" }, "collection-visit": { "version": "1.0.0", @@ -41894,20 +38957,35 @@ "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.4" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + } } }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "color-string": { "version": "1.5.5", @@ -41948,6 +39026,21 @@ "color-convert": "^1.9.1", "color-string": "^1.5.2" } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true } } }, @@ -42078,6 +39171,30 @@ "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "confusing-browser-globals": { @@ -42201,31 +39318,6 @@ "webpack-log": "^2.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -42240,18 +39332,18 @@ } }, "core-js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", - "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.11.2.tgz", + "integrity": "sha512-3tfrrO1JpJSYGKnd9LKTBPqgUES/UYiCzMKeqwR1+jF16q4kD1BY2NvqkfuzXwQ6+CIWm55V9cjD7PQd+hijdw==", "dev": true }, "core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.11.2.tgz", + "integrity": "sha512-gYhNwu7AJjecNtRrIfyoBabQ3ZG+llfPmg9BifIX8yxIpDyfNLRM73zIjINSm6z3dMdI1nwNC9C7uiy4pIC6cw==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.16.6", "semver": "7.0.0" }, "dependencies": { @@ -42264,9 +39356,9 @@ } }, "core-js-pure": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz", - "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.11.2.tgz", + "integrity": "sha512-DQxdEKm+zFsnON7ZGOgUAQXBt1UJJ01tOzN/HgQ7cNf0oEHW1tcBLfCQQd1q6otdLu5gAdvKYxKHAoXGwE/kiQ==", "dev": true }, "core-util-is": { @@ -42275,16 +39367,16 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" } }, "country-data": { @@ -42408,12 +39500,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -42508,43 +39594,22 @@ } }, "cross-fetch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz", - "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", "requires": { "node-fetch": "2.6.1" } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "peer": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "peer": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true, - "peer": true - } + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "crypto-browserify": { @@ -42602,34 +39667,6 @@ "dev": true, "requires": { "postcss": "^7.0.5" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "css-color-names": { @@ -42646,34 +39683,6 @@ "requires": { "postcss": "^7.0.1", "timsort": "^0.3.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "css-has-pseudo": { @@ -42692,17 +39701,6 @@ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -42713,21 +39711,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -42752,37 +39735,11 @@ "semver": "^6.3.0" }, "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -42793,34 +39750,6 @@ "dev": true, "requires": { "postcss": "^7.0.5" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "css-select": { @@ -42882,26 +39811,17 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", "dev": true, "requires": { "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", + "cssnano-preset-default": "^4.0.8", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" }, "dependencies": { - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -42934,44 +39854,18 @@ "json-parse-better-errors": "^1.0.1" } }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", "dev": true, "requires": { "css-declaration-sorter": "^4.0.1", @@ -43002,36 +39896,8 @@ "postcss-ordered-values": "^4.1.2", "postcss-reduce-initial": "^4.0.3", "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", + "postcss-svgo": "^4.0.3", "postcss-unique-selectors": "^4.0.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "cssnano-util-get-arguments": { @@ -43053,34 +39919,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "cssnano-util-same-parent": { @@ -43099,9 +39937,9 @@ }, "dependencies": { "css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "requires": { "mdn-data": "2.0.14", @@ -43138,9 +39976,9 @@ } }, "csstype": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz", - "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==", + "version": "2.6.17", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", + "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==", "dev": true }, "currency-symbol-map": { @@ -43299,9 +40137,9 @@ } }, "date-fns": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz", - "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==" + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.1.tgz", + "integrity": "sha512-m1WR0xGiC6j6jNFAyW4Nvh4WxAi4JF4w9jRJwSI8nBmNcyZXPcP9VUQG+6gHQXAmqaGEKDKhOqAtENDC941UkA==" }, "date-now": { "version": "0.1.4", @@ -43387,6 +40225,12 @@ "integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -43532,16 +40376,6 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "peer": true, - "requires": { - "repeating": "^2.0.0" - } - }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -43718,18 +40552,19 @@ } }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { - "esutils": "^2.0.2" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } }, "dom-align": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz", - "integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA==" + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.1.tgz", + "integrity": "sha512-CdTD9EdA5WviP8oO3n+okOm0Xt7dSuWxRTLcJiW0memwUr3Tvz66JDDCh9cb50IZFHXvBmLoyX454uJU/EVg+g==" }, "dom-converter": { "version": "0.2.0", @@ -43741,18 +40576,18 @@ } }, "dom-helpers": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", - "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "requires": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" }, "dependencies": { "csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" } } }, @@ -43766,9 +40601,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" }, "entities": { "version": "2.2.0", @@ -43850,9 +40685,9 @@ } }, "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true } } @@ -43905,15 +40740,15 @@ } }, "downshift": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.1.tgz", - "integrity": "sha512-ch8Sh/j7gVqQd7Kcv3A5TkGfldmxmlQrRPZJYWEhzh24+h7WA4vXssuhcGNJrD8YPJlZYQGHcaX8BNhS0IcOvg==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.3.tgz", + "integrity": "sha512-RA1MuaNcTbt0j+sVLhSs8R2oZbBXYAtdQP/V+uHhT3DoDteZzJPjlC+LQVm9T07Wpvo84QXaZtUCePLDTDwGXg==", "dev": true, "requires": { - "@babel/runtime": "^7.12.5", + "@babel/runtime": "^7.13.10", "compute-scroll-into-view": "^1.0.17", "prop-types": "^15.7.2", - "react-is": "^17.0.1" + "react-is": "^17.0.2" } }, "duplexer": { @@ -43928,6 +40763,30 @@ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "requires": { "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "duplexify": { @@ -43940,6 +40799,32 @@ "inherits": "^2.0.1", "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "ecc-jsbn": { @@ -43959,18 +40844,15 @@ "dev": true }, "ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", - "dev": true, - "requires": { - "jake": "^10.6.1" - } + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true }, "electron-to-chromium": { - "version": "1.3.698", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.698.tgz", - "integrity": "sha512-VEXDzYblnlT+g8Q3gedwzgKOso1evkeJzV8lih7lV8mL8eAnGVnKyC3KsFT6S+R5PQO4ffdr1PI16/ElibY/kQ==" + "version": "1.3.726", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.726.tgz", + "integrity": "sha512-dw7WmrSu/JwtACiBzth8cuKf62NKL1xVJuNvyOg0jvruN/n4NLtGYoTzciQquCPNaS2eR+BT5GrxHbslfc/w1w==" }, "element-resize-detector": { "version": "1.2.2", @@ -44060,9 +40942,9 @@ } }, "engine.io-client": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.2.tgz", - "integrity": "sha512-1mwvwKYMa0AaCy+sPgvJ/SnKyO5MJZ1HEeXfA3Rm/KHkHGiYD5bQVq8QzvIrkI01FuVtOdZC5lWdRw1BGXB2NQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.3.tgz", + "integrity": "sha512-C3JYYyvna0FvSKOWGWpo0/EQ6MayO8uEKam1oedLZRpxLego9Fk6K3UH/Phieu1xPHauM7YqAygJ+6SraVc0Qg==", "requires": { "base64-arraybuffer": "0.1.4", "component-emitter": "~1.3.0", @@ -44077,10 +40959,9 @@ }, "dependencies": { "ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", - "requires": {} + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==" } } }, @@ -44112,6 +40993,30 @@ "errno": "^0.1.3", "readable-stream": "^2.0.1" } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, @@ -44303,196 +41208,162 @@ } }, "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, - "peer": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", + "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", + "optionator": "^0.8.3", "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "peer": true - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true, - "peer": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "peer": true, "requires": { - "restore-cursor": "^2.0.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "peer": true - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, "requires": { - "ms": "^2.1.1" + "esutils": "^2.0.2" } }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, - "peer": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "eslint-visitor-keys": "^1.1.0" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "peer": true, "requires": { - "escape-string-regexp": "^1.0.5" + "is-glob": "^4.0.1" } }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, - "peer": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "type-fest": "^0.8.1" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "peer": true + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "peer": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true, - "peer": true - }, - "onetime": { + "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, - "peer": true, "requires": { - "mimic-fn": "^1.0.0" + "shebang-regex": "^1.0.0" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, - "peer": true, "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "ansi-regex": "^4.1.0" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "peer": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "isexe": "^2.0.0" } } } @@ -44515,6 +41386,15 @@ "eslint-restricted-globals": "^0.1.1" } }, + "eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, "eslint-import-resolver-babel-module": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/eslint-import-resolver-babel-module/-/eslint-import-resolver-babel-module-4.0.0.tgz", @@ -44552,6 +41432,47 @@ } } }, + "eslint-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", + "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "loader-fs-cache": "^1.0.2", + "loader-utils": "^1.2.3", + "object-hash": "^2.0.1", + "schema-utils": "^2.6.1" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, "eslint-module-utils": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", @@ -44620,6 +41541,12 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -44631,6 +41558,15 @@ } } }, + "eslint-plugin-flowtype": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", + "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, "eslint-plugin-import": { "version": "2.22.1", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", @@ -44661,14 +41597,23 @@ "ms": "2.0.0" } }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "ms": { @@ -44676,6 +41621,72 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } } } }, @@ -44699,9 +41710,9 @@ } }, "eslint-plugin-react": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.1.tgz", - "integrity": "sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz", + "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==", "dev": true, "requires": { "array-includes": "^3.1.3", @@ -44718,6 +41729,15 @@ "string.prototype.matchall": "^4.0.4" }, "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "resolve": { "version": "2.0.0-next.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", @@ -44734,8 +41754,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", - "dev": true, - "requires": {} + "dev": true }, "eslint-restricted-globals": { "version": "0.1.1", @@ -44744,13 +41763,12 @@ "dev": true }, "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "peer": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, @@ -44770,14 +41788,14 @@ "dev": true }, "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, - "peer": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -44900,11 +41918,41 @@ "which": "^1.2.9" } }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -44958,6 +42006,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-data-descriptor": { @@ -44967,6 +42026,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-descriptor": { @@ -44978,16 +42048,14 @@ "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } } }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -45160,11 +42228,6 @@ "object-keys": "^1.0.6" }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -45296,9 +42359,9 @@ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, "fecha": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", + "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==", "dev": true }, "figgy-pudding": { @@ -45317,14 +42380,12 @@ } }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, - "peer": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^2.0.1" } }, "file-loader": { @@ -45337,31 +42398,6 @@ "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -45427,15 +42463,6 @@ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "dev": true }, - "filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "filesize": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", @@ -45486,26 +42513,6 @@ } } }, - "find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", - "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", - "dev": true, - "peer": true, - "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true, - "peer": true - } - } - }, "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -45545,6 +42552,12 @@ "p-limit": "^2.0.0" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -45563,21 +42576,13 @@ "dev": true }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" - }, - "dependencies": { - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } } }, "findup-sync": { @@ -45621,12 +42626,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -45651,16 +42650,14 @@ } }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, - "peer": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" }, "dependencies": { "rimraf": { @@ -45668,7 +42665,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, - "peer": true, "requires": { "glob": "^7.1.3" } @@ -45701,6 +42697,32 @@ "requires": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "flux": { @@ -45719,9 +42741,9 @@ "dev": true }, "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", + "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==", "dev": true }, "for-in": { @@ -45731,9 +42753,9 @@ "dev": true }, "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "^1.0.1" @@ -45751,80 +42773,106 @@ "dev": true }, "fork-ts-checker-webpack-plugin": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", - "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.6.tgz", + "integrity": "sha512-f/oF2BFFPKEWQ3wgfq4bWALSDm7+f21shVONplo1xHKs1IdMfdmDa/aREgEurkIyrsyMFed42W7NVp4mh4DXzg==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" }, "dependencies": { - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "color-convert": "^2.0.1" } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "yallist": "^4.0.0" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -45875,6 +42923,32 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "fs-extra": { @@ -45898,6 +42972,12 @@ "minipass": "^3.0.0" } }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -45979,12 +43059,6 @@ "wide-align": "^1.1.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -46004,15 +43078,6 @@ "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } } } }, @@ -46183,11 +43248,14 @@ "which": "^1.3.1" }, "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -46292,32 +43360,12 @@ "requires": { "ajv": "^6.12.3", "har-schema": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } } }, "harmony-reflect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", - "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", "dev": true }, "has": { @@ -46451,6 +43499,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } } } }, @@ -46496,9 +43553,9 @@ "dev": true }, "highlight.js": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.1.tgz", - "integrity": "sha512-S6G97tHGqJ/U8DsXcEdnACbirtbx58Bx9CzIVeYli8OuswCfYI/LsXH2EiGcoGio1KAC3x4mmUwulOllJ2ZyRA==" + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", + "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==" }, "history": { "version": "4.10.1", @@ -46539,17 +43596,6 @@ } } }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "peer": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -46566,9 +43612,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "hpack.js": { @@ -46581,6 +43627,32 @@ "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "hsl-regex": { @@ -46595,12 +43667,6 @@ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", "dev": true }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -46681,9 +43747,9 @@ } }, "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true } } @@ -46756,27 +43822,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } }, @@ -46865,12 +43910,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -46927,34 +43966,6 @@ "dev": true, "requires": { "postcss": "^7.0.14" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "identity-obj-proxy": { @@ -47077,6 +44088,12 @@ "p-limit": "^2.0.0" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -47103,7 +44120,8 @@ "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true }, "infer-owner": { "version": "1.0.4", @@ -47174,30 +44192,15 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -47290,14 +44293,6 @@ "dev": true, "requires": { "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } } }, "is-alphabetical": { @@ -47390,9 +44385,9 @@ } }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", "requires": { "has": "^1.0.3" } @@ -47404,14 +44399,6 @@ "dev": true, "requires": { "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } } }, "is-date-object": { @@ -47434,14 +44421,6 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } } }, "is-directory": { @@ -47451,9 +44430,9 @@ "dev": true }, "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extendable": { @@ -47468,13 +44447,6 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true, - "peer": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -47527,6 +44499,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-number-object": { @@ -47625,15 +44608,6 @@ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "dev": true }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -47776,18 +44750,6 @@ "iterate-iterator": "^1.0.1" } }, - "jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", - "dev": true, - "requires": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - } - }, "jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", @@ -47881,6 +44843,12 @@ "p-limit": "^2.0.0" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -47996,12 +44964,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -48234,12 +45196,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -48354,12 +45310,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -48396,8 +45346,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} + "dev": true }, "jest-regex-util": { "version": "24.9.0", @@ -48538,6 +45487,12 @@ "p-limit": "^2.0.0" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -48820,6 +45775,12 @@ "xml-name-validator": "^3.0.0" }, "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -48847,18 +45808,6 @@ "minimatch": "~3.0.2", "shelljs": "0.3.x", "strip-json-comments": "1.0.x" - }, - "dependencies": { - "shelljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", - "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" - }, - "strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" - } } }, "json-parse-better-errors": { @@ -48880,11 +45829,10 @@ "dev": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true, - "peer": true + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stable-stringify": { "version": "1.0.1", @@ -48984,13 +45932,10 @@ "dev": true }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "klaw": { "version": "1.3.1", @@ -49007,6 +45952,12 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true + }, "koalas": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz", @@ -49219,12 +46170,12 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" } }, "lodash": { @@ -49462,19 +46413,9 @@ } }, "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dev": true, - "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - } - }, - "material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.2.tgz", + "integrity": "sha512-O8DMCl32V34RrD+ZHxcAPc2+kYytuDIoQYjY36RVdsLK7uHjgNVvFec4yv0X6LgB4YEZgSvK5QtFi5YVqEpoMA==", "dev": true }, "math-expression-evaluator": { @@ -49511,6 +46452,15 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "memfs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.2.tgz", + "integrity": "sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, "memoizerific": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", @@ -49528,6 +46478,32 @@ "requires": { "errno": "^0.1.3", "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "merge-deep": { @@ -49554,13 +46530,13 @@ "shallow-clone": "^0.1.2" } }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "for-in": "^1.0.1" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -49646,13 +46622,13 @@ "dev": true }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" }, "dependencies": { "braces": { @@ -49715,18 +46691,18 @@ "dev": true }, "mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "dev": true }, "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, "requires": { - "mime-db": "1.46.0" + "mime-db": "1.47.0" } }, "mimic-fn": { @@ -49762,31 +46738,6 @@ "webpack-sources": "^1.1.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -49843,14 +46794,6 @@ "through2": "^3.0.1", "xml": "^1.0.0", "xml2js": "^0.4.15" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - } } }, "minipass": { @@ -49933,6 +46876,30 @@ "through2": "^2.0.0" }, "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -49994,15 +46961,14 @@ } }, "mobx": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.1.8.tgz", - "integrity": "sha512-U4yCvUeh6yKXRwFxm2lyJjXPVekOEar/R8ZKWAXem/3fthJqYflViawfjDAUh7lZEvbKqljC3NT/pSaUKpE+gg==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.0.tgz", + "integrity": "sha512-Aa1+VXsg4WxqJMTQfWoYuJi5UD10VZhiobSmcs5kcmI3BIT0aVtn7DysvCeDADCzl7dnbX+0BTHUj/v7gLlZpQ==" }, "mobx-react-lite": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz", - "integrity": "sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g==", - "requires": {} + "integrity": "sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g==" }, "moment": { "version": "2.29.1", @@ -50121,12 +47087,6 @@ "requires": { "is-plain-object": "^2.0.4" } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true } } }, @@ -50266,6 +47226,49 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -50316,6 +47319,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -50365,18 +47377,6 @@ "prepend-http": "^1.0.0", "query-string": "^4.1.0", "sort-keys": "^1.0.0" - }, - "dependencies": { - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - } } }, "normalize.css": { @@ -50391,6 +47391,14 @@ "dev": true, "requires": { "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } } }, "npmlog": { @@ -50498,6 +47506,15 @@ "dev": true } } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, @@ -50507,9 +47524,9 @@ "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==" }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz", + "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==", "dev": true }, "object-is": { @@ -50740,13 +47757,6 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "peer": true - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -50827,12 +47837,23 @@ } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } } }, "p-map": { @@ -50889,6 +47910,32 @@ "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "param-case": { @@ -51006,9 +48053,9 @@ } }, "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true } } @@ -51032,9 +48079,9 @@ "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { @@ -51049,9 +48096,9 @@ "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { @@ -51072,9 +48119,9 @@ "dev": true }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -51090,9 +48137,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", "dev": true }, "pify": { @@ -51126,12 +48173,12 @@ } }, "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, "requires": { - "find-up": "^4.0.0" + "find-up": "^5.0.0" } }, "pkg-up": { @@ -51185,16 +48232,15 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true } } }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true, - "peer": true - }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -51217,12 +48263,12 @@ "dev": true }, "polished": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-3.7.1.tgz", - "integrity": "sha512-/QgHrNGYwIA4mwxJ/7FSvalUJsm7KNfnXiScVSEG2Xa5qxDeBn4nmdjN2pW00mkM2Tts64ktc47U8F7Ed1BRAA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.2.tgz", + "integrity": "sha512-jq4t3PJUpVRcveC53nnbEX35VyQI05x3tniwp26WFdm1dwaNUBHAi5awa/roBlwQxx1uRhwNSYeAi/aMbfiJCQ==", "dev": true, "requires": { - "@babel/runtime": "^7.12.5" + "@babel/runtime": "^7.13.17" } }, "popper.js": { @@ -51268,19 +48314,27 @@ "dev": true }, "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "requires": { - "chalk": "^2.4.1", + "chalk": "^2.4.2", "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "supports-color": "^6.1.0" }, "dependencies": { "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -51292,34 +48346,6 @@ "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-browser-comments": { @@ -51329,34 +48355,6 @@ "dev": true, "requires": { "postcss": "^7" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-calc": { @@ -51370,37 +48368,11 @@ "postcss-value-parser": "^4.0.2" }, "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -51412,34 +48384,6 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-color-gray": { @@ -51451,34 +48395,6 @@ "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-color-hex-alpha": { @@ -51489,34 +48405,6 @@ "requires": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-color-mod-function": { @@ -51528,34 +48416,6 @@ "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-color-rebeccapurple": { @@ -51566,34 +48426,6 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-colormin": { @@ -51607,34 +48439,6 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-convert-values": { @@ -51645,34 +48449,6 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-custom-media": { @@ -51682,34 +48458,6 @@ "dev": true, "requires": { "postcss": "^7.0.14" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-custom-properties": { @@ -51720,34 +48468,6 @@ "requires": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-custom-selectors": { @@ -51766,17 +48486,6 @@ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -51787,21 +48496,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -51821,17 +48515,6 @@ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -51842,21 +48525,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -51867,34 +48535,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-discard-duplicates": { @@ -51904,34 +48544,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-discard-empty": { @@ -51941,34 +48553,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-discard-overridden": { @@ -51978,34 +48562,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-double-position-gradients": { @@ -52016,34 +48572,6 @@ "requires": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-env-function": { @@ -52054,34 +48582,6 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-flexbugs-fixes": { @@ -52091,34 +48591,6 @@ "dev": true, "requires": { "postcss": "^7.0.26" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-focus-visible": { @@ -52128,34 +48600,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-focus-within": { @@ -52165,34 +48609,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-font-variant": { @@ -52202,34 +48618,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-functions": { @@ -52241,6 +48629,23 @@ "object-assign": "^4.1.1", "postcss": "^6.0.9", "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "postcss-gap-properties": { @@ -52250,34 +48655,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-image-set-function": { @@ -52288,34 +48665,6 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-import": { @@ -52328,72 +48677,15 @@ "postcss-value-parser": "^3.2.3", "read-cache": "^1.0.0", "resolve": "^1.1.7" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-initial": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", - "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", + "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", "dev": true, "requires": { - "lodash.template": "^4.5.0", "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-inline-svg": { @@ -52433,6 +48725,17 @@ "readable-stream": "^3.1.1" } }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -52443,6 +48746,27 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } } } }, @@ -52453,31 +48777,6 @@ "requires": { "camelcase-css": "^2.0.1", "postcss": "^7.0.18" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-lab-function": { @@ -52489,34 +48788,6 @@ "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-load-config": { @@ -52529,15 +48800,6 @@ "import-cwd": "^2.0.0" }, "dependencies": { - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -52590,42 +48852,6 @@ "schema-utils": "^1.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -52636,21 +48862,6 @@ "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -52661,34 +48872,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-media-minmax": { @@ -52698,34 +48881,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-merge-longhand": { @@ -52738,34 +48893,6 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-merge-rules": { @@ -52782,17 +48909,6 @@ "vendors": "^1.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -52803,21 +48919,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -52829,34 +48930,6 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-minify-gradients": { @@ -52869,34 +48942,6 @@ "is-color-stop": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-minify-params": { @@ -52911,34 +48956,6 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-minify-selectors": { @@ -52953,17 +48970,6 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -52974,21 +48980,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -53085,12 +49076,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -53121,17 +49106,6 @@ "pify": "^3.0.0" } }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-simple-vars": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-5.0.2.tgz", @@ -53146,21 +49120,6 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -53171,34 +49130,6 @@ "dev": true, "requires": { "postcss": "^7.0.5" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-modules-local-by-default": { @@ -53213,37 +49144,11 @@ "postcss-value-parser": "^4.1.0" }, "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -53255,34 +49160,6 @@ "requires": { "postcss": "^7.0.6", "postcss-selector-parser": "^6.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-modules-values": { @@ -53293,34 +49170,6 @@ "requires": { "icss-utils": "^4.0.0", "postcss": "^7.0.6" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-nested": { @@ -53330,31 +49179,6 @@ "requires": { "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-nesting": { @@ -53364,6 +49188,25 @@ "dev": true, "requires": { "postcss": "^6.0.11" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "postcss-normalize": { @@ -53377,34 +49220,6 @@ "postcss": "^7.0.17", "postcss-browser-comments": "^3.0.0", "sanitize.css": "^10.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-normalize-charset": { @@ -53414,34 +49229,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-normalize-display-values": { @@ -53453,34 +49240,6 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-normalize-positions": { @@ -53493,34 +49252,6 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-normalize-repeat-style": { @@ -53533,34 +49264,6 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-normalize-string": { @@ -53572,34 +49275,6 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-normalize-timing-functions": { @@ -53611,34 +49286,6 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-normalize-unicode": { @@ -53650,34 +49297,6 @@ "browserslist": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-normalize-url": { @@ -53697,32 +49316,6 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", "dev": true - }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -53734,34 +49327,6 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-ordered-values": { @@ -53773,34 +49338,6 @@ "cssnano-util-get-arguments": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-overflow-shorthand": { @@ -53810,34 +49347,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-page-break": { @@ -53847,34 +49356,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-place": { @@ -53885,34 +49366,6 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-preset-env": { @@ -53975,17 +49428,6 @@ "postcss-value-parser": "^4.1.0" } }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", @@ -54000,21 +49442,6 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -54034,17 +49461,6 @@ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -54055,21 +49471,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -54083,34 +49484,6 @@ "caniuse-api": "^3.0.0", "has": "^1.0.0", "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-reduce-transforms": { @@ -54123,34 +49496,6 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-replace-overflow-wrap": { @@ -54160,34 +49505,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-safe-parser": { @@ -54197,34 +49514,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-selector-matches": { @@ -54235,34 +49524,6 @@ "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-selector-not": { @@ -54273,44 +49534,14 @@ "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz", + "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==", "requires": { "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", "util-deprecate": "^1.0.2" } }, @@ -54321,29 +49552,17 @@ "dev": true, "requires": { "postcss": "^6.0.9" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { - "chalk": "^2.4.2", + "chalk": "^2.4.1", "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "supports-color": "^5.4.0" } }, "source-map": { @@ -54351,18 +49570,20 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, "postcss-unique-selectors": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", @@ -54372,34 +49593,6 @@ "alphanum-sort": "^1.0.0", "postcss": "^7.0.0", "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-value-parser": { @@ -54479,13 +49672,6 @@ "clipboard": "^2.0.0" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true, - "peer": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -54620,17 +49806,6 @@ "toggle-array": "^1.0.1" }, "dependencies": { - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -54646,21 +49821,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-6.0.0.tgz", "integrity": "sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==", "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } } } }, @@ -54689,6 +49849,18 @@ "prompt-choices": "^4.0.5" }, "dependencies": { + "clone-deep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz", + "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^5.0.0", + "shallow-clone": "^1.0.0" + } + }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -54698,18 +49870,38 @@ "ms": "^2.1.1" } }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + } } } }, "prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", "dev": true, "requires": { "kleur": "^3.0.3", @@ -54758,13 +49950,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true, - "peer": true - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -54893,6 +50078,16 @@ "side-channel": "^1.0.4" } }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -54927,6 +50122,28 @@ "through2": "^2.0.0" }, "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -55010,31 +50227,6 @@ "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -55194,37 +50386,25 @@ } }, "react-circular-progressbar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.3.tgz", - "integrity": "sha512-YKN+xAShXA3gYihevbQZbavfiJxo83Dt1cUxqg/cltj4VVsRQpDr7Fg1mvjDG3x1KHGtd9NmYKvJ2mMrPwbKyw==", - "requires": {} + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.4.tgz", + "integrity": "sha512-OfX0ThSxRYEVGaQSt0DlXfyl5w4DbXHsXetyeivmoQrh9xA9bzVPHNf8aAhOIiwiaxX2WYWpLDB3gcpsDJ9oww==" }, "react-codemirror2": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/react-codemirror2/-/react-codemirror2-5.1.0.tgz", - "integrity": "sha512-Cksbgbviuf2mJfMyrKmcu7ycK6zX/ukuQO8dvRZdFWqATf5joalhjFc6etnBdGCcPA2LbhIwz+OPnQxLN/j1Fw==", - "requires": {} + "integrity": "sha512-Cksbgbviuf2mJfMyrKmcu7ycK6zX/ukuQO8dvRZdFWqATf5joalhjFc6etnBdGCcPA2LbhIwz+OPnQxLN/j1Fw==" }, - "react-color": { - "version": "2.19.3", - "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", - "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", - "dev": true, - "requires": { - "@icons/material": "^0.2.4", - "lodash": "^4.17.15", - "lodash-es": "^4.17.15", - "material-colors": "^1.2.1", - "prop-types": "^15.5.10", - "reactcss": "^1.2.0", - "tinycolor2": "^1.4.1" - } + "react-colorful": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.1.4.tgz", + "integrity": "sha512-WOEpRNz8Oo2SEU4eYQ279jEKFSjpFPa9Vi2U/K0DGwP9wOQ8wYkJcNSd5Qbv1L8OFvyKDCbWekjftXaU5mbmtg==", + "dev": true }, "react-confirm": { "version": "0.1.23", "resolved": "https://registry.npmjs.org/react-confirm/-/react-confirm-0.1.23.tgz", - "integrity": "sha512-G853O0XapIQXF0bx2iFWBLgGIzCu2ZjGJWJp0IFMNoim89yh/cz6i/xcSM/N8zKLWIvrVAWm/Zn/w3d5E7uv3g==", - "requires": {} + "integrity": "sha512-G853O0XapIQXF0bx2iFWBLgGIzCu2ZjGJWJp0IFMNoim89yh/cz6i/xcSM/N8zKLWIvrVAWm/Zn/w3d5E7uv3g==" }, "react-datepicker": { "version": "2.16.0", @@ -55323,15 +50503,14 @@ "node-releases": "^1.1.61" } }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" } }, "dir-glob": { @@ -55349,6 +50528,41 @@ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + } + }, "globby": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", @@ -55369,6 +50583,15 @@ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, "loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -55381,30 +50604,44 @@ } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, "pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -55422,22 +50659,48 @@ "requires": { "locate-path": "^3.0.0" } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true } } }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "slash": { @@ -55454,15 +50717,6 @@ "requires": { "ansi-regex": "^5.0.0" } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -55528,11 +50782,10 @@ } }, "react-docgen-typescript": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.21.0.tgz", - "integrity": "sha512-E4y/OcXwHukgiVafCGlxwoNHr4BDmM70Ww7oimL/QkMo5dmGALhceewe/xmVjdMxxI7E5syOGOc9/tbHL742rg==", - "dev": true, - "requires": {} + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.22.0.tgz", + "integrity": "sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg==", + "dev": true }, "react-docgen-typescript-plugin": { "version": "0.6.3", @@ -55548,9 +50801,9 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true } } @@ -55618,15 +50871,6 @@ "highlight.js": "^10.5.0" } }, - "react-hotkeys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-hotkeys/-/react-hotkeys-2.0.0.tgz", - "integrity": "sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q==", - "dev": true, - "requires": { - "prop-types": "^15.6.1" - } - }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -55670,8 +50914,7 @@ "react-lazyload": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-lazyload/-/react-lazyload-3.2.0.tgz", - "integrity": "sha512-zJlrG8QyVZz4+xkYZH5v1w3YaP5wEFaYSUWC4CT9UXfK75IfRAIEdnyIUF+dXr3kX2MOtL1lUaZmaQZqrETwgw==", - "requires": {} + "integrity": "sha512-zJlrG8QyVZz4+xkYZH5v1w3YaP5wEFaYSUWC4CT9UXfK75IfRAIEdnyIUF+dXr3kX2MOtL1lUaZmaQZqrETwgw==" }, "react-lifecycles-compat": { "version": "3.0.4", @@ -55681,8 +50924,7 @@ "react-onclickoutside": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz", - "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==", - "requires": {} + "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==" }, "react-popper": { "version": "1.3.11", @@ -55710,9 +50952,9 @@ }, "dependencies": { "react-popper": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz", - "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", "dev": true, "requires": { "react-fast-compare": "^3.0.1", @@ -55914,30 +51156,6 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", - "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/parser": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", - "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - } - }, "@webassemblyjs/ast": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", @@ -56115,37 +51333,11 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, "aria-query": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", @@ -56211,17 +51403,6 @@ "rimraf": "^2.7.1", "ssri": "^7.0.0", "unique-filename": "^1.1.1" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "case-sensitive-paths-webpack-plugin": { @@ -56257,6 +51438,15 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } } } }, @@ -56267,24 +51457,14 @@ "dev": true }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "css-loader": { @@ -56351,99 +51531,6 @@ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - } - } - }, - "eslint-config-react-app": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", - "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.9" - } - }, - "eslint-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", - "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", - "dev": true, - "requires": { - "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.2", - "loader-utils": "^1.2.3", - "object-hash": "^2.0.1", - "schema-utils": "^2.6.1" - } - }, - "eslint-plugin-flowtype": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", - "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, "eslint-plugin-import": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", @@ -56473,16 +51560,6 @@ "ms": "2.0.0" } }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -56528,6 +51605,15 @@ "xregexp": "^4.3.0" }, "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -56541,35 +51627,15 @@ } }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { - "esrecurse": "^4.3.0", + "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -56592,38 +51658,6 @@ "is-glob": "^4.0.0", "merge2": "^1.2.3", "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" } }, "file-loader": { @@ -56642,15 +51676,14 @@ "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==", "dev": true }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "fork-ts-checker-webpack-plugin": { @@ -56695,24 +51728,6 @@ "dev": true, "optional": true }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, "globby": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", @@ -56728,12 +51743,6 @@ "slash": "^1.0.0" }, "dependencies": { - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -56742,6 +51751,12 @@ } } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "html-webpack-plugin": { "version": "4.0.0-beta.11", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", @@ -56756,12 +51771,6 @@ "util.promisify": "1.0.0" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, "immer": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", @@ -56787,6 +51796,17 @@ "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "is-absolute-url": { @@ -56824,31 +51844,8 @@ "requires": { "merge-stream": "^2.0.0", "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -56868,20 +51865,13 @@ "object.assign": "^4.1.0" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "make-dir": { @@ -56946,14 +51936,20 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -56977,6 +51973,15 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, "pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -56994,24 +51999,30 @@ "requires": { "locate-path": "^3.0.0" } - } - } - }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } @@ -57075,17 +52086,6 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -57106,21 +52106,6 @@ "json5": "^1.0.1" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -57129,23 +52114,91 @@ "requires": { "ansi-regex": "^5.0.0" } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } }, "resolve": { "version": "1.15.0", @@ -57156,38 +52209,12 @@ "path-parse": "^1.0.6" } }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, "sockjs": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", @@ -57251,53 +52278,13 @@ "minipass": "^3.1.1" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } + "has-flag": "^4.0.0" } }, "terser-webpack-plugin": { @@ -57406,12 +52393,6 @@ "webpack-sources": "^1.4.1" }, "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, "cacache": { "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", @@ -57435,16 +52416,6 @@ "y18n": "^4.0.0" } }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -57463,9 +52434,9 @@ "dev": true }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" @@ -57531,12 +52502,6 @@ "yargs": "^13.3.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -57568,26 +52533,11 @@ "nan": "^2.12.1" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "schema-utils": { "version": "1.0.0", @@ -57600,13 +52550,13 @@ "ajv-keywords": "^3.1.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "has-flag": "^3.0.0" } } } @@ -57641,18 +52591,18 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } } } }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", @@ -57689,6 +52639,31 @@ "locate-path": "^3.0.0" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -57699,6 +52674,15 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } } } }, @@ -57715,15 +52699,15 @@ } }, "react-sizeme": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-2.6.12.tgz", - "integrity": "sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-3.0.1.tgz", + "integrity": "sha512-9Hf1NLgSbny1bha77l9HwvwwxQUJxFUqi44Ih+y3evA+PezBpGdCGlnvye6avss2cIgs9PgdYgMnfuzJWn/RUw==", "dev": true, "requires": { - "element-resize-detector": "^1.2.1", + "element-resize-detector": "^1.2.2", "invariant": "^2.2.4", "shallowequal": "^1.1.0", - "throttle-debounce": "^2.1.0" + "throttle-debounce": "^3.0.1" } }, "react-smooth": { @@ -57816,15 +52800,6 @@ "react-lifecycles-compat": "^3.0.4" } }, - "reactcss": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", - "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", - "dev": true, - "requires": { - "lodash": "^4.0.1" - } - }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -57843,100 +52818,82 @@ } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "dependencies": { - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true } } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "dependencies": { "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" + "p-locate": "^4.1.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true } } }, "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } } }, "readdirp": { @@ -57979,12 +52936,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -58005,6 +52956,30 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.2" } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, @@ -58020,6 +52995,12 @@ "string-width": "^2.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -58050,6 +53031,15 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } } } }, @@ -58113,22 +53103,13 @@ } }, "recharts-scale": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.4.tgz", - "integrity": "sha512-e7MCnuD1+gtY9N7TYxzB+QXvi4s30kvNqVbI1p5m4rf47GusEQaEHxi8zvlZkdOOZ90UhpGHcnkYlyYkUJ2JoQ==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", "requires": { "decimal.js-light": "^2.4.1" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -58164,19 +53145,17 @@ } }, "redux": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", - "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", + "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" + "@babel/runtime": "^7.9.2" } }, "redux-immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz", - "integrity": "sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM=", - "requires": {} + "integrity": "sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM=" }, "redux-thunk": { "version": "2.3.0", @@ -58270,11 +53249,10 @@ } }, "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true, - "peer": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true }, "regexpu-core": { "version": "4.7.1", @@ -58338,12 +53316,6 @@ "strip-ansi": "^3.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "css-select": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", @@ -58397,21 +53369,27 @@ "util-deprecate": "^1.0.1" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "safe-buffer": "~5.2.0" } } } }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true }, "repeat-string": { @@ -58420,16 +53398,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "peer": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -58509,39 +53477,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "peer": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true, - "peer": true - } - } - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "reselect": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", - "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=", - "dev": true, - "peer": true - }, "resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", @@ -58606,6 +53547,15 @@ "is-windows": "^1.0.1", "which": "^1.2.14" } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -58816,27 +53766,10 @@ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true, - "peer": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "peer": true, - "requires": { - "rx-lite": "*" - } - }, "rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -58908,12 +53841,6 @@ "is-plain-object": "^2.0.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -58954,34 +53881,6 @@ "neo-async": "^2.6.1", "schema-utils": "^2.6.1", "semver": "^6.3.0" - }, - "dependencies": { - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - } } }, "sax": { @@ -59017,33 +53916,6 @@ "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } } }, "select": { @@ -59293,22 +54165,12 @@ } }, "shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "kind-of": "^6.0.2" } }, "shallow-copy": { @@ -59344,18 +54206,18 @@ } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shell-quote": { @@ -59365,23 +54227,9 @@ "dev": true }, "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "dependencies": { - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - } - } + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "shellwords": { "version": "0.1.1", @@ -59434,12 +54282,13 @@ "dev": true }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, - "peer": true, "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" }, "dependencies": { @@ -59447,8 +54296,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "peer": true + "dev": true } } }, @@ -59493,6 +54341,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-data-descriptor": { @@ -59502,6 +54361,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-descriptor": { @@ -59513,16 +54383,14 @@ "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } } }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -59555,6 +54423,17 @@ "dev": true, "requires": { "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "socket.io-client": { @@ -59601,9 +54480,9 @@ } }, "sockjs-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", - "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "dev": true, "requires": { "debug": "^3.2.6", @@ -59611,7 +54490,7 @@ "faye-websocket": "^0.11.3", "inherits": "^2.0.4", "json3": "^3.3.3", - "url-parse": "^1.4.7" + "url-parse": "^1.5.1" }, "dependencies": { "debug": { @@ -59757,6 +54636,21 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } } } }, @@ -59814,9 +54708,9 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" @@ -59835,9 +54729,9 @@ "dev": true }, "stack-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", - "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -59891,6 +54785,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-data-descriptor": { @@ -59900,6 +54805,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-descriptor": { @@ -59911,15 +54827,13 @@ "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -59966,12 +54880,34 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "optional": true }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -60009,6 +54945,32 @@ "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-each": { @@ -60032,6 +54994,32 @@ "readable-stream": "^2.3.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-shift": { @@ -60047,12 +55035,9 @@ "dev": true }, "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "string-length": { "version": "2.0.0", @@ -60062,6 +55047,23 @@ "requires": { "astral-regex": "^1.0.0", "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "string-width": { @@ -60167,18 +55169,18 @@ } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^2.0.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } @@ -60221,11 +55223,9 @@ } }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "peer": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" }, "style-loader": { "version": "0.23.1", @@ -60237,31 +55237,6 @@ "schema-utils": "^1.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -60286,17 +55261,6 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -60307,21 +55271,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -60338,34 +55287,6 @@ "dev": true, "requires": { "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "supports-color": { @@ -60468,36 +55389,47 @@ "integrity": "sha512-KHDsGQ4UcP+wSMaqH7wjH4DHxeHKRlmEO5jlSVCS+0x9xA4ZhdKYg/ameGF7RXaFDUcsti6Zj5s5W1Z4/YsbHA==" }, "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, - "peer": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" }, "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "peer": true + "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, - "peer": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" } } } @@ -60554,27 +55486,14 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -60585,6 +55504,11 @@ "universalify": "^0.1.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -60593,67 +55517,6 @@ "graceful-fs": "^4.1.6" } }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", @@ -60675,24 +55538,12 @@ } } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - } } }, "universalify": { @@ -60743,18 +55594,18 @@ } }, "telejson": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.0.tgz", - "integrity": "sha512-Yy0N2OV0mosmr1SCZEm3Ezhu/oi5Dbao5RqauZu4+VI5I/XtVBHXajRk0txuqbFYtKdzzWGDZFGSif9ovVLjEA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.1.tgz", + "integrity": "sha512-aU7x+nwodmODJPXhU9sC/REOcX/dx1tNbyeOFV1PCTh6e9Mj+bnyfQ7sr13zfJYya9BtpGwnUNn9Fd76Ybj2eg==", "dev": true, "requires": { "@types/is-function": "^1.0.0", "global": "^4.4.0", "is-function": "^1.0.2", - "is-regex": "^1.1.1", + "is-regex": "^1.1.2", "is-symbol": "^1.0.3", "isobject": "^4.0.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3" }, "dependencies": { @@ -60884,6 +55735,16 @@ "pkg-dir": "^4.1.0" } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -60901,6 +55762,15 @@ "supports-color": "^7.0.0" } }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -60934,6 +55804,26 @@ "yocto-queue": "^0.1.0" } }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -60943,6 +55833,15 @@ "aggregate-error": "^3.0.0" } }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -61046,6 +55945,12 @@ "json-parse-better-errors": "^1.0.1" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -61097,9 +56002,9 @@ "dev": true }, "throttle-debounce": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz", - "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", "dev": true }, "through": { @@ -61116,6 +56021,34 @@ "requires": { "inherits": "^2.0.4", "readable-stream": "2 || 3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } } }, "thunky": { @@ -61162,12 +56095,6 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, - "tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", - "dev": true - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -61202,6 +56129,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "to-regex": { @@ -61315,13 +56253,6 @@ "punycode": "^2.1.0" } }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true, - "peer": true - }, "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", @@ -61335,9 +56266,9 @@ "dev": true }, "ts-dedent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.0.tgz", - "integrity": "sha512-HbmrG+lCgk5W8LQTALxBxQRBDeAhQKRzdqVhHLUkVd5nYT+b6zDzbRMjiA8wqrWDa33X09WdnW4zEsdwQArTaw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.1.tgz", + "integrity": "sha512-riHuwnzAUCfdIeTBNUq7+Yj+ANnrMXo/7+Z74dIdudS7ys2k8aSGMzpJRMFDF7CLwUTbtvi1ZZff/Wl+XxmqIA==", "dev": true }, "ts-essentials": { @@ -61448,17 +56379,10 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "typescript": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", - "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==", - "dev": true, - "peer": true - }, "ua-parser-js": { - "version": "0.7.25", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.25.tgz", - "integrity": "sha512-8NFExdfI24Ny8R3Vc6+uUytP/I7dpqk3JERlvxPWlrtx5YboqCgxAXYKPAifbPLV2zKbgmmPL53ufW7mUC/VOQ==" + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" }, "uglify-js": { "version": "3.4.10", @@ -61485,21 +56409,21 @@ } }, "unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "requires": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" } }, "underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", "dev": true }, "unfetch": { @@ -61565,7 +56489,8 @@ "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true }, "uniqs": { "version": "2.0.0", @@ -61705,31 +56630,6 @@ "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -61781,8 +56681,7 @@ "use-isomorphic-layout-effect": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", - "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==", - "requires": {} + "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==" }, "use-latest": { "version": "1.2.0", @@ -62048,25 +56947,6 @@ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -62112,18 +56992,6 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -62202,12 +57070,6 @@ "ws": "^6.0.0" }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -62220,12 +57082,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -62332,12 +57188,39 @@ "p-limit": "^2.0.0" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -62367,6 +57250,15 @@ "has-flag": "^3.0.0" } }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -62470,31 +57362,6 @@ "yargs": "^13.3.2" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -62526,12 +57393,6 @@ "wrap-ansi": "^5.1.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -62581,12 +57442,6 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -62606,6 +57461,12 @@ "p-limit": "^2.0.0" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", @@ -62634,12 +57495,6 @@ "strip-ansi": "^5.1.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -62651,15 +57506,6 @@ } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -62690,12 +57536,6 @@ "strip-ansi": "^5.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -62750,8 +57590,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz", "integrity": "sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==", - "dev": true, - "requires": {} + "dev": true }, "webpack-hot-middleware": { "version": "2.25.0", @@ -62763,23 +57602,6 @@ "html-entities": "^1.2.0", "querystring": "^0.2.0", "strip-ansi": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } } }, "webpack-log": { @@ -62928,9 +57750,9 @@ } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -62964,6 +57786,12 @@ "string-width": "^1.0.2 || 2" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -62979,6 +57807,15 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } } } }, @@ -63018,12 +57855,6 @@ "winston-transport": "^4.4.0" }, "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -63040,6 +57871,21 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } } } }, @@ -63051,6 +57897,32 @@ "requires": { "readable-stream": "^2.3.7", "triple-beam": "^1.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "word-wrap": { @@ -63300,21 +58172,6 @@ "color-convert": "^2.0.1" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -63332,11 +58189,10 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, - "peer": true, "requires": { "mkdirp": "^0.5.1" } @@ -63415,9 +58271,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { @@ -63448,9 +58304,9 @@ }, "dependencies": { "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true } } diff --git a/frontend/scripts/upload-minio.js b/frontend/scripts/upload-minio.js index 3e59d9c4e..f0415390f 100644 --- a/frontend/scripts/upload-minio.js +++ b/frontend/scripts/upload-minio.js @@ -1,14 +1,15 @@ const Minio = require('minio') const { collectFilenames } = require('./fs'); +require('dotenv').config() const PUBLIC_DIR = 'public'; var minioClient = new Minio.Client({ - endPoint: window.ENV.MINIO_ENDPOINT, - port: window.ENV.MINIO_PORT, - useSSL: window.ENV.MINIO_USE_SSL, //? - accessKey: window.ENV.MINIO_ACCESS_KEY, - secretKey: window.ENV.MINIO_SECRET_KEY, + endPoint: process.env.MINIO_ENDPOINT, + port: process.env.MINIO_PORT, + useSSL: process.env.MINIO_USE_SSL, + accessKey: process.env.MINIO_ACCESS_KEY, + secretKey: process.env.MINIO_SECRET_KEY, }); collectFilenames(PUBLIC_DIR, n => !n.includes('.DS_Store')).forEach(name => { From 932bcb920df58f305322d2535ecc4de945388ef7 Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Tue, 4 May 2021 20:05:28 +0530 Subject: [PATCH 7/7] copy button --- .../Client/ProfileSettings/OptOut.js | 2 +- .../Client/ProfileSettings/ProfileSettings.js | 14 +- .../IdentifyUsersTab/IdentifyUsersTab.js | 14 +- .../OnboardingTabs/InstallDocs/InstallDocs.js | 3 +- .../Onboarding/components/SideMenu.js | 7 +- .../InstallDocs/InstallDocs.js | 2 +- .../components/ui/CopyButton/CopyButton.js | 25 + .../app/components/ui/CopyButton/index.js | 1 + .../ui/HighlightCode/HighlightCode.js | 18 + .../ui/HighlightCode/highlightCode.css | 29 + .../app/components/ui/HighlightCode/index.js | 1 + frontend/app/components/ui/index.js | 2 + frontend/env.js | 2 +- frontend/logfile | 3819 ----------------- 14 files changed, 87 insertions(+), 3852 deletions(-) create mode 100644 frontend/app/components/ui/CopyButton/CopyButton.js create mode 100644 frontend/app/components/ui/CopyButton/index.js create mode 100644 frontend/app/components/ui/HighlightCode/HighlightCode.js create mode 100644 frontend/app/components/ui/HighlightCode/highlightCode.css create mode 100644 frontend/app/components/ui/HighlightCode/index.js delete mode 100644 frontend/logfile diff --git a/frontend/app/components/Client/ProfileSettings/OptOut.js b/frontend/app/components/Client/ProfileSettings/OptOut.js index 88180e5c3..dea675a60 100644 --- a/frontend/app/components/Client/ProfileSettings/OptOut.js +++ b/frontend/app/components/Client/ProfileSettings/OptOut.js @@ -17,7 +17,7 @@ function OptOut(props) { checked={ optOut } onClick={ onChange } className="mr-8" - label="Enable/Disable" + label="Anonymize" />
) diff --git a/frontend/app/components/Client/ProfileSettings/ProfileSettings.js b/frontend/app/components/Client/ProfileSettings/ProfileSettings.js index 5298914bd..ac04d53fe 100644 --- a/frontend/app/components/Client/ProfileSettings/ProfileSettings.js +++ b/frontend/app/components/Client/ProfileSettings/ProfileSettings.js @@ -31,16 +31,6 @@ export default class ProfileSettings extends React.PureComponent {
-
-
-

{ 'Opt out' }

- {/*
{ 'Your API key gives you access to an extra set of services.' }
*/} -
-
-
- -
-

{ 'Organization API Key' }

@@ -53,8 +43,8 @@ export default class ProfileSettings extends React.PureComponent {
-

{ 'Opt Out' }

- {/*
{ 'Your API key gives you access to an extra set of services.' }
*/} +

{ 'Data Collection' }

+
{ 'Enables you to control how OpenReplay captures data on your organization’s usage to improve our product.' }
diff --git a/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js b/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js index 2e6fd2ad6..bee33974b 100644 --- a/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js +++ b/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js @@ -1,8 +1,7 @@ import React from 'react' import CircleNumber from '../CircleNumber' import MetadataList from '../MetadataList/MetadataList' -import Snippet from '../Snippet/Snippet' -import Highlight from 'react-highlight' +import { HighlightCode } from 'UI' export default function IdentifyUsersTab() { return ( @@ -17,10 +16,7 @@ export default function IdentifyUsersTab() {
Call userID to identify your users when recording a session. The identity of the user can be changed, but OpenReplay will only keep the last communicated user ID.
- - {`tracker.userID('john@doe.com');`} - - {/* */} +
@@ -37,19 +33,15 @@ export default function IdentifyUsersTab() {
-
Inject metadata when recording sessions
Use the metadata method in your code to inject custom user data in the form of a key/value pair (string).
- - {`tracker.metadata('plan', 'premium');`} - +
- {/* */}
diff --git a/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js b/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js index 2d6230c0a..09e5fd4c9 100644 --- a/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js +++ b/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js @@ -2,10 +2,9 @@ import React, { useState } from 'react' import { connect } from 'react-redux' import stl from './installDocs.css' import cn from 'classnames' -import CopyButton from '../CopyButton' import Highlight from 'react-highlight' import CircleNumber from '../../CircleNumber' -import { Slider } from 'UI' +import { Slider, CopyButton } from 'UI' const installationCommand = 'npm i @openreplay/tracker --save' const usageCode = `import Tracker from '@openreplay/tracker'; diff --git a/frontend/app/components/Onboarding/components/SideMenu.js b/frontend/app/components/Onboarding/components/SideMenu.js index e828fd856..ab49d97f3 100644 --- a/frontend/app/components/Onboarding/components/SideMenu.js +++ b/frontend/app/components/Onboarding/components/SideMenu.js @@ -24,21 +24,18 @@ export default function SideMenu() {
window.open('https://docs.openreplay.com/api', '_blank')} + onClick={() => window.open('https://docs.openreplay.com', '_blank')} /> window.open('https://github.com/openreplay/openreplay/issues/new', '_blank')} + onClick={() => window.open('https://github.com/openreplay/openreplay/issues', '_blank')} /> $crisp.push(['do', 'chat:open']) } diff --git a/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js b/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js index 6e1bb78f3..cfedaed07 100644 --- a/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js +++ b/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js @@ -2,7 +2,7 @@ import React from 'react' import { Controlled as CodeMirror } from 'react-codemirror2' import stl from './installDocs.css' import cn from 'classnames' -import CopyButton from '../CopyButton'; +import { CopyButton } from 'UI'; const installationCommand = 'npm i @openreplay/tracker --save' const usageCode = `import Tracker from '@openreplay/tracker'; diff --git a/frontend/app/components/ui/CopyButton/CopyButton.js b/frontend/app/components/ui/CopyButton/CopyButton.js new file mode 100644 index 000000000..d080b1a02 --- /dev/null +++ b/frontend/app/components/ui/CopyButton/CopyButton.js @@ -0,0 +1,25 @@ +import React from 'react' +import { useState } from 'react'; +import copy from 'copy-to-clipboard'; + +function CopyButton({ content, className }) { + const [copied, setCopied] = useState(false) + + const copyHandler = () => { + setCopied(true); + copy(content); + setTimeout(() => { + setCopied(false); + }, 1000); + }; + return ( + + ) +} + +export default CopyButton diff --git a/frontend/app/components/ui/CopyButton/index.js b/frontend/app/components/ui/CopyButton/index.js new file mode 100644 index 000000000..a230b4ecc --- /dev/null +++ b/frontend/app/components/ui/CopyButton/index.js @@ -0,0 +1 @@ +export { default } from './CopyButton' \ No newline at end of file diff --git a/frontend/app/components/ui/HighlightCode/HighlightCode.js b/frontend/app/components/ui/HighlightCode/HighlightCode.js new file mode 100644 index 000000000..d9f837b88 --- /dev/null +++ b/frontend/app/components/ui/HighlightCode/HighlightCode.js @@ -0,0 +1,18 @@ +import React from 'react' +import Highlight from 'react-highlight' +import stl from './highlightCode.css' +import cn from 'classnames' +import { CopyButton } from 'UI' + +function HighlightCode({ className = 'js', text = ''}) { + return ( +
+ + + {text} + +
+ ) +} + +export default HighlightCode diff --git a/frontend/app/components/ui/HighlightCode/highlightCode.css b/frontend/app/components/ui/HighlightCode/highlightCode.css new file mode 100644 index 000000000..448b08f72 --- /dev/null +++ b/frontend/app/components/ui/HighlightCode/highlightCode.css @@ -0,0 +1,29 @@ +@import 'zindex.css'; + +.snippetWrapper { + position: relative; + & .codeCopy { + position: absolute; + right: 0px; + top: -3px; + z-index: $codeSnippet; + padding: 5px 10px; + color: $teal; + text-transform: uppercase; + cursor: pointer; + border-radius: 3px; + transition: all 0.4s; + user-select: none; + + &:hover { + background-color: $gray-light; + transition: all 0.2s; + } + } + & .snippet { + overflow: hidden; + line-height: 20px; + border-radius: 5px; + user-select: none; + } +} \ No newline at end of file diff --git a/frontend/app/components/ui/HighlightCode/index.js b/frontend/app/components/ui/HighlightCode/index.js new file mode 100644 index 000000000..7f7481148 --- /dev/null +++ b/frontend/app/components/ui/HighlightCode/index.js @@ -0,0 +1 @@ +export { default } from './HighlightCode' \ No newline at end of file diff --git a/frontend/app/components/ui/index.js b/frontend/app/components/ui/index.js index c64e5082d..fe9609f16 100644 --- a/frontend/app/components/ui/index.js +++ b/frontend/app/components/ui/index.js @@ -50,5 +50,7 @@ export { default as TextLink } from './TextLink'; export { default as Information } from './Information'; export { default as QuestionMarkHint } from './QuestionMarkHint'; export { default as TimelinePointer } from './TimelinePointer'; +export { default as CopyButton } from './CopyButton'; +export { default as HighlightCode } from './HighlightCode'; export { Input, Modal, Form, Message, Card } from 'semantic-ui-react'; diff --git a/frontend/env.js b/frontend/env.js index 0bdc0ab4a..4c5902987 100644 --- a/frontend/env.js +++ b/frontend/env.js @@ -8,7 +8,7 @@ const oss = { CAPTCHA_ENABLED: process.env.CAPTCHA_ENABLED, CAPTCHA_SITE_KEY: process.env.CAPTCHA_SITE_KEY, ORIGIN: () => 'window.location.origin', - API_EDP: 'https://staging-parrot.asayer.io', + API_EDP: () => 'window.location.origin + "/api"', ASSETS_HOST: () => 'window.location.origin + "/assets"', VERSION: '1.0.1', SOURCEMAP: true, diff --git a/frontend/logfile b/frontend/logfile deleted file mode 100644 index 3851af727..000000000 --- a/frontend/logfile +++ /dev/null @@ -1,3819 +0,0 @@ -2021-01-23 12:42:45.336 IST [37761] LOG: starting PostgreSQL 13.1 on x86_64-apple-darwin20.1.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.27), 64-bit -2021-01-23 12:42:45.337 IST [37761] LOG: listening on IPv4 address "127.0.0.1", port 5432 -2021-01-23 12:42:45.337 IST [37761] LOG: listening on IPv6 address "::1", port 5432 -2021-01-23 12:42:45.338 IST [37761] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" -2021-01-23 12:42:45.352 IST [37762] LOG: database system was interrupted; last known up at 2021-01-21 08:13:03 IST -2021-01-23 12:42:45.507 IST [37762] LOG: database system was not properly shut down; automatic recovery in progress -2021-01-23 12:42:45.513 IST [37762] LOG: redo starts at 0/3316BC8 -2021-01-23 12:42:45.513 IST [37762] LOG: invalid record length at 0/3316CB0: wanted 24, got 0 -2021-01-23 12:42:45.513 IST [37762] LOG: redo done at 0/3316C78 -2021-01-23 12:42:45.522 IST [37761] LOG: database system is ready to accept connections -2021-01-23 14:38:53.706 IST [40210] ERROR: bind message supplies 0 parameters, but prepared statement "pdo_stmt_00000003" requires 1 -2021-01-23 14:38:53.706 IST [40210] STATEMENT: select * from "tenants" where "code" = $1 limit 1 -2021-01-23 14:39:00.422 IST [40215] ERROR: bind message supplies 0 parameters, but prepared statement "pdo_stmt_00000003" requires 1 -2021-01-23 14:39:00.422 IST [40215] STATEMENT: select * from "tenants" where "code" = $1 limit 1 -2021-01-23 16:08:04.745 IST [45258] ERROR: relation "sections" does not exist at character 15 -2021-01-23 16:08:04.745 IST [45258] STATEMENT: select * from "sections" where "id" = $1 limit 1 -2021-01-23 16:08:09.391 IST [45262] ERROR: relation "sections" does not exist at character 15 -2021-01-23 16:08:09.391 IST [45262] STATEMENT: select * from "sections" where "id" = $1 limit 1 -2021-01-23 16:09:22.542 IST [45295] ERROR: relation "sections" does not exist at character 15 -2021-01-23 16:09:22.542 IST [45295] STATEMENT: select * from "sections" where "id" = $1 limit 1 -2021-01-24 01:17:39.683 IST [50859] FATAL: role "postgres" does not exist -2021-01-24 01:36:57.415 IST [67292] ERROR: missing FROM-clause entry for table "sections" at character 31 -2021-01-24 01:36:57.415 IST [67292] STATEMENT: select * from "classes" where "sections"."class_id" = "classes"."id" and "academic_year_id" = $1 limit 1 -2021-01-24 01:41:44.028 IST [56873] ERROR: column "academic_year_id" does not exist at character 451 -2021-01-24 01:41:44.028 IST [56873] STATEMENT: select * from "users" where (name ILIKE '%af%' or exists (select * from "students" where "users"."id" = "students"."user_id" and "aadhar_number"::text LIKE $1) or exists (select * from "students" where "users"."id" = "students"."user_id" and "admission_number"::text LIKE $2) and exists (select * from "students" where "users"."id" = "students"."user_id" and exists (select * from "enrolments" where "students"."user_id" = "enrolments"."user_id" and "academic_year_id" = $3))) and "users"."deleted_at" is null limit 5 -2021-01-24 01:43:44.869 IST [66608] ERROR: missing FROM-clause entry for table "student" at character 281 -2021-01-24 01:43:44.869 IST [66608] STATEMENT: select * from "users" where (name ILIKE '%af%' or exists (select * from "students" where "users"."id" = "students"."user_id" and "aadhar_number"::text LIKE $1) or exists (select * from "students" where "users"."id" = "students"."user_id" and "admission_number"::text LIKE $2) and "student"."enrolment" = (select * where "has" = $3)) and "users"."deleted_at" is null limit 5 -2021-01-24 14:36:15.553 IST [61561] ERROR: update or delete on table "payments" violates foreign key constraint "late_fees_payment_id_foreign" on table "late_fees" -2021-01-24 14:36:15.553 IST [61561] DETAIL: Key (id)=(14) is still referenced from table "late_fees". -2021-01-24 14:36:15.553 IST [61561] STATEMENT: DELETE FROM "tnt_cf809103-d949-4562-896e-bcef7c73e8d7"."payments" WHERE "id" = '14' OR "id" = '15' OR "id" = '16' OR "id" = '17' OR "id" = '18' OR "id" = '19' OR "id" = '20' OR "id" = '21' OR "id" = '22' OR "id" = '23' OR "id" = '24' OR "id" = '25' OR "id" = '26' OR "id" = '27' OR "id" = '28' OR "id" = '29' OR "id" = '30' OR "id" = '31' OR "id" = '32' OR "id" = '33' OR "id" = '34'; -2021-01-24 14:52:27.013 IST [54028] ERROR: relation "tnt_c05488f1-1124-4d7f-81ef-3c7e9fb5b6d2.academic_years" does not exist at character 13 -2021-01-24 14:52:27.013 IST [54028] STATEMENT: INSERT INTO "tnt_c05488f1-1124-4d7f-81ef-3c7e9fb5b6d2".academic_years (id, title, start_at, end_at, is_active, created_at, updated_at) VALUES ( $1, $2, $3, $4, $5, $6, $7) -2021-01-24 16:13:57.532 IST [79798] ERROR: column "academic_year_ids" does not exist at character 712 -2021-01-24 16:13:57.532 IST [79798] HINT: Perhaps you meant to reference the column "classes.academic_year_id". -2021-01-24 16:13:57.532 IST [79798] STATEMENT: select * from "enrolments" where exists (select * from "users" where "enrolments"."user_id" = "users"."id" and "name"::text LIKE $1 and "users"."deleted_at" is null) or exists (select * from "users" where "enrolments"."user_id" = "users"."id" and "aadhar_number"::text LIKE $2 and "users"."deleted_at" is null) or exists (select * from "users" where "enrolments"."user_id" = "users"."id" and exists (select * from "students" where "users"."id" = "students"."user_id" and "admission_number"::text LIKE $3) and "users"."deleted_at" is null) and exists (select * from "sections" where "enrolments"."section_id" = "sections"."id" and exists (select * from "classes" where "sections"."class_id" = "classes"."id" and "academic_year_ids" = $4)) limit 5 -2021-01-24 16:16:00.358 IST [61561] ERROR: syntax error at or near "%" at character 716 -2021-01-24 16:16:00.358 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - select - * - from - "enrolments" - where - exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and "name" :: text LIKE % maya % - and "users"."deleted_at" is null - ) - or exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and "aadhar_number" :: text LIKE % maya % - and "users"."deleted_at" is null - ) - or exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and exists ( - select - * - from - "students" - where - "users"."id" = "students"."user_id" - and "admission_number" :: text LIKE % maya % - ) - and "users"."deleted_at" is null - ) - and exists ( - select - * - from - "sections" - where - "enrolments"."section_id" = "sections"."id" - and exists ( - select - * - from - "classes" - where - "sections"."class_id" = "classes"."id" - and "academic_year_id" = 21 - ) - ) - limit - 5 - ) -2021-01-24 16:16:34.283 IST [61561] ERROR: syntax error at or near ")" at character 1647 -2021-01-24 16:16:34.283 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - select - * - from - "enrolments" - where - exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and "name" :: text LIKE '%maya%' - and "users"."deleted_at" is null - ) - or exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and "aadhar_number" :: text LIKE '%maya%' - and "users"."deleted_at" is null - ) - or exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and exists ( - select - * - from - "students" - where - "users"."id" = "students"."user_id" - and "admission_number" :: text LIKE '%maya%' - ) - and "users"."deleted_at" is null - ) - and exists ( - select - * - from - "sections" - where - "enrolments"."section_id" = "sections"."id" - and exists ( - select - * - from - "classes" - where - "sections"."class_id" = "classes"."id" - and "academic_year_id" = 21 - ) - ) - limit - 5 - ) -2021-01-24 16:16:45.440 IST [61561] ERROR: relation "enrolments" does not exist at character 560 -2021-01-24 16:16:45.440 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - select - * - from - "enrolments" - where - exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and "name" :: text LIKE '%maya%' - and "users"."deleted_at" is null - ) - or exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and "aadhar_number" :: text LIKE '%maya%' - and "users"."deleted_at" is null - ) - or exists ( - select - * - from - "users" - where - "enrolments"."user_id" = "users"."id" - and exists ( - select - * - from - "students" - where - "users"."id" = "students"."user_id" - and "admission_number" :: text LIKE '%maya%' - ) - and "users"."deleted_at" is null - ) - and exists ( - select - * - from - "sections" - where - "enrolments"."section_id" = "sections"."id" - and exists ( - select - * - from - "classes" - where - "sections"."class_id" = "classes"."id" - and "academic_year_id" = 21 - ) - ) - limit - 5 -2021-01-24 16:17:32.152 IST [61561] ERROR: relation "students" does not exist at character 1320 -2021-01-24 16:17:32.152 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - select - * - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - where - exists ( - select - * - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - where - "enrolments"."user_id" = "users"."id" - and "name" :: text LIKE '%maya%' - and "users"."deleted_at" is null - ) - or exists ( - select - * - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - where - "enrolments"."user_id" = "users"."id" - and "aadhar_number" :: text LIKE '%maya%' - and "users"."deleted_at" is null - ) - or exists ( - select - * - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - where - "enrolments"."user_id" = "users"."id" - and exists ( - select - * - from - "students" - where - "users"."id" = "students"."user_id" - and "admission_number" :: text LIKE '%maya%' - ) - and "users"."deleted_at" is null - ) - and exists ( - select - * - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - where - "enrolments"."section_id" = "sections"."id" - and exists ( - select - * - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - where - "sections"."class_id" = "classes"."id" - and "academic_year_id" = 21 - ) - ) - limit - 5 -2021-01-24 16:21:47.191 IST [61561] ERROR: table name "s" specified more than once -2021-01-24 16:21:47.191 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - - select - * - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students s on s.user_id = u.id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - and u.name like '%maya%' - or s.admission_number like '%maya%' - or u.aadhar_number like '%maya%' -2021-01-24 17:11:18.471 IST [41136] ERROR: missing FROM-clause entry for table "section_id, enrolments" at character 8 -2021-01-24 17:11:18.471 IST [41136] STATEMENT: select "enrolments"."section_id, enrolments"."id" from "enrolments" inner join "users" on "users"."id" = "enrolments"."user_id" inner join "students" on "students"."user_id" = "users"."id" inner join "sections" on "sections"."id" = "enrolments"."section_id" inner join "classes" on "classes"."id" = "sections"."class_id" where "classes"."academic_year_id" = $1 and "users"."name"::text LIKE $2 or "users"."aadhar_number"::text LIKE $3 or "students"."admission_number"::text LIKE $4 limit 5 -2021-01-24 17:32:01.504 IST [53198] ERROR: column students.admission does not exist at character 166 -2021-01-24 17:32:01.504 IST [53198] STATEMENT: select "enrolments"."id", "enrolments"."section_id", "users"."name", "sections"."name" as "section_name", "classes"."name" as "class_name", "users"."aadhar_number", "students"."admission" from "enrolments" inner join "users" on "users"."id" = "enrolments"."user_id" inner join "students" on "students"."user_id" = "users"."id" inner join "sections" on "sections"."id" = "enrolments"."section_id" inner join "classes" on "classes"."id" = "sections"."class_id" where "classes"."academic_year_id" = $1 and "users"."name"::text LIKE $2 or "users"."aadhar_number"::text LIKE $3 or "students"."admission_number"::text LIKE $4 limit 5 -2021-01-24 17:42:19.170 IST [15965] ERROR: invalid input syntax for type bigint: "undefined" -2021-01-24 17:42:19.170 IST [15965] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1 -2021-01-24 17:42:19.170 IST [15967] ERROR: invalid input syntax for type bigint: "undefined" -2021-01-24 17:42:19.170 IST [15967] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1 -2021-01-24 17:42:33.397 IST [34326] ERROR: invalid input syntax for type bigint: "undefined" -2021-01-24 17:42:33.397 IST [34326] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1 -2021-01-24 17:42:33.397 IST [34328] ERROR: invalid input syntax for type bigint: "undefined" -2021-01-24 17:42:33.397 IST [34328] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1 -2021-01-24 17:42:49.746 IST [55543] ERROR: invalid input syntax for type bigint: "undefined" -2021-01-24 17:42:49.746 IST [55543] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1 -2021-01-24 17:42:49.746 IST [55544] ERROR: invalid input syntax for type bigint: "undefined" -2021-01-24 17:42:49.746 IST [55544] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1 -2021-01-24 18:05:18.709 IST [36131] ERROR: column sections.standard_id does not exist at character 87 -2021-01-24 18:05:18.709 IST [36131] STATEMENT: select count(*) as aggregate from "sections" inner join "classes" on "classes"."id" = "sections"."standard_id" where "classes"."academic_year_id" = $1 -2021-01-24 18:06:14.567 IST [276] ERROR: column sections.standard_id does not exist at character 87 -2021-01-24 18:06:14.567 IST [276] STATEMENT: select count(*) as aggregate from "sections" inner join "classes" on "classes"."id" = "sections"."standard_id" where "classes"."class_id" = $1 -2021-01-24 19:17:35.056 IST [61561] ERROR: syntax error at or near ""tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"" at character 10 -2021-01-24 19:17:35.056 IST [61561] STATEMENT: select * "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where c.academic_year_id = 21 -2021-01-24 19:18:40.073 IST [61561] ERROR: syntax error at or near "select" at character 3383 -2021-01-24 19:18:40.073 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - select amount_paid ( - select - sum(amount_paid) - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - ) -2021-01-24 19:18:47.493 IST [61561] ERROR: syntax error at or near "select" at character 3383 -2021-01-24 19:18:47.493 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - select amount_paid ( - select - sum(amount_paid) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - ) -2021-01-24 19:18:57.121 IST [61561] ERROR: syntax error at or near "select" at character 3383 -2021-01-24 19:18:57.121 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - select amount_paid ( - select - sum(amount_paid) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - ) t -2021-01-24 19:19:01.024 IST [61561] ERROR: syntax error at or near "select" at character 3385 -2021-01-24 19:19:01.024 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - select t.amount_paid ( - select - sum(amount_paid) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - ) t -2021-01-24 19:19:33.948 IST [61561] ERROR: syntax error at or near "(" at character 3371 -2021-01-24 19:19:33.948 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - select * ( - select - sum(amount_paid) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - ) t -2021-01-24 19:19:44.475 IST [61561] ERROR: column "amount_paid" does not exist at character 3376 -2021-01-24 19:19:44.475 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - - select - sum(amount_paid) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - -2021-01-24 19:19:49.689 IST [61561] ERROR: column p.amount_paid does not exist at character 3376 -2021-01-24 19:19:49.689 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - - select - sum(p.amount_paid) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - -2021-01-24 19:19:55.495 IST [61561] ERROR: column p.amount does not exist at character 3376 -2021-01-24 19:19:55.495 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - - select - sum(p.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - where - c.academic_year_id = 21 - -2021-01-24 19:20:43.122 IST [61561] ERROR: column p.amount does not exist at character 3376 -2021-01-24 19:20:43.122 IST [61561] HINT: Perhaps you meant to reference the column "pi.amount". -2021-01-24 19:20:43.122 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - - select - sum(p.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - c.academic_year_id = 21 - -2021-01-24 19:21:15.388 IST [61561] ERROR: syntax error at or near "(" at character 3372 -2021-01-24 19:21:15.388 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - - select * ( - select - sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - c.academic_year_id = 21 - ) t - -2021-01-24 19:21:16.736 IST [61561] ERROR: syntax error at or near "(" at character 3372 -2021-01-24 19:21:16.736 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- OTHER - ------------------------------------------- - - select * ( - select - sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - c.academic_year_id = 21 - ) t - -2021-01-24 19:26:28.793 IST [61561] ERROR: date/time field value out of range: "24-01-2021" at character 3877 -2021-01-24 19:26:28.793 IST [61561] HINT: Perhaps you need a different "datestyle" setting. -2021-01-24 19:26:28.793 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - c.created_at BETWEEN '01-06-2020' and '24-01-2021' - and c.academic_year_id = 21; -2021-01-24 19:31:46.134 IST [61561] ERROR: column fa.section_id does not exist at character 4320 -2021-01-24 19:31:46.134 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - -- select - -- sum(pi.amount) as amount_paid - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - -- where - -- p.created_at BETWEEN '2019-06-01' - -- and '2021-01-24' - -- and c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - - SELECT - * - FROM - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id - AND fa.feeable_type = 'section' - WHERE fa.academic_year_id = 21 - group by fa.section_id -2021-01-24 19:31:57.880 IST [61561] ERROR: column "fa.id" must appear in the GROUP BY clause or be used in an aggregate function at character 4092 -2021-01-24 19:31:57.880 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - -- select - -- sum(pi.amount) as amount_paid - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - -- where - -- p.created_at BETWEEN '2019-06-01' - -- and '2021-01-24' - -- and c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - - SELECT - * - FROM - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id - AND fa.feeable_type = 'section' - WHERE fa.academic_year_id = 21 - group by s.id -2021-01-24 19:32:08.697 IST [61561] ERROR: missing FROM-clause entry for table "sa" at character 4096 -2021-01-24 19:32:08.697 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - -- select - -- sum(pi.amount) as amount_paid - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - -- where - -- p.created_at BETWEEN '2019-06-01' - -- and '2021-01-24' - -- and c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - - SELECT - *, - sa.id as section_id - FROM - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id - AND fa.feeable_type = 'section' - WHERE fa.academic_year_id = 21 - group by s.id -2021-01-24 19:32:26.762 IST [61561] ERROR: column "fa.id" must appear in the GROUP BY clause or be used in an aggregate function at character 4092 -2021-01-24 19:32:26.762 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - -- select - -- sum(pi.amount) as amount_paid - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - -- where - -- p.created_at BETWEEN '2019-06-01' - -- and '2021-01-24' - -- and c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - - SELECT - *, - s.id as section_id - FROM - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id - AND fa.feeable_type = 'section' - WHERE fa.academic_year_id = 21 - group by s.id -2021-01-24 19:33:03.940 IST [61561] ERROR: syntax error at or near "FROM" at character 4114 -2021-01-24 19:33:03.940 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - -- select - -- sum(pi.amount) as amount_paid - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - -- where - -- p.created_at BETWEEN '2019-06-01' - -- and '2021-01-24' - -- and c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - - SELECT - s.id as section_id, - - FROM - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id - AND fa.feeable_type = 'section' - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.section_id = s.id - WHERE fa.academic_year_id = 21 - group by s.id -2021-01-24 19:33:32.053 IST [61561] ERROR: column "fa.amount" must appear in the GROUP BY clause or be used in an aggregate function at character 4114 -2021-01-24 19:33:32.053 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - -- select - -- sum(pi.amount) as amount_paid - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - -- where - -- p.created_at BETWEEN '2019-06-01' - -- and '2021-01-24' - -- and c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - SELECT - s.id as section_id, - fa.amount - FROM - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id - AND fa.feeable_type = 'section' - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.section_id = s.id - WHERE - fa.academic_year_id = 21 - group by - s.id -2021-01-24 19:34:54.376 IST [61561] ERROR: missing FROM-clause entry for table "s" at character 4092 -2021-01-24 19:34:54.376 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - -- select - -- sum(pi.amount) as amount_paid - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - -- where - -- p.created_at BETWEEN '2019-06-01' - -- and '2021-01-24' - -- and c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - SELECT - s.id as section_id, - sum(fa.amount), - count(e.id) as enrolments - FROM - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa - - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.section_id = fa.feeable_id - WHERE - fa.academic_year_id = 21 - group by - s.id -2021-01-24 19:34:58.732 IST [61561] ERROR: missing FROM-clause entry for table "s" at character 4370 -2021-01-24 19:34:58.732 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - -- select - -- sum(pi.amount) as amount_paid - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - -- where - -- p.created_at BETWEEN '2019-06-01' - -- and '2021-01-24' - -- and c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - SELECT - -- s.id as section_id, - sum(fa.amount), - count(e.id) as enrolments - FROM - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa - - JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.section_id = fa.feeable_id - WHERE - fa.academic_year_id = 21 - group by - s.id -2021-01-24 19:48:33.759 IST [61561] ERROR: column "e.section_id" must appear in the GROUP BY clause or be used in an aggregate function at character 3402 -2021-01-24 19:48:33.759 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - p.*, - e.section_id, - c.id as class_id, - c.academic_year_id - -- sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - p.created_at BETWEEN '2019-06-01' - and '2021-01-24' - and p.status = 'paid' - and s.id in (4) - and c.academic_year_id = 21 - group by p.id; -2021-01-24 19:48:59.558 IST [61561] ERROR: column "c.id" must appear in the GROUP BY clause or be used in an aggregate function at character 3420 -2021-01-24 19:48:59.558 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - p.*, - -- e.section_id, - c.id as class_id, - c.academic_year_id - -- sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - p.created_at BETWEEN '2019-06-01' - and '2021-01-24' - and p.status = 'paid' - and s.id in (4) - and c.academic_year_id = 21 - group by p.id; -2021-01-24 19:49:05.206 IST [61561] ERROR: syntax error at or near "from" at character 3499 -2021-01-24 19:49:05.206 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - p.*, - -- e.section_id, - -- c.id as class_id, - -- c.academic_year_id - -- sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - p.created_at BETWEEN '2019-06-01' - and '2021-01-24' - and p.status = 'paid' - and s.id in (4) - and c.academic_year_id = 21 - group by p.id; -2021-01-24 19:49:54.422 IST [61561] ERROR: column "pi.amount" must appear in the GROUP BY clause or be used in an aggregate function at character 3439 -2021-01-24 19:49:54.422 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - p.* - -- , sum(pi.amount) as paid_amount - , pi.amount - -- e.section_id, - -- c.id as class_id, - -- c.academic_year_id - -- sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - p.created_at BETWEEN '2019-06-01' - and '2021-01-24' - and p.status = 'paid' - and s.id in (4) - and c.academic_year_id = 21 - group by p.id; -2021-01-24 19:50:10.578 IST [61561] ERROR: syntax error at or near "e" at character 3435 -2021-01-24 19:50:10.578 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - p.* - , sum(pi.amount) as paid_amount - e.section_id, - -- c.id as class_id, - -- c.academic_year_id - -- sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - p.created_at BETWEEN '2019-06-01' - and '2021-01-24' - and p.status = 'paid' - and s.id in (4) - and c.academic_year_id = 21 - group by p.id; -2021-01-24 19:50:16.778 IST [61561] ERROR: syntax error at or near "e" at character 3435 -2021-01-24 19:50:16.778 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - p.* - , sum(pi.amount) as paid_amount - e.section_id, - -- c.id as class_id, - -- c.academic_year_id - -- sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - p.created_at BETWEEN '2019-06-01' - and '2021-01-24' - and p.status = 'paid' - and s.id in (4) - and c.academic_year_id = 21 - group by p.id, e.section_id; -2021-01-24 19:51:33.455 IST [61561] ERROR: syntax error at or near "," at character 3433 -2021-01-24 19:51:33.455 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - p.id - , s.class_id - , e.section_id, - , p.enrolment_id - , sum(pi.amount) as paid_amount - - -- c.id as class_id, - -- c.academic_year_id - -- sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - p.created_at BETWEEN '2019-06-01' - and '2021-01-24' - and p.status = 'paid' - and s.id in (4) - and c.academic_year_id = 21 - group by p.id, s.class_id, e.section_id, p.enrolment_id; -2021-01-24 19:52:33.123 IST [61561] ERROR: column "c.academic_year_id" must appear in the GROUP BY clause or be used in an aggregate function at character 3486 -2021-01-24 19:52:33.123 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi - -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id - -- where p.enrolment_id = 1 - -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%' - -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE; - -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434' - -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340 - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments" - -- where - -- exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "name" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and "aadhar_number" :: text LIKE '%maya%' - -- and "users"."deleted_at" is null - -- ) - -- or exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users" - -- where - -- "enrolments"."user_id" = "users"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students" - -- where - -- "users"."id" = "students"."user_id" - -- and "admission_number" :: text LIKE '%maya%' - -- ) - -- and "users"."deleted_at" is null - -- ) - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections" - -- where - -- "enrolments"."section_id" = "sections"."id" - -- and exists ( - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes" - -- where - -- "sections"."class_id" = "classes"."id" - -- and "academic_year_id" = 21 - -- ) - -- ) - -- limit - -- 5 - ------------------------------------------- - -- AUTO COMPLETE - ------------------------------------------- - -- select - -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21 - -- and u.name like '%maya%' - -- or st.admission_number like '%maya%' - -- or u.aadhar_number like '%maya%' - ------------------------------------------- - -- SECTIONS - ------------------------------------------- - -- select - -- * - -- from - -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s - -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - -- where - -- c.academic_year_id = 21; - ------------------------------------------- - -- AMOUNT PAID BY Academic Year ID - ------------------------------------------- - select - p.id - , s.class_id - , e.section_id - , p.enrolment_id - , sum(pi.amount) as paid_amount - , c.academic_year_id - -- c.id as class_id, - -- c.academic_year_id - -- sum(pi.amount) as amount_paid - from - "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id - join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id - where - p.created_at BETWEEN '2019-06-01' - and '2021-01-24' - and p.status = 'paid' - and s.id in (4) - and c.academic_year_id = 21 - group by p.id, s.class_id, e.section_id, p.enrolment_id; -2021-01-24 19:56:39.082 IST [61561] ERROR: relation "payments" does not exist at character 225 -2021-01-24 19:56:39.082 IST [61561] STATEMENT: select - p.id as payment_id, - p.type, - p.mode, - p.status, - p.dd_cheque_number, - s.class_id, - e.section_id, - p.enrolment_id, - sum(pi.amount) as paid_amount, - c.academic_year_id, - p.created_at, - p.updated_at - from - payments p - join enrolments e on e.id = p.enrolment_id - join sections s on s.id = e.section_id - join classes c on c.id = s.class_id - join payment_items pi on pi.payment_id = p.id - group by - p.id, - s.class_id, - e.section_id, - p.enrolment_id, - c.academic_year_id; -2021-01-24 19:57:21.731 IST [61561] ERROR: relation "payments" does not exist at character 244 -2021-01-24 19:57:21.731 IST [61561] STATEMENT: CREATE VIEW payments_view AS - SELECT - p.id AS payment_id, - p.type, - p.mode, - p.status, - p.dd_cheque_number, - s.class_id, - e.section_id, - p.enrolment_id, - sum( - pi.amount) AS paid_amount, - c.academic_year_id, - p.created_at, - p.updated_at - FROM - payments p - JOIN enrolments e ON e.id = p.enrolment_id - JOIN sections s ON s.id = e.section_id - JOIN classes c ON c.id = s.class_id - JOIN payment_items pi ON pi.payment_id = p.id - GROUP BY - p.id, - s.class_id, - e.section_id, - p.enrolment_id, - c.academic_year_id; -2021-01-24 19:57:48.605 IST [61561] ERROR: invalid input syntax for type oid: "" at character 1397 -2021-01-24 19:57:48.605 IST [61561] STATEMENT: SELECT c.conname AS constraint_name,(SELECT STRING_AGG(QUOTE_IDENT(a.attname),','ORDER BY t.seq)FROM(SELECT ROW_NUMBER()OVER(ROWS UNBOUNDED PRECEDING)AS seq,attnum FROM UNNEST(c.conkey)AS t(attnum))AS t INNER JOIN pg_attribute AS a ON a.attrelid=c.conrelid AND a.attnum=t.attnum)AS child_column,tt.schema as parent_schema,tt.name AS parent_name,(SELECT STRING_AGG(QUOTE_IDENT(a.attname),','ORDER BY t.seq)FROM(SELECT ROW_NUMBER()OVER(ROWS UNBOUNDED PRECEDING)AS seq,attnum FROM UNNEST(c.confkey)AS t(attnum))AS t INNER JOIN pg_attribute AS a ON a.attrelid=c.confrelid AND a.attnum=t.attnum)AS parent_column,CASE confupdtype WHEN'r'THEN'restrict'WHEN'c'THEN'cascade'WHEN'n'THEN'set null'WHEN'd'THEN'set default'WHEN'a'THEN'no action'ELSE NULL END AS on_update,CASE confdeltype WHEN'r'THEN'restrict'WHEN'c'THEN'cascade'WHEN'n'THEN'set null'WHEN'd'THEN'set default'WHEN'a'THEN'no action'ELSE NULL END AS on_delete FROM pg_catalog.pg_constraint AS c INNER JOIN(SELECT pg_class.oid,QUOTE_IDENT(pg_namespace.nspname)as schema,QUOTE_IDENT(pg_class.relname)AS name FROM pg_class INNER JOIN pg_namespace ON pg_class.relnamespace=pg_namespace.oid)AS tf ON tf.oid=c.conrelid INNER JOIN(SELECT pg_class.oid,QUOTE_IDENT(pg_namespace.nspname)as schema,QUOTE_IDENT(pg_class.relname)AS name FROM pg_class INNER JOIN pg_namespace ON pg_class.relnamespace=pg_namespace.oid)AS tt ON tt.oid=c.confrelid WHERE tf.oid='' AND c.contype='f'; -2021-01-24 19:58:16.168 IST [61561] ERROR: relation "payments" does not exist at character 286 -2021-01-24 19:58:16.168 IST [61561] STATEMENT: CREATE VIEW "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."payments_view" AS SELECT - p.id AS payment_id, - p.type, - p.mode, - p.status, - p.dd_cheque_number, - s.class_id, - e.section_id, - p.enrolment_id, - sum(pi.amount) AS paid_amount, - c.academic_year_id, - p.created_at, - p.updated_at - FROM - payments p - JOIN enrolments e ON e.id = p.enrolment_id - JOIN sections s ON s.id = e.section_id - JOIN classes c ON c.id = s.class_id - JOIN payment_items pi ON pi.payment_id = p.id - GROUP BY - p.id, - s.class_id, - e.section_id, - p.enrolment_id, - c.academic_year_id; -2021-01-25 00:02:22.238 IST [61561] ERROR: duplicate key value violates unique constraint "terms_pkey" -2021-01-25 00:02:22.238 IST [61561] DETAIL: Key (id)=(4) already exists. -2021-01-25 00:02:22.238 IST [61561] STATEMENT: UPDATE "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."terms" SET "id" = '4' WHERE "id" = '11'; -2021-01-25 00:02:51.913 IST [61561] ERROR: duplicate key value violates unique constraint "terms_pkey" -2021-01-25 00:02:51.913 IST [61561] DETAIL: Key (id)=(2) already exists. -2021-01-25 00:02:51.913 IST [61561] STATEMENT: UPDATE "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."terms" SET "id" = '2' WHERE "id" = '9'; -2021-01-25 00:11:59.847 IST [61561] ERROR: null value in column "amount" of relation "fee_assignments" violates not-null constraint -2021-01-25 00:11:59.847 IST [61561] DETAIL: Failing row contains (1, null, null, null, null, null, null, null, null, null, null, null). -2021-01-25 00:11:59.847 IST [61561] STATEMENT: INSERT INTO "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."fee_assignments" VALUES (DEFAULT); -2021-01-25 00:12:14.126 IST [61561] ERROR: insert or update on table "fee_assignments" violates foreign key constraint "fee_assignments_fee_type_id_foreign" -2021-01-25 00:12:14.126 IST [61561] DETAIL: Key (fee_type_id)=(89) is not present in table "fee_types". -2021-01-25 00:12:14.126 IST [61561] STATEMENT: INSERT INTO "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."fee_assignments" ("id", "amount", "amount_new_admission", "fee_type_id", "academic_year_id", "term_id", "feeable_type", "feeable_id", "created_at") VALUES ('8253', '2340', '0', '89', '56', '5', 'section', '50', '2020-06-23 16:02:59.271264'); -2021-01-25 00:14:27.104 IST [61561] ERROR: insert or update on table "fee_assignments" violates foreign key constraint "fee_assignments_term_id_foreign" -2021-01-25 00:14:27.104 IST [61561] DETAIL: Key (term_id)=(5) is not present in table "terms". -2021-01-25 00:14:27.104 IST [61561] STATEMENT: INSERT INTO "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."fee_assignments" ("id", "amount", "amount_new_admission", "fee_type_id", "academic_year_id", "term_id", "feeable_type", "feeable_id", "created_at") VALUES ('8253', '2340', '0', '89', '56', '5', 'section', '50', '2020-06-23 16:02:59.271264'); -2021-04-13 13:56:20.424 IST [39875] LOG: starting PostgreSQL 13.2 on x86_64-apple-darwin20.3.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29), 64-bit -2021-04-13 13:56:20.428 IST [39875] LOG: listening on IPv6 address "::1", port 5432 -2021-04-13 13:56:20.428 IST [39875] LOG: listening on IPv4 address "127.0.0.1", port 5432 -2021-04-13 13:56:20.434 IST [39875] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" -2021-04-13 13:56:20.447 IST [39876] LOG: database system was interrupted; last known up at 2021-04-07 21:56:31 IST -2021-04-13 13:56:20.630 IST [39876] LOG: database system was not properly shut down; automatic recovery in progress -2021-04-13 13:56:20.634 IST [39876] LOG: redo starts at 0/4A1B5D0 -2021-04-13 13:56:20.634 IST [39876] LOG: invalid record length at 0/4A1B6B8: wanted 24, got 0 -2021-04-13 13:56:20.634 IST [39876] LOG: redo done at 0/4A1B680 -2021-04-13 13:56:20.645 IST [39875] LOG: database system is ready to accept connections -2021-04-13 13:57:38.422 IST [39997] ERROR: new row for relation "users" violates check constraint "users_blood_group_check" -2021-04-13 13:57:38.422 IST [39997] DETAIL: Failing row contains (13, Demo Teacher, 1711, null, null, $2y$10$MVlQIOJyYK2gLtDbVP9LNe//4MqnCFwvpNzXvn0c9irwH5ic6gYEK, 1234567890, 123412341239, 1986-10-10, male, null, null, A+, null, t, null, 2021-04-13 08:27:38, 2021-04-13 08:27:38, null). -2021-04-13 13:57:38.422 IST [39997] STATEMENT: insert into "users" ("username", "name", "phone", "gender", "dob", "blood_group", "aadhar_number", "password", "updated_at", "created_at") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id"