This message was deleted.
# 질문
s
This message was deleted.
a
Copy code
import { wrapSchema, introspectSchema, RenameTypes } from '@graphql-tools/wrap';
import { stitchSchemas } from '@graphql-tools/stitch';
import { AsyncExecutor } from '@graphql-tools/utils';
....

type ExecutorGetter = (uri: string) => AsyncExecutor;

const getExecutor: ExecutorGetter =
  (uri) =>
  async ({ document, variables }) => {
    const query = print(document);
    const fetchResult = await fetch(uri, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ query, variables }),
    });
    return fetchResult.json();
  };

const getRemoteExecutableSchema = async (uri: string) => {
  const remoteSchema = await introspectSchema(getExecutor(uri));
  return wrapSchema({ schema: remoteSchema, executor: getExecutor(uri) });
};

const getTransFormedRemoteExecutableSchema = async (uri: string) => {
  const remoteSchema = await introspectSchema(getExecutor(uri));
  return wrapSchema({
    schema: remoteSchema,
    executor: getExecutor(uri),
    transforms: [new RenameTypes((name) => `my_prefix_${name}`)], // 이 부분에서 type rename 이루어집니다
  });
};

export async function createApolloClient(option: Option = {}) {
  const executableSchema1 = await getRemoteExecutableSchema(uri1);
  const executableSchema2 = await getTransFormedRemoteExecutableSchema(uri2);

  const stitchedSchema = stitchSchemas({
    subschemas: [executableSchema1, executableSchema2],
  });
대략 코드는 이런데 이게 런타임에 ApolloClient 를 셋업할때 실행되는 코드라서 codegen 으로 생성한 타입과는 달라지는게 문제입니다.. 따로 transform 만 진행하는 프록시 GraphQL api 를 파야할까요?