mirror of
https://github.com/graphql-hive/console
synced 2026-04-21 14:37:17 +00:00
chore: enable noImplicitAny TypeScript rule (#94)
This commit is contained in:
parent
bffaf4a01d
commit
8a0e0cd300
29 changed files with 442 additions and 173 deletions
|
|
@ -68,7 +68,9 @@ generates:
|
|||
|
||||
# App
|
||||
./packages/web/app/src/graphql/index.ts:
|
||||
documents: ./packages/web/app/src/graphql/*.graphql
|
||||
documents:
|
||||
- ./packages/web/app/src/graphql/*.graphql
|
||||
- './packages/web/app/src/(components|lib)/**/*.ts(x)?'
|
||||
config:
|
||||
dedupeFragments: true
|
||||
scalars:
|
||||
|
|
|
|||
12
package.json
12
package.json
|
|
@ -39,12 +39,12 @@
|
|||
"@graphql-codegen/add": "3.1.1",
|
||||
"@graphql-codegen/cli": "2.6.2",
|
||||
"@graphql-codegen/gql-tag-operations-preset": "1.4.0",
|
||||
"@graphql-codegen/graphql-modules-preset": "2.3.11",
|
||||
"@graphql-codegen/typed-document-node": "2.2.11",
|
||||
"@graphql-codegen/typescript": "2.4.11",
|
||||
"@graphql-codegen/typescript-graphql-request": "4.4.8",
|
||||
"@graphql-codegen/typescript-operations": "2.4.0",
|
||||
"@graphql-codegen/typescript-resolvers": "2.6.4",
|
||||
"@graphql-codegen/graphql-modules-preset": "2.3.13",
|
||||
"@graphql-codegen/typed-document-node": "2.2.13",
|
||||
"@graphql-codegen/typescript": "2.5.1",
|
||||
"@graphql-codegen/typescript-graphql-request": "4.4.10",
|
||||
"@graphql-codegen/typescript-operations": "2.4.2",
|
||||
"@graphql-codegen/typescript-resolvers": "2.6.6",
|
||||
"@swc/core": "1.2.185",
|
||||
"@theguild/prettier-config": "0.0.1",
|
||||
"@types/jest": "27.5.1",
|
||||
|
|
|
|||
9
packages/web/app/modules.d.ts
vendored
9
packages/web/app/modules.d.ts
vendored
|
|
@ -1 +1,10 @@
|
|||
/* eslint-disable import/no-unused-modules */
|
||||
declare module 'node-crisp-api';
|
||||
declare module 'tailwindcss/colors';
|
||||
|
||||
declare module '@n1ru4l/react-time-ago' {
|
||||
export function TimeAgo(props: {
|
||||
date: Date;
|
||||
children: (args: { value: string }) => React.ReactElement;
|
||||
}): React.ReactElement;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,11 @@ const titleMap: Record<CriticalityLevel, string> = {
|
|||
Dangerous: 'Dangerous Changes',
|
||||
};
|
||||
|
||||
const criticalityLevelMapping = {
|
||||
[CriticalityLevel.Safe]: 'text-emerald-400',
|
||||
[CriticalityLevel.Dangerous]: 'text-yellow-400',
|
||||
} as Record<CriticalityLevel, string | undefined>;
|
||||
|
||||
const ChangesBlock = ({
|
||||
changes,
|
||||
criticality,
|
||||
|
|
@ -57,15 +62,7 @@ const ChangesBlock = ({
|
|||
<h2 className="mb-2 text-lg font-medium text-gray-900 dark:text-white">{titleMap[criticality]}</h2>
|
||||
<ul className="list-inside list-disc pl-3 text-base leading-relaxed">
|
||||
{filteredChanges.map((change, key) => (
|
||||
<li
|
||||
key={key}
|
||||
className={clsx(
|
||||
{
|
||||
[CriticalityLevel.Safe]: 'text-emerald-400',
|
||||
[CriticalityLevel.Dangerous]: 'text-yellow-400',
|
||||
}[criticality] || 'text-red-400'
|
||||
)}
|
||||
>
|
||||
<li key={key} className={clsx(criticalityLevelMapping[criticality] ?? 'text-red-400')}>
|
||||
<span className="text-gray-600 dark:text-white">{labelize(change.message)}</span>
|
||||
</li>
|
||||
))}
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ const SchemaServiceName = ({
|
|||
},
|
||||
});
|
||||
},
|
||||
[mutate]
|
||||
[mutate, organization.cleanId, project.cleanId, schema.service, target.cleanId, version]
|
||||
);
|
||||
|
||||
if ((project.type !== ProjectType.Federation && project.type !== ProjectType.Stitching) || !hasAccess) {
|
||||
|
|
@ -199,7 +199,7 @@ const SyncSchemaButton = ({
|
|||
setStatus('idle');
|
||||
}, 5000);
|
||||
});
|
||||
}, [mutate, setStatus]);
|
||||
}, [mutate, organization.cleanId, project.cleanId, target.cleanId]);
|
||||
|
||||
if (!target.hasSchema) {
|
||||
return null;
|
||||
|
|
@ -210,16 +210,18 @@ const SyncSchemaButton = ({
|
|||
<Button variant="primary" size="large" onClick={sync} disabled={status !== 'idle' || mutation.fetching}>
|
||||
{mutation.fetching
|
||||
? 'Syncing…'
|
||||
: {
|
||||
idle: 'Update CDN',
|
||||
error: 'Failed to synchronize',
|
||||
}[status] || 'CDN is up to date'}
|
||||
: FetchingMessages[status as keyof typeof FetchingMessages] ?? 'CDN is up to date'}
|
||||
<RefreshIcon className="ml-8 h-4 w-4" />
|
||||
</Button>
|
||||
</Tooltip>
|
||||
);
|
||||
};
|
||||
|
||||
const FetchingMessages = {
|
||||
idle: 'Update CDN',
|
||||
error: 'Failed to synchronize',
|
||||
} as const;
|
||||
|
||||
function SchemaView({
|
||||
organization,
|
||||
project,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { ReactElement, useCallback, useEffect, useState } from 'react';
|
||||
import { IconProps } from '@chakra-ui/react';
|
||||
import { useMutation, useQuery } from 'urql';
|
||||
|
||||
import { useUser } from '@/components/auth/AuthProvider';
|
||||
|
|
@ -18,6 +19,11 @@ import { OrganizationAccessScope, useOrganizationAccess } from '@/lib/access/org
|
|||
import { useNotifications } from '@/lib/hooks/use-notifications';
|
||||
import { useRouteSelector } from '@/lib/hooks/use-route-selector';
|
||||
|
||||
const authProviderIcons = {
|
||||
[AuthProvider.Github]: GitHubIcon,
|
||||
[AuthProvider.Google]: GoogleIcon,
|
||||
} as Record<AuthProvider, React.FC<IconProps> | undefined>;
|
||||
|
||||
const Page = ({ organization }: { organization: OrganizationFieldsFragment }) => {
|
||||
useOrganizationAccess({
|
||||
scope: OrganizationAccessScope.Members,
|
||||
|
|
@ -119,11 +125,7 @@ const Page = ({ organization }: { organization: OrganizationFieldsFragment }) =>
|
|||
</Button>
|
||||
</div>
|
||||
{members.map(node => {
|
||||
const IconToUse =
|
||||
{
|
||||
[AuthProvider.Github]: GitHubIcon,
|
||||
[AuthProvider.Google]: GoogleIcon,
|
||||
}[node.user.provider] || KeyIcon;
|
||||
const IconToUse = authProviderIcons[node.user.provider] ?? KeyIcon;
|
||||
|
||||
const isOwner = node.id === org.owner.id;
|
||||
const isMe = node.id === me.id;
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ if (process.env.NODE_ENV === 'development' && 'window' in globalThis) {
|
|||
|
||||
function App({ Component, pageProps }: AppProps): ReactElement {
|
||||
useEffect(() => {
|
||||
const handleRouteChange = url => {
|
||||
const handleRouteChange = (url: string) => {
|
||||
gtag.pageview(url);
|
||||
|
||||
const orgId = Router.query.orgId as string;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import 'regenerator-runtime/runtime';
|
||||
import Document, { Html, Head, Main, NextScript } from 'next/document';
|
||||
import Document, { Html, Head, Main, NextScript, DocumentContext } from 'next/document';
|
||||
import { extractCritical } from '@emotion/server';
|
||||
|
||||
export default class MyDocument extends Document {
|
||||
static async getInitialProps(ctx) {
|
||||
static async getInitialProps(ctx: DocumentContext) {
|
||||
const initialProps = await Document.getInitialProps(ctx);
|
||||
const page = await ctx.renderPage();
|
||||
const styles = extractCritical(page.html);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,15 @@ import type { NextPageContext } from 'next';
|
|||
|
||||
import * as Sentry from '@sentry/nextjs';
|
||||
|
||||
const MyError = ({ statusCode, hasGetInitialPropsRun, err }) => {
|
||||
const MyError = ({
|
||||
statusCode,
|
||||
hasGetInitialPropsRun,
|
||||
err,
|
||||
}: {
|
||||
statusCode: number;
|
||||
hasGetInitialPropsRun: boolean;
|
||||
err: Error;
|
||||
}) => {
|
||||
if (!hasGetInitialPropsRun && err) {
|
||||
// getInitialProps is not called in case of
|
||||
// https://github.com/vercel/next.js/issues/8592. As a workaround, we pass
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ async function graphql(req: NextApiRequest, res: NextApiResponse) {
|
|||
|
||||
if (isStream) {
|
||||
graphqlSpan.setHttpStatus(response.status);
|
||||
const headers = {};
|
||||
const headers: Record<string, string> = {};
|
||||
|
||||
response.headers.forEach((value, key) => {
|
||||
headers[key] = value;
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ export default function Manage() {
|
|||
<CheckboxGroup
|
||||
colorScheme="teal"
|
||||
size="sm"
|
||||
defaultValue={Object.keys(filters).filter(key => !!filters[key])}
|
||||
defaultValue={Object.keys(filters).filter((key: keyof typeof filters) => !!filters[key])}
|
||||
onChange={onFiltersChange}
|
||||
>
|
||||
<Checkbox tw="whitespace-nowrap align-middle" value="only-regular">
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ declare global {
|
|||
}
|
||||
|
||||
function identifyOnCrisp(user: UserProfile): void {
|
||||
const crisp = globalThis.$crisp;
|
||||
const crisp = globalThis.window.$crisp;
|
||||
if (crisp) {
|
||||
pushIfNotEmpty(crisp, 'user:email', user.email);
|
||||
pushIfNotEmpty(crisp, 'user:nickname', user.name || user.nickname);
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ const NavigationContext = React.createContext<{
|
|||
|
||||
export const useNavigation = () => React.useContext(NavigationContext);
|
||||
|
||||
export const NavigationProvider = ({ children }) => {
|
||||
export const NavigationProvider = ({ children }: { children: React.ReactNode }) => {
|
||||
const [state, setState] = React.useState<State>({});
|
||||
const [visible, setVisible] = React.useState<boolean>(true);
|
||||
const show = React.useCallback(() => setVisible(true), [setVisible]);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import React from 'react';
|
||||
import React, { ReactElement } from 'react';
|
||||
import tw, { styled } from 'twin.macro';
|
||||
import Link from 'next/link';
|
||||
import { FiTarget } from 'react-icons/fi';
|
||||
|
|
@ -39,7 +39,7 @@ const MenuLink = styled.a(({ active }: { active?: boolean }) => [
|
|||
|
||||
const Menu = {
|
||||
Root: tw.ul`flex flex-col px-2 py-4`,
|
||||
Title: ({ children, icon }) => {
|
||||
Title: ({ children, icon }: { children: string; icon: ReactElement }) => {
|
||||
return (
|
||||
<li tw="px-3 pb-2">
|
||||
<div tw="flex flex-row items-center h-8">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,23 @@
|
|||
import { OrganizationActivitiesQuery, ProjectActivitiesQuery, TargetActivitiesQuery } from '@/graphql';
|
||||
import { gql } from 'urql';
|
||||
|
||||
export type ActivityNode =
|
||||
| OrganizationActivitiesQuery['organizationActivities']['nodes'][0]
|
||||
| ProjectActivitiesQuery['projectActivities']['nodes'][0]
|
||||
| TargetActivitiesQuery['targetActivities']['nodes'][0];
|
||||
export const ActivityNode = gql(/* GraphQL */ `
|
||||
fragment ActivityNode on Activity {
|
||||
id
|
||||
type
|
||||
createdAt
|
||||
...OrganizationPlanChange
|
||||
...OrganizationCreated
|
||||
...OrganizationNameUpdated
|
||||
...OrganizationIdUpdated
|
||||
...MemberAdded
|
||||
...MemberDeleted
|
||||
...ProjectCreated
|
||||
...ProjectDeleted
|
||||
...ProjectNameUpdated
|
||||
...ProjectIdUpdated
|
||||
...TargetCreated
|
||||
...TargetDeleted
|
||||
...TargetNameUpdated
|
||||
...TargetIdUpdated
|
||||
}
|
||||
`);
|
||||
|
|
|
|||
|
|
@ -42,7 +42,10 @@ export const OrganizationSwitcher: React.FC<{
|
|||
};
|
||||
}
|
||||
|
||||
const menu = {
|
||||
const menu: {
|
||||
personal: Array<{ key: string; label: string }>;
|
||||
organizations: Array<{ key: string; label: string }>;
|
||||
} = {
|
||||
personal: [],
|
||||
organizations: [],
|
||||
};
|
||||
|
|
|
|||
|
|
@ -121,6 +121,11 @@ const Plan = (plan: {
|
|||
);
|
||||
};
|
||||
|
||||
const billingPlanLookUpMap = {
|
||||
[BillingPlanType.Hobby]: 'Free',
|
||||
[BillingPlanType.Enterprise]: 'Contact Us',
|
||||
} as Record<BillingPlanType, string | undefined>;
|
||||
|
||||
export const BillingPlanPicker = ({
|
||||
value,
|
||||
activePlan,
|
||||
|
|
@ -139,12 +144,7 @@ export const BillingPlanPicker = ({
|
|||
<Plan
|
||||
key={plan.id}
|
||||
name={plan.name}
|
||||
price={
|
||||
{
|
||||
[BillingPlanType.Hobby]: 'Free',
|
||||
[BillingPlanType.Enterprise]: 'Contact Us',
|
||||
}[plan.planType] || plan.basePrice
|
||||
}
|
||||
price={billingPlanLookUpMap[plan.planType] ?? plan.basePrice}
|
||||
isActive={activePlan === plan.planType}
|
||||
features={planCollection[plan.planType].features}
|
||||
description={planCollection[plan.planType].description}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ function fullSeries(
|
|||
from: string;
|
||||
to: string;
|
||||
}
|
||||
) {
|
||||
): Array<[string, number]> {
|
||||
if (!data.length) {
|
||||
return createEmptySeries({ interval, period });
|
||||
}
|
||||
|
|
@ -72,7 +72,7 @@ function fullSeries(
|
|||
}
|
||||
|
||||
// Instead of creating a new array, we could move things around but this is easier
|
||||
const newData = [];
|
||||
const newData: Array<[string, number]> = [];
|
||||
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
const current = data[i];
|
||||
|
|
@ -100,6 +100,14 @@ function fullSeries(
|
|||
return newData;
|
||||
}
|
||||
|
||||
function times<T>(amount: number, f: (index: number) => T) {
|
||||
const items: Array<T> = [];
|
||||
for (const i = 0; i < amount; amount++) {
|
||||
items[i] = f(i);
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
function createEmptySeries({
|
||||
interval,
|
||||
period,
|
||||
|
|
@ -114,9 +122,7 @@ function createEmptySeries({
|
|||
const endAt = new Date(period.to).getTime();
|
||||
|
||||
const steps = Math.floor((endAt - startAt) / interval);
|
||||
return Array(steps)
|
||||
.fill(0)
|
||||
.map((_, i) => [new Date(startAt + i * interval).toISOString(), 0]);
|
||||
return times(steps, i => [new Date(startAt + i * interval).toISOString(), 0]);
|
||||
}
|
||||
|
||||
function useChartStyles() {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { ReactElement } from 'react';
|
||||
import React, { ReactElement, ReactNode } from 'react';
|
||||
import NextLink from 'next/link';
|
||||
import { useQuery } from 'urql';
|
||||
import { DocumentType, useQuery } from 'urql';
|
||||
|
||||
import { ActivityNode } from '@/components/common/activities/common';
|
||||
import { Heading, Link, Skeleton, TimeAgo } from '@/components/v2';
|
||||
|
|
@ -20,7 +20,7 @@ import { useRouteSelector } from '@/lib/hooks/use-route-selector';
|
|||
const organizationActivitiesDocument = fixDuplicatedFragments(OrganizationActivitiesDocument);
|
||||
|
||||
export const getActivity = (
|
||||
activity: ActivityNode
|
||||
activity: DocumentType<typeof ActivityNode>
|
||||
): {
|
||||
icon: ReactElement;
|
||||
content: ReactElement | string;
|
||||
|
|
@ -197,7 +197,7 @@ export const getActivity = (
|
|||
}
|
||||
};
|
||||
|
||||
export const Activities = (props): ReactElement => {
|
||||
export const Activities = (props: React.ComponentProps<'div'>): ReactElement => {
|
||||
const router = useRouteSelector();
|
||||
const [organizationActivitiesQuery] = useQuery({
|
||||
query: organizationActivitiesDocument,
|
||||
|
|
@ -216,38 +216,22 @@ export const Activities = (props): ReactElement => {
|
|||
return (
|
||||
<div className="w-[450px] shrink-0" {...props}>
|
||||
<Heading>Recent Activity</Heading>
|
||||
{(!activities || activities.total !== 0) && (
|
||||
<ul className="mt-4 w-full break-all rounded-md border border-gray-800 p-5">
|
||||
{(activities ? activities.nodes : Array.from({ length: 3 }, (_, id) => ({ id }))).map(activity => {
|
||||
const { content, icon } = getActivity(activity);
|
||||
<ul className="mt-4 w-full break-all rounded-md border border-gray-800 p-5">
|
||||
{isLoading || !activities?.nodes
|
||||
? new Array(3).fill(null).map((_, index) => {
|
||||
<ActivityContainer key={index}>
|
||||
<Skeleton circle visible className="h-7 w-7 shrink-0" />
|
||||
<div className="grow">
|
||||
<Skeleton visible className="mb-2 h-3 w-2/5" />
|
||||
<Skeleton visible className="h-3 w-full" />
|
||||
</div>
|
||||
</ActivityContainer>;
|
||||
})
|
||||
: activities.nodes.map(activity => {
|
||||
const { content, icon } = getActivity(activity);
|
||||
|
||||
return (
|
||||
<li
|
||||
key={activity.id}
|
||||
className="
|
||||
flex
|
||||
items-center
|
||||
gap-2.5
|
||||
border-b
|
||||
border-gray-800
|
||||
py-5
|
||||
text-xs
|
||||
text-gray-500
|
||||
first:pt-0
|
||||
last:border-b-0
|
||||
last:pb-0
|
||||
first-of-type:mt-0
|
||||
"
|
||||
>
|
||||
{isLoading ? (
|
||||
<>
|
||||
<Skeleton circle visible className="h-7 w-7 shrink-0" />
|
||||
<div className="grow">
|
||||
<Skeleton visible className="mb-2 h-3 w-2/5" />
|
||||
<Skeleton visible className="h-3 w-full" />
|
||||
</div>
|
||||
</>
|
||||
) : (
|
||||
return (
|
||||
<ActivityContainer key={activity.id}>
|
||||
<>
|
||||
<div className="self-center p-1">{icon}</div>
|
||||
<div className="grow">
|
||||
|
|
@ -269,12 +253,31 @@ export const Activities = (props): ReactElement => {
|
|||
</div>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
</ul>
|
||||
)}
|
||||
</ActivityContainer>
|
||||
);
|
||||
})}
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
const ActivityContainer = (props: { children: ReactNode }) => (
|
||||
<li
|
||||
className="
|
||||
flex
|
||||
items-center
|
||||
gap-2.5
|
||||
border-b
|
||||
border-gray-800
|
||||
py-5
|
||||
text-xs
|
||||
text-gray-500
|
||||
first:pt-0
|
||||
last:border-b-0
|
||||
last:pb-0
|
||||
first-of-type:mt-0
|
||||
"
|
||||
>
|
||||
{props.children}
|
||||
</li>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,11 @@ import { Button, CopyValue, Heading, Link, Modal, Tag } from '@/components/v2';
|
|||
import { CreateCdnTokenDocument, ProjectDocument, ProjectType } from '@/graphql';
|
||||
import { useRouteSelector } from '@/lib/hooks/use-route-selector';
|
||||
|
||||
const taxonomy = {
|
||||
[ProjectType.Federation]: 'supergraph schema',
|
||||
[ProjectType.Stitching]: 'services',
|
||||
} as Record<ProjectType, string | undefined>;
|
||||
|
||||
export const ConnectSchemaModal = ({
|
||||
isOpen,
|
||||
toggleModalOpen,
|
||||
|
|
@ -56,11 +61,7 @@ export const ConnectSchemaModal = ({
|
|||
<Heading>Generating access...</Heading>
|
||||
<p className="text-center">
|
||||
Hive is now generating an authentication token and an URL you can use to fetch your{' '}
|
||||
{{
|
||||
[ProjectType.Federation]: 'supergraph schema',
|
||||
[ProjectType.Stitching]: 'services',
|
||||
}[project.type] || 'schema'}
|
||||
.
|
||||
{taxonomy[project.type] ?? 'schema'}.
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
|
@ -69,11 +70,8 @@ export const ConnectSchemaModal = ({
|
|||
<>
|
||||
<p className="text-sm text-gray-500">
|
||||
With high-availability and multi-zone CDN service based on Cloudflare, Hive allows you to access the
|
||||
{{
|
||||
[ProjectType.Federation]: 'supergraph',
|
||||
[ProjectType.Stitching]: 'list of services',
|
||||
}[project.type] || 'schema'}{' '}
|
||||
of your API, through a secured external service, that's always up regardless of Hive.
|
||||
{taxonomy[project.type] ?? 'schema'} of your API, through a secured external service, that's always up
|
||||
regardless of Hive.
|
||||
</p>
|
||||
<span className="text-sm text-gray-500">You can use the following endpoint:</span>
|
||||
<CopyValue value={mutation.data.createCdnToken.url} />
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
import { ReactElement } from 'react';
|
||||
import clsx from 'clsx';
|
||||
|
||||
type Column = { key: string; align?: 'right'; width?: 'auto' };
|
||||
type Column<TKey extends string> = { key: TKey; align?: 'right'; width?: 'auto' };
|
||||
|
||||
export const Table = ({
|
||||
export function Table<TColumns extends string>({
|
||||
dataSource,
|
||||
columns,
|
||||
}: {
|
||||
dataSource?: { id: string }[];
|
||||
columns: Column[] | ReadonlyArray<Column>;
|
||||
}): ReactElement => {
|
||||
dataSource?: Array<{ id: string } & Record<TColumns, ReactElement | string>>;
|
||||
columns: Array<Column<TColumns>> | ReadonlyArray<Column<TColumns>>;
|
||||
}): ReactElement {
|
||||
return (
|
||||
<table className="w-full">
|
||||
<tbody>
|
||||
|
|
@ -32,4 +32,4 @@ export const Table = ({
|
|||
</tbody>
|
||||
</table>
|
||||
);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,27 +1,23 @@
|
|||
import { ReactElement, ReactNode } from 'react';
|
||||
import clsx from 'clsx';
|
||||
|
||||
const colors = {
|
||||
green: 'bg-green-500/10 text-green-500',
|
||||
yellow: 'bg-yellow-500/10 text-yellow-500',
|
||||
gray: 'bg-gray-500/10 text-gray-500',
|
||||
} as const;
|
||||
|
||||
export const Tag = ({
|
||||
children,
|
||||
color = 'gray',
|
||||
className,
|
||||
}: {
|
||||
color?: 'red' | 'green' | 'yellow' | 'gray';
|
||||
color?: 'green' | 'yellow' | 'gray';
|
||||
className?: string;
|
||||
children: ReactNode;
|
||||
}): ReactElement => {
|
||||
return (
|
||||
<span
|
||||
className={clsx(
|
||||
'inline-flex items-center gap-x-1 rounded-sm p-2',
|
||||
{
|
||||
green: 'bg-green-500/10 text-green-500',
|
||||
yellow: 'bg-yellow-500/10 text-yellow-500',
|
||||
gray: 'bg-gray-500/10 text-gray-500',
|
||||
}[color],
|
||||
className
|
||||
)}
|
||||
>
|
||||
<span className={clsx('inline-flex items-center gap-x-1 rounded-sm p-2', colors[color], className)}>
|
||||
{children}
|
||||
</span>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -4,20 +4,7 @@ query organizationActivities($selector: OrganizationActivitiesSelector!) {
|
|||
__typename
|
||||
id
|
||||
createdAt
|
||||
...OrganizationPlanChange
|
||||
...OrganizationCreated
|
||||
...OrganizationNameUpdated
|
||||
...OrganizationIdUpdated
|
||||
...MemberAdded
|
||||
...MemberDeleted
|
||||
...ProjectCreated
|
||||
...ProjectDeleted
|
||||
...ProjectNameUpdated
|
||||
...ProjectIdUpdated
|
||||
...TargetCreated
|
||||
...TargetDeleted
|
||||
...TargetNameUpdated
|
||||
...TargetIdUpdated
|
||||
...ActivityNode
|
||||
}
|
||||
total
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,14 +4,7 @@ query projectActivities($selector: ProjectActivitiesSelector!) {
|
|||
__typename
|
||||
id
|
||||
createdAt
|
||||
...ProjectCreated
|
||||
...ProjectDeleted
|
||||
...ProjectNameUpdated
|
||||
...ProjectIdUpdated
|
||||
...TargetCreated
|
||||
...TargetDeleted
|
||||
...TargetNameUpdated
|
||||
...TargetIdUpdated
|
||||
...ActivityNode
|
||||
}
|
||||
total
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,10 +4,7 @@ query targetActivities($selector: TargetActivitiesSelector!) {
|
|||
__typename
|
||||
id
|
||||
createdAt
|
||||
...TargetCreated
|
||||
...TargetDeleted
|
||||
...TargetNameUpdated
|
||||
...TargetIdUpdated
|
||||
...ActivityNode
|
||||
}
|
||||
total
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import type { NextWebVitalsMetric } from 'next/app';
|
||||
import { GA_TRACKING_ID } from '@/constants';
|
||||
|
||||
export const pageview = (url): void => {
|
||||
export const pageview = (url: string): void => {
|
||||
if (!GA_TRACKING_ID) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ export const pageview = (url): void => {
|
|||
};
|
||||
|
||||
// https://developers.google.com/analytics/devguides/collection/gtagjs/events
|
||||
export const event = ({ action, category, label, value }): void => {
|
||||
export const event = ({ action, category, label, value }: any): void => {
|
||||
if (!GA_TRACKING_ID) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { captureException } from '@sentry/nextjs';
|
|||
import { Mutation } from './urql-cache';
|
||||
import { networkStatusExchange } from './urql-exchanges/state';
|
||||
|
||||
const noKey = () => null;
|
||||
const noKey = (): null => null;
|
||||
|
||||
const SERVER_BASE_PATH = '/api/proxy';
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
"noImplicitThis": true,
|
||||
"strictBindCallApply": true,
|
||||
"alwaysStrict": true,
|
||||
"noImplicitAny": true,
|
||||
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noEmit": true,
|
||||
|
|
|
|||
290
yarn.lock
290
yarn.lock
|
|
@ -226,6 +226,29 @@
|
|||
version "0.0.0"
|
||||
uid ""
|
||||
|
||||
"@ardatan/relay-compiler@12.0.0":
|
||||
version "12.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz#2e4cca43088e807adc63450e8cab037020e91106"
|
||||
integrity sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==
|
||||
dependencies:
|
||||
"@babel/core" "^7.14.0"
|
||||
"@babel/generator" "^7.14.0"
|
||||
"@babel/parser" "^7.14.0"
|
||||
"@babel/runtime" "^7.0.0"
|
||||
"@babel/traverse" "^7.14.0"
|
||||
"@babel/types" "^7.0.0"
|
||||
babel-preset-fbjs "^3.4.0"
|
||||
chalk "^4.0.0"
|
||||
fb-watchman "^2.0.0"
|
||||
fbjs "^3.0.0"
|
||||
glob "^7.1.1"
|
||||
immutable "~3.7.6"
|
||||
invariant "^2.2.4"
|
||||
nullthrows "^1.1.1"
|
||||
relay-runtime "12.0.0"
|
||||
signedsource "^1.0.0"
|
||||
yargs "^15.3.1"
|
||||
|
||||
"@auth0/nextjs-auth0@1.6.1":
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@auth0/nextjs-auth0/-/nextjs-auth0-1.6.1.tgz#9d187e75964c46e1cc9065fd01840de8a9f5a2ef"
|
||||
|
|
@ -276,6 +299,36 @@
|
|||
json5 "^2.2.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/core@^7.14.0":
|
||||
version "7.18.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000"
|
||||
integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.1.0"
|
||||
"@babel/code-frame" "^7.16.7"
|
||||
"@babel/generator" "^7.18.2"
|
||||
"@babel/helper-compilation-targets" "^7.18.2"
|
||||
"@babel/helper-module-transforms" "^7.18.0"
|
||||
"@babel/helpers" "^7.18.2"
|
||||
"@babel/parser" "^7.18.5"
|
||||
"@babel/template" "^7.16.7"
|
||||
"@babel/traverse" "^7.18.5"
|
||||
"@babel/types" "^7.18.4"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.2"
|
||||
json5 "^2.2.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/generator@^7.14.0", "@babel/generator@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d"
|
||||
integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==
|
||||
dependencies:
|
||||
"@babel/types" "^7.18.2"
|
||||
"@jridgewell/gen-mapping" "^0.3.0"
|
||||
jsesc "^2.5.1"
|
||||
|
||||
"@babel/generator@^7.17.10", "@babel/generator@^7.5.0", "@babel/generator@^7.7.2":
|
||||
version "7.17.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189"
|
||||
|
|
@ -302,6 +355,16 @@
|
|||
browserslist "^4.20.2"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b"
|
||||
integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.17.10"
|
||||
"@babel/helper-validator-option" "^7.16.7"
|
||||
browserslist "^4.20.2"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/helper-create-class-features-plugin@^7.13.0":
|
||||
version "7.14.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz#1fe11b376f3c41650ad9fedc665b0068722ea76c"
|
||||
|
|
@ -321,6 +384,11 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.16.7"
|
||||
|
||||
"@babel/helper-environment-visitor@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd"
|
||||
integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==
|
||||
|
||||
"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.17.9":
|
||||
version "7.17.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12"
|
||||
|
|
@ -364,6 +432,20 @@
|
|||
"@babel/traverse" "^7.17.3"
|
||||
"@babel/types" "^7.17.0"
|
||||
|
||||
"@babel/helper-module-transforms@^7.18.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd"
|
||||
integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==
|
||||
dependencies:
|
||||
"@babel/helper-environment-visitor" "^7.16.7"
|
||||
"@babel/helper-module-imports" "^7.16.7"
|
||||
"@babel/helper-simple-access" "^7.17.7"
|
||||
"@babel/helper-split-export-declaration" "^7.16.7"
|
||||
"@babel/helper-validator-identifier" "^7.16.7"
|
||||
"@babel/template" "^7.16.7"
|
||||
"@babel/traverse" "^7.18.0"
|
||||
"@babel/types" "^7.18.0"
|
||||
|
||||
"@babel/helper-optimise-call-expression@^7.12.13", "@babel/helper-optimise-call-expression@^7.15.4":
|
||||
version "7.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171"
|
||||
|
|
@ -426,6 +508,15 @@
|
|||
"@babel/traverse" "^7.17.9"
|
||||
"@babel/types" "^7.17.0"
|
||||
|
||||
"@babel/helpers@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384"
|
||||
integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==
|
||||
dependencies:
|
||||
"@babel/template" "^7.16.7"
|
||||
"@babel/traverse" "^7.18.2"
|
||||
"@babel/types" "^7.18.2"
|
||||
|
||||
"@babel/highlight@^7.16.7":
|
||||
version "7.16.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
|
||||
|
|
@ -440,6 +531,11 @@
|
|||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78"
|
||||
integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==
|
||||
|
||||
"@babel/parser@^7.14.0", "@babel/parser@^7.18.5":
|
||||
version "7.18.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c"
|
||||
integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==
|
||||
|
||||
"@babel/plugin-proposal-class-properties@^7.0.0":
|
||||
version "7.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37"
|
||||
|
|
@ -761,6 +857,22 @@
|
|||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/traverse@^7.14.0", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5":
|
||||
version "7.18.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd"
|
||||
integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.16.7"
|
||||
"@babel/generator" "^7.18.2"
|
||||
"@babel/helper-environment-visitor" "^7.18.2"
|
||||
"@babel/helper-function-name" "^7.17.9"
|
||||
"@babel/helper-hoist-variables" "^7.16.7"
|
||||
"@babel/helper-split-export-declaration" "^7.16.7"
|
||||
"@babel/parser" "^7.18.5"
|
||||
"@babel/types" "^7.18.4"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.13.12", "@babel/types@^7.15.4", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
|
||||
version "7.17.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4"
|
||||
|
|
@ -769,6 +881,14 @@
|
|||
"@babel/helper-validator-identifier" "^7.16.7"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4":
|
||||
version "7.18.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354"
|
||||
integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.16.7"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@bcoe/v8-coverage@^0.2.3":
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||
|
|
@ -1929,14 +2049,14 @@
|
|||
auto-bind "~4.0.0"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/graphql-modules-preset@2.3.11":
|
||||
version "2.3.11"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.11.tgz#ba3c8435badfd6ffea0906a53e3fcb20e00602d9"
|
||||
integrity sha512-nhh2C7Aq98pbVkD9gwwTIBO8GYbw13ztaaJn11YW4X515OcxYbrDTldqoNerBNlQvghiYYSSW/hUGll9f5sIvg==
|
||||
"@graphql-codegen/graphql-modules-preset@2.3.13":
|
||||
version "2.3.13"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.13.tgz#181ab8acacf376c38d572d6d50aad609aba3cd3d"
|
||||
integrity sha512-hi/vKUrVa62d5W2euSapUqTNf2ysfq4RjRc0Pcren7zPqMzD3QgbYRLjDtPsXXQntZDmDxoJVd1BEzjpPGD2/g==
|
||||
dependencies:
|
||||
"@graphql-codegen/plugin-helpers" "^2.4.0"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.8.0"
|
||||
"@graphql-tools/utils" "8.6.9"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.9.1"
|
||||
"@graphql-tools/utils" "8.6.13"
|
||||
change-case-all "1.0.14"
|
||||
parse-filepath "^1.0.2"
|
||||
tslib "~2.4.0"
|
||||
|
|
@ -1962,7 +2082,18 @@
|
|||
"@graphql-tools/utils" "^8.1.1"
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-codegen/typed-document-node@2.2.11", "@graphql-codegen/typed-document-node@^2.2.9":
|
||||
"@graphql-codegen/typed-document-node@2.2.13":
|
||||
version "2.2.13"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typed-document-node/-/typed-document-node-2.2.13.tgz#0e85f2f556a5f5962bb44d1ffbca7d1e1d1d75fd"
|
||||
integrity sha512-o3q63smj9hmfCF3z/uwekddsHy0xrR5Rso/Yv83sdN54EKQ4QbHRE340kVaSyimiDK9inUdBM2y6WOmXrvioaw==
|
||||
dependencies:
|
||||
"@graphql-codegen/plugin-helpers" "^2.4.0"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.9.1"
|
||||
auto-bind "~4.0.0"
|
||||
change-case-all "1.0.14"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/typed-document-node@^2.2.9":
|
||||
version "2.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typed-document-node/-/typed-document-node-2.2.11.tgz#07a935faef9f91fb371df60ee2a8ccc2e92554d0"
|
||||
integrity sha512-AHBfw6gHSs0XOuIWsLZwtSgmk+3XqUCyPfXCeDE3Z9MNx/EYYY6lr8cFcsFnR3ASotcVAsVoLTfB4YS4NqgqdA==
|
||||
|
|
@ -1973,17 +2104,28 @@
|
|||
change-case-all "1.0.14"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/typescript-graphql-request@4.4.8":
|
||||
version "4.4.8"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-graphql-request/-/typescript-graphql-request-4.4.8.tgz#d2892834db37f0aaecbbe38a812802b61bf96cba"
|
||||
integrity sha512-4PuFMJCGhS/sY8n3ePr1JD349NUw5H6zySAJIvchVatPAbanI6swGKvu/YElkBYvx0l+S17TxTylAUui5N0QyA==
|
||||
"@graphql-codegen/typescript-graphql-request@4.4.10":
|
||||
version "4.4.10"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-graphql-request/-/typescript-graphql-request-4.4.10.tgz#8ffab15dfdf1143eae01759e4fb99430051821b0"
|
||||
integrity sha512-kKbVKAANDZjCQdFWQRDV49ItIKBWUQgiBbbgwE3DDwVwacQS40ggTtvh24J2sO/vjJBU+JqzD8IJS67+Euzrmg==
|
||||
dependencies:
|
||||
"@graphql-codegen/plugin-helpers" "^2.4.0"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.8.0"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.9.1"
|
||||
auto-bind "~4.0.0"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/typescript-operations@2.4.0", "@graphql-codegen/typescript-operations@^2.3.6":
|
||||
"@graphql-codegen/typescript-operations@2.4.2":
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.4.2.tgz#374da9f2ec0b60dee0ebbc22c6b885f0d7f3aacb"
|
||||
integrity sha512-0/Jk+FxJVOdznSJ+G3KKPbMr2gK67yQetUAUS0FzV9FptVDFkklK/BazKqJJE5dNrj9ubuI2BafXPzSTN4M2Ug==
|
||||
dependencies:
|
||||
"@graphql-codegen/plugin-helpers" "^2.4.0"
|
||||
"@graphql-codegen/typescript" "^2.5.1"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.9.1"
|
||||
auto-bind "~4.0.0"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/typescript-operations@^2.3.6":
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.4.0.tgz#07f371bcda31ecb8edc4c742442014b21c11d53b"
|
||||
integrity sha512-vJ15FLyWchuO2Xkp6uz7jJOdChiay7P9KJKFDILx/JTwjinU1fFa7iOvyeTvslqiUPxgsXthR5izdY+E5IyLkQ==
|
||||
|
|
@ -1994,19 +2136,30 @@
|
|||
auto-bind "~4.0.0"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/typescript-resolvers@2.6.4":
|
||||
version "2.6.4"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.6.4.tgz#857e24279603f4e8f7293385a90a1f2498eb672e"
|
||||
integrity sha512-BTV5q9d7V+4mVyYRnE8N7HyArmvDbUEY5JwyV94jhlN0AOq2zKQBrs8MRvx8v1VenjTGV+PlnDpF3aEtQu8o+g==
|
||||
"@graphql-codegen/typescript-resolvers@2.6.6":
|
||||
version "2.6.6"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.6.6.tgz#c42cabbc05103b44a29df5ac4a015f2a8e8ab4aa"
|
||||
integrity sha512-6yVU0rojI64qZbAtGy4+5kA1xJbolcWbefd4y/nwLOn2g99QBHt9nQRCVl96rppfBNinLPkiJCtQ0thOHu9glg==
|
||||
dependencies:
|
||||
"@graphql-codegen/plugin-helpers" "^2.4.0"
|
||||
"@graphql-codegen/typescript" "^2.4.11"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.8.0"
|
||||
"@graphql-codegen/typescript" "^2.5.1"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.9.1"
|
||||
"@graphql-tools/utils" "^8.1.1"
|
||||
auto-bind "~4.0.0"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/typescript@2.4.11", "@graphql-codegen/typescript@^2.4.11", "@graphql-codegen/typescript@^2.4.9":
|
||||
"@graphql-codegen/typescript@2.5.1", "@graphql-codegen/typescript@^2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.5.1.tgz#5131485ff3ac83d5bc0aae11a2af0c9bdc08854c"
|
||||
integrity sha512-D/9V2VfVIE4Mu5UiMGQtxyFU5xe1ZkAZi8g/IsqymW8rqlhTwsGhtk4JR55qPfOYxR8G94RJSJpzgNakRneytw==
|
||||
dependencies:
|
||||
"@graphql-codegen/plugin-helpers" "^2.4.0"
|
||||
"@graphql-codegen/schema-ast" "^2.4.1"
|
||||
"@graphql-codegen/visitor-plugin-common" "2.9.1"
|
||||
auto-bind "~4.0.0"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/typescript@^2.4.11", "@graphql-codegen/typescript@^2.4.9":
|
||||
version "2.4.11"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.4.11.tgz#b9d8bddaeb79ff4a85e1d0f9c774afba7423177c"
|
||||
integrity sha512-K3oDLPJRH9Wgpg9TOvb7L+xrJZ8HxkIzV2umqGn54c+8DQjvnRFBIYRO0THgUBMnEauE2sEy6RZkGHGfgQUruA==
|
||||
|
|
@ -2033,6 +2186,22 @@
|
|||
parse-filepath "^1.0.2"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-codegen/visitor-plugin-common@2.9.1":
|
||||
version "2.9.1"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.9.1.tgz#17dfe33e19e846e7475ab9d4ff43de5130e18397"
|
||||
integrity sha512-j9eGOSGt+sJcwv0ijhZiQ2cF/0ponscekNVoF+vHdOT4RB0qgOQxykPBk6EbKxIHECnkdV8ARdPVTA21A93/QQ==
|
||||
dependencies:
|
||||
"@graphql-codegen/plugin-helpers" "^2.4.0"
|
||||
"@graphql-tools/optimize" "^1.0.1"
|
||||
"@graphql-tools/relay-operation-optimizer" "^6.4.14"
|
||||
"@graphql-tools/utils" "^8.3.0"
|
||||
auto-bind "~4.0.0"
|
||||
change-case-all "1.0.14"
|
||||
dependency-graph "^0.11.0"
|
||||
graphql-tag "^2.11.0"
|
||||
parse-filepath "^1.0.2"
|
||||
tslib "~2.4.0"
|
||||
|
||||
"@graphql-inspector/core@3.1.2", "@graphql-inspector/core@~3.1.2":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-inspector/core/-/core-3.1.2.tgz#9ef2a72601a77cb0dcc09c5fbd870413bc687ad8"
|
||||
|
|
@ -2248,6 +2417,15 @@
|
|||
relay-compiler "11.0.2"
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-tools/relay-operation-optimizer@^6.4.14":
|
||||
version "6.4.15"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.4.15.tgz#08a0be5f9effc8c645c46d3ab60624e639b7101d"
|
||||
integrity sha512-UVduEV/hjTgE58LLJgbCvYMgohHa3dL2Nu5chuKLPVpgdjpZT3OrSCbGBE0/Rl8TBX59gTdK7IAsQhfsvwn5TQ==
|
||||
dependencies:
|
||||
"@ardatan/relay-compiler" "12.0.0"
|
||||
"@graphql-tools/utils" "8.7.0"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@graphql-tools/schema@8.2.0":
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.2.0.tgz#ae75cbb2df6cee9ed6d89fce56be467ab23758dc"
|
||||
|
|
@ -2318,6 +2496,13 @@
|
|||
dependencies:
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-tools/utils@8.6.13":
|
||||
version "8.6.13"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.6.13.tgz#2b4fb7f9f8a29b25eecd44551fb95974de32f969"
|
||||
integrity sha512-FiVqrQzj4cgz0HcZ3CxUs8NtBGPZFpmsVyIgwmL6YCwIhjJQnT72h8G3/vk5zVfjfesht85YGp0inWWuoCKWzg==
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@graphql-tools/utils@8.6.9", "@graphql-tools/utils@^8.0.0", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.2.0", "@graphql-tools/utils@^8.2.2", "@graphql-tools/utils@^8.2.3", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.6.0":
|
||||
version "8.6.9"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.6.9.tgz#fe1b81df29c9418b41b7a1ffe731710b93d3a1fe"
|
||||
|
|
@ -2325,6 +2510,13 @@
|
|||
dependencies:
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-tools/utils@8.7.0":
|
||||
version "8.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.7.0.tgz#b46aa632ea61c1d8a43bf3012d695de73a696b3b"
|
||||
integrity sha512-71rJZJKJVOMsDlBGFq9gf1PaBbeW0kt8nZWmc50lhxYrCn0rzRY0auGrhhOWhdhZ5WsCWFxpnDurdF5VqB4Iig==
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@graphql-tools/wrap@8.4.16", "@graphql-tools/wrap@^8.1.0", "@graphql-tools/wrap@^8.3.1":
|
||||
version "8.4.16"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-8.4.16.tgz#87dce9ec623a921e5a62f44e75abc9655892724b"
|
||||
|
|
@ -2640,6 +2832,15 @@
|
|||
"@jridgewell/set-array" "^1.0.0"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.0":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
|
||||
integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
|
||||
dependencies:
|
||||
"@jridgewell/set-array" "^1.0.1"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
"@jridgewell/trace-mapping" "^0.3.9"
|
||||
|
||||
"@jridgewell/resolve-uri@^3.0.3":
|
||||
version "3.0.7"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe"
|
||||
|
|
@ -2650,6 +2851,11 @@
|
|||
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea"
|
||||
integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==
|
||||
|
||||
"@jridgewell/set-array@^1.0.1":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
|
||||
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.10":
|
||||
version "1.4.13"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c"
|
||||
|
|
@ -5922,6 +6128,39 @@ babel-preset-fbjs@^3.3.0:
|
|||
"@babel/plugin-transform-template-literals" "^7.0.0"
|
||||
babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0"
|
||||
|
||||
babel-preset-fbjs@^3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c"
|
||||
integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==
|
||||
dependencies:
|
||||
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
||||
"@babel/plugin-proposal-object-rest-spread" "^7.0.0"
|
||||
"@babel/plugin-syntax-class-properties" "^7.0.0"
|
||||
"@babel/plugin-syntax-flow" "^7.0.0"
|
||||
"@babel/plugin-syntax-jsx" "^7.0.0"
|
||||
"@babel/plugin-syntax-object-rest-spread" "^7.0.0"
|
||||
"@babel/plugin-transform-arrow-functions" "^7.0.0"
|
||||
"@babel/plugin-transform-block-scoped-functions" "^7.0.0"
|
||||
"@babel/plugin-transform-block-scoping" "^7.0.0"
|
||||
"@babel/plugin-transform-classes" "^7.0.0"
|
||||
"@babel/plugin-transform-computed-properties" "^7.0.0"
|
||||
"@babel/plugin-transform-destructuring" "^7.0.0"
|
||||
"@babel/plugin-transform-flow-strip-types" "^7.0.0"
|
||||
"@babel/plugin-transform-for-of" "^7.0.0"
|
||||
"@babel/plugin-transform-function-name" "^7.0.0"
|
||||
"@babel/plugin-transform-literals" "^7.0.0"
|
||||
"@babel/plugin-transform-member-expression-literals" "^7.0.0"
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.0.0"
|
||||
"@babel/plugin-transform-object-super" "^7.0.0"
|
||||
"@babel/plugin-transform-parameters" "^7.0.0"
|
||||
"@babel/plugin-transform-property-literals" "^7.0.0"
|
||||
"@babel/plugin-transform-react-display-name" "^7.0.0"
|
||||
"@babel/plugin-transform-react-jsx" "^7.0.0"
|
||||
"@babel/plugin-transform-shorthand-properties" "^7.0.0"
|
||||
"@babel/plugin-transform-spread" "^7.0.0"
|
||||
"@babel/plugin-transform-template-literals" "^7.0.0"
|
||||
babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0"
|
||||
|
||||
babel-preset-jest@^28.0.2:
|
||||
version "28.0.2"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz#d8210fe4e46c1017e9fa13d7794b166e93aa9f89"
|
||||
|
|
@ -15350,6 +15589,15 @@ relay-runtime@11.0.2:
|
|||
fbjs "^3.0.0"
|
||||
invariant "^2.2.4"
|
||||
|
||||
relay-runtime@12.0.0:
|
||||
version "12.0.0"
|
||||
resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-12.0.0.tgz#1e039282bdb5e0c1b9a7dc7f6b9a09d4f4ff8237"
|
||||
integrity sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.0.0"
|
||||
fbjs "^3.0.0"
|
||||
invariant "^2.2.4"
|
||||
|
||||
remark-gfm@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-1.0.0.tgz#9213643001be3f277da6256464d56fd28c3b3c0d"
|
||||
|
|
@ -17240,7 +17488,7 @@ tslib@2.3.1, tslib@~2.3.0:
|
|||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
||||
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
||||
|
||||
tslib@2.4.0, tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@~2.4.0:
|
||||
tslib@2.4.0, tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@~2.4.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
|
||||
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
|
||||
|
|
|
|||
Loading…
Reference in a new issue