git4refactor
filip mertens 7 months ago
parent aee0919250
commit 86c877989a
  1. 8
      libs/remix-ui/git/src/components/gitui.tsx
  2. 22
      libs/remix-ui/git/src/state/apolloClient.tsx
  3. 20
      libs/remix-ui/git/src/types/codegen.ts
  4. 67
      libs/remix-ui/git/src/types/fragment-masking.ts
  5. 42
      libs/remix-ui/git/src/types/gql.ts
  6. 30771
      libs/remix-ui/git/src/types/graphql.ts
  7. 2
      libs/remix-ui/git/src/types/index.ts

@ -28,7 +28,7 @@ import { GitHubAuth } from './panels/github'
import { GitHubCredentials } from './panels/githubcredentials' import { GitHubCredentials } from './panels/githubcredentials'
import { loaderReducer } from '../state/loaderReducer' import { loaderReducer } from '../state/loaderReducer'
import { ApolloClient, ApolloProvider, NormalizedCacheObject } from '@apollo/client' import { ApolloClient, ApolloProvider, NormalizedCacheObject } from '@apollo/client'
import { client, getApolloLink } from '../state/apolloClient'
import { GetDeviceCode } from './github/devicecode' import { GetDeviceCode } from './github/devicecode'
export const gitPluginContext = React.createContext<gitState>(defaultGitState) export const gitPluginContext = React.createContext<gitState>(defaultGitState)
@ -41,7 +41,6 @@ interface IGitUi {
export const GitUI = (props: IGitUi) => { export const GitUI = (props: IGitUi) => {
const plugin = props.plugin const plugin = props.plugin
const [gitState, gitDispatch] = useReducer(gitReducer, defaultGitState) const [gitState, gitDispatch] = useReducer(gitReducer, defaultGitState)
const [apolloClient, setApolloClient] = useState<ApolloClient<NormalizedCacheObject>>(client)
const [loaderState, loaderDispatch] = useReducer(loaderReducer, defaultLoaderState) const [loaderState, loaderDispatch] = useReducer(loaderReducer, defaultLoaderState)
const [activePanel, setActivePanel] = useState<string>("0"); const [activePanel, setActivePanel] = useState<string>("0");
const [timeOut, setTimeOut] = useState<number>(null) const [timeOut, setTimeOut] = useState<number>(null)
@ -79,9 +78,6 @@ export const GitUI = (props: IGitUi) => {
if (gitState.currentBranch && gitState.currentBranch.remote && gitState.currentBranch.remote.url) { if (gitState.currentBranch && gitState.currentBranch.remote && gitState.currentBranch.remote.url) {
remoteCommits(gitState.currentBranch.remote.url, gitState.currentBranch.name, 1) remoteCommits(gitState.currentBranch.remote.url, gitState.currentBranch.name, 1)
} }
if(gitState.gitHubAccessToken) {
client.setLink(getApolloLink(gitState.gitHubAccessToken))
}
} }
setTimeout(() => { setTimeout(() => {
updatestate() updatestate()
@ -129,7 +125,6 @@ export const GitUI = (props: IGitUi) => {
return ( return (
<div className="m-1"> <div className="m-1">
<ApolloProvider client={apolloClient}>
<gitPluginContext.Provider value={gitState}> <gitPluginContext.Provider value={gitState}>
<loaderContext.Provider value={loaderState}> <loaderContext.Provider value={loaderState}>
<gitActionsContext.Provider value={gitActionsProviderValue}> <gitActionsContext.Provider value={gitActionsProviderValue}>
@ -191,7 +186,6 @@ export const GitUI = (props: IGitUi) => {
</gitActionsContext.Provider> </gitActionsContext.Provider>
</loaderContext.Provider> </loaderContext.Provider>
</gitPluginContext.Provider> </gitPluginContext.Provider>
</ApolloProvider>
</div> </div>
) )
} }

@ -1,22 +0,0 @@
// ApolloClient.js
import { ApolloClient, InMemoryCache, createHttpLink, ApolloLink } from '@apollo/client';
export const getApolloLink = (token: string, uri = 'https://api.github.com/graphql')=>{
const authLink = new ApolloLink((operation, forward) => {
operation.setContext({
headers: {
Authorization: `Bearer ${token}`,
},
});
return forward(operation);
});
const httpLink = createHttpLink({
uri, // Replace with your GraphQL endpoint
});
return authLink.concat(httpLink)
}
export const client = new ApolloClient({
link: getApolloLink(''),
cache: new InMemoryCache(),
});

@ -1,20 +0,0 @@
import { CodegenConfig } from '@graphql-codegen/cli';
const config: CodegenConfig = {
schema: 'https://docs.github.com/public/schema.docs.graphql',
// this assumes that all your source files are in a top-level `src/` directory - you might need to adjust this to your file structure
documents: ['./libs/remix-ui/git/src/**/*.{ts,tsx}'],
generates: {
'./libs/remix-ui/git/src/types/': {
preset: 'client',
plugins: [],
presetConfig: {
gqlTagName: 'gql',
}
}
},
overwrite: true,
ignoreNoDocuments: true,
};
export default config;

@ -1,67 +0,0 @@
/* eslint-disable */
import { ResultOf, DocumentTypeDecoration, TypedDocumentNode } from '@graphql-typed-document-node/core';
import { FragmentDefinitionNode } from 'graphql';
import { Incremental } from './graphql';
export type FragmentType<TDocumentType extends DocumentTypeDecoration<any, any>> = TDocumentType extends DocumentTypeDecoration<
infer TType,
any
>
? [TType] extends [{ ' $fragmentName'?: infer TKey }]
? TKey extends string
? { ' $fragmentRefs'?: { [key in TKey]: TType } }
: never
: never
: never;
// return non-nullable if `fragmentType` is non-nullable
export function useFragment<TType>(
_documentNode: DocumentTypeDecoration<TType, any>,
fragmentType: FragmentType<DocumentTypeDecoration<TType, any>>
): TType;
// return nullable if `fragmentType` is nullable
export function useFragment<TType>(
_documentNode: DocumentTypeDecoration<TType, any>,
fragmentType: FragmentType<DocumentTypeDecoration<TType, any>> | null | undefined
): TType | null | undefined;
// return array of non-nullable if `fragmentType` is array of non-nullable
export function useFragment<TType>(
_documentNode: DocumentTypeDecoration<TType, any>,
fragmentType: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>
): ReadonlyArray<TType>;
// return array of nullable if `fragmentType` is array of nullable
export function useFragment<TType>(
_documentNode: DocumentTypeDecoration<TType, any>,
fragmentType: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>> | null | undefined
): ReadonlyArray<TType> | null | undefined;
export function useFragment<TType>(
_documentNode: DocumentTypeDecoration<TType, any>,
fragmentType: FragmentType<DocumentTypeDecoration<TType, any>> | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>> | null | undefined
): TType | ReadonlyArray<TType> | null | undefined {
return fragmentType as any;
}
export function makeFragmentData<
F extends DocumentTypeDecoration<any, any>,
FT extends ResultOf<F>
>(data: FT, _fragment: F): FragmentType<F> {
return data as FragmentType<F>;
}
export function isFragmentReady<TQuery, TFrag>(
queryNode: DocumentTypeDecoration<TQuery, any>,
fragmentNode: TypedDocumentNode<TFrag>,
data: FragmentType<TypedDocumentNode<Incremental<TFrag>, any>> | null | undefined
): data is FragmentType<typeof fragmentNode> {
const deferredFields = (queryNode as { __meta__?: { deferredFields: Record<string, (keyof TFrag)[]> } }).__meta__
?.deferredFields;
if (!deferredFields) return true;
const fragDef = fragmentNode.definitions[0] as FragmentDefinitionNode | undefined;
const fragName = fragDef?.name?.value;
const fields = (fragName && deferredFields[fragName]) || [];
return fields.length > 0 && fields.every(field => data && field in data);
}

@ -1,42 +0,0 @@
/* eslint-disable */
import * as types from './graphql';
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
/**
* Map of all GraphQL operations in the project.
*
* This map has several performance disadvantages:
* 1. It is not tree-shakeable, so it will include all operations in the project.
* 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.
* 3. It does not support dead code elimination, so it will add unused operations.
*
* Therefore it is highly recommended to use the babel or swc plugin for production.
*/
const documents = {
"\n query GetCommits($name: String!, $owner: String!, $cursor: String, $limit: Int = 10) {\n repository(name: $name, owner: $owner) {\n ref(qualifiedName: \"master\") {\n target {\n ... on Commit {\n history(first: $limit, after: $cursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n oid\n messageHeadline\n author {\n name\n date\n }\n }\n }\n }\n }\n }\n }\n }\n }\n": types.GetCommitsDocument,
};
/**
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*
*
* @example
* ```ts
* const query = gql(`query GetUser($id: ID!) { user(id: $id) { name } }`);
* ```
*
* The query argument is unknown!
* Please regenerate the types.
*/
export function gql(source: string): unknown;
/**
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function gql(source: "\n query GetCommits($name: String!, $owner: String!, $cursor: String, $limit: Int = 10) {\n repository(name: $name, owner: $owner) {\n ref(qualifiedName: \"master\") {\n target {\n ... on Commit {\n history(first: $limit, after: $cursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n oid\n messageHeadline\n author {\n name\n date\n }\n }\n }\n }\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query GetCommits($name: String!, $owner: String!, $cursor: String, $limit: Int = 10) {\n repository(name: $name, owner: $owner) {\n ref(qualifiedName: \"master\") {\n target {\n ... on Commit {\n history(first: $limit, after: $cursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n oid\n messageHeadline\n author {\n name\n date\n }\n }\n }\n }\n }\n }\n }\n }\n }\n"];
export function gql(source: string) {
return (documents as any)[source] ?? {};
}
export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never;

File diff suppressed because it is too large Load Diff

@ -1,5 +1,3 @@
export * from "./fragment-masking";
export * from "./gql";
import { Endpoints } from "@octokit/types" import { Endpoints } from "@octokit/types"
import { CommitObject, ReadCommitResult } from "isomorphic-git" import { CommitObject, ReadCommitResult } from "isomorphic-git"
export type GitHubUser = Endpoints["GET /user"]["response"]['data'] export type GitHubUser = Endpoints["GET /user"]["response"]['data']

Loading…
Cancel
Save