diff --git a/GraphQLTypeDefinitions.graphql b/GraphQLTypeDefinitions.graphql index 2296bf5a..87aa5ff7 100644 --- a/GraphQLTypeDefinitions.graphql +++ b/GraphQLTypeDefinitions.graphql @@ -4,10 +4,13 @@ Instruction for establishing a live connection that is updated once the underlying data changes. """ directive @live( + """Whether the query should be live or not.""" + if: Boolean = true + """ - Whether the query should be live or not. + Propose a desired throttle interval ot the server in order to receive updates to at most once per "throttle" milliseconds. The server must not accept this value. """ - if: Boolean = true + throttle: Int ) on QUERY type Query { diff --git a/codegen.yml b/codegen.yml index 88550823..699888aa 100644 --- a/codegen.yml +++ b/codegen.yml @@ -6,3 +6,5 @@ documents: generates: ./src/gql/: preset: gql-tag-operations-preset + presetConfig: + fragmentMasking: true diff --git a/package.json b/package.json index b0fd7264..aeceb7f4 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@n1ru4l/graphql-live-query-patch-json-patch": "0.5.1", "@n1ru4l/in-memory-live-query-store": "0.7.3", "@n1ru4l/socket-io-graphql-server": "0.11.0", - "@tinyhttp/app": "2.0.5", + "@tinyhttp/app": "1.3.15", "@types/better-sqlite3": "7.4.0", "better-sqlite3": "7.4.3", "gqtx": "0.7.0", @@ -24,7 +24,7 @@ "@emotion/styled": "11.3.0", "@feedback-fish/react": "1.2.1", "@graphql-codegen/cli": "2.2.0", - "@graphql-codegen/gql-tag-operations-preset": "1.2.0", + "@graphql-codegen/gql-tag-operations-preset": "1.3.0-alpha-1f4053433.0", "@n1ru4l/push-pull-async-iterable-iterator": "3.1.0", "@n1ru4l/socket-io-graphql-client": "0.11.0", "@testing-library/jest-dom": "5.14.1", diff --git a/src/App.tsx b/src/App.tsx index 58a6ff27..7169ef82 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -13,6 +13,7 @@ const CharacterQuery = gql(/* GraphQL */ ` character(id: $characterId) { id ...CharacterViewFragment + ...CharacterOverlayFragment } } `); diff --git a/src/CharacterEditor.tsx b/src/CharacterEditor.tsx index 8a856794..c0c7f282 100644 --- a/src/CharacterEditor.tsx +++ b/src/CharacterEditor.tsx @@ -21,7 +21,7 @@ import { Text, VStack, } from "@chakra-ui/react"; -import { gql } from "./gql"; +import { FragmentType, gql, useFragment } from "./gql"; import { useMutation, useQuery } from "urql"; import { AddIcon, MinusIcon } from "@chakra-ui/icons"; import styled from "@emotion/styled"; @@ -146,16 +146,11 @@ const UpdateCharacterMutation = gql(/* GraphQL */ ` } `); -const Editor = ({ - character, - editHash, -}: { - character: Exclude< - typeof CharacterViewFragment["__resultType"], - null | undefined - >; +const Editor = (props: { + character: FragmentType; editHash: string; }) => { + const character = useFragment(CharacterViewFragment, props.character); const [, updateCharacter] = useMutation(UpdateCharacterMutation); const [imageUrl, setImageUrl] = useResetState( () => character.imageUrl, @@ -201,12 +196,12 @@ const Editor = ({ isFirstRun.current = false; return; } - if (!editHash) { + if (!props.editHash) { return; } updateCharacter({ input: { - editHash, + editHash: props.editHash, updates: { name, currentHealth, @@ -223,7 +218,7 @@ const Editor = ({ }); }, [ updateCharacter, - editHash, + props.editHash, name, currentHealth, maximumHealth, diff --git a/src/CharacterView.tsx b/src/CharacterView.tsx index ea6c00a5..f1b7ff71 100644 --- a/src/CharacterView.tsx +++ b/src/CharacterView.tsx @@ -1,14 +1,31 @@ import styled from "@emotion/styled"; import * as React from "react"; import { Box, HStack, Text, Stack } from "@chakra-ui/react"; -import { CharacterViewFragment } from "./CharacterViewFragment"; import { ProgressBar } from "./ProgressBar"; import { FatePoints } from "./FatePointsIndicator"; +import { FragmentType, gql, useFragment } from "./gql"; + +const CharacterOverlayFragment = gql(/* GraphQL */ ` + fragment CharacterOverlayFragment on Character { + id + name + currentHealth + maximumHealth + hasMana + currentMana + maximumMana + hasFatePoints + currentFatePoints + maximumFatePoints + imageUrl + } +`); export const CharacterOverlay = (props: { - character: CharacterViewFragment; + character: FragmentType; size: "sm" | "lg"; }): React.ReactElement => { + const character = useFragment(CharacterOverlayFragment, props.character); const imageSize = (props.size === "sm" ? 75 : 125) + "px"; return ( @@ -19,12 +36,12 @@ export const CharacterOverlay = (props: { textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black" width="100%" > - {props.character.name} + {character.name} @@ -32,16 +49,15 @@ export const CharacterOverlay = (props: { LeP {" "} - {props.character.currentHealth} /{" "} - {props.character.maximumHealth} + {character.currentHealth} / {character.maximumHealth} } /> - {props.character.hasMana ? ( + {character.hasMana ? ( @@ -49,17 +65,16 @@ export const CharacterOverlay = (props: { AsP {" "} - {props.character.currentMana} /{" "} - {props.character.maximumMana} + {character.currentMana} / {character.maximumMana} } /> ) : null} - {props.character.hasFatePoints ? ( + {character.hasFatePoints ? ( ) : null} @@ -69,7 +84,7 @@ export const CharacterOverlay = (props: { height: imageSize, width: imageSize, }} - src={props.character.imageUrl ?? ""} + src={character.imageUrl ?? ""} /> ); diff --git a/src/LandingPage.tsx b/src/LandingPage.tsx index 37ce3044..a259c0f2 100644 --- a/src/LandingPage.tsx +++ b/src/LandingPage.tsx @@ -143,19 +143,21 @@ export const LandingPage = (): React.ReactElement => { diff --git a/src/gql/fragment-masking.ts b/src/gql/fragment-masking.ts new file mode 100644 index 00000000..452def84 --- /dev/null +++ b/src/gql/fragment-masking.ts @@ -0,0 +1,21 @@ +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + + +export type FragmentType> = TDocumentType extends DocumentNode< + infer TType, + any +> + ? TType extends { ' $fragmentName': infer TKey } + ? TKey extends string + ? { ' $fragmentRefs': { [key in TKey]: TType } } + : never + : never + : never; + + +export function useFragment( + _documentNode: DocumentNode, + fragmentType: FragmentType> +): TType { + return fragmentType as any +} diff --git a/src/gql/gql.ts b/src/gql/gql.ts new file mode 100644 index 00000000..6b7e5203 --- /dev/null +++ b/src/gql/gql.ts @@ -0,0 +1,26 @@ +/* eslint-disable */ +import * as graphql from './graphql'; +import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + +const documents = { + "\n query CharacterQuery($characterId: ID!) @live {\n character(id: $characterId) {\n id\n ...CharacterViewFragment\n ...CharacterOverlayFragment\n }\n }\n": graphql.CharacterQueryDocument, + "\n fragment CharacterViewFragment on Character {\n id\n name\n imageUrl\n maximumHealth\n currentHealth\n hasMana\n maximumMana\n currentMana\n hasFatePoints\n maximumFatePoints\n currentFatePoints\n }\n": graphql.CharacterViewFragmentFragmentDoc, + "\n query CharacterEditorQuery($editHash: ID!) @live {\n characterEditor(editHash: $editHash) {\n __typename\n ... on Error {\n reason\n }\n ... on CharacterEditorView {\n character {\n id\n ...CharacterViewFragment\n }\n }\n }\n }\n": graphql.CharacterEditorQueryDocument, + "\n mutation UpdateCharacterMutation($input: UpdateCharacterInput!) {\n updateCharacter(input: $input)\n }\n": graphql.UpdateCharacterMutationDocument, + "\n fragment CharacterOverlayFragment on Character {\n id\n name\n currentHealth\n maximumHealth\n hasMana\n currentMana\n maximumMana\n hasFatePoints\n currentFatePoints\n maximumFatePoints\n imageUrl\n }\n": graphql.CharacterOverlayFragmentFragmentDoc, + "\n mutation CreateCharacterMutation {\n createCharacter {\n __typename\n ... on Error {\n reason\n }\n ... on CreateCharacterSuccess {\n editHash\n }\n }\n }\n": graphql.CreateCharacterMutationDocument, +}; + +export function gql(source: "\n query CharacterQuery($characterId: ID!) @live {\n character(id: $characterId) {\n id\n ...CharacterViewFragment\n ...CharacterOverlayFragment\n }\n }\n"): (typeof documents)["\n query CharacterQuery($characterId: ID!) @live {\n character(id: $characterId) {\n id\n ...CharacterViewFragment\n ...CharacterOverlayFragment\n }\n }\n"]; +export function gql(source: "\n fragment CharacterViewFragment on Character {\n id\n name\n imageUrl\n maximumHealth\n currentHealth\n hasMana\n maximumMana\n currentMana\n hasFatePoints\n maximumFatePoints\n currentFatePoints\n }\n"): (typeof documents)["\n fragment CharacterViewFragment on Character {\n id\n name\n imageUrl\n maximumHealth\n currentHealth\n hasMana\n maximumMana\n currentMana\n hasFatePoints\n maximumFatePoints\n currentFatePoints\n }\n"]; +export function gql(source: "\n query CharacterEditorQuery($editHash: ID!) @live {\n characterEditor(editHash: $editHash) {\n __typename\n ... on Error {\n reason\n }\n ... on CharacterEditorView {\n character {\n id\n ...CharacterViewFragment\n }\n }\n }\n }\n"): (typeof documents)["\n query CharacterEditorQuery($editHash: ID!) @live {\n characterEditor(editHash: $editHash) {\n __typename\n ... on Error {\n reason\n }\n ... on CharacterEditorView {\n character {\n id\n ...CharacterViewFragment\n }\n }\n }\n }\n"]; +export function gql(source: "\n mutation UpdateCharacterMutation($input: UpdateCharacterInput!) {\n updateCharacter(input: $input)\n }\n"): (typeof documents)["\n mutation UpdateCharacterMutation($input: UpdateCharacterInput!) {\n updateCharacter(input: $input)\n }\n"]; +export function gql(source: "\n fragment CharacterOverlayFragment on Character {\n id\n name\n currentHealth\n maximumHealth\n hasMana\n currentMana\n maximumMana\n hasFatePoints\n currentFatePoints\n maximumFatePoints\n imageUrl\n }\n"): (typeof documents)["\n fragment CharacterOverlayFragment on Character {\n id\n name\n currentHealth\n maximumHealth\n hasMana\n currentMana\n maximumMana\n hasFatePoints\n currentFatePoints\n maximumFatePoints\n imageUrl\n }\n"]; +export function gql(source: "\n mutation CreateCharacterMutation {\n createCharacter {\n __typename\n ... on Error {\n reason\n }\n ... on CreateCharacterSuccess {\n editHash\n }\n }\n }\n"): (typeof documents)["\n mutation CreateCharacterMutation {\n createCharacter {\n __typename\n ... on Error {\n reason\n }\n ... on CreateCharacterSuccess {\n editHash\n }\n }\n }\n"]; + +export function gql(source: string): unknown; +export function gql(source: string) { + return (documents as any)[source] ?? {}; +} + +export type DocumentType> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never; \ No newline at end of file diff --git a/src/gql/graphql.ts b/src/gql/graphql.ts index b00d9d8f..12d34f73 100644 --- a/src/gql/graphql.ts +++ b/src/gql/graphql.ts @@ -1,6 +1,7 @@ /* eslint-disable */ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; export type Maybe = T | null; +export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; @@ -13,20 +14,19 @@ export type Scalars = { Float: number; }; - export type Character = { __typename?: 'Character'; - id: Scalars['ID']; - name: Scalars['String']; - imageUrl?: Maybe; + currentFatePoints: Scalars['Int']; currentHealth: Scalars['Int']; - maximumHealth: Scalars['Int']; - hasMana: Scalars['Boolean']; currentMana: Scalars['Int']; - maximumMana: Scalars['Int']; hasFatePoints: Scalars['Boolean']; - currentFatePoints: Scalars['Int']; + hasMana: Scalars['Boolean']; + id: Scalars['ID']; + imageUrl?: Maybe; maximumFatePoints: Scalars['Int']; + maximumHealth: Scalars['Int']; + maximumMana: Scalars['Int']; + name: Scalars['String']; }; export type CharacterEditor = CharacterEditorView | Error; @@ -37,19 +37,19 @@ export type CharacterEditorView = { }; export type CharacterUpdateFields = { - name?: Maybe; - maximumHealth?: Maybe; - currentHealth?: Maybe; - hasMana?: Maybe; - maximumMana?: Maybe; - currentMana?: Maybe; - hasFatePoints?: Maybe; - maximumFatePoints?: Maybe; - currentFatePoints?: Maybe; - imageUrl?: Maybe; + currentFatePoints?: InputMaybe; + currentHealth?: InputMaybe; + currentMana?: InputMaybe; + hasFatePoints?: InputMaybe; + hasMana?: InputMaybe; + imageUrl?: InputMaybe; + maximumFatePoints?: InputMaybe; + maximumHealth?: InputMaybe; + maximumMana?: InputMaybe; + name?: InputMaybe; }; -export type CreateCharacterResult = Error | CreateCharacterSuccess; +export type CreateCharacterResult = CreateCharacterSuccess | Error; export type CreateCharacterSuccess = { __typename?: 'CreateCharacterSuccess'; @@ -63,8 +63,8 @@ export type Error = { export type Mutation = { __typename?: 'Mutation'; - updateCharacter?: Maybe; createCharacter: CreateCharacterResult; + updateCharacter?: Maybe; }; @@ -74,18 +74,18 @@ export type MutationUpdateCharacterArgs = { export type Query = { __typename?: 'Query'; - characterEditor?: Maybe; character?: Maybe; + characterEditor?: Maybe; }; -export type QueryCharacterEditorArgs = { - editHash: Scalars['ID']; +export type QueryCharacterArgs = { + id: Scalars['ID']; }; -export type QueryCharacterArgs = { - id: Scalars['ID']; +export type QueryCharacterEditorArgs = { + editHash: Scalars['ID']; }; export type UpdateCharacterInput = { @@ -98,31 +98,40 @@ export type CharacterQueryQueryVariables = Exact<{ }>; -export type CharacterQueryQuery = { __typename?: 'Query', character?: Maybe<{ __typename?: 'Character', id: string, name: string, imageUrl?: Maybe, maximumHealth: number, currentHealth: number, hasMana: boolean, maximumMana: number, currentMana: number, hasFatePoints: boolean, maximumFatePoints: number, currentFatePoints: number }> }; +export type CharacterQueryQuery = { __typename?: 'Query', character?: ( + { __typename?: 'Character', id: string } + & { ' $fragmentRefs': { 'CharacterViewFragmentFragment': CharacterViewFragmentFragment;'CharacterOverlayFragmentFragment': CharacterOverlayFragmentFragment } } + ) | null | undefined }; -export type CharacterViewFragmentFragment = { __typename?: 'Character', id: string, name: string, imageUrl?: Maybe, maximumHealth: number, currentHealth: number, hasMana: boolean, maximumMana: number, currentMana: number, hasFatePoints: boolean, maximumFatePoints: number, currentFatePoints: number }; +export type CharacterViewFragmentFragment = { __typename?: 'Character', id: string, name: string, imageUrl?: string | null | undefined, maximumHealth: number, currentHealth: number, hasMana: boolean, maximumMana: number, currentMana: number, hasFatePoints: boolean, maximumFatePoints: number, currentFatePoints: number } & { ' $fragmentName': 'CharacterViewFragmentFragment' }; export type CharacterEditorQueryQueryVariables = Exact<{ editHash: Scalars['ID']; }>; -export type CharacterEditorQueryQuery = { __typename?: 'Query', characterEditor?: Maybe<{ __typename: 'CharacterEditorView', character: { __typename?: 'Character', id: string, name: string, imageUrl?: Maybe, maximumHealth: number, currentHealth: number, hasMana: boolean, maximumMana: number, currentMana: number, hasFatePoints: boolean, maximumFatePoints: number, currentFatePoints: number } } | { __typename: 'Error', reason: string }> }; +export type CharacterEditorQueryQuery = { __typename?: 'Query', characterEditor?: { __typename: 'CharacterEditorView', character: ( + { __typename?: 'Character', id: string } + & { ' $fragmentRefs': { 'CharacterViewFragmentFragment': CharacterViewFragmentFragment } } + ) } | { __typename: 'Error', reason: string } | null | undefined }; export type UpdateCharacterMutationMutationVariables = Exact<{ input: UpdateCharacterInput; }>; -export type UpdateCharacterMutationMutation = { __typename?: 'Mutation', updateCharacter?: Maybe }; +export type UpdateCharacterMutationMutation = { __typename?: 'Mutation', updateCharacter?: boolean | null | undefined }; + +export type CharacterOverlayFragmentFragment = { __typename?: 'Character', id: string, name: string, currentHealth: number, maximumHealth: number, hasMana: boolean, currentMana: number, maximumMana: number, hasFatePoints: boolean, currentFatePoints: number, maximumFatePoints: number, imageUrl?: string | null | undefined } & { ' $fragmentName': 'CharacterOverlayFragmentFragment' }; export type CreateCharacterMutationMutationVariables = Exact<{ [key: string]: never; }>; -export type CreateCharacterMutationMutation = { __typename?: 'Mutation', createCharacter: { __typename: 'Error', reason: string } | { __typename: 'CreateCharacterSuccess', editHash: string } }; +export type CreateCharacterMutationMutation = { __typename?: 'Mutation', createCharacter: { __typename: 'CreateCharacterSuccess', editHash: string } | { __typename: 'Error', reason: string } }; export const CharacterViewFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CharacterViewFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Character"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"maximumHealth"}},{"kind":"Field","name":{"kind":"Name","value":"currentHealth"}},{"kind":"Field","name":{"kind":"Name","value":"hasMana"}},{"kind":"Field","name":{"kind":"Name","value":"maximumMana"}},{"kind":"Field","name":{"kind":"Name","value":"currentMana"}},{"kind":"Field","name":{"kind":"Name","value":"hasFatePoints"}},{"kind":"Field","name":{"kind":"Name","value":"maximumFatePoints"}},{"kind":"Field","name":{"kind":"Name","value":"currentFatePoints"}}]}}]} as unknown as DocumentNode; -export const CharacterQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CharacterQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"characterId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"directives":[{"kind":"Directive","name":{"kind":"Name","value":"live"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"character"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"characterId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CharacterViewFragment"}}]}}]}},...CharacterViewFragmentFragmentDoc.definitions]} as unknown as DocumentNode; +export const CharacterOverlayFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CharacterOverlayFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Character"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"currentHealth"}},{"kind":"Field","name":{"kind":"Name","value":"maximumHealth"}},{"kind":"Field","name":{"kind":"Name","value":"hasMana"}},{"kind":"Field","name":{"kind":"Name","value":"currentMana"}},{"kind":"Field","name":{"kind":"Name","value":"maximumMana"}},{"kind":"Field","name":{"kind":"Name","value":"hasFatePoints"}},{"kind":"Field","name":{"kind":"Name","value":"currentFatePoints"}},{"kind":"Field","name":{"kind":"Name","value":"maximumFatePoints"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}}]}}]} as unknown as DocumentNode; +export const CharacterQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CharacterQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"characterId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"directives":[{"kind":"Directive","name":{"kind":"Name","value":"live"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"character"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"characterId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CharacterViewFragment"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CharacterOverlayFragment"}}]}}]}},...CharacterViewFragmentFragmentDoc.definitions,...CharacterOverlayFragmentFragmentDoc.definitions]} as unknown as DocumentNode; export const CharacterEditorQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CharacterEditorQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"editHash"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"directives":[{"kind":"Directive","name":{"kind":"Name","value":"live"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"characterEditor"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"editHash"},"value":{"kind":"Variable","name":{"kind":"Name","value":"editHash"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Error"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CharacterEditorView"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"character"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CharacterViewFragment"}}]}}]}}]}}]}},...CharacterViewFragmentFragmentDoc.definitions]} as unknown as DocumentNode; export const UpdateCharacterMutationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateCharacterMutation"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateCharacterInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateCharacter"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}]}]}}]} as unknown as DocumentNode; export const CreateCharacterMutationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateCharacterMutation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createCharacter"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Error"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CreateCharacterSuccess"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"editHash"}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/src/gql/index.ts b/src/gql/index.ts index 5c3c882e..407a4706 100644 --- a/src/gql/index.ts +++ b/src/gql/index.ts @@ -1,21 +1,2 @@ -/* eslint-disable */ -import * as graphql from './graphql'; - -const documents = { - "\n query CharacterQuery($characterId: ID!) @live {\n character(id: $characterId) {\n id\n ...CharacterViewFragment\n }\n }\n": graphql.CharacterQueryDocument, - "\n fragment CharacterViewFragment on Character {\n id\n name\n imageUrl\n maximumHealth\n currentHealth\n hasMana\n maximumMana\n currentMana\n hasFatePoints\n maximumFatePoints\n currentFatePoints\n }\n": graphql.CharacterViewFragmentFragmentDoc, - "\n query CharacterEditorQuery($editHash: ID!) @live {\n characterEditor(editHash: $editHash) {\n __typename\n ... on Error {\n reason\n }\n ... on CharacterEditorView {\n character {\n id\n ...CharacterViewFragment\n }\n }\n }\n }\n": graphql.CharacterEditorQueryDocument, - "\n mutation UpdateCharacterMutation($input: UpdateCharacterInput!) {\n updateCharacter(input: $input)\n }\n": graphql.UpdateCharacterMutationDocument, - "\n mutation CreateCharacterMutation {\n createCharacter {\n __typename\n ... on Error {\n reason\n }\n ... on CreateCharacterSuccess {\n editHash\n }\n }\n }\n": graphql.CreateCharacterMutationDocument, -}; - -export function gql(source: "\n query CharacterQuery($characterId: ID!) @live {\n character(id: $characterId) {\n id\n ...CharacterViewFragment\n }\n }\n"): (typeof documents)["\n query CharacterQuery($characterId: ID!) @live {\n character(id: $characterId) {\n id\n ...CharacterViewFragment\n }\n }\n"]; -export function gql(source: "\n fragment CharacterViewFragment on Character {\n id\n name\n imageUrl\n maximumHealth\n currentHealth\n hasMana\n maximumMana\n currentMana\n hasFatePoints\n maximumFatePoints\n currentFatePoints\n }\n"): (typeof documents)["\n fragment CharacterViewFragment on Character {\n id\n name\n imageUrl\n maximumHealth\n currentHealth\n hasMana\n maximumMana\n currentMana\n hasFatePoints\n maximumFatePoints\n currentFatePoints\n }\n"]; -export function gql(source: "\n query CharacterEditorQuery($editHash: ID!) @live {\n characterEditor(editHash: $editHash) {\n __typename\n ... on Error {\n reason\n }\n ... on CharacterEditorView {\n character {\n id\n ...CharacterViewFragment\n }\n }\n }\n }\n"): (typeof documents)["\n query CharacterEditorQuery($editHash: ID!) @live {\n characterEditor(editHash: $editHash) {\n __typename\n ... on Error {\n reason\n }\n ... on CharacterEditorView {\n character {\n id\n ...CharacterViewFragment\n }\n }\n }\n }\n"]; -export function gql(source: "\n mutation UpdateCharacterMutation($input: UpdateCharacterInput!) {\n updateCharacter(input: $input)\n }\n"): (typeof documents)["\n mutation UpdateCharacterMutation($input: UpdateCharacterInput!) {\n updateCharacter(input: $input)\n }\n"]; -export function gql(source: "\n mutation CreateCharacterMutation {\n createCharacter {\n __typename\n ... on Error {\n reason\n }\n ... on CreateCharacterSuccess {\n editHash\n }\n }\n }\n"): (typeof documents)["\n mutation CreateCharacterMutation {\n createCharacter {\n __typename\n ... on Error {\n reason\n }\n ... on CreateCharacterSuccess {\n editHash\n }\n }\n }\n"]; - -export function gql(source: string): unknown; -export function gql(source: string) { - return (documents as any)[source] ?? {}; -} +export * from "./gql" +export * from "./fragment-masking" \ No newline at end of file diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5f..00000000 --- a/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/yarn.lock b/yarn.lock index c336626b..62ae5e8a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1315,33 +1315,35 @@ "@graphql-tools/utils" "^8.1.1" tslib "~2.3.0" -"@graphql-codegen/gql-tag-operations-preset@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/gql-tag-operations-preset/-/gql-tag-operations-preset-1.2.0.tgz#ab5cf01a095d6de711907d4107fb7e452278fe74" - integrity sha512-2mKwfkiQqng8wJzhYaCiHr6o1ZC7/9JwybuIhHKvht5HUlbHv7QT0Mf4vaanQvZnJ3t8moJxiJB9c1QKQ0oU+g== +"@graphql-codegen/gql-tag-operations-preset@1.3.0-alpha-1f4053433.0": + version "1.3.0-alpha-1f4053433.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/gql-tag-operations-preset/-/gql-tag-operations-preset-1.3.0-alpha-1f4053433.0.tgz#81e566b615d814a341c9c069b48c0aa66d66bff4" + integrity sha512-i3HdVVt54YOfbA8oUXtH3gjoQKP2nisUrr9UAeNy2EYjJTeoUYKGyTQKSG58RoskxbHQvd4IZav8ftr171T3FQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/template" "^7.15.4" "@graphql-codegen/add" "^3.1.0" - "@graphql-codegen/gql-tag-operations" "^1.2.0" - "@graphql-codegen/typed-document-node" "^2.1.4" - "@graphql-codegen/typescript" "^2.2.2" - "@graphql-codegen/typescript-operations" "^2.1.6" - "@graphql-codegen/visitor-plugin-common" "^2.2.1" + "@graphql-codegen/gql-tag-operations" "1.2.5-alpha-1f4053433.0" + "@graphql-codegen/plugin-helpers" "^2.3.1" + "@graphql-codegen/typed-document-node" "2.2.2-alpha-1f4053433.0" + "@graphql-codegen/typescript" "2.4.2-alpha-1f4053433.0" + "@graphql-codegen/typescript-operations" "2.2.2-alpha-1f4053433.0" + "@graphql-codegen/visitor-plugin-common" "2.6.0-alpha-1f4053433.0" + "@graphql-tools/utils" "^8.5.2" tslib "~2.3.0" -"@graphql-codegen/gql-tag-operations@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-1.2.0.tgz#3e593748eeacf4944ad923d389ae6de57aaeaede" - integrity sha512-RpfXLknA9cil7+bo/y7u6bn4yGYSGycU/L5ywBec20ugR86Qkb2xrTJZELU4CAam/t6vqlXsutg4eqdKRPB30Q== +"@graphql-codegen/gql-tag-operations@1.2.5-alpha-1f4053433.0": + version "1.2.5-alpha-1f4053433.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-1.2.5-alpha-1f4053433.0.tgz#449c7cad43303114425875e5b5a07e58829637af" + integrity sha512-h58qYJ8vK2bMgAJyg0YlDoPYIWMVxBjgBza2yjQq3fDbihK/Ak1y3t1dteKZBR8px5mHKnGgyWY6VE+0yShZeg== dependencies: - "@graphql-codegen/plugin-helpers" "^2.1.1" - "@graphql-codegen/visitor-plugin-common" "2.2.1" + "@graphql-codegen/plugin-helpers" "^2.3.0" + "@graphql-codegen/visitor-plugin-common" "2.6.0-alpha-1f4053433.0" "@graphql-tools/utils" "^8.1.1" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/plugin-helpers@^2.1.0", "@graphql-codegen/plugin-helpers@^2.1.1": +"@graphql-codegen/plugin-helpers@^2.1.0": version "2.1.1" resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.1.1.tgz#fc13e735763574ef308045bbb95c3e7201ec0027" integrity sha512-7jjN9fekMQkpd7cRTbaBxgqt/hkR3CXeOUSsEyHFDDHKtvCrnev3iyc75IeWXpO9tOwDE8mVPTzEZnu4QukrNA== @@ -1353,47 +1355,69 @@ lodash "~4.17.0" tslib "~2.3.0" -"@graphql-codegen/typed-document-node@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typed-document-node/-/typed-document-node-2.1.4.tgz#249cb918161a5e3c9006f76ca1941c4d80d30127" - integrity sha512-TP8jbppssZLBL7HgV/AQg2yVL6FP5qNjWpo+S45n0FNutFQvtSUrCe5Ji6+xFUHDoRBbeWIXeQPJPjURjlIbfA== +"@graphql-codegen/plugin-helpers@^2.3.0", "@graphql-codegen/plugin-helpers@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.3.1.tgz#b66c742d3209a85bc2f72f9e2eceb6b08fc81f85" + integrity sha512-rWH7igcjYqZ6rqNFTb4Wyp31863fRmmVpsRN8VHzBCltrepOO97jwTwB93aAw+T6Dm8aZto3QFfDIC79u8wA2Q== + dependencies: + "@graphql-tools/utils" "^8.5.2" + change-case-all "1.0.14" + common-tags "1.8.0" + import-from "4.0.0" + lodash "~4.17.0" + tslib "~2.3.0" + +"@graphql-codegen/schema-ast@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-2.4.0.tgz#a41fdf2bacf88ec8318c78fdf03f19e620e5534a" + integrity sha512-xsLd4mF0H3mPp7Z2PHZ2Sv1KKIb/FOORqhDc9XHCnHJJ/h9nmaleKSTxTGzSUfIAQ1aCNzVilcaUwlenK+MMBQ== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.3.0" + "@graphql-tools/utils" "^8.1.1" + tslib "~2.3.0" + +"@graphql-codegen/typed-document-node@2.2.2-alpha-1f4053433.0": + version "2.2.2-alpha-1f4053433.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typed-document-node/-/typed-document-node-2.2.2-alpha-1f4053433.0.tgz#2bac7437587572d27ef1d9acaac51da4027a754c" + integrity sha512-BhMMs5qM42oqFJSq1WktqgwFVr4BwHapDz62YwTf1UK7uU0ckXhqFj+MxjsiXdQzrJbuC+dBhkZCLeJLIjSRzQ== dependencies: - "@graphql-codegen/plugin-helpers" "^2.1.1" - "@graphql-codegen/visitor-plugin-common" "2.2.1" + "@graphql-codegen/plugin-helpers" "^2.3.0" + "@graphql-codegen/visitor-plugin-common" "2.6.0-alpha-1f4053433.0" auto-bind "~4.0.0" change-case-all "1.0.14" tslib "~2.3.0" -"@graphql-codegen/typescript-operations@^2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.1.6.tgz#d5c26300101e73f8c67c4689781c3556565f0d84" - integrity sha512-TtvrlLcZNNotxz3UAKBDrPeT1eL2bi1CWwDSzKiViX5lEDiMp40p/Gxa7P/n9n0n5ZfYzrl06Id6l/WMlUy6Kw== +"@graphql-codegen/typescript-operations@2.2.2-alpha-1f4053433.0": + version "2.2.2-alpha-1f4053433.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.2.2-alpha-1f4053433.0.tgz#8b3eac697ed52f6948daf61d59ddddebce77abbe" + integrity sha512-iIaI01Us0pMh1cD0kDV6LLK71VT/IP60zp5sC5JUXSvZ36mNlm1Nrdtuk0XfNjXQ2MaBLQpYumBlW4in5Em1HQ== dependencies: - "@graphql-codegen/plugin-helpers" "^2.1.1" - "@graphql-codegen/typescript" "^2.2.2" - "@graphql-codegen/visitor-plugin-common" "2.2.1" + "@graphql-codegen/plugin-helpers" "^2.3.0" + "@graphql-codegen/typescript" "2.4.2-alpha-1f4053433.0" + "@graphql-codegen/visitor-plugin-common" "2.6.0-alpha-1f4053433.0" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/typescript@^2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.2.2.tgz#8ea14c0a7853f6b73cca0ed10ff43b6dbd3731c6" - integrity sha512-prcB4nNi2iQzZRLla6N6kEPmnE2WU1zz5+sEBcZcqphjWERqQ3zwdSKsuLorE/XxMp500p6BQ96cVo+bFkmVtA== +"@graphql-codegen/typescript@2.4.2-alpha-1f4053433.0": + version "2.4.2-alpha-1f4053433.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.4.2-alpha-1f4053433.0.tgz#2e15d5cf986cde14cc2d350e044b9381ae160331" + integrity sha512-iC8pELdPG6EjKLR3Gz9uaSpDfbc+V96ccuAipQGuR04brrUBsTX6lKJnCT335mzh3rkRhMpZoAS1rzfifAQGVA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.1.1" - "@graphql-codegen/visitor-plugin-common" "2.2.1" + "@graphql-codegen/plugin-helpers" "^2.3.0" + "@graphql-codegen/schema-ast" "^2.4.0" + "@graphql-codegen/visitor-plugin-common" "2.6.0-alpha-1f4053433.0" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/visitor-plugin-common@2.2.1", "@graphql-codegen/visitor-plugin-common@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.2.1.tgz#721b646d3d19ec0fcf9509f516e788b7151be003" - integrity sha512-RbTCaayVCAEMp2jRUAwAp6Y49gq7K+SV/rwzdkoMUJUOUu4PxM4bCbWdnnXr0CIpbwjYIOnoqx729q6riT5+hg== +"@graphql-codegen/visitor-plugin-common@2.6.0-alpha-1f4053433.0": + version "2.6.0-alpha-1f4053433.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.6.0-alpha-1f4053433.0.tgz#d144512bb6a0c4612dec28e6a8423a15c33c8ec7" + integrity sha512-UL9XtSmmm6iNQhuv8dzuX5NkQe4WPx5JKtoCdH7JZYjBNZLq6f0g7Hlz90wlvNSG7/UF28YXyQp1cb863md/pw== dependencies: - "@graphql-codegen/plugin-helpers" "^2.1.1" + "@graphql-codegen/plugin-helpers" "^2.3.0" "@graphql-tools/optimize" "^1.0.1" "@graphql-tools/relay-operation-optimizer" "^6.3.7" - "@graphql-tools/utils" "8.2.2" + "@graphql-tools/utils" "^8.3.0" auto-bind "~4.0.0" change-case-all "1.0.14" dependency-graph "^0.11.0" @@ -1619,13 +1643,20 @@ dependencies: tslib "~2.3.0" -"@graphql-tools/utils@8.2.2", "@graphql-tools/utils@^8.0.0", "@graphql-tools/utils@^8.0.1", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.2.0", "@graphql-tools/utils@^8.2.2": +"@graphql-tools/utils@^8.0.0", "@graphql-tools/utils@^8.0.1", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.2.0", "@graphql-tools/utils@^8.2.2": version "8.2.2" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.2.2.tgz#d29420bf1003d2876cb30f373145be432c7f7c4b" integrity sha512-29FFY5U4lpXuBiW9dRvuWnBVwGhWbGLa2leZcAMU/Pz47Cr/QLZGVgpLBV9rt+Gbs7wyIJM7t7EuksPs0RDm3g== dependencies: tslib "~2.3.0" +"@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.2": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.5.3.tgz#404062e62cae9453501197039687749c4885356e" + integrity sha512-HDNGWFVa8QQkoQB0H1lftvaO1X5xUaUDk1zr1qDe0xN1NL0E/CrQdJ5UKLqOvH4hkqVUPxQsyOoAZFkaH6rLHg== + dependencies: + tslib "~2.3.0" + "@graphql-tools/wrap@^8.0.13": version "8.0.13" resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-8.0.13.tgz#17a4096efbc64e15b27a74135d920c8bd3e5385a" @@ -2034,116 +2065,116 @@ dependencies: "@babel/runtime" "^7.12.5" -"@tinyhttp/accepts@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/accepts/-/accepts-2.0.2.tgz#5025326126b3a0a40a8c29577ec3c7bed155bedd" - integrity sha512-DkJI1NMjb8FJ3k+/1wfdfoitn4jcb1tnDdBGVt/iN9FDqMC9WTIPdt6x7h81WuyHRefNn12gkqT8CqUbSkV3Nw== +"@tinyhttp/accepts@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/accepts/-/accepts-1.3.0.tgz#83951ec7c0074cfa89ee15fcdbd24f6fc2e6fd1b" + integrity sha512-YaJ4EMgVUI6JHzWO14lr6vn/BLJEoFN4Sqd20l0/oBcLLENkP8gnPtX1jB7OhIu0AE40VCweAqvSP+0/pgzB1g== dependencies: - es-mime-types "^0.1.3" + es-mime-types "^0.0.16" negotiator "^0.6.2" -"@tinyhttp/app@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@tinyhttp/app/-/app-2.0.5.tgz#4be746e8aa69e651773c69d819e7113ac20a9376" - integrity sha512-nDiggcqHywZTgg40a2iXhv5fvK0Ko+4w6lKS4mWKOBzMPlgYs6IMnLrK4fc7bFuufw1lQ/CTrlydZcOKOaAuWg== - dependencies: - "@tinyhttp/cookie" "2.0.2" - "@tinyhttp/proxy-addr" "2.0.2" - "@tinyhttp/req" "2.0.3" - "@tinyhttp/res" "2.0.4" - "@tinyhttp/router" "2.0.2" +"@tinyhttp/app@1.3.15": + version "1.3.15" + resolved "https://registry.yarnpkg.com/@tinyhttp/app/-/app-1.3.15.tgz#b0244d32afc118b67753294201155217c36dce66" + integrity sha512-KJsth7SgL55PG8LFrM7gUbsfKL6Ua3S69Pp1vHxiZnuvOCwy+hXFSbGPvV1/7j4iA4l4+GRNDc+q4EccLHGxIw== + dependencies: + "@tinyhttp/cookie" "1.3.0" + "@tinyhttp/proxy-addr" "1.3.0" + "@tinyhttp/req" "1.3.1" + "@tinyhttp/res" "1.3.3" + "@tinyhttp/router" "1.3.3" regexparam "^2.0.0" -"@tinyhttp/content-disposition@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@tinyhttp/content-disposition/-/content-disposition-2.0.3.tgz#8cda01c16e69425a6d0c8bce970dc647bfd26d0a" - integrity sha512-UFeyaKslzsYvJ88ivYVirQVTfjjy7vx1f3ZejAFsESqay8jNsUM76FscpkbrK4mXWY+HtlUIhTS4DXWh3gaURg== +"@tinyhttp/content-disposition@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/content-disposition/-/content-disposition-1.3.0.tgz#66e1963288dbec0b854c11dce2b10834ce72afe9" + integrity sha512-sSj7YDVz7NcHDn6/O/I3WjtC8ZWJKKIGULoV+pgrLvJvtXK5WroE1Fm8rHRQewh2d9NMajh/7NX6NuSlF8LUaQ== -"@tinyhttp/cookie-signature@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/cookie-signature/-/cookie-signature-2.0.2.tgz#91d817ca9819cd5a5a3525e3168114dc79f2b66e" - integrity sha512-lyIdDzLILp6T2fymJn9zKBgXwlZMIUiqMUIEd4x/ZGFNvnNs/zeYDBQFdAygBtv4Bgl5Zpf6tN+e6fkj6TlMYQ== +"@tinyhttp/cookie-signature@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/cookie-signature/-/cookie-signature-1.3.0.tgz#56511d1eb2f394afb1f818e8c3ccbb6fac45dcda" + integrity sha512-xCQZyCT1S/Rn2Z3SX2gp4IDAwW9AUnjky6hKvqzmMaQqEbIk7e2GCOXW5yjndbfGNTJAxj0tuLNMF4G8aLkfMw== -"@tinyhttp/cookie@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/cookie/-/cookie-2.0.2.tgz#19d869708dda05bbe94efafb587b687f79b3af95" - integrity sha512-/Ql7LuYlTZqrKs9v4IZxoui0ECnw6J87g+lqYeH/B+fTHrt7TXT876tkraZp4KS58r7XlGBQy+CoPog6XMm7SQ== +"@tinyhttp/cookie@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/cookie/-/cookie-1.3.0.tgz#5a13051da80a0e340894dd3b69faa7307a7bffec" + integrity sha512-4ZVfP8WApV9ZRchv/1i0QiKdP0wxWTUNv4ZsMQrqK0p1KXA0/SvpYUTS6bp1E6Yo0dNxcKte4wJ4FCWFDcShhQ== -"@tinyhttp/encode-url@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/encode-url/-/encode-url-2.0.2.tgz#b0adb2e577f1ea3d2aea30af1f34fd8a7fef713e" - integrity sha512-HSuiI6pW4dZ7nutkB4IV+KCGMfjCzS4KRycIWZ89KUatV2GP3pfnJ1wu01wna8jye+SbIyQbSsCGd6Tjj7VivA== +"@tinyhttp/encode-url@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/encode-url/-/encode-url-0.3.0.tgz#8dc1bc316827cd8800f9c8a647a4896b766a9e14" + integrity sha512-QM5j5t0GLucBuBePoOilcz1/zDpqX+LtUdtkPn7IvoHTNJYNxEfSUmIMPUPhyVY7mvbwvafPUCK8u1Byx0+NfQ== -"@tinyhttp/etag@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/etag/-/etag-2.0.2.tgz#f1ab0222aea8571b2320ec0c845acee45b144759" - integrity sha512-utxkv5skxWJESUAKZk7F11DcgBiE4vBXiPfnWZcGNZDa6T372V2ESUD2Y7fV85bsC1/4ZrnnmS7lg9Nd401oLw== +"@tinyhttp/etag@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/etag/-/etag-1.3.0.tgz#523ee8da8073bd10f7154fae9c6bc9f0df680b24" + integrity sha512-aWnDb4NuMf/UTm1H88rZgqu32E6t3iDHSHtAppiQCH4M7jRfTUEpiZjz//S+giDnOxAuYttLrXQ1+HGpgzyYUQ== -"@tinyhttp/forwarded@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/forwarded/-/forwarded-2.0.2.tgz#367d147a02d76e8ac1071045b1230dd70f680527" - integrity sha512-q+l7xMyN7buYjUfWbepLM36lI7FZmv+sm0arqzFGrTVWfEbKLiHTv+5c7H3O8/aYcxuyR4cBUrmwT6jw4dZhFw== +"@tinyhttp/forwarded@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/forwarded/-/forwarded-1.3.0.tgz#376d4692906377d2c89eeba4af04b32982fdc2b5" + integrity sha512-U2FPtOH+DoFtd98edMRyqiquRaiuEl5I2PMUWdKaBSpiAIR96buyanQ7hScenz1MihK0AVid7wLAviaJU+Xlyg== -"@tinyhttp/proxy-addr@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/proxy-addr/-/proxy-addr-2.0.2.tgz#67295d50d3ee6a91a618b560bbdf7d48fd6f0b63" - integrity sha512-wuXpzG9XsUQ2/YvCL5BSvp1JXc5HIuXlVJhMqdC0wv8iKF3hHv62H5XVd/wvzo/OWgiqt4hjxA4wITzND5Ed+g== +"@tinyhttp/proxy-addr@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/proxy-addr/-/proxy-addr-1.3.0.tgz#f1310f30acdf6bfbf08babb17ff3d94fb1fb81e9" + integrity sha512-7Kv6YIC/PlhUwyqAGXhg4DoQDOzbYlcGPkNv/KZAMFj9fZ6IEZyneyaClnD21hMT8qa7g3Z/66hxLa/WxiPAYA== dependencies: - "@tinyhttp/forwarded" "2.0.2" - ipaddr.js "^2.0.1" + "@tinyhttp/forwarded" "^1.3.0" + ipaddr.js "^2.0.0" -"@tinyhttp/req@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@tinyhttp/req/-/req-2.0.3.tgz#20fa5879c35449f3e1f07c3935c2d609c9fa0cea" - integrity sha512-RGWAeNpEN6SLUh5h+aaX59scZPRM4qfwE8/23wAG3OVhLu6KMzB7efA2PiZ+5Xw4qwKSmuXouBYeiIEqA9GWxA== +"@tinyhttp/req@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@tinyhttp/req/-/req-1.3.1.tgz#b6d13aa90fe42234a046000199824ffd83851ee2" + integrity sha512-nNIf3OGBtiQ9WRdqAH/cqwRXgIjQi9oQYslHdGsOzu79MZRvbkco+6FUEYvkQ9N6rLfAL+xjAXkCUk+gDJ0eLA== dependencies: - "@tinyhttp/accepts" "2.0.2" - "@tinyhttp/type-is" "2.0.2" - "@tinyhttp/url" "2.0.3" - es-fresh "^0.0.10" + "@tinyhttp/accepts" "1.3.0" + "@tinyhttp/type-is" "1.3.0" + "@tinyhttp/url" "1.3.1" + es-fresh "^0.0.8" range-parser "^1.2.1" -"@tinyhttp/res@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tinyhttp/res/-/res-2.0.4.tgz#a4444151543f4edf9a17603f4907ab4c6ec6494a" - integrity sha512-xW/yqrCzwaS7Af1FjuhmDxPhgASu+JIaP8vhDTT7KMZZXUxZ8sgpQVs8Ev9BabDLBRm3XZzLxL2FQ85hlBuhQQ== - dependencies: - "@tinyhttp/content-disposition" "2.0.3" - "@tinyhttp/cookie" "2.0.2" - "@tinyhttp/cookie-signature" "2.0.2" - "@tinyhttp/encode-url" "2.0.2" - "@tinyhttp/req" "2.0.3" - "@tinyhttp/send" "2.0.2" - es-escape-html "^0.1.1" - es-mime-types "^0.1.3" - es-vary "^0.1.1" - -"@tinyhttp/router@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/router/-/router-2.0.2.tgz#d639ae244daa9c142116f6ae5b9c00b7db186881" - integrity sha512-ABquD4gowsUbPGZs3qzMUXOm2FZuKKD0bPvBB4vgp8QeKJEQVVAMZrVFcQmW8rbT6JgoCYDbCmkwJq7yYl7xcg== +"@tinyhttp/res@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@tinyhttp/res/-/res-1.3.3.tgz#ed05cc90ce233fa08c6c94d678bf5a26ea87bd8a" + integrity sha512-PSsNsKARRycIlepliaQGyaDVNr0QpMAX5gYiSSYObxh7WvQGB30G4SCFIhy3gA5WXOxjMIwRktTHGGRflxCdyg== + dependencies: + "@tinyhttp/content-disposition" "1.3.0" + "@tinyhttp/cookie" "1.3.0" + "@tinyhttp/cookie-signature" "1.3.0" + "@tinyhttp/encode-url" "0.3.0" + "@tinyhttp/req" "1.3.1" + "@tinyhttp/send" "1.3.2" + es-mime-types "^0.0.16" + es-vary "^0.0.8" + escape-html "^1.0.3" + +"@tinyhttp/router@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@tinyhttp/router/-/router-1.3.3.tgz#8193153c88d0dbbe4aafde91b117147d56380189" + integrity sha512-Wjch7WR8DDkQm5xeNy4i/RrYQGmNrUhqzqls+UBZW14mULjUUtKoTlDOg59RxsPx2NmzdoDbIW4jTpbw+VyNHg== -"@tinyhttp/send@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/send/-/send-2.0.2.tgz#0e1d510dd3e79ba20c3b23292f6e734ced67ba4d" - integrity sha512-dUWf1Mp5zHOE0NRcQtXzJoBGMQnD0FzlpArgE1cXJ8AJnvSFtSpDOvCNdDyQFSX3XuBh5owpDOBAGDOwOhSR9g== +"@tinyhttp/send@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@tinyhttp/send/-/send-1.3.2.tgz#98c055e487f33198b5ae932c098bf0743a2c9b97" + integrity sha512-HQrkAr5QUxkYuYs/Sa5FJ2Uc/WerGqypptAbwszlz8hpE0P/nSs2xR2tpzRHGVihuIcNqiJaDzymhEndpj67Fg== dependencies: - "@tinyhttp/etag" "2.0.2" - es-content-type "^0.1.0" - es-mime-types "^0.1.3" + "@tinyhttp/etag" "1.3.0" + es-content-type "^0.0.10" + es-mime-types "^0.0.16" -"@tinyhttp/type-is@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tinyhttp/type-is/-/type-is-2.0.2.tgz#b4de9441e94c5554bd5996ac13dbcab28806cc95" - integrity sha512-b6ZHlR8JVVHmxzqvTSFgf7+B6lO/9M4cxfVzATbMlicffyUdR/QZjfHnJ+gshb9a0KMC5CJ34jOClPmtoHEfFQ== +"@tinyhttp/type-is@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@tinyhttp/type-is/-/type-is-1.3.0.tgz#02e61786ed7599f30e988c6351341e36bf40a895" + integrity sha512-3NClOYPNJst9vVLcb793epRI+ZuRwl6IjxSq9LkGN8TEBbtNgv2vTmXZRWcUs2zY9Ju+NQIYecWcsG0Kx23E+g== dependencies: - es-content-type "^0.1.0" - es-mime-types "^0.1.3" + es-content-type "^0.0.10" + es-mime-types "^0.0.16" -"@tinyhttp/url@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@tinyhttp/url/-/url-2.0.3.tgz#1acf8cafd9a6092332f45872a8b713e0e5030aa4" - integrity sha512-0KRWSE0W4hjejHJ1ksmUIIp3Rvn/6nDa5sYQ7gjwsixYQ8J8vTSOtPI7FOkH9M/evsnCGrCYp5JNBnqTjkShTw== +"@tinyhttp/url@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@tinyhttp/url/-/url-1.3.1.tgz#c17062b438b8208d9383432030dbfc1c68787aa8" + integrity sha512-72XRyVFLqbm8C9FQHYgfKNNIZBKuct13/EcA4tPnF9o8dIcL7UJtXCf+kQjdMZPJzJn51c451sxjm5p4dldbvQ== "@tootallnate/once@1": version "1.1.2" @@ -3828,27 +3859,22 @@ es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" -es-content-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/es-content-type/-/es-content-type-0.1.0.tgz#711efbc3c6c1c58c83ca808f6a0fec56d11bc3c8" - integrity sha512-DqWU9pSzhNlO10q+NQ/KebImLkKbwbcy0pSv3hNQfEpKFHsrqDJz2vajpZdq7nkiG9DoJcTh22oHGymp7XJd9g== - -es-escape-html@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/es-escape-html/-/es-escape-html-0.1.1.tgz#9a582d49754ec6204524952c76a383fe5f03c1c0" - integrity sha512-yUx1o+8RsG7UlszmYPtks+dm6Lho2m8lgHMOsLJQsFI0R8XwUJwiMhM1M4E/S8QLeGyf6MkDV/pWgjQ0tdTSyQ== - -es-fresh@^0.0.10: +es-content-type@^0.0.10: version "0.0.10" - resolved "https://registry.yarnpkg.com/es-fresh/-/es-fresh-0.0.10.tgz#c746507680980d5894c9bce017da8ff8fe98e2e6" - integrity sha512-/e5etUqtxj7JktALldpsDNC84DOHavN9PqojnTTGeX1M2/Q4/SF8d55d7AsB3n66WYS43hdBbn0sAllto5kSIg== + resolved "https://registry.yarnpkg.com/es-content-type/-/es-content-type-0.0.10.tgz#98ffeacf8399eaa080c521fe751144a8cc0f3222" + integrity sha512-yCgcv1M2IuFUoGZ3zE4OR2INGmZOwEuyaE5WX4MOKGpJcO8JXgVOIcXVicwnTqlxvx6qs9IJGl/Rr1+YtCkRgg== -es-mime-types@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/es-mime-types/-/es-mime-types-0.1.3.tgz#c96c02a87bbc477b5f56b2f59904893e62686e50" - integrity sha512-LcyBLQFEm2wnZdvbLYHDZ03Yb55hX/v7TNhPpgZKeOleJFTkwF4bYkkBFHRBEvg+9duGxx3cMYVkwBDMcA+LfA== +es-fresh@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/es-fresh/-/es-fresh-0.0.8.tgz#d4ac7157161362abb8c7fb53b0477bd55308fd5d" + integrity sha512-ZM+K/T/zHJVuOhaz19iymidACazB1fl2uihBtSfRie8YzN1YM+KldVmNaU+GSmVvTOPSO2utKOhxcOinr5tKjw== + +es-mime-types@^0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/es-mime-types/-/es-mime-types-0.0.16.tgz#2626ea0d99b3862addd5b25023b6ed6b2195cfc8" + integrity sha512-84QoSLeA7cdTeHpALFNl3ZOstXfvLt426/kaOgmSxmNUOhi4GesKVkhJgIfnsqGNziYezVA8rvZUsXj7oWX2qQ== dependencies: - mime-db "^1.48.0" + mime-db "^1.44.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -3859,10 +3885,10 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es-vary@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/es-vary/-/es-vary-0.1.1.tgz#7715e1198d603b7ed8369c0e14e1f462dfbcc0d3" - integrity sha512-4UOWrTu8lz5otSyWxcS0LbYz8WyYOEiWHGkBIu0VfhTsY+vtc7+fOSDHsxtEUBeu7mDnTwqsKg5NEXeq5Da1Hg== +es-vary@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/es-vary/-/es-vary-0.0.8.tgz#4dc62235dda14e51e16b6690e564a9e5d40e3df0" + integrity sha512-fiERjQiCHrXUAToNRT/sh7MtXnfei9n7cF9oVQRUEp9L5BGXsTKSPaXq8L+4v0c/ezfvuTWd/f0JSl5IBRUvSg== esbuild-android-arm64@0.13.9: version "0.13.9" @@ -3977,7 +4003,7 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-html@~1.0.3: +escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= @@ -4882,7 +4908,7 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ipaddr.js@^2.0.1: +ipaddr.js@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== @@ -6114,10 +6140,10 @@ mime-db@1.45.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== -mime-db@^1.48.0: - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== +mime-db@^1.44.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.28"