├── .gitignore ├── README.md ├── 2021APR ├── src │ ├── _functions.js │ └── index.js ├── package.json └── package-lock.json ├── .devcontainer ├── devcontainer.json └── Dockerfile ├── data └── bogus.json └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cloudflare-dev-challenge 2 | * [April 2021](https://dev-challenge.adaptive.workers.dev/) 3 | -------------------------------------------------------------------------------- /2021APR/src/_functions.js: -------------------------------------------------------------------------------- 1 | import getDistance from "geolib/es/getDistance"; 2 | 3 | export const distance = (latA, lonA, latB, lonB) => { 4 | return ( 5 | getDistance( 6 | { latitude: latA, longitude: lonA }, 7 | { latitude: latB, longitude: lonB } 8 | ) / 1000 9 | ); 10 | }; 11 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | "dbaeumer.vscode-eslint", 4 | "eg2.vscode-npm-script", 5 | "bungcip.better-toml", 6 | "coenraads.bracket-pair-colorizer", 7 | "mkxml.vscode-filesize", 8 | "github.vscode-pull-request-github", 9 | "github.github-vscode-theme", 10 | "vscode-icons-team.vscode-icons" 11 | ], 12 | "build": { 13 | "dockerfile": "Dockerfile", 14 | "args": { 15 | "VARIANT": "14" 16 | } 17 | }, 18 | "settings": { 19 | "terminal.integrated.shell.linux": "/bin/bash" 20 | }, 21 | "remoteUser": "node", 22 | "postCreateCommand": "npm i" 23 | } 24 | -------------------------------------------------------------------------------- /data/bogus.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "_id": "wb4oq8", 4 | "a": 1000, 5 | "v": "Pylle", 6 | "p": "Glastonbury", 7 | "s": "2021-05-02 10:30:00", 8 | "lat": 51.1462, 9 | "lon": -2.585 10 | }, 11 | { 12 | "_id": "wbkgo6", 13 | "a": 1000, 14 | "v": "Passeio Maritimo de Alcantra", 15 | "p": "Nos Alive", 16 | "s": "2021-05-04 16:00:00", 17 | "lat": 38.697, 18 | "lon": -9.232 19 | }, 20 | { 21 | "_id": "wbd9k7", 22 | "a": 1000, 23 | "v": "Madrid", 24 | "p": "Teatro de Madrid", 25 | "s": "2021-05-06 10:00:00", 26 | "lat": 40.480, 27 | "lon": -3.710 28 | } 29 | ] -------------------------------------------------------------------------------- /2021APR/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cloudflare-dev-challenge", 3 | "version": "2020.04.16-build.1", 4 | "description": "Cloudflare Dev Challenge", 5 | "main": "src/index.js", 6 | "scripts": { 7 | "build": "workers-ci build src/index.js", 8 | "deploy": "workers-ci deploy src/index.js dev-challenge", 9 | "format": "prettier --write 'src/*.{js,json}' --arrow-parens avoid --trailing-comma none" 10 | }, 11 | "author": "Hugo Romano ", 12 | "license": "MIT", 13 | "devDependencies": { 14 | "prettier": "2.2.1", 15 | "workers-ci": "0.1.8" 16 | }, 17 | "dependencies": { 18 | "@adaptivelink/iata": "0.0.7", 19 | "@adaptivelink/pops": "0.2.25", 20 | "geolib": "^3.3.1" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | # See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.158.0/containers/javascript-node/.devcontainer/base.Dockerfile 2 | 3 | # [Choice] Node.js version: 14, 12, 10 4 | ARG VARIANT="14-buster" 5 | FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT} 6 | 7 | # [Optional] Uncomment this section to install additional OS packages. 8 | # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ 9 | # && apt-get -y install --no-install-recommends 10 | 11 | # [Optional] Uncomment if you want to install an additional version of node using nvm 12 | # ARG EXTRA_NODE_VERSION=10 13 | # RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" 14 | 15 | # [Optional] Uncomment if you want to install more global node modules 16 | # RUN su node -c "npm install -g " 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Hugo Romano 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /2021APR/src/index.js: -------------------------------------------------------------------------------- 1 | import { version } from "../package.json"; 2 | import { distance } from "./_functions"; 3 | 4 | import PoPs from "@adaptivelink/pops"; 5 | 6 | var data; 7 | 8 | const handleRequest = async event => { 9 | const parsedUrl = new URL(event.request.url); 10 | const element = parsedUrl.pathname.split("/").filter(n => n); 11 | if (element[0] !== undefined) { 12 | return new Response("404 Not Found", { 13 | status: 404, 14 | statusText: "Not Found" 15 | }); 16 | } 17 | 18 | var lat, lon, concerts; 19 | [lat, lon] = PoPs[event.request.cf.colo].geo; 20 | if (event.request.cf.latitude) lat = event.request.cf.latitude; 21 | if (event.request.cf.longitude) lon = event.request.cf.longitude; 22 | 23 | /* only fetch if not in global variable*/ 24 | if (!data) { 25 | let response = await fetch( 26 | `https://raw.githubusercontent.com/adaptive/cloudflare-dev-challenge/main/data/bogus.json` 27 | ); 28 | data = await response.json(); 29 | } 30 | 31 | concerts = data.map(item => { 32 | const container = {}; 33 | container.venue = item.v; 34 | container.performer = item.p; 35 | container.date = item.s; 36 | container.lat = item.lat; 37 | container.lon = item.lon; 38 | container.distance = distance(lat, lon, item.lat, item.lon); 39 | return container; 40 | }); 41 | /* filter out concert more than 1000KM away */ 42 | const filtered = concerts.filter(x => x.distance < 1000); 43 | 44 | let body = `Concerts Near You

Concerts Near You

`; 45 | 46 | for (var i = 0, l = filtered.length; i < l; i++) { 47 | body += `

${filtered[i].venue}/${filtered[i].performer} @${filtered[i].date}

`; 48 | } 49 | 50 | body += ``; 51 | 52 | return new Response(body, { 53 | status: 200, 54 | headers: { 55 | "x-version": version, 56 | "content-type": "text/html" 57 | } 58 | }); 59 | }; 60 | 61 | addEventListener("fetch", event => event.respondWith(handleRequest(event))); 62 | -------------------------------------------------------------------------------- /2021APR/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cloudflare-dev-challenge", 3 | "version": "2020.04.16-build.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@adaptivelink/iata": { 8 | "version": "0.0.7", 9 | "resolved": "https://registry.npmjs.org/@adaptivelink/iata/-/iata-0.0.7.tgz", 10 | "integrity": "sha512-0uRFxBKruvjgteXRQInGGgM5CmczDtMLawfuLSov0UFDo0dZZJi9hoPgS7Omjhq8QjMZLRsxlR9XlQTI9OdzkA==" 11 | }, 12 | "@adaptivelink/pops": { 13 | "version": "0.2.25", 14 | "resolved": "https://registry.npmjs.org/@adaptivelink/pops/-/pops-0.2.25.tgz", 15 | "integrity": "sha512-11OiLDzUhFr8BTBfakaR/gVWL5DaoNMTcpDSWLCbUFU5QOMX/ynRWLceUIE7VpL62i/qaSybMHhi4RrFdEUJkQ==" 16 | }, 17 | "@types/eslint": { 18 | "version": "7.2.10", 19 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.10.tgz", 20 | "integrity": "sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ==", 21 | "dev": true, 22 | "requires": { 23 | "@types/estree": "*", 24 | "@types/json-schema": "*" 25 | } 26 | }, 27 | "@types/eslint-scope": { 28 | "version": "3.7.0", 29 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", 30 | "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", 31 | "dev": true, 32 | "requires": { 33 | "@types/eslint": "*", 34 | "@types/estree": "*" 35 | } 36 | }, 37 | "@types/estree": { 38 | "version": "0.0.46", 39 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", 40 | "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", 41 | "dev": true 42 | }, 43 | "@types/json-schema": { 44 | "version": "7.0.7", 45 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", 46 | "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", 47 | "dev": true 48 | }, 49 | "@types/node": { 50 | "version": "14.14.41", 51 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", 52 | "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==", 53 | "dev": true 54 | }, 55 | "@webassemblyjs/ast": { 56 | "version": "1.11.0", 57 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", 58 | "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", 59 | "dev": true, 60 | "requires": { 61 | "@webassemblyjs/helper-numbers": "1.11.0", 62 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0" 63 | } 64 | }, 65 | "@webassemblyjs/floating-point-hex-parser": { 66 | "version": "1.11.0", 67 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", 68 | "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", 69 | "dev": true 70 | }, 71 | "@webassemblyjs/helper-api-error": { 72 | "version": "1.11.0", 73 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", 74 | "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", 75 | "dev": true 76 | }, 77 | "@webassemblyjs/helper-buffer": { 78 | "version": "1.11.0", 79 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", 80 | "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", 81 | "dev": true 82 | }, 83 | "@webassemblyjs/helper-numbers": { 84 | "version": "1.11.0", 85 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", 86 | "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", 87 | "dev": true, 88 | "requires": { 89 | "@webassemblyjs/floating-point-hex-parser": "1.11.0", 90 | "@webassemblyjs/helper-api-error": "1.11.0", 91 | "@xtuc/long": "4.2.2" 92 | } 93 | }, 94 | "@webassemblyjs/helper-wasm-bytecode": { 95 | "version": "1.11.0", 96 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", 97 | "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", 98 | "dev": true 99 | }, 100 | "@webassemblyjs/helper-wasm-section": { 101 | "version": "1.11.0", 102 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", 103 | "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", 104 | "dev": true, 105 | "requires": { 106 | "@webassemblyjs/ast": "1.11.0", 107 | "@webassemblyjs/helper-buffer": "1.11.0", 108 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0", 109 | "@webassemblyjs/wasm-gen": "1.11.0" 110 | } 111 | }, 112 | "@webassemblyjs/ieee754": { 113 | "version": "1.11.0", 114 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", 115 | "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", 116 | "dev": true, 117 | "requires": { 118 | "@xtuc/ieee754": "^1.2.0" 119 | } 120 | }, 121 | "@webassemblyjs/leb128": { 122 | "version": "1.11.0", 123 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", 124 | "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", 125 | "dev": true, 126 | "requires": { 127 | "@xtuc/long": "4.2.2" 128 | } 129 | }, 130 | "@webassemblyjs/utf8": { 131 | "version": "1.11.0", 132 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", 133 | "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", 134 | "dev": true 135 | }, 136 | "@webassemblyjs/wasm-edit": { 137 | "version": "1.11.0", 138 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", 139 | "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", 140 | "dev": true, 141 | "requires": { 142 | "@webassemblyjs/ast": "1.11.0", 143 | "@webassemblyjs/helper-buffer": "1.11.0", 144 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0", 145 | "@webassemblyjs/helper-wasm-section": "1.11.0", 146 | "@webassemblyjs/wasm-gen": "1.11.0", 147 | "@webassemblyjs/wasm-opt": "1.11.0", 148 | "@webassemblyjs/wasm-parser": "1.11.0", 149 | "@webassemblyjs/wast-printer": "1.11.0" 150 | } 151 | }, 152 | "@webassemblyjs/wasm-gen": { 153 | "version": "1.11.0", 154 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", 155 | "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", 156 | "dev": true, 157 | "requires": { 158 | "@webassemblyjs/ast": "1.11.0", 159 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0", 160 | "@webassemblyjs/ieee754": "1.11.0", 161 | "@webassemblyjs/leb128": "1.11.0", 162 | "@webassemblyjs/utf8": "1.11.0" 163 | } 164 | }, 165 | "@webassemblyjs/wasm-opt": { 166 | "version": "1.11.0", 167 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", 168 | "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", 169 | "dev": true, 170 | "requires": { 171 | "@webassemblyjs/ast": "1.11.0", 172 | "@webassemblyjs/helper-buffer": "1.11.0", 173 | "@webassemblyjs/wasm-gen": "1.11.0", 174 | "@webassemblyjs/wasm-parser": "1.11.0" 175 | } 176 | }, 177 | "@webassemblyjs/wasm-parser": { 178 | "version": "1.11.0", 179 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", 180 | "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", 181 | "dev": true, 182 | "requires": { 183 | "@webassemblyjs/ast": "1.11.0", 184 | "@webassemblyjs/helper-api-error": "1.11.0", 185 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0", 186 | "@webassemblyjs/ieee754": "1.11.0", 187 | "@webassemblyjs/leb128": "1.11.0", 188 | "@webassemblyjs/utf8": "1.11.0" 189 | } 190 | }, 191 | "@webassemblyjs/wast-printer": { 192 | "version": "1.11.0", 193 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", 194 | "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", 195 | "dev": true, 196 | "requires": { 197 | "@webassemblyjs/ast": "1.11.0", 198 | "@xtuc/long": "4.2.2" 199 | } 200 | }, 201 | "@xtuc/ieee754": { 202 | "version": "1.2.0", 203 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 204 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 205 | "dev": true 206 | }, 207 | "@xtuc/long": { 208 | "version": "4.2.2", 209 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 210 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 211 | "dev": true 212 | }, 213 | "acorn": { 214 | "version": "8.1.1", 215 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.1.tgz", 216 | "integrity": "sha512-xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g==", 217 | "dev": true 218 | }, 219 | "ajv": { 220 | "version": "6.12.6", 221 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 222 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 223 | "dev": true, 224 | "requires": { 225 | "fast-deep-equal": "^3.1.1", 226 | "fast-json-stable-stringify": "^2.0.0", 227 | "json-schema-traverse": "^0.4.1", 228 | "uri-js": "^4.2.2" 229 | } 230 | }, 231 | "ajv-keywords": { 232 | "version": "3.5.2", 233 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 234 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 235 | "dev": true 236 | }, 237 | "ansi-regex": { 238 | "version": "5.0.0", 239 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 240 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 241 | "dev": true 242 | }, 243 | "ansi-styles": { 244 | "version": "4.3.0", 245 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 246 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 247 | "dev": true, 248 | "requires": { 249 | "color-convert": "^2.0.1" 250 | } 251 | }, 252 | "browserslist": { 253 | "version": "4.16.6", 254 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", 255 | "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", 256 | "dev": true, 257 | "requires": { 258 | "caniuse-lite": "^1.0.30001219", 259 | "colorette": "^1.2.2", 260 | "electron-to-chromium": "^1.3.723", 261 | "escalade": "^3.1.1", 262 | "node-releases": "^1.1.71" 263 | }, 264 | "dependencies": { 265 | "caniuse-lite": { 266 | "version": "1.0.30001230", 267 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", 268 | "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", 269 | "dev": true 270 | }, 271 | "electron-to-chromium": { 272 | "version": "1.3.740", 273 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.740.tgz", 274 | "integrity": "sha512-Mi2m55JrX2BFbNZGKYR+2ItcGnR4O5HhrvgoRRyZQlaMGQULqDhoGkLWHzJoshSzi7k1PUofxcDbNhlFrDZNhg==", 275 | "dev": true 276 | } 277 | } 278 | }, 279 | "buffer-from": { 280 | "version": "1.1.1", 281 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 282 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 283 | "dev": true 284 | }, 285 | "chrome-trace-event": { 286 | "version": "1.0.3", 287 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 288 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", 289 | "dev": true 290 | }, 291 | "cliui": { 292 | "version": "7.0.4", 293 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 294 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 295 | "dev": true, 296 | "requires": { 297 | "string-width": "^4.2.0", 298 | "strip-ansi": "^6.0.0", 299 | "wrap-ansi": "^7.0.0" 300 | } 301 | }, 302 | "color-convert": { 303 | "version": "2.0.1", 304 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 305 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 306 | "dev": true, 307 | "requires": { 308 | "color-name": "~1.1.4" 309 | } 310 | }, 311 | "color-name": { 312 | "version": "1.1.4", 313 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 314 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 315 | "dev": true 316 | }, 317 | "colorette": { 318 | "version": "1.2.2", 319 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", 320 | "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", 321 | "dev": true 322 | }, 323 | "commander": { 324 | "version": "2.20.3", 325 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 326 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 327 | "dev": true 328 | }, 329 | "emoji-regex": { 330 | "version": "8.0.0", 331 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 332 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 333 | "dev": true 334 | }, 335 | "enhanced-resolve": { 336 | "version": "5.7.0", 337 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", 338 | "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", 339 | "dev": true, 340 | "requires": { 341 | "graceful-fs": "^4.2.4", 342 | "tapable": "^2.2.0" 343 | } 344 | }, 345 | "es-module-lexer": { 346 | "version": "0.4.1", 347 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", 348 | "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", 349 | "dev": true 350 | }, 351 | "escalade": { 352 | "version": "3.1.1", 353 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 354 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 355 | "dev": true 356 | }, 357 | "eslint-scope": { 358 | "version": "5.1.1", 359 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 360 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 361 | "dev": true, 362 | "requires": { 363 | "esrecurse": "^4.3.0", 364 | "estraverse": "^4.1.1" 365 | } 366 | }, 367 | "esrecurse": { 368 | "version": "4.3.0", 369 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 370 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 371 | "dev": true, 372 | "requires": { 373 | "estraverse": "^5.2.0" 374 | }, 375 | "dependencies": { 376 | "estraverse": { 377 | "version": "5.2.0", 378 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 379 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 380 | "dev": true 381 | } 382 | } 383 | }, 384 | "estraverse": { 385 | "version": "4.3.0", 386 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 387 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 388 | "dev": true 389 | }, 390 | "events": { 391 | "version": "3.3.0", 392 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 393 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 394 | "dev": true 395 | }, 396 | "fast-deep-equal": { 397 | "version": "3.1.3", 398 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 399 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 400 | "dev": true 401 | }, 402 | "fast-json-stable-stringify": { 403 | "version": "2.1.0", 404 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 405 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 406 | "dev": true 407 | }, 408 | "geolib": { 409 | "version": "3.3.1", 410 | "resolved": "https://registry.npmjs.org/geolib/-/geolib-3.3.1.tgz", 411 | "integrity": "sha512-sfahBXFcgELdpumDZV5b3KWiINkZxC5myAkLk067UUcTmTXaiE9SWmxMEHztn/Eus4JX6kesHxaIuZlniYgUtg==" 412 | }, 413 | "get-caller-file": { 414 | "version": "2.0.5", 415 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 416 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 417 | "dev": true 418 | }, 419 | "glob-to-regexp": { 420 | "version": "0.4.1", 421 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 422 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 423 | "dev": true 424 | }, 425 | "graceful-fs": { 426 | "version": "4.2.6", 427 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", 428 | "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", 429 | "dev": true 430 | }, 431 | "has-flag": { 432 | "version": "4.0.0", 433 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 434 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 435 | "dev": true 436 | }, 437 | "is-fullwidth-code-point": { 438 | "version": "3.0.0", 439 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 440 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 441 | "dev": true 442 | }, 443 | "isomorphic-fetch": { 444 | "version": "3.0.0", 445 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", 446 | "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", 447 | "dev": true, 448 | "requires": { 449 | "node-fetch": "^2.6.1", 450 | "whatwg-fetch": "^3.4.1" 451 | } 452 | }, 453 | "jest-worker": { 454 | "version": "26.6.2", 455 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", 456 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", 457 | "dev": true, 458 | "requires": { 459 | "@types/node": "*", 460 | "merge-stream": "^2.0.0", 461 | "supports-color": "^7.0.0" 462 | } 463 | }, 464 | "json-parse-better-errors": { 465 | "version": "1.0.2", 466 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 467 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 468 | "dev": true 469 | }, 470 | "json-schema-traverse": { 471 | "version": "0.4.1", 472 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 473 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 474 | "dev": true 475 | }, 476 | "loader-runner": { 477 | "version": "4.2.0", 478 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", 479 | "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", 480 | "dev": true 481 | }, 482 | "merge-stream": { 483 | "version": "2.0.0", 484 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 485 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 486 | "dev": true 487 | }, 488 | "mime-db": { 489 | "version": "1.47.0", 490 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", 491 | "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", 492 | "dev": true 493 | }, 494 | "mime-types": { 495 | "version": "2.1.30", 496 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", 497 | "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", 498 | "dev": true, 499 | "requires": { 500 | "mime-db": "1.47.0" 501 | } 502 | }, 503 | "neo-async": { 504 | "version": "2.6.2", 505 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 506 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 507 | "dev": true 508 | }, 509 | "node-fetch": { 510 | "version": "2.6.1", 511 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 512 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", 513 | "dev": true 514 | }, 515 | "node-releases": { 516 | "version": "1.1.71", 517 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", 518 | "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", 519 | "dev": true 520 | }, 521 | "p-limit": { 522 | "version": "3.1.0", 523 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 524 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 525 | "dev": true, 526 | "requires": { 527 | "yocto-queue": "^0.1.0" 528 | } 529 | }, 530 | "prettier": { 531 | "version": "2.2.1", 532 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", 533 | "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", 534 | "dev": true 535 | }, 536 | "punycode": { 537 | "version": "2.1.1", 538 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 539 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 540 | "dev": true 541 | }, 542 | "randombytes": { 543 | "version": "2.1.0", 544 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 545 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 546 | "dev": true, 547 | "requires": { 548 | "safe-buffer": "^5.1.0" 549 | } 550 | }, 551 | "require-directory": { 552 | "version": "2.1.1", 553 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 554 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 555 | "dev": true 556 | }, 557 | "safe-buffer": { 558 | "version": "5.2.1", 559 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 560 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 561 | "dev": true 562 | }, 563 | "schema-utils": { 564 | "version": "3.0.0", 565 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", 566 | "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", 567 | "dev": true, 568 | "requires": { 569 | "@types/json-schema": "^7.0.6", 570 | "ajv": "^6.12.5", 571 | "ajv-keywords": "^3.5.2" 572 | } 573 | }, 574 | "serialize-javascript": { 575 | "version": "5.0.1", 576 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", 577 | "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", 578 | "dev": true, 579 | "requires": { 580 | "randombytes": "^2.1.0" 581 | } 582 | }, 583 | "source-list-map": { 584 | "version": "2.0.1", 585 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", 586 | "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", 587 | "dev": true 588 | }, 589 | "source-map": { 590 | "version": "0.6.1", 591 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 592 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 593 | "dev": true 594 | }, 595 | "source-map-support": { 596 | "version": "0.5.19", 597 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 598 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 599 | "dev": true, 600 | "requires": { 601 | "buffer-from": "^1.0.0", 602 | "source-map": "^0.6.0" 603 | } 604 | }, 605 | "string-width": { 606 | "version": "4.2.2", 607 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 608 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 609 | "dev": true, 610 | "requires": { 611 | "emoji-regex": "^8.0.0", 612 | "is-fullwidth-code-point": "^3.0.0", 613 | "strip-ansi": "^6.0.0" 614 | } 615 | }, 616 | "strip-ansi": { 617 | "version": "6.0.0", 618 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 619 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 620 | "dev": true, 621 | "requires": { 622 | "ansi-regex": "^5.0.0" 623 | } 624 | }, 625 | "supports-color": { 626 | "version": "7.2.0", 627 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 628 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 629 | "dev": true, 630 | "requires": { 631 | "has-flag": "^4.0.0" 632 | } 633 | }, 634 | "tapable": { 635 | "version": "2.2.0", 636 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", 637 | "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", 638 | "dev": true 639 | }, 640 | "terser": { 641 | "version": "5.6.1", 642 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", 643 | "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", 644 | "dev": true, 645 | "requires": { 646 | "commander": "^2.20.0", 647 | "source-map": "~0.7.2", 648 | "source-map-support": "~0.5.19" 649 | }, 650 | "dependencies": { 651 | "source-map": { 652 | "version": "0.7.3", 653 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 654 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 655 | "dev": true 656 | } 657 | } 658 | }, 659 | "terser-webpack-plugin": { 660 | "version": "5.1.1", 661 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", 662 | "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", 663 | "dev": true, 664 | "requires": { 665 | "jest-worker": "^26.6.2", 666 | "p-limit": "^3.1.0", 667 | "schema-utils": "^3.0.0", 668 | "serialize-javascript": "^5.0.1", 669 | "source-map": "^0.6.1", 670 | "terser": "^5.5.1" 671 | } 672 | }, 673 | "uri-js": { 674 | "version": "4.4.1", 675 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 676 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 677 | "dev": true, 678 | "requires": { 679 | "punycode": "^2.1.0" 680 | } 681 | }, 682 | "watchpack": { 683 | "version": "2.1.1", 684 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", 685 | "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", 686 | "dev": true, 687 | "requires": { 688 | "glob-to-regexp": "^0.4.1", 689 | "graceful-fs": "^4.1.2" 690 | } 691 | }, 692 | "webpack": { 693 | "version": "5.33.2", 694 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.33.2.tgz", 695 | "integrity": "sha512-X4b7F1sYBmJx8mlh2B7mV5szEkE0jYNJ2y3akgAP0ERi0vLCG1VvdsIxt8lFd4st6SUy0lf7W0CCQS566MBpJg==", 696 | "dev": true, 697 | "requires": { 698 | "@types/eslint-scope": "^3.7.0", 699 | "@types/estree": "^0.0.46", 700 | "@webassemblyjs/ast": "1.11.0", 701 | "@webassemblyjs/wasm-edit": "1.11.0", 702 | "@webassemblyjs/wasm-parser": "1.11.0", 703 | "acorn": "^8.0.4", 704 | "browserslist": "^4.14.5", 705 | "chrome-trace-event": "^1.0.2", 706 | "enhanced-resolve": "^5.7.0", 707 | "es-module-lexer": "^0.4.0", 708 | "eslint-scope": "^5.1.1", 709 | "events": "^3.2.0", 710 | "glob-to-regexp": "^0.4.1", 711 | "graceful-fs": "^4.2.4", 712 | "json-parse-better-errors": "^1.0.2", 713 | "loader-runner": "^4.2.0", 714 | "mime-types": "^2.1.27", 715 | "neo-async": "^2.6.2", 716 | "schema-utils": "^3.0.0", 717 | "tapable": "^2.1.1", 718 | "terser-webpack-plugin": "^5.1.1", 719 | "watchpack": "^2.0.0", 720 | "webpack-sources": "^2.1.1" 721 | } 722 | }, 723 | "webpack-sources": { 724 | "version": "2.2.0", 725 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", 726 | "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", 727 | "dev": true, 728 | "requires": { 729 | "source-list-map": "^2.0.1", 730 | "source-map": "^0.6.1" 731 | } 732 | }, 733 | "whatwg-fetch": { 734 | "version": "3.6.2", 735 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", 736 | "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", 737 | "dev": true 738 | }, 739 | "workers-ci": { 740 | "version": "0.1.8", 741 | "resolved": "https://registry.npmjs.org/workers-ci/-/workers-ci-0.1.8.tgz", 742 | "integrity": "sha512-x6chdctlCdUyzTxZiEsFuoC5lkqJPrKCjQ182FsiguooZDOX8jMSUE1+PIDMbh6ZvF8iGcmpj2qvN/xI9qxlMQ==", 743 | "dev": true, 744 | "requires": { 745 | "isomorphic-fetch": "3.0.0", 746 | "webpack": "5.33.2", 747 | "yargs": "16.2.0" 748 | } 749 | }, 750 | "wrap-ansi": { 751 | "version": "7.0.0", 752 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 753 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 754 | "dev": true, 755 | "requires": { 756 | "ansi-styles": "^4.0.0", 757 | "string-width": "^4.1.0", 758 | "strip-ansi": "^6.0.0" 759 | } 760 | }, 761 | "y18n": { 762 | "version": "5.0.8", 763 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 764 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 765 | "dev": true 766 | }, 767 | "yargs": { 768 | "version": "16.2.0", 769 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 770 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 771 | "dev": true, 772 | "requires": { 773 | "cliui": "^7.0.2", 774 | "escalade": "^3.1.1", 775 | "get-caller-file": "^2.0.5", 776 | "require-directory": "^2.1.1", 777 | "string-width": "^4.2.0", 778 | "y18n": "^5.0.5", 779 | "yargs-parser": "^20.2.2" 780 | } 781 | }, 782 | "yargs-parser": { 783 | "version": "20.2.7", 784 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", 785 | "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", 786 | "dev": true 787 | }, 788 | "yocto-queue": { 789 | "version": "0.1.0", 790 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 791 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 792 | "dev": true 793 | } 794 | } 795 | } 796 | --------------------------------------------------------------------------------