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

feat: add firebase

This commit is contained in:
uetchy 2020-06-18 20:32:27 +09:00
parent ae5ae0099b
commit ed0424b5d1
9 changed files with 59 additions and 13 deletions

View File

@ -1,3 +1,7 @@
/web/build /web/build
/web/coverage
/api/coverage
/.envrc /.envrc
/.env /.env
/.github
/.vscode

View File

@ -1,7 +1,7 @@
import nock from 'nock'; import nock from 'nock';
import {mockProvider} from '../util/testHelpers'; import {mockProvider} from '../util/testHelpers';
import provider from './existence'; import provider from '../services/existence';
test('return false if name is taken', async () => { test('return false if name is taken', async () => {
const result = await mockProvider(provider, {query: 'github.com/uetchy'}); const result = await mockProvider(provider, {query: 'github.com/uetchy'});

View File

@ -25,7 +25,8 @@
"now": "Vercel", "now": "Vercel",
"netlify": "Netlify", "netlify": "Netlify",
"nta": "Company (JP)", "nta": "Company (JP)",
"ocaml": "OCaml" "ocaml": "OCaml",
"firebase": "Firebase"
}, },
"uniqueness": { "uniqueness": {
"high": "Pretty unique", "high": "Pretty unique",

View File

@ -25,7 +25,8 @@
"now": "Vercel", "now": "Vercel",
"netlify": "Netlify", "netlify": "Netlify",
"nta": "法人", "nta": "法人",
"ocaml": "OCaml" "ocaml": "OCaml",
"firebase": "Firebase"
}, },
"uniqueness": { "uniqueness": {
"high": "とてもユニーク", "high": "とてもユニーク",

View File

@ -20,7 +20,7 @@ import {
FaBuilding, FaBuilding,
} from 'react-icons/fa'; } from 'react-icons/fa';
import {IoIosBeer} from 'react-icons/io'; import {IoIosBeer} from 'react-icons/io';
import {DiRust, DiHeroku} from 'react-icons/di'; import {DiRust, DiHeroku, DiFirebase} from 'react-icons/di';
import {SpectrumIcon, NowIcon, NetlifyIcon, OcamlIcon} from './Icons'; import {SpectrumIcon, NowIcon, NetlifyIcon, OcamlIcon} from './Icons';
import {mobile} from '../util/css'; import {mobile} from '../util/css';
@ -99,6 +99,9 @@ const Welcome: React.FC = () => {
<ListItem> <ListItem>
<FaAws /> {t('providers.s3')} <FaAws /> {t('providers.s3')}
</ListItem> </ListItem>
<ListItem>
<DiFirebase /> {t('providers.firebase')}
</ListItem>
<ListItem> <ListItem>
<FaJsSquare /> {t('providers.jsorg')} <FaJsSquare /> {t('providers.jsorg')}
</ListItem> </ListItem>

View File

@ -25,6 +25,7 @@ import VercelCard from './providers/Vercel';
import NtaCard from './providers/Nta'; import NtaCard from './providers/Nta';
import NetlifyCard from './providers/Netlify'; import NetlifyCard from './providers/Netlify';
import OcamlCard from './providers/Ocaml'; import OcamlCard from './providers/Ocaml';
import FirebaseCard from './providers/Firebase';
const Index: React.FC<{query: string}> = ({query}) => { const Index: React.FC<{query: string}> = ({query}) => {
const { const {
@ -53,6 +54,7 @@ const Index: React.FC<{query: string}> = ({query}) => {
<InstagramCard query={query} /> <InstagramCard query={query} />
<SpectrumCard query={query} /> <SpectrumCard query={query} />
<S3Card query={query} /> <S3Card query={query} />
<FirebaseCard query={query} />
</Cards> </Cards>
<Cards> <Cards>
<GithubSearchCard query={query} /> <GithubSearchCard query={query} />

View File

@ -0,0 +1,35 @@
import React from 'react';
import {useTranslation} from 'react-i18next';
import {DiFirebase} from 'react-icons/di';
import {Card, Repeater, DedicatedAvailability} from '../core';
const FirebaseCard: React.FC<{query: string}> = ({query}) => {
const {t} = useTranslation();
const sanitizedQuery = query
.replace(/[^0-9a-zA-Z_-]/g, '')
.replace(/_/g, '-');
const lowerCase = sanitizedQuery.toLowerCase();
const names = [lowerCase];
return (
<Card title={t('providers.firebase')}>
<Repeater items={names}>
{(name) => (
<DedicatedAvailability
name={name}
query={`${name}.firebaseio.com`}
service="existence"
message="Go to Firebase"
link={`https://${name}.firebaseio.com/`}
icon={<DiFirebase />}
/>
)}
</Repeater>
</Card>
);
};
export default FirebaseCard;

View File

@ -5,7 +5,7 @@ import XHR from 'i18next-xhr-backend';
import LanguageDetector from 'i18next-browser-languagedetector'; import LanguageDetector from 'i18next-browser-languagedetector';
import {initReactI18next} from 'react-i18next'; import {initReactI18next} from 'react-i18next';
const TRANSLATION_VERSION = '1.15'; const TRANSLATION_VERSION = '1.16';
i18n i18n
.use(Backend) .use(Backend)

View File

@ -1895,10 +1895,10 @@
jest-diff "^25.2.1" jest-diff "^25.2.1"
pretty-format "^25.2.1" pretty-format "^25.2.1"
"@types/jest@^25.2.3": "@types/jest@^26.0.0":
version "25.2.3" version "26.0.0"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.0.tgz#a6d7573dffa9c68cbbdf38f2e0de26f159e11134"
integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== integrity sha512-/yeMsH9HQ1RLORlXAwoLXe8S98xxvhNtUz3yrgrwbaxYjT+6SFPZZRksmRKRA6L5vsUtSHeN71viDOTTyYAD+g==
dependencies: dependencies:
jest-diff "^25.2.1" jest-diff "^25.2.1"
pretty-format "^25.2.1" pretty-format "^25.2.1"
@ -10730,10 +10730,10 @@ react-helmet@^6.0.0:
react-fast-compare "^2.0.4" react-fast-compare "^2.0.4"
react-side-effect "^2.1.0" react-side-effect "^2.1.0"
react-i18next@11.5.0: react-i18next@11.5.1:
version "11.5.0" version "11.5.1"
resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.5.0.tgz#84a9bb535d44c0c1b336b94de164515c2cc2a714" resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.5.1.tgz#084e98555d8800d5508eccc8da1ac652df358d3e"
integrity sha512-V6rUT7MzYBdFCgUrhfr78FHRfnY3CFoR75ET9EP5Py5UPHKyaGiK1MvPx03TesLwsmIaVHlRFU/WLzqCedXevA== integrity sha512-2VSx+dClvmCJTgrw9Nrof4EkggMlzo4s/YZPEUAdI7gU2HTksapkGtFPARzpeTk+3k1zY+Xl6pLHc0LYvsRWAQ==
dependencies: dependencies:
"@babel/runtime" "^7.3.1" "@babel/runtime" "^7.3.1"
html-parse-stringify2 "2.0.1" html-parse-stringify2 "2.0.1"