refactor(starter): upgrade to new version of gatsby

This commit is contained in:
Alexander Shelepenok
2022-01-09 20:12:31 +00:00
parent 84bdc5899d
commit 67ebabbaac
397 changed files with 26665 additions and 34984 deletions

View File

@@ -1,59 +0,0 @@
// @flow strict
const getContactHref = (name: string, contact: string) => {
let href;
switch (name) {
case 'twitter':
href = `https://www.twitter.com/${contact}`;
break;
case 'github':
href = `https://github.com/${contact}`;
break;
case 'vkontakte':
href = `https://vk.com/${contact}`;
break;
case 'telegram':
href = `https://t.me/${contact}`;
break;
case 'email':
href = `mailto:${contact}`;
break;
case 'linkedin':
href = `https://www.linkedin.com/in/${contact}`;
break;
case 'instagram':
href = `https://www.instagram.com/${contact}`;
break;
case 'line':
href = `line://ti/p/${contact}`;
break;
case 'facebook':
href = `https://www.facebook.com/${contact}`;
break;
case 'gitlab':
href = `https://www.gitlab.com/${contact}`;
break;
case 'weibo':
href = `https://www.weibo.com/${contact}`;
break;
case 'codepen':
href = `https://www.codepen.io/${contact}`;
break;
case 'youtube':
href = `https://www.youtube.com/channel/${contact}`;
break;
case 'soundcloud':
href = `https://soundcloud.com/${contact}`;
break;
case 'medium':
href = `https://medium.com/${contact}`;
break;
default:
href = contact;
break;
}
return href;
};
export default getContactHref;

View File

@@ -1,21 +0,0 @@
// @flow strict
import getContactHref from './get-contact-href';
test('getContactHref', () => {
expect(getContactHref('twitter', '#')).toBe('https://www.twitter.com/#');
expect(getContactHref('github', '#')).toBe('https://github.com/#');
expect(getContactHref('email', '#')).toBe('mailto:#');
expect(getContactHref('vkontakte', '#')).toBe('https://vk.com/#');
expect(getContactHref('telegram', '#')).toBe('https://t.me/#');
expect(getContactHref('rss', '#')).toBe('#');
expect(getContactHref('linkedin', '#')).toBe('https://www.linkedin.com/in/#');
expect(getContactHref('instagram', '#')).toBe('https://www.instagram.com/#');
expect(getContactHref('line', '#')).toBe('line://ti/p/#');
expect(getContactHref('facebook', '#')).toBe('https://www.facebook.com/#');
expect(getContactHref('gitlab', '#')).toBe('https://www.gitlab.com/#');
expect(getContactHref('weibo', '#')).toBe('https://www.weibo.com/#');
expect(getContactHref('codepen', '#')).toBe('https://www.codepen.io/#');
expect(getContactHref('youtube', '#')).toBe('https://www.youtube.com/channel/#');
expect(getContactHref('soundcloud', '#')).toBe('https://soundcloud.com/#');
expect(getContactHref('medium', '#')).toBe('https://medium.com/#');
});

View File

@@ -0,0 +1,19 @@
import getContactHref from "./get-contact-href";
test("getContactHref", () => {
expect(getContactHref("rss", "#")).toBe("#");
expect(getContactHref("email", "#")).toBe("mailto:#");
expect(getContactHref("line", "#")).toBe("line://ti/p/#");
expect(getContactHref("telegram", "#")).toBe("https://t.me/#");
expect(getContactHref("vkontakte", "#")).toBe("https://vk.com/#");
expect(getContactHref("medium", "#")).toBe("https://medium.com/#");
expect(getContactHref("github", "#")).toBe("https://github.com/#");
expect(getContactHref("weibo", "#")).toBe("https://www.weibo.com/#");
expect(getContactHref("gitlab", "#")).toBe("https://www.gitlab.com/#");
expect(getContactHref("codepen", "#")).toBe("https://www.codepen.io/#");
expect(getContactHref("twitter", "#")).toBe("https://www.twitter.com/#");
expect(getContactHref("facebook", "#")).toBe("https://www.facebook.com/#");
expect(getContactHref("soundcloud", "#")).toBe("https://soundcloud.com/#");
expect(getContactHref("instagram", "#")).toBe("https://www.instagram.com/#");
expect(getContactHref("linkedin", "#")).toBe("https://www.linkedin.com/in/#");
});

View File

@@ -0,0 +1,23 @@
const getContactHref = (name: string, contact: string) => {
const hrefs: { [key: string]: string } = {
email: `mailto:${contact}`,
line: `line://ti/p/${contact}`,
telegram: `https://t.me/${contact}`,
vkontakte: `https://vk.com/${contact}`,
medium: `https://medium.com/${contact}`,
github: `https://github.com/${contact}`,
weibo: `https://www.weibo.com/${contact}`,
gitlab: `https://www.gitlab.com/${contact}`,
codepen: `https://www.codepen.io/${contact}`,
twitter: `https://www.twitter.com/${contact}`,
soundcloud: `https://soundcloud.com/${contact}`,
facebook: `https://www.facebook.com/${contact}`,
instagram: `https://www.instagram.com/${contact}`,
linkedin: `https://www.linkedin.com/in/${contact}`,
youtube: `https://www.youtube.com/channel/${contact}`,
};
return hrefs[name] ?? contact;
};
export default getContactHref;

View File

@@ -1,22 +0,0 @@
// @flow strict
import getIcon from './get-icon';
import { ICONS } from '../constants';
test('getIcon', () => {
expect(getIcon('twitter')).toBe(ICONS.TWITTER);
expect(getIcon('github')).toBe(ICONS.GITHUB);
expect(getIcon('vkontakte')).toBe(ICONS.VKONTAKTE);
expect(getIcon('telegram')).toEqual(ICONS.TELEGRAM);
expect(getIcon('email')).toEqual(ICONS.EMAIL);
expect(getIcon('rss')).toEqual(ICONS.RSS);
expect(getIcon('linkedin')).toEqual(ICONS.LINKEDIN);
expect(getIcon('instagram')).toEqual(ICONS.INSTAGRAM);
expect(getIcon('line')).toEqual(ICONS.LINE);
expect(getIcon('facebook')).toEqual(ICONS.FACEBOOK);
expect(getIcon('gitlab')).toEqual(ICONS.GITLAB);
expect(getIcon('weibo')).toEqual(ICONS.WEIBO);
expect(getIcon('codepen')).toEqual(ICONS.CODEPEN);
expect(getIcon('youtube')).toEqual(ICONS.YOUTUBE);
expect(getIcon('soundcloud')).toEqual(ICONS.SOUNDCLOUD);
expect(getIcon('medium')).toEqual(ICONS.MEDIUM);
});

View File

@@ -0,0 +1,21 @@
import { ICONS } from "@/constants";
import { getIcon } from "@/utils";
test("getIcon", () => {
expect(getIcon("rss")).toEqual(ICONS.RSS);
expect(getIcon("line")).toEqual(ICONS.LINE);
expect(getIcon("github")).toBe(ICONS.GITHUB);
expect(getIcon("email")).toEqual(ICONS.EMAIL);
expect(getIcon("weibo")).toEqual(ICONS.WEIBO);
expect(getIcon("twitter")).toBe(ICONS.TWITTER);
expect(getIcon("gitlab")).toEqual(ICONS.GITLAB);
expect(getIcon("medium")).toEqual(ICONS.MEDIUM);
expect(getIcon("codepen")).toEqual(ICONS.CODEPEN);
expect(getIcon("youtube")).toEqual(ICONS.YOUTUBE);
expect(getIcon("vkontakte")).toBe(ICONS.VKONTAKTE);
expect(getIcon("facebook")).toEqual(ICONS.FACEBOOK);
expect(getIcon("telegram")).toEqual(ICONS.TELEGRAM);
expect(getIcon("linkedin")).toEqual(ICONS.LINKEDIN);
expect(getIcon("instagram")).toEqual(ICONS.INSTAGRAM);
expect(getIcon("soundcloud")).toEqual(ICONS.SOUNDCLOUD);
});

View File

@@ -1,56 +1,55 @@
// @flow strict
import { ICONS } from '../constants';
import { ICONS } from "../constants";
const getIcon = (name: string) => {
let icon;
switch (name) {
case 'twitter':
case "twitter":
icon = ICONS.TWITTER;
break;
case 'github':
case "github":
icon = ICONS.GITHUB;
break;
case 'vkontakte':
case "vkontakte":
icon = ICONS.VKONTAKTE;
break;
case 'telegram':
case "telegram":
icon = ICONS.TELEGRAM;
break;
case 'email':
case "email":
icon = ICONS.EMAIL;
break;
case 'rss':
case "rss":
icon = ICONS.RSS;
break;
case 'linkedin':
case "linkedin":
icon = ICONS.LINKEDIN;
break;
case 'instagram':
case "instagram":
icon = ICONS.INSTAGRAM;
break;
case 'line':
case "line":
icon = ICONS.LINE;
break;
case 'facebook':
case "facebook":
icon = ICONS.FACEBOOK;
break;
case 'gitlab':
case "gitlab":
icon = ICONS.GITLAB;
break;
case 'weibo':
case "weibo":
icon = ICONS.WEIBO;
break;
case 'codepen':
case "codepen":
icon = ICONS.CODEPEN;
break;
case 'youtube':
case "youtube":
icon = ICONS.YOUTUBE;
break;
case 'soundcloud':
case "soundcloud":
icon = ICONS.SOUNDCLOUD;
break;
case 'medium':
case "medium":
icon = ICONS.MEDIUM;
break;
default:

View File

@@ -1,3 +0,0 @@
// @flow strict
export { default as getIcon } from './get-icon';
export { default as getContactHref } from './get-contact-href';

3
src/utils/index.ts Normal file
View File

@@ -0,0 +1,3 @@
export { default as getIcon } from "./get-icon";
export { default as getContactHref } from "./get-contact-href";
export { default as toKebabCase } from "./to-kebab-case";

View File

@@ -0,0 +1,10 @@
import toKebabCase from "./to-kebab-case";
test("toKebabCase", () => {
expect(toKebabCase()).toBe("");
expect(toKebabCase("lorEm")).toBe("lorem");
expect(toKebabCase("lorem ipsum")).toBe("lorem-ipsum");
expect(toKebabCase("lorem_ipsum")).toBe("lorem-ipsum");
expect(toKebabCase("lorem #ipsum")).toBe("lorem-ipsum");
expect(toKebabCase("Lorem Ipsum Dolor")).toBe("lorem-ipsum-dolor");
});

View File

@@ -0,0 +1,6 @@
const toKebabCase = (str: string = ""): string => str.toLowerCase()
.replace(/[^\w\s]/gi, "")
.split(" ").join("-")
.split("_").join("-");
export default toKebabCase;