mirror of
https://github.com/umami-software/umami.git
synced 2026-02-18 19:45:35 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
501001ef21
59 changed files with 877 additions and 408 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -23,6 +23,7 @@
|
|||
.DS_Store
|
||||
.idea
|
||||
*.iml
|
||||
.vscode/*
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
.menu {
|
||||
background: var(--gray50);
|
||||
border: 1px solid var(--gray500);
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ export default function MenuButton({
|
|||
icon,
|
||||
value,
|
||||
options,
|
||||
menuClassname,
|
||||
menuPosition = 'bottom',
|
||||
menuAlign = 'right',
|
||||
onSelect,
|
||||
|
|
@ -45,7 +46,7 @@ export default function MenuButton({
|
|||
</Button>
|
||||
{showMenu && (
|
||||
<Menu
|
||||
className={styles.menu}
|
||||
className={classNames(styles.menu, menuClassname)}
|
||||
options={options}
|
||||
selectedOption={selectedOption}
|
||||
onSelect={handleSelect}
|
||||
|
|
|
|||
|
|
@ -7,21 +7,21 @@ import Button from './Button';
|
|||
import useForceUpdate from '../../hooks/useForceUpdate';
|
||||
|
||||
export default function UpdateNotice() {
|
||||
const forceUpdte = useForceUpdate();
|
||||
const { hasUpdate, latest, updateCheck } = useVersion();
|
||||
const forceUpdate = useForceUpdate();
|
||||
const { hasUpdate, checked, latest, updateCheck } = useVersion(true);
|
||||
|
||||
function handleViewClick() {
|
||||
location.href = 'https://github.com/mikecao/umami/releases';
|
||||
updateCheck();
|
||||
forceUpdte();
|
||||
forceUpdate();
|
||||
}
|
||||
|
||||
function handleDismissClick() {
|
||||
updateCheck();
|
||||
forceUpdte();
|
||||
forceUpdate();
|
||||
}
|
||||
|
||||
if (!hasUpdate) {
|
||||
if (!hasUpdate || checked) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ import tinycolor from 'tinycolor2';
|
|||
import useTheme from 'hooks/useTheme';
|
||||
import { THEME_COLORS } from 'lib/constants';
|
||||
import styles from './WorldMap.module.css';
|
||||
import useCountryNames from 'hooks/useCountryNames';
|
||||
import useLocale from 'hooks/useLocale';
|
||||
|
||||
const geoUrl = '/world-110m.json';
|
||||
|
||||
|
|
@ -21,6 +23,8 @@ export default function WorldMap({ data, className }) {
|
|||
}),
|
||||
[theme],
|
||||
);
|
||||
const [locale] = useLocale();
|
||||
const countryNames = useCountryNames(locale);
|
||||
|
||||
function getFillColor(code) {
|
||||
if (code === 'AQ') return;
|
||||
|
|
@ -39,10 +43,10 @@ export default function WorldMap({ data, className }) {
|
|||
return code === 'AQ' ? 0 : 1;
|
||||
}
|
||||
|
||||
function handleHover({ ISO_A2: code, NAME: name }) {
|
||||
function handleHover(code) {
|
||||
if (code === 'AQ') return;
|
||||
const country = data?.find(({ x }) => x === code);
|
||||
setTooltip(`${name}: ${country?.y || 0} visitors`);
|
||||
setTooltip(`${countryNames[code]}: ${country?.y || 0} visitors`);
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
@ -70,7 +74,7 @@ export default function WorldMap({ data, className }) {
|
|||
hover: { outline: 'none', fill: colors.hoverColor },
|
||||
pressed: { outline: 'none' },
|
||||
}}
|
||||
onMouseOver={() => handleHover(geo.properties)}
|
||||
onMouseOver={() => handleHover(code)}
|
||||
onMouseOut={() => setTooltip(null)}
|
||||
/>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import React, { useState } from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { Formik, Form, Field } from 'formik';
|
||||
import { useRouter } from 'next/router';
|
||||
import { post } from 'lib/web';
|
||||
import Button from 'components/common/Button';
|
||||
import FormLayout, {
|
||||
|
|
@ -29,18 +30,17 @@ const validate = ({ user_id, username, password }) => {
|
|||
};
|
||||
|
||||
export default function AccountEditForm({ values, onSave, onClose }) {
|
||||
const { basePath } = useRouter();
|
||||
const [message, setMessage] = useState();
|
||||
|
||||
const handleSubmit = async values => {
|
||||
const response = await post(`/api/account`, values);
|
||||
const { ok, data } = await post(`${basePath}/api/account`, values);
|
||||
|
||||
if (typeof response !== 'string') {
|
||||
if (ok) {
|
||||
onSave();
|
||||
} else {
|
||||
setMessage(
|
||||
response || (
|
||||
<FormattedMessage id="message.failure" defaultMessage="Something went wrong." />
|
||||
),
|
||||
data || <FormattedMessage id="message.failure" defaultMessage="Something went wrong." />,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import React, { useState } from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { useRouter } from 'next/router';
|
||||
import { Formik, Form, Field } from 'formik';
|
||||
import { post } from 'lib/web';
|
||||
import Button from 'components/common/Button';
|
||||
|
|
@ -37,18 +38,17 @@ const validate = ({ current_password, new_password, confirm_password }) => {
|
|||
};
|
||||
|
||||
export default function ChangePasswordForm({ values, onSave, onClose }) {
|
||||
const { basePath } = useRouter();
|
||||
const [message, setMessage] = useState();
|
||||
|
||||
const handleSubmit = async values => {
|
||||
const response = await post(`/api/account/password`, values);
|
||||
const { ok, data } = await post(`${basePath}/api/account/password`, values);
|
||||
|
||||
if (typeof response !== 'string') {
|
||||
if (ok) {
|
||||
onSave();
|
||||
} else {
|
||||
setMessage(
|
||||
response || (
|
||||
<FormattedMessage id="message.failure" defaultMessage="Something went wrong." />
|
||||
),
|
||||
data || <FormattedMessage id="message.failure" defaultMessage="Something went wrong." />,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import React, { useState } from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { useRouter } from 'next/router';
|
||||
import { Formik, Form, Field } from 'formik';
|
||||
import { del } from 'lib/web';
|
||||
import Button from 'components/common/Button';
|
||||
|
|
@ -8,7 +10,6 @@ import FormLayout, {
|
|||
FormMessage,
|
||||
FormRow,
|
||||
} from 'components/layout/FormLayout';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
const CONFIRMATION_WORD = 'DELETE';
|
||||
|
||||
|
|
@ -27,15 +28,18 @@ const validate = ({ confirmation }) => {
|
|||
};
|
||||
|
||||
export default function DeleteForm({ values, onSave, onClose }) {
|
||||
const { basePath } = useRouter();
|
||||
const [message, setMessage] = useState();
|
||||
|
||||
const handleSubmit = async ({ type, id }) => {
|
||||
const response = await del(`/api/${type}/${id}`);
|
||||
const { ok, data } = await del(`${basePath}/api/${type}/${id}`);
|
||||
|
||||
if (typeof response !== 'string') {
|
||||
if (ok) {
|
||||
onSave();
|
||||
} else {
|
||||
setMessage(<FormattedMessage id="message.failure" defaultMessage="Something went wrong." />);
|
||||
setMessage(
|
||||
data || <FormattedMessage id="message.failure" defaultMessage="Something went wrong." />,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import React, { useState } from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { Formik, Form, Field } from 'formik';
|
||||
import Router from 'next/router';
|
||||
import { useRouter } from 'next/router';
|
||||
import { post } from 'lib/web';
|
||||
import Button from 'components/common/Button';
|
||||
import FormLayout, {
|
||||
|
|
@ -28,22 +28,26 @@ const validate = ({ username, password }) => {
|
|||
};
|
||||
|
||||
export default function LoginForm() {
|
||||
const router = useRouter();
|
||||
const [message, setMessage] = useState();
|
||||
|
||||
const handleSubmit = async ({ username, password }) => {
|
||||
const response = await post('/api/auth/login', { username, password });
|
||||
const { ok, status, data } = await post(`${router.basePath}/api/auth/login`, {
|
||||
username,
|
||||
password,
|
||||
});
|
||||
|
||||
if (typeof response !== 'string') {
|
||||
await Router.push('/');
|
||||
if (ok) {
|
||||
return router.push('/');
|
||||
} else {
|
||||
setMessage(
|
||||
response.startsWith('401') ? (
|
||||
status === 401 ? (
|
||||
<FormattedMessage
|
||||
id="message.incorrect-username-password"
|
||||
defaultMessage="Incorrect username/password."
|
||||
/>
|
||||
) : (
|
||||
response
|
||||
data
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import FormLayout, {
|
|||
} from 'components/layout/FormLayout';
|
||||
import Checkbox from 'components/common/Checkbox';
|
||||
import { DOMAIN_REGEX } from 'lib/constants';
|
||||
import { useRouter } from 'next/router';
|
||||
|
||||
const initialValues = {
|
||||
name: '',
|
||||
|
|
@ -34,15 +35,18 @@ const validate = ({ name, domain }) => {
|
|||
};
|
||||
|
||||
export default function WebsiteEditForm({ values, onSave, onClose }) {
|
||||
const { basePath } = useRouter();
|
||||
const [message, setMessage] = useState();
|
||||
|
||||
const handleSubmit = async values => {
|
||||
const response = await post(`/api/website`, values);
|
||||
const { ok, data } = await post(`${basePath}/api/website`, values);
|
||||
|
||||
if (typeof response !== 'string') {
|
||||
if (ok) {
|
||||
onSave();
|
||||
} else {
|
||||
setMessage(<FormattedMessage id="message.failure" defaultMessage="Something went wrong." />);
|
||||
setMessage(
|
||||
data || <FormattedMessage id="message.failure" defaultMessage="Something went wrong." />,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,10 @@ import React from 'react';
|
|||
import { FormattedMessage } from 'react-intl';
|
||||
import Link from 'components/common/Link';
|
||||
import styles from './Footer.module.css';
|
||||
import useVersion from 'hooks/useVersion';
|
||||
|
||||
export default function Footer() {
|
||||
const version = process.env.VERSION;
|
||||
const { current } = useVersion();
|
||||
return (
|
||||
<footer className="container">
|
||||
<div className={styles.footer}>
|
||||
|
|
@ -22,7 +23,7 @@ export default function Footer() {
|
|||
}}
|
||||
/>
|
||||
</div>
|
||||
<div>{`v${version}`}</div>
|
||||
<div>{`v${current}`}</div>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,9 +1,18 @@
|
|||
import React from 'react';
|
||||
import MetricsTable from './MetricsTable';
|
||||
import { countryFilter, percentFilter } from 'lib/filters';
|
||||
import { percentFilter } from 'lib/filters';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import useCountryNames from 'hooks/useCountryNames';
|
||||
import useLocale from 'hooks/useLocale';
|
||||
|
||||
export default function CountriesTable({ websiteId, token, limit, onDataLoad = () => {} }) {
|
||||
const [locale] = useLocale();
|
||||
const countryNames = useCountryNames(locale);
|
||||
|
||||
function renderLabel({ x }) {
|
||||
return <div className={locale}>{countryNames[x]}</div>;
|
||||
}
|
||||
|
||||
return (
|
||||
<MetricsTable
|
||||
title={<FormattedMessage id="metrics.countries" defaultMessage="Countries" />}
|
||||
|
|
@ -12,8 +21,8 @@ export default function CountriesTable({ websiteId, token, limit, onDataLoad = (
|
|||
websiteId={websiteId}
|
||||
token={token}
|
||||
limit={limit}
|
||||
dataFilter={countryFilter}
|
||||
onDataLoad={data => onDataLoad(percentFilter(data))}
|
||||
renderLabel={renderLabel}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ export default function WebsiteDetails({ websiteId, token }) {
|
|||
} = usePageQuery();
|
||||
|
||||
const BackButton = () => (
|
||||
<div className={styles.backButton}>
|
||||
<div key="back-button" className={styles.backButton}>
|
||||
<Link
|
||||
key="back-button"
|
||||
href={router.pathname}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,14 @@
|
|||
import React from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { useRouter } from 'next/router';
|
||||
import Link from 'components/common/Link';
|
||||
import WebsiteChart from 'components/metrics/WebsiteChart';
|
||||
import Page from 'components/layout/Page';
|
||||
import Button from 'components/common/Button';
|
||||
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
|
||||
import useFetch from 'hooks/useFetch';
|
||||
import Arrow from 'assets/arrow-right.svg';
|
||||
import styles from './WebsiteList.module.css';
|
||||
|
||||
export default function WebsiteList({ userId }) {
|
||||
const router = useRouter();
|
||||
const { data } = useFetch('/api/websites', { user_id: userId });
|
||||
|
||||
if (!data) {
|
||||
|
|
@ -33,9 +31,9 @@ export default function WebsiteList({ userId }) {
|
|||
/>
|
||||
}
|
||||
>
|
||||
<Button icon={<Arrow />} size="medium" onClick={() => router.push('/settings')}>
|
||||
<Link href="/settings" icon={<Arrow />} iconRight>
|
||||
<FormattedMessage id="message.go-to-settings" defaultMessage="Go to settings" />
|
||||
</Button>
|
||||
</Link>
|
||||
</EmptyPlaceholder>
|
||||
)}
|
||||
</Page>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { menuOptions } from 'lib/lang';
|
|||
import useLocale from 'hooks/useLocale';
|
||||
import MenuButton from 'components/common/MenuButton';
|
||||
import Globe from 'assets/globe.svg';
|
||||
import styles from './LanguageButton.module.css';
|
||||
|
||||
export default function LanguageButton() {
|
||||
const [locale, setLocale] = useLocale();
|
||||
|
|
@ -32,6 +33,7 @@ export default function LanguageButton() {
|
|||
icon={<Globe />}
|
||||
options={menuOptions}
|
||||
value={locale}
|
||||
menuClassname={styles.menu}
|
||||
renderValue={option => option?.display}
|
||||
onSelect={handleSelect}
|
||||
/>
|
||||
|
|
|
|||
12
components/settings/LanguageButton.module.css
Normal file
12
components/settings/LanguageButton.module.css
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
.menu {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
min-width: 500px;
|
||||
max-width: 100vw;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.menu div {
|
||||
border-radius: 5px;
|
||||
min-width: 33%;
|
||||
}
|
||||
34
hooks/useCountryNames.js
Normal file
34
hooks/useCountryNames.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import { useState, useEffect } from 'react';
|
||||
import { useRouter } from 'next/router';
|
||||
import { get } from 'lib/web';
|
||||
import enUS from 'public/country/en-US.json';
|
||||
|
||||
const countryNames = {
|
||||
'en-US': enUS,
|
||||
};
|
||||
|
||||
export default function useCountryNames(locale) {
|
||||
const [list, setList] = useState(countryNames[locale] || enUS);
|
||||
const { basePath } = useRouter();
|
||||
|
||||
async function loadData(locale) {
|
||||
const { ok, data } = await get(`${basePath}/country/${locale}.json`);
|
||||
|
||||
if (ok) {
|
||||
countryNames[locale] = data;
|
||||
setList(countryNames[locale]);
|
||||
} else {
|
||||
setList(enUS);
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!countryNames[locale]) {
|
||||
loadData(locale);
|
||||
} else {
|
||||
setList(countryNames[locale]);
|
||||
}
|
||||
}, [locale]);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
|
@ -2,12 +2,15 @@ import { useState, useEffect } from 'react';
|
|||
import { useDispatch } from 'react-redux';
|
||||
import { get } from 'lib/web';
|
||||
import { updateQuery } from 'redux/actions/queries';
|
||||
import { useRouter } from 'next/router';
|
||||
|
||||
export default function useFetch(url, params = {}, options = {}) {
|
||||
const dispatch = useDispatch();
|
||||
const [data, setData] = useState();
|
||||
const [status, setStatus] = useState();
|
||||
const [error, setError] = useState();
|
||||
const [loading, setLoadiing] = useState(false);
|
||||
const { basePath } = useRouter();
|
||||
const keys = Object.keys(params)
|
||||
.sort()
|
||||
.map(key => params[key]);
|
||||
|
|
@ -18,11 +21,12 @@ export default function useFetch(url, params = {}, options = {}) {
|
|||
setLoadiing(true);
|
||||
setError(null);
|
||||
const time = performance.now();
|
||||
const data = await get(url, params);
|
||||
const { data, status } = await get(`${basePath}${url}`, params);
|
||||
|
||||
dispatch(updateQuery({ url, time: performance.now() - time, completed: Date.now() }));
|
||||
|
||||
setData(data);
|
||||
setStatus(status);
|
||||
onDataLoad(data);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
|
|
@ -46,5 +50,5 @@ export default function useFetch(url, params = {}, options = {}) {
|
|||
}
|
||||
}, [url, ...keys, ...update]);
|
||||
|
||||
return { data, error, loading, loadData };
|
||||
return { data, status, error, loading };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
import { useState, useEffect } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import { updateUser } from 'redux/actions/user';
|
||||
import { useRouter } from 'next/router';
|
||||
import { get } from '../lib/web';
|
||||
|
||||
export async function fetchUser() {
|
||||
const res = await fetch('/api/auth/verify');
|
||||
|
|
@ -13,29 +15,33 @@ export async function fetchUser() {
|
|||
}
|
||||
|
||||
export default function useRequireLogin() {
|
||||
const router = useRouter();
|
||||
const dispatch = useDispatch();
|
||||
const storeUser = useSelector(state => state.user);
|
||||
const [loading, setLoading] = useState(!storeUser);
|
||||
const [user, setUser] = useState(storeUser);
|
||||
|
||||
async function loadUser() {
|
||||
setLoading(true);
|
||||
|
||||
const { ok, data } = await get(`${router.basePath}/api/auth/verify`);
|
||||
|
||||
if (!ok) {
|
||||
return router.push('/login');
|
||||
}
|
||||
|
||||
await dispatch(updateUser(data));
|
||||
|
||||
setUser(user);
|
||||
setLoading(false);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!loading && user) {
|
||||
return;
|
||||
}
|
||||
|
||||
setLoading(true);
|
||||
|
||||
fetchUser().then(async user => {
|
||||
if (!user) {
|
||||
window.location.href = '/login';
|
||||
return;
|
||||
}
|
||||
|
||||
await dispatch(updateUser(user));
|
||||
|
||||
setUser(user);
|
||||
setLoading(false);
|
||||
});
|
||||
loadUser();
|
||||
}, []);
|
||||
|
||||
return { user, loading };
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { getItem, setItem } from 'lib/web';
|
|||
import { THEME_CONFIG } from 'lib/constants';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
export default function useLocale() {
|
||||
export default function useTheme() {
|
||||
const theme = useSelector(state => state.app.theme || getItem(THEME_CONFIG) || 'light');
|
||||
const dispatch = useDispatch();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
import { useState, useCallback } from 'react';
|
||||
import { getTimezone } from 'lib/date';
|
||||
import { getItem, setItem } from 'lib/web';
|
||||
import { TIMEZONE_CONFIG } from 'lib/constants';
|
||||
|
||||
export default function useTimezone() {
|
||||
const [timezone, setTimezone] = useState(getItem('umami.timezone') || getTimezone());
|
||||
const [timezone, setTimezone] = useState(getItem(TIMEZONE_CONFIG) || getTimezone());
|
||||
|
||||
const saveTimezone = useCallback(
|
||||
value => {
|
||||
setItem('umami.timezone', value);
|
||||
setItem(TIMEZONE_CONFIG, value);
|
||||
setTimezone(value);
|
||||
},
|
||||
[setTimezone],
|
||||
|
|
|
|||
|
|
@ -1,27 +1,23 @@
|
|||
import { useEffect, useCallback } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import semver from 'semver';
|
||||
import { getItem, setItem } from 'lib/web';
|
||||
import { checkVersion } from 'redux/actions/app';
|
||||
import { VERSION_CHECK } from 'lib/constants';
|
||||
import { getItem, setItem } from 'lib/web';
|
||||
|
||||
export default function useVersion() {
|
||||
export default function useVersion(check) {
|
||||
const dispatch = useDispatch();
|
||||
const versions = useSelector(state => state.app.versions);
|
||||
const lastCheck = getItem(VERSION_CHECK);
|
||||
|
||||
const { current, latest } = versions;
|
||||
const hasUpdate = latest && semver.gt(latest, current) && lastCheck?.version !== latest;
|
||||
const checked = versions.latest === getItem(VERSION_CHECK)?.version;
|
||||
|
||||
const updateCheck = useCallback(() => {
|
||||
setItem(VERSION_CHECK, { version: latest, time: Date.now() });
|
||||
setItem(VERSION_CHECK, { version: versions.latest, time: Date.now() });
|
||||
}, [versions]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!versions.latest) {
|
||||
if (check && !versions.latest) {
|
||||
dispatch(checkVersion());
|
||||
}
|
||||
}, [versions]);
|
||||
}, [versions, check]);
|
||||
|
||||
return { ...versions, hasUpdate, updateCheck };
|
||||
return { ...versions, checked, updateCheck };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
"button.copy-to-clipboard": "In die Zwischenablage kopieren",
|
||||
"button.date-range": "Datumsbereich",
|
||||
"button.delete": "Löschen",
|
||||
"button.dismiss": "Dismiss",
|
||||
"button.dismiss": "Verwerfen",
|
||||
"button.edit": "Bearbeiten",
|
||||
"button.login": "Anmelden",
|
||||
"button.more": "Mehr",
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
"message.get-tracking-code": "Erstelle Tracking Kennung",
|
||||
"message.go-to-settings": "Zu den Einstellungen",
|
||||
"message.incorrect-username-password": "Falsches Passwort oder Benutzername.",
|
||||
"message.new-version-available": "A new version of umami {version} is available!",
|
||||
"message.new-version-available": "Eine neue Version umami {version} ist verfügbar!",
|
||||
"message.no-data-available": "Keine Daten vorhanden.",
|
||||
"message.no-websites-configured": "Es ist keine Webseite vorhanden.",
|
||||
"message.page-not-found": "Seite nicht gefunden.",
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
"button.copy-to-clipboard": "Хуулах",
|
||||
"button.date-range": "Хугацааны мужид",
|
||||
"button.delete": "Устгах",
|
||||
"button.dismiss": "Dismiss",
|
||||
"button.dismiss": "Үл хэргэсэх",
|
||||
"button.edit": "Засах",
|
||||
"button.login": "Нэвтрэх",
|
||||
"button.more": "Цааш",
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
"label.enable-share-url": "Хуваалцах холбоос идэвхжүүлэх",
|
||||
"label.invalid": "Буруу",
|
||||
"label.invalid-domain": "Буруу домэйн",
|
||||
"label.last-days": "Сүүлийн {x} өдөр",
|
||||
"label.last-days": "Сүүлийн {x} хоног",
|
||||
"label.last-hours": "Сүүлийн {x} цаг",
|
||||
"label.logged-in-as": "{username}-р нэвтэрсэн",
|
||||
"label.logout": "Гарах",
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
"message.get-tracking-code": "Мөрдөх код авах",
|
||||
"message.go-to-settings": "Тохиргоо руу очих",
|
||||
"message.incorrect-username-password": "Буруу хэрэглэгчийн нэр/нууц үг.",
|
||||
"message.new-version-available": "A new version of umami {version} is available!",
|
||||
"message.new-version-available": "Umami-гийн шинэ хувилбар {version} гарсан байна!",
|
||||
"message.no-data-available": "Өгөгдөл алга.",
|
||||
"message.no-websites-configured": "Та ямар нэгэн веб тохируулаагүй байна.",
|
||||
"message.page-not-found": "Хуудас олдсонгүй.",
|
||||
|
|
|
|||
97
lang/nb-NO.json
Normal file
97
lang/nb-NO.json
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"button.add-account": "Legg til konto",
|
||||
"button.add-website": "Legg til nettsted",
|
||||
"button.back": "Tilbake",
|
||||
"button.cancel": "Avvis",
|
||||
"button.change-password": "Bytt passord",
|
||||
"button.copy-to-clipboard": "Kopier til utklippstavle",
|
||||
"button.date-range": "Datointervall",
|
||||
"button.delete": "Slett",
|
||||
"button.dismiss": "Avbryt",
|
||||
"button.edit": "Rediger",
|
||||
"button.login": "Logg inn",
|
||||
"button.more": "Mer",
|
||||
"button.refresh": "Oppdater",
|
||||
"button.reset": "Nullstill",
|
||||
"button.save": "Lagre",
|
||||
"button.single-day": "Enkelt dag",
|
||||
"button.view-details": "Vis detaljer",
|
||||
"label.accounts": "Kontoer",
|
||||
"label.administrator": "Administrator",
|
||||
"label.confirm-password": "Godkjenn passord",
|
||||
"label.current-password": "Nåværende passord",
|
||||
"label.custom-range": "Egendefinert utvalg",
|
||||
"label.dashboard": "Dashboard",
|
||||
"label.default-date-range": "Standard datoperiode",
|
||||
"label.domain": "Domene",
|
||||
"label.enable-share-url": "Aktiver delings-URL",
|
||||
"label.invalid": "Ugyldig",
|
||||
"label.invalid-domain": "Ugyldig domene",
|
||||
"label.last-days": "Siste {x} dager",
|
||||
"label.last-hours": "Siste {x} timer",
|
||||
"label.logged-in-as": "Logget på som {brukernavn}",
|
||||
"label.logout": "Logg ut",
|
||||
"label.name": "Navn",
|
||||
"label.new-password": "Nytt passord",
|
||||
"label.password": "Passord",
|
||||
"label.passwords-dont-match": "Passordene er ikke like",
|
||||
"label.profile": "Profil",
|
||||
"label.required": "Påkrevd",
|
||||
"label.settings": "Innstillinger",
|
||||
"label.this-month": "Denne måneden",
|
||||
"label.this-week": "Denne uka",
|
||||
"label.this-year": "I år",
|
||||
"label.timezone": "Tidssone",
|
||||
"label.today": "I dag",
|
||||
"label.unknown": "Ukjent",
|
||||
"label.username": "Brukernavn",
|
||||
"label.websites": "Nettsteder",
|
||||
"message.active-users": "{x} {x, plural, one {besøkende} other {besøkende}} nå",
|
||||
"message.confirm-delete": "Er du sikker på at du vil slette {target}?",
|
||||
"message.copied": "Kopiert!",
|
||||
"message.delete-warning": "Alle tilknyttede data slettes også.",
|
||||
"message.failure": "Noe gikk galt.",
|
||||
"message.get-share-url": "Få delings-URL",
|
||||
"message.get-tracking-code": "Få sporingskode",
|
||||
"message.go-to-settings": "Gå til innstillinger",
|
||||
"message.incorrect-username-password": "Ugyldig brukernavn/passord.",
|
||||
"message.new-version-available": "En ny versjon av umami {version} er tilgjengelig!",
|
||||
"message.no-data-available": "Ingen data tilgjengelig.",
|
||||
"message.no-websites-configured": "Du har ikke satt opp noen nettsteder.",
|
||||
"message.page-not-found": "Side ikke funnet.",
|
||||
"message.powered-by": "Drevet av {name}",
|
||||
"message.save-success": "Lagret!",
|
||||
"message.share-url": "Dette er den offentlige delings-URL-en for {target}.",
|
||||
"message.track-stats": "For å spore statistikk for {target}, plasser følgende kode i {head}-delen av nettstedet ditt.",
|
||||
"message.type-delete": "Skriv inn {delete} i boksen nedenfor for å bekrefte.",
|
||||
"metrics.actions": "Handlinger",
|
||||
"metrics.average-visit-time": "Gjennomsnittlig besøkelsestid",
|
||||
"metrics.bounce-rate": "Avvisningsfrekvens",
|
||||
"metrics.browsers": "Nettlesere",
|
||||
"metrics.countries": "Land",
|
||||
"metrics.device.desktop": "Desktop",
|
||||
"metrics.device.laptop": "Laptop",
|
||||
"metrics.device.mobile": "Mobiltelefon",
|
||||
"metrics.device.tablet": "Nettbrett",
|
||||
"metrics.devices": "Enheter",
|
||||
"metrics.events": "Arrangementer",
|
||||
"metrics.filter.combined": "Kombinert",
|
||||
"metrics.filter.domain-only": "Bare domene",
|
||||
"metrics.filter.raw": "Rå",
|
||||
"metrics.operating-systems": "Operativsystemer",
|
||||
"metrics.page-views": "Sidevisninger",
|
||||
"metrics.pages": "Sider",
|
||||
"metrics.referrers": "Referanser",
|
||||
"metrics.unique-visitors": "Unike besøkende",
|
||||
"metrics.views": "Visninger",
|
||||
"metrics.visitors": "Besøkende",
|
||||
"title.add-account": "Legg til konto",
|
||||
"title.add-website": "Legg til nettsted",
|
||||
"title.change-password": "Bytt passord",
|
||||
"title.delete-account": "Slett konto",
|
||||
"title.delete-website": "Slett nettstedet",
|
||||
"title.edit-account": "Rediger konto",
|
||||
"title.edit-website": "Rediger nettsted",
|
||||
"title.share-url": "Del URL",
|
||||
"title.tracking-code": "Sporingskode"
|
||||
}
|
||||
97
lang/pt-PT.json
Normal file
97
lang/pt-PT.json
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"button.add-account": "Adicionar conta",
|
||||
"button.add-website": "Adicionar website",
|
||||
"button.back": "Voltar",
|
||||
"button.cancel": "Cancelar",
|
||||
"button.change-password": "Alterar palavra-passe",
|
||||
"button.copy-to-clipboard": "Copiar para a área de transferência",
|
||||
"button.date-range": "Intervalo de datas",
|
||||
"button.delete": "Eliminar",
|
||||
"button.dismiss": "Ignorar",
|
||||
"button.edit": "Editar",
|
||||
"button.login": "Iniciar sessão",
|
||||
"button.more": "Mais",
|
||||
"button.refresh": "Atualizar",
|
||||
"button.reset": "Repor",
|
||||
"button.save": "Guardar",
|
||||
"button.single-day": "Dia único",
|
||||
"button.view-details": "Ver detalhes",
|
||||
"label.accounts": "Contas",
|
||||
"label.administrator": "Administrador",
|
||||
"label.confirm-password": "Confirmar palavra-passe",
|
||||
"label.current-password": "Palavra-passe atual",
|
||||
"label.custom-range": "Intervalo personalizado",
|
||||
"label.dashboard": "Dashboard",
|
||||
"label.default-date-range": "Intervalo de datas predefinido",
|
||||
"label.domain": "Domínio",
|
||||
"label.enable-share-url": "Ativar link de partilha",
|
||||
"label.invalid": "Inválido",
|
||||
"label.invalid-domain": "Domínio inválido",
|
||||
"label.last-days": "Últimos {x} dias",
|
||||
"label.last-hours": "Últimas {x} horas",
|
||||
"label.logged-in-as": "Sessão iniciada como {username}",
|
||||
"label.logout": "Sair",
|
||||
"label.name": "Nome",
|
||||
"label.new-password": "Nova palavra-passe",
|
||||
"label.password": "Palavra-passe",
|
||||
"label.passwords-dont-match": "Palavra-passes não correspondem",
|
||||
"label.profile": "Perfil",
|
||||
"label.required": "Obrigatório",
|
||||
"label.settings": "Definições",
|
||||
"label.this-month": "Este mês",
|
||||
"label.this-week": "Esta semana",
|
||||
"label.this-year": "Este ano",
|
||||
"label.timezone": "Fuso horário",
|
||||
"label.today": "Hoje",
|
||||
"label.unknown": "Desconhecido",
|
||||
"label.username": "Nome de utilizador",
|
||||
"label.websites": "Websites",
|
||||
"message.active-users": "{x} {x, plural, one {visitante} other {visitantes}} neste momento",
|
||||
"message.confirm-delete": "Tens a certeza que queres eliminar {target}?",
|
||||
"message.copied": "Copiado!",
|
||||
"message.delete-warning": "Todos os dados associados também serão eliminados.",
|
||||
"message.failure": "Ocorreu um erro.",
|
||||
"message.get-share-url": "Obter link de partilha",
|
||||
"message.get-tracking-code": "Obter código de tracking",
|
||||
"message.go-to-settings": "Ir para as definições",
|
||||
"message.incorrect-username-password": "Nome de utilizador/palavra-passe incorretos.",
|
||||
"message.new-version-available": "Uma nova versão de umami {version} está disponível!",
|
||||
"message.no-data-available": "Sem dados disponíveis.",
|
||||
"message.no-websites-configured": "Não tens nenhum website configurado.",
|
||||
"message.page-not-found": "Página não encontrada.",
|
||||
"message.powered-by": "Distribuído por {name}",
|
||||
"message.save-success": "Guardado com sucesso.",
|
||||
"message.share-url": "Este é o link de partilha público para {target}.",
|
||||
"message.track-stats": "Para recolheres estatísticas para {target}, coloca o seguinte código na secção {head} do teu website.",
|
||||
"message.type-delete": "Escreve {delete} abaixo para confirmares.",
|
||||
"metrics.actions": "Ações",
|
||||
"metrics.average-visit-time": "Tempo médio de visita",
|
||||
"metrics.bounce-rate": "Taxa de rejeição",
|
||||
"metrics.browsers": "Navegadores",
|
||||
"metrics.countries": "Países",
|
||||
"metrics.device.desktop": "Desktop",
|
||||
"metrics.device.laptop": "Portátil",
|
||||
"metrics.device.mobile": "Telemóvel",
|
||||
"metrics.device.tablet": "Tablet",
|
||||
"metrics.devices": "Dispositivos",
|
||||
"metrics.events": "Eventos",
|
||||
"metrics.filter.combined": "Combinado",
|
||||
"metrics.filter.domain-only": "Apenas domínio",
|
||||
"metrics.filter.raw": "Dados brutos",
|
||||
"metrics.operating-systems": "Sistemas operativos",
|
||||
"metrics.page-views": "Visualizações da página",
|
||||
"metrics.pages": "Páginas",
|
||||
"metrics.referrers": "Referrers",
|
||||
"metrics.unique-visitors": "Visitantes únicos",
|
||||
"metrics.views": "Visualizações",
|
||||
"metrics.visitors": "Visitantes",
|
||||
"title.add-account": "Adicionar conta",
|
||||
"title.add-website": "Adicionar website",
|
||||
"title.change-password": "Alterar palavra-passe",
|
||||
"title.delete-account": "Eliminar conta",
|
||||
"title.delete-website": "Eliminar website",
|
||||
"title.edit-account": "Editar conta",
|
||||
"title.edit-website": "Editar website",
|
||||
"title.share-url": "Partilhar link",
|
||||
"title.tracking-code": "Código de tracking"
|
||||
}
|
||||
97
lang/ro-RO.json
Normal file
97
lang/ro-RO.json
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"button.add-account": "Adaugă cont",
|
||||
"button.add-website": "Adaugă site web",
|
||||
"button.back": "Înapoi",
|
||||
"button.cancel": "Anulează",
|
||||
"button.change-password": "Schimbă parola",
|
||||
"button.copy-to-clipboard": "Copiază în clipboard",
|
||||
"button.date-range": "Interval de date",
|
||||
"button.delete": "Șterge",
|
||||
"button.dismiss": "Renunță",
|
||||
"button.edit": "Editare",
|
||||
"button.login": "Autentificare",
|
||||
"button.more": "Mai mult",
|
||||
"button.refresh": "Reîmprospătare",
|
||||
"button.reset": "Resetează",
|
||||
"button.save": "Salvează",
|
||||
"button.single-day": "O singură zi",
|
||||
"button.view-details": "Vizualizare detalii",
|
||||
"label.accounts": "Conturi",
|
||||
"label.administrator": "Administrator",
|
||||
"label.confirm-password": "Confirmare parolă",
|
||||
"label.current-password": "Parola curentă",
|
||||
"label.custom-range": "Interval personalizat",
|
||||
"label.dashboard": "Tablou de bord",
|
||||
"label.default-date-range": "Interval de date implicit",
|
||||
"label.domain": "Domeniu",
|
||||
"label.enable-share-url": "Activare adresa URL de distribuire",
|
||||
"label.invalid": "Invalid",
|
||||
"label.invalid-domain": "Invalid domain",
|
||||
"label.last-days": "Ultimele {x} zile",
|
||||
"label.last-hours": "Ultimele {x} ore",
|
||||
"label.logged-in-as": "Autentificat ca {username}",
|
||||
"label.logout": "Dezautentificare",
|
||||
"label.name": "Nume",
|
||||
"label.new-password": "Parola nouă",
|
||||
"label.password": "Parolă",
|
||||
"label.passwords-dont-match": "Parolele nu se potrivesc",
|
||||
"label.profile": "Profil",
|
||||
"label.required": "Obligatoriu",
|
||||
"label.settings": "Setări",
|
||||
"label.this-month": "Această lună",
|
||||
"label.this-week": "Această săptămână",
|
||||
"label.this-year": "Acest an",
|
||||
"label.timezone": "Fus orar",
|
||||
"label.today": "Astăzi",
|
||||
"label.unknown": "Necunoscut",
|
||||
"label.username": "Username",
|
||||
"label.websites": "Site-uri web",
|
||||
"message.active-users": "{x} {x, plural, one {vizitator activ} other {vizitatori activi}}",
|
||||
"message.confirm-delete": "Sunteți sigur că doriți să ștergeți {target}?",
|
||||
"message.copied": "Copiat!",
|
||||
"message.delete-warning": "Toate datele asociate vor fi șterse, de asemenea.",
|
||||
"message.failure": "Ceva n-a mers bine.",
|
||||
"message.get-share-url": "Obține adresa URL de partajare",
|
||||
"message.get-tracking-code": "Obține codul de urmărire",
|
||||
"message.go-to-settings": "Mergi la Setări",
|
||||
"message.incorrect-username-password": "Username/parolă incorecte.",
|
||||
"message.new-version-available": "Este disponibilă o nouă versiune {version} de umami!",
|
||||
"message.no-data-available": "Nicio informație disponibilă.",
|
||||
"message.no-websites-configured": "Nu aveți niciun site web configurat.",
|
||||
"message.page-not-found": "Pagina nu a fost găsită.",
|
||||
"message.powered-by": "Cu sprijinul {name}",
|
||||
"message.save-success": "Salvat cu succes.",
|
||||
"message.share-url": "Aceasta este adresa URL de partajare pentru {target}.",
|
||||
"message.track-stats": "Pentru a urmări statisticile pentru {target}, plasați următorul cod în secțiunea {head} a site-ului dvs. web.",
|
||||
"message.type-delete": "Tastați {delete} în casuța de mai jos pentru a confirma.",
|
||||
"metrics.actions": "Acțiuni",
|
||||
"metrics.average-visit-time": "Timp mediu de vizitare",
|
||||
"metrics.bounce-rate": "Rata de respingere",
|
||||
"metrics.browsers": "Browsere",
|
||||
"metrics.countries": "Țări",
|
||||
"metrics.device.desktop": "Desktop",
|
||||
"metrics.device.laptop": "Laptop",
|
||||
"metrics.device.mobile": "Mobil",
|
||||
"metrics.device.tablet": "Tabletă",
|
||||
"metrics.devices": "Dispozitive",
|
||||
"metrics.events": "Evenimente",
|
||||
"metrics.filter.combined": "Combinat",
|
||||
"metrics.filter.domain-only": "Numai domeniu",
|
||||
"metrics.filter.raw": "Brut",
|
||||
"metrics.operating-systems": "Sisteme de operare",
|
||||
"metrics.page-views": "Vizualizări de pagină",
|
||||
"metrics.pages": "Pagini",
|
||||
"metrics.referrers": "Site-uri de proveniență",
|
||||
"metrics.unique-visitors": "Vizitatori unici",
|
||||
"metrics.views": "Vizualizări",
|
||||
"metrics.visitors": "Vizitatori",
|
||||
"title.add-account": "Adăugare cont",
|
||||
"title.add-website": "Adăugare site web",
|
||||
"title.change-password": "Schimbare parolă",
|
||||
"title.delete-account": "Ștergere cont",
|
||||
"title.delete-website": "Ștergere site web",
|
||||
"title.edit-account": "Editare cont",
|
||||
"title.edit-website": "Editare site web",
|
||||
"title.share-url": "Partajare URL",
|
||||
"title.tracking-code": "Cod de urmărire"
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
"button.copy-to-clipboard": "Скопировать в буфер обмена",
|
||||
"button.date-range": "Диапазон дат",
|
||||
"button.delete": "Удалить",
|
||||
"button.dismiss": "Dismiss",
|
||||
"button.dismiss": "Отклонить",
|
||||
"button.edit": "Редактировать",
|
||||
"button.login": "Войти",
|
||||
"button.more": "Больше",
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
"message.get-tracking-code": "Получить код отслеживания",
|
||||
"message.go-to-settings": "Перейти к настройкам",
|
||||
"message.incorrect-username-password": "Неверное имя пользователя/пароль.",
|
||||
"message.new-version-available": "A new version of umami {version} is available!",
|
||||
"message.new-version-available": "Доступна новая версия umami {version}",
|
||||
"message.no-data-available": "Нет данных.",
|
||||
"message.no-websites-configured": "У вас нет настроенных сайтов.",
|
||||
"message.page-not-found": "Страница не найдена.",
|
||||
|
|
|
|||
248
lib/constants.js
248
lib/constants.js
|
|
@ -132,251 +132,3 @@ export const BROWSERS = {
|
|||
'ios-webview': 'iOS (webview)',
|
||||
searchbot: 'Searchbot',
|
||||
};
|
||||
|
||||
export const ISO_COUNTRIES = {
|
||||
AF: 'Afghanistan',
|
||||
AX: 'Aland Islands',
|
||||
AL: 'Albania',
|
||||
DZ: 'Algeria',
|
||||
AS: 'American Samoa',
|
||||
AD: 'Andorra',
|
||||
AO: 'Angola',
|
||||
AI: 'Anguilla',
|
||||
AQ: 'Antarctica',
|
||||
AG: 'Antigua And Barbuda',
|
||||
AR: 'Argentina',
|
||||
AM: 'Armenia',
|
||||
AW: 'Aruba',
|
||||
AU: 'Australia',
|
||||
AT: 'Austria',
|
||||
AZ: 'Azerbaijan',
|
||||
BS: 'Bahamas',
|
||||
BH: 'Bahrain',
|
||||
BD: 'Bangladesh',
|
||||
BB: 'Barbados',
|
||||
BY: 'Belarus',
|
||||
BE: 'Belgium',
|
||||
BZ: 'Belize',
|
||||
BJ: 'Benin',
|
||||
BM: 'Bermuda',
|
||||
BT: 'Bhutan',
|
||||
BO: 'Bolivia',
|
||||
BA: 'Bosnia And Herzegovina',
|
||||
BW: 'Botswana',
|
||||
BV: 'Bouvet Island',
|
||||
BR: 'Brazil',
|
||||
IO: 'British Indian Ocean Territory',
|
||||
BN: 'Brunei Darussalam',
|
||||
BG: 'Bulgaria',
|
||||
BF: 'Burkina Faso',
|
||||
BI: 'Burundi',
|
||||
KH: 'Cambodia',
|
||||
CM: 'Cameroon',
|
||||
CA: 'Canada',
|
||||
CV: 'Cape Verde',
|
||||
KY: 'Cayman Islands',
|
||||
CF: 'Central African Republic',
|
||||
TD: 'Chad',
|
||||
CL: 'Chile',
|
||||
CN: 'China',
|
||||
CX: 'Christmas Island',
|
||||
CC: 'Cocos (Keeling) Islands',
|
||||
CO: 'Colombia',
|
||||
KM: 'Comoros',
|
||||
CG: 'Congo',
|
||||
CD: 'Congo, Democratic Republic',
|
||||
CK: 'Cook Islands',
|
||||
CR: 'Costa Rica',
|
||||
CI: "Cote D'Ivoire",
|
||||
HR: 'Croatia',
|
||||
CU: 'Cuba',
|
||||
CY: 'Cyprus',
|
||||
CZ: 'Czech Republic',
|
||||
DK: 'Denmark',
|
||||
DJ: 'Djibouti',
|
||||
DM: 'Dominica',
|
||||
DO: 'Dominican Republic',
|
||||
EC: 'Ecuador',
|
||||
EG: 'Egypt',
|
||||
SV: 'El Salvador',
|
||||
GQ: 'Equatorial Guinea',
|
||||
ER: 'Eritrea',
|
||||
EE: 'Estonia',
|
||||
ET: 'Ethiopia',
|
||||
FK: 'Falkland Islands (Malvinas)',
|
||||
FO: 'Faroe Islands',
|
||||
FJ: 'Fiji',
|
||||
FI: 'Finland',
|
||||
FR: 'France',
|
||||
GF: 'French Guiana',
|
||||
PF: 'French Polynesia',
|
||||
TF: 'French Southern Territories',
|
||||
GA: 'Gabon',
|
||||
GM: 'Gambia',
|
||||
GE: 'Georgia',
|
||||
DE: 'Germany',
|
||||
GH: 'Ghana',
|
||||
GI: 'Gibraltar',
|
||||
GR: 'Greece',
|
||||
GL: 'Greenland',
|
||||
GD: 'Grenada',
|
||||
GP: 'Guadeloupe',
|
||||
GU: 'Guam',
|
||||
GT: 'Guatemala',
|
||||
GG: 'Guernsey',
|
||||
GN: 'Guinea',
|
||||
GW: 'Guinea-Bissau',
|
||||
GY: 'Guyana',
|
||||
HT: 'Haiti',
|
||||
HM: 'Heard Island & Mcdonald Islands',
|
||||
VA: 'Holy See (Vatican City State)',
|
||||
HN: 'Honduras',
|
||||
HK: 'Hong Kong',
|
||||
HU: 'Hungary',
|
||||
IS: 'Iceland',
|
||||
IN: 'India',
|
||||
ID: 'Indonesia',
|
||||
IR: 'Iran, Islamic Republic Of',
|
||||
IQ: 'Iraq',
|
||||
IE: 'Ireland',
|
||||
IM: 'Isle Of Man',
|
||||
IL: 'Israel',
|
||||
IT: 'Italy',
|
||||
JM: 'Jamaica',
|
||||
JP: 'Japan',
|
||||
JE: 'Jersey',
|
||||
JO: 'Jordan',
|
||||
KZ: 'Kazakhstan',
|
||||
KE: 'Kenya',
|
||||
KI: 'Kiribati',
|
||||
KR: 'Korea',
|
||||
KW: 'Kuwait',
|
||||
KG: 'Kyrgyzstan',
|
||||
LA: "Lao People's Democratic Republic",
|
||||
LV: 'Latvia',
|
||||
LB: 'Lebanon',
|
||||
LS: 'Lesotho',
|
||||
LR: 'Liberia',
|
||||
LY: 'Libyan Arab Jamahiriya',
|
||||
LI: 'Liechtenstein',
|
||||
LT: 'Lithuania',
|
||||
LU: 'Luxembourg',
|
||||
MO: 'Macao',
|
||||
MK: 'Macedonia',
|
||||
MG: 'Madagascar',
|
||||
MW: 'Malawi',
|
||||
MY: 'Malaysia',
|
||||
MV: 'Maldives',
|
||||
ML: 'Mali',
|
||||
MT: 'Malta',
|
||||
MH: 'Marshall Islands',
|
||||
MQ: 'Martinique',
|
||||
MR: 'Mauritania',
|
||||
MU: 'Mauritius',
|
||||
YT: 'Mayotte',
|
||||
MX: 'Mexico',
|
||||
FM: 'Micronesia, Federated States Of',
|
||||
MD: 'Moldova',
|
||||
MC: 'Monaco',
|
||||
MN: 'Mongolia',
|
||||
ME: 'Montenegro',
|
||||
MS: 'Montserrat',
|
||||
MA: 'Morocco',
|
||||
MZ: 'Mozambique',
|
||||
MM: 'Myanmar',
|
||||
NA: 'Namibia',
|
||||
NR: 'Nauru',
|
||||
NP: 'Nepal',
|
||||
NL: 'Netherlands',
|
||||
AN: 'Netherlands Antilles',
|
||||
NC: 'New Caledonia',
|
||||
NZ: 'New Zealand',
|
||||
NI: 'Nicaragua',
|
||||
NE: 'Niger',
|
||||
NG: 'Nigeria',
|
||||
NU: 'Niue',
|
||||
NF: 'Norfolk Island',
|
||||
MP: 'Northern Mariana Islands',
|
||||
NO: 'Norway',
|
||||
OM: 'Oman',
|
||||
PK: 'Pakistan',
|
||||
PW: 'Palau',
|
||||
PS: 'Palestinian Territory, Occupied',
|
||||
PA: 'Panama',
|
||||
PG: 'Papua New Guinea',
|
||||
PY: 'Paraguay',
|
||||
PE: 'Peru',
|
||||
PH: 'Philippines',
|
||||
PN: 'Pitcairn',
|
||||
PL: 'Poland',
|
||||
PT: 'Portugal',
|
||||
PR: 'Puerto Rico',
|
||||
QA: 'Qatar',
|
||||
RE: 'Reunion',
|
||||
RO: 'Romania',
|
||||
RU: 'Russia',
|
||||
RW: 'Rwanda',
|
||||
BL: 'Saint Barthelemy',
|
||||
SH: 'Saint Helena',
|
||||
KN: 'Saint Kitts And Nevis',
|
||||
LC: 'Saint Lucia',
|
||||
MF: 'Saint Martin',
|
||||
PM: 'Saint Pierre And Miquelon',
|
||||
VC: 'Saint Vincent And Grenadines',
|
||||
WS: 'Samoa',
|
||||
SM: 'San Marino',
|
||||
ST: 'Sao Tome And Principe',
|
||||
SA: 'Saudi Arabia',
|
||||
SN: 'Senegal',
|
||||
RS: 'Serbia',
|
||||
SC: 'Seychelles',
|
||||
SL: 'Sierra Leone',
|
||||
SG: 'Singapore',
|
||||
SK: 'Slovakia',
|
||||
SI: 'Slovenia',
|
||||
SB: 'Solomon Islands',
|
||||
SO: 'Somalia',
|
||||
ZA: 'South Africa',
|
||||
GS: 'South Georgia And Sandwich Isl.',
|
||||
ES: 'Spain',
|
||||
LK: 'Sri Lanka',
|
||||
SD: 'Sudan',
|
||||
SR: 'Suriname',
|
||||
SJ: 'Svalbard And Jan Mayen',
|
||||
SZ: 'Swaziland',
|
||||
SE: 'Sweden',
|
||||
CH: 'Switzerland',
|
||||
SY: 'Syrian Arab Republic',
|
||||
TW: 'Taiwan',
|
||||
TJ: 'Tajikistan',
|
||||
TZ: 'Tanzania',
|
||||
TH: 'Thailand',
|
||||
TL: 'Timor-Leste',
|
||||
TG: 'Togo',
|
||||
TK: 'Tokelau',
|
||||
TO: 'Tonga',
|
||||
TT: 'Trinidad And Tobago',
|
||||
TN: 'Tunisia',
|
||||
TR: 'Turkey',
|
||||
TM: 'Turkmenistan',
|
||||
TC: 'Turks And Caicos Islands',
|
||||
TV: 'Tuvalu',
|
||||
UG: 'Uganda',
|
||||
UA: 'Ukraine',
|
||||
AE: 'United Arab Emirates',
|
||||
GB: 'United Kingdom',
|
||||
US: 'United States',
|
||||
UM: 'United States Outlying Islands',
|
||||
UY: 'Uruguay',
|
||||
UZ: 'Uzbekistan',
|
||||
VU: 'Vanuatu',
|
||||
VE: 'Venezuela',
|
||||
VN: 'Viet Nam',
|
||||
VG: 'Virgin Islands, British',
|
||||
VI: 'Virgin Islands, U.S.',
|
||||
WF: 'Wallis And Futuna',
|
||||
EH: 'Western Sahara',
|
||||
YE: 'Yemen',
|
||||
ZM: 'Zambia',
|
||||
ZW: 'Zimbabwe',
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import firstBy from 'thenby';
|
||||
import { BROWSERS, ISO_COUNTRIES } from './constants';
|
||||
import { BROWSERS } from './constants';
|
||||
import { removeTrailingSlash, removeWWW, getDomainName } from './url';
|
||||
|
||||
export const urlFilter = (data, { raw }) => {
|
||||
|
|
@ -125,9 +125,6 @@ export const osFilter = data => data.filter(({ x }) => x);
|
|||
|
||||
export const deviceFilter = data => data.filter(({ x }) => x);
|
||||
|
||||
export const countryFilter = data =>
|
||||
data.map(({ x, y }) => ({ x: ISO_COUNTRIES[x] || x, y })).filter(({ x }) => x);
|
||||
|
||||
export const percentFilter = data => {
|
||||
const total = data.reduce((n, { y }) => n + y, 0);
|
||||
return data.map(({ x, y, ...props }) => ({ x, y, z: total ? (y / total) * 100 : 0, ...props }));
|
||||
|
|
|
|||
16
lib/lang.js
16
lib/lang.js
|
|
@ -1,5 +1,5 @@
|
|||
import { format } from 'date-fns';
|
||||
import { enUS, nl, zhCN, tr, ru, de, ja, es, fr, da, sv, el } from 'date-fns/locale';
|
||||
import { enUS, nl, zhCN, tr, ru, de, ja, es, fr, da, sv, el, pt, ro, nb } from 'date-fns/locale';
|
||||
import enMessages from 'lang-compiled/en-US.json';
|
||||
import nlMessages from 'lang-compiled/nl-NL.json';
|
||||
import zhCNMessages from 'lang-compiled/zh-CN.json';
|
||||
|
|
@ -14,6 +14,9 @@ import daMessages from 'lang-compiled/da-DK.json';
|
|||
import svMessages from 'lang-compiled/sv-SE.json';
|
||||
import grMessages from 'lang-compiled/el-GR.json';
|
||||
import foMessages from 'lang-compiled/fo-FO.json';
|
||||
import ptMessages from 'lang-compiled/pt-PT.json';
|
||||
import roMessages from 'lang-compiled/ro-RO.json';
|
||||
import nbNOMessages from 'lang-compiled/nb-NO.json';
|
||||
|
||||
export const messages = {
|
||||
'en-US': enMessages,
|
||||
|
|
@ -30,6 +33,9 @@ export const messages = {
|
|||
'sv-SE': svMessages,
|
||||
'el-GR': grMessages,
|
||||
'fo-FO': foMessages,
|
||||
'pt-PT': ptMessages,
|
||||
'ro-RO': roMessages,
|
||||
'nb-NO': nbNOMessages,
|
||||
};
|
||||
|
||||
export const dateLocales = {
|
||||
|
|
@ -47,13 +53,16 @@ export const dateLocales = {
|
|||
'mn-MN': enUS,
|
||||
'el-GR': el,
|
||||
'fo-FO': da,
|
||||
'pt-PT': pt,
|
||||
'ro-RO': ro,
|
||||
'nb-NO': nb,
|
||||
};
|
||||
|
||||
export const menuOptions = [
|
||||
{ label: 'English', value: 'en-US', display: 'en' },
|
||||
{ label: '中文', value: 'zh-CN', display: 'cn' },
|
||||
{ label: 'Dansk', value: 'da-DK', display: 'da' },
|
||||
{ label: 'Deutsch', value: 'de-DE', display: 'de' },
|
||||
{ label: 'English', value: 'en-US', display: 'en' },
|
||||
{ label: 'Español', value: 'es-MX', display: 'es' },
|
||||
{ label: 'Føroyskt', value: 'fo-FO', display: 'fo' },
|
||||
{ label: 'Français', value: 'fr-FR', display: 'fr' },
|
||||
|
|
@ -61,7 +70,10 @@ export const menuOptions = [
|
|||
{ label: '日本語', value: 'ja-JP', display: 'ja' },
|
||||
{ label: 'Монгол', value: 'mn-MN', display: 'mn' },
|
||||
{ label: 'Nederlands', value: 'nl-NL', display: 'nl' },
|
||||
{ label: 'Norsk Bokmål', value: 'nb-NO', display: 'nb' },
|
||||
{ label: 'Português', value: 'pt-PT', display: 'pt' },
|
||||
{ label: 'Русский', value: 'ru-RU', display: 'ru' },
|
||||
{ label: 'Română', value: 'ro-RO', display: 'ro' },
|
||||
{ label: 'Svenska', value: 'sv-SE', display: 'sv' },
|
||||
{ label: 'Türkçe', value: 'tr-TR', display: 'tr' },
|
||||
];
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ export async function runQuery(query) {
|
|||
});
|
||||
}
|
||||
|
||||
export async function rawQuery(query, params) {
|
||||
export async function rawQuery(query, params = []) {
|
||||
const db = getDatabase();
|
||||
|
||||
if (db !== POSTGRESQL && db !== MYSQL) {
|
||||
|
|
|
|||
11
lib/web.js
11
lib/web.js
|
|
@ -1,6 +1,6 @@
|
|||
import { getQueryString } from './url';
|
||||
|
||||
export const apiRequest = (method, url, body) =>
|
||||
export const apiRequest = (method, url, body, headers) =>
|
||||
fetch(url, {
|
||||
method,
|
||||
cache: 'no-cache',
|
||||
|
|
@ -8,18 +8,15 @@ export const apiRequest = (method, url, body) =>
|
|||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
...headers,
|
||||
},
|
||||
body,
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
return res.json();
|
||||
return res.json().then(data => ({ ok: res.ok, status: res.status, data }));
|
||||
}
|
||||
|
||||
if (['post', 'put', 'delete'].includes(method)) {
|
||||
return res.text();
|
||||
}
|
||||
|
||||
return null;
|
||||
return res.text().then(data => ({ ok: res.ok, status: res.status, res: res, data }));
|
||||
});
|
||||
|
||||
export const get = (url, params) => apiRequest('get', `${url}${getQueryString(params)}`);
|
||||
|
|
|
|||
18
package.json
18
package.json
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "umami",
|
||||
"version": "0.62.0",
|
||||
"version": "0.72.0",
|
||||
"description": "A simple, fast, website analytics alternative to Google Analytics. ",
|
||||
"author": "Mike Cao <mike@mikecao.com>",
|
||||
"license": "MIT",
|
||||
|
|
@ -13,6 +13,7 @@
|
|||
"dev": "next dev",
|
||||
"build": "npm-run-all build-tracker build-lang build-geo build-db build-app",
|
||||
"start": "next start",
|
||||
"start-env": "node scripts/start-env.js",
|
||||
"build-app": "next build",
|
||||
"build-tracker": "rollup -c rollup.tracker.config.js",
|
||||
"build-db": "npm-run-all copy-db-schema build-db-client",
|
||||
|
|
@ -29,7 +30,11 @@
|
|||
"extract-lang": "formatjs extract {pages,components}/**/*.js --out-file build/messages.json",
|
||||
"merge-lang": "node scripts/merge-lang.js",
|
||||
"format-lang": "node scripts/format-lang.js",
|
||||
"compile-lang": "formatjs compile-folder --ast build lang-compiled"
|
||||
"compile-lang": "formatjs compile-folder --ast build lang-compiled",
|
||||
"check-lang": "node scripts/check-lang.js",
|
||||
"loadtest": "node scripts/loadtest.js",
|
||||
"loadtest:medium": "node scripts/loadtest.js --weight=medium",
|
||||
"loadtest:heavy": "node scripts/loadtest.js --weight=heavy --verbose"
|
||||
},
|
||||
"lint-staged": {
|
||||
"**/*.js": [
|
||||
|
|
@ -61,7 +66,8 @@
|
|||
"date-fns": "^2.16.1",
|
||||
"date-fns-tz": "^1.0.10",
|
||||
"detect-browser": "^5.1.1",
|
||||
"formik": "^2.1.6",
|
||||
"dotenv": "^8.2.0",
|
||||
"formik": "^2.1.7",
|
||||
"immer": "^7.0.9",
|
||||
"is-localhost-ip": "^1.4.0",
|
||||
"isbot-fast": "^1.2.0",
|
||||
|
|
@ -71,7 +77,7 @@
|
|||
"next": "^9.5.3",
|
||||
"react": "^16.13.1",
|
||||
"react-dom": "^16.13.1",
|
||||
"react-intl": "^5.8.3",
|
||||
"react-intl": "^5.8.4",
|
||||
"react-redux": "^7.2.1",
|
||||
"react-simple-maps": "^2.1.2",
|
||||
"react-spring": "^8.0.27",
|
||||
|
|
@ -87,7 +93,7 @@
|
|||
"uuid": "^8.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@formatjs/cli": "^2.12.0",
|
||||
"@formatjs/cli": "^2.13.0",
|
||||
"@prisma/cli": "2.8.0",
|
||||
"@rollup/plugin-buble": "^0.21.3",
|
||||
"@rollup/plugin-node-resolve": "^9.0.0",
|
||||
|
|
@ -95,7 +101,6 @@
|
|||
"@svgr/webpack": "^5.4.0",
|
||||
"cross-env": "^7.0.2",
|
||||
"del": "^6.0.0",
|
||||
"dotenv": "^8.2.0",
|
||||
"dotenv-cli": "^4.0.0",
|
||||
"eslint": "^7.10.0",
|
||||
"eslint-config-prettier": "^6.12.0",
|
||||
|
|
@ -105,6 +110,7 @@
|
|||
"extract-react-intl-messages": "^4.1.1",
|
||||
"husky": "^4.3.0",
|
||||
"lint-staged": "^10.4.0",
|
||||
"loadtest": "5.1.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"postcss-flexbugs-fixes": "^4.2.1",
|
||||
"postcss-import": "^12.0.1",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { serialize } from 'cookie';
|
||||
import { AUTH_COOKIE_NAME } from 'lib/constants';
|
||||
import { redirect } from 'lib/response';
|
||||
import { ok } from 'lib/response';
|
||||
|
||||
export default async (req, res) => {
|
||||
const cookie = serialize(AUTH_COOKIE_NAME, '', {
|
||||
|
|
@ -11,5 +11,5 @@ export default async (req, res) => {
|
|||
|
||||
res.setHeader('Set-Cookie', [cookie]);
|
||||
|
||||
return redirect(res, '/login');
|
||||
return ok(res);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,8 +1,12 @@
|
|||
import { useEffect } from 'react';
|
||||
import { useRouter } from 'next/router';
|
||||
|
||||
export default function LogoutPage() {
|
||||
const router = useRouter();
|
||||
const { basePath } = router;
|
||||
|
||||
useEffect(() => {
|
||||
fetch('/api/auth/logout').then(() => (window.location.href = '/login'));
|
||||
fetch(`${basePath}/api/auth/logout`).then(() => router.push('/login'));
|
||||
}, []);
|
||||
|
||||
return null;
|
||||
|
|
|
|||
1
public/country/da-DK.json
Normal file
1
public/country/da-DK.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afghanistan","AL":"Albanien","DZ":"Algeriet","AS":"Amerikansk Samoa","UM":"Amerikanske overs\u00f8iske \u00f8er","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarktis","AG":"Antigua og Barbuda","AR":"Argentina","AM":"Armenien","AW":"Aruba","AZ":"Aserbajdsjan","AU":"Australien","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BE":"Belgien","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosnien-Hercegovina","BW":"Botswana","BV":"Bouvet\u00f8en","BR":"Brasilien","BN":"Brunei","BG":"Bulgarien","BF":"Burkina Faso","BI":"Burundi","KH":"Cambodja","CM":"Cameroun","CA":"Canada","KY":"Cayman\u00f8erne","CL":"Chile","CC":"Cocos\u00f8erne","CO":"Colombia","KM":"Comorerne","CG":"Congo-Brazzaville","CD":"Congo-Kinshasa","CK":"Cook\u00f8erne","CR":"Costa Rica","CU":"Cuba","CW":"Cura\u00e7ao","CY":"Cypern","DK":"Danmark","VI":"De Amerikanske Jomfru\u00f8er","VG":"De Britiske Jomfru\u00f8er","AE":"De Forenede Arabiske Emirater","TF":"De Franske Besiddelser i Det Sydlige Indiske Ocean og Antarktis","PS":"De pal\u00e6stinensiske omr\u00e5der","BQ":"De tidligere Nederlandske Antiller","CF":"Den Centralafrikanske Republik","DO":"Den Dominikanske Republik","IO":"Det Britiske Territorium i Det Indiske Ocean","DJ":"Djibouti","DM":"Dominica","EC":"Ecuador","EG":"Egypten","SV":"El Salvador","CI":"Elfenbenskysten","ER":"Eritrea","EE":"Estland","SZ":"Eswatini","ET":"Etiopien","FK":"Falklands\u00f8erne","FJ":"Fiji","PH":"Filippinerne","FI":"Finland","FR":"Frankrig","GF":"Fransk Guyana","PF":"Fransk Polynesien","FO":"F\u00e6r\u00f8erne","GA":"Gabon","GM":"Gambia","GE":"Georgien","GH":"Ghana","GI":"Gibraltar","GD":"Grenada","GR":"Gr\u00e6kenland","GL":"Gr\u00f8nland","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard Island og McDonald Islands","NL":"Holland","HN":"Honduras","BY":"Hviderusland","IN":"Indien","ID":"Indonesien","IQ":"Irak","IR":"Iran","IE":"Irland","IS":"Island","IM":"Isle of Man","IL":"Israel","IT":"Italien","JM":"Jamaica","JP":"Japan","JE":"Jersey","JO":"Jordan","CX":"Jule\u00f8en","CV":"Kap Verde","KZ":"Kasakhstan","KE":"Kenya","CN":"Kina","KG":"Kirgisistan","KI":"Kiribati","HR":"Kroatien","KW":"Kuwait","LA":"Laos","LS":"Lesotho","LV":"Letland","LB":"Libanon","LR":"Liberia","LY":"Libyen","LI":"Liechtenstein","LT":"Litauen","LU":"Luxembourg","MG":"Madagaskar","MW":"Malawi","MY":"Malaysia","MV":"Maldiverne","ML":"Mali","MT":"Malta","MA":"Marokko","MH":"Marshall\u00f8erne","MQ":"Martinique","MR":"Mauretanien","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Mikronesien","MD":"Moldova","MC":"Monaco","MN":"Mongoliet","ME":"Montenegro","MS":"Montserrat","MZ":"Mozambique","MM":"Myanmar (Burma)","NA":"Namibia","NR":"Nauru","NP":"Nepal","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","KP":"Nordkorea","MK":"Nordmakedonien","MP":"Nordmarianerne","NF":"Norfolk Island","NO":"Norge","NC":"Ny Kaledonien","OM":"Oman","PK":"Pakistan","PW":"Palau","PA":"Panama","PG":"Papua Ny Guinea","PY":"Paraguay","PE":"Peru","PN":"Pitcairn","PL":"Polen","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Rum\u00e6nien","RU":"Rusland","RW":"Rwanda","BL":"Saint Barth\u00e9lemy","KN":"Saint Kitts og Nevis","LC":"Saint Lucia","MF":"Saint Martin","PM":"Saint Pierre og Miquelon","VC":"Saint Vincent og Grenadinerne","SB":"Salomon\u00f8erne","WS":"Samoa","SM":"San Marino","ST":"S\u00e3o Tom\u00e9 og Pr\u00edncipe","HK":"SAR Hongkong","MO":"SAR Macao","SA":"Saudi-Arabien","CH":"Schweiz","SN":"Senegal","RS":"Serbien","SC":"Seychellerne","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten","SK":"Slovakiet","SI":"Slovenien","SO":"Somalia","GS":"South Georgia og De Sydlige Sandwich\u00f8er","ES":"Spanien","LK":"Sri Lanka","SH":"St. Helena","GB":"Storbritannien","SD":"Sudan","SR":"Surinam","SJ":"Svalbard og Jan Mayen","SE":"Sverige","ZA":"Sydafrika","KR":"Sydkorea","SS":"Sydsudan","SY":"Syrien","TJ":"Tadsjikistan","TW":"Taiwan","TZ":"Tanzania","TD":"Tchad","TH":"Thailand","TL":"Timor-Leste","CZ":"Tjekkiet","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad og Tobago","TN":"Tunesien","TM":"Turkmenistan","TC":"Turks- og Caicos\u00f8erne","TV":"Tuvalu","TR":"Tyrkiet","DE":"Tyskland","UG":"Uganda","UA":"Ukraine","HU":"Ungarn","UY":"Uruguay","US":"USA","UZ":"Usbekistan","VU":"Vanuatu","VA":"Vatikanstaten","VE":"Venezuela","EH":"Vestsahara","VN":"Vietnam","WF":"Wallis og Futuna","YE":"Yemen","ZM":"Zambia","ZW":"Zimbabwe","GQ":"\u00c6kvatorialguinea","AT":"\u00d8strig","AX":"\u00c5land"}
|
||||
1
public/country/de-DE.json
Normal file
1
public/country/de-DE.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afghanistan","EG":"\u00c4gypten","AX":"\u00c5landinseln","AL":"Albanien","DZ":"Algerien","AS":"Amerikanisch-Samoa","VI":"Amerikanische Jungferninseln","UM":"Amerikanische \u00dcberseeinseln","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarktis","AG":"Antigua und Barbuda","GQ":"\u00c4quatorialguinea","AR":"Argentinien","AM":"Armenien","AW":"Aruba","AZ":"Aserbaidschan","ET":"\u00c4thiopien","AU":"Australien","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesch","BB":"Barbados","BY":"Belarus","BE":"Belgien","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivien","BQ":"Bonaire, Sint Eustatius und Saba","BA":"Bosnien und Herzegowina","BW":"Botsuana","BV":"Bouvetinsel","BR":"Brasilien","VG":"Britische Jungferninseln","IO":"Britisches Territorium im Indischen Ozean","BN":"Brunei Darussalam","BG":"Bulgarien","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","CL":"Chile","CN":"China","CK":"Cookinseln","CR":"Costa Rica","CI":"C\u00f4te d\u2019Ivoire","CW":"Cura\u00e7ao","DK":"D\u00e4nemark","DE":"Deutschland","DM":"Dominica","DO":"Dominikanische Republik","DJ":"Dschibuti","EC":"Ecuador","SV":"El Salvador","ER":"Eritrea","EE":"Estland","SZ":"Eswatini","FK":"Falklandinseln","FO":"F\u00e4r\u00f6er","FJ":"Fidschi","FI":"Finnland","FR":"Frankreich","GF":"Franz\u00f6sisch-Guayana","PF":"Franz\u00f6sisch-Polynesien","TF":"Franz\u00f6sische S\u00fcd- und Antarktisgebiete","GA":"Gabun","GM":"Gambia","GE":"Georgien","GH":"Ghana","GI":"Gibraltar","GD":"Grenada","GR":"Griechenland","GL":"Gr\u00f6nland","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard und McDonaldinseln","HN":"Honduras","IN":"Indien","ID":"Indonesien","IQ":"Irak","IR":"Iran","IE":"Irland","IS":"Island","IM":"Isle of Man","IL":"Israel","IT":"Italien","JM":"Jamaika","JP":"Japan","YE":"Jemen","JE":"Jersey","JO":"Jordanien","KY":"Kaimaninseln","KH":"Kambodscha","CM":"Kamerun","CA":"Kanada","KZ":"Kasachstan","QA":"Katar","KE":"Kenia","KG":"Kirgisistan","KI":"Kiribati","CC":"Kokosinseln","CO":"Kolumbien","KM":"Komoren","CG":"Kongo-Brazzaville","CD":"Kongo-Kinshasa","HR":"Kroatien","CU":"Kuba","KW":"Kuwait","LA":"Laos","LS":"Lesotho","LV":"Lettland","LB":"Libanon","LR":"Liberia","LY":"Libyen","LI":"Liechtenstein","LT":"Litauen","LU":"Luxemburg","MG":"Madagaskar","MW":"Malawi","MY":"Malaysia","MV":"Malediven","ML":"Mali","MT":"Malta","MA":"Marokko","MH":"Marshallinseln","MQ":"Martinique","MR":"Mauretanien","MU":"Mauritius","YT":"Mayotte","MX":"Mexiko","FM":"Mikronesien","MC":"Monaco","MN":"Mongolei","ME":"Montenegro","MS":"Montserrat","MZ":"Mosambik","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NC":"Neukaledonien","NZ":"Neuseeland","NI":"Nicaragua","NL":"Niederlande","NE":"Niger","NG":"Nigeria","NU":"Niue","KP":"Nordkorea","MP":"N\u00f6rdliche Marianen","MK":"Nordmazedonien","NF":"Norfolkinsel","NO":"Norwegen","OM":"Oman","AT":"\u00d6sterreich","PK":"Pakistan","PS":"Pal\u00e4stinensische Autonomiegebiete","PW":"Palau","PA":"Panama","PG":"Papua-Neuguinea","PY":"Paraguay","PE":"Peru","PH":"Philippinen","PN":"Pitcairninseln","PL":"Polen","PT":"Portugal","PR":"Puerto Rico","MD":"Republik Moldau","RE":"R\u00e9union","RW":"Ruanda","RO":"Rum\u00e4nien","RU":"Russland","SB":"Salomonen","ZM":"Sambia","WS":"Samoa","SM":"San Marino","ST":"S\u00e3o Tom\u00e9 und Pr\u00edncipe","SA":"Saudi-Arabien","SE":"Schweden","CH":"Schweiz","SN":"Senegal","RS":"Serbien","SC":"Seychellen","SL":"Sierra Leone","ZW":"Simbabwe","SG":"Singapur","SX":"Sint Maarten","SK":"Slowakei","SI":"Slowenien","SO":"Somalia","HK":"Sonderverwaltungsregion Hongkong","MO":"Sonderverwaltungsregion Macau","ES":"Spanien","SJ":"Spitzbergen und Jan Mayen","LK":"Sri Lanka","BL":"St. Barth\u00e9lemy","SH":"St. Helena","KN":"St. Kitts und Nevis","LC":"St. Lucia","MF":"St. Martin","PM":"St. Pierre und Miquelon","VC":"St. Vincent und die Grenadinen","ZA":"S\u00fcdafrika","SD":"Sudan","GS":"S\u00fcdgeorgien und die S\u00fcdlichen Sandwichinseln","KR":"S\u00fcdkorea","SS":"S\u00fcdsudan","SR":"Suriname","SY":"Syrien","TJ":"Tadschikistan","TW":"Taiwan","TZ":"Tansania","TH":"Thailand","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad und Tobago","TD":"Tschad","CZ":"Tschechien","TN":"Tunesien","TR":"T\u00fcrkei","TM":"Turkmenistan","TC":"Turks- und Caicosinseln","TV":"Tuvalu","UG":"Uganda","UA":"Ukraine","HU":"Ungarn","UY":"Uruguay","UZ":"Usbekistan","VU":"Vanuatu","VA":"Vatikanstadt","VE":"Venezuela","AE":"Vereinigte Arabische Emirate","US":"Vereinigte Staaten","GB":"Vereinigtes K\u00f6nigreich","VN":"Vietnam","WF":"Wallis und Futuna","CX":"Weihnachtsinsel","EH":"Westsahara","CF":"Zentralafrikanische Republik","CY":"Zypern"}
|
||||
1
public/country/el-GR.json
Normal file
1
public/country/el-GR.json
Normal file
File diff suppressed because one or more lines are too long
1
public/country/en-US.json
Normal file
1
public/country/en-US.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afghanistan","AX":"\u00c5land Islands","AL":"Albania","DZ":"Algeria","AS":"American Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua & Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosnia & Herzegovina","BW":"Botswana","BV":"Bouvet Island","BR":"Brazil","IO":"British Indian Ocean Territory","VG":"British Virgin Islands","BN":"Brunei","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","KH":"Cambodia","CM":"Cameroon","CA":"Canada","CV":"Cape Verde","BQ":"Caribbean Netherlands","KY":"Cayman Islands","CF":"Central African Republic","TD":"Chad","CL":"Chile","CN":"China","CX":"Christmas Island","CC":"Cocos (Keeling) Islands","CO":"Colombia","KM":"Comoros","CG":"Congo - Brazzaville","CD":"Congo - Kinshasa","CK":"Cook Islands","CR":"Costa Rica","CI":"C\u00f4te d\u2019Ivoire","HR":"Croatia","CU":"Cuba","CW":"Cura\u00e7ao","CY":"Cyprus","CZ":"Czechia","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominican Republic","EC":"Ecuador","EG":"Egypt","SV":"El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"Estonia","SZ":"Eswatini","ET":"Ethiopia","FK":"Falkland Islands","FO":"Faroe Islands","FJ":"Fiji","FI":"Finland","FR":"France","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories","GA":"Gabon","GM":"Gambia","GE":"Georgia","DE":"Germany","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard & McDonald Islands","HN":"Honduras","HK":"Hong Kong SAR China","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran","IQ":"Iraq","IE":"Ireland","IM":"Isle of Man","IL":"Israel","IT":"Italy","JM":"Jamaica","JP":"Japan","JE":"Jersey","JO":"Jordan","KZ":"Kazakhstan","KE":"Kenya","KI":"Kiribati","KW":"Kuwait","KG":"Kyrgyzstan","LA":"Laos","LV":"Latvia","LB":"Lebanon","LS":"Lesotho","LR":"Liberia","LY":"Libya","LI":"Liechtenstein","LT":"Lithuania","LU":"Luxembourg","MO":"Macao SAR China","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MH":"Marshall Islands","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia","MD":"Moldova","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"Myanmar (Burma)","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Netherlands","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NF":"Norfolk Island","KP":"North Korea","MK":"North Macedonia","MP":"Northern Mariana Islands","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PS":"Palestinian Territories","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","PE":"Peru","PH":"Philippines","PN":"Pitcairn Islands","PL":"Poland","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Romania","RU":"Russia","RW":"Rwanda","WS":"Samoa","SM":"San Marino","ST":"S\u00e3o Tom\u00e9 & Pr\u00edncipe","SA":"Saudi Arabia","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten","SK":"Slovakia","SI":"Slovenia","SB":"Solomon Islands","SO":"Somalia","ZA":"South Africa","GS":"South Georgia & South Sandwich Islands","KR":"South Korea","SS":"South Sudan","ES":"Spain","LK":"Sri Lanka","BL":"St. Barth\u00e9lemy","SH":"St. Helena","KN":"St. Kitts & Nevis","LC":"St. Lucia","MF":"St. Martin","PM":"St. Pierre & Miquelon","VC":"St. Vincent & Grenadines","SD":"Sudan","SR":"Suriname","SJ":"Svalbard & Jan Mayen","SE":"Sweden","CH":"Switzerland","SY":"Syria","TW":"Taiwan","TJ":"Tajikistan","TZ":"Tanzania","TH":"Thailand","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad & Tobago","TN":"Tunisia","TR":"Turkey","TM":"Turkmenistan","TC":"Turks & Caicos Islands","TV":"Tuvalu","UM":"U.S. Outlying Islands","VI":"U.S. Virgin Islands","UG":"Uganda","UA":"Ukraine","AE":"United Arab Emirates","GB":"United Kingdom","US":"United States","UY":"Uruguay","UZ":"Uzbekistan","VU":"Vanuatu","VA":"Vatican City","VE":"Venezuela","VN":"Vietnam","WF":"Wallis & Futuna","EH":"Western Sahara","YE":"Yemen","ZM":"Zambia","ZW":"Zimbabwe"}
|
||||
1
public/country/es-MX.json
Normal file
1
public/country/es-MX.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afganist\u00e1n","AL":"Albania","DE":"Alemania","AD":"Andorra","AO":"Angola","AI":"Anguila","AQ":"Ant\u00e1rtida","AG":"Antigua y Barbuda","SA":"Arabia Saudita","DZ":"Argelia","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaiy\u00e1n","BS":"Bahamas","BD":"Banglad\u00e9s","BB":"Barbados","BH":"Bar\u00e9in","BE":"B\u00e9lgica","BZ":"Belice","BJ":"Ben\u00edn","BM":"Bermudas","BY":"Bielorrusia","BO":"Bolivia","BA":"Bosnia y Herzegovina","BW":"Botsuana","BR":"Brasil","BN":"Brun\u00e9i","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","BT":"But\u00e1n","CV":"Cabo Verde","KH":"Camboya","CM":"Camer\u00fan","CA":"Canad\u00e1","BQ":"Caribe neerland\u00e9s","QA":"Catar","TD":"Chad","CZ":"Chequia","CL":"Chile","CN":"China","CY":"Chipre","VA":"Ciudad del Vaticano","CO":"Colombia","KM":"Comoras","CG":"Congo","KP":"Corea del Norte","KR":"Corea del Sur","CR":"Costa Rica","CI":"C\u00f4te d\u2019Ivoire","HR":"Croacia","CU":"Cuba","CW":"Curazao","DK":"Dinamarca","DM":"Dominica","EC":"Ecuador","EG":"Egipto","SV":"El Salvador","AE":"Emiratos \u00c1rabes Unidos","ER":"Eritrea","SK":"Eslovaquia","SI":"Eslovenia","ES":"Espa\u00f1a","US":"Estados Unidos","EE":"Estonia","SZ":"Eswatini","ET":"Etiop\u00eda","PH":"Filipinas","FI":"Finlandia","FJ":"Fiyi","FR":"Francia","GA":"Gab\u00f3n","GM":"Gambia","GE":"Georgia","GH":"Ghana","GI":"Gibraltar","GD":"Granada","GR":"Grecia","GL":"Groenlandia","GP":"Guadalupe","GU":"Guam","GT":"Guatemala","GF":"Guayana Francesa","GG":"Guernsey","GN":"Guinea","GQ":"Guinea Ecuatorial","GW":"Guinea-Bis\u00e1u","GY":"Guyana","HT":"Hait\u00ed","HN":"Honduras","HU":"Hungr\u00eda","IN":"India","ID":"Indonesia","IQ":"Irak","IR":"Ir\u00e1n","IE":"Irlanda","BV":"Isla Bouvet","IM":"Isla de Man","CX":"Isla de Navidad","NF":"Isla Norfolk","IS":"Islandia","AX":"Islas \u00c5land","KY":"Islas Caim\u00e1n","CC":"Islas Cocos","CK":"Islas Cook","FO":"Islas Feroe","GS":"Islas Georgia del Sur y Sandwich del Sur","HM":"Islas Heard y McDonald","FK":"Islas Malvinas","MP":"Islas Marianas del Norte","MH":"Islas Marshall","UM":"Islas menores alejadas de EE. UU.","PN":"Islas Pitcairn","SB":"Islas Salom\u00f3n","TC":"Islas Turcas y Caicos","VG":"Islas V\u00edrgenes Brit\u00e1nicas","VI":"Islas V\u00edrgenes de EE. UU.","IL":"Israel","IT":"Italia","JM":"Jamaica","JP":"Jap\u00f3n","JE":"Jersey","JO":"Jordania","KZ":"Kazajist\u00e1n","KE":"Kenia","KG":"Kirguist\u00e1n","KI":"Kiribati","KW":"Kuwait","LA":"Laos","LS":"Lesoto","LV":"Letonia","LB":"L\u00edbano","LR":"Liberia","LY":"Libia","LI":"Liechtenstein","LT":"Lituania","LU":"Luxemburgo","MK":"Macedonia del Norte","MG":"Madagascar","MY":"Malasia","MW":"Malaui","MV":"Maldivas","ML":"Mali","MT":"Malta","MA":"Marruecos","MQ":"Martinica","MU":"Mauricio","MR":"Mauritania","YT":"Mayotte","MX":"M\u00e9xico","FM":"Micronesia","MD":"Moldavia","MC":"M\u00f3naco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MZ":"Mozambique","MM":"Myanmar (Birmania)","NA":"Namibia","NR":"Nauru","NP":"Nepal","NI":"Nicaragua","NE":"N\u00edger","NG":"Nigeria","NU":"Niue","NO":"Noruega","NC":"Nueva Caledonia","NZ":"Nueva Zelanda","OM":"Om\u00e1n","NL":"Pa\u00edses Bajos","PK":"Pakist\u00e1n","PW":"Palaos","PA":"Panam\u00e1","PG":"Pap\u00faa Nueva Guinea","PY":"Paraguay","PE":"Per\u00fa","PF":"Polinesia Francesa","PL":"Polonia","PT":"Portugal","PR":"Puerto Rico","HK":"RAE de Hong Kong (China)","MO":"RAE de Macao (China)","GB":"Reino Unido","CF":"Rep\u00fablica Centroafricana","CD":"Rep\u00fablica Democr\u00e1tica del Congo","DO":"Rep\u00fablica Dominicana","RE":"Reuni\u00f3n","RW":"Ruanda","RO":"Rumania","RU":"Rusia","EH":"S\u00e1hara Occidental","WS":"Samoa","AS":"Samoa Americana","BL":"San Bartolom\u00e9","KN":"San Crist\u00f3bal y Nieves","SM":"San Marino","MF":"San Mart\u00edn","PM":"San Pedro y Miquel\u00f3n","VC":"San Vicente y las Granadinas","SH":"Santa Elena","LC":"Santa Luc\u00eda","ST":"Santo Tom\u00e9 y Pr\u00edncipe","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leona","SG":"Singapur","SX":"Sint Maarten","SY":"Siria","SO":"Somalia","LK":"Sri Lanka","ZA":"Sud\u00e1frica","SD":"Sud\u00e1n","SS":"Sud\u00e1n del Sur","SE":"Suecia","CH":"Suiza","SR":"Surinam","SJ":"Svalbard y Jan Mayen","TH":"Tailandia","TW":"Taiw\u00e1n","TZ":"Tanzania","TJ":"Tayikist\u00e1n","IO":"Territorio Brit\u00e1nico del Oc\u00e9ano \u00cdndico","TF":"Territorios Australes Franceses","PS":"Territorios Palestinos","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad y Tobago","TN":"T\u00fanez","TM":"Turkmenist\u00e1n","TR":"Turqu\u00eda","TV":"Tuvalu","UA":"Ucrania","UG":"Uganda","UY":"Uruguay","UZ":"Uzbekist\u00e1n","VU":"Vanuatu","VE":"Venezuela","VN":"Vietnam","WF":"Wallis y Futuna","YE":"Yemen","DJ":"Yibuti","ZM":"Zambia","ZW":"Zimbabue"}
|
||||
1
public/country/fo-FO.json
Normal file
1
public/country/fo-FO.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afganistan","AX":"\u00c1land","AL":"Albania","DZ":"Algeria","AS":"Amerikanska Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarktis","AG":"Antigua & Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AZ":"Aserbadjan","AU":"Avstralia","BS":"Bahamaoyggjar","BD":"Bangladesj","BB":"Barbados","BH":"Barein","BE":"Belgia","BZ":"Belis","BJ":"Benin","BM":"Bermuda","BO":"Bolivia","BA":"Bosnia-Hersegovina","BW":"Botsvana","BV":"Bouvetoyggj","BR":"Brasil","BN":"Brunei","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","BT":"Butan","KY":"Caymanoyggjar","CK":"Cooksoyggjar","CW":"Cura\u00e7ao","DK":"Danmark","DJ":"Djibuti","DM":"Dominika","DO":"Dominikal\u00fd\u00f0veldi\u00f0","EG":"Egyptaland","EC":"Ekvador","GQ":"Ekvatorguinea","SV":"El Salvador","ER":"Eritrea","EE":"Estland","SZ":"Esvatini","ET":"Etiopia","AT":"Eysturr\u00edki","TL":"Eysturtimor","FK":"Falklandsoyggjar","FJ":"Fiji","CI":"F\u00edlabeinsstrondin","PH":"Filipsoyggjar","FI":"Finnland","FR":"Frakland","GF":"Franska Gujana","PF":"Franska Polynesia","TF":"Fronsku sunnaru landa\u00f8ki","FO":"F\u00f8royar","GA":"Gabon","GM":"Gambia","GH":"Gana","GE":"Georgia","GI":"Gibraltar","GD":"Grenada","GR":"Grikkaland","CV":"Gr\u00f8nh\u00f8vdaoyggjar","GL":"Gr\u00f8nland","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Gujana","HT":"Haiti","HM":"Heard og McDonaldoyggjar","HN":"Honduras","HK":"Hong Kong SAR Kina","BY":"Hv\u00edtarussland","IN":"India","ID":"Indonesia","IQ":"Irak","IR":"Iran","IE":"\u00cdrland","IS":"\u00cdsland","IM":"Isle of Man","IL":"\u00cdsrael","IT":"Italia","JM":"Jamaika","JP":"Japan","YE":"Jemen","JE":"Jersey","CX":"J\u00f3laoyggjin","JO":"Jordan","KH":"Kambodja","CM":"Kamerun","CA":"Kanada","KZ":"Kasakstan","QA":"Katar","CZ":"Kekkia","KE":"Kenja","CL":"Kili","CN":"Kina","KG":"Kirgisia","KI":"Kiribati","TD":"Kjad","CC":"Kokosoyggjar","CO":"Kolombia","KM":"Komoroyggjar","CG":"Kongo","CD":"Kongo, Dem. L\u00fd\u00f0veldi\u00f0","CR":"Kosta Rika","HR":"Kroatia","CU":"Kuba","KW":"Kuvait","CY":"K\u00fdpros","LA":"Laos","LS":"Lesoto","LV":"Lettland","LB":"Libanon","LR":"Liberia","LY":"Libya","LI":"Liktinstein","LT":"Litava","LU":"Luksemborg","MG":"Madagaskar","MO":"Makao SAR Kina","MY":"Malaisia","MW":"Malavi","MV":"Maldivoyggjar","ML":"Mali","MT":"Malta","MA":"Marokko","MH":"Marshalloyggjar","MQ":"Martinique","YT":"Mayotte","MX":"Meksiko","CF":"Mi\u00f0afrikal\u00fd\u00f0veldi\u00f0","FM":"Mikronesiasamveldi\u00f0","MD":"Moldova","MC":"Monako","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MR":"M\u00f3ritania","MU":"M\u00f3ritius","MZ":"Mosambik","MM":"Myanmar (Burma)","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Ni\u00f0urlond","BQ":"Ni\u00f0urlonds Karibia","NE":"Niger","NG":"Nigeria","NI":"Nikaragua","NU":"Niue","MP":"Nor\u00f0aru Mariuoyggjar","KP":"Nor\u00f0urkorea","NO":"Noreg","NF":"Norfolksoyggj","MK":"North Macedonia","NC":"N\u00fdkaled\u00f3nia","NZ":"N\u00fds\u00e6land","OM":"Oman","PK":"Pakistan","PW":"Palau","PS":"Palestinskt land\u00f8ki","PA":"Panama","PG":"Papua N\u00fdguinea","PY":"Paraguai","PE":"Peru","PN":"Pitcairnoyggjar","PL":"P\u00f3lland","PT":"Portugal","PR":"Puerto Riko","RE":"R\u00e9union","RW":"Ruanda","RO":"Rumenia","RU":"Russland","PM":"Saint Pierre & Miquelon","SB":"Salomonoyggjar","US":"Sambandsr\u00edki Amerika","UM":"Sambandsr\u00edki Amerikas fjarskotnu oyggjar","VI":"Sambandsr\u00edki Amerikas Jomfr\u00faoyggjar","ZM":"Sambia","AE":"Sameindu Emirr\u00edkini","WS":"Samoa","SM":"San Marino","ST":"Sao Tome & Prinsipi","SA":"Saudiarabia","SN":"Senegal","RS":"Serbia","SC":"Seyskelloyggjar","SL":"Sierra Leona","ZW":"Simbabvi","SG":"Singapor","SX":"Sint Maarten","SK":"Slovakia","SI":"Slovenia","SO":"Somalia","ES":"Spania","LK":"Sri Lanka","MF":"St-Martin","BL":"St. Barth\u00e9lemy","SH":"St. Helena","KN":"St. Kitts & Nevis","LC":"St. Lusia","VC":"St. Vinsent & Grenadinoyggjar","IO":"St\u00f3ra Bretlands Indiahavoyggjar","VG":"St\u00f3ra Bretlands Jomfr\u00faoyggjar","GB":"St\u00f3rabretland","SD":"Sudan","ZA":"Su\u00f0urafrika","GS":"Su\u00f0urgeorgia og Su\u00f0ursandwichoyggjar","KR":"Su\u00f0urkorea","SS":"Su\u00f0ursudan","SR":"Surinam","SJ":"Svalbard & Jan Mayen","CH":"Sveis","SE":"Sv\u00f8r\u00edki","SY":"S\u00fdria","TJ":"Tadsjikistan","TH":"Tailand","TW":"Taivan","TZ":"Tansania","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad & Tobago","TN":"Tunesia","TR":"Turkaland","TM":"Turkmenistan","TC":"Turks- og Caicosoyggjar","TV":"Tuvalu","DE":"T\u00fdskland","UG":"Uganda","UA":"Ukraina","HU":"Ungarn","UY":"Uruguai","UZ":"Usbekistan","VU":"Vanuatu","VA":"Vatikanb\u00fdur","VE":"Venesuela","EH":"Vestursahara","VN":"Vjetnam","WF":"Wallis- og Futunaoyggjar"}
|
||||
1
public/country/fr-FR.json
Normal file
1
public/country/fr-FR.json
Normal file
File diff suppressed because one or more lines are too long
1
public/country/ja-JP.json
Normal file
1
public/country/ja-JP.json
Normal file
File diff suppressed because one or more lines are too long
1
public/country/mn-MN.json
Normal file
1
public/country/mn-MN.json
Normal file
File diff suppressed because one or more lines are too long
1
public/country/nb-NO.json
Normal file
1
public/country/nb-NO.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afghanistan","AL":"Albania","DZ":"Algerie","AS":"Amerikansk Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarktis","AG":"Antigua og Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AZ":"Aserbajdsjan","AU":"Australia","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BE":"Belgia","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosnia-Hercegovina","BW":"Botswana","BV":"Bouvet\u00f8ya","BR":"Brasil","BN":"Brunei","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CA":"Canada","KY":"Cayman\u00f8yene","CL":"Chile","CX":"Christmas\u00f8ya","CO":"Colombia","CK":"Cook\u00f8yene","CR":"Costa Rica","CU":"Cuba","CW":"Cura\u00e7ao","DK":"Danmark","VI":"De amerikanske jomfru\u00f8yene","VG":"De britiske jomfru\u00f8yene","AE":"De forente arabiske emirater","TF":"De franske s\u00f8rterritorier","DO":"Den dominikanske republikk","CF":"Den sentralafrikanske republikk","IO":"Det britiske territoriet i Indiahavet","PS":"Det palestinske omr\u00e5det","DJ":"Djibouti","DM":"Dominica","EC":"Ecuador","EG":"Egypt","GQ":"Ekvatorial-Guinea","SV":"El Salvador","CI":"Elfenbenskysten","ER":"Eritrea","EE":"Estland","SZ":"Eswatini","ET":"Etiopia","FK":"Falklands\u00f8yene","FJ":"Fiji","PH":"Filippinene","FI":"Finland","FR":"Frankrike","GF":"Fransk Guyana","PF":"Fransk Polynesia","FO":"F\u00e6r\u00f8yene","GA":"Gabon","GM":"Gambia","GE":"Georgia","GH":"Ghana","GI":"Gibraltar","GD":"Grenada","GL":"Gr\u00f8nland","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard- og McDonald\u00f8yene","GR":"Hellas","HN":"Honduras","HK":"Hongkong S.A.R. Kina","BY":"Hviterussland","IN":"India","ID":"Indonesia","IQ":"Irak","IR":"Iran","IE":"Irland","IS":"Island","IL":"Israel","IT":"Italia","JM":"Jamaica","JP":"Japan","YE":"Jemen","JE":"Jersey","JO":"Jordan","KH":"Kambodsja","CM":"Kamerun","CV":"Kapp Verde","BQ":"Karibisk Nederland","KZ":"Kasakhstan","KE":"Kenya","CN":"Kina","KG":"Kirgisistan","KI":"Kiribati","CC":"Kokos\u00f8yene","KM":"Komorene","CG":"Kongo-Brazzaville","CD":"Kongo-Kinshasa","HR":"Kroatia","KW":"Kuwait","CY":"Kypros","LA":"Laos","LV":"Latvia","LS":"Lesotho","LB":"Libanon","LR":"Liberia","LY":"Libya","LI":"Liechtenstein","LT":"Litauen","LU":"Luxemburg","MO":"Macao S.A.R. Kina","MG":"Madagaskar","MW":"Malawi","MY":"Malaysia","MV":"Maldivene","ML":"Mali","MT":"Malta","IM":"Man","MA":"Marokko","MH":"Marshall\u00f8yene","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Mikronesiaf\u00f8derasjonen","MD":"Moldova","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MZ":"Mosambik","MM":"Myanmar (Burma)","NA":"Namibia","NR":"Nauru","NL":"Nederland","NP":"Nepal","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","KP":"Nord-Korea","MK":"Nord-Makedonia","MP":"Nord-Marianene","NF":"Norfolk\u00f8ya","NO":"Norge","NC":"Ny-Caledonia","OM":"Oman","PK":"Pakistan","PW":"Palau","PA":"Panama","PG":"Papua Ny-Guinea","PY":"Paraguay","PE":"Peru","PN":"Pitcairn\u00f8yene","PL":"Polen","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Romania","RU":"Russland","RW":"Rwanda","KN":"Saint Kitts og Nevis","BL":"Saint-Barth\u00e9lemy","MF":"Saint-Martin","PM":"Saint-Pierre-et-Miquelon","SB":"Salomon\u00f8yene","WS":"Samoa","SM":"San Marino","ST":"S\u00e3o Tom\u00e9 og Pr\u00edncipe","SA":"Saudi-Arabia","SN":"Senegal","RS":"Serbia","SC":"Seychellene","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten","SK":"Slovakia","SI":"Slovenia","SO":"Somalia","ES":"Spania","LK":"Sri Lanka","SH":"St. Helena","LC":"St. Lucia","VC":"St. Vincent og Grenadinene","GB":"Storbritannia","SD":"Sudan","SR":"Surinam","SJ":"Svalbard og Jan Mayen","CH":"Sveits","SE":"Sverige","SY":"Syria","ZA":"S\u00f8r-Afrika","GS":"S\u00f8r-Georgia og S\u00f8r-Sandwich\u00f8yene","KR":"S\u00f8r-Korea","SS":"S\u00f8r-Sudan","TJ":"Tadsjikistan","TW":"Taiwan","TZ":"Tanzania","TH":"Thailand","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad og Tobago","TD":"Tsjad","CZ":"Tsjekkia","TN":"Tunisia","TM":"Turkmenistan","TC":"Turks- og Caicos\u00f8yene","TV":"Tuvalu","TR":"Tyrkia","DE":"Tyskland","UG":"Uganda","UA":"Ukraina","HU":"Ungarn","UY":"Uruguay","US":"USA","UM":"USAs ytre \u00f8yer","UZ":"Usbekistan","VU":"Vanuatu","VA":"Vatikanstaten","VE":"Venezuela","EH":"Vest-Sahara","VN":"Vietnam","WF":"Wallis og Futuna","ZM":"Zambia","ZW":"Zimbabwe","TL":"\u00d8st-Timor","AT":"\u00d8sterrike","AX":"\u00c5land"}
|
||||
1
public/country/nl-NL.json
Normal file
1
public/country/nl-NL.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afghanistan","AX":"\u00c5land","AL":"Albani\u00eb","DZ":"Algerije","AS":"Amerikaans-Samoa","VI":"Amerikaanse Maagdeneilanden","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua en Barbuda","AR":"Argentini\u00eb","AM":"Armeni\u00eb","AW":"Aruba","AU":"Australi\u00eb","AZ":"Azerbeidzjan","BS":"Bahama\u2019s","BH":"Bahrein","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgi\u00eb","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosni\u00eb en Herzegovina","BW":"Botswana","BV":"Bouveteiland","BR":"Brazili\u00eb","IO":"Brits Indische Oceaanterritorium","VG":"Britse Maagdeneilanden","BN":"Brunei","BG":"Bulgarije","BF":"Burkina Faso","BI":"Burundi","KH":"Cambodja","CA":"Canada","BQ":"Caribisch Nederland","CF":"Centraal-Afrikaanse Republiek","CL":"Chili","CN":"China","CX":"Christmaseiland","CC":"Cocoseilanden","CO":"Colombia","KM":"Comoren","CG":"Congo-Brazzaville","CD":"Congo-Kinshasa","CK":"Cookeilanden","CR":"Costa Rica","CU":"Cuba","CW":"Cura\u00e7ao","CY":"Cyprus","DK":"Denemarken","DJ":"Djibouti","DM":"Dominica","DO":"Dominicaanse Republiek","DE":"Duitsland","EC":"Ecuador","EG":"Egypte","SV":"El Salvador","GQ":"Equatoriaal-Guinea","ER":"Eritrea","EE":"Estland","SZ":"eSwatini","ET":"Ethiopi\u00eb","FO":"Faer\u00f6er","FK":"Falklandeilanden","FJ":"Fiji","PH":"Filipijnen","FI":"Finland","FR":"Frankrijk","GF":"Frans-Guyana","PF":"Frans-Polynesi\u00eb","TF":"Franse Gebieden in de zuidelijke Indische Oceaan","GA":"Gabon","GM":"Gambia","GE":"Georgi\u00eb","GH":"Ghana","GI":"Gibraltar","GD":"Grenada","GR":"Griekenland","GL":"Groenland","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinee","GW":"Guinee-Bissau","GY":"Guyana","HT":"Ha\u00efti","HM":"Heard en McDonaldeilanden","HN":"Honduras","HU":"Hongarije","HK":"Hongkong SAR van China","IE":"Ierland","IS":"IJsland","IN":"India","ID":"Indonesi\u00eb","IQ":"Irak","IR":"Iran","IM":"Isle of Man","IL":"Isra\u00ebl","IT":"Itali\u00eb","CI":"Ivoorkust","JM":"Jamaica","JP":"Japan","YE":"Jemen","JE":"Jersey","JO":"Jordani\u00eb","KY":"Kaaimaneilanden","CV":"Kaapverdi\u00eb","CM":"Kameroen","KZ":"Kazachstan","KE":"Kenia","KG":"Kirgizi\u00eb","KI":"Kiribati","UM":"Kleine afgelegen eilanden van de Verenigde Staten","KW":"Koeweit","HR":"Kroati\u00eb","LA":"Laos","LS":"Lesotho","LV":"Letland","LB":"Libanon","LR":"Liberia","LY":"Libi\u00eb","LI":"Liechtenstein","LT":"Litouwen","LU":"Luxemburg","MO":"Macau SAR van China","MG":"Madagaskar","MW":"Malawi","MV":"Maldiven","MY":"Maleisi\u00eb","ML":"Mali","MT":"Malta","MA":"Marokko","MH":"Marshalleilanden","MQ":"Martinique","MR":"Mauritani\u00eb","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia","MD":"Moldavi\u00eb","MC":"Monaco","MN":"Mongoli\u00eb","ME":"Montenegro","MS":"Montserrat","MZ":"Mozambique","MM":"Myanmar (Birma)","NA":"Namibi\u00eb","NR":"Nauru","NL":"Nederland","NP":"Nepal","NI":"Nicaragua","NC":"Nieuw-Caledoni\u00eb","NZ":"Nieuw-Zeeland","NE":"Niger","NG":"Nigeria","NU":"Niue","KP":"Noord-Korea","MK":"Noord-Macedoni\u00eb","MP":"Noordelijke Marianen","NO":"Noorwegen","NF":"Norfolk","UG":"Oeganda","UA":"Oekra\u00efne","UZ":"Oezbekistan","OM":"Oman","TL":"Oost-Timor","AT":"Oostenrijk","PK":"Pakistan","PW":"Palau","PS":"Palestijnse gebieden","PA":"Panama","PG":"Papoea-Nieuw-Guinea","PY":"Paraguay","PE":"Peru","PN":"Pitcairneilanden","PL":"Polen","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Roemeni\u00eb","RU":"Rusland","RW":"Rwanda","KN":"Saint Kitts en Nevis","LC":"Saint Lucia","VC":"Saint Vincent en de Grenadines","BL":"Saint-Barth\u00e9lemy","MF":"Saint-Martin","PM":"Saint-Pierre en Miquelon","SB":"Salomonseilanden","WS":"Samoa","SM":"San Marino","ST":"Sao Tom\u00e9 en Principe","SA":"Saoedi-Arabi\u00eb","SN":"Senegal","RS":"Servi\u00eb","SC":"Seychellen","SL":"Sierra Leone","SG":"Singapore","SH":"Sint-Helena","SX":"Sint-Maarten","SI":"Sloveni\u00eb","SK":"Slowakije","SD":"Soedan","SO":"Somali\u00eb","ES":"Spanje","SJ":"Spitsbergen en Jan Mayen","LK":"Sri Lanka","SR":"Suriname","SY":"Syri\u00eb","TJ":"Tadzjikistan","TW":"Taiwan","TZ":"Tanzania","TH":"Thailand","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad en Tobago","TD":"Tsjaad","CZ":"Tsjechi\u00eb","TN":"Tunesi\u00eb","TR":"Turkije","TM":"Turkmenistan","TC":"Turks- en Caicoseilanden","TV":"Tuvalu","UY":"Uruguay","VU":"Vanuatu","VA":"Vaticaanstad","VE":"Venezuela","GB":"Verenigd Koninkrijk","AE":"Verenigde Arabische Emiraten","US":"Verenigde Staten","VN":"Vietnam","WF":"Wallis en Futuna","EH":"Westelijke Sahara","ZM":"Zambia","ZW":"Zimbabwe","ZA":"Zuid-Afrika","GS":"Zuid-Georgia en Zuidelijke Sandwicheilanden","KR":"Zuid-Korea","SS":"Zuid-Soedan","SE":"Zweden","CH":"Zwitserland"}
|
||||
1
public/country/pt-PT.json
Normal file
1
public/country/pt-PT.json
Normal file
File diff suppressed because one or more lines are too long
1
public/country/ro-RO.json
Normal file
1
public/country/ro-RO.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afganistan","ZA":"Africa de Sud","AL":"Albania","DZ":"Algeria","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua \u0219i Barbuda","SA":"Arabia Saudit\u0103","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaidjan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgia","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosnia \u0219i Her\u021begovina","BW":"Botswana","BR":"Brazilia","BN":"Brunei","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","KH":"Cambodgia","CM":"Camerun","CA":"Canada","CV":"Capul Verde","CZ":"Cehia","CL":"Chile","CN":"China","TD":"Ciad","CY":"Cipru","CO":"Columbia","KM":"Comore","CG":"Congo - Brazzaville","CD":"Congo - Kinshasa","KP":"Coreea de Nord","KR":"Coreea de Sud","CR":"Costa Rica","CI":"C\u00f4te d\u2019Ivoire","HR":"Croa\u021bia","CU":"Cuba","CW":"Cura\u00e7ao","DK":"Danemarca","DJ":"Djibouti","DM":"Dominica","EC":"Ecuador","EG":"Egipt","SV":"El Salvador","CH":"Elve\u021bia","AE":"Emiratele Arabe Unite","ER":"Eritreea","EE":"Estonia","SZ":"eSwatini","ET":"Etiopia","FJ":"Fiji","PH":"Filipine","FI":"Finlanda","FR":"Fran\u021ba","GA":"Gabon","GM":"Gambia","GE":"Georgia","GS":"Georgia de Sud \u0219i Insulele Sandwich de Sud","DE":"Germania","GH":"Ghana","GI":"Gibraltar","GR":"Grecia","GD":"Grenada","GL":"Groenlanda","GP":"Guadelupa","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guineea","GQ":"Guineea Ecuatorial\u0103","GW":"Guineea-Bissau","GY":"Guyana","GF":"Guyana Francez\u0103","HT":"Haiti","HN":"Honduras","IN":"India","ID":"Indonezia","BV":"Insula Bouvet","CX":"Insula Christmas","HM":"Insula Heard \u0219i Insulele McDonald","IM":"Insula Man","NF":"Insula Norfolk","AX":"Insulele \u00c5land","BQ":"Insulele Caraibe Olandeze","KY":"Insulele Cayman","CC":"Insulele Cocos (Keeling)","CK":"Insulele Cook","FK":"Insulele Falkland","FO":"Insulele Feroe","UM":"Insulele \u00cendep\u0103rtate ale S.U.A.","MP":"Insulele Mariane de Nord","MH":"Insulele Marshall","PN":"Insulele Pitcairn","SB":"Insulele Solomon","TC":"Insulele Turks \u0219i Caicos","VI":"Insulele Virgine Americane","VG":"Insulele Virgine Britanice","JO":"Iordania","IQ":"Irak","IR":"Iran","IE":"Irlanda","IS":"Islanda","IL":"Israel","IT":"Italia","JM":"Jamaica","JP":"Japonia","JE":"Jersey","KZ":"Kazahstan","KG":"K\u00e2rg\u00e2zstan","KE":"Kenya","KI":"Kiribati","KW":"Kuweit","LA":"Laos","LS":"Lesotho","LV":"Letonia","LB":"Liban","LR":"Liberia","LY":"Libia","LI":"Liechtenstein","LT":"Lituania","LU":"Luxemburg","MK":"Macedonia de Nord","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldive","ML":"Mali","MT":"Malta","MA":"Maroc","MQ":"Martinica","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexic","FM":"Micronezia","MC":"Monaco","MN":"Mongolia","MS":"Montserrat","MZ":"Mozambic","ME":"Muntenegru","MM":"Myanmar (Birmania)","NA":"Namibia","NR":"Nauru","NP":"Nepal","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NO":"Norvegia","NC":"Noua Caledonie","NZ":"Noua Zeeland\u0103","OM":"Oman","PK":"Pakistan","PW":"Palau","PA":"Panama","PG":"Papua-Noua Guinee","PY":"Paraguay","PE":"Peru","PF":"Polinezia Francez\u0103","PL":"Polonia","PT":"Portugalia","PR":"Puerto Rico","QA":"Qatar","HK":"R.A.S. Hong Kong a Chinei","MO":"R.A.S. Macao, China","GB":"Regatul Unit","CF":"Republica Centrafrican\u0103","DO":"Republica Dominican\u0103","MD":"Republica Moldova","RE":"R\u00e9union","RO":"Rom\u00e2nia","RU":"Rusia","RW":"Rwanda","EH":"Sahara Occidental\u0103","KN":"Saint Kitts \u0219i Nevis","VC":"Saint Vincent \u0219i Grenadinele","BL":"Saint-Barth\u00e9lemy","PM":"Saint-Pierre \u0219i Miquelon","WS":"Samoa","AS":"Samoa American\u0103","SM":"San Marino","ST":"S\u00e3o Tom\u00e9 \u0219i Pr\u00edncipe","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SH":"Sf\u00e2nta Elena","LC":"Sf\u00e2nta Lucia","MF":"Sf\u00e2ntul Martin","SL":"Sierra Leone","SG":"Singapore","SX":"Sint-Maarten","SY":"Siria","SK":"Slovacia","SI":"Slovenia","SO":"Somalia","ES":"Spania","LK":"Sri Lanka","US":"Statele Unite ale Americii","VA":"Statul Cet\u0103\u021bii Vaticanului","SD":"Sudan","SS":"Sudanul de Sud","SE":"Suedia","SR":"Suriname","SJ":"Svalbard \u0219i Jan Mayen","TJ":"Tadjikistan","TW":"Taiwan","TZ":"Tanzania","TF":"Teritoriile Australe \u0219i Antarctice Franceze","PS":"Teritoriile Palestiniene","IO":"Teritoriul Britanic din Oceanul Indian","TH":"Thailanda","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad \u0219i Tobago","TN":"Tunisia","TR":"Turcia","TM":"Turkmenistan","TV":"Tuvalu","NL":"\u021a\u0103rile de Jos","UA":"Ucraina","UG":"Uganda","HU":"Ungaria","UY":"Uruguay","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela","VN":"Vietnam","WF":"Wallis \u0219i Futuna","YE":"Yemen","ZM":"Zambia","ZW":"Zimbabwe"}
|
||||
1
public/country/ru-RU.json
Normal file
1
public/country/ru-RU.json
Normal file
File diff suppressed because one or more lines are too long
1
public/country/sv-SE.json
Normal file
1
public/country/sv-SE.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"AF":"Afghanistan","AL":"Albanien","DZ":"Algeriet","VI":"Amerikanska Jungfru\u00f6arna","AS":"Amerikanska Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarktis","AG":"Antigua och Barbuda","AR":"Argentina","AM":"Armenien","AW":"Aruba","AU":"Australien","AZ":"Azerbajdzjan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BE":"Belgien","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosnien och Hercegovina","BW":"Botswana","BV":"Bouvet\u00f6n","BR":"Brasilien","VG":"Brittiska Jungfru\u00f6arna","IO":"Brittiska territoriet i Indiska oceanen","BN":"Brunei","BG":"Bulgarien","BF":"Burkina Faso","BI":"Burundi","KY":"Cayman\u00f6arna","CF":"Centralafrikanska republiken","CL":"Chile","CO":"Colombia","CK":"Cook\u00f6arna","CR":"Costa Rica","CW":"Cura\u00e7ao","CY":"Cypern","CI":"C\u00f4te d\u2019Ivoire","DK":"Danmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominikanska republiken","EC":"Ecuador","EG":"Egypten","GQ":"Ekvatorialguinea","SV":"El Salvador","ER":"Eritrea","EE":"Estland","ET":"Etiopien","FK":"Falklands\u00f6arna","FJ":"Fiji","PH":"Filippinerna","FI":"Finland","FR":"Frankrike","GF":"Franska Guyana","PF":"Franska Polynesien","TF":"Franska sydterritorierna","FO":"F\u00e4r\u00f6arna","AE":"F\u00f6renade Arabemiraten","GA":"Gabon","GM":"Gambia","GE":"Georgien","GH":"Ghana","GI":"Gibraltar","GR":"Grekland","GD":"Grenada","GL":"Gr\u00f6nland","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard\u00f6n och McDonald\u00f6arna","HN":"Honduras","HK":"Hongkong","IN":"Indien","ID":"Indonesien","IQ":"Irak","IR":"Iran","IE":"Irland","IS":"Island","IM":"Isle of Man","IL":"Israel","IT":"Italien","JM":"Jamaica","JP":"Japan","YE":"Jemen","JE":"Jersey","JO":"Jordanien","CX":"Jul\u00f6n","KH":"Kambodja","CM":"Kamerun","CA":"Kanada","CV":"Kap Verde","BQ":"Karibiska Nederl\u00e4nderna","KZ":"Kazakstan","KE":"Kenya","CN":"Kina","KG":"Kirgizistan","KI":"Kiribati","CC":"Kokos\u00f6arna","KM":"Komorerna","CG":"Kongo-Brazzaville","CD":"Kongo-Kinshasa","HR":"Kroatien","CU":"Kuba","KW":"Kuwait","LA":"Laos","LS":"Lesotho","LV":"Lettland","LB":"Libanon","LR":"Liberia","LY":"Libyen","LI":"Liechtenstein","LT":"Litauen","LU":"Luxemburg","MO":"Macao","MG":"Madagaskar","MW":"Malawi","MY":"Malaysia","MV":"Maldiverna","ML":"Mali","MT":"Malta","MA":"Marocko","MH":"Marshall\u00f6arna","MQ":"Martinique","MR":"Mauretanien","MU":"Mauritius","YT":"Mayotte","MX":"Mexiko","FM":"Mikronesien","MZ":"Mo\u00e7ambique","MD":"Moldavien","MC":"Monaco","MN":"Mongoliet","ME":"Montenegro","MS":"Montserrat","MM":"Myanmar (Burma)","NA":"Namibia","NR":"Nauru","NL":"Nederl\u00e4nderna","NP":"Nepal","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","KP":"Nordkorea","MK":"Nordmakedonien","MP":"Nordmarianerna","NF":"Norfolk\u00f6n","NO":"Norge","NC":"Nya Kaledonien","NZ":"Nya Zeeland","OM":"Oman","PK":"Pakistan","PW":"Palau","PS":"Palestinska territorierna","PA":"Panama","PG":"Papua Nya Guinea","PY":"Paraguay","PE":"Peru","PN":"Pitcairn\u00f6arna","PL":"Polen","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Rum\u00e4nien","RW":"Rwanda","RU":"Ryssland","BL":"S:t Barth\u00e9lemy","SH":"S:t Helena","KN":"S:t Kitts och Nevis","LC":"S:t Lucia","PM":"S:t Pierre och Miquelon","VC":"S:t Vincent och Grenadinerna","MF":"Saint-Martin","SB":"Salomon\u00f6arna","WS":"Samoa","SM":"San Marino","ST":"S\u00e3o Tom\u00e9 och Pr\u00edncipe","SA":"Saudiarabien","CH":"Schweiz","SN":"Senegal","RS":"Serbien","SC":"Seychellerna","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten","SK":"Slovakien","SI":"Slovenien","SO":"Somalia","ES":"Spanien","LK":"Sri Lanka","GB":"Storbritannien","SD":"Sudan","SR":"Surinam","SJ":"Svalbard och Jan Mayen","SE":"Sverige","SZ":"Swaziland","ZA":"Sydafrika","GS":"Sydgeorgien och Sydsandwich\u00f6arna","KR":"Sydkorea","SS":"Sydsudan","SY":"Syrien","TJ":"Tadzjikistan","TW":"Taiwan","TZ":"Tanzania","TD":"Tchad","TH":"Thailand","CZ":"Tjeckien","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad och Tobago","TN":"Tunisien","TR":"Turkiet","TM":"Turkmenistan","TC":"Turks- och Caicos\u00f6arna","TV":"Tuvalu","DE":"Tyskland","UG":"Uganda","UA":"Ukraina","HU":"Ungern","UY":"Uruguay","US":"USA","UM":"USA:s yttre \u00f6ar","UZ":"Uzbekistan","VU":"Vanuatu","VA":"Vatikanstaten","VE":"Venezuela","VN":"Vietnam","BY":"Vitryssland","EH":"V\u00e4stsahara","WF":"Wallis- och Futuna\u00f6arna","ZM":"Zambia","ZW":"Zimbabwe","AX":"\u00c5land","AT":"\u00d6sterrike","TL":"\u00d6sttimor"}
|
||||
1
public/country/tr-TR.json
Normal file
1
public/country/tr-TR.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"UM":"ABD K\u00fc\u00e7\u00fck Harici Adalar\u0131","VI":"ABD Virjin Adalar\u0131","AF":"Afganistan","AX":"\u00c5land Adalar\u0131","DE":"Almanya","US":"Amerika Birle\u015fik Devletleri","AS":"Amerikan Samoas\u0131","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarktika","AG":"Antigua ve Barbuda","AR":"Arjantin","AL":"Arnavutluk","AW":"Aruba","AU":"Avustralya","AT":"Avusturya","AZ":"Azerbaycan","BS":"Bahamalar","BH":"Bahreyn","BD":"Banglade\u015f","BB":"Barbados","EH":"Bat\u0131 Sahra","BY":"Belarus","BE":"Bel\u00e7ika","BZ":"Belize","BJ":"Benin","BM":"Bermuda","AE":"Birle\u015fik Arap Emirlikleri","GB":"Birle\u015fik Krall\u0131k","BO":"Bolivya","BA":"Bosna-Hersek","BW":"Botsvana","BV":"Bouvet Adas\u0131","BR":"Brezilya","IO":"Britanya Hint Okyanusu Topraklar\u0131","VG":"Britanya Virjin Adalar\u0131","BN":"Brunei","BG":"Bulgaristan","BF":"Burkina Faso","BI":"Burundi","BT":"Butan","CV":"Cape Verde","KY":"Cayman Adalar\u0131","GI":"Cebelitar\u0131k","DZ":"Cezayir","CX":"Christmas Adas\u0131","DJ":"Cibuti","CC":"Cocos (Keeling) Adalar\u0131","CK":"Cook Adalar\u0131","CI":"C\u00f4te d\u2019Ivoire","CW":"Cura\u00e7ao","TD":"\u00c7ad","CZ":"\u00c7ekya","CN":"\u00c7in","HK":"\u00c7in Hong Kong \u00d6\u0130B","MO":"\u00c7in Makao \u00d6\u0130B","DK":"Danimarka","DO":"Dominik Cumhuriyeti","DM":"Dominika","EC":"Ekvador","GQ":"Ekvator Ginesi","SV":"El Salvador","ID":"Endonezya","ER":"Eritre","AM":"Ermenistan","EE":"Estonya","SZ":"Esvatini","ET":"Etiyopya","FK":"Falkland Adalar\u0131","FO":"Faroe Adalar\u0131","MA":"Fas","FJ":"Fiji","PH":"Filipinler","PS":"Filistin B\u00f6lgeleri","FI":"Finlandiya","FR":"Fransa","GF":"Frans\u0131z Guyanas\u0131","TF":"Frans\u0131z G\u00fcney Topraklar\u0131","PF":"Frans\u0131z Polinezyas\u0131","GA":"Gabon","GM":"Gambiya","GH":"Gana","GN":"Gine","GW":"Gine-Bissau","GD":"Grenada","GL":"Gr\u00f6nland","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GY":"Guyana","ZA":"G\u00fcney Afrika","GS":"G\u00fcney Georgia ve G\u00fcney Sandwich Adalar\u0131","KR":"G\u00fcney Kore","SS":"G\u00fcney Sudan","GE":"G\u00fcrcistan","HT":"Haiti","HM":"Heard Adas\u0131 ve McDonald Adalar\u0131","HR":"H\u0131rvatistan","IN":"Hindistan","NL":"Hollanda","HN":"Honduras","IQ":"Irak","IR":"\u0130ran","IE":"\u0130rlanda","ES":"\u0130spanya","IL":"\u0130srail","SE":"\u0130sve\u00e7","CH":"\u0130svi\u00e7re","IT":"\u0130talya","IS":"\u0130zlanda","JM":"Jamaika","JP":"Japonya","JE":"Jersey","KH":"Kambo\u00e7ya","CM":"Kamerun","CA":"Kanada","ME":"Karada\u011f","BQ":"Karayip Hollandas\u0131","QA":"Katar","KZ":"Kazakistan","KE":"Kenya","CY":"K\u0131br\u0131s","KG":"K\u0131rg\u0131zistan","KI":"Kiribati","CO":"Kolombiya","KM":"Komorlar","CG":"Kongo - Brazavil","CD":"Kongo - Kin\u015fasa","CR":"Kosta Rika","KW":"Kuveyt","KP":"Kuzey Kore","MK":"Kuzey Makedonya","MP":"Kuzey Mariana Adalar\u0131","CU":"K\u00fcba","LA":"Laos","LS":"Lesotho","LV":"Letonya","LR":"Liberya","LY":"Libya","LI":"Liechtenstein","LT":"Litvanya","LB":"L\u00fcbnan","LU":"L\u00fcksemburg","HU":"Macaristan","MG":"Madagaskar","MW":"Malavi","MV":"Maldivler","MY":"Malezya","ML":"Mali","MT":"Malta","IM":"Man Adas\u0131","MH":"Marshall Adalar\u0131","MQ":"Martinik","MU":"Mauritius","YT":"Mayotte","MX":"Meksika","EG":"M\u0131s\u0131r","FM":"Mikronezya","MN":"Mo\u011folistan","MD":"Moldova","MC":"Monako","MS":"Montserrat","MR":"Moritanya","MZ":"Mozambik","MM":"Myanmar (Burma)","NA":"Namibya","NR":"Nauru","NP":"Nepal","NE":"Nijer","NG":"Nijerya","NI":"Nikaragua","NU":"Niue","NF":"Norfolk Adas\u0131","NO":"Norve\u00e7","CF":"Orta Afrika Cumhuriyeti","UZ":"\u00d6zbekistan","PK":"Pakistan","PW":"Palau","PA":"Panama","PG":"Papua Yeni Gine","PY":"Paraguay","PE":"Peru","PN":"Pitcairn Adalar\u0131","PL":"Polonya","PT":"Portekiz","PR":"Porto Riko","RE":"Reunion","RO":"Romanya","RW":"Ruanda","RU":"Rusya","BL":"Saint Barthelemy","SH":"Saint Helena","KN":"Saint Kitts ve Nevis","LC":"Saint Lucia","MF":"Saint Martin","PM":"Saint Pierre ve Miquelon","VC":"Saint Vincent ve Grenadinler","WS":"Samoa","SM":"San Marino","ST":"Sao Tome ve Principe","SN":"Senegal","SC":"Sey\u015feller","RS":"S\u0131rbistan","SL":"Sierra Leone","SG":"Singapur","SX":"Sint Maarten","SK":"Slovakya","SI":"Slovenya","SB":"Solomon Adalar\u0131","SO":"Somali","LK":"Sri Lanka","SD":"Sudan","SR":"Surinam","SY":"Suriye","SA":"Suudi Arabistan","SJ":"Svalbard ve Jan Mayen","CL":"\u015eili","TJ":"Tacikistan","TZ":"Tanzanya","TH":"Tayland","TW":"Tayvan","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad ve Tobago","TN":"Tunus","TC":"Turks ve Caicos Adalar\u0131","TV":"Tuvalu","TR":"T\u00fcrkiye","TM":"T\u00fcrkmenistan","UG":"Uganda","UA":"Ukrayna","OM":"Umman","UY":"Uruguay","JO":"\u00dcrd\u00fcn","VU":"Vanuatu","VA":"Vatikan","VE":"Venezuela","VN":"Vietnam","WF":"Wallis ve Futuna","YE":"Yemen","NC":"Yeni Kaledonya","NZ":"Yeni Zelanda","GR":"Yunanistan","ZM":"Zambiya","ZW":"Zimbabve"}
|
||||
1
public/country/zh-CN.json
Normal file
1
public/country/zh-CN.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,7 @@
|
|||
import { createSlice } from '@reduxjs/toolkit';
|
||||
import { getItem } from 'lib/web';
|
||||
import { LOCALE_CONFIG, THEME_CONFIG } from 'lib/constants';
|
||||
import { LOCALE_CONFIG, THEME_CONFIG, VERSION_CHECK } from 'lib/constants';
|
||||
import semver from 'semver';
|
||||
|
||||
const app = createSlice({
|
||||
name: 'app',
|
||||
|
|
@ -10,6 +11,7 @@ const app = createSlice({
|
|||
versions: {
|
||||
current: process.env.VERSION,
|
||||
latest: null,
|
||||
hasUpdate: false,
|
||||
},
|
||||
},
|
||||
reducers: {
|
||||
|
|
@ -60,11 +62,14 @@ export function checkVersion() {
|
|||
const { tag_name } = data;
|
||||
|
||||
const latest = tag_name.startsWith('v') ? tag_name.slice(1) : tag_name;
|
||||
const lastCheck = getItem(VERSION_CHECK);
|
||||
const hasUpdate = latest && semver.gt(latest, current) && lastCheck?.version !== latest;
|
||||
|
||||
return dispatch(
|
||||
setVersions({
|
||||
current,
|
||||
latest,
|
||||
hasUpdate,
|
||||
}),
|
||||
);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,5 +9,5 @@ export default {
|
|||
file: 'public/umami.js',
|
||||
format: 'iife',
|
||||
},
|
||||
plugins: [resolve(), buble(), terser({ compress: { evaluate: false } })],
|
||||
plugins: [resolve(), buble({ objectAssign: true }), terser({ compress: { evaluate: false } })],
|
||||
};
|
||||
|
|
|
|||
24
scripts/check-lang.js
Normal file
24
scripts/check-lang.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const chalk = require('chalk');
|
||||
const messages = require('../lang/en-US.json');
|
||||
|
||||
const dir = path.resolve(__dirname, '../lang');
|
||||
const files = fs.readdirSync(dir);
|
||||
const keys = Object.keys(messages).sort();
|
||||
|
||||
files.forEach(file => {
|
||||
if (file !== 'en-US.json') {
|
||||
const lang = require(`../lang/${file}`);
|
||||
|
||||
console.log(chalk.yellowBright(`\n## ${file}`));
|
||||
keys.forEach(key => {
|
||||
const orig = messages[key];
|
||||
const check = lang[key];
|
||||
|
||||
if (!check || check === orig) {
|
||||
console.log(chalk.redBright('*'), chalk.greenBright(`${key}:`), orig);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
140
scripts/loadtest.js
Normal file
140
scripts/loadtest.js
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
const loadtest = require('loadtest');
|
||||
const chalk = require('chalk');
|
||||
const trunc = num => +num.toFixed(1);
|
||||
|
||||
/**
|
||||
* Example invocations:
|
||||
*
|
||||
* npm run loadtest -- --weight=heavy
|
||||
* npm run loadtest -- --weight=heavy --verbose
|
||||
* npm run loadtest -- --weight=single --verbose
|
||||
* npm run loadtest -- --weight=medium
|
||||
*/
|
||||
|
||||
/**
|
||||
* Command line arguments like --weight=heavy and --verbose use this object
|
||||
* If you are providing _alternative_ configs, use --weight
|
||||
* e.g. add --weight=ultra then add commandlineOptions.ultra={}
|
||||
* --verbose can be combied with any weight.
|
||||
*/
|
||||
const commandlineOptions = {
|
||||
single: {
|
||||
concurrency: 1,
|
||||
requestsPerSecond: 1,
|
||||
maxSeconds: 5,
|
||||
maxRequests: 1,
|
||||
},
|
||||
// Heavy can saturate CPU which leads to requests stalling depending on machine
|
||||
// Keep an eye if --verbose logs pause, or if node CPU in top is > 100.
|
||||
// https://github.com/alexfernandez/loadtest#usage-donts
|
||||
heavy: {
|
||||
concurrency: 10,
|
||||
requestsPerSecond: 200,
|
||||
maxSeconds: 60,
|
||||
},
|
||||
// Throttled requests should not max out CPU,
|
||||
medium: {
|
||||
concurrency: 3,
|
||||
requestsPerSecond: 5,
|
||||
maxSeconds: 60,
|
||||
},
|
||||
verbose: { statusCallback },
|
||||
};
|
||||
|
||||
const options = {
|
||||
url: 'http://localhost:3000',
|
||||
method: 'POST',
|
||||
concurrency: 5,
|
||||
requestsPerSecond: 5,
|
||||
maxSeconds: 5,
|
||||
requestGenerator: (params, options, client, callback) => {
|
||||
const message = JSON.stringify(mockPageView());
|
||||
options.headers['Content-Length'] = message.length;
|
||||
options.headers['Content-Type'] = 'application/json';
|
||||
options.headers['user-agent'] = 'User-Agent: Mozilla/5.0 LoadTest';
|
||||
options.body = message;
|
||||
options.path = '/api/collect';
|
||||
const request = client(options, callback);
|
||||
request.write(message);
|
||||
return request;
|
||||
},
|
||||
};
|
||||
|
||||
function getArgument() {
|
||||
const weight = process.argv[2] && process.argv[2].replace('--weight=', '');
|
||||
const verbose = process.argv.includes('--verbose') && 'verbose';
|
||||
return [weight, verbose];
|
||||
}
|
||||
|
||||
// Patch in all command line arguments over options object
|
||||
// Must do this prior to calling `loadTest()`
|
||||
getArgument().map(arg => Object.assign(options, commandlineOptions[arg]));
|
||||
|
||||
loadtest.loadTest(options, (error, results) => {
|
||||
if (error) {
|
||||
return console.error(chalk.redBright('Got an error: %s', error));
|
||||
}
|
||||
console.log(chalk.bold(chalk.yellow('\n--------\n')));
|
||||
console.log(chalk.yellowBright('Loadtests complete:'), chalk.greenBright('success'), '\n');
|
||||
prettyLogItem('Total Requests:', results.totalRequests);
|
||||
prettyLogItem('Total Errors:', results.totalErrors);
|
||||
|
||||
prettyLogItem(
|
||||
'Latency(mean/min/max)',
|
||||
trunc(results.meanLatencyMs),
|
||||
'/',
|
||||
trunc(results.maxLatencyMs),
|
||||
'/',
|
||||
trunc(results.minLatencyMs),
|
||||
);
|
||||
|
||||
if (results.totalErrors) {
|
||||
console.log(chalk.redBright('*'), chalk.red('Total Errors:'), results.totalErrors);
|
||||
}
|
||||
|
||||
if (results.errorCodes && Object.keys(results.errorCodes).length) {
|
||||
console.log(chalk.redBright('*'), chalk.red('Error Codes:'), results.errorCodes);
|
||||
}
|
||||
// console.log(results);
|
||||
});
|
||||
|
||||
/**
|
||||
* Create a new object for each request. Note, we could randomize values here if desired.
|
||||
*
|
||||
* TODO: Need a better way of passing in websiteId, hostname, URL.
|
||||
*
|
||||
* @param {object} payload pageview payload same as sent via tracker
|
||||
*/
|
||||
function mockPageView(
|
||||
payload = {
|
||||
website: 'fcd4c7e3-ed76-439c-9121-3a0f102df126',
|
||||
hostname: 'localhost',
|
||||
screen: '1680x1050',
|
||||
url: '/LOADTESTING',
|
||||
},
|
||||
) {
|
||||
return {
|
||||
type: 'pageview',
|
||||
payload,
|
||||
};
|
||||
}
|
||||
|
||||
// If you pass in --verbose, this function is called
|
||||
function statusCallback(error, result, latency) {
|
||||
console.log(
|
||||
chalk.yellowBright(`\n## req #${result.requestIndex + 1} of ${latency.totalRequests}`),
|
||||
);
|
||||
prettyLogItem('Request elapsed milliseconds:', trunc(result.requestElapsed));
|
||||
prettyLogItem(
|
||||
'Latency(mean/max/min):',
|
||||
trunc(latency.meanLatencyMs),
|
||||
'/',
|
||||
trunc(latency.maxLatencyMs),
|
||||
'/',
|
||||
trunc(latency.minLatencyMs),
|
||||
);
|
||||
}
|
||||
|
||||
function prettyLogItem(label, ...args) {
|
||||
console.log(chalk.redBright('*'), chalk.green(label), ...args);
|
||||
}
|
||||
3
scripts/start-env.js
Normal file
3
scripts/start-env.js
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
const cli = require('next/dist/cli/next-start');
|
||||
|
||||
cli.nextStart(['-p', process.env.PORT || 3000, '-H', process.env.HOSTNAME || 'localhost']);
|
||||
253
yarn.lock
253
yarn.lock
|
|
@ -1064,12 +1064,12 @@
|
|||
minimatch "^3.0.4"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@formatjs/cli@^2.12.0":
|
||||
version "2.12.0"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-2.12.0.tgz#f0bb253db073903634e57e587e0395cd0d0cd681"
|
||||
integrity sha512-F0epNBWCXjKGgej8GL1q4RLGqR38bRCPmGLb3VautkbZ74achB0cVGj2w/AdlQiJJ1mU5rEU13pRroukUBZ+GA==
|
||||
"@formatjs/cli@^2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-2.13.0.tgz#64018c82f9fbc291918792daf1eed16e4b56bb7f"
|
||||
integrity sha512-1E/rdrKiHi7gbcN0WuY792X+jCHWI+9jC3565hhZXAJYmgNe9SntRW02nEJOK3WOkhm6yMWiHPLkFpyLq5hW3w==
|
||||
dependencies:
|
||||
"@formatjs/ts-transformer" "^2.11.0"
|
||||
"@formatjs/ts-transformer" "^2.11.1"
|
||||
"@types/json-stable-stringify" "^1.0.32"
|
||||
"@types/lodash" "^4.14.150"
|
||||
"@types/loud-rejection" "^2.0.0"
|
||||
|
|
@ -1078,10 +1078,11 @@
|
|||
commander "^6.1.0"
|
||||
fast-glob "^3.2.4"
|
||||
fs-extra "^9.0.0"
|
||||
intl-messageformat-parser "^6.0.7"
|
||||
intl-messageformat-parser "^6.0.8"
|
||||
json-stable-stringify "^1.0.1"
|
||||
lodash "^4.17.15"
|
||||
loud-rejection "^2.2.0"
|
||||
tslib "^2.0.1"
|
||||
typescript "^4.0"
|
||||
|
||||
"@formatjs/ecma402-abstract@^1.2.2":
|
||||
|
|
@ -1089,19 +1090,28 @@
|
|||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.2.2.tgz#4810bdbd696d3805c535fd0620b7c8f45ab3164f"
|
||||
integrity sha512-mLCoAPGlXCVskb/ojBO6iurGqwo6sZvAl8pRC4N25bz4LPWExAM9LsOo057zN3Br1JxUM3RZHG4YGnVt+nSRYQ==
|
||||
|
||||
"@formatjs/intl-displaynames@^3.3.9":
|
||||
version "3.3.9"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-3.3.9.tgz#18eeb39aa05d4a8b064e520725f9178d0c3f8c50"
|
||||
integrity sha512-6Ez9Ab9p9bsxCM4OlqsT+R0rmrj5lr6xjIXiCTs/pSDFeiNPQabWDHcBpiGlMRE3zifOwUOFSoi5AGGYMFgetw==
|
||||
"@formatjs/ecma402-abstract@^1.2.3":
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.2.3.tgz#ca94911dd8e9c89eeaabba0f00e2f692979fc27b"
|
||||
integrity sha512-sEkxTZj7qa+Pi/c4ppE5mxZYJkqQO3GNZzJZjAxgsXip2ixO/TZn58qrxdQ0V8mXmf+5xf+AfveyPvv4yHaRtw==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||
tslib "^2.0.1"
|
||||
|
||||
"@formatjs/intl-listformat@^4.2.7":
|
||||
version "4.2.7"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-4.2.7.tgz#bcccfee92c69e661d4da51567540aa39fef9ceae"
|
||||
integrity sha512-7sYy7pBGzClvSZI98FhVeNt6N/ELdvrj8pvLOfcR0+FQyhv0ixanog7bRo9kT8ECin9+RwEpTmX7jGCh8Bcgjw==
|
||||
"@formatjs/intl-displaynames@^3.3.10":
|
||||
version "3.3.10"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-3.3.10.tgz#905ad86431fdadfab2ec188bf9f4fe9e359d1fe6"
|
||||
integrity sha512-SdIMuaKUO0N5zQb6CXtIrwjJbX+DC8ju7ifrcqpLagUMh2nIEJCz7sf0Q6lOMWEE+un1VTmjaXpRPP55cP40IA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||
"@formatjs/ecma402-abstract" "^1.2.3"
|
||||
tslib "^2.0.1"
|
||||
|
||||
"@formatjs/intl-listformat@^4.2.8":
|
||||
version "4.2.8"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-4.2.8.tgz#aa8935234dd5f8fcec6d08dfdf2be43e11ba671c"
|
||||
integrity sha512-9qAThh/1HV9T/g6E11VbN5b209zg28fMUMrZqrpHiZZxc2PPHvP/CGqK7mo8hpyCoMUVo3kFxB5CFnw5difJrA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.3"
|
||||
tslib "^2.0.1"
|
||||
|
||||
"@formatjs/intl-numberformat@^5.5.2":
|
||||
version "5.6.2"
|
||||
|
|
@ -1110,32 +1120,35 @@
|
|||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||
|
||||
"@formatjs/intl-relativetimeformat@^7.2.7":
|
||||
version "7.2.7"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-7.2.7.tgz#dce72ebafb1ca0bf14673fab3b1aad145e1abac6"
|
||||
integrity sha512-R6rxX4PfPQ/EuDRALLSIEDCDW/FAmmu6xpRXIPdZ33bEP7SXEksJB039Bw//I0VIm2fBeIlxe9oqvRGfuqpwVg==
|
||||
"@formatjs/intl-relativetimeformat@^7.2.8":
|
||||
version "7.2.8"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-7.2.8.tgz#a423ef9acd379980f58730b4757713156076de14"
|
||||
integrity sha512-h6H5lcPn1LbVlAk62m7DYtY68aE6AiZVK1bLEo3HeWrMBFCskWAe9I/5kI+RjStdGZzo+CqBl+rSTcrSXjVj+g==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||
"@formatjs/ecma402-abstract" "^1.2.3"
|
||||
tslib "^2.0.1"
|
||||
|
||||
"@formatjs/intl@^1.3.3":
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.3.3.tgz#d59997b7ef832e7c47e8ca50861ff7ff7461d56c"
|
||||
integrity sha512-gFuCIZEH6o1O2ZF8YlhHJEApRrBarQ7iyqxFp4ujllr/tcjgSxfzF+LSBCPyJ1OQIU98ynOc0XKdrAR2wUd3ow==
|
||||
"@formatjs/intl@^1.3.4":
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.3.4.tgz#66441b85986726256f83fdffdb533c6334bc299b"
|
||||
integrity sha512-aq6bhi2aZPYUEL15iiBrsNzDtw4Qe1r9dsqM26fbTbfWa6r5sdqcFwGySoeTzguxd+ZXoc9RypSMERjH92xFKA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||
"@formatjs/intl-displaynames" "^3.3.9"
|
||||
"@formatjs/intl-listformat" "^4.2.7"
|
||||
"@formatjs/intl-relativetimeformat" "^7.2.7"
|
||||
"@formatjs/ecma402-abstract" "^1.2.3"
|
||||
"@formatjs/intl-displaynames" "^3.3.10"
|
||||
"@formatjs/intl-listformat" "^4.2.8"
|
||||
"@formatjs/intl-relativetimeformat" "^7.2.8"
|
||||
fast-memoize "^2.5.2"
|
||||
intl-messageformat "^9.3.8"
|
||||
intl-messageformat-parser "^6.0.7"
|
||||
intl-messageformat "^9.3.9"
|
||||
intl-messageformat-parser "^6.0.8"
|
||||
tslib "^2.0.1"
|
||||
|
||||
"@formatjs/ts-transformer@^2.11.0":
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-2.11.0.tgz#90c4b5afae55fd8b8c7ab6aa08ca94a123eb94b9"
|
||||
integrity sha512-d0++zpEeeCtE+RwbEB+TYw0WnC+jlNniIZu9NcILdgN6LEr9+TRxO+Gz4d7nj3g0D5X1LyNx6P4JI+byGxHqzw==
|
||||
"@formatjs/ts-transformer@^2.11.1":
|
||||
version "2.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-2.11.1.tgz#9b30c066cd1ca1831bfc76e22b01e2858b931923"
|
||||
integrity sha512-VAjFBnWSQfO71PrR0NeGgwGoHOAlNMuQv4kdV6GpxQ/3d4YM+202Cpu6r1BmCvxkuXhijTMUu7ubKeenUr8WcA==
|
||||
dependencies:
|
||||
intl-messageformat-parser "^6.0.7"
|
||||
intl-messageformat-parser "^6.0.8"
|
||||
tslib "^2.0.1"
|
||||
typescript "^4.0"
|
||||
|
||||
"@formatjs/ts-transformer@^2.6.0":
|
||||
|
|
@ -1773,6 +1786,18 @@ agent-base@6:
|
|||
dependencies:
|
||||
debug "4"
|
||||
|
||||
agent-base@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
|
||||
integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
|
||||
dependencies:
|
||||
es6-promisify "^5.0.0"
|
||||
|
||||
agentkeepalive@^2.0.3:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-2.2.0.tgz#c5d1bd4b129008f1163f236f86e5faea2026e2ef"
|
||||
integrity sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8=
|
||||
|
||||
aggregate-error@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
|
||||
|
|
@ -2309,6 +2334,13 @@ buffer@^4.3.0:
|
|||
ieee754 "^1.1.4"
|
||||
isarray "^1.0.0"
|
||||
|
||||
bufferutil@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7"
|
||||
integrity sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA==
|
||||
dependencies:
|
||||
node-gyp-build "~3.7.0"
|
||||
|
||||
builtin-modules@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
|
||||
|
|
@ -2746,6 +2778,14 @@ concat-stream@^1.5.0:
|
|||
readable-stream "^2.2.2"
|
||||
typedarray "^0.0.6"
|
||||
|
||||
confinode@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/confinode/-/confinode-2.1.1.tgz#6831961ca48fb3c9f7d5ff063022e2bc40bea86e"
|
||||
integrity sha512-u5u0ZHpYMnVWtelxjalNtLvL+SdP7B/7s0JTFUIkyvqqIf67DAvy6SKaE6WZiwbufLPk+6zJKsh5SdpbtbFi9g==
|
||||
dependencies:
|
||||
quick-lru "^5.0.0"
|
||||
yaml "^1.7.2"
|
||||
|
||||
console-browserify@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
|
||||
|
|
@ -3196,7 +3236,7 @@ debug@^2.2.0, debug@^2.3.3:
|
|||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@^3.2.6:
|
||||
debug@^3.1.0, debug@^3.2.6:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||
|
|
@ -3610,6 +3650,18 @@ es6-iterator@2.0.3, es6-iterator@~2.0.3:
|
|||
es5-ext "^0.10.35"
|
||||
es6-symbol "^3.1.1"
|
||||
|
||||
es6-promise@^4.0.3:
|
||||
version "4.2.8"
|
||||
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
|
||||
integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
|
||||
|
||||
es6-promisify@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
|
||||
integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
|
||||
dependencies:
|
||||
es6-promise "^4.0.3"
|
||||
|
||||
es6-symbol@^3.1.1, es6-symbol@~3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
|
||||
|
|
@ -4145,10 +4197,10 @@ for-own@^0.1.3:
|
|||
dependencies:
|
||||
for-in "^1.0.1"
|
||||
|
||||
formik@^2.1.6:
|
||||
version "2.1.6"
|
||||
resolved "https://registry.yarnpkg.com/formik/-/formik-2.1.6.tgz#f723bfccb2c7abec886aa6a4930b360d20f1a0b3"
|
||||
integrity sha512-m9DcxlZw/58p4xuhH3dzUzQWaC4dig0RKX7yNQOJt4VRhXn7p+YRrs3o17r3YwzvOLua3zC53VMbfupLsDwO5w==
|
||||
formik@^2.1.7:
|
||||
version "2.1.7"
|
||||
resolved "https://registry.yarnpkg.com/formik/-/formik-2.1.7.tgz#40bd04e59b242176d0a17c701830f1536cd7506b"
|
||||
integrity sha512-n1wviIh0JsvHqj9PufNvOV+fS7mFwh9FfMxxTMnTrKR/uVYMS06DKaivXBlJdDF0qEwTcPHxSmIQ3deFHL3Hsg==
|
||||
dependencies:
|
||||
deepmerge "^2.1.1"
|
||||
hoist-non-react-statics "^3.3.0"
|
||||
|
|
@ -4524,6 +4576,14 @@ https-proxy-agent@5.0.0:
|
|||
agent-base "6"
|
||||
debug "4"
|
||||
|
||||
https-proxy-agent@^2.2.1:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
|
||||
integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==
|
||||
dependencies:
|
||||
agent-base "^4.3.0"
|
||||
debug "^3.1.0"
|
||||
|
||||
human-signals@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
|
||||
|
|
@ -4694,13 +4754,22 @@ intl-messageformat-parser@^6.0.7:
|
|||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||
|
||||
intl-messageformat@^9.3.8:
|
||||
version "9.3.8"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.3.8.tgz#561f31800cc3ced5dada6c991a0dd0233931850f"
|
||||
integrity sha512-XuFoC6kvsgL1qtzro9ubOaJ2zVgeJWb5X0mTYvG7p1OinbOZYPscP8eYyVJf9g++tDy/fwx9TfeaFlunmhC+Vw==
|
||||
intl-messageformat-parser@^6.0.8:
|
||||
version "6.0.8"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.0.8.tgz#4180b280d21653df7c8c078e75e0bb7f0e3322c3"
|
||||
integrity sha512-g1nV8YVI/Nscbu3qjGGgMcq61Es7L2bI+08gcbAx3taiFMJ3oJgQhC/wYksWLsq2cvLxq5pQ5Te06CE793/iVA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.3"
|
||||
tslib "^2.0.1"
|
||||
|
||||
intl-messageformat@^9.3.9:
|
||||
version "9.3.9"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.3.9.tgz#41f9f139adbbb509da657133047c8c5bf4ca22a9"
|
||||
integrity sha512-SB6b68bY+RZPBhg3XTmwfX0lL3ywvOuAcS+iH6cptiHPfzOPSzP05F3ZOirARwj8pVbC9Xd4w0pMtF/sGnHurw==
|
||||
dependencies:
|
||||
fast-memoize "^2.5.2"
|
||||
intl-messageformat-parser "^6.0.7"
|
||||
intl-messageformat-parser "^6.0.8"
|
||||
tslib "^2.0.1"
|
||||
|
||||
invariant@^2.2.2, invariant@^2.2.4:
|
||||
version "2.2.4"
|
||||
|
|
@ -5296,6 +5365,19 @@ loader-utils@^1.2.3:
|
|||
emojis-list "^3.0.0"
|
||||
json5 "^1.0.1"
|
||||
|
||||
loadtest@5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/loadtest/-/loadtest-5.1.0.tgz#20dd700329d98612b23c7e6fa0d1d4661ea9bccf"
|
||||
integrity sha512-LFMyFMA77o41JyNPn+FOXNN/SNURXys8KQNK83mR6bDHjH/XpA5Uz8dd4lofh2VITrDsK+ITKi8QNkmxTOFt1Q==
|
||||
dependencies:
|
||||
agentkeepalive "^2.0.3"
|
||||
confinode "^2.1.1"
|
||||
https-proxy-agent "^2.2.1"
|
||||
log "1.4.*"
|
||||
stdio "^0.2.3"
|
||||
testing "^1.1.1"
|
||||
websocket "^1.0.28"
|
||||
|
||||
locate-path@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
|
||||
|
|
@ -5378,6 +5460,11 @@ log-update@^4.0.0:
|
|||
slice-ansi "^4.0.0"
|
||||
wrap-ansi "^6.2.0"
|
||||
|
||||
log@1.4.*, log@1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/log/-/log-1.4.0.tgz#4ba1d890fde249b031dca03bc37eaaf325656f1c"
|
||||
integrity sha1-S6HYkP3iSbAx3KA7w36q8yVlbxw=
|
||||
|
||||
loglevel-colored-level-prefix@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e"
|
||||
|
|
@ -5960,6 +6047,11 @@ node-fetch@2.6.0:
|
|||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
|
||||
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
|
||||
|
||||
node-gyp-build@~3.7.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d"
|
||||
integrity sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w==
|
||||
|
||||
node-html-parser@^1.2.19:
|
||||
version "1.2.20"
|
||||
resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.2.20.tgz#37e9ebc627dbe3ff446eea4ac93e3d254b7c6ee4"
|
||||
|
|
@ -7125,6 +7217,11 @@ quick-lru@^4.0.1:
|
|||
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
|
||||
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
|
||||
|
||||
quick-lru@^5.0.0:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
|
||||
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
|
||||
|
||||
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
|
||||
|
|
@ -7165,22 +7262,23 @@ react-fast-compare@^2.0.1:
|
|||
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
|
||||
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
|
||||
|
||||
react-intl@^5.8.3:
|
||||
version "5.8.3"
|
||||
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.8.3.tgz#2018aca11a49d2d1b0f602e0dda653a47bf59dfb"
|
||||
integrity sha512-ueM7JhbBIi+6FpH6jCrJuKcYpjmFn9UAHA28ojY8LMAL1PowZ/53XGGMvfj32J0/2EIuHQ6vUbi/07kJqe1ksQ==
|
||||
react-intl@^5.8.4:
|
||||
version "5.8.4"
|
||||
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.8.4.tgz#aba5432fcba17f47d9d46ac9bea1881c92f4f354"
|
||||
integrity sha512-ToDeHYBpO9WBAOpnwQKihUdxB4qE1nqcGKV9Jq2upj1zspxeX3OddWaZwz8wNV5yjoYnoDY3HLWeBP4IXwbwqg==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||
"@formatjs/intl" "^1.3.3"
|
||||
"@formatjs/intl-displaynames" "^3.3.9"
|
||||
"@formatjs/intl-listformat" "^4.2.7"
|
||||
"@formatjs/intl-relativetimeformat" "^7.2.7"
|
||||
"@formatjs/ecma402-abstract" "^1.2.3"
|
||||
"@formatjs/intl" "^1.3.4"
|
||||
"@formatjs/intl-displaynames" "^3.3.10"
|
||||
"@formatjs/intl-listformat" "^4.2.8"
|
||||
"@formatjs/intl-relativetimeformat" "^7.2.8"
|
||||
"@types/hoist-non-react-statics" "^3.3.1"
|
||||
fast-memoize "^2.5.2"
|
||||
hoist-non-react-statics "^3.3.2"
|
||||
intl-messageformat "^9.3.8"
|
||||
intl-messageformat-parser "^6.0.7"
|
||||
intl-messageformat "^9.3.9"
|
||||
intl-messageformat-parser "^6.0.8"
|
||||
shallow-equal "^1.2.1"
|
||||
tslib "^2.0.1"
|
||||
|
||||
react-is@16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.9.0:
|
||||
version "16.13.1"
|
||||
|
|
@ -8090,6 +8188,11 @@ static-extend@^0.1.1:
|
|||
define-property "^0.2.5"
|
||||
object-copy "^0.1.0"
|
||||
|
||||
stdio@^0.2.3:
|
||||
version "0.2.7"
|
||||
resolved "https://registry.yarnpkg.com/stdio/-/stdio-0.2.7.tgz#a1c57da10fe1cfaa0c3bf683c9d0743d1b660839"
|
||||
integrity sha1-ocV9oQ/hz6oMO/aDydB0PRtmCDk=
|
||||
|
||||
stream-browserify@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f"
|
||||
|
|
@ -8561,6 +8664,13 @@ terser@^5.0.0:
|
|||
source-map "~0.6.1"
|
||||
source-map-support "~0.5.12"
|
||||
|
||||
testing@^1.1.1:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/testing/-/testing-1.1.2.tgz#575b123070f63c5068e943cf255dbae71c5d8ba6"
|
||||
integrity sha512-+wHrDL29KsI3NQtgGmgdZ/MaUZhnVePbt5ZfiMn6ntDpv/kMWfdiBrg/lJqntor9H8+zQYxvfPLVowPPs1nVEg==
|
||||
dependencies:
|
||||
log "1.4.0"
|
||||
|
||||
text-table@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
|
|
@ -8711,6 +8821,11 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
|
|||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
|
||||
integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
|
||||
|
||||
tslib@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
|
||||
integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==
|
||||
|
||||
tsutils@^3.17.1:
|
||||
version "3.17.1"
|
||||
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
|
||||
|
|
@ -8964,6 +9079,13 @@ use@^3.1.0:
|
|||
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
|
||||
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
|
||||
|
||||
utf-8-validate@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.2.tgz#63cfbccd85dc1f2b66cf7a1d0eebc08ed056bfb3"
|
||||
integrity sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw==
|
||||
dependencies:
|
||||
node-gyp-build "~3.7.0"
|
||||
|
||||
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
|
|
@ -9140,6 +9262,18 @@ webpack@4.44.1:
|
|||
watchpack "^1.7.4"
|
||||
webpack-sources "^1.4.1"
|
||||
|
||||
websocket@^1.0.28:
|
||||
version "1.0.32"
|
||||
resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1"
|
||||
integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==
|
||||
dependencies:
|
||||
bufferutil "^4.0.1"
|
||||
debug "^2.2.0"
|
||||
es5-ext "^0.10.50"
|
||||
typedarray-to-buffer "^3.1.5"
|
||||
utf-8-validate "^5.0.2"
|
||||
yaeti "^0.0.6"
|
||||
|
||||
whatwg-url@^7.0.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
|
||||
|
|
@ -9240,6 +9374,11 @@ y18n@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
||||
|
||||
yaeti@^0.0.6:
|
||||
version "0.0.6"
|
||||
resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577"
|
||||
integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=
|
||||
|
||||
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue