1
0
mirror of https://github.com/uetchy/namae.git synced 2025-03-17 04:30:31 +09:00

feat: Heroku and Now

This commit is contained in:
uetchy 2019-08-27 03:15:35 +09:00
parent 50600a3c87
commit df56b21a99
40 changed files with 652 additions and 807 deletions

View File

@ -5,16 +5,16 @@
"test": "jest"
},
"dependencies": {
"google-it": "^1.2.0",
"google-it": "^1.2.1",
"isomorphic-unfetch": "^3.0.0",
"npm-name": "^5.5.0",
"whois-json": "^2.0.4"
},
"devDependencies": {
"@babel/preset-env": "^7.5.5",
"@types/jest": "^24.0.17",
"babel-jest": "^24.8.0",
"jest": "^24.8.0",
"@types/jest": "^24.0.18",
"babel-jest": "^24.9.0",
"jest": "^24.9.0",
"nock": "^10.0.6"
},
"private": true

View File

@ -4,7 +4,7 @@ module.exports = async (req, res) => {
const { query, country } = req.query
if (!query) {
return res.status(400).json({ error: 'no query given' })
return sendError(res, new Error('no query given'))
}
const term = encodeURIComponent(query)

View File

@ -1,19 +0,0 @@
const { send, sendError, fetch } = require('../util/http')
module.exports = async (req, res) => {
const { query } = req.query
if (!query) {
return res.status(400).json({ error: 'no query given' })
}
try {
const response = await fetch(
`https://crates.io/api/v1/crates/${encodeURIComponent(query)}`
)
const availability = response.status !== 200
send(res, { availability })
} catch (err) {
sendError(res, err)
}
}

25
api/services/existence.js Normal file
View File

@ -0,0 +1,25 @@
const { send, sendError, fetch } = require('../util/http')
module.exports = async (req, res) => {
const { query } = req.query
if (!query) {
return sendError(res, new Error('no query given'))
}
if (
!/^[(http(s)?):\/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/.test(
query
)
) {
return sendError(res, new Error('invalid characters'))
}
try {
const response = await fetch(`https://${query}`)
const availability = response.status === 404
send(res, { availability })
} catch (err) {
sendError(res, err)
}
}

View File

@ -1,13 +1,15 @@
import provider from './github'
import provider from './existence'
import nock from 'nock'
test('return false if name is taken', async () => {
const result = await mockProvider(provider, { query: 'uetchy' })
const result = await mockProvider(provider, { query: 'github.com/uetchy' })
expect(result).toStrictEqual({ availability: false })
})
test('return true if name is not taken', async () => {
const result = await mockProvider(provider, { query: 'uetchyasdf' })
const result = await mockProvider(provider, {
query: 'github.com/uetchyasdf',
})
expect(result).toStrictEqual({ availability: true })
})

View File

@ -1,19 +0,0 @@
const { send, sendError, fetch } = require('../util/http')
module.exports = async (req, res) => {
const { query } = req.query
if (!query) {
return sendError(res, new Error('no query given'))
}
try {
const response = await fetch(
`https://github.com/${encodeURIComponent(query)}`
)
const availability = response.status !== 200
send(res, { availability })
} catch (err) {
sendError(res, err)
}
}

View File

@ -1,19 +0,0 @@
const { send, sendError, fetch } = require('../util/http')
const googleIt = require('google-it')
module.exports = async (req, res) => {
const { query } = req.query
return send(res, { result: [] }) // DISABLE
if (!query) {
return res.status(400).json({ error: 'no query given' })
}
try {
const result = await googleIt({ query: query })
send(res, { result: result || [] })
} catch (err) {
sendError(res, err)
}
}

View File

@ -1,19 +0,0 @@
const { send, sendError, fetch } = require('../util/http')
module.exports = async (req, res) => {
const { query } = req.query
if (!query) {
return sendError(res, new Error('no query given'))
}
try {
const response = await fetch(
`https://pypi.org/pypi/${encodeURIComponent(query)}/json`
)
const availability = response.status !== 200
send(res, { availability })
} catch (err) {
sendError(res, err)
}
}

View File

@ -1,19 +0,0 @@
const { send, sendError, fetch } = require('../util/http')
module.exports = async (req, res) => {
const { query } = req.query
if (!query) {
return sendError(res, new Error('no query given'))
}
try {
const response = await fetch(
`https://rubygems.org/gems/${encodeURIComponent(query)}`
)
const availability = response.status !== 200
send(res, { availability })
} catch (err) {
sendError(res, err)
}
}

View File

@ -1,19 +0,0 @@
const { send, sendError, fetch } = require('../util/http')
module.exports = async (req, res) => {
const { query } = req.query
if (!query) {
return sendError(res, new Error('no query given'))
}
try {
const response = await fetch(
`https://${encodeURIComponent(query)}.s3.amazonaws.com`
)
const availability = response.status !== 200
send(res, { availability })
} catch (err) {
sendError(res, err)
}
}

View File

@ -1,21 +0,0 @@
const { send, sendError, fetch } = require('../util/http')
async function getAvailability(name) {}
module.exports = async (req, res) => {
const { query } = req.query
if (!query) {
return res.status(400).json({ error: 'no query given' })
}
try {
const response = await fetch(
`https://twitter.com/${encodeURIComponent(query)}`
)
const availability = response.status !== 200
send(res, { availability })
} catch (err) {
sendError(res, err)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@
"start": "now dev"
},
"dependencies": {
"now": "^16.1.1"
"now": "^16.1.2"
},
"devDependencies": {
"prettier": "^1.18.2"

View File

@ -11,7 +11,7 @@
},
"dependencies": {
"fetch-suspense": "^1.2.0",
"i18next": ">=14.0.1",
"i18next": ">=17.0.12",
"i18next-browser-languagedetector": "^3.0.3",
"i18next-chained-backend": "^2.0.0",
"i18next-localstorage-backend": "^3.0.0",
@ -26,14 +26,14 @@
"react-icons": "^3.7.0",
"react-router-dom": "^5.0.1",
"react-scripts": "3.1.1",
"react-spinners": "^0.5.13",
"react-spinners": "^0.6.1",
"react-tippy": "^1.2.3",
"styled-components": "^4.3.2"
},
"devDependencies": {
"@testing-library/jest-dom": "^4.0.0",
"@testing-library/react": "^9.1.1",
"@types/jest": "^24.0.17",
"@testing-library/jest-dom": "^4.1.0",
"@testing-library/react": "^9.1.3",
"@types/jest": "^24.0.18",
"i18next-node-fs-backend": "^2.1.3"
},
"browserslist": {

View File

@ -18,8 +18,10 @@
"githubSearch": "Github Repository",
"appStore": "App Store",
"google": "Google Search",
"spectrum": "Spectrum"
"spectrum": "Spectrum",
"heroku": "Heroku",
"now": "ZEIT Now"
},
"countryCode": "us",
"try": "Suggested Name"
"try": "suggestions"
}

View File

@ -18,7 +18,9 @@
"githubSearch": "Github リポジトリ",
"appStore": "App Store",
"google": "Google 検索",
"spectrum": "Spectrum"
"spectrum": "Spectrum",
"heroku": "Heroku",
"now": "ZEIT Now"
},
"countryCode": "jp",
"try": "全自動名前考え機"

View File

@ -3,21 +3,23 @@ import styled, { createGlobalStyle } from 'styled-components'
import { Helmet } from 'react-helmet'
import { useTranslation } from 'react-i18next'
import DomainCard from './components/cards/DomainCard'
import GithubCard from './components/cards/GithubCard'
import NpmCard from './components/cards/NpmCard'
import PypiCard from './components/cards/PypiCard'
import RubyGemsCard from './components/cards/RubyGemsCard'
import CratesioCard from './components/cards/CratesioCard'
import HomebrewCard from './components/cards/HomebrewCard'
import LinuxCard from './components/cards/LinuxCard'
import TwitterCard from './components/cards/TwitterCard'
import SpectrumCard from './components/cards/SpectrumCard'
import SlackCard from './components/cards/SlackCard'
import S3Card from './components/cards/S3Card'
import JsOrgCard from './components/cards/JsOrgCard'
import GithubSearchCard from './components/cards/GithubSearchCard'
import AppStoreCard from './components/cards/AppStoreCard'
import DomainCard from './components/cards/domains'
import GithubCard from './components/cards/github-repository'
import NpmCard from './components/cards/npm'
import PypiCard from './components/cards/pypi'
import RubyGemsCard from './components/cards/rubygems'
import CratesioCard from './components/cards/cratesio'
import HomebrewCard from './components/cards/homebrew'
import LinuxCard from './components/cards/linux'
import TwitterCard from './components/cards/twitter'
import SpectrumCard from './components/cards/spectrum'
import SlackCard from './components/cards/slack'
import S3Card from './components/cards/s3'
import JsOrgCard from './components/cards/jsorg'
import GithubSearchCard from './components/cards/github-search'
import AppStoreCard from './components/cards/appstore'
import HerokuCard from './components/cards/heroku'
import NowCard from './components/cards/now'
import Welcome from './components/Welcome'
import Footer from './components/Footer'
@ -104,8 +106,10 @@ export default function App() {
<TwitterCard query={query} />
<SpectrumCard query={query} />
<SlackCard query={query} />
<S3Card query={query} />
<HerokuCard query={query} />
<NowCard query={query} />
<JsOrgCard query={query} />
<S3Card query={query} />
</Cards>
<Cards>
<GithubSearchCard query={query} />

View File

@ -66,6 +66,7 @@ export function Repeater({ items = [], moreItems = [], children }) {
export function DedicatedAvailability({
name,
query = undefined,
message = '',
messageIfTaken = undefined,
service,
@ -75,7 +76,9 @@ export function DedicatedAvailability({
suffix = '',
icon,
}) {
const response = useFetch(`/availability/${service}/${name}`)
const response = useFetch(
`/availability/${service}/${encodeURIComponent(query || name)}`
)
if (response.error) {
throw new Error(`${service}: ${response.error}`)

View File

@ -12,3 +12,18 @@ export const SpectrumIcon = () => (
<path d="M6 14.5C6 15.3284 6.67157 16 7.5 16H9C12.866 16 16 19.134 16 23V24.5C16 25.3284 16.6716 26 17.5 26H24.5C25.3284 26 26 25.3284 26 24.5V23C26 13.6111 18.3889 6 9 6H7.5C6.67157 6 6 6.67157 6 7.5V14.5Z" />
</svg>
)
export const NowIcon = () => (
<svg
width="1em"
height="1em"
fill="currentColor"
stroke="currentColor"
strokeWidth="0"
viewBox="0 0 114 100"
xmlns="http://www.w3.org/2000/svg">
<g id="Black-Triangle" transform="translate(-293.000000, -150.000000)">
<polygon id="Logotype---Black" points="350 150 407 250 293 250"></polygon>
</g>
</svg>
)

View File

@ -1,40 +0,0 @@
import React from 'react'
import useFetch from 'fetch-suspense'
import { useTranslation } from 'react-i18next'
import { FaGoogle, FaInfoCircle } from 'react-icons/fa'
import { Card, Result } from '../Cards'
function Search({ query }) {
const term = `intitle:"${query}" app -site:dictionary.cambridge.org -site:weblio.jp`
const response = useFetch(`/availability/google/${encodeURIComponent(term)}`)
const items = response.result
return (
<>
{items.length > 0 ? (
items.map((item, i) => (
<Result
title={item.title}
message={item.link}
link={item.link}
icon={<FaGoogle />}
key={i}
/>
))
) : (
<Result title="No Result" icon={<FaInfoCircle />} />
)}
</>
)
}
export default function GoogleCard({ query }) {
const { t } = useTranslation()
return (
<Card title={t('providers.google')}>
<Search query={query} />
</Card>
)
}

View File

@ -16,7 +16,8 @@ export default function CratesioCard({ query }) {
{(name) => (
<DedicatedAvailability
name={name}
service="cratesio"
query={`crates.io/api/v1/crates/${name}`}
service="existence"
link={`https://crates.io/crates/${name}`}
icon={<DiRust />}
/>

View File

@ -22,7 +22,8 @@ export default function GithubCard({ query }) {
{(name) => (
<DedicatedAvailability
name={name}
service="github"
query={`github.com/${name}`}
service="existence"
message="Create GitHub Organization"
link="https://github.com/organizations/new"
messageIfTaken={`Go to github.com/${name}`}

View File

@ -0,0 +1,28 @@
import React from 'react'
import { useTranslation } from 'react-i18next'
import { DiHeroku } from 'react-icons/di'
import { Card, Repeater, DedicatedAvailability } from '../Cards'
export default function HerokuCard({ query }) {
const { t } = useTranslation()
const lowerCase = query.toLowerCase()
const names = [lowerCase]
return (
<Card title={t('providers.heroku')}>
<Repeater items={names}>
{(name) => (
<DedicatedAvailability
name={`${name}.herokuapp.com`}
service="existence"
message="Go to Heroku"
link={`https://${name}.herokuapp.com`}
icon={<DiHeroku />}
/>
)}
</Repeater>
</Card>
)
}

View File

@ -0,0 +1,28 @@
import React from 'react'
import { useTranslation } from 'react-i18next'
import { NowIcon } from '../Icons'
import { Card, Repeater, DedicatedAvailability } from '../Cards'
export default function NowCard({ query }) {
const { t } = useTranslation()
const lowerCase = query.toLowerCase()
const names = [lowerCase]
return (
<Card title={t('providers.now')}>
<Repeater items={names}>
{(name) => (
<DedicatedAvailability
name={`${name}.now.sh`}
service="existence"
message="Go to Now"
link={`https://${name}.now.sh`}
icon={<NowIcon />}
/>
)}
</Repeater>
</Card>
)
}

View File

@ -17,7 +17,8 @@ export default function PypiCard({ query }) {
{(name) => (
<DedicatedAvailability
name={name}
service="pypi"
query={`pypi.org/pypi/${name}/json`}
service="existence"
message="Read Python Packaging User Guide"
link="https://packaging.python.org/"
messageIfTaken="Go to PyPI"

View File

@ -16,7 +16,8 @@ export default function RubyGemsCard({ query }) {
{(name) => (
<DedicatedAvailability
name={name}
service="rubygems"
query={`rubygems.org/gems/${name}`}
service="existence"
message="Read Publishing Guide"
link="https://guides.rubygems.org/publishing/"
messageIfTaken="Go to RubyGems"

View File

@ -16,7 +16,8 @@ export default function S3Card({ query }) {
{(name) => (
<DedicatedAvailability
name={name}
service="s3"
query={`${name}.s3.amazonaws.com`}
service="existence"
message="Go to S3 console"
link="https://s3.console.aws.amazon.com"
messageIfTaken={`Go to ${name}.s3.amazonaws.com`}

View File

@ -26,7 +26,8 @@ export default function TwitterCard({ query }) {
{(name) => (
<DedicatedAvailability
name={name}
service="twitter"
query={`twitter.com/${name}`}
service="existence"
message="Go to Twitter"
link={`https://twitter.com/${name}`}
prefix="twitter.com/"

View File

@ -14,7 +14,7 @@ i18n
backends: [LocalStorageBackend, XHR],
backendOptions: [
{
versions: { en: '1.1', ja: '1.1' },
versions: { en: '1.2', ja: '1.2' },
},
],
},

View File

@ -824,10 +824,10 @@
"@emotion/utils" "0.11.2"
"@emotion/weak-memoize" "0.2.3"
"@emotion/core@^10.0.4":
version "10.0.15"
resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.15.tgz#b8489d85d64b45bd03abdb8a3d9639ba8a0328d0"
integrity sha512-VHwwl3k/ddMfQOHYgOJryXOs2rGJ5AfKLQGm5AVolNonnr6tkmDI4nzIMNaPpveoXVs7sP0OrF24UunIPxveQw==
"@emotion/core@^10.0.15":
version "10.0.16"
resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.16.tgz#e43630b65c84e31e81f34db3286eab584b08cfaa"
integrity sha512-whbiiA7FfPreBY4BqWky2qRfAZvq+4dKQ1WNJuiYQwPCNmb0pEYDgNheSbZoNKtGTtfPaM28hBbZAKWD5EZXmQ==
dependencies:
"@babel/runtime" "^7.4.3"
"@emotion/cache" "^10.0.15"
@ -1213,10 +1213,10 @@
pretty-format "^24.8.0"
wait-for-expect "^1.3.0"
"@testing-library/jest-dom@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-4.0.0.tgz#56eee8dd183fe14a682fda7aca6413ec4e5303d2"
integrity sha512-YQA/LnRRfqHV5YRauawOGgMDgq43XfyqCz3whmxIPyrfvTdjLCNyY/BseGaa48y54yb3oiRo/NZT0oXNMQdkTA==
"@testing-library/jest-dom@^4.1.0":
version "4.1.0"
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-4.1.0.tgz#69d372e54e4e33be3fd34f3848ec0e8e9d099276"
integrity sha512-cKAONDmJKGJ2DSu6R/+lgA8i8uyZIx4CaOiiK0yMjp+2UecH6kfjunJiy5hfExKMtR74eyzFriqO1w9aTC8VyQ==
dependencies:
"@babel/runtime" "^7.5.1"
chalk "^2.4.1"
@ -1228,14 +1228,14 @@
pretty-format "^24.0.0"
redent "^3.0.0"
"@testing-library/react@^9.1.1":
version "9.1.1"
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.1.1.tgz#ee5b15c02b64cfbd14cdcad87fee2ed5f28fc2d1"
integrity sha512-mjX9l/onA5eVe8/4/obe7ZAw05U8s+kinXVglySVOMJo/oCSam9D9Dcg+aYVGsuBEuYV2W9m2LTP4KbNZh8BOw==
"@testing-library/react@^9.1.3":
version "9.1.3"
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.1.3.tgz#3fb495227322ea36cd817532441dabb552e0d6ce"
integrity sha512-qFVo6TsEbpEFpOmKjIxMHDujOKVdvVpcYFcUfJeWBqMO8eja5pN9SZnt6W6AzW3a1MRvRfw3X0Fhx3eXnBJxjA==
dependencies:
"@babel/runtime" "^7.5.5"
"@testing-library/dom" "^6.0.0"
"@types/react-dom" "^16.8.5"
"@types/testing-library__react" "^9.1.0"
"@types/babel__core@^7.1.0":
version "7.1.2"
@ -1300,10 +1300,10 @@
resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89"
integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==
"@types/jest@^24.0.17":
version "24.0.17"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.17.tgz#b66ea026efb746eb5db1356ee28518aaff7af416"
integrity sha512-1cy3xkOAfSYn78dsBWy4M3h/QF/HeWPchNFDjysVtp3GHeTdSmtluNnELfCmfNRRHo0OWEcpf+NsEJQvwQfdqQ==
"@types/jest@^24.0.18":
version "24.0.18"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.18.tgz#9c7858d450c59e2164a8a9df0905fc5091944498"
integrity sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==
dependencies:
"@types/jest-diff" "*"
@ -1312,6 +1312,11 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636"
integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==
"@types/pretty-format@*":
version "20.0.1"
resolved "https://registry.yarnpkg.com/@types/pretty-format/-/pretty-format-20.0.1.tgz#7ce03b403887b087701a2b4534464f48ce7b2f48"
integrity sha512-Oh7wnvVUCtVIWnCHQWe9qDZKn0fGyk5AMq99jXml0x39K59P+z9qe31CNRtop9TceCpS7NmoK+J9eGeCnyFgnw==
"@types/prop-types@*":
version "15.7.1"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6"
@ -1322,10 +1327,10 @@
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
"@types/react-dom@^16.8.5":
version "16.8.5"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.8.5.tgz#3e3f4d99199391a7fb40aa3a155c8dd99b899cbd"
integrity sha512-idCEjROZ2cqh29+trmTmZhsBAUNQuYrF92JHKzZ5+aiFM1mlSk3bb23CK7HhYuOY75Apgap5y2jTyHzaM2AJGA==
"@types/react-dom@*":
version "16.9.0"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.0.tgz#ba6ddb00bf5de700b0eb91daa452081ffccbfdea"
integrity sha512-OL2lk7LYGjxn4b0efW3Pvf2KBVP0y1v3wip1Bp7nA79NkOpElH98q3WdCEdDj93b2b0zaeBG9DvriuKjIK5xDA==
dependencies:
"@types/react" "*"
@ -1342,6 +1347,21 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
"@types/testing-library__dom@*":
version "6.0.1"
resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.0.1.tgz#e62c7799a210163ae72b8ac00cc4a841951f9f2d"
integrity sha512-j8wJmvER0VVrmDtab80SwA4MgF0vzFm6hSyk3j2bw9PXyJxgMjFDF8ihJDzo2gUOMP+HpEquHRZcUXOhLmYexA==
dependencies:
"@types/pretty-format" "*"
"@types/testing-library__react@^9.1.0":
version "9.1.1"
resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.1.tgz#4bcb8bba54b07fbb6c084f2f00e7f9410e587c10"
integrity sha512-8/toTJaIlS3BC7JrK2ElTnbjH8tmFP7atdL2ZsIa1JDmH9RKSm/7Wp5oMDJzXoWr988Mv7ym/XZ8LRglyoGCGw==
dependencies:
"@types/react-dom" "*"
"@types/testing-library__dom" "*"
"@types/yargs@^12.0.2", "@types/yargs@^12.0.9":
version "12.0.12"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916"
@ -1793,7 +1813,7 @@ arrify@^1.0.1:
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
asap@~2.0.3, asap@~2.0.6:
asap@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
@ -2473,11 +2493,6 @@ chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
change-emitter@^0.1.2:
version "0.1.6"
resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515"
integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
@ -2827,11 +2842,6 @@ core-js@3.1.4:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07"
integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ==
core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
core-js@^2.4.0:
version "2.6.9"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2"
@ -3549,13 +3559,6 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
encoding@^0.1.11:
version "0.1.12"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=
dependencies:
iconv-lite "~0.4.13"
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
@ -4100,19 +4103,6 @@ fb-watchman@^2.0.0:
dependencies:
bser "^2.0.0"
fbjs@^0.8.1:
version "0.8.17"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
dependencies:
core-js "^1.0.0"
isomorphic-fetch "^2.1.1"
loose-envify "^1.0.0"
object-assign "^4.1.0"
promise "^7.1.1"
setimmediate "^1.0.5"
ua-parser-js "^0.7.18"
fetch-suspense@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/fetch-suspense/-/fetch-suspense-1.2.0.tgz#6b3fc182bebab26a255381421e3d39bbbbcd6c0b"
@ -4678,11 +4668,6 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
hoist-non-react-statics@^2.3.1:
version "2.5.5"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
hoist-non-react-statics@^3.1.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b"
@ -4885,14 +4870,14 @@ i18next-xhr-backend@^3.1.2:
dependencies:
"@babel/runtime" "^7.5.5"
i18next@>=14.0.1:
version "17.0.11"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-17.0.11.tgz#36424dc01f6de391fae87878d24f5ff713565c27"
integrity sha512-O+yzoNi0usYcd4oi85EFY4WuwZ8NNsYJLauZ629YSjwgIi2D7eYDSQxy6aAR67V++b//GNuZEk7hx/i3L9Rxag==
i18next@>=17.0.12:
version "17.0.12"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-17.0.12.tgz#d732a6c1131fc3b02305a8241eac25ec0d1cf663"
integrity sha512-FoYYnORcAMNznVXSpwJ1zVGL8kXcv1JUmvTqoQyuPPRncBq9rd7Mi0I/oVXkGR3YIek5dDiunvA/NGG2o+mMuw==
dependencies:
"@babel/runtime" "^7.3.1"
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@ -5339,7 +5324,7 @@ is-root@2.1.0:
resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
is-stream@^1.0.1, is-stream@^1.1.0:
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@ -5405,14 +5390,6 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
isomorphic-fetch@^2.1.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
dependencies:
node-fetch "^1.0.1"
whatwg-fetch ">=0.10.0"
isomorphic-unfetch@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.0.0.tgz#de6d80abde487b17de2c400a7ef9e5ecc2efb362"
@ -6654,14 +6631,6 @@ no-case@^2.2.0:
dependencies:
lower-case "^1.1.1"
node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
dependencies:
encoding "^0.1.11"
is-stream "^1.0.1"
node-fetch@^2.2.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
@ -8094,13 +8063,6 @@ promise@8.0.3:
dependencies:
asap "~2.0.6"
promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
dependencies:
asap "~2.0.3"
prompts@^2.0.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35"
@ -8109,7 +8071,7 @@ prompts@^2.0.1:
kleur "^3.0.3"
sisteransi "^1.0.3"
prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.6.2, prop-types@^15.7.2:
prop-types@^15.5.4, prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@ -8363,11 +8325,6 @@ react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb"
integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==
react-lifecycles-compat@^3.0.2:
version "3.0.4"
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
react-router-dom@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.1.tgz#ee66f4a5d18b6089c361958e443489d6bab714be"
@ -8466,14 +8423,12 @@ react-side-effect@^1.1.0:
exenv "^1.2.1"
shallowequal "^1.0.1"
react-spinners@^0.5.13:
version "0.5.13"
resolved "https://registry.yarnpkg.com/react-spinners/-/react-spinners-0.5.13.tgz#09da41ee6b321083ff9670cbf78e11effb3feb87"
integrity sha512-zrQTWlyhqs+3nQ4Zpg19eW4elYQgrrvu0fXL1tIP3CKgLBxkO+rmXdL8l34qTHrpDZnukMFGLxyqQebijeVSJA==
react-spinners@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/react-spinners/-/react-spinners-0.6.1.tgz#c4f31a1d0e4c85cdb1785a8bdbe17311cf269b0a"
integrity sha512-bMCOvwAlzuIDC6Zh69E1EbyKUbvWSl4sMzLXOgnsF4Q/kkAnCNaonWyskMFytbaJSYxBCCOiaeCH2moDJ5y5Pg==
dependencies:
"@emotion/core" "^10.0.4"
prop-types "^15.5.10"
recompose "0.27.1 - 0.30.0"
"@emotion/core" "^10.0.15"
react-tippy@^1.2.3:
version "1.2.3"
@ -8563,18 +8518,6 @@ realpath-native@^1.1.0:
dependencies:
util.promisify "^1.0.0"
"recompose@0.27.1 - 0.30.0":
version "0.30.0"
resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0"
integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==
dependencies:
"@babel/runtime" "^7.0.0"
change-emitter "^0.1.2"
fbjs "^0.8.1"
hoist-non-react-statics "^2.3.1"
react-lifecycles-compat "^3.0.2"
symbol-observable "^1.0.4"
recursive-readdir@2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f"
@ -9080,7 +9023,7 @@ set-value@^2.0.0, set-value@^2.0.1:
is-plain-object "^2.0.3"
split-string "^3.0.1"
setimmediate@^1.0.4, setimmediate@^1.0.5:
setimmediate@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
@ -9631,11 +9574,6 @@ svgo@^1.0.0, svgo@^1.2.2:
unquote "~1.1.1"
util.promisify "~1.0.0"
symbol-observable@^1.0.4:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
symbol-tree@^3.2.2:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
@ -9897,11 +9835,6 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
ua-parser-js@^0.7.18:
version "0.7.20"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098"
integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==
uglify-js@3.4.x:
version "3.4.10"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
@ -10314,7 +10247,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5:
dependencies:
iconv-lite "0.4.24"
whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0:
whatwg-fetch@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==

View File

@ -2,10 +2,10 @@
# yarn lockfile v1
now@^16.1.1:
version "16.1.1"
resolved "https://registry.yarnpkg.com/now/-/now-16.1.1.tgz#692c406158c21bb0371de137b5f9957c861a4810"
integrity sha512-SXro0fOBTVBn+A2wEYV63It706egm7swgo6qb8zp6g07pOK0PQ1smeO0wmdYbx2Kuk5+Deh5t92KnZQi8wZjzA==
now@^16.1.2:
version "16.1.2"
resolved "https://registry.yarnpkg.com/now/-/now-16.1.2.tgz#9c05dc83852a4ff80534fe3830b53fdf807ff974"
integrity sha512-Wqbox4tfh1kglgKOOHRE49bsZoy1TMHsVSnrnEbC98LU+aXmuh853kKheyDXckqIaTGDAgs7HYV12ONgppLwUw==
prettier@^1.18.2:
version "1.18.2"