diff --git a/ui/.eslintrc.js b/ui/.eslintrc.js
index e06986a..692d124 100644
--- a/ui/.eslintrc.js
+++ b/ui/.eslintrc.js
@@ -8,6 +8,7 @@ module.exports = {
'plugin:react/recommended',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
+ 'plugin:react-hooks/recommended',
],
overrides: [],
parser: '@typescript-eslint/parser',
@@ -27,5 +28,6 @@ module.exports = {
'simple-import-sort/imports': 2,
'@typescript-eslint/explicit-function-return-type': 'off',
'no-console': 'error',
+ 'unused-imports/no-unused-imports-ts': 'error',
},
};
diff --git a/ui/README.md b/ui/README.md
index 7f1efba..d2b0fca 100644
--- a/ui/README.md
+++ b/ui/README.md
@@ -23,8 +23,21 @@ To run the UI localy follow the steps:
```bash
$ yarn
```
+3. You'll need to set up your firebase cretendials to make work the github login. Set the .env file with the following variables
-3. Start the local server running the app:
+ ```bash
+ VITE_FIREBASE_API_KEY
+ VITE_FIREBASE_AUTH_DOMAIN
+ VITE_FIREBASE_PROJECT_ID
+ VITE_FIREBASE_STORAGE_BUCKET
+ VITE_FIREBASE_MESSAGING_SENDER_ID
+ VITE_FIREBASE_APP_ID
+ VITE_FIREBASE_MEASUREMENT_ID
+ ```
+
+Get them from the project settings on the firebase dashboard. Read [this article](https://support.google.com/firebase/answer/7015592?hl=en#zippy=%2Cin-this-article) to know how to get your porject config
+
+4. Start the local server running the app:
```bash
$ yarn dev
diff --git a/ui/index.html b/ui/index.html
index 8a7863a..05f5fe3 100644
--- a/ui/index.html
+++ b/ui/index.html
@@ -1,6 +1,12 @@
+
& {
+ /**
+ * Fallback node.
+ * In case of string, transformed to upper case and sliced to second letter.
+ */
+ fallback?: React.ReactNode;
+ /**
+ * Source of the image.
+ * If not provided, fallback will be used.
+ */
+ src?: AvatarImageProps['src'];
+ /**
+ * Alt text of the image.
+ */
+ alt?: AvatarImageProps['alt'];
+
+ /**
+ * Props of the image tag.
+ * @see {@link AvatarImageProps}
+ * @default {}
+ */
+ imageProps?: AvatarImageProps;
+ /**
+ * Props of the fallback tag.
+ * @see {@link AvatarFallbackProps}
+ * @default {}
+ */
+ fallbackProps?: AvatarFallbackProps;
+};
+export type AvatarImageProps = React.ComponentProps;
+export type AvatarFallbackProps = React.ComponentProps<
+ typeof AvatarStyles.Fallback
+>;
diff --git a/ui/src/components/core/avatar/avatar.tsx b/ui/src/components/core/avatar/avatar.tsx
new file mode 100644
index 0000000..40e8b38
--- /dev/null
+++ b/ui/src/components/core/avatar/avatar.tsx
@@ -0,0 +1,15 @@
+import { forwardRef } from 'react';
+import { AvatarProps, AvatarStyles } from './avatar.styles';
+
+export const Avatar = forwardRef(
+ (
+ { fallback, fallbackProps, imageProps = {}, src, alt, css, ...rootProps },
+ ref
+ ) => {
+ return (
+
+
+
+ );
+ }
+);
diff --git a/ui/src/components/core/avatar/index.ts b/ui/src/components/core/avatar/index.ts
new file mode 100644
index 0000000..087886f
--- /dev/null
+++ b/ui/src/components/core/avatar/index.ts
@@ -0,0 +1 @@
+export * from './avatar';
diff --git a/ui/src/components/core/combobox/combobox.tsx b/ui/src/components/core/combobox/combobox.tsx
index 4f40be7..e7f276a 100644
--- a/ui/src/components/core/combobox/combobox.tsx
+++ b/ui/src/components/core/combobox/combobox.tsx
@@ -1,6 +1,6 @@
-import { Fragment, useRef, useState } from 'react';
+import React, { Fragment, useRef, useState } from 'react';
import { Combobox as ComboboxLib, Transition } from '@headlessui/react';
-import { Icon, IconName } from '@/components/core/icon';
+import { Icon } from '@/components/core/icon';
import { Flex } from '@/components/layout';
type ComboboxInputProps = {
@@ -53,7 +53,7 @@ const ComboboxOption = ({ option }: ComboboxOptionProps) => (
{({ selected, active }) => (
- {option.icon && }
+ {option.icon}
{option.label}
@@ -75,7 +75,7 @@ export const NoResults = ({ css }: { css?: string }) => (
export type ComboboxItem = {
value: string;
label: string;
- icon?: IconName;
+ icon?: React.ReactNode;
};
export type ComboboxProps = {
diff --git a/ui/src/components/core/combobox/dropdown.tsx b/ui/src/components/core/combobox/dropdown.tsx
index cf19939..81d001f 100644
--- a/ui/src/components/core/combobox/dropdown.tsx
+++ b/ui/src/components/core/combobox/dropdown.tsx
@@ -10,7 +10,7 @@ type DropdownOptionProps = {
const DropdownOption = ({ option }: DropdownOptionProps) => (
- `relative cursor-default select-none py-2 px-3.5 text-slate11 rounded-xl mb-2 text-sm ${
+ `relative cursor-default select-none py-2 px-3.5 text-slate11 rounded-xl mb-2 text-sm max-w-full ${
active ? 'bg-slate5 text-slate12' : 'bg-transparent'
}`
}
@@ -18,10 +18,28 @@ const DropdownOption = ({ option }: DropdownOptionProps) => (
>
{({ selected, active }) => (
-
+
{option.label}
- {selected && }
+ {selected && (
+
+ )}
)}
@@ -41,7 +59,7 @@ const DropdownButton = ({ selectedValue, open }: DropdownButtonProps) => (
{selectedValue && selectedValue.label ? selectedValue.label : 'Select'}
@@ -74,7 +92,7 @@ export const Dropdown: React.FC = ({
return (
{({ open }) => (
-
+
= ({
leaveFrom="opacity-100"
leaveTo="opacity-0"
>
-
+
{items.map((option: DropdownItem) => (
))}
diff --git a/ui/src/components/core/index.ts b/ui/src/components/core/index.ts
index 02d5f36..4147c28 100644
--- a/ui/src/components/core/index.ts
+++ b/ui/src/components/core/index.ts
@@ -2,3 +2,5 @@ export * from './button';
export * from './combobox';
export * from './icon';
export * from './input';
+export * from './avatar';
+export * from './separator.styles';
diff --git a/ui/src/components/form/form.styles.ts b/ui/src/components/form/form.styles.ts
index 7b47e9a..8386753 100644
--- a/ui/src/components/form/form.styles.ts
+++ b/ui/src/components/form/form.styles.ts
@@ -5,6 +5,7 @@ const { styled } = dripStitches;
export abstract class FormStyles {
static readonly Field = styled(Flex, {
flexDirection: 'column',
+ maxWidth: '100%',
});
static readonly Label = styled('label', {
diff --git a/ui/src/components/index.ts b/ui/src/components/index.ts
index 7a005be..5d821dc 100644
--- a/ui/src/components/index.ts
+++ b/ui/src/components/index.ts
@@ -2,3 +2,4 @@ export * from './core';
export * from './layout';
export * from './form';
export * from './card';
+export * from './spinner';
diff --git a/ui/src/components/spinner/index.ts b/ui/src/components/spinner/index.ts
new file mode 100644
index 0000000..211b7ad
--- /dev/null
+++ b/ui/src/components/spinner/index.ts
@@ -0,0 +1 @@
+export * from './spinner';
diff --git a/ui/src/components/spinner/spinner.styles.ts b/ui/src/components/spinner/spinner.styles.ts
new file mode 100644
index 0000000..ea09fc6
--- /dev/null
+++ b/ui/src/components/spinner/spinner.styles.ts
@@ -0,0 +1,17 @@
+import { dripStitches } from '@/theme';
+
+const { styled } = dripStitches;
+
+export abstract class SpinnerStyles {
+ static readonly Container = styled('svg', {
+ fontSize: '1.5rem',
+ width: '1em',
+ height: '1em',
+ });
+}
+
+export namespace SpinnerStyles {
+ export type ContainerProps = React.ComponentProps<
+ typeof SpinnerStyles.Container
+ >;
+}
diff --git a/ui/src/components/spinner/spinner.tsx b/ui/src/components/spinner/spinner.tsx
new file mode 100644
index 0000000..80aeb14
--- /dev/null
+++ b/ui/src/components/spinner/spinner.tsx
@@ -0,0 +1,38 @@
+/* eslint-disable react/no-unknown-property */
+
+import { SpinnerStyles } from './spinner.styles';
+
+export const Spinner: React.FC = (props) => (
+
+
+
+
+
+
+);
diff --git a/ui/src/constants/env.ts b/ui/src/constants/env.ts
new file mode 100644
index 0000000..32a03b8
--- /dev/null
+++ b/ui/src/constants/env.ts
@@ -0,0 +1,11 @@
+export const env = Object.freeze({
+ firebase: {
+ apiKey: import.meta.env.VITE_FIREBASE_API_KEY || '',
+ authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN || '',
+ projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID || '',
+ storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET || '',
+ messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID || '',
+ appId: import.meta.env.VITE_FIREBASE_APP_ID || '',
+ measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID || '',
+ },
+});
diff --git a/ui/src/constants/index.ts b/ui/src/constants/index.ts
new file mode 100644
index 0000000..4a44f41
--- /dev/null
+++ b/ui/src/constants/index.ts
@@ -0,0 +1 @@
+export * from './env';
diff --git a/ui/src/store/features/github/async-thunk/fetch-branches.ts b/ui/src/store/features/github/async-thunk/fetch-branches.ts
new file mode 100644
index 0000000..3b4966d
--- /dev/null
+++ b/ui/src/store/features/github/async-thunk/fetch-branches.ts
@@ -0,0 +1,31 @@
+import { DropdownItem } from '@/components';
+import { githubActions, RootState } from '@/store';
+import { createAsyncThunk } from '@reduxjs/toolkit';
+import { GithubClient } from '../github-client';
+
+type FetchBranches = {
+ owner: string;
+ repository: string;
+};
+
+export const fetchBranchesThunk = createAsyncThunk(
+ 'github/fetchBranches',
+ async ({ owner, repository }, { dispatch, getState }) => {
+ const { token, queryLoading } = (getState() as RootState).github;
+
+ if (queryLoading === 'loading') return;
+
+ try {
+ dispatch(githubActions.setQueryState('loading'));
+
+ const githubClient = new GithubClient(token);
+
+ const branches = await githubClient.fetchBranches(owner, repository);
+
+ dispatch(githubActions.setBranches(branches as DropdownItem[]));
+ } catch (error) {
+ console.log(error);
+ dispatch(githubActions.setQueryState('failed'));
+ }
+ }
+);
diff --git a/ui/src/store/features/github/async-thunk/fetch-repositories.ts b/ui/src/store/features/github/async-thunk/fetch-repositories.ts
new file mode 100644
index 0000000..4539fbd
--- /dev/null
+++ b/ui/src/store/features/github/async-thunk/fetch-repositories.ts
@@ -0,0 +1,31 @@
+import { githubActions, Repository, RootState } from '@/store';
+import { createAsyncThunk } from '@reduxjs/toolkit';
+import { GithubClient } from '../github-client';
+
+export const fetchRepositoriesThunk = createAsyncThunk(
+ 'github/fetchRepositories',
+ async (url: string, { dispatch, getState }) => {
+ if ((getState() as RootState).github.queryLoading === 'loading') return;
+
+ try {
+ dispatch(githubActions.setQueryState('loading'));
+
+ const githubClient = new GithubClient(
+ (getState() as RootState).github.token
+ );
+
+ const repositories = await githubClient.fetchRepos(url);
+
+ dispatch(
+ githubActions.setRepositoires(
+ repositories.map(
+ (repo: any) => ({ name: repo.name, url: repo.url } as Repository)
+ )
+ )
+ );
+ } catch (error) {
+ console.log(error);
+ dispatch(githubActions.setQueryState('failed'));
+ }
+ }
+);
diff --git a/ui/src/store/features/github/async-thunk/fetch-user-organizations.ts b/ui/src/store/features/github/async-thunk/fetch-user-organizations.ts
new file mode 100644
index 0000000..5532d14
--- /dev/null
+++ b/ui/src/store/features/github/async-thunk/fetch-user-organizations.ts
@@ -0,0 +1,43 @@
+import { ComboboxItem } from '@/components';
+import { RootState } from '@/store';
+import { createAsyncThunk } from '@reduxjs/toolkit';
+import { GithubClient, UserData } from '../github-client';
+import { githubActions } from '../github-slice';
+
+export const fetchUserAndOrgsThunk = createAsyncThunk(
+ 'github/fetchUserAndOrgs',
+ async (_, { dispatch, getState }) => {
+ const { token, queryUserAndOrganizations } = (getState() as RootState)
+ .github;
+
+ if (queryUserAndOrganizations === 'loading') return;
+
+ try {
+ dispatch(githubActions.setQueryUserState('loading'));
+
+ const githubClient = new GithubClient(token);
+
+ const response = await Promise.all([
+ githubClient.fetchUser(),
+ githubClient.fetchOrgs(),
+ ]);
+ const userResponse = response[0];
+ const orgsResponse = response[1];
+
+ let comboboxItems: UserData[] = [];
+
+ if (userResponse) {
+ comboboxItems.push(userResponse);
+ }
+
+ if (orgsResponse) {
+ comboboxItems = [...comboboxItems, ...orgsResponse];
+ }
+
+ dispatch(githubActions.setUserAndOrgs(comboboxItems));
+ } catch (error) {
+ console.log(error);
+ dispatch(githubActions.setQueryState('failed'));
+ }
+ }
+);
diff --git a/ui/src/store/features/github/async-thunk/index.ts b/ui/src/store/features/github/async-thunk/index.ts
new file mode 100644
index 0000000..0972f89
--- /dev/null
+++ b/ui/src/store/features/github/async-thunk/index.ts
@@ -0,0 +1,4 @@
+export * from './login';
+export * from './fetch-repositories';
+export * from './fetch-branches';
+export * from './fetch-user-organizations';
diff --git a/ui/src/store/features/github/async-thunk/login.ts b/ui/src/store/features/github/async-thunk/login.ts
new file mode 100644
index 0000000..558602d
--- /dev/null
+++ b/ui/src/store/features/github/async-thunk/login.ts
@@ -0,0 +1,50 @@
+import { createAsyncThunk } from '@reduxjs/toolkit';
+import { env } from '@/constants';
+import { initializeApp } from 'firebase/app';
+import { getAuth, signInWithPopup, GithubAuthProvider } from 'firebase/auth';
+import { githubActions, RootState } from '@/store';
+
+const GithubScopes = ['repo', 'read:org', 'read:user', 'public_repo', 'user'];
+
+const firebaseConfig = {
+ apiKey: env.firebase.apiKey,
+ authDomain: env.firebase.authDomain,
+ projectId: env.firebase.projectId,
+ storageBucket: env.firebase.storageBucket,
+ messagingSenderId: env.firebase.messagingSenderId,
+ appId: env.firebase.appId,
+ measurementId: env.firebase.measurementId,
+};
+// Initialize Firebase
+const app = initializeApp(firebaseConfig);
+
+const provider = new GithubAuthProvider();
+GithubScopes.forEach((scope) => provider.addScope(scope));
+
+const auth = getAuth(app);
+
+export const login = createAsyncThunk(
+ 'github/login',
+ async (_, { dispatch, getState }) => {
+ if ((getState() as RootState).github.state === 'loading') return;
+
+ try {
+ dispatch(githubActions.setState('loading'));
+
+ const response = await signInWithPopup(auth, provider);
+
+ // This gives you a GitHub Access Token. You can use it to access the GitHub API.
+ const credential = GithubAuthProvider.credentialFromResult(response);
+
+ if (credential && credential.accessToken) {
+ dispatch(githubActions.setToken(credential.accessToken));
+ } else {
+ //something went wrong and have no token
+ throw Error('Invalid response type');
+ }
+ } catch (error) {
+ console.log('Could not connect to GitHub', error);
+ dispatch(githubActions.setState('disconnected'));
+ }
+ }
+);
diff --git a/ui/src/store/features/github/github-client.ts b/ui/src/store/features/github/github-client.ts
new file mode 100644
index 0000000..b27c729
--- /dev/null
+++ b/ui/src/store/features/github/github-client.ts
@@ -0,0 +1,76 @@
+import { DropdownItem } from '@/components';
+import { Octokit } from 'octokit';
+
+export type UserData = {
+ value: string;
+ label: string;
+ avatar: string;
+};
+
+export class GithubClient {
+ octokit: Octokit;
+ token: string;
+
+ constructor(token: string) {
+ (this.token = token),
+ (this.octokit = new Octokit({
+ auth: token,
+ }));
+ }
+
+ async fetchUser(): Promise {
+ const { data: userData } = await this.octokit.request('GET /user');
+
+ return {
+ value: userData.repos_url,
+ label: userData.login,
+ avatar: userData.avatar_url,
+ };
+ }
+
+ async fetchOrgs(): Promise {
+ const { data: organizationsData } = await this.octokit.request(
+ 'GET /user/orgs'
+ );
+
+ return organizationsData.map((org) => {
+ return {
+ label: org.login,
+ value: org.repos_url,
+ avatar: org.avatar_url,
+ };
+ });
+ }
+
+ async fetchRepos(url: string) {
+ try {
+ const repos = await fetch(url, {
+ headers: {
+ Authorization: `Bearer ${this.token}`,
+ },
+ }).then((res) => res.json());
+
+ return repos;
+ } catch (error) {
+ return error;
+ }
+ }
+
+ async fetchBranches(owner: string, repo: string): Promise {
+ const branches = await this.octokit
+ .request('GET /repos/{owner}/{repo}/branches', {
+ owner,
+ repo,
+ })
+ .then((res) =>
+ res.data.map((branch) => {
+ return {
+ label: branch.name,
+ value: branch.commit.sha,
+ };
+ })
+ );
+
+ return branches;
+ }
+}
diff --git a/ui/src/store/features/github/github-slice.ts b/ui/src/store/features/github/github-slice.ts
new file mode 100644
index 0000000..2361806
--- /dev/null
+++ b/ui/src/store/features/github/github-slice.ts
@@ -0,0 +1,115 @@
+import { createSlice, PayloadAction } from '@reduxjs/toolkit';
+import { RootState } from '@/store';
+import { useAppSelector } from '@/store/hooks';
+import * as asyncThunk from './async-thunk';
+import { ComboboxItem, DropdownItem } from '@/components';
+import { UserData } from './github-client';
+
+export type Repository = {
+ name: string;
+ url: string;
+};
+
+export namespace GithubState {
+ export type Token = string;
+
+ export type State = 'disconnected' | 'loading' | 'connected';
+
+ export type QueryUserAndOrganizations =
+ | 'idle'
+ | 'loading'
+ | 'failed'
+ | 'success';
+
+ export type QueryLoading = 'idle' | 'loading' | 'failed' | 'success';
+
+ export type UserAndOrganizations = Array;
+
+ export type Repositories = Array;
+
+ export type Branches = Array;
+}
+
+export interface GithubState {
+ token: GithubState.Token;
+ state: GithubState.State;
+ userAndOrganizations: GithubState.UserAndOrganizations;
+ queryUserAndOrganizations: GithubState.QueryUserAndOrganizations;
+ queryLoading: GithubState.QueryLoading;
+ repositories: GithubState.Repositories;
+ branches: GithubState.Branches;
+}
+
+const initialState: GithubState = {
+ token: '',
+ state: 'disconnected',
+ queryUserAndOrganizations: 'idle',
+ queryLoading: 'idle',
+ userAndOrganizations: [],
+ repositories: [],
+ branches: [],
+};
+
+export const githubSlice = createSlice({
+ name: 'github',
+ initialState,
+ reducers: {
+ setToken: (state, action: PayloadAction) => {
+ state.token = action.payload;
+ state.state = 'connected';
+ },
+ setState: (
+ state,
+ action: PayloadAction>
+ ) => {
+ state.token = '';
+ state.state = action.payload;
+ },
+ setRepositoires: (
+ state,
+ action: PayloadAction
+ ) => {
+ state.repositories = action.payload;
+ state.queryLoading = 'success';
+ },
+ setBranches: (state, action: PayloadAction) => {
+ state.branches = action.payload;
+ state.queryLoading = 'success';
+ },
+ setUserAndOrgs: (
+ state,
+ action: PayloadAction
+ ) => {
+ state.userAndOrganizations = action.payload;
+ state.queryUserAndOrganizations = 'success';
+ },
+ setQueryUserState: (
+ state,
+ action: PayloadAction>
+ ) => {
+ state.queryUserAndOrganizations = action.payload;
+ },
+ setQueryState: (
+ state,
+ action: PayloadAction>
+ ) => {
+ state.queryLoading = action.payload;
+ },
+ disconnect: (state) => {
+ state.token = '';
+ state.state = 'disconnected';
+ },
+ },
+});
+
+export const githubActions = {
+ ...githubSlice.actions,
+ ...asyncThunk,
+};
+
+const selectGithubState = (state: RootState): GithubState => state.github;
+
+export const useGithubStore = (): GithubState =>
+ useAppSelector(selectGithubState);
+
+export default githubSlice.reducer;
diff --git a/ui/src/store/features/github/index.ts b/ui/src/store/features/github/index.ts
new file mode 100644
index 0000000..3241e44
--- /dev/null
+++ b/ui/src/store/features/github/index.ts
@@ -0,0 +1 @@
+export * from './github-slice';
diff --git a/ui/src/store/features/index.ts b/ui/src/store/features/index.ts
index 2beb9db..0f0a5d7 100644
--- a/ui/src/store/features/index.ts
+++ b/ui/src/store/features/index.ts
@@ -1 +1,2 @@
export * from './wallet';
+export * from './github';
diff --git a/ui/src/store/store.ts b/ui/src/store/store.ts
index 65a3288..0e73521 100644
--- a/ui/src/store/store.ts
+++ b/ui/src/store/store.ts
@@ -1,9 +1,11 @@
import { configureStore } from '@reduxjs/toolkit';
import walletReducer from './features/wallet/wallet-slice';
+import githubReducer from './features/github/github-slice';
export const store = configureStore({
reducer: {
wallet: walletReducer,
+ github: githubReducer,
},
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware({
diff --git a/ui/src/views/mint/github-step/steps/github-connect/github-button.tsx b/ui/src/views/mint/github-step/steps/github-connect/github-button.tsx
new file mode 100644
index 0000000..7065643
--- /dev/null
+++ b/ui/src/views/mint/github-step/steps/github-connect/github-button.tsx
@@ -0,0 +1,39 @@
+import { Button, Icon } from '@/components';
+import { githubActions, useAppDispatch, useGithubStore } from '@/store';
+import { Mint } from '@/views/mint/mint.context';
+import { useCallback } from 'react';
+
+export const GithubButton = () => {
+ const { state } = useGithubStore();
+ const dispatch = useAppDispatch();
+ const { setGithubStep } = Mint.useContext();
+
+ const handleGithubLogin = useCallback(() => {
+ dispatch(githubActions.login())
+ .then(() => setGithubStep(2))
+ .catch((error) => {
+ //TODO show toast with error message
+ console.log(error);
+ });
+ }, [dispatch]);
+
+ return (
+
+ }
+ >
+ GitHub
+
+ );
+};
diff --git a/ui/src/views/mint/github-step/steps/github-connect/github-connect-step.tsx b/ui/src/views/mint/github-step/steps/github-connect/github-connect-step.tsx
index eefe4a0..1d2f3f8 100644
--- a/ui/src/views/mint/github-step/steps/github-connect/github-connect-step.tsx
+++ b/ui/src/views/mint/github-step/steps/github-connect/github-connect-step.tsx
@@ -1,14 +1,7 @@
-import { Button, Card, Grid, Icon, IconButton } from '@/components';
-import { Mint } from '../../../mint.context';
+import { Card, Grid, Icon, IconButton } from '@/components';
+import { GithubButton } from './github-button';
-export const GithubConnect: React.FC = () => {
- const { setGithubStep } = Mint.useContext();
-
- const handleNextStep = () => {
- //TODO when we integrate GH login, we'll need to set the step to 2 after login
- setGithubStep(2);
- };
- return (
+export const GithubConnect: React.FC = () => (
{
/>
-
- }
- >
- GitHub
-
+
@@ -49,5 +27,4 @@ export const GithubConnect: React.FC = () => {
- );
-};
+ );
diff --git a/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-branch-commit-fields.tsx b/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-branch-commit-fields.tsx
new file mode 100644
index 0000000..02f1310
--- /dev/null
+++ b/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-branch-commit-fields.tsx
@@ -0,0 +1,73 @@
+import { Dropdown, DropdownItem, Flex, Form, Spinner } from '@/components';
+import { githubActions, useAppDispatch, useGithubStore } from '@/store';
+import { Mint } from '@/views/mint/mint.context';
+import { useEffect } from 'react';
+
+export const RepoBranchCommitFields = () => {
+ const { queryLoading, branches } = useGithubStore();
+ const dispatch = useAppDispatch();
+
+ const {
+ repositoryName,
+ selectedUserOrg,
+ branchName,
+ commitHash,
+ setBranchName,
+ setCommitHash,
+ } = Mint.useContext();
+
+ useEffect(() => {
+ if (queryLoading === 'idle') {
+ dispatch(
+ githubActions.fetchBranchesThunk({
+ owner: selectedUserOrg.label,
+ repository: repositoryName.name,
+ })
+ );
+ }
+ }, [queryLoading, dispatch]);
+
+ const handleBranchChange = (dorpdownOption: DropdownItem) => {
+ setBranchName(dorpdownOption);
+ setCommitHash(dorpdownOption.value);
+ };
+
+ const handleCommitHashChange = (e: React.ChangeEvent) => {
+ setCommitHash(e.target.value);
+ };
+
+ if (queryLoading === 'loading') {
+ return (
+
+
+
+ );
+ }
+
+ return (
+ <>
+
+ Git Branch
+
+
+
+ Git Commit
+
+
+ >
+ );
+};
diff --git a/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-configuration-body.tsx b/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-configuration-body.tsx
index 51cd016..cc2b1c5 100644
--- a/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-configuration-body.tsx
+++ b/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-configuration-body.tsx
@@ -1,60 +1,22 @@
-import {
- Button,
- Card,
- Dropdown,
- DropdownItem,
- Form,
- Grid,
- Stepper,
-} from '@/components';
+import { Button, Card, Flex, Stepper } from '@/components';
import { Mint } from '@/views/mint/mint.context';
-import { useState } from 'react';
import { RepoRow } from '../github-repository-selection';
-
-//TODO remove once it's integrated with GH login
-const branches: DropdownItem[] = [
- {
- label: 'master',
- value: 'master',
- },
- {
- label: 'develop',
- value: 'develop',
- },
- {
- label: 'feature/branch',
- value: 'feature/branch',
- },
-];
+import { RepoBranchCommitFields } from './repo-branch-commit-fields';
export const RepoConfigurationBody = () => {
- const { repositoryName, branchName, commitHash, setRepositoryConfig } =
- Mint.useContext();
+ const { repositoryName, branchName, commitHash } = Mint.useContext();
const { nextStep } = Stepper.useContext();
- const [branchSelected, setBranchSelected] = useState(branchName);
- const [commitHashSelected, setCommitHashSelected] = useState(commitHash);
- console.log(branchSelected);
- const handleBranchChange = (dorpdownOption: DropdownItem) => {
- //TODO we'll have to check the data that GH API returns
- console.log(dorpdownOption);
- setBranchSelected(dorpdownOption);
- };
-
- const handleCommitHashChange = (e: React.ChangeEvent) => {
- setCommitHashSelected(e.target.value);
- };
const handleContinueClick = () => {
- setRepositoryConfig(branchSelected, commitHashSelected);
nextStep();
};
return (
-
+
{
}
/>
-
- Git Branch
-
-
-
- Git Commit
-
-
+
Continue
-
+
);
};
diff --git a/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-configuration-header.tsx b/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-configuration-header.tsx
index 5d1b641..e87f105 100644
--- a/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-configuration-header.tsx
+++ b/ui/src/views/mint/github-step/steps/github-repo-configuration/repo-configuration-header.tsx
@@ -3,11 +3,12 @@ import { MintCardHeader } from '@/views/mint/mint-card';
import { Mint } from '@/views/mint/mint.context';
export const RepoConfigurationHeader = () => {
- const { setGithubStep, setRepositoryConfig } = Mint.useContext();
+ const { setGithubStep, setBranchName, setCommitHash } = Mint.useContext();
const handlePrevStepClick = () => {
setGithubStep(2);
- setRepositoryConfig({} as DropdownItem, '');
+ setBranchName({} as DropdownItem);
+ setCommitHash('');
};
return (
diff --git a/ui/src/views/mint/github-step/steps/github-repository-selection/github-repository-selection.tsx b/ui/src/views/mint/github-step/steps/github-repository-selection/github-repository-selection.tsx
index 2958bb8..ce79f9d 100644
--- a/ui/src/views/mint/github-step/steps/github-repository-selection/github-repository-selection.tsx
+++ b/ui/src/views/mint/github-step/steps/github-repository-selection/github-repository-selection.tsx
@@ -1,42 +1,23 @@
-import {
- Button,
- Card,
- Combobox,
- ComboboxItem,
- DropdownItem,
- Flex,
- Grid,
- Icon,
- IconButton,
- NoResults,
-} from '@/components';
+import { Card, ComboboxItem, Flex, Grid, Icon, Spinner } from '@/components';
import { Input } from '@/components/core/input';
-import { Separator } from '@/components/core/separator.styles';
+import { useGithubStore } from '@/store';
import { MintCardHeader } from '@/views/mint/mint-card';
import { Mint } from '@/views/mint/mint.context';
import React, { forwardRef, useRef, useState } from 'react';
+import { RepositoriesList } from './repositories-list';
+import { UserOrgsCombobox } from './users-orgs-combobox';
-//TODO remove once it's integrated with GH login
-const repos = [
- 'DyDx',
- 'Testing',
- 'Hello World',
- 'Portofolio',
- 'NFA',
- 'NFT',
- 'NFTs',
-];
-
-//TODO remove once it's integrated with GH login
-const users: ComboboxItem[] = [
- { label: 'DyDx', value: 'DyDx', icon: 'github' },
- { label: 'Testing', value: 'Testing', icon: 'github' },
- { label: 'Hello World', value: 'Hello World', icon: 'github' },
- { label: 'Portofolio', value: 'Portofolio', icon: 'github' },
- { label: 'NFA', value: 'NFA', icon: 'github' },
- { label: 'NFT', value: 'NFT', icon: 'github' },
- { label: 'NFTs', value: 'NFTs', icon: 'github' },
-];
+export const Loading = () => (
+
+
+
+);
type RepoRowProps = {
repo: string;
@@ -60,10 +41,10 @@ export const RepoRow = forwardRef(
);
export const GithubRepositoryConnection: React.FC = () => {
+ const { queryLoading, queryUserAndOrganizations } = useGithubStore();
const [searchValue, setSearchValue] = useState('');
- const [selectedUser, setSelectedUser] = useState();
- const { setGithubStep, setRepositoryName, setRepositoryConfig } =
- Mint.useContext();
+
+ const { setGithubStep, setSelectedUserOrg } = Mint.useContext();
const timeOutRef = useRef();
@@ -77,21 +58,9 @@ export const GithubRepositoryConnection: React.FC = () => {
const handlePrevStepClick = () => {
setGithubStep(1);
+ setSelectedUserOrg({} as ComboboxItem);
};
- const handleSelectRepo = (repo: string) => {
- setRepositoryName(repo);
- setGithubStep(3);
- setRepositoryConfig({} as DropdownItem, '');
- };
-
- const filteredRepositories =
- searchValue === ''
- ? repos
- : repos.filter(
- (item) => item.toUpperCase().indexOf(searchValue.toUpperCase()) != -1
- );
-
return (
{
-
+
-
- {filteredRepositories.length > 0 ? (
- filteredRepositories.map((repo, index, { length }) => (
-
- handleSelectRepo(repo)}
- >
- Use for NFA
-
- }
- />
- {index < length - 1 && }
-
- ))
- ) : (
-
- )}
-
+ {queryLoading === 'loading' ||
+ queryUserAndOrganizations === 'loading' ? (
+
+ ) : (
+
+ )}
diff --git a/ui/src/views/mint/github-step/steps/github-repository-selection/repositories-list.tsx b/ui/src/views/mint/github-step/steps/github-repository-selection/repositories-list.tsx
new file mode 100644
index 0000000..d544fec
--- /dev/null
+++ b/ui/src/views/mint/github-step/steps/github-repository-selection/repositories-list.tsx
@@ -0,0 +1,58 @@
+import { useEffect, useMemo } from 'react';
+import { Flex, NoResults } from '@/components';
+import { Mint } from '@/views/mint/mint.context';
+import { githubActions, useAppDispatch, useGithubStore } from '@/store';
+import { Repository } from './repository';
+
+type RepositoriesListProps = {
+ searchValue: string;
+};
+
+export const RepositoriesList = ({ searchValue }: RepositoriesListProps) => {
+ const { selectedUserOrg } = Mint.useContext();
+ const { queryLoading, repositories } = useGithubStore();
+ const dispatch = useAppDispatch();
+
+ const filteredRepositories = useMemo(() => {
+ return searchValue === ''
+ ? repositories
+ : repositories.filter(
+ (item) =>
+ item.name.toUpperCase().indexOf(searchValue.toUpperCase()) != -1
+ );
+ }, [searchValue, repositories]);
+
+ useEffect(() => {
+ if (queryLoading === 'idle' && selectedUserOrg.value) {
+ dispatch(githubActions.fetchRepositoriesThunk(selectedUserOrg.value));
+ }
+ }, [queryLoading, dispatch, selectedUserOrg]);
+
+ if (queryLoading === 'failed') {
+ return Error ;
+ }
+
+ return (
+
+ {filteredRepositories.length > 0 ? (
+ filteredRepositories.map((repo, index, { length }) => (
+
+ ))
+ ) : (
+
+ )}
+
+ );
+};
diff --git a/ui/src/views/mint/github-step/steps/github-repository-selection/repository.tsx b/ui/src/views/mint/github-step/steps/github-repository-selection/repository.tsx
new file mode 100644
index 0000000..d425e1a
--- /dev/null
+++ b/ui/src/views/mint/github-step/steps/github-repository-selection/repository.tsx
@@ -0,0 +1,43 @@
+import { Button, Separator } from '@/components';
+import {
+ githubActions,
+ Repository as RepositoryType,
+ useAppDispatch,
+} from '@/store';
+import { Mint } from '@/views/mint/mint.context';
+import { RepoRow } from './github-repository-selection';
+
+type RepositoryProps = {
+ repository: RepositoryType;
+ index: number;
+ length: number;
+};
+export const Repository = ({ repository, index, length }: RepositoryProps) => {
+ const { setGithubStep, setRepositoryName } = Mint.useContext();
+
+ const dispatch = useAppDispatch();
+
+ const handleSelectRepo = () => {
+ setRepositoryName(repository);
+ setGithubStep(3);
+ dispatch(githubActions.setQueryState('idle'));
+ };
+ return (
+ <>
+
+ Use for NFA
+
+ }
+ />
+ {index < length - 1 && }
+ >
+ );
+};
diff --git a/ui/src/views/mint/github-step/steps/github-repository-selection/users-orgs-combobox.tsx b/ui/src/views/mint/github-step/steps/github-repository-selection/users-orgs-combobox.tsx
new file mode 100644
index 0000000..c5fb89b
--- /dev/null
+++ b/ui/src/views/mint/github-step/steps/github-repository-selection/users-orgs-combobox.tsx
@@ -0,0 +1,48 @@
+import { Avatar, Combobox, ComboboxItem } from '@/components';
+import { githubActions, useAppDispatch, useGithubStore } from '@/store';
+import { Mint } from '@/views/mint/mint.context';
+import { useEffect } from 'react';
+
+export const UserOrgsCombobox = () => {
+ const { queryUserAndOrganizations, userAndOrganizations } = useGithubStore();
+ const dispatch = useAppDispatch();
+
+ const { selectedUserOrg, setSelectedUserOrg } = Mint.useContext();
+
+ useEffect(() => {
+ if (queryUserAndOrganizations === 'idle') {
+ dispatch(githubActions.fetchUserAndOrgsThunk());
+ }
+ }, [dispatch, queryUserAndOrganizations]);
+
+ const handleUserOrgChange = (item: ComboboxItem) => {
+ dispatch(githubActions.fetchRepositoriesThunk(item.value));
+ setSelectedUserOrg(item);
+ };
+
+ useEffect(() => {
+ if (
+ queryUserAndOrganizations === 'success' &&
+ selectedUserOrg.value === undefined &&
+ userAndOrganizations.length > 0
+ ) {
+ //SET first user
+ setSelectedUserOrg(userAndOrganizations[0]);
+ }
+ }, [queryUserAndOrganizations]);
+
+ return (
+
+ ({
+ label: item.label,
+ value: item.value,
+ icon: ,
+ } as ComboboxItem)
+ )}
+ selectedValue={selectedUserOrg}
+ onChange={handleUserOrgChange}
+ />
+ );
+};
diff --git a/ui/src/views/mint/mint.context.tsx b/ui/src/views/mint/mint.context.tsx
index b32f74c..29c6ce0 100644
--- a/ui/src/views/mint/mint.context.tsx
+++ b/ui/src/views/mint/mint.context.tsx
@@ -1,9 +1,11 @@
-import { DropdownItem } from '@/components';
+import { ComboboxItem, DropdownItem } from '@/components';
+import { Repository } from '@/store';
import { createContext } from '@/utils';
import { useState } from 'react';
export type MintContext = {
- repositoryName: string;
+ selectedUserOrg: ComboboxItem;
+ repositoryName: Repository;
branchName: DropdownItem; //get value from DropdownItem to mint
commitHash: string;
githubStep: number;
@@ -11,13 +13,15 @@ export type MintContext = {
appDescription: string;
appLogo: string;
logoColor: string;
- ens: DropdownItem; //maybe it would be a DropdownItem
+ ens: DropdownItem;
domain: string;
verifyNFA: boolean;
sucessMint: boolean | undefined;
setGithubStep: (step: number) => void;
- setRepositoryName: (repo: string) => void;
- setRepositoryConfig: (branch: DropdownItem, hash: string) => void;
+ setSelectedUserOrg: (userOrg: ComboboxItem) => void;
+ setRepositoryName: (repo: Repository) => void;
+ setBranchName: (branch: DropdownItem) => void;
+ setCommitHash: (hash: string) => void;
setAppName: (name: string) => void;
setAppDescription: (description: string) => void;
setAppLogo: (logo: string) => void;
@@ -39,7 +43,10 @@ export abstract class Mint {
static readonly Provider: React.FC = ({ children }) => {
//Github Connection
- const [repositoryName, setRepositoryName] = useState('');
+ const [selectedUserOrg, setSelectedUserOrg] = useState({} as ComboboxItem);
+ const [repositoryName, setRepositoryName] = useState(
+ {} as Repository
+ );
const [branchName, setBranchName] = useState({} as DropdownItem);
const [commitHash, setCommitHash] = useState('');
const [githubStep, setGithubStepContext] = useState(1);
@@ -64,14 +71,10 @@ export abstract class Mint {
}
};
- const setRepositoryConfig = (branch: DropdownItem, hash: string) => {
- setBranchName(branch);
- setCommitHash(hash);
- };
-
return (
=12.12.47"
+
+"@grpc/proto-loader@^0.6.13":
+ version "0.6.13"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc"
+ integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^6.11.3"
+ yargs "^16.2.0"
+
+"@grpc/proto-loader@^0.7.0":
+ version "0.7.5"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.5.tgz#ee9e7488fa585dc6b0f7fe88cd39723a3e64c906"
+ integrity sha512-mfcTuMbFowq1wh/Rn5KQl6qb95M21Prej3bewD9dUQMurYGVckGO/Pbe2Ocwto6sD05b/mxZLspvqwx60xO2Rg==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^7.0.0"
+ yargs "^16.2.0"
+
"@headlessui/react@^1.7.8":
version "1.7.8"
resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.8.tgz#d7b4a95d50f9a386f7d1259d5ff8a6d7eb552ef0"
@@ -1849,6 +2264,231 @@
mkdirp "^1.0.4"
rimraf "^3.0.2"
+"@octokit/app@^13.1.1":
+ version "13.1.2"
+ resolved "https://registry.yarnpkg.com/@octokit/app/-/app-13.1.2.tgz#81fdee338abddda9c016e5beccdb19ff5110bb66"
+ integrity sha512-Kf+h5sa1SOI33hFsuHvTsWj1jUrjp1x4MuiJBq7U/NicfEGa6nArPUoDnyfP/YTmcQ5cQ5yvOgoIBkbwPg6kzQ==
+ dependencies:
+ "@octokit/auth-app" "^4.0.8"
+ "@octokit/auth-unauthenticated" "^3.0.0"
+ "@octokit/core" "^4.0.0"
+ "@octokit/oauth-app" "^4.0.7"
+ "@octokit/plugin-paginate-rest" "^6.0.0"
+ "@octokit/types" "^9.0.0"
+ "@octokit/webhooks" "^10.0.0"
+
+"@octokit/auth-app@^4.0.8":
+ version "4.0.9"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-4.0.9.tgz#66500c8f66545d970a19123b9b364c678c972d6b"
+ integrity sha512-VFpKIXhHO+kVJtane5cEvdYPtjDKCOI0uKsRrsZfJP+uEu7rcPbQCLCcRKgyT+mUIzGr1IIOmwP/lFqSip1dXA==
+ dependencies:
+ "@octokit/auth-oauth-app" "^5.0.0"
+ "@octokit/auth-oauth-user" "^2.0.0"
+ "@octokit/request" "^6.0.0"
+ "@octokit/request-error" "^3.0.0"
+ "@octokit/types" "^9.0.0"
+ "@types/lru-cache" "^5.1.0"
+ deprecation "^2.3.1"
+ lru-cache "^6.0.0"
+ universal-github-app-jwt "^1.1.1"
+ universal-user-agent "^6.0.0"
+
+"@octokit/auth-oauth-app@^5.0.0":
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.5.tgz#be2a93d72835133b4866ac4721aa628849475525"
+ integrity sha512-UPX1su6XpseaeLVCi78s9droxpGtBWIgz9XhXAx9VXabksoF0MyI5vaa1zo1njyYt6VaAjFisC2A2Wchcu2WmQ==
+ dependencies:
+ "@octokit/auth-oauth-device" "^4.0.0"
+ "@octokit/auth-oauth-user" "^2.0.0"
+ "@octokit/request" "^6.0.0"
+ "@octokit/types" "^9.0.0"
+ "@types/btoa-lite" "^1.0.0"
+ btoa-lite "^1.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/auth-oauth-device@^4.0.0":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.4.tgz#b8dde812a38bf5cb0696b6e7d0a74681d437c390"
+ integrity sha512-Xl85BZYfqCMv+Uvz33nVVUjE7I/PVySNaK6dRRqlkvYcArSr9vRcZC9KVjXYObGRTCN6mISeYdakAZvWEN4+Jw==
+ dependencies:
+ "@octokit/oauth-methods" "^2.0.0"
+ "@octokit/request" "^6.0.0"
+ "@octokit/types" "^9.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/auth-oauth-user@^2.0.0":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.1.tgz#d900972f3d9247924637ab3343a8305746feadb2"
+ integrity sha512-JgqnNNPf9CaWLxWm9uh2WgxcaVYhxBR09NVIPTiMU2dVZ3FObOHs3njBiLNw+zq84k+rEdm5Y7AsiASrZ84Apg==
+ dependencies:
+ "@octokit/auth-oauth-device" "^4.0.0"
+ "@octokit/oauth-methods" "^2.0.0"
+ "@octokit/request" "^6.0.0"
+ "@octokit/types" "^9.0.0"
+ btoa-lite "^1.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/auth-token@^3.0.0":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c"
+ integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==
+ dependencies:
+ "@octokit/types" "^9.0.0"
+
+"@octokit/auth-unauthenticated@^3.0.0":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.4.tgz#347d3f3a6fefb22d399a941b986bac5361fc95df"
+ integrity sha512-AT74XGBylcLr4lmUp1s6mjSUgphGdlse21Qjtv5DzpX1YOl5FXKwvNcZWESdhyBbpDT8VkVyLFqa/7a7eqpPNw==
+ dependencies:
+ "@octokit/request-error" "^3.0.0"
+ "@octokit/types" "^9.0.0"
+
+"@octokit/core@^4.0.0", "@octokit/core@^4.0.4":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.0.tgz#8c253ba9605aca605bc46187c34fcccae6a96648"
+ integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==
+ dependencies:
+ "@octokit/auth-token" "^3.0.0"
+ "@octokit/graphql" "^5.0.0"
+ "@octokit/request" "^6.0.0"
+ "@octokit/request-error" "^3.0.0"
+ "@octokit/types" "^9.0.0"
+ before-after-hook "^2.2.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/endpoint@^7.0.0":
+ version "7.0.5"
+ resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1"
+ integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==
+ dependencies:
+ "@octokit/types" "^9.0.0"
+ is-plain-object "^5.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/graphql@^5.0.0":
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2"
+ integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==
+ dependencies:
+ "@octokit/request" "^6.0.0"
+ "@octokit/types" "^9.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/oauth-app@^4.0.6", "@octokit/oauth-app@^4.0.7":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@octokit/oauth-app/-/oauth-app-4.2.0.tgz#f965496b1d957c3ff0275a5d5233b380181ce72b"
+ integrity sha512-gyGclT77RQMkVUEW3YBeAKY+LBSc5u3eC9Wn/Uwt3WhuKuu9mrV18EnNpDqmeNll+mdV02yyBROU29Tlili6gg==
+ dependencies:
+ "@octokit/auth-oauth-app" "^5.0.0"
+ "@octokit/auth-oauth-user" "^2.0.0"
+ "@octokit/auth-unauthenticated" "^3.0.0"
+ "@octokit/core" "^4.0.0"
+ "@octokit/oauth-authorization-url" "^5.0.0"
+ "@octokit/oauth-methods" "^2.0.0"
+ "@types/aws-lambda" "^8.10.83"
+ fromentries "^1.3.1"
+ universal-user-agent "^6.0.0"
+
+"@octokit/oauth-authorization-url@^5.0.0":
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz#029626ce87f3b31addb98cd0d2355c2381a1c5a1"
+ integrity sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==
+
+"@octokit/oauth-methods@^2.0.0":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@octokit/oauth-methods/-/oauth-methods-2.0.5.tgz#b11ce2205c46ffcd731c7332b21bb62dad10ce24"
+ integrity sha512-yQP6B5gE3axNxuM3U9KqWs/ErAQ+WLPaPgC/7EjsZsQibkf8sjdAfF8/y/EJW+Dd05XQvadX4WhQZPMnO1SE1A==
+ dependencies:
+ "@octokit/oauth-authorization-url" "^5.0.0"
+ "@octokit/request" "^6.2.3"
+ "@octokit/request-error" "^3.0.3"
+ "@octokit/types" "^9.0.0"
+ btoa-lite "^1.0.0"
+
+"@octokit/openapi-types@^16.0.0":
+ version "16.0.0"
+ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-16.0.0.tgz#d92838a6cd9fb4639ca875ddb3437f1045cc625e"
+ integrity sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==
+
+"@octokit/plugin-paginate-rest@^6.0.0":
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz#f34b5a7d9416019126042cd7d7b811e006c0d561"
+ integrity sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==
+ dependencies:
+ "@octokit/types" "^9.0.0"
+
+"@octokit/plugin-rest-endpoint-methods@^7.0.0":
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz#f7ebe18144fd89460f98f35a587b056646e84502"
+ integrity sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==
+ dependencies:
+ "@octokit/types" "^9.0.0"
+ deprecation "^2.3.1"
+
+"@octokit/plugin-retry@^4.0.3":
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-4.1.1.tgz#2a96e97219f6506d636b4de696cf368da44a8e20"
+ integrity sha512-iR7rg5KRSl6L6RELTQQ3CYeNgeBJyuAmP95odzcQ/zyefnRT/Peo8rWeky4z7V/+/oPWqOL4I5Z+V8KtjpHCJw==
+ dependencies:
+ "@octokit/types" "^9.0.0"
+ bottleneck "^2.15.3"
+
+"@octokit/plugin-throttling@^5.0.0":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-5.0.1.tgz#e3ba0a49830a777097b6d49615782a0a5e51e743"
+ integrity sha512-I4qxs7wYvYlFuY3PAUGWAVPhFXG3RwnvTiSr5Fu/Auz7bYhDLnzS2MjwV8nGLq/FPrWwYiweeZrI5yjs1YG4tQ==
+ dependencies:
+ "@octokit/types" "^9.0.0"
+ bottleneck "^2.15.3"
+
+"@octokit/request-error@^3.0.0", "@octokit/request-error@^3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69"
+ integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==
+ dependencies:
+ "@octokit/types" "^9.0.0"
+ deprecation "^2.0.0"
+ once "^1.4.0"
+
+"@octokit/request@^6.0.0", "@octokit/request@^6.2.3":
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.3.tgz#76d5d6d44da5c8d406620a4c285d280ae310bdb4"
+ integrity sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==
+ dependencies:
+ "@octokit/endpoint" "^7.0.0"
+ "@octokit/request-error" "^3.0.0"
+ "@octokit/types" "^9.0.0"
+ is-plain-object "^5.0.0"
+ node-fetch "^2.6.7"
+ universal-user-agent "^6.0.0"
+
+"@octokit/types@^9.0.0":
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.0.0.tgz#6050db04ddf4188ec92d60e4da1a2ce0633ff635"
+ integrity sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==
+ dependencies:
+ "@octokit/openapi-types" "^16.0.0"
+
+"@octokit/webhooks-methods@^3.0.0":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@octokit/webhooks-methods/-/webhooks-methods-3.0.2.tgz#cece91cc72714a1c83b35d121e04334f051e509c"
+ integrity sha512-Vlnv5WBscf07tyAvfDbp7pTkMZUwk7z7VwEF32x6HqI+55QRwBTcT+D7DDjZXtad/1dU9E32x0HmtDlF9VIRaQ==
+
+"@octokit/webhooks-types@6.10.0":
+ version "6.10.0"
+ resolved "https://registry.yarnpkg.com/@octokit/webhooks-types/-/webhooks-types-6.10.0.tgz#b441780d26370c7682f4f964d4b36b5cb0c757f8"
+ integrity sha512-lDNv83BeEyxxukdQ0UttiUXawk9+6DkdjjFtm2GFED+24IQhTVaoSbwV9vWWKONyGLzRmCQqZmoEWkDhkEmPlw==
+
+"@octokit/webhooks@^10.0.0":
+ version "10.7.0"
+ resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-10.7.0.tgz#ec05e655d309383e2cd08dafe51abd1705df6d4a"
+ integrity sha512-zZBbQMpXXnK/ki/utrFG/TuWv9545XCSLibfDTxrYqR1PmU6zel02ebTOrA7t5XIGHzlEOc/NgISUIBUe7pMFA==
+ dependencies:
+ "@octokit/request-error" "^3.0.0"
+ "@octokit/webhooks-methods" "^3.0.0"
+ "@octokit/webhooks-types" "6.10.0"
+ aggregate-error "^3.1.0"
+
"@pmmmwh/react-refresh-webpack-plugin@^0.5.3":
version "0.5.10"
resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8"
@@ -1864,11 +2504,119 @@
schema-utils "^3.0.0"
source-map "^0.7.3"
+"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+ integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
+
+"@protobufjs/base64@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+ integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
+
+"@protobufjs/codegen@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+ integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+
+"@protobufjs/eventemitter@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+ integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
+
+"@protobufjs/fetch@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+ integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.1"
+ "@protobufjs/inquire" "^1.1.0"
+
+"@protobufjs/float@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+ integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
+
+"@protobufjs/inquire@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+ integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
+
+"@protobufjs/path@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+ integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
+
+"@protobufjs/pool@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+ integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
+
+"@protobufjs/utf8@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+ integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+
"@radix-ui/colors@^0.1.8":
version "0.1.8"
resolved "https://registry.yarnpkg.com/@radix-ui/colors/-/colors-0.1.8.tgz#b08c62536fc462a87632165fb28e9b18f9bd047e"
integrity sha512-jwRMXYwC0hUo0mv6wGpuw254Pd9p/R6Td5xsRpOmaWkUHlooNWqVcadgyzlRumMq3xfOTXwJReU0Jv+EIy4Jbw==
+"@radix-ui/react-avatar@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-avatar/-/react-avatar-1.0.1.tgz#d25ef10b56210039c152e45209dd41a1afdc192e"
+ integrity sha512-GfUgw4i/OWmb76bmM9qLnedYOsXhPvRXL6xaxyZzhiIVEwo2KbmxTaSQv5r1Oh8nNqBs1vfYPGuVmhEfpxpnvw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-context" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-use-callback-ref" "1.0.0"
+ "@radix-ui/react-use-layout-effect" "1.0.0"
+
+"@radix-ui/react-compose-refs@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae"
+ integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-context@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0"
+ integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-primitive@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a"
+ integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-slot" "1.0.1"
+
+"@radix-ui/react-slot@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81"
+ integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.0"
+
+"@radix-ui/react-use-callback-ref@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90"
+ integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-use-layout-effect@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc"
+ integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
"@react-icons/all-files@^4.1.0":
version "4.1.0"
resolved "https://registry.yarnpkg.com/@react-icons/all-files/-/all-files-4.1.0.tgz#477284873a0821928224b6fc84c62d2534d6650b"
@@ -2828,6 +3576,16 @@
resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc"
integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==
+"@types/aws-lambda@^8.10.83":
+ version "8.10.110"
+ resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.110.tgz#32a1f9d40b855d69830243492bbb6408098f4c88"
+ integrity sha512-r6egf2Cwv/JaFTTrF9OXFVUB3j/SXTgM9BwrlbBRjWAa2Tu6GWoDoLflppAZ8uSfbUJdXvC7Br3DjuN9pQ2NUQ==
+
+"@types/btoa-lite@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.0.tgz#e190a5a548e0b348adb0df9ac7fa5f1151c7cca4"
+ integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==
+
"@types/eslint-scope@^3.7.3":
version "3.7.4"
resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16"
@@ -2934,11 +3692,28 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
+"@types/jsonwebtoken@^9.0.0":
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#29b1369c4774200d6d6f63135bf3d1ba3ef997a4"
+ integrity sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==
+ dependencies:
+ "@types/node" "*"
+
"@types/lodash@^4.14.167":
version "4.14.191"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa"
integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
+"@types/long@^4.0.1":
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
+ integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
+
+"@types/lru-cache@^5.1.0":
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef"
+ integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==
+
"@types/mdast@^3.0.0":
version "3.0.10"
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
@@ -2964,6 +3739,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f"
integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==
+"@types/node@>=12.12.47", "@types/node@>=13.7.0":
+ version "18.13.0"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850"
+ integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==
+
"@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0":
version "16.18.11"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.11.tgz#cbb15c12ca7c16c85a72b6bdc4d4b01151bb3cae"
@@ -3197,7 +3977,7 @@
"@typescript-eslint/types" "5.49.0"
eslint-visitor-keys "^3.3.0"
-"@vitejs/plugin-react@^2.0.0", "@vitejs/plugin-react@^2.2.0":
+"@vitejs/plugin-react@2.2.0", "@vitejs/plugin-react@^2.0.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz#1b9f63b8b6bc3f56258d20cd19b33f5cc761ce6e"
integrity sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==
@@ -3486,6 +4266,13 @@
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1:
+ version "0.12.4"
+ resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz#29e18e632e60e4e221d5810247852a63d7b2e410"
+ integrity sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA==
+ dependencies:
+ xtend "~3.0.0"
+
accepts@~1.3.5, accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
@@ -3543,7 +4330,7 @@ aes-js@3.0.0:
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d"
integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==
-aggregate-error@^3.0.0:
+aggregate-error@^3.0.0, aggregate-error@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
@@ -4039,7 +4826,7 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-base64-js@^1.0.2:
+base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -4069,6 +4856,11 @@ bech32@1.1.4:
resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==
+before-after-hook@^2.2.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c"
+ integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==
+
better-opn@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6"
@@ -4103,6 +4895,13 @@ bindings@^1.5.0:
dependencies:
file-uri-to-path "1.0.0"
+bl@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e"
+ integrity sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw==
+ dependencies:
+ readable-stream "~1.0.26"
+
bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
@@ -4141,6 +4940,11 @@ boolbase@^1.0.0:
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+bottleneck@^2.15.3:
+ version "2.19.5"
+ resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91"
+ integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==
+
boxen@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
@@ -4243,6 +5047,15 @@ browserify-des@^1.0.0:
inherits "^2.0.1"
safe-buffer "^5.1.2"
+browserify-fs@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-fs/-/browserify-fs-1.0.0.tgz#f075aa8a729d4d1716d066620e386fcc1311a96f"
+ integrity sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg==
+ dependencies:
+ level-filesystem "^1.0.1"
+ level-js "^2.1.3"
+ levelup "^0.18.2"
+
browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
version "4.1.0"
resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
@@ -4290,6 +5103,21 @@ bser@2.1.1:
dependencies:
node-int64 "^0.4.0"
+btoa-lite@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
+ integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==
+
+buffer-equal-constant-time@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+ integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==
+
+buffer-es6@^4.9.2:
+ version "4.9.3"
+ resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404"
+ integrity sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==
+
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
@@ -4309,6 +5137,14 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
+buffer@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
+ integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.2.1"
+
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -4641,6 +5477,11 @@ clone-deep@^4.0.1:
kind-of "^6.0.2"
shallow-clone "^3.0.0"
+clone@~0.1.9:
+ version "0.1.19"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85"
+ integrity sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw==
+
clsx@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.0.tgz#62937c6adfea771247c34b54d320fb99624f5702"
@@ -4768,7 +5609,7 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-concat-stream@^1.5.0:
+concat-stream@^1.4.4, concat-stream@^1.5.0:
version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -5138,6 +5979,13 @@ default-browser-id@^1.0.4:
meow "^3.1.0"
untildify "^2.0.0"
+deferred-leveldown@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4"
+ integrity sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng==
+ dependencies:
+ abstract-leveldown "~0.12.1"
+
define-lazy-prop@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
@@ -5193,6 +6041,11 @@ depd@2.0.0:
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+deprecation@^2.0.0, deprecation@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
+ integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
+
des.js@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
@@ -5389,6 +6242,13 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
+ecdsa-sig-formatter@1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
+ integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
+ dependencies:
+ safe-buffer "^5.0.1"
+
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -5472,7 +6332,7 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-errno@^0.1.3, errno@~0.1.7:
+errno@^0.1.1, errno@^0.1.3, errno@~0.1.1, errno@~0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
@@ -5776,6 +6636,11 @@ eslint-plugin-prettier@^4.2.1:
dependencies:
prettier-linter-helpers "^1.0.0"
+eslint-plugin-react-hooks@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
+ integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
+
eslint-plugin-react@^7.31.11:
version "7.32.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.1.tgz#88cdeb4065da8ca0b64e1274404f53a0f9890200"
@@ -5983,6 +6848,11 @@ estree-to-babel@^3.1.0:
"@babel/types" "^7.2.0"
c8 "^7.6.0"
+estree-walker@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
+ integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
+
estree-walker@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
@@ -6240,6 +7110,13 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
+faye-websocket@0.11.4:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
+ integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
+ dependencies:
+ websocket-driver ">=0.5.1"
+
fb-watchman@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
@@ -6364,6 +7241,38 @@ find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
+firebase@^9.17.1:
+ version "9.17.1"
+ resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.17.1.tgz#91c56fe9d9bf5ed1c405030e4fe8133c6069fd40"
+ integrity sha512-MSZaTRaaRLgDFLqoEnoPYK8zkLwQNvYeLZ3YSKdcQxG8hDifNO22ywS1cSA1ZCGHlQeOsDtfDwBejKcANf/RQw==
+ dependencies:
+ "@firebase/analytics" "0.9.3"
+ "@firebase/analytics-compat" "0.2.3"
+ "@firebase/app" "0.9.3"
+ "@firebase/app-check" "0.6.3"
+ "@firebase/app-check-compat" "0.3.3"
+ "@firebase/app-compat" "0.2.3"
+ "@firebase/app-types" "0.9.0"
+ "@firebase/auth" "0.21.3"
+ "@firebase/auth-compat" "0.3.3"
+ "@firebase/database" "0.14.3"
+ "@firebase/database-compat" "0.3.3"
+ "@firebase/firestore" "3.8.3"
+ "@firebase/firestore-compat" "0.3.3"
+ "@firebase/functions" "0.9.3"
+ "@firebase/functions-compat" "0.3.3"
+ "@firebase/installations" "0.6.3"
+ "@firebase/installations-compat" "0.2.3"
+ "@firebase/messaging" "0.12.3"
+ "@firebase/messaging-compat" "0.2.3"
+ "@firebase/performance" "0.6.3"
+ "@firebase/performance-compat" "0.2.3"
+ "@firebase/remote-config" "0.4.3"
+ "@firebase/remote-config-compat" "0.2.3"
+ "@firebase/storage" "0.11.1"
+ "@firebase/storage-compat" "0.3.1"
+ "@firebase/util" "1.9.2"
+
flat-cache@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
@@ -6404,6 +7313,11 @@ for-in@^1.0.2:
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
+foreach@~2.0.1:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e"
+ integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==
+
foreground-child@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53"
@@ -6510,6 +7424,11 @@ from2@^2.1.0:
inherits "^2.0.1"
readable-stream "^2.0.0"
+fromentries@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a"
+ integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==
+
fs-extra@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
@@ -6594,6 +7513,13 @@ functions-have-names@^1.2.2:
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+fwd-stream@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa"
+ integrity sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg==
+ dependencies:
+ readable-stream "~1.0.26-4"
+
gauge@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395"
@@ -7146,6 +8072,11 @@ http-errors@2.0.0:
statuses "2.0.1"
toidentifier "1.0.1"
+http-parser-js@>=0.5.1:
+ version "0.5.8"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3"
+ integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
+
http-signature@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
@@ -7179,7 +8110,17 @@ icss-utils@^4.0.0, icss-utils@^4.1.1:
dependencies:
postcss "^7.0.14"
-ieee754@^1.1.4:
+idb-wrapper@^1.5.0:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2"
+ integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==
+
+idb@7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.1.tgz#d2875b3a2f205d854ee307f6d196f246fea590a7"
+ integrity sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==
+
+ieee754@^1.1.4, ieee754@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -7229,6 +8170,11 @@ indent-string@^4.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+indexof@~0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==
+
infer-owner@^1.0.3, infer-owner@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
@@ -7545,6 +8491,11 @@ is-object@^1.0.1:
resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf"
integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==
+is-object@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7"
+ integrity sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ==
+
is-path-inside@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
@@ -7555,7 +8506,7 @@ is-plain-obj@^2.0.0:
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
-is-plain-object@5.0.0:
+is-plain-object@5.0.0, is-plain-object@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
@@ -7684,6 +8635,16 @@ is-wsl@^2.1.1, is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
+is@~0.2.6:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562"
+ integrity sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
+
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -7694,6 +8655,11 @@ isarray@^2.0.5:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+isbuffer@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b"
+ integrity sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g==
+
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -8005,6 +8971,16 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
+jsonwebtoken@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d"
+ integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==
+ dependencies:
+ jws "^3.2.2"
+ lodash "^4.17.21"
+ ms "^2.1.1"
+ semver "^7.3.8"
+
jsprim@^1.2.2:
version "1.4.2"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb"
@@ -8028,6 +9004,23 @@ junk@^3.1.0:
resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1"
integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==
+jwa@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
+ integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
+ dependencies:
+ buffer-equal-constant-time "1.0.1"
+ ecdsa-sig-formatter "1.0.11"
+ safe-buffer "^5.0.1"
+
+jws@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
+ integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
+ dependencies:
+ jwa "^1.4.1"
+ safe-buffer "^5.0.1"
+
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -8073,6 +9066,91 @@ lazy-universal-dotenv@^3.0.1:
dotenv "^8.0.0"
dotenv-expand "^5.1.0"
+level-blobs@^0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf"
+ integrity sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg==
+ dependencies:
+ level-peek "1.0.6"
+ once "^1.3.0"
+ readable-stream "^1.0.26-4"
+
+level-filesystem@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3"
+ integrity sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g==
+ dependencies:
+ concat-stream "^1.4.4"
+ errno "^0.1.1"
+ fwd-stream "^1.0.4"
+ level-blobs "^0.1.7"
+ level-peek "^1.0.6"
+ level-sublevel "^5.2.0"
+ octal "^1.0.0"
+ once "^1.3.0"
+ xtend "^2.2.0"
+
+level-fix-range@2.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548"
+ integrity sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA==
+ dependencies:
+ clone "~0.1.9"
+
+level-fix-range@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828"
+ integrity sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ==
+
+"level-hooks@>=4.4.0 <5":
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93"
+ integrity sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA==
+ dependencies:
+ string-range "~1.2"
+
+level-js@^2.1.3:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/level-js/-/level-js-2.2.4.tgz#bc055f4180635d4489b561c9486fa370e8c11697"
+ integrity sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ==
+ dependencies:
+ abstract-leveldown "~0.12.0"
+ idb-wrapper "^1.5.0"
+ isbuffer "~0.0.0"
+ ltgt "^2.1.2"
+ typedarray-to-buffer "~1.0.0"
+ xtend "~2.1.2"
+
+level-peek@1.0.6, level-peek@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f"
+ integrity sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ==
+ dependencies:
+ level-fix-range "~1.0.2"
+
+level-sublevel@^5.2.0:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a"
+ integrity sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA==
+ dependencies:
+ level-fix-range "2.0"
+ level-hooks ">=4.4.0 <5"
+ string-range "~1.2.1"
+ xtend "~2.0.4"
+
+levelup@^0.18.2:
+ version "0.18.6"
+ resolved "https://registry.yarnpkg.com/levelup/-/levelup-0.18.6.tgz#e6a01cb089616c8ecc0291c2a9bd3f0c44e3e5eb"
+ integrity sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q==
+ dependencies:
+ bl "~0.8.1"
+ deferred-leveldown "~0.2.0"
+ errno "~0.1.1"
+ prr "~0.0.0"
+ readable-stream "~1.0.26"
+ semver "~2.3.1"
+ xtend "~3.0.0"
+
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -8165,6 +9243,11 @@ lodash-es@^4.17.21:
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -8185,6 +9268,16 @@ lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+long@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+ integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+
+long@^5.0.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f"
+ integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==
+
loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -8221,11 +9314,23 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
+ltgt@^2.1.2:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5"
+ integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==
+
lz-string@^1.4.4:
version "1.4.4"
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==
+magic-string@^0.25.3:
+ version "0.25.9"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
magic-string@^0.26.1, magic-string@^0.26.7:
version "0.26.7"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
@@ -8734,6 +9839,13 @@ node-dir@^0.1.10:
dependencies:
minimatch "^3.0.2"
+node-fetch@2.6.7:
+ version "2.6.7"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
+ integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
+ dependencies:
+ whatwg-url "^5.0.0"
+
node-fetch@^2.6.1, node-fetch@^2.6.7:
version "2.6.8"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e"
@@ -8885,6 +9997,20 @@ object-keys@^1.1.1:
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+object-keys@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67"
+ integrity sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA==
+ dependencies:
+ foreach "~2.0.1"
+ indexof "~0.0.1"
+ is "~0.2.6"
+
+object-keys@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
+ integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==
+
object-visit@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
@@ -8964,6 +10090,25 @@ oblivious-set@1.0.0:
resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566"
integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==
+octal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b"
+ integrity sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ==
+
+octokit@^2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/octokit/-/octokit-2.0.14.tgz#e2057097a6c9cac3e7724a4365b450b7c694a6a4"
+ integrity sha512-z6cgZBFxirpFEQ1La8Lg83GCs5hOV2EPpkYYdjsGNbfQMv8qUGjq294MiRBCbZqLufviakGsPUxaNKe3JrPmsA==
+ dependencies:
+ "@octokit/app" "^13.1.1"
+ "@octokit/core" "^4.0.4"
+ "@octokit/oauth-app" "^4.0.6"
+ "@octokit/plugin-paginate-rest" "^6.0.0"
+ "@octokit/plugin-rest-endpoint-methods" "^7.0.0"
+ "@octokit/plugin-retry" "^4.0.3"
+ "@octokit/plugin-throttling" "^5.0.0"
+ "@octokit/types" "^9.0.0"
+
omggif@^1.0.5:
version "1.0.10"
resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19"
@@ -9596,6 +10741,11 @@ pretty-hrtime@^1.0.3:
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==
+process-es6@^0.11.2:
+ version "0.11.6"
+ resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778"
+ integrity sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==
+
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -9661,6 +10811,43 @@ property-information@^5.0.0, property-information@^5.3.0:
dependencies:
xtend "^4.0.0"
+protobufjs@^6.11.3:
+ version "6.11.3"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74"
+ integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/long" "^4.0.1"
+ "@types/node" ">=13.7.0"
+ long "^4.0.0"
+
+protobufjs@^7.0.0:
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.2.tgz#2af401d8c547b9476fb37ffc65782cf302342ca3"
+ integrity sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/node" ">=13.7.0"
+ long "^5.0.0"
+
proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
@@ -9669,6 +10856,11 @@ proxy-addr@~2.0.7:
forwarded "0.2.0"
ipaddr.js "1.9.1"
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+ integrity sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==
+
prr@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@@ -10007,6 +11199,16 @@ read-pkg@^5.2.0:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
+readable-stream@^1.0.26-4:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
@@ -10016,6 +11218,16 @@ readable-stream@^3.6.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+readable-stream@~1.0.26, readable-stream@~1.0.26-4:
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+ integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
readdirp@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
@@ -10345,6 +11557,39 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
+rollup-plugin-inject@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4"
+ integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==
+ dependencies:
+ estree-walker "^0.6.1"
+ magic-string "^0.25.3"
+ rollup-pluginutils "^2.8.1"
+
+rollup-plugin-node-builtins@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz#24a1fed4a43257b6b64371d8abc6ce1ab14597e9"
+ integrity sha512-bxdnJw8jIivr2yEyt8IZSGqZkygIJOGAWypXvHXnwKAbUcN4Q/dGTx7K0oAJryC/m6aq6tKutltSeXtuogU6sw==
+ dependencies:
+ browserify-fs "^1.0.0"
+ buffer-es6 "^4.9.2"
+ crypto-browserify "^3.11.0"
+ process-es6 "^0.11.2"
+
+rollup-plugin-node-polyfills@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz#53092a2744837164d5b8a28812ba5f3ff61109fd"
+ integrity sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==
+ dependencies:
+ rollup-plugin-inject "^3.0.0"
+
+rollup-pluginutils@^2.8.1:
+ version "2.8.2"
+ resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
+ integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
+ dependencies:
+ estree-walker "^0.6.1"
+
rollup@^2.79.1:
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
@@ -10381,7 +11626,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -10480,13 +11725,18 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
+semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8:
version "7.3.8"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
dependencies:
lru-cache "^6.0.0"
+semver@~2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52"
+ integrity sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==
+
send@0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
@@ -10890,6 +12140,11 @@ stream-shift@^1.0.0:
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+string-range@~1.2, string-range@~1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd"
+ integrity sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==
+
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@@ -10956,6 +12211,11 @@ string_decoder@^1.0.0, string_decoder@^1.1.1:
dependencies:
safe-buffer "~5.2.0"
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
+
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -11397,7 +12657,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3:
+tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
@@ -11479,6 +12739,11 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
+typedarray-to-buffer@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz#9bb8ba0e841fb3f4cf1fe7c245e9f3fa8a5fe99c"
+ integrity sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw==
+
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
@@ -11639,6 +12904,19 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0:
unist-util-is "^4.0.0"
unist-util-visit-parents "^3.0.0"
+universal-github-app-jwt@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz#d57cee49020662a95ca750a057e758a1a7190e6e"
+ integrity sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==
+ dependencies:
+ "@types/jsonwebtoken" "^9.0.0"
+ jsonwebtoken "^9.0.0"
+
+universal-user-agent@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
+ integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
+
universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
@@ -12019,6 +13297,20 @@ webpack@4:
watchpack "^2.4.0"
webpack-sources "^3.2.3"
+websocket-driver@>=0.5.1:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+ dependencies:
+ http-parser-js ">=0.5.1"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
@@ -12153,11 +13445,36 @@ x-default-browser@^0.4.0:
optionalDependencies:
default-browser-id "^1.0.4"
+xtend@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9"
+ integrity sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==
+
xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+xtend@~2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee"
+ integrity sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==
+ dependencies:
+ is-object "~0.1.2"
+ object-keys "~0.2.0"
+
+xtend@~2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
+ integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==
+ dependencies:
+ object-keys "~0.4.0"
+
+xtend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a"
+ integrity sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==
+
y18n@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"