[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-apollo-graphql-apollo-server":3,"mdc--7mv6p4-key":40,"related-org-apollo-graphql-apollo-server":3864,"related-repo-apollo-graphql-apollo-server":4025},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":35,"sourceUrl":38,"mdContent":39},"apollo-server","build GraphQL servers with Apollo Server","Guide for building GraphQL servers with Apollo Server 5.x. Use this skill when: (1) setting up a new Apollo Server project, (2) writing resolvers or defining GraphQL schemas, (3) implementing authentication or authorization, (4) creating plugins or custom data sources, (5) troubleshooting Apollo Server errors or performance issues.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"apollo-graphql","Apollo GraphQL","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fapollo-graphql.png","apollographql",[13,17,20,21,24],{"name":14,"slug":15,"type":16},"GraphQL","graphql","tag",{"name":18,"slug":19,"type":16},"TypeScript","typescript",{"name":9,"slug":8,"type":16},{"name":22,"slug":23,"type":16},"API Development","api-development",{"name":25,"slug":26,"type":16},"Node.js","nodejs",97,"https:\u002F\u002Fgithub.com\u002Fapollographql\u002Fskills","2026-04-06T18:01:13.653038","MIT",11,[33,34,15],"agent-skills","apollo",{"repoUrl":28,"stars":27,"forks":31,"topics":36,"description":37},[33,34,15],"Apollo GraphQL Agent Skills","https:\u002F\u002Fgithub.com\u002Fapollographql\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fapollo-server","---\nname: apollo-server\ndescription: >\n  Guide for building GraphQL servers with Apollo Server 5.x. Use this skill when:\n  (1) setting up a new Apollo Server project,\n  (2) writing resolvers or defining GraphQL schemas,\n  (3) implementing authentication or authorization,\n  (4) creating plugins or custom data sources,\n  (5) troubleshooting Apollo Server errors or performance issues.\nlicense: MIT\ncompatibility: Node.js v20+, TypeScript 4.7+. Works with Express v4\u002Fv5, standalone, Fastify, and serverless.\nmetadata:\n  author: apollographql\n  version: \"1.0.0\"\nallowed-tools: Bash(npm:*) Bash(npx:*) Bash(node:*) Read Write Edit Glob Grep\n---\n\n# Apollo Server 5.x Guide\n\nApollo Server is an open-source GraphQL server that works with any GraphQL schema. Apollo Server 5 is framework-agnostic and runs standalone or integrates with Express, Fastify, and serverless environments.\n\n## Quick Start\n\n### Step 1: Install\n\n```bash\nnpm install @apollo\u002Fserver graphql\n```\n\nFor Express integration:\n\n```bash\nnpm install @apollo\u002Fserver @as-integrations\u002Fexpress5 express graphql cors\n```\n\n### Step 2: Define Schema\n\n```typescript\nconst typeDefs = `#graphql\n  type Book {\n    title: String\n    author: String\n  }\n\n  type Query {\n    books: [Book]\n  }\n`;\n```\n\n### Step 3: Write Resolvers\n\n```typescript\nconst resolvers = {\n  Query: {\n    books: () => [\n      { title: \"The Great Gatsby\", author: \"F. Scott Fitzgerald\" },\n      { title: \"1984\", author: \"George Orwell\" },\n    ],\n  },\n};\n```\n\n### Step 4: Start Server\n\n**Standalone (Recommended for prototyping):**\n\nThe standalone server is great for prototyping, but for production services, we recommend integrating Apollo Server with a more fully-featured web framework such as Express, Koa, or Fastify. Swapping from the standalone server to a web framework later is straightforward.\n\n```typescript\nimport { ApolloServer } from \"@apollo\u002Fserver\";\nimport { startStandaloneServer } from \"@apollo\u002Fserver\u002Fstandalone\";\n\nconst server = new ApolloServer({ typeDefs, resolvers });\n\nconst { url } = await startStandaloneServer(server, {\n  listen: { port: 4000 },\n});\n\nconsole.log(`Server ready at ${url}`);\n```\n\n**Express:**\n\n```typescript\nimport { ApolloServer } from \"@apollo\u002Fserver\";\nimport { expressMiddleware } from \"@as-integrations\u002Fexpress5\";\nimport { ApolloServerPluginDrainHttpServer } from \"@apollo\u002Fserver\u002Fplugin\u002FdrainHttpServer\";\nimport express from \"express\";\nimport http from \"http\";\nimport cors from \"cors\";\n\nconst app = express();\nconst httpServer = http.createServer(app);\n\nconst server = new ApolloServer({\n  typeDefs,\n  resolvers,\n  plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],\n});\n\nawait server.start();\n\napp.use(\n  \"\u002Fgraphql\",\n  cors(),\n  express.json(),\n  expressMiddleware(server, {\n    context: async ({ req }) => ({ token: req.headers.authorization }),\n  }),\n);\n\nawait new Promise\u003Cvoid>((resolve) => httpServer.listen({ port: 4000 }, resolve));\nconsole.log(\"Server ready at http:\u002F\u002Flocalhost:4000\u002Fgraphql\");\n```\n\n## Schema Definition\n\n### Scalar Types\n\n- `Int` - 32-bit integer\n- `Float` - Double-precision floating-point\n- `String` - UTF-8 string\n- `Boolean` - true\u002Ffalse\n- `ID` - Unique identifier (serialized as String)\n\n### Type Definitions\n\n```graphql\ntype User {\n  id: ID!\n  name: String!\n  email: String\n  posts: [Post!]!\n}\n\ntype Post {\n  id: ID!\n  title: String!\n  content: String\n  author: User!\n}\n\ninput CreatePostInput {\n  title: String!\n  content: String\n}\n\ntype Query {\n  user(id: ID!): User\n  users: [User!]!\n}\n\ntype Mutation {\n  createPost(input: CreatePostInput!): Post!\n}\n```\n\n### Enums and Interfaces\n\n```graphql\nenum Status {\n  DRAFT\n  PUBLISHED\n  ARCHIVED\n}\n\ninterface Node {\n  id: ID!\n}\n\ntype Article implements Node {\n  id: ID!\n  title: String!\n}\n```\n\n## Resolvers Overview\n\nResolvers follow the signature: `(parent, args, contextValue, info)`\n\n- **parent**: Result from parent resolver (root resolvers receive undefined)\n- **args**: Arguments passed to the field\n- **contextValue**: Shared context object (auth, dataSources, etc.)\n- **info**: Field-specific info and schema details (rarely used)\n\n```typescript\nconst resolvers = {\n  Query: {\n    user: async (_, { id }, { dataSources }) => {\n      return dataSources.usersAPI.getUser(id);\n    },\n  },\n  User: {\n    posts: async (parent, _, { dataSources }) => {\n      return dataSources.postsAPI.getPostsByAuthor(parent.id);\n    },\n  },\n  Mutation: {\n    createPost: async (_, { input }, { dataSources, user }) => {\n      if (!user) throw new GraphQLError(\"Not authenticated\");\n      return dataSources.postsAPI.create({ ...input, authorId: user.id });\n    },\n  },\n};\n```\n\n## Context Setup\n\nContext is created per-request and passed to all resolvers.\n\n```typescript\ninterface MyContext {\n  token?: string;\n  user?: User;\n  dataSources: {\n    usersAPI: UsersDataSource;\n    postsAPI: PostsDataSource;\n  };\n}\n\nconst server = new ApolloServer\u003CMyContext>({\n  typeDefs,\n  resolvers,\n});\n\n\u002F\u002F Standalone\nconst { url } = await startStandaloneServer(server, {\n  context: async ({ req }) => ({\n    token: req.headers.authorization || \"\",\n    user: await getUser(req.headers.authorization || \"\"),\n    dataSources: {\n      usersAPI: new UsersDataSource(),\n      postsAPI: new PostsDataSource(),\n    },\n  }),\n});\n\n\u002F\u002F Express middleware\nexpressMiddleware(server, {\n  context: async ({ req, res }) => ({\n    token: req.headers.authorization,\n    user: await getUser(req.headers.authorization),\n    dataSources: {\n      usersAPI: new UsersDataSource(),\n      postsAPI: new PostsDataSource(),\n    },\n  }),\n});\n```\n\n## Reference Files\n\nDetailed documentation for specific topics:\n\n- [Resolvers](references\u002Fresolvers.md) - Resolver patterns and best practices\n- [Context and Auth](references\u002Fcontext-and-auth.md) - Authentication and authorization\n- [Plugins](references\u002Fplugins.md) - Server and request lifecycle hooks\n- [Data Sources](references\u002Fdata-sources.md) - RESTDataSource and DataLoader\n- [Error Handling](references\u002Ferror-handling.md) - GraphQLError and error formatting\n- [Troubleshooting](references\u002Ftroubleshooting.md) - Common issues and solutions\n\n## Key Rules\n\n### Schema Design\n\n- Use **!** (non-null) for fields that always have values\n- Prefer input types for mutations over inline arguments\n- Use interfaces for polymorphic types\n- Keep schema descriptions for documentation\n\n### Resolver Best Practices\n\n- Keep resolvers thin - delegate to services\u002Fdata sources\n- Always handle errors explicitly\n- Use DataLoader for batching related queries\n- Return partial data when possible (GraphQL's strength)\n\n### Performance\n\n- Use `@defer` and `@stream` for large responses\n- Implement DataLoader to solve N+1 queries\n- Consider persisted queries for production\n- Use caching headers and CDN where appropriate\n\n## Ground Rules\n\n- ALWAYS use Apollo Server 5.x patterns (not v4 or earlier)\n- ALWAYS type your context with TypeScript generics\n- ALWAYS use `GraphQLError` from `graphql` package for errors\n- NEVER expose stack traces in production errors\n- PREFER `startStandaloneServer` for prototyping only\n- USE an integration with a server framework like Express, Koa, Fastify, Next, etc. for production apps\n- IMPLEMENT authentication in context, authorization in resolvers\n",{"data":41,"body":46},{"name":4,"description":6,"license":30,"compatibility":42,"metadata":43,"allowed-tools":45},"Node.js v20+, TypeScript 4.7+. Works with Express v4\u002Fv5, standalone, Fastify, and serverless.",{"author":11,"version":44},"1.0.0","Bash(npm:*) Bash(npx:*) Bash(node:*) Read Write Edit Glob Grep",{"type":47,"children":48},"root",[49,58,64,71,78,118,123,165,171,296,302,526,532,541,546,874,882,1739,1745,1751,1811,1817,2030,2036,2147,2153,2164,2207,2769,2775,2780,3596,3602,3607,3677,3683,3689,3718,3724,3747,3753,3791,3797,3858],{"type":50,"tag":51,"props":52,"children":54},"element","h1",{"id":53},"apollo-server-5x-guide",[55],{"type":56,"value":57},"text","Apollo Server 5.x Guide",{"type":50,"tag":59,"props":60,"children":61},"p",{},[62],{"type":56,"value":63},"Apollo Server is an open-source GraphQL server that works with any GraphQL schema. Apollo Server 5 is framework-agnostic and runs standalone or integrates with Express, Fastify, and serverless environments.",{"type":50,"tag":65,"props":66,"children":68},"h2",{"id":67},"quick-start",[69],{"type":56,"value":70},"Quick Start",{"type":50,"tag":72,"props":73,"children":75},"h3",{"id":74},"step-1-install",[76],{"type":56,"value":77},"Step 1: Install",{"type":50,"tag":79,"props":80,"children":85},"pre",{"className":81,"code":82,"language":83,"meta":84,"style":84},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @apollo\u002Fserver graphql\n","bash","",[86],{"type":50,"tag":87,"props":88,"children":89},"code",{"__ignoreMap":84},[90],{"type":50,"tag":91,"props":92,"children":95},"span",{"class":93,"line":94},"line",1,[96,102,108,113],{"type":50,"tag":91,"props":97,"children":99},{"style":98},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[100],{"type":56,"value":101},"npm",{"type":50,"tag":91,"props":103,"children":105},{"style":104},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[106],{"type":56,"value":107}," install",{"type":50,"tag":91,"props":109,"children":110},{"style":104},[111],{"type":56,"value":112}," @apollo\u002Fserver",{"type":50,"tag":91,"props":114,"children":115},{"style":104},[116],{"type":56,"value":117}," graphql\n",{"type":50,"tag":59,"props":119,"children":120},{},[121],{"type":56,"value":122},"For Express integration:",{"type":50,"tag":79,"props":124,"children":126},{"className":81,"code":125,"language":83,"meta":84,"style":84},"npm install @apollo\u002Fserver @as-integrations\u002Fexpress5 express graphql cors\n",[127],{"type":50,"tag":87,"props":128,"children":129},{"__ignoreMap":84},[130],{"type":50,"tag":91,"props":131,"children":132},{"class":93,"line":94},[133,137,141,145,150,155,160],{"type":50,"tag":91,"props":134,"children":135},{"style":98},[136],{"type":56,"value":101},{"type":50,"tag":91,"props":138,"children":139},{"style":104},[140],{"type":56,"value":107},{"type":50,"tag":91,"props":142,"children":143},{"style":104},[144],{"type":56,"value":112},{"type":50,"tag":91,"props":146,"children":147},{"style":104},[148],{"type":56,"value":149}," @as-integrations\u002Fexpress5",{"type":50,"tag":91,"props":151,"children":152},{"style":104},[153],{"type":56,"value":154}," express",{"type":50,"tag":91,"props":156,"children":157},{"style":104},[158],{"type":56,"value":159}," graphql",{"type":50,"tag":91,"props":161,"children":162},{"style":104},[163],{"type":56,"value":164}," cors\n",{"type":50,"tag":72,"props":166,"children":168},{"id":167},"step-2-define-schema",[169],{"type":56,"value":170},"Step 2: Define Schema",{"type":50,"tag":79,"props":172,"children":175},{"className":173,"code":174,"language":19,"meta":84,"style":84},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const typeDefs = `#graphql\n  type Book {\n    title: String\n    author: String\n  }\n\n  type Query {\n    books: [Book]\n  }\n`;\n",[176],{"type":50,"tag":87,"props":177,"children":178},{"__ignoreMap":84},[179,210,219,228,237,246,256,265,274,282],{"type":50,"tag":91,"props":180,"children":181},{"class":93,"line":94},[182,188,194,200,205],{"type":50,"tag":91,"props":183,"children":185},{"style":184},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[186],{"type":56,"value":187},"const",{"type":50,"tag":91,"props":189,"children":191},{"style":190},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[192],{"type":56,"value":193}," typeDefs ",{"type":50,"tag":91,"props":195,"children":197},{"style":196},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[198],{"type":56,"value":199},"=",{"type":50,"tag":91,"props":201,"children":202},{"style":196},[203],{"type":56,"value":204}," `",{"type":50,"tag":91,"props":206,"children":207},{"style":104},[208],{"type":56,"value":209},"#graphql\n",{"type":50,"tag":91,"props":211,"children":213},{"class":93,"line":212},2,[214],{"type":50,"tag":91,"props":215,"children":216},{"style":104},[217],{"type":56,"value":218},"  type Book {\n",{"type":50,"tag":91,"props":220,"children":222},{"class":93,"line":221},3,[223],{"type":50,"tag":91,"props":224,"children":225},{"style":104},[226],{"type":56,"value":227},"    title: String\n",{"type":50,"tag":91,"props":229,"children":231},{"class":93,"line":230},4,[232],{"type":50,"tag":91,"props":233,"children":234},{"style":104},[235],{"type":56,"value":236},"    author: String\n",{"type":50,"tag":91,"props":238,"children":240},{"class":93,"line":239},5,[241],{"type":50,"tag":91,"props":242,"children":243},{"style":104},[244],{"type":56,"value":245},"  }\n",{"type":50,"tag":91,"props":247,"children":249},{"class":93,"line":248},6,[250],{"type":50,"tag":91,"props":251,"children":253},{"emptyLinePlaceholder":252},true,[254],{"type":56,"value":255},"\n",{"type":50,"tag":91,"props":257,"children":259},{"class":93,"line":258},7,[260],{"type":50,"tag":91,"props":261,"children":262},{"style":104},[263],{"type":56,"value":264},"  type Query {\n",{"type":50,"tag":91,"props":266,"children":268},{"class":93,"line":267},8,[269],{"type":50,"tag":91,"props":270,"children":271},{"style":104},[272],{"type":56,"value":273},"    books: [Book]\n",{"type":50,"tag":91,"props":275,"children":277},{"class":93,"line":276},9,[278],{"type":50,"tag":91,"props":279,"children":280},{"style":104},[281],{"type":56,"value":245},{"type":50,"tag":91,"props":283,"children":285},{"class":93,"line":284},10,[286,291],{"type":50,"tag":91,"props":287,"children":288},{"style":196},[289],{"type":56,"value":290},"`",{"type":50,"tag":91,"props":292,"children":293},{"style":196},[294],{"type":56,"value":295},";\n",{"type":50,"tag":72,"props":297,"children":299},{"id":298},"step-3-write-resolvers",[300],{"type":56,"value":301},"Step 3: Write Resolvers",{"type":50,"tag":79,"props":303,"children":305},{"className":173,"code":304,"language":19,"meta":84,"style":84},"const resolvers = {\n  Query: {\n    books: () => [\n      { title: \"The Great Gatsby\", author: \"F. Scott Fitzgerald\" },\n      { title: \"1984\", author: \"George Orwell\" },\n    ],\n  },\n};\n",[306],{"type":50,"tag":87,"props":307,"children":308},{"__ignoreMap":84},[309,330,348,376,440,497,510,518],{"type":50,"tag":91,"props":310,"children":311},{"class":93,"line":94},[312,316,321,325],{"type":50,"tag":91,"props":313,"children":314},{"style":184},[315],{"type":56,"value":187},{"type":50,"tag":91,"props":317,"children":318},{"style":190},[319],{"type":56,"value":320}," resolvers ",{"type":50,"tag":91,"props":322,"children":323},{"style":196},[324],{"type":56,"value":199},{"type":50,"tag":91,"props":326,"children":327},{"style":196},[328],{"type":56,"value":329}," {\n",{"type":50,"tag":91,"props":331,"children":332},{"class":93,"line":212},[333,339,344],{"type":50,"tag":91,"props":334,"children":336},{"style":335},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[337],{"type":56,"value":338},"  Query",{"type":50,"tag":91,"props":340,"children":341},{"style":196},[342],{"type":56,"value":343},":",{"type":50,"tag":91,"props":345,"children":346},{"style":196},[347],{"type":56,"value":329},{"type":50,"tag":91,"props":349,"children":350},{"class":93,"line":221},[351,357,361,366,371],{"type":50,"tag":91,"props":352,"children":354},{"style":353},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[355],{"type":56,"value":356},"    books",{"type":50,"tag":91,"props":358,"children":359},{"style":196},[360],{"type":56,"value":343},{"type":50,"tag":91,"props":362,"children":363},{"style":196},[364],{"type":56,"value":365}," ()",{"type":50,"tag":91,"props":367,"children":368},{"style":184},[369],{"type":56,"value":370}," =>",{"type":50,"tag":91,"props":372,"children":373},{"style":190},[374],{"type":56,"value":375}," [\n",{"type":50,"tag":91,"props":377,"children":378},{"class":93,"line":230},[379,384,389,393,398,403,408,413,418,422,426,431,435],{"type":50,"tag":91,"props":380,"children":381},{"style":196},[382],{"type":56,"value":383},"      {",{"type":50,"tag":91,"props":385,"children":386},{"style":335},[387],{"type":56,"value":388}," title",{"type":50,"tag":91,"props":390,"children":391},{"style":196},[392],{"type":56,"value":343},{"type":50,"tag":91,"props":394,"children":395},{"style":196},[396],{"type":56,"value":397}," \"",{"type":50,"tag":91,"props":399,"children":400},{"style":104},[401],{"type":56,"value":402},"The Great Gatsby",{"type":50,"tag":91,"props":404,"children":405},{"style":196},[406],{"type":56,"value":407},"\"",{"type":50,"tag":91,"props":409,"children":410},{"style":196},[411],{"type":56,"value":412},",",{"type":50,"tag":91,"props":414,"children":415},{"style":335},[416],{"type":56,"value":417}," author",{"type":50,"tag":91,"props":419,"children":420},{"style":196},[421],{"type":56,"value":343},{"type":50,"tag":91,"props":423,"children":424},{"style":196},[425],{"type":56,"value":397},{"type":50,"tag":91,"props":427,"children":428},{"style":104},[429],{"type":56,"value":430},"F. Scott Fitzgerald",{"type":50,"tag":91,"props":432,"children":433},{"style":196},[434],{"type":56,"value":407},{"type":50,"tag":91,"props":436,"children":437},{"style":196},[438],{"type":56,"value":439}," },\n",{"type":50,"tag":91,"props":441,"children":442},{"class":93,"line":239},[443,447,451,455,459,464,468,472,476,480,484,489,493],{"type":50,"tag":91,"props":444,"children":445},{"style":196},[446],{"type":56,"value":383},{"type":50,"tag":91,"props":448,"children":449},{"style":335},[450],{"type":56,"value":388},{"type":50,"tag":91,"props":452,"children":453},{"style":196},[454],{"type":56,"value":343},{"type":50,"tag":91,"props":456,"children":457},{"style":196},[458],{"type":56,"value":397},{"type":50,"tag":91,"props":460,"children":461},{"style":104},[462],{"type":56,"value":463},"1984",{"type":50,"tag":91,"props":465,"children":466},{"style":196},[467],{"type":56,"value":407},{"type":50,"tag":91,"props":469,"children":470},{"style":196},[471],{"type":56,"value":412},{"type":50,"tag":91,"props":473,"children":474},{"style":335},[475],{"type":56,"value":417},{"type":50,"tag":91,"props":477,"children":478},{"style":196},[479],{"type":56,"value":343},{"type":50,"tag":91,"props":481,"children":482},{"style":196},[483],{"type":56,"value":397},{"type":50,"tag":91,"props":485,"children":486},{"style":104},[487],{"type":56,"value":488},"George Orwell",{"type":50,"tag":91,"props":490,"children":491},{"style":196},[492],{"type":56,"value":407},{"type":50,"tag":91,"props":494,"children":495},{"style":196},[496],{"type":56,"value":439},{"type":50,"tag":91,"props":498,"children":499},{"class":93,"line":248},[500,505],{"type":50,"tag":91,"props":501,"children":502},{"style":190},[503],{"type":56,"value":504},"    ]",{"type":50,"tag":91,"props":506,"children":507},{"style":196},[508],{"type":56,"value":509},",\n",{"type":50,"tag":91,"props":511,"children":512},{"class":93,"line":258},[513],{"type":50,"tag":91,"props":514,"children":515},{"style":196},[516],{"type":56,"value":517},"  },\n",{"type":50,"tag":91,"props":519,"children":520},{"class":93,"line":267},[521],{"type":50,"tag":91,"props":522,"children":523},{"style":196},[524],{"type":56,"value":525},"};\n",{"type":50,"tag":72,"props":527,"children":529},{"id":528},"step-4-start-server",[530],{"type":56,"value":531},"Step 4: Start Server",{"type":50,"tag":59,"props":533,"children":534},{},[535],{"type":50,"tag":536,"props":537,"children":538},"strong",{},[539],{"type":56,"value":540},"Standalone (Recommended for prototyping):",{"type":50,"tag":59,"props":542,"children":543},{},[544],{"type":56,"value":545},"The standalone server is great for prototyping, but for production services, we recommend integrating Apollo Server with a more fully-featured web framework such as Express, Koa, or Fastify. Swapping from the standalone server to a web framework later is straightforward.",{"type":50,"tag":79,"props":547,"children":549},{"className":173,"code":548,"language":19,"meta":84,"style":84},"import { ApolloServer } from \"@apollo\u002Fserver\";\nimport { startStandaloneServer } from \"@apollo\u002Fserver\u002Fstandalone\";\n\nconst server = new ApolloServer({ typeDefs, resolvers });\n\nconst { url } = await startStandaloneServer(server, {\n  listen: { port: 4000 },\n});\n\nconsole.log(`Server ready at ${url}`);\n",[550],{"type":50,"tag":87,"props":551,"children":552},{"__ignoreMap":84},[553,599,640,647,709,716,763,798,813,820],{"type":50,"tag":91,"props":554,"children":555},{"class":93,"line":94},[556,562,567,572,577,582,586,591,595],{"type":50,"tag":91,"props":557,"children":559},{"style":558},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[560],{"type":56,"value":561},"import",{"type":50,"tag":91,"props":563,"children":564},{"style":196},[565],{"type":56,"value":566}," {",{"type":50,"tag":91,"props":568,"children":569},{"style":190},[570],{"type":56,"value":571}," ApolloServer",{"type":50,"tag":91,"props":573,"children":574},{"style":196},[575],{"type":56,"value":576}," }",{"type":50,"tag":91,"props":578,"children":579},{"style":558},[580],{"type":56,"value":581}," from",{"type":50,"tag":91,"props":583,"children":584},{"style":196},[585],{"type":56,"value":397},{"type":50,"tag":91,"props":587,"children":588},{"style":104},[589],{"type":56,"value":590},"@apollo\u002Fserver",{"type":50,"tag":91,"props":592,"children":593},{"style":196},[594],{"type":56,"value":407},{"type":50,"tag":91,"props":596,"children":597},{"style":196},[598],{"type":56,"value":295},{"type":50,"tag":91,"props":600,"children":601},{"class":93,"line":212},[602,606,610,615,619,623,627,632,636],{"type":50,"tag":91,"props":603,"children":604},{"style":558},[605],{"type":56,"value":561},{"type":50,"tag":91,"props":607,"children":608},{"style":196},[609],{"type":56,"value":566},{"type":50,"tag":91,"props":611,"children":612},{"style":190},[613],{"type":56,"value":614}," startStandaloneServer",{"type":50,"tag":91,"props":616,"children":617},{"style":196},[618],{"type":56,"value":576},{"type":50,"tag":91,"props":620,"children":621},{"style":558},[622],{"type":56,"value":581},{"type":50,"tag":91,"props":624,"children":625},{"style":196},[626],{"type":56,"value":397},{"type":50,"tag":91,"props":628,"children":629},{"style":104},[630],{"type":56,"value":631},"@apollo\u002Fserver\u002Fstandalone",{"type":50,"tag":91,"props":633,"children":634},{"style":196},[635],{"type":56,"value":407},{"type":50,"tag":91,"props":637,"children":638},{"style":196},[639],{"type":56,"value":295},{"type":50,"tag":91,"props":641,"children":642},{"class":93,"line":221},[643],{"type":50,"tag":91,"props":644,"children":645},{"emptyLinePlaceholder":252},[646],{"type":56,"value":255},{"type":50,"tag":91,"props":648,"children":649},{"class":93,"line":230},[650,654,659,663,668,672,677,682,687,691,695,700,705],{"type":50,"tag":91,"props":651,"children":652},{"style":184},[653],{"type":56,"value":187},{"type":50,"tag":91,"props":655,"children":656},{"style":190},[657],{"type":56,"value":658}," server ",{"type":50,"tag":91,"props":660,"children":661},{"style":196},[662],{"type":56,"value":199},{"type":50,"tag":91,"props":664,"children":665},{"style":196},[666],{"type":56,"value":667}," new",{"type":50,"tag":91,"props":669,"children":670},{"style":353},[671],{"type":56,"value":571},{"type":50,"tag":91,"props":673,"children":674},{"style":190},[675],{"type":56,"value":676},"(",{"type":50,"tag":91,"props":678,"children":679},{"style":196},[680],{"type":56,"value":681},"{",{"type":50,"tag":91,"props":683,"children":684},{"style":190},[685],{"type":56,"value":686}," typeDefs",{"type":50,"tag":91,"props":688,"children":689},{"style":196},[690],{"type":56,"value":412},{"type":50,"tag":91,"props":692,"children":693},{"style":190},[694],{"type":56,"value":320},{"type":50,"tag":91,"props":696,"children":697},{"style":196},[698],{"type":56,"value":699},"}",{"type":50,"tag":91,"props":701,"children":702},{"style":190},[703],{"type":56,"value":704},")",{"type":50,"tag":91,"props":706,"children":707},{"style":196},[708],{"type":56,"value":295},{"type":50,"tag":91,"props":710,"children":711},{"class":93,"line":239},[712],{"type":50,"tag":91,"props":713,"children":714},{"emptyLinePlaceholder":252},[715],{"type":56,"value":255},{"type":50,"tag":91,"props":717,"children":718},{"class":93,"line":248},[719,723,727,732,736,741,746,750,755,759],{"type":50,"tag":91,"props":720,"children":721},{"style":184},[722],{"type":56,"value":187},{"type":50,"tag":91,"props":724,"children":725},{"style":196},[726],{"type":56,"value":566},{"type":50,"tag":91,"props":728,"children":729},{"style":190},[730],{"type":56,"value":731}," url ",{"type":50,"tag":91,"props":733,"children":734},{"style":196},[735],{"type":56,"value":699},{"type":50,"tag":91,"props":737,"children":738},{"style":196},[739],{"type":56,"value":740}," =",{"type":50,"tag":91,"props":742,"children":743},{"style":558},[744],{"type":56,"value":745}," await",{"type":50,"tag":91,"props":747,"children":748},{"style":353},[749],{"type":56,"value":614},{"type":50,"tag":91,"props":751,"children":752},{"style":190},[753],{"type":56,"value":754},"(server",{"type":50,"tag":91,"props":756,"children":757},{"style":196},[758],{"type":56,"value":412},{"type":50,"tag":91,"props":760,"children":761},{"style":196},[762],{"type":56,"value":329},{"type":50,"tag":91,"props":764,"children":765},{"class":93,"line":258},[766,771,775,779,784,788,794],{"type":50,"tag":91,"props":767,"children":768},{"style":335},[769],{"type":56,"value":770},"  listen",{"type":50,"tag":91,"props":772,"children":773},{"style":196},[774],{"type":56,"value":343},{"type":50,"tag":91,"props":776,"children":777},{"style":196},[778],{"type":56,"value":566},{"type":50,"tag":91,"props":780,"children":781},{"style":335},[782],{"type":56,"value":783}," port",{"type":50,"tag":91,"props":785,"children":786},{"style":196},[787],{"type":56,"value":343},{"type":50,"tag":91,"props":789,"children":791},{"style":790},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[792],{"type":56,"value":793}," 4000",{"type":50,"tag":91,"props":795,"children":796},{"style":196},[797],{"type":56,"value":439},{"type":50,"tag":91,"props":799,"children":800},{"class":93,"line":267},[801,805,809],{"type":50,"tag":91,"props":802,"children":803},{"style":196},[804],{"type":56,"value":699},{"type":50,"tag":91,"props":806,"children":807},{"style":190},[808],{"type":56,"value":704},{"type":50,"tag":91,"props":810,"children":811},{"style":196},[812],{"type":56,"value":295},{"type":50,"tag":91,"props":814,"children":815},{"class":93,"line":276},[816],{"type":50,"tag":91,"props":817,"children":818},{"emptyLinePlaceholder":252},[819],{"type":56,"value":255},{"type":50,"tag":91,"props":821,"children":822},{"class":93,"line":284},[823,828,833,838,842,846,851,856,861,866,870],{"type":50,"tag":91,"props":824,"children":825},{"style":190},[826],{"type":56,"value":827},"console",{"type":50,"tag":91,"props":829,"children":830},{"style":196},[831],{"type":56,"value":832},".",{"type":50,"tag":91,"props":834,"children":835},{"style":353},[836],{"type":56,"value":837},"log",{"type":50,"tag":91,"props":839,"children":840},{"style":190},[841],{"type":56,"value":676},{"type":50,"tag":91,"props":843,"children":844},{"style":196},[845],{"type":56,"value":290},{"type":50,"tag":91,"props":847,"children":848},{"style":104},[849],{"type":56,"value":850},"Server ready at ",{"type":50,"tag":91,"props":852,"children":853},{"style":196},[854],{"type":56,"value":855},"${",{"type":50,"tag":91,"props":857,"children":858},{"style":190},[859],{"type":56,"value":860},"url",{"type":50,"tag":91,"props":862,"children":863},{"style":196},[864],{"type":56,"value":865},"}`",{"type":50,"tag":91,"props":867,"children":868},{"style":190},[869],{"type":56,"value":704},{"type":50,"tag":91,"props":871,"children":872},{"style":196},[873],{"type":56,"value":295},{"type":50,"tag":59,"props":875,"children":876},{},[877],{"type":50,"tag":536,"props":878,"children":879},{},[880],{"type":56,"value":881},"Express:",{"type":50,"tag":79,"props":883,"children":885},{"className":173,"code":884,"language":19,"meta":84,"style":84},"import { ApolloServer } from \"@apollo\u002Fserver\";\nimport { expressMiddleware } from \"@as-integrations\u002Fexpress5\";\nimport { ApolloServerPluginDrainHttpServer } from \"@apollo\u002Fserver\u002Fplugin\u002FdrainHttpServer\";\nimport express from \"express\";\nimport http from \"http\";\nimport cors from \"cors\";\n\nconst app = express();\nconst httpServer = http.createServer(app);\n\nconst server = new ApolloServer({\n  typeDefs,\n  resolvers,\n  plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],\n});\n\nawait server.start();\n\napp.use(\n  \"\u002Fgraphql\",\n  cors(),\n  express.json(),\n  expressMiddleware(server, {\n    context: async ({ req }) => ({ token: req.headers.authorization }),\n  }),\n);\n\nawait new Promise\u003Cvoid>((resolve) => httpServer.listen({ port: 4000 }, resolve));\nconsole.log(\"Server ready at http:\u002F\u002Flocalhost:4000\u002Fgraphql\");\n",[886],{"type":50,"tag":87,"props":887,"children":888},{"__ignoreMap":84},[889,928,969,1010,1044,1077,1110,1117,1146,1185,1192,1224,1237,1250,1298,1314,1322,1353,1361,1384,1406,1423,1449,1470,1560,1577,1589,1597,1698],{"type":50,"tag":91,"props":890,"children":891},{"class":93,"line":94},[892,896,900,904,908,912,916,920,924],{"type":50,"tag":91,"props":893,"children":894},{"style":558},[895],{"type":56,"value":561},{"type":50,"tag":91,"props":897,"children":898},{"style":196},[899],{"type":56,"value":566},{"type":50,"tag":91,"props":901,"children":902},{"style":190},[903],{"type":56,"value":571},{"type":50,"tag":91,"props":905,"children":906},{"style":196},[907],{"type":56,"value":576},{"type":50,"tag":91,"props":909,"children":910},{"style":558},[911],{"type":56,"value":581},{"type":50,"tag":91,"props":913,"children":914},{"style":196},[915],{"type":56,"value":397},{"type":50,"tag":91,"props":917,"children":918},{"style":104},[919],{"type":56,"value":590},{"type":50,"tag":91,"props":921,"children":922},{"style":196},[923],{"type":56,"value":407},{"type":50,"tag":91,"props":925,"children":926},{"style":196},[927],{"type":56,"value":295},{"type":50,"tag":91,"props":929,"children":930},{"class":93,"line":212},[931,935,939,944,948,952,956,961,965],{"type":50,"tag":91,"props":932,"children":933},{"style":558},[934],{"type":56,"value":561},{"type":50,"tag":91,"props":936,"children":937},{"style":196},[938],{"type":56,"value":566},{"type":50,"tag":91,"props":940,"children":941},{"style":190},[942],{"type":56,"value":943}," expressMiddleware",{"type":50,"tag":91,"props":945,"children":946},{"style":196},[947],{"type":56,"value":576},{"type":50,"tag":91,"props":949,"children":950},{"style":558},[951],{"type":56,"value":581},{"type":50,"tag":91,"props":953,"children":954},{"style":196},[955],{"type":56,"value":397},{"type":50,"tag":91,"props":957,"children":958},{"style":104},[959],{"type":56,"value":960},"@as-integrations\u002Fexpress5",{"type":50,"tag":91,"props":962,"children":963},{"style":196},[964],{"type":56,"value":407},{"type":50,"tag":91,"props":966,"children":967},{"style":196},[968],{"type":56,"value":295},{"type":50,"tag":91,"props":970,"children":971},{"class":93,"line":221},[972,976,980,985,989,993,997,1002,1006],{"type":50,"tag":91,"props":973,"children":974},{"style":558},[975],{"type":56,"value":561},{"type":50,"tag":91,"props":977,"children":978},{"style":196},[979],{"type":56,"value":566},{"type":50,"tag":91,"props":981,"children":982},{"style":190},[983],{"type":56,"value":984}," ApolloServerPluginDrainHttpServer",{"type":50,"tag":91,"props":986,"children":987},{"style":196},[988],{"type":56,"value":576},{"type":50,"tag":91,"props":990,"children":991},{"style":558},[992],{"type":56,"value":581},{"type":50,"tag":91,"props":994,"children":995},{"style":196},[996],{"type":56,"value":397},{"type":50,"tag":91,"props":998,"children":999},{"style":104},[1000],{"type":56,"value":1001},"@apollo\u002Fserver\u002Fplugin\u002FdrainHttpServer",{"type":50,"tag":91,"props":1003,"children":1004},{"style":196},[1005],{"type":56,"value":407},{"type":50,"tag":91,"props":1007,"children":1008},{"style":196},[1009],{"type":56,"value":295},{"type":50,"tag":91,"props":1011,"children":1012},{"class":93,"line":230},[1013,1017,1022,1027,1031,1036,1040],{"type":50,"tag":91,"props":1014,"children":1015},{"style":558},[1016],{"type":56,"value":561},{"type":50,"tag":91,"props":1018,"children":1019},{"style":190},[1020],{"type":56,"value":1021}," express ",{"type":50,"tag":91,"props":1023,"children":1024},{"style":558},[1025],{"type":56,"value":1026},"from",{"type":50,"tag":91,"props":1028,"children":1029},{"style":196},[1030],{"type":56,"value":397},{"type":50,"tag":91,"props":1032,"children":1033},{"style":104},[1034],{"type":56,"value":1035},"express",{"type":50,"tag":91,"props":1037,"children":1038},{"style":196},[1039],{"type":56,"value":407},{"type":50,"tag":91,"props":1041,"children":1042},{"style":196},[1043],{"type":56,"value":295},{"type":50,"tag":91,"props":1045,"children":1046},{"class":93,"line":239},[1047,1051,1056,1060,1064,1069,1073],{"type":50,"tag":91,"props":1048,"children":1049},{"style":558},[1050],{"type":56,"value":561},{"type":50,"tag":91,"props":1052,"children":1053},{"style":190},[1054],{"type":56,"value":1055}," http ",{"type":50,"tag":91,"props":1057,"children":1058},{"style":558},[1059],{"type":56,"value":1026},{"type":50,"tag":91,"props":1061,"children":1062},{"style":196},[1063],{"type":56,"value":397},{"type":50,"tag":91,"props":1065,"children":1066},{"style":104},[1067],{"type":56,"value":1068},"http",{"type":50,"tag":91,"props":1070,"children":1071},{"style":196},[1072],{"type":56,"value":407},{"type":50,"tag":91,"props":1074,"children":1075},{"style":196},[1076],{"type":56,"value":295},{"type":50,"tag":91,"props":1078,"children":1079},{"class":93,"line":248},[1080,1084,1089,1093,1097,1102,1106],{"type":50,"tag":91,"props":1081,"children":1082},{"style":558},[1083],{"type":56,"value":561},{"type":50,"tag":91,"props":1085,"children":1086},{"style":190},[1087],{"type":56,"value":1088}," cors ",{"type":50,"tag":91,"props":1090,"children":1091},{"style":558},[1092],{"type":56,"value":1026},{"type":50,"tag":91,"props":1094,"children":1095},{"style":196},[1096],{"type":56,"value":397},{"type":50,"tag":91,"props":1098,"children":1099},{"style":104},[1100],{"type":56,"value":1101},"cors",{"type":50,"tag":91,"props":1103,"children":1104},{"style":196},[1105],{"type":56,"value":407},{"type":50,"tag":91,"props":1107,"children":1108},{"style":196},[1109],{"type":56,"value":295},{"type":50,"tag":91,"props":1111,"children":1112},{"class":93,"line":258},[1113],{"type":50,"tag":91,"props":1114,"children":1115},{"emptyLinePlaceholder":252},[1116],{"type":56,"value":255},{"type":50,"tag":91,"props":1118,"children":1119},{"class":93,"line":267},[1120,1124,1129,1133,1137,1142],{"type":50,"tag":91,"props":1121,"children":1122},{"style":184},[1123],{"type":56,"value":187},{"type":50,"tag":91,"props":1125,"children":1126},{"style":190},[1127],{"type":56,"value":1128}," app ",{"type":50,"tag":91,"props":1130,"children":1131},{"style":196},[1132],{"type":56,"value":199},{"type":50,"tag":91,"props":1134,"children":1135},{"style":353},[1136],{"type":56,"value":154},{"type":50,"tag":91,"props":1138,"children":1139},{"style":190},[1140],{"type":56,"value":1141},"()",{"type":50,"tag":91,"props":1143,"children":1144},{"style":196},[1145],{"type":56,"value":295},{"type":50,"tag":91,"props":1147,"children":1148},{"class":93,"line":276},[1149,1153,1158,1162,1167,1171,1176,1181],{"type":50,"tag":91,"props":1150,"children":1151},{"style":184},[1152],{"type":56,"value":187},{"type":50,"tag":91,"props":1154,"children":1155},{"style":190},[1156],{"type":56,"value":1157}," httpServer ",{"type":50,"tag":91,"props":1159,"children":1160},{"style":196},[1161],{"type":56,"value":199},{"type":50,"tag":91,"props":1163,"children":1164},{"style":190},[1165],{"type":56,"value":1166}," http",{"type":50,"tag":91,"props":1168,"children":1169},{"style":196},[1170],{"type":56,"value":832},{"type":50,"tag":91,"props":1172,"children":1173},{"style":353},[1174],{"type":56,"value":1175},"createServer",{"type":50,"tag":91,"props":1177,"children":1178},{"style":190},[1179],{"type":56,"value":1180},"(app)",{"type":50,"tag":91,"props":1182,"children":1183},{"style":196},[1184],{"type":56,"value":295},{"type":50,"tag":91,"props":1186,"children":1187},{"class":93,"line":284},[1188],{"type":50,"tag":91,"props":1189,"children":1190},{"emptyLinePlaceholder":252},[1191],{"type":56,"value":255},{"type":50,"tag":91,"props":1193,"children":1194},{"class":93,"line":31},[1195,1199,1203,1207,1211,1215,1219],{"type":50,"tag":91,"props":1196,"children":1197},{"style":184},[1198],{"type":56,"value":187},{"type":50,"tag":91,"props":1200,"children":1201},{"style":190},[1202],{"type":56,"value":658},{"type":50,"tag":91,"props":1204,"children":1205},{"style":196},[1206],{"type":56,"value":199},{"type":50,"tag":91,"props":1208,"children":1209},{"style":196},[1210],{"type":56,"value":667},{"type":50,"tag":91,"props":1212,"children":1213},{"style":353},[1214],{"type":56,"value":571},{"type":50,"tag":91,"props":1216,"children":1217},{"style":190},[1218],{"type":56,"value":676},{"type":50,"tag":91,"props":1220,"children":1221},{"style":196},[1222],{"type":56,"value":1223},"{\n",{"type":50,"tag":91,"props":1225,"children":1227},{"class":93,"line":1226},12,[1228,1233],{"type":50,"tag":91,"props":1229,"children":1230},{"style":190},[1231],{"type":56,"value":1232},"  typeDefs",{"type":50,"tag":91,"props":1234,"children":1235},{"style":196},[1236],{"type":56,"value":509},{"type":50,"tag":91,"props":1238,"children":1240},{"class":93,"line":1239},13,[1241,1246],{"type":50,"tag":91,"props":1242,"children":1243},{"style":190},[1244],{"type":56,"value":1245},"  resolvers",{"type":50,"tag":91,"props":1247,"children":1248},{"style":196},[1249],{"type":56,"value":509},{"type":50,"tag":91,"props":1251,"children":1253},{"class":93,"line":1252},14,[1254,1259,1263,1268,1273,1277,1281,1285,1289,1294],{"type":50,"tag":91,"props":1255,"children":1256},{"style":335},[1257],{"type":56,"value":1258},"  plugins",{"type":50,"tag":91,"props":1260,"children":1261},{"style":196},[1262],{"type":56,"value":343},{"type":50,"tag":91,"props":1264,"children":1265},{"style":190},[1266],{"type":56,"value":1267}," [",{"type":50,"tag":91,"props":1269,"children":1270},{"style":353},[1271],{"type":56,"value":1272},"ApolloServerPluginDrainHttpServer",{"type":50,"tag":91,"props":1274,"children":1275},{"style":190},[1276],{"type":56,"value":676},{"type":50,"tag":91,"props":1278,"children":1279},{"style":196},[1280],{"type":56,"value":681},{"type":50,"tag":91,"props":1282,"children":1283},{"style":190},[1284],{"type":56,"value":1157},{"type":50,"tag":91,"props":1286,"children":1287},{"style":196},[1288],{"type":56,"value":699},{"type":50,"tag":91,"props":1290,"children":1291},{"style":190},[1292],{"type":56,"value":1293},")]",{"type":50,"tag":91,"props":1295,"children":1296},{"style":196},[1297],{"type":56,"value":509},{"type":50,"tag":91,"props":1299,"children":1301},{"class":93,"line":1300},15,[1302,1306,1310],{"type":50,"tag":91,"props":1303,"children":1304},{"style":196},[1305],{"type":56,"value":699},{"type":50,"tag":91,"props":1307,"children":1308},{"style":190},[1309],{"type":56,"value":704},{"type":50,"tag":91,"props":1311,"children":1312},{"style":196},[1313],{"type":56,"value":295},{"type":50,"tag":91,"props":1315,"children":1317},{"class":93,"line":1316},16,[1318],{"type":50,"tag":91,"props":1319,"children":1320},{"emptyLinePlaceholder":252},[1321],{"type":56,"value":255},{"type":50,"tag":91,"props":1323,"children":1325},{"class":93,"line":1324},17,[1326,1331,1336,1340,1345,1349],{"type":50,"tag":91,"props":1327,"children":1328},{"style":558},[1329],{"type":56,"value":1330},"await",{"type":50,"tag":91,"props":1332,"children":1333},{"style":190},[1334],{"type":56,"value":1335}," server",{"type":50,"tag":91,"props":1337,"children":1338},{"style":196},[1339],{"type":56,"value":832},{"type":50,"tag":91,"props":1341,"children":1342},{"style":353},[1343],{"type":56,"value":1344},"start",{"type":50,"tag":91,"props":1346,"children":1347},{"style":190},[1348],{"type":56,"value":1141},{"type":50,"tag":91,"props":1350,"children":1351},{"style":196},[1352],{"type":56,"value":295},{"type":50,"tag":91,"props":1354,"children":1356},{"class":93,"line":1355},18,[1357],{"type":50,"tag":91,"props":1358,"children":1359},{"emptyLinePlaceholder":252},[1360],{"type":56,"value":255},{"type":50,"tag":91,"props":1362,"children":1364},{"class":93,"line":1363},19,[1365,1370,1374,1379],{"type":50,"tag":91,"props":1366,"children":1367},{"style":190},[1368],{"type":56,"value":1369},"app",{"type":50,"tag":91,"props":1371,"children":1372},{"style":196},[1373],{"type":56,"value":832},{"type":50,"tag":91,"props":1375,"children":1376},{"style":353},[1377],{"type":56,"value":1378},"use",{"type":50,"tag":91,"props":1380,"children":1381},{"style":190},[1382],{"type":56,"value":1383},"(\n",{"type":50,"tag":91,"props":1385,"children":1387},{"class":93,"line":1386},20,[1388,1393,1398,1402],{"type":50,"tag":91,"props":1389,"children":1390},{"style":196},[1391],{"type":56,"value":1392},"  \"",{"type":50,"tag":91,"props":1394,"children":1395},{"style":104},[1396],{"type":56,"value":1397},"\u002Fgraphql",{"type":50,"tag":91,"props":1399,"children":1400},{"style":196},[1401],{"type":56,"value":407},{"type":50,"tag":91,"props":1403,"children":1404},{"style":196},[1405],{"type":56,"value":509},{"type":50,"tag":91,"props":1407,"children":1409},{"class":93,"line":1408},21,[1410,1415,1419],{"type":50,"tag":91,"props":1411,"children":1412},{"style":353},[1413],{"type":56,"value":1414},"  cors",{"type":50,"tag":91,"props":1416,"children":1417},{"style":190},[1418],{"type":56,"value":1141},{"type":50,"tag":91,"props":1420,"children":1421},{"style":196},[1422],{"type":56,"value":509},{"type":50,"tag":91,"props":1424,"children":1426},{"class":93,"line":1425},22,[1427,1432,1436,1441,1445],{"type":50,"tag":91,"props":1428,"children":1429},{"style":190},[1430],{"type":56,"value":1431},"  express",{"type":50,"tag":91,"props":1433,"children":1434},{"style":196},[1435],{"type":56,"value":832},{"type":50,"tag":91,"props":1437,"children":1438},{"style":353},[1439],{"type":56,"value":1440},"json",{"type":50,"tag":91,"props":1442,"children":1443},{"style":190},[1444],{"type":56,"value":1141},{"type":50,"tag":91,"props":1446,"children":1447},{"style":196},[1448],{"type":56,"value":509},{"type":50,"tag":91,"props":1450,"children":1452},{"class":93,"line":1451},23,[1453,1458,1462,1466],{"type":50,"tag":91,"props":1454,"children":1455},{"style":353},[1456],{"type":56,"value":1457},"  expressMiddleware",{"type":50,"tag":91,"props":1459,"children":1460},{"style":190},[1461],{"type":56,"value":754},{"type":50,"tag":91,"props":1463,"children":1464},{"style":196},[1465],{"type":56,"value":412},{"type":50,"tag":91,"props":1467,"children":1468},{"style":196},[1469],{"type":56,"value":329},{"type":50,"tag":91,"props":1471,"children":1473},{"class":93,"line":1472},24,[1474,1479,1483,1488,1493,1499,1504,1508,1513,1517,1522,1526,1530,1534,1539,1543,1548,1552,1556],{"type":50,"tag":91,"props":1475,"children":1476},{"style":353},[1477],{"type":56,"value":1478},"    context",{"type":50,"tag":91,"props":1480,"children":1481},{"style":196},[1482],{"type":56,"value":343},{"type":50,"tag":91,"props":1484,"children":1485},{"style":184},[1486],{"type":56,"value":1487}," async",{"type":50,"tag":91,"props":1489,"children":1490},{"style":196},[1491],{"type":56,"value":1492}," ({",{"type":50,"tag":91,"props":1494,"children":1496},{"style":1495},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[1497],{"type":56,"value":1498}," req",{"type":50,"tag":91,"props":1500,"children":1501},{"style":196},[1502],{"type":56,"value":1503}," })",{"type":50,"tag":91,"props":1505,"children":1506},{"style":184},[1507],{"type":56,"value":370},{"type":50,"tag":91,"props":1509,"children":1510},{"style":190},[1511],{"type":56,"value":1512}," (",{"type":50,"tag":91,"props":1514,"children":1515},{"style":196},[1516],{"type":56,"value":681},{"type":50,"tag":91,"props":1518,"children":1519},{"style":335},[1520],{"type":56,"value":1521}," token",{"type":50,"tag":91,"props":1523,"children":1524},{"style":196},[1525],{"type":56,"value":343},{"type":50,"tag":91,"props":1527,"children":1528},{"style":190},[1529],{"type":56,"value":1498},{"type":50,"tag":91,"props":1531,"children":1532},{"style":196},[1533],{"type":56,"value":832},{"type":50,"tag":91,"props":1535,"children":1536},{"style":190},[1537],{"type":56,"value":1538},"headers",{"type":50,"tag":91,"props":1540,"children":1541},{"style":196},[1542],{"type":56,"value":832},{"type":50,"tag":91,"props":1544,"children":1545},{"style":190},[1546],{"type":56,"value":1547},"authorization ",{"type":50,"tag":91,"props":1549,"children":1550},{"style":196},[1551],{"type":56,"value":699},{"type":50,"tag":91,"props":1553,"children":1554},{"style":190},[1555],{"type":56,"value":704},{"type":50,"tag":91,"props":1557,"children":1558},{"style":196},[1559],{"type":56,"value":509},{"type":50,"tag":91,"props":1561,"children":1563},{"class":93,"line":1562},25,[1564,1569,1573],{"type":50,"tag":91,"props":1565,"children":1566},{"style":196},[1567],{"type":56,"value":1568},"  }",{"type":50,"tag":91,"props":1570,"children":1571},{"style":190},[1572],{"type":56,"value":704},{"type":50,"tag":91,"props":1574,"children":1575},{"style":196},[1576],{"type":56,"value":509},{"type":50,"tag":91,"props":1578,"children":1580},{"class":93,"line":1579},26,[1581,1585],{"type":50,"tag":91,"props":1582,"children":1583},{"style":190},[1584],{"type":56,"value":704},{"type":50,"tag":91,"props":1586,"children":1587},{"style":196},[1588],{"type":56,"value":295},{"type":50,"tag":91,"props":1590,"children":1592},{"class":93,"line":1591},27,[1593],{"type":50,"tag":91,"props":1594,"children":1595},{"emptyLinePlaceholder":252},[1596],{"type":56,"value":255},{"type":50,"tag":91,"props":1598,"children":1600},{"class":93,"line":1599},28,[1601,1605,1609,1614,1619,1624,1629,1633,1637,1642,1646,1650,1655,1659,1664,1668,1672,1676,1680,1684,1689,1694],{"type":50,"tag":91,"props":1602,"children":1603},{"style":558},[1604],{"type":56,"value":1330},{"type":50,"tag":91,"props":1606,"children":1607},{"style":196},[1608],{"type":56,"value":667},{"type":50,"tag":91,"props":1610,"children":1611},{"style":98},[1612],{"type":56,"value":1613}," Promise",{"type":50,"tag":91,"props":1615,"children":1616},{"style":196},[1617],{"type":56,"value":1618},"\u003C",{"type":50,"tag":91,"props":1620,"children":1621},{"style":98},[1622],{"type":56,"value":1623},"void",{"type":50,"tag":91,"props":1625,"children":1626},{"style":196},[1627],{"type":56,"value":1628},">",{"type":50,"tag":91,"props":1630,"children":1631},{"style":190},[1632],{"type":56,"value":676},{"type":50,"tag":91,"props":1634,"children":1635},{"style":196},[1636],{"type":56,"value":676},{"type":50,"tag":91,"props":1638,"children":1639},{"style":1495},[1640],{"type":56,"value":1641},"resolve",{"type":50,"tag":91,"props":1643,"children":1644},{"style":196},[1645],{"type":56,"value":704},{"type":50,"tag":91,"props":1647,"children":1648},{"style":184},[1649],{"type":56,"value":370},{"type":50,"tag":91,"props":1651,"children":1652},{"style":190},[1653],{"type":56,"value":1654}," httpServer",{"type":50,"tag":91,"props":1656,"children":1657},{"style":196},[1658],{"type":56,"value":832},{"type":50,"tag":91,"props":1660,"children":1661},{"style":353},[1662],{"type":56,"value":1663},"listen",{"type":50,"tag":91,"props":1665,"children":1666},{"style":190},[1667],{"type":56,"value":676},{"type":50,"tag":91,"props":1669,"children":1670},{"style":196},[1671],{"type":56,"value":681},{"type":50,"tag":91,"props":1673,"children":1674},{"style":335},[1675],{"type":56,"value":783},{"type":50,"tag":91,"props":1677,"children":1678},{"style":196},[1679],{"type":56,"value":343},{"type":50,"tag":91,"props":1681,"children":1682},{"style":790},[1683],{"type":56,"value":793},{"type":50,"tag":91,"props":1685,"children":1686},{"style":196},[1687],{"type":56,"value":1688}," },",{"type":50,"tag":91,"props":1690,"children":1691},{"style":190},[1692],{"type":56,"value":1693}," resolve))",{"type":50,"tag":91,"props":1695,"children":1696},{"style":196},[1697],{"type":56,"value":295},{"type":50,"tag":91,"props":1699,"children":1701},{"class":93,"line":1700},29,[1702,1706,1710,1714,1718,1722,1727,1731,1735],{"type":50,"tag":91,"props":1703,"children":1704},{"style":190},[1705],{"type":56,"value":827},{"type":50,"tag":91,"props":1707,"children":1708},{"style":196},[1709],{"type":56,"value":832},{"type":50,"tag":91,"props":1711,"children":1712},{"style":353},[1713],{"type":56,"value":837},{"type":50,"tag":91,"props":1715,"children":1716},{"style":190},[1717],{"type":56,"value":676},{"type":50,"tag":91,"props":1719,"children":1720},{"style":196},[1721],{"type":56,"value":407},{"type":50,"tag":91,"props":1723,"children":1724},{"style":104},[1725],{"type":56,"value":1726},"Server ready at http:\u002F\u002Flocalhost:4000\u002Fgraphql",{"type":50,"tag":91,"props":1728,"children":1729},{"style":196},[1730],{"type":56,"value":407},{"type":50,"tag":91,"props":1732,"children":1733},{"style":190},[1734],{"type":56,"value":704},{"type":50,"tag":91,"props":1736,"children":1737},{"style":196},[1738],{"type":56,"value":295},{"type":50,"tag":65,"props":1740,"children":1742},{"id":1741},"schema-definition",[1743],{"type":56,"value":1744},"Schema Definition",{"type":50,"tag":72,"props":1746,"children":1748},{"id":1747},"scalar-types",[1749],{"type":56,"value":1750},"Scalar Types",{"type":50,"tag":1752,"props":1753,"children":1754},"ul",{},[1755,1767,1778,1789,1800],{"type":50,"tag":1756,"props":1757,"children":1758},"li",{},[1759,1765],{"type":50,"tag":87,"props":1760,"children":1762},{"className":1761},[],[1763],{"type":56,"value":1764},"Int",{"type":56,"value":1766}," - 32-bit integer",{"type":50,"tag":1756,"props":1768,"children":1769},{},[1770,1776],{"type":50,"tag":87,"props":1771,"children":1773},{"className":1772},[],[1774],{"type":56,"value":1775},"Float",{"type":56,"value":1777}," - Double-precision floating-point",{"type":50,"tag":1756,"props":1779,"children":1780},{},[1781,1787],{"type":50,"tag":87,"props":1782,"children":1784},{"className":1783},[],[1785],{"type":56,"value":1786},"String",{"type":56,"value":1788}," - UTF-8 string",{"type":50,"tag":1756,"props":1790,"children":1791},{},[1792,1798],{"type":50,"tag":87,"props":1793,"children":1795},{"className":1794},[],[1796],{"type":56,"value":1797},"Boolean",{"type":56,"value":1799}," - true\u002Ffalse",{"type":50,"tag":1756,"props":1801,"children":1802},{},[1803,1809],{"type":50,"tag":87,"props":1804,"children":1806},{"className":1805},[],[1807],{"type":56,"value":1808},"ID",{"type":56,"value":1810}," - Unique identifier (serialized as String)",{"type":50,"tag":72,"props":1812,"children":1814},{"id":1813},"type-definitions",[1815],{"type":56,"value":1816},"Type Definitions",{"type":50,"tag":79,"props":1818,"children":1821},{"className":1819,"code":1820,"language":15,"meta":84,"style":84},"language-graphql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","type User {\n  id: ID!\n  name: String!\n  email: String\n  posts: [Post!]!\n}\n\ntype Post {\n  id: ID!\n  title: String!\n  content: String\n  author: User!\n}\n\ninput CreatePostInput {\n  title: String!\n  content: String\n}\n\ntype Query {\n  user(id: ID!): User\n  users: [User!]!\n}\n\ntype Mutation {\n  createPost(input: CreatePostInput!): Post!\n}\n",[1822],{"type":50,"tag":87,"props":1823,"children":1824},{"__ignoreMap":84},[1825,1833,1841,1849,1857,1865,1873,1880,1888,1895,1903,1911,1919,1926,1933,1941,1948,1955,1962,1969,1977,1985,1993,2000,2007,2015,2023],{"type":50,"tag":91,"props":1826,"children":1827},{"class":93,"line":94},[1828],{"type":50,"tag":91,"props":1829,"children":1830},{},[1831],{"type":56,"value":1832},"type User {\n",{"type":50,"tag":91,"props":1834,"children":1835},{"class":93,"line":212},[1836],{"type":50,"tag":91,"props":1837,"children":1838},{},[1839],{"type":56,"value":1840},"  id: ID!\n",{"type":50,"tag":91,"props":1842,"children":1843},{"class":93,"line":221},[1844],{"type":50,"tag":91,"props":1845,"children":1846},{},[1847],{"type":56,"value":1848},"  name: String!\n",{"type":50,"tag":91,"props":1850,"children":1851},{"class":93,"line":230},[1852],{"type":50,"tag":91,"props":1853,"children":1854},{},[1855],{"type":56,"value":1856},"  email: String\n",{"type":50,"tag":91,"props":1858,"children":1859},{"class":93,"line":239},[1860],{"type":50,"tag":91,"props":1861,"children":1862},{},[1863],{"type":56,"value":1864},"  posts: [Post!]!\n",{"type":50,"tag":91,"props":1866,"children":1867},{"class":93,"line":248},[1868],{"type":50,"tag":91,"props":1869,"children":1870},{},[1871],{"type":56,"value":1872},"}\n",{"type":50,"tag":91,"props":1874,"children":1875},{"class":93,"line":258},[1876],{"type":50,"tag":91,"props":1877,"children":1878},{"emptyLinePlaceholder":252},[1879],{"type":56,"value":255},{"type":50,"tag":91,"props":1881,"children":1882},{"class":93,"line":267},[1883],{"type":50,"tag":91,"props":1884,"children":1885},{},[1886],{"type":56,"value":1887},"type Post {\n",{"type":50,"tag":91,"props":1889,"children":1890},{"class":93,"line":276},[1891],{"type":50,"tag":91,"props":1892,"children":1893},{},[1894],{"type":56,"value":1840},{"type":50,"tag":91,"props":1896,"children":1897},{"class":93,"line":284},[1898],{"type":50,"tag":91,"props":1899,"children":1900},{},[1901],{"type":56,"value":1902},"  title: String!\n",{"type":50,"tag":91,"props":1904,"children":1905},{"class":93,"line":31},[1906],{"type":50,"tag":91,"props":1907,"children":1908},{},[1909],{"type":56,"value":1910},"  content: String\n",{"type":50,"tag":91,"props":1912,"children":1913},{"class":93,"line":1226},[1914],{"type":50,"tag":91,"props":1915,"children":1916},{},[1917],{"type":56,"value":1918},"  author: User!\n",{"type":50,"tag":91,"props":1920,"children":1921},{"class":93,"line":1239},[1922],{"type":50,"tag":91,"props":1923,"children":1924},{},[1925],{"type":56,"value":1872},{"type":50,"tag":91,"props":1927,"children":1928},{"class":93,"line":1252},[1929],{"type":50,"tag":91,"props":1930,"children":1931},{"emptyLinePlaceholder":252},[1932],{"type":56,"value":255},{"type":50,"tag":91,"props":1934,"children":1935},{"class":93,"line":1300},[1936],{"type":50,"tag":91,"props":1937,"children":1938},{},[1939],{"type":56,"value":1940},"input CreatePostInput {\n",{"type":50,"tag":91,"props":1942,"children":1943},{"class":93,"line":1316},[1944],{"type":50,"tag":91,"props":1945,"children":1946},{},[1947],{"type":56,"value":1902},{"type":50,"tag":91,"props":1949,"children":1950},{"class":93,"line":1324},[1951],{"type":50,"tag":91,"props":1952,"children":1953},{},[1954],{"type":56,"value":1910},{"type":50,"tag":91,"props":1956,"children":1957},{"class":93,"line":1355},[1958],{"type":50,"tag":91,"props":1959,"children":1960},{},[1961],{"type":56,"value":1872},{"type":50,"tag":91,"props":1963,"children":1964},{"class":93,"line":1363},[1965],{"type":50,"tag":91,"props":1966,"children":1967},{"emptyLinePlaceholder":252},[1968],{"type":56,"value":255},{"type":50,"tag":91,"props":1970,"children":1971},{"class":93,"line":1386},[1972],{"type":50,"tag":91,"props":1973,"children":1974},{},[1975],{"type":56,"value":1976},"type Query {\n",{"type":50,"tag":91,"props":1978,"children":1979},{"class":93,"line":1408},[1980],{"type":50,"tag":91,"props":1981,"children":1982},{},[1983],{"type":56,"value":1984},"  user(id: ID!): User\n",{"type":50,"tag":91,"props":1986,"children":1987},{"class":93,"line":1425},[1988],{"type":50,"tag":91,"props":1989,"children":1990},{},[1991],{"type":56,"value":1992},"  users: [User!]!\n",{"type":50,"tag":91,"props":1994,"children":1995},{"class":93,"line":1451},[1996],{"type":50,"tag":91,"props":1997,"children":1998},{},[1999],{"type":56,"value":1872},{"type":50,"tag":91,"props":2001,"children":2002},{"class":93,"line":1472},[2003],{"type":50,"tag":91,"props":2004,"children":2005},{"emptyLinePlaceholder":252},[2006],{"type":56,"value":255},{"type":50,"tag":91,"props":2008,"children":2009},{"class":93,"line":1562},[2010],{"type":50,"tag":91,"props":2011,"children":2012},{},[2013],{"type":56,"value":2014},"type Mutation {\n",{"type":50,"tag":91,"props":2016,"children":2017},{"class":93,"line":1579},[2018],{"type":50,"tag":91,"props":2019,"children":2020},{},[2021],{"type":56,"value":2022},"  createPost(input: CreatePostInput!): Post!\n",{"type":50,"tag":91,"props":2024,"children":2025},{"class":93,"line":1591},[2026],{"type":50,"tag":91,"props":2027,"children":2028},{},[2029],{"type":56,"value":1872},{"type":50,"tag":72,"props":2031,"children":2033},{"id":2032},"enums-and-interfaces",[2034],{"type":56,"value":2035},"Enums and Interfaces",{"type":50,"tag":79,"props":2037,"children":2039},{"className":1819,"code":2038,"language":15,"meta":84,"style":84},"enum Status {\n  DRAFT\n  PUBLISHED\n  ARCHIVED\n}\n\ninterface Node {\n  id: ID!\n}\n\ntype Article implements Node {\n  id: ID!\n  title: String!\n}\n",[2040],{"type":50,"tag":87,"props":2041,"children":2042},{"__ignoreMap":84},[2043,2051,2059,2067,2075,2082,2089,2097,2104,2111,2118,2126,2133,2140],{"type":50,"tag":91,"props":2044,"children":2045},{"class":93,"line":94},[2046],{"type":50,"tag":91,"props":2047,"children":2048},{},[2049],{"type":56,"value":2050},"enum Status {\n",{"type":50,"tag":91,"props":2052,"children":2053},{"class":93,"line":212},[2054],{"type":50,"tag":91,"props":2055,"children":2056},{},[2057],{"type":56,"value":2058},"  DRAFT\n",{"type":50,"tag":91,"props":2060,"children":2061},{"class":93,"line":221},[2062],{"type":50,"tag":91,"props":2063,"children":2064},{},[2065],{"type":56,"value":2066},"  PUBLISHED\n",{"type":50,"tag":91,"props":2068,"children":2069},{"class":93,"line":230},[2070],{"type":50,"tag":91,"props":2071,"children":2072},{},[2073],{"type":56,"value":2074},"  ARCHIVED\n",{"type":50,"tag":91,"props":2076,"children":2077},{"class":93,"line":239},[2078],{"type":50,"tag":91,"props":2079,"children":2080},{},[2081],{"type":56,"value":1872},{"type":50,"tag":91,"props":2083,"children":2084},{"class":93,"line":248},[2085],{"type":50,"tag":91,"props":2086,"children":2087},{"emptyLinePlaceholder":252},[2088],{"type":56,"value":255},{"type":50,"tag":91,"props":2090,"children":2091},{"class":93,"line":258},[2092],{"type":50,"tag":91,"props":2093,"children":2094},{},[2095],{"type":56,"value":2096},"interface Node {\n",{"type":50,"tag":91,"props":2098,"children":2099},{"class":93,"line":267},[2100],{"type":50,"tag":91,"props":2101,"children":2102},{},[2103],{"type":56,"value":1840},{"type":50,"tag":91,"props":2105,"children":2106},{"class":93,"line":276},[2107],{"type":50,"tag":91,"props":2108,"children":2109},{},[2110],{"type":56,"value":1872},{"type":50,"tag":91,"props":2112,"children":2113},{"class":93,"line":284},[2114],{"type":50,"tag":91,"props":2115,"children":2116},{"emptyLinePlaceholder":252},[2117],{"type":56,"value":255},{"type":50,"tag":91,"props":2119,"children":2120},{"class":93,"line":31},[2121],{"type":50,"tag":91,"props":2122,"children":2123},{},[2124],{"type":56,"value":2125},"type Article implements Node {\n",{"type":50,"tag":91,"props":2127,"children":2128},{"class":93,"line":1226},[2129],{"type":50,"tag":91,"props":2130,"children":2131},{},[2132],{"type":56,"value":1840},{"type":50,"tag":91,"props":2134,"children":2135},{"class":93,"line":1239},[2136],{"type":50,"tag":91,"props":2137,"children":2138},{},[2139],{"type":56,"value":1902},{"type":50,"tag":91,"props":2141,"children":2142},{"class":93,"line":1252},[2143],{"type":50,"tag":91,"props":2144,"children":2145},{},[2146],{"type":56,"value":1872},{"type":50,"tag":65,"props":2148,"children":2150},{"id":2149},"resolvers-overview",[2151],{"type":56,"value":2152},"Resolvers Overview",{"type":50,"tag":59,"props":2154,"children":2155},{},[2156,2158],{"type":56,"value":2157},"Resolvers follow the signature: ",{"type":50,"tag":87,"props":2159,"children":2161},{"className":2160},[],[2162],{"type":56,"value":2163},"(parent, args, contextValue, info)",{"type":50,"tag":1752,"props":2165,"children":2166},{},[2167,2177,2187,2197],{"type":50,"tag":1756,"props":2168,"children":2169},{},[2170,2175],{"type":50,"tag":536,"props":2171,"children":2172},{},[2173],{"type":56,"value":2174},"parent",{"type":56,"value":2176},": Result from parent resolver (root resolvers receive undefined)",{"type":50,"tag":1756,"props":2178,"children":2179},{},[2180,2185],{"type":50,"tag":536,"props":2181,"children":2182},{},[2183],{"type":56,"value":2184},"args",{"type":56,"value":2186},": Arguments passed to the field",{"type":50,"tag":1756,"props":2188,"children":2189},{},[2190,2195],{"type":50,"tag":536,"props":2191,"children":2192},{},[2193],{"type":56,"value":2194},"contextValue",{"type":56,"value":2196},": Shared context object (auth, dataSources, etc.)",{"type":50,"tag":1756,"props":2198,"children":2199},{},[2200,2205],{"type":50,"tag":536,"props":2201,"children":2202},{},[2203],{"type":56,"value":2204},"info",{"type":56,"value":2206},": Field-specific info and schema details (rarely used)",{"type":50,"tag":79,"props":2208,"children":2210},{"className":173,"code":2209,"language":19,"meta":84,"style":84},"const resolvers = {\n  Query: {\n    user: async (_, { id }, { dataSources }) => {\n      return dataSources.usersAPI.getUser(id);\n    },\n  },\n  User: {\n    posts: async (parent, _, { dataSources }) => {\n      return dataSources.postsAPI.getPostsByAuthor(parent.id);\n    },\n  },\n  Mutation: {\n    createPost: async (_, { input }, { dataSources, user }) => {\n      if (!user) throw new GraphQLError(\"Not authenticated\");\n      return dataSources.postsAPI.create({ ...input, authorId: user.id });\n    },\n  },\n};\n",[2211],{"type":50,"tag":87,"props":2212,"children":2213},{"__ignoreMap":84},[2214,2233,2248,2311,2358,2366,2373,2389,2446,2499,2506,2513,2529,2599,2665,2748,2755,2762],{"type":50,"tag":91,"props":2215,"children":2216},{"class":93,"line":94},[2217,2221,2225,2229],{"type":50,"tag":91,"props":2218,"children":2219},{"style":184},[2220],{"type":56,"value":187},{"type":50,"tag":91,"props":2222,"children":2223},{"style":190},[2224],{"type":56,"value":320},{"type":50,"tag":91,"props":2226,"children":2227},{"style":196},[2228],{"type":56,"value":199},{"type":50,"tag":91,"props":2230,"children":2231},{"style":196},[2232],{"type":56,"value":329},{"type":50,"tag":91,"props":2234,"children":2235},{"class":93,"line":212},[2236,2240,2244],{"type":50,"tag":91,"props":2237,"children":2238},{"style":335},[2239],{"type":56,"value":338},{"type":50,"tag":91,"props":2241,"children":2242},{"style":196},[2243],{"type":56,"value":343},{"type":50,"tag":91,"props":2245,"children":2246},{"style":196},[2247],{"type":56,"value":329},{"type":50,"tag":91,"props":2249,"children":2250},{"class":93,"line":221},[2251,2256,2260,2264,2268,2273,2277,2281,2286,2290,2294,2299,2303,2307],{"type":50,"tag":91,"props":2252,"children":2253},{"style":353},[2254],{"type":56,"value":2255},"    user",{"type":50,"tag":91,"props":2257,"children":2258},{"style":196},[2259],{"type":56,"value":343},{"type":50,"tag":91,"props":2261,"children":2262},{"style":184},[2263],{"type":56,"value":1487},{"type":50,"tag":91,"props":2265,"children":2266},{"style":196},[2267],{"type":56,"value":1512},{"type":50,"tag":91,"props":2269,"children":2270},{"style":1495},[2271],{"type":56,"value":2272},"_",{"type":50,"tag":91,"props":2274,"children":2275},{"style":196},[2276],{"type":56,"value":412},{"type":50,"tag":91,"props":2278,"children":2279},{"style":196},[2280],{"type":56,"value":566},{"type":50,"tag":91,"props":2282,"children":2283},{"style":1495},[2284],{"type":56,"value":2285}," id",{"type":50,"tag":91,"props":2287,"children":2288},{"style":196},[2289],{"type":56,"value":1688},{"type":50,"tag":91,"props":2291,"children":2292},{"style":196},[2293],{"type":56,"value":566},{"type":50,"tag":91,"props":2295,"children":2296},{"style":1495},[2297],{"type":56,"value":2298}," dataSources",{"type":50,"tag":91,"props":2300,"children":2301},{"style":196},[2302],{"type":56,"value":1503},{"type":50,"tag":91,"props":2304,"children":2305},{"style":184},[2306],{"type":56,"value":370},{"type":50,"tag":91,"props":2308,"children":2309},{"style":196},[2310],{"type":56,"value":329},{"type":50,"tag":91,"props":2312,"children":2313},{"class":93,"line":230},[2314,2319,2323,2327,2332,2336,2341,2345,2350,2354],{"type":50,"tag":91,"props":2315,"children":2316},{"style":558},[2317],{"type":56,"value":2318},"      return",{"type":50,"tag":91,"props":2320,"children":2321},{"style":190},[2322],{"type":56,"value":2298},{"type":50,"tag":91,"props":2324,"children":2325},{"style":196},[2326],{"type":56,"value":832},{"type":50,"tag":91,"props":2328,"children":2329},{"style":190},[2330],{"type":56,"value":2331},"usersAPI",{"type":50,"tag":91,"props":2333,"children":2334},{"style":196},[2335],{"type":56,"value":832},{"type":50,"tag":91,"props":2337,"children":2338},{"style":353},[2339],{"type":56,"value":2340},"getUser",{"type":50,"tag":91,"props":2342,"children":2343},{"style":335},[2344],{"type":56,"value":676},{"type":50,"tag":91,"props":2346,"children":2347},{"style":190},[2348],{"type":56,"value":2349},"id",{"type":50,"tag":91,"props":2351,"children":2352},{"style":335},[2353],{"type":56,"value":704},{"type":50,"tag":91,"props":2355,"children":2356},{"style":196},[2357],{"type":56,"value":295},{"type":50,"tag":91,"props":2359,"children":2360},{"class":93,"line":239},[2361],{"type":50,"tag":91,"props":2362,"children":2363},{"style":196},[2364],{"type":56,"value":2365},"    },\n",{"type":50,"tag":91,"props":2367,"children":2368},{"class":93,"line":248},[2369],{"type":50,"tag":91,"props":2370,"children":2371},{"style":196},[2372],{"type":56,"value":517},{"type":50,"tag":91,"props":2374,"children":2375},{"class":93,"line":258},[2376,2381,2385],{"type":50,"tag":91,"props":2377,"children":2378},{"style":335},[2379],{"type":56,"value":2380},"  User",{"type":50,"tag":91,"props":2382,"children":2383},{"style":196},[2384],{"type":56,"value":343},{"type":50,"tag":91,"props":2386,"children":2387},{"style":196},[2388],{"type":56,"value":329},{"type":50,"tag":91,"props":2390,"children":2391},{"class":93,"line":267},[2392,2397,2401,2405,2409,2413,2417,2422,2426,2430,2434,2438,2442],{"type":50,"tag":91,"props":2393,"children":2394},{"style":353},[2395],{"type":56,"value":2396},"    posts",{"type":50,"tag":91,"props":2398,"children":2399},{"style":196},[2400],{"type":56,"value":343},{"type":50,"tag":91,"props":2402,"children":2403},{"style":184},[2404],{"type":56,"value":1487},{"type":50,"tag":91,"props":2406,"children":2407},{"style":196},[2408],{"type":56,"value":1512},{"type":50,"tag":91,"props":2410,"children":2411},{"style":1495},[2412],{"type":56,"value":2174},{"type":50,"tag":91,"props":2414,"children":2415},{"style":196},[2416],{"type":56,"value":412},{"type":50,"tag":91,"props":2418,"children":2419},{"style":1495},[2420],{"type":56,"value":2421}," _",{"type":50,"tag":91,"props":2423,"children":2424},{"style":196},[2425],{"type":56,"value":412},{"type":50,"tag":91,"props":2427,"children":2428},{"style":196},[2429],{"type":56,"value":566},{"type":50,"tag":91,"props":2431,"children":2432},{"style":1495},[2433],{"type":56,"value":2298},{"type":50,"tag":91,"props":2435,"children":2436},{"style":196},[2437],{"type":56,"value":1503},{"type":50,"tag":91,"props":2439,"children":2440},{"style":184},[2441],{"type":56,"value":370},{"type":50,"tag":91,"props":2443,"children":2444},{"style":196},[2445],{"type":56,"value":329},{"type":50,"tag":91,"props":2447,"children":2448},{"class":93,"line":276},[2449,2453,2457,2461,2466,2470,2475,2479,2483,2487,2491,2495],{"type":50,"tag":91,"props":2450,"children":2451},{"style":558},[2452],{"type":56,"value":2318},{"type":50,"tag":91,"props":2454,"children":2455},{"style":190},[2456],{"type":56,"value":2298},{"type":50,"tag":91,"props":2458,"children":2459},{"style":196},[2460],{"type":56,"value":832},{"type":50,"tag":91,"props":2462,"children":2463},{"style":190},[2464],{"type":56,"value":2465},"postsAPI",{"type":50,"tag":91,"props":2467,"children":2468},{"style":196},[2469],{"type":56,"value":832},{"type":50,"tag":91,"props":2471,"children":2472},{"style":353},[2473],{"type":56,"value":2474},"getPostsByAuthor",{"type":50,"tag":91,"props":2476,"children":2477},{"style":335},[2478],{"type":56,"value":676},{"type":50,"tag":91,"props":2480,"children":2481},{"style":190},[2482],{"type":56,"value":2174},{"type":50,"tag":91,"props":2484,"children":2485},{"style":196},[2486],{"type":56,"value":832},{"type":50,"tag":91,"props":2488,"children":2489},{"style":190},[2490],{"type":56,"value":2349},{"type":50,"tag":91,"props":2492,"children":2493},{"style":335},[2494],{"type":56,"value":704},{"type":50,"tag":91,"props":2496,"children":2497},{"style":196},[2498],{"type":56,"value":295},{"type":50,"tag":91,"props":2500,"children":2501},{"class":93,"line":284},[2502],{"type":50,"tag":91,"props":2503,"children":2504},{"style":196},[2505],{"type":56,"value":2365},{"type":50,"tag":91,"props":2507,"children":2508},{"class":93,"line":31},[2509],{"type":50,"tag":91,"props":2510,"children":2511},{"style":196},[2512],{"type":56,"value":517},{"type":50,"tag":91,"props":2514,"children":2515},{"class":93,"line":1226},[2516,2521,2525],{"type":50,"tag":91,"props":2517,"children":2518},{"style":335},[2519],{"type":56,"value":2520},"  Mutation",{"type":50,"tag":91,"props":2522,"children":2523},{"style":196},[2524],{"type":56,"value":343},{"type":50,"tag":91,"props":2526,"children":2527},{"style":196},[2528],{"type":56,"value":329},{"type":50,"tag":91,"props":2530,"children":2531},{"class":93,"line":1239},[2532,2537,2541,2545,2549,2553,2557,2561,2566,2570,2574,2578,2582,2587,2591,2595],{"type":50,"tag":91,"props":2533,"children":2534},{"style":353},[2535],{"type":56,"value":2536},"    createPost",{"type":50,"tag":91,"props":2538,"children":2539},{"style":196},[2540],{"type":56,"value":343},{"type":50,"tag":91,"props":2542,"children":2543},{"style":184},[2544],{"type":56,"value":1487},{"type":50,"tag":91,"props":2546,"children":2547},{"style":196},[2548],{"type":56,"value":1512},{"type":50,"tag":91,"props":2550,"children":2551},{"style":1495},[2552],{"type":56,"value":2272},{"type":50,"tag":91,"props":2554,"children":2555},{"style":196},[2556],{"type":56,"value":412},{"type":50,"tag":91,"props":2558,"children":2559},{"style":196},[2560],{"type":56,"value":566},{"type":50,"tag":91,"props":2562,"children":2563},{"style":1495},[2564],{"type":56,"value":2565}," input",{"type":50,"tag":91,"props":2567,"children":2568},{"style":196},[2569],{"type":56,"value":1688},{"type":50,"tag":91,"props":2571,"children":2572},{"style":196},[2573],{"type":56,"value":566},{"type":50,"tag":91,"props":2575,"children":2576},{"style":1495},[2577],{"type":56,"value":2298},{"type":50,"tag":91,"props":2579,"children":2580},{"style":196},[2581],{"type":56,"value":412},{"type":50,"tag":91,"props":2583,"children":2584},{"style":1495},[2585],{"type":56,"value":2586}," user",{"type":50,"tag":91,"props":2588,"children":2589},{"style":196},[2590],{"type":56,"value":1503},{"type":50,"tag":91,"props":2592,"children":2593},{"style":184},[2594],{"type":56,"value":370},{"type":50,"tag":91,"props":2596,"children":2597},{"style":196},[2598],{"type":56,"value":329},{"type":50,"tag":91,"props":2600,"children":2601},{"class":93,"line":1252},[2602,2607,2611,2616,2621,2626,2631,2635,2640,2644,2648,2653,2657,2661],{"type":50,"tag":91,"props":2603,"children":2604},{"style":558},[2605],{"type":56,"value":2606},"      if",{"type":50,"tag":91,"props":2608,"children":2609},{"style":335},[2610],{"type":56,"value":1512},{"type":50,"tag":91,"props":2612,"children":2613},{"style":196},[2614],{"type":56,"value":2615},"!",{"type":50,"tag":91,"props":2617,"children":2618},{"style":190},[2619],{"type":56,"value":2620},"user",{"type":50,"tag":91,"props":2622,"children":2623},{"style":335},[2624],{"type":56,"value":2625},") ",{"type":50,"tag":91,"props":2627,"children":2628},{"style":558},[2629],{"type":56,"value":2630},"throw",{"type":50,"tag":91,"props":2632,"children":2633},{"style":196},[2634],{"type":56,"value":667},{"type":50,"tag":91,"props":2636,"children":2637},{"style":353},[2638],{"type":56,"value":2639}," GraphQLError",{"type":50,"tag":91,"props":2641,"children":2642},{"style":335},[2643],{"type":56,"value":676},{"type":50,"tag":91,"props":2645,"children":2646},{"style":196},[2647],{"type":56,"value":407},{"type":50,"tag":91,"props":2649,"children":2650},{"style":104},[2651],{"type":56,"value":2652},"Not authenticated",{"type":50,"tag":91,"props":2654,"children":2655},{"style":196},[2656],{"type":56,"value":407},{"type":50,"tag":91,"props":2658,"children":2659},{"style":335},[2660],{"type":56,"value":704},{"type":50,"tag":91,"props":2662,"children":2663},{"style":196},[2664],{"type":56,"value":295},{"type":50,"tag":91,"props":2666,"children":2667},{"class":93,"line":1300},[2668,2672,2676,2680,2684,2688,2693,2697,2701,2706,2711,2715,2720,2724,2728,2732,2736,2740,2744],{"type":50,"tag":91,"props":2669,"children":2670},{"style":558},[2671],{"type":56,"value":2318},{"type":50,"tag":91,"props":2673,"children":2674},{"style":190},[2675],{"type":56,"value":2298},{"type":50,"tag":91,"props":2677,"children":2678},{"style":196},[2679],{"type":56,"value":832},{"type":50,"tag":91,"props":2681,"children":2682},{"style":190},[2683],{"type":56,"value":2465},{"type":50,"tag":91,"props":2685,"children":2686},{"style":196},[2687],{"type":56,"value":832},{"type":50,"tag":91,"props":2689,"children":2690},{"style":353},[2691],{"type":56,"value":2692},"create",{"type":50,"tag":91,"props":2694,"children":2695},{"style":335},[2696],{"type":56,"value":676},{"type":50,"tag":91,"props":2698,"children":2699},{"style":196},[2700],{"type":56,"value":681},{"type":50,"tag":91,"props":2702,"children":2703},{"style":196},[2704],{"type":56,"value":2705}," ...",{"type":50,"tag":91,"props":2707,"children":2708},{"style":190},[2709],{"type":56,"value":2710},"input",{"type":50,"tag":91,"props":2712,"children":2713},{"style":196},[2714],{"type":56,"value":412},{"type":50,"tag":91,"props":2716,"children":2717},{"style":335},[2718],{"type":56,"value":2719}," authorId",{"type":50,"tag":91,"props":2721,"children":2722},{"style":196},[2723],{"type":56,"value":343},{"type":50,"tag":91,"props":2725,"children":2726},{"style":190},[2727],{"type":56,"value":2586},{"type":50,"tag":91,"props":2729,"children":2730},{"style":196},[2731],{"type":56,"value":832},{"type":50,"tag":91,"props":2733,"children":2734},{"style":190},[2735],{"type":56,"value":2349},{"type":50,"tag":91,"props":2737,"children":2738},{"style":196},[2739],{"type":56,"value":576},{"type":50,"tag":91,"props":2741,"children":2742},{"style":335},[2743],{"type":56,"value":704},{"type":50,"tag":91,"props":2745,"children":2746},{"style":196},[2747],{"type":56,"value":295},{"type":50,"tag":91,"props":2749,"children":2750},{"class":93,"line":1316},[2751],{"type":50,"tag":91,"props":2752,"children":2753},{"style":196},[2754],{"type":56,"value":2365},{"type":50,"tag":91,"props":2756,"children":2757},{"class":93,"line":1324},[2758],{"type":50,"tag":91,"props":2759,"children":2760},{"style":196},[2761],{"type":56,"value":517},{"type":50,"tag":91,"props":2763,"children":2764},{"class":93,"line":1355},[2765],{"type":50,"tag":91,"props":2766,"children":2767},{"style":196},[2768],{"type":56,"value":525},{"type":50,"tag":65,"props":2770,"children":2772},{"id":2771},"context-setup",[2773],{"type":56,"value":2774},"Context Setup",{"type":50,"tag":59,"props":2776,"children":2777},{},[2778],{"type":56,"value":2779},"Context is created per-request and passed to all resolvers.",{"type":50,"tag":79,"props":2781,"children":2783},{"className":173,"code":2782,"language":19,"meta":84,"style":84},"interface MyContext {\n  token?: string;\n  user?: User;\n  dataSources: {\n    usersAPI: UsersDataSource;\n    postsAPI: PostsDataSource;\n  };\n}\n\nconst server = new ApolloServer\u003CMyContext>({\n  typeDefs,\n  resolvers,\n});\n\n\u002F\u002F Standalone\nconst { url } = await startStandaloneServer(server, {\n  context: async ({ req }) => ({\n    token: req.headers.authorization || \"\",\n    user: await getUser(req.headers.authorization || \"\"),\n    dataSources: {\n      usersAPI: new UsersDataSource(),\n      postsAPI: new PostsDataSource(),\n    },\n  }),\n});\n\n\u002F\u002F Express middleware\nexpressMiddleware(server, {\n  context: async ({ req, res }) => ({\n    token: req.headers.authorization,\n    user: await getUser(req.headers.authorization),\n    dataSources: {\n      usersAPI: new UsersDataSource(),\n      postsAPI: new PostsDataSource(),\n    },\n  }),\n});\n",[2784],{"type":50,"tag":87,"props":2785,"children":2786},{"__ignoreMap":84},[2787,2804,2826,2847,2863,2884,2905,2913,2920,2927,2971,2982,2993,3008,3015,3024,3067,3107,3153,3210,3226,3254,3282,3289,3304,3319,3326,3334,3354,3402,3439,3484,3500,3528,3556,3564,3580],{"type":50,"tag":91,"props":2788,"children":2789},{"class":93,"line":94},[2790,2795,2800],{"type":50,"tag":91,"props":2791,"children":2792},{"style":184},[2793],{"type":56,"value":2794},"interface",{"type":50,"tag":91,"props":2796,"children":2797},{"style":98},[2798],{"type":56,"value":2799}," MyContext",{"type":50,"tag":91,"props":2801,"children":2802},{"style":196},[2803],{"type":56,"value":329},{"type":50,"tag":91,"props":2805,"children":2806},{"class":93,"line":212},[2807,2812,2817,2822],{"type":50,"tag":91,"props":2808,"children":2809},{"style":335},[2810],{"type":56,"value":2811},"  token",{"type":50,"tag":91,"props":2813,"children":2814},{"style":196},[2815],{"type":56,"value":2816},"?:",{"type":50,"tag":91,"props":2818,"children":2819},{"style":98},[2820],{"type":56,"value":2821}," string",{"type":50,"tag":91,"props":2823,"children":2824},{"style":196},[2825],{"type":56,"value":295},{"type":50,"tag":91,"props":2827,"children":2828},{"class":93,"line":221},[2829,2834,2838,2843],{"type":50,"tag":91,"props":2830,"children":2831},{"style":335},[2832],{"type":56,"value":2833},"  user",{"type":50,"tag":91,"props":2835,"children":2836},{"style":196},[2837],{"type":56,"value":2816},{"type":50,"tag":91,"props":2839,"children":2840},{"style":98},[2841],{"type":56,"value":2842}," User",{"type":50,"tag":91,"props":2844,"children":2845},{"style":196},[2846],{"type":56,"value":295},{"type":50,"tag":91,"props":2848,"children":2849},{"class":93,"line":230},[2850,2855,2859],{"type":50,"tag":91,"props":2851,"children":2852},{"style":335},[2853],{"type":56,"value":2854},"  dataSources",{"type":50,"tag":91,"props":2856,"children":2857},{"style":196},[2858],{"type":56,"value":343},{"type":50,"tag":91,"props":2860,"children":2861},{"style":196},[2862],{"type":56,"value":329},{"type":50,"tag":91,"props":2864,"children":2865},{"class":93,"line":239},[2866,2871,2875,2880],{"type":50,"tag":91,"props":2867,"children":2868},{"style":335},[2869],{"type":56,"value":2870},"    usersAPI",{"type":50,"tag":91,"props":2872,"children":2873},{"style":196},[2874],{"type":56,"value":343},{"type":50,"tag":91,"props":2876,"children":2877},{"style":98},[2878],{"type":56,"value":2879}," UsersDataSource",{"type":50,"tag":91,"props":2881,"children":2882},{"style":196},[2883],{"type":56,"value":295},{"type":50,"tag":91,"props":2885,"children":2886},{"class":93,"line":248},[2887,2892,2896,2901],{"type":50,"tag":91,"props":2888,"children":2889},{"style":335},[2890],{"type":56,"value":2891},"    postsAPI",{"type":50,"tag":91,"props":2893,"children":2894},{"style":196},[2895],{"type":56,"value":343},{"type":50,"tag":91,"props":2897,"children":2898},{"style":98},[2899],{"type":56,"value":2900}," PostsDataSource",{"type":50,"tag":91,"props":2902,"children":2903},{"style":196},[2904],{"type":56,"value":295},{"type":50,"tag":91,"props":2906,"children":2907},{"class":93,"line":258},[2908],{"type":50,"tag":91,"props":2909,"children":2910},{"style":196},[2911],{"type":56,"value":2912},"  };\n",{"type":50,"tag":91,"props":2914,"children":2915},{"class":93,"line":267},[2916],{"type":50,"tag":91,"props":2917,"children":2918},{"style":196},[2919],{"type":56,"value":1872},{"type":50,"tag":91,"props":2921,"children":2922},{"class":93,"line":276},[2923],{"type":50,"tag":91,"props":2924,"children":2925},{"emptyLinePlaceholder":252},[2926],{"type":56,"value":255},{"type":50,"tag":91,"props":2928,"children":2929},{"class":93,"line":284},[2930,2934,2938,2942,2946,2950,2954,2959,2963,2967],{"type":50,"tag":91,"props":2931,"children":2932},{"style":184},[2933],{"type":56,"value":187},{"type":50,"tag":91,"props":2935,"children":2936},{"style":190},[2937],{"type":56,"value":658},{"type":50,"tag":91,"props":2939,"children":2940},{"style":196},[2941],{"type":56,"value":199},{"type":50,"tag":91,"props":2943,"children":2944},{"style":196},[2945],{"type":56,"value":667},{"type":50,"tag":91,"props":2947,"children":2948},{"style":353},[2949],{"type":56,"value":571},{"type":50,"tag":91,"props":2951,"children":2952},{"style":196},[2953],{"type":56,"value":1618},{"type":50,"tag":91,"props":2955,"children":2956},{"style":98},[2957],{"type":56,"value":2958},"MyContext",{"type":50,"tag":91,"props":2960,"children":2961},{"style":196},[2962],{"type":56,"value":1628},{"type":50,"tag":91,"props":2964,"children":2965},{"style":190},[2966],{"type":56,"value":676},{"type":50,"tag":91,"props":2968,"children":2969},{"style":196},[2970],{"type":56,"value":1223},{"type":50,"tag":91,"props":2972,"children":2973},{"class":93,"line":31},[2974,2978],{"type":50,"tag":91,"props":2975,"children":2976},{"style":190},[2977],{"type":56,"value":1232},{"type":50,"tag":91,"props":2979,"children":2980},{"style":196},[2981],{"type":56,"value":509},{"type":50,"tag":91,"props":2983,"children":2984},{"class":93,"line":1226},[2985,2989],{"type":50,"tag":91,"props":2986,"children":2987},{"style":190},[2988],{"type":56,"value":1245},{"type":50,"tag":91,"props":2990,"children":2991},{"style":196},[2992],{"type":56,"value":509},{"type":50,"tag":91,"props":2994,"children":2995},{"class":93,"line":1239},[2996,3000,3004],{"type":50,"tag":91,"props":2997,"children":2998},{"style":196},[2999],{"type":56,"value":699},{"type":50,"tag":91,"props":3001,"children":3002},{"style":190},[3003],{"type":56,"value":704},{"type":50,"tag":91,"props":3005,"children":3006},{"style":196},[3007],{"type":56,"value":295},{"type":50,"tag":91,"props":3009,"children":3010},{"class":93,"line":1252},[3011],{"type":50,"tag":91,"props":3012,"children":3013},{"emptyLinePlaceholder":252},[3014],{"type":56,"value":255},{"type":50,"tag":91,"props":3016,"children":3017},{"class":93,"line":1300},[3018],{"type":50,"tag":91,"props":3019,"children":3021},{"style":3020},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3022],{"type":56,"value":3023},"\u002F\u002F Standalone\n",{"type":50,"tag":91,"props":3025,"children":3026},{"class":93,"line":1316},[3027,3031,3035,3039,3043,3047,3051,3055,3059,3063],{"type":50,"tag":91,"props":3028,"children":3029},{"style":184},[3030],{"type":56,"value":187},{"type":50,"tag":91,"props":3032,"children":3033},{"style":196},[3034],{"type":56,"value":566},{"type":50,"tag":91,"props":3036,"children":3037},{"style":190},[3038],{"type":56,"value":731},{"type":50,"tag":91,"props":3040,"children":3041},{"style":196},[3042],{"type":56,"value":699},{"type":50,"tag":91,"props":3044,"children":3045},{"style":196},[3046],{"type":56,"value":740},{"type":50,"tag":91,"props":3048,"children":3049},{"style":558},[3050],{"type":56,"value":745},{"type":50,"tag":91,"props":3052,"children":3053},{"style":353},[3054],{"type":56,"value":614},{"type":50,"tag":91,"props":3056,"children":3057},{"style":190},[3058],{"type":56,"value":754},{"type":50,"tag":91,"props":3060,"children":3061},{"style":196},[3062],{"type":56,"value":412},{"type":50,"tag":91,"props":3064,"children":3065},{"style":196},[3066],{"type":56,"value":329},{"type":50,"tag":91,"props":3068,"children":3069},{"class":93,"line":1324},[3070,3075,3079,3083,3087,3091,3095,3099,3103],{"type":50,"tag":91,"props":3071,"children":3072},{"style":353},[3073],{"type":56,"value":3074},"  context",{"type":50,"tag":91,"props":3076,"children":3077},{"style":196},[3078],{"type":56,"value":343},{"type":50,"tag":91,"props":3080,"children":3081},{"style":184},[3082],{"type":56,"value":1487},{"type":50,"tag":91,"props":3084,"children":3085},{"style":196},[3086],{"type":56,"value":1492},{"type":50,"tag":91,"props":3088,"children":3089},{"style":1495},[3090],{"type":56,"value":1498},{"type":50,"tag":91,"props":3092,"children":3093},{"style":196},[3094],{"type":56,"value":1503},{"type":50,"tag":91,"props":3096,"children":3097},{"style":184},[3098],{"type":56,"value":370},{"type":50,"tag":91,"props":3100,"children":3101},{"style":190},[3102],{"type":56,"value":1512},{"type":50,"tag":91,"props":3104,"children":3105},{"style":196},[3106],{"type":56,"value":1223},{"type":50,"tag":91,"props":3108,"children":3109},{"class":93,"line":1355},[3110,3115,3119,3123,3127,3131,3135,3139,3144,3149],{"type":50,"tag":91,"props":3111,"children":3112},{"style":335},[3113],{"type":56,"value":3114},"    token",{"type":50,"tag":91,"props":3116,"children":3117},{"style":196},[3118],{"type":56,"value":343},{"type":50,"tag":91,"props":3120,"children":3121},{"style":190},[3122],{"type":56,"value":1498},{"type":50,"tag":91,"props":3124,"children":3125},{"style":196},[3126],{"type":56,"value":832},{"type":50,"tag":91,"props":3128,"children":3129},{"style":190},[3130],{"type":56,"value":1538},{"type":50,"tag":91,"props":3132,"children":3133},{"style":196},[3134],{"type":56,"value":832},{"type":50,"tag":91,"props":3136,"children":3137},{"style":190},[3138],{"type":56,"value":1547},{"type":50,"tag":91,"props":3140,"children":3141},{"style":196},[3142],{"type":56,"value":3143},"||",{"type":50,"tag":91,"props":3145,"children":3146},{"style":196},[3147],{"type":56,"value":3148}," \"\"",{"type":50,"tag":91,"props":3150,"children":3151},{"style":196},[3152],{"type":56,"value":509},{"type":50,"tag":91,"props":3154,"children":3155},{"class":93,"line":1363},[3156,3160,3164,3168,3173,3178,3182,3186,3190,3194,3198,3202,3206],{"type":50,"tag":91,"props":3157,"children":3158},{"style":335},[3159],{"type":56,"value":2255},{"type":50,"tag":91,"props":3161,"children":3162},{"style":196},[3163],{"type":56,"value":343},{"type":50,"tag":91,"props":3165,"children":3166},{"style":558},[3167],{"type":56,"value":745},{"type":50,"tag":91,"props":3169,"children":3170},{"style":353},[3171],{"type":56,"value":3172}," getUser",{"type":50,"tag":91,"props":3174,"children":3175},{"style":190},[3176],{"type":56,"value":3177},"(req",{"type":50,"tag":91,"props":3179,"children":3180},{"style":196},[3181],{"type":56,"value":832},{"type":50,"tag":91,"props":3183,"children":3184},{"style":190},[3185],{"type":56,"value":1538},{"type":50,"tag":91,"props":3187,"children":3188},{"style":196},[3189],{"type":56,"value":832},{"type":50,"tag":91,"props":3191,"children":3192},{"style":190},[3193],{"type":56,"value":1547},{"type":50,"tag":91,"props":3195,"children":3196},{"style":196},[3197],{"type":56,"value":3143},{"type":50,"tag":91,"props":3199,"children":3200},{"style":196},[3201],{"type":56,"value":3148},{"type":50,"tag":91,"props":3203,"children":3204},{"style":190},[3205],{"type":56,"value":704},{"type":50,"tag":91,"props":3207,"children":3208},{"style":196},[3209],{"type":56,"value":509},{"type":50,"tag":91,"props":3211,"children":3212},{"class":93,"line":1386},[3213,3218,3222],{"type":50,"tag":91,"props":3214,"children":3215},{"style":335},[3216],{"type":56,"value":3217},"    dataSources",{"type":50,"tag":91,"props":3219,"children":3220},{"style":196},[3221],{"type":56,"value":343},{"type":50,"tag":91,"props":3223,"children":3224},{"style":196},[3225],{"type":56,"value":329},{"type":50,"tag":91,"props":3227,"children":3228},{"class":93,"line":1408},[3229,3234,3238,3242,3246,3250],{"type":50,"tag":91,"props":3230,"children":3231},{"style":335},[3232],{"type":56,"value":3233},"      usersAPI",{"type":50,"tag":91,"props":3235,"children":3236},{"style":196},[3237],{"type":56,"value":343},{"type":50,"tag":91,"props":3239,"children":3240},{"style":196},[3241],{"type":56,"value":667},{"type":50,"tag":91,"props":3243,"children":3244},{"style":353},[3245],{"type":56,"value":2879},{"type":50,"tag":91,"props":3247,"children":3248},{"style":190},[3249],{"type":56,"value":1141},{"type":50,"tag":91,"props":3251,"children":3252},{"style":196},[3253],{"type":56,"value":509},{"type":50,"tag":91,"props":3255,"children":3256},{"class":93,"line":1425},[3257,3262,3266,3270,3274,3278],{"type":50,"tag":91,"props":3258,"children":3259},{"style":335},[3260],{"type":56,"value":3261},"      postsAPI",{"type":50,"tag":91,"props":3263,"children":3264},{"style":196},[3265],{"type":56,"value":343},{"type":50,"tag":91,"props":3267,"children":3268},{"style":196},[3269],{"type":56,"value":667},{"type":50,"tag":91,"props":3271,"children":3272},{"style":353},[3273],{"type":56,"value":2900},{"type":50,"tag":91,"props":3275,"children":3276},{"style":190},[3277],{"type":56,"value":1141},{"type":50,"tag":91,"props":3279,"children":3280},{"style":196},[3281],{"type":56,"value":509},{"type":50,"tag":91,"props":3283,"children":3284},{"class":93,"line":1451},[3285],{"type":50,"tag":91,"props":3286,"children":3287},{"style":196},[3288],{"type":56,"value":2365},{"type":50,"tag":91,"props":3290,"children":3291},{"class":93,"line":1472},[3292,3296,3300],{"type":50,"tag":91,"props":3293,"children":3294},{"style":196},[3295],{"type":56,"value":1568},{"type":50,"tag":91,"props":3297,"children":3298},{"style":190},[3299],{"type":56,"value":704},{"type":50,"tag":91,"props":3301,"children":3302},{"style":196},[3303],{"type":56,"value":509},{"type":50,"tag":91,"props":3305,"children":3306},{"class":93,"line":1562},[3307,3311,3315],{"type":50,"tag":91,"props":3308,"children":3309},{"style":196},[3310],{"type":56,"value":699},{"type":50,"tag":91,"props":3312,"children":3313},{"style":190},[3314],{"type":56,"value":704},{"type":50,"tag":91,"props":3316,"children":3317},{"style":196},[3318],{"type":56,"value":295},{"type":50,"tag":91,"props":3320,"children":3321},{"class":93,"line":1579},[3322],{"type":50,"tag":91,"props":3323,"children":3324},{"emptyLinePlaceholder":252},[3325],{"type":56,"value":255},{"type":50,"tag":91,"props":3327,"children":3328},{"class":93,"line":1591},[3329],{"type":50,"tag":91,"props":3330,"children":3331},{"style":3020},[3332],{"type":56,"value":3333},"\u002F\u002F Express middleware\n",{"type":50,"tag":91,"props":3335,"children":3336},{"class":93,"line":1599},[3337,3342,3346,3350],{"type":50,"tag":91,"props":3338,"children":3339},{"style":353},[3340],{"type":56,"value":3341},"expressMiddleware",{"type":50,"tag":91,"props":3343,"children":3344},{"style":190},[3345],{"type":56,"value":754},{"type":50,"tag":91,"props":3347,"children":3348},{"style":196},[3349],{"type":56,"value":412},{"type":50,"tag":91,"props":3351,"children":3352},{"style":196},[3353],{"type":56,"value":329},{"type":50,"tag":91,"props":3355,"children":3356},{"class":93,"line":1700},[3357,3361,3365,3369,3373,3377,3381,3386,3390,3394,3398],{"type":50,"tag":91,"props":3358,"children":3359},{"style":353},[3360],{"type":56,"value":3074},{"type":50,"tag":91,"props":3362,"children":3363},{"style":196},[3364],{"type":56,"value":343},{"type":50,"tag":91,"props":3366,"children":3367},{"style":184},[3368],{"type":56,"value":1487},{"type":50,"tag":91,"props":3370,"children":3371},{"style":196},[3372],{"type":56,"value":1492},{"type":50,"tag":91,"props":3374,"children":3375},{"style":1495},[3376],{"type":56,"value":1498},{"type":50,"tag":91,"props":3378,"children":3379},{"style":196},[3380],{"type":56,"value":412},{"type":50,"tag":91,"props":3382,"children":3383},{"style":1495},[3384],{"type":56,"value":3385}," res",{"type":50,"tag":91,"props":3387,"children":3388},{"style":196},[3389],{"type":56,"value":1503},{"type":50,"tag":91,"props":3391,"children":3392},{"style":184},[3393],{"type":56,"value":370},{"type":50,"tag":91,"props":3395,"children":3396},{"style":190},[3397],{"type":56,"value":1512},{"type":50,"tag":91,"props":3399,"children":3400},{"style":196},[3401],{"type":56,"value":1223},{"type":50,"tag":91,"props":3403,"children":3405},{"class":93,"line":3404},30,[3406,3410,3414,3418,3422,3426,3430,3435],{"type":50,"tag":91,"props":3407,"children":3408},{"style":335},[3409],{"type":56,"value":3114},{"type":50,"tag":91,"props":3411,"children":3412},{"style":196},[3413],{"type":56,"value":343},{"type":50,"tag":91,"props":3415,"children":3416},{"style":190},[3417],{"type":56,"value":1498},{"type":50,"tag":91,"props":3419,"children":3420},{"style":196},[3421],{"type":56,"value":832},{"type":50,"tag":91,"props":3423,"children":3424},{"style":190},[3425],{"type":56,"value":1538},{"type":50,"tag":91,"props":3427,"children":3428},{"style":196},[3429],{"type":56,"value":832},{"type":50,"tag":91,"props":3431,"children":3432},{"style":190},[3433],{"type":56,"value":3434},"authorization",{"type":50,"tag":91,"props":3436,"children":3437},{"style":196},[3438],{"type":56,"value":509},{"type":50,"tag":91,"props":3440,"children":3442},{"class":93,"line":3441},31,[3443,3447,3451,3455,3459,3463,3467,3471,3475,3480],{"type":50,"tag":91,"props":3444,"children":3445},{"style":335},[3446],{"type":56,"value":2255},{"type":50,"tag":91,"props":3448,"children":3449},{"style":196},[3450],{"type":56,"value":343},{"type":50,"tag":91,"props":3452,"children":3453},{"style":558},[3454],{"type":56,"value":745},{"type":50,"tag":91,"props":3456,"children":3457},{"style":353},[3458],{"type":56,"value":3172},{"type":50,"tag":91,"props":3460,"children":3461},{"style":190},[3462],{"type":56,"value":3177},{"type":50,"tag":91,"props":3464,"children":3465},{"style":196},[3466],{"type":56,"value":832},{"type":50,"tag":91,"props":3468,"children":3469},{"style":190},[3470],{"type":56,"value":1538},{"type":50,"tag":91,"props":3472,"children":3473},{"style":196},[3474],{"type":56,"value":832},{"type":50,"tag":91,"props":3476,"children":3477},{"style":190},[3478],{"type":56,"value":3479},"authorization)",{"type":50,"tag":91,"props":3481,"children":3482},{"style":196},[3483],{"type":56,"value":509},{"type":50,"tag":91,"props":3485,"children":3487},{"class":93,"line":3486},32,[3488,3492,3496],{"type":50,"tag":91,"props":3489,"children":3490},{"style":335},[3491],{"type":56,"value":3217},{"type":50,"tag":91,"props":3493,"children":3494},{"style":196},[3495],{"type":56,"value":343},{"type":50,"tag":91,"props":3497,"children":3498},{"style":196},[3499],{"type":56,"value":329},{"type":50,"tag":91,"props":3501,"children":3503},{"class":93,"line":3502},33,[3504,3508,3512,3516,3520,3524],{"type":50,"tag":91,"props":3505,"children":3506},{"style":335},[3507],{"type":56,"value":3233},{"type":50,"tag":91,"props":3509,"children":3510},{"style":196},[3511],{"type":56,"value":343},{"type":50,"tag":91,"props":3513,"children":3514},{"style":196},[3515],{"type":56,"value":667},{"type":50,"tag":91,"props":3517,"children":3518},{"style":353},[3519],{"type":56,"value":2879},{"type":50,"tag":91,"props":3521,"children":3522},{"style":190},[3523],{"type":56,"value":1141},{"type":50,"tag":91,"props":3525,"children":3526},{"style":196},[3527],{"type":56,"value":509},{"type":50,"tag":91,"props":3529,"children":3531},{"class":93,"line":3530},34,[3532,3536,3540,3544,3548,3552],{"type":50,"tag":91,"props":3533,"children":3534},{"style":335},[3535],{"type":56,"value":3261},{"type":50,"tag":91,"props":3537,"children":3538},{"style":196},[3539],{"type":56,"value":343},{"type":50,"tag":91,"props":3541,"children":3542},{"style":196},[3543],{"type":56,"value":667},{"type":50,"tag":91,"props":3545,"children":3546},{"style":353},[3547],{"type":56,"value":2900},{"type":50,"tag":91,"props":3549,"children":3550},{"style":190},[3551],{"type":56,"value":1141},{"type":50,"tag":91,"props":3553,"children":3554},{"style":196},[3555],{"type":56,"value":509},{"type":50,"tag":91,"props":3557,"children":3559},{"class":93,"line":3558},35,[3560],{"type":50,"tag":91,"props":3561,"children":3562},{"style":196},[3563],{"type":56,"value":2365},{"type":50,"tag":91,"props":3565,"children":3567},{"class":93,"line":3566},36,[3568,3572,3576],{"type":50,"tag":91,"props":3569,"children":3570},{"style":196},[3571],{"type":56,"value":1568},{"type":50,"tag":91,"props":3573,"children":3574},{"style":190},[3575],{"type":56,"value":704},{"type":50,"tag":91,"props":3577,"children":3578},{"style":196},[3579],{"type":56,"value":509},{"type":50,"tag":91,"props":3581,"children":3583},{"class":93,"line":3582},37,[3584,3588,3592],{"type":50,"tag":91,"props":3585,"children":3586},{"style":196},[3587],{"type":56,"value":699},{"type":50,"tag":91,"props":3589,"children":3590},{"style":190},[3591],{"type":56,"value":704},{"type":50,"tag":91,"props":3593,"children":3594},{"style":196},[3595],{"type":56,"value":295},{"type":50,"tag":65,"props":3597,"children":3599},{"id":3598},"reference-files",[3600],{"type":56,"value":3601},"Reference Files",{"type":50,"tag":59,"props":3603,"children":3604},{},[3605],{"type":56,"value":3606},"Detailed documentation for specific topics:",{"type":50,"tag":1752,"props":3608,"children":3609},{},[3610,3622,3633,3644,3655,3666],{"type":50,"tag":1756,"props":3611,"children":3612},{},[3613,3620],{"type":50,"tag":3614,"props":3615,"children":3617},"a",{"href":3616},"references\u002Fresolvers.md",[3618],{"type":56,"value":3619},"Resolvers",{"type":56,"value":3621}," - Resolver patterns and best practices",{"type":50,"tag":1756,"props":3623,"children":3624},{},[3625,3631],{"type":50,"tag":3614,"props":3626,"children":3628},{"href":3627},"references\u002Fcontext-and-auth.md",[3629],{"type":56,"value":3630},"Context and Auth",{"type":56,"value":3632}," - Authentication and authorization",{"type":50,"tag":1756,"props":3634,"children":3635},{},[3636,3642],{"type":50,"tag":3614,"props":3637,"children":3639},{"href":3638},"references\u002Fplugins.md",[3640],{"type":56,"value":3641},"Plugins",{"type":56,"value":3643}," - Server and request lifecycle hooks",{"type":50,"tag":1756,"props":3645,"children":3646},{},[3647,3653],{"type":50,"tag":3614,"props":3648,"children":3650},{"href":3649},"references\u002Fdata-sources.md",[3651],{"type":56,"value":3652},"Data Sources",{"type":56,"value":3654}," - RESTDataSource and DataLoader",{"type":50,"tag":1756,"props":3656,"children":3657},{},[3658,3664],{"type":50,"tag":3614,"props":3659,"children":3661},{"href":3660},"references\u002Ferror-handling.md",[3662],{"type":56,"value":3663},"Error Handling",{"type":56,"value":3665}," - GraphQLError and error formatting",{"type":50,"tag":1756,"props":3667,"children":3668},{},[3669,3675],{"type":50,"tag":3614,"props":3670,"children":3672},{"href":3671},"references\u002Ftroubleshooting.md",[3673],{"type":56,"value":3674},"Troubleshooting",{"type":56,"value":3676}," - Common issues and solutions",{"type":50,"tag":65,"props":3678,"children":3680},{"id":3679},"key-rules",[3681],{"type":56,"value":3682},"Key Rules",{"type":50,"tag":72,"props":3684,"children":3686},{"id":3685},"schema-design",[3687],{"type":56,"value":3688},"Schema Design",{"type":50,"tag":1752,"props":3690,"children":3691},{},[3692,3703,3708,3713],{"type":50,"tag":1756,"props":3693,"children":3694},{},[3695,3697,3701],{"type":56,"value":3696},"Use ",{"type":50,"tag":536,"props":3698,"children":3699},{},[3700],{"type":56,"value":2615},{"type":56,"value":3702}," (non-null) for fields that always have values",{"type":50,"tag":1756,"props":3704,"children":3705},{},[3706],{"type":56,"value":3707},"Prefer input types for mutations over inline arguments",{"type":50,"tag":1756,"props":3709,"children":3710},{},[3711],{"type":56,"value":3712},"Use interfaces for polymorphic types",{"type":50,"tag":1756,"props":3714,"children":3715},{},[3716],{"type":56,"value":3717},"Keep schema descriptions for documentation",{"type":50,"tag":72,"props":3719,"children":3721},{"id":3720},"resolver-best-practices",[3722],{"type":56,"value":3723},"Resolver Best Practices",{"type":50,"tag":1752,"props":3725,"children":3726},{},[3727,3732,3737,3742],{"type":50,"tag":1756,"props":3728,"children":3729},{},[3730],{"type":56,"value":3731},"Keep resolvers thin - delegate to services\u002Fdata sources",{"type":50,"tag":1756,"props":3733,"children":3734},{},[3735],{"type":56,"value":3736},"Always handle errors explicitly",{"type":50,"tag":1756,"props":3738,"children":3739},{},[3740],{"type":56,"value":3741},"Use DataLoader for batching related queries",{"type":50,"tag":1756,"props":3743,"children":3744},{},[3745],{"type":56,"value":3746},"Return partial data when possible (GraphQL's strength)",{"type":50,"tag":72,"props":3748,"children":3750},{"id":3749},"performance",[3751],{"type":56,"value":3752},"Performance",{"type":50,"tag":1752,"props":3754,"children":3755},{},[3756,3776,3781,3786],{"type":50,"tag":1756,"props":3757,"children":3758},{},[3759,3760,3766,3768,3774],{"type":56,"value":3696},{"type":50,"tag":87,"props":3761,"children":3763},{"className":3762},[],[3764],{"type":56,"value":3765},"@defer",{"type":56,"value":3767}," and ",{"type":50,"tag":87,"props":3769,"children":3771},{"className":3770},[],[3772],{"type":56,"value":3773},"@stream",{"type":56,"value":3775}," for large responses",{"type":50,"tag":1756,"props":3777,"children":3778},{},[3779],{"type":56,"value":3780},"Implement DataLoader to solve N+1 queries",{"type":50,"tag":1756,"props":3782,"children":3783},{},[3784],{"type":56,"value":3785},"Consider persisted queries for production",{"type":50,"tag":1756,"props":3787,"children":3788},{},[3789],{"type":56,"value":3790},"Use caching headers and CDN where appropriate",{"type":50,"tag":65,"props":3792,"children":3794},{"id":3793},"ground-rules",[3795],{"type":56,"value":3796},"Ground Rules",{"type":50,"tag":1752,"props":3798,"children":3799},{},[3800,3805,3810,3830,3835,3848,3853],{"type":50,"tag":1756,"props":3801,"children":3802},{},[3803],{"type":56,"value":3804},"ALWAYS use Apollo Server 5.x patterns (not v4 or earlier)",{"type":50,"tag":1756,"props":3806,"children":3807},{},[3808],{"type":56,"value":3809},"ALWAYS type your context with TypeScript generics",{"type":50,"tag":1756,"props":3811,"children":3812},{},[3813,3815,3821,3823,3828],{"type":56,"value":3814},"ALWAYS use ",{"type":50,"tag":87,"props":3816,"children":3818},{"className":3817},[],[3819],{"type":56,"value":3820},"GraphQLError",{"type":56,"value":3822}," from ",{"type":50,"tag":87,"props":3824,"children":3826},{"className":3825},[],[3827],{"type":56,"value":15},{"type":56,"value":3829}," package for errors",{"type":50,"tag":1756,"props":3831,"children":3832},{},[3833],{"type":56,"value":3834},"NEVER expose stack traces in production errors",{"type":50,"tag":1756,"props":3836,"children":3837},{},[3838,3840,3846],{"type":56,"value":3839},"PREFER ",{"type":50,"tag":87,"props":3841,"children":3843},{"className":3842},[],[3844],{"type":56,"value":3845},"startStandaloneServer",{"type":56,"value":3847}," for prototyping only",{"type":50,"tag":1756,"props":3849,"children":3850},{},[3851],{"type":56,"value":3852},"USE an integration with a server framework like Express, Koa, Fastify, Next, etc. for production apps",{"type":50,"tag":1756,"props":3854,"children":3855},{},[3856],{"type":56,"value":3857},"IMPLEMENT authentication in context, authorization in resolvers",{"type":50,"tag":3859,"props":3860,"children":3861},"style",{},[3862],{"type":56,"value":3863},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3865,"total":1300},[3866,3881,3894,3907,3928,3943,3956,3969,3984,3992,4002,4013],{"slug":3867,"name":3867,"fn":3868,"description":3869,"org":3870,"tags":3871,"stars":27,"repoUrl":28,"updatedAt":3880},"apollo-client","build React apps with Apollo Client","Guide for building React applications with Apollo Client 4.x. Use this skill when: (1) setting up Apollo Client in a React project, (2) writing GraphQL queries or mutations with hooks, (3) configuring caching or cache policies, (4) managing local state with reactive variables, (5) troubleshooting Apollo Client errors or performance issues.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3872,3873,3876,3877],{"name":9,"slug":8,"type":16},{"name":3874,"slug":3875,"type":16},"Frontend","frontend",{"name":14,"slug":15,"type":16},{"name":3878,"slug":3879,"type":16},"React","react","2026-04-06T18:01:12.268638",{"slug":3882,"name":3882,"fn":3883,"description":3884,"org":3885,"tags":3886,"stars":27,"repoUrl":28,"updatedAt":3893},"apollo-connectors","integrate REST APIs with Apollo Connectors","Guide for integrating REST APIs into GraphQL supergraphs using Apollo Connectors with @source and @connect directives. Use this skill when the user: (1) mentions \"connectors\", \"Apollo Connectors\", or \"REST Connector\", (2) wants to integrate a REST API into GraphQL, (3) references @source or @connect directives, (4) works with files containing \"# Note to AI Friends: This is an Apollo Connectors schema\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3887,3888,3889,3890],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3891,"slug":3892,"type":16},"REST API","rest-api","2026-04-06T18:01:23.758345",{"slug":3895,"name":3895,"fn":3896,"description":3897,"org":3898,"tags":3899,"stars":27,"repoUrl":28,"updatedAt":3906},"apollo-federation","author Apollo Federation subgraph schemas","Guide for authoring Apollo Federation subgraph schemas. Use this skill when: (1) creating new subgraph schemas for a federated supergraph, (2) defining or modifying entities with @key, (3) sharing types\u002Ffields across subgraphs with @shareable, (4) working with federation directives (@external, @requires, @provides, @override, @inaccessible), (5) troubleshooting composition errors, (6) any task involving federation schema design patterns.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3900,3901,3902,3905],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":3903,"slug":3904,"type":16},"Architecture","architecture",{"name":14,"slug":15,"type":16},"2026-07-30T05:31:51.648593",{"slug":3908,"name":3908,"fn":3909,"description":3910,"org":3911,"tags":3912,"stars":27,"repoUrl":28,"updatedAt":3927},"apollo-ios","build Apple apps with Apollo iOS","Guide for building Apple-platform applications with Apollo iOS, the strongly-typed GraphQL client for Swift. Use this skill when: (1) adding Apollo iOS to a Swift Package Manager or Xcode project, (2) configuring `apollo-codegen-config.json` and running code generation, (3) configuring an `ApolloClient` with auth, interceptors, and caching, (4) writing queries, mutations, or subscriptions from SwiftUI views, (5) writing tests against generated operation mocks.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3913,3914,3915,3918,3921,3924],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3916,"slug":3917,"type":16},"iOS","ios",{"name":3919,"slug":3920,"type":16},"Mobile","mobile",{"name":3922,"slug":3923,"type":16},"Swift","swift",{"name":3925,"slug":3926,"type":16},"Xcode","xcode","2026-04-29T05:35:21.329969",{"slug":3929,"name":3929,"fn":3930,"description":3931,"org":3932,"tags":3933,"stars":27,"repoUrl":28,"updatedAt":3942},"apollo-kotlin","build Kotlin apps with Apollo GraphQL","Guide for building applications with Apollo Kotlin, the GraphQL client library for Android and Kotlin. Use this skill when: (1) setting up Apollo Kotlin in a Gradle project for Android, Kotlin\u002FJVM, or KMP, (2) configuring schema download and codegen for GraphQL services, (3) configuring an `ApolloClient` with auth, interceptors, and caching, (4) writing queries, mutations, or subscriptions,\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3934,3937,3938,3939],{"name":3935,"slug":3936,"type":16},"Android","android",{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3940,"slug":3941,"type":16},"Kotlin","kotlin","2026-04-06T18:01:15.005978",{"slug":3944,"name":3944,"fn":3945,"description":3946,"org":3947,"tags":3948,"stars":27,"repoUrl":28,"updatedAt":3955},"apollo-mcp-server","connect MCP agents to GraphQL APIs","Guide for using Apollo MCP Server to connect AI agents with GraphQL APIs. Use this skill when: (1) setting up or configuring Apollo MCP Server, (2) defining MCP tools from GraphQL operations, (3) using introspection tools (introspect, search, validate, execute), (4) troubleshooting MCP server connectivity or tool execution issues.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3949,3950,3951,3952],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3953,"slug":3954,"type":16},"MCP","mcp","2026-04-06T18:01:20.578589",{"slug":3957,"name":3957,"fn":3958,"description":3959,"org":3960,"tags":3961,"stars":27,"repoUrl":28,"updatedAt":3968},"apollo-router","configure Apollo Router for GraphQL federation","Version-aware guide for configuring and running Apollo Router for federated GraphQL supergraphs. Generates correct YAML for both Router v1.x and v2.x. Use this skill when: (1) setting up Apollo Router to run a supergraph, (2) configuring routing, headers, or CORS, (3) implementing custom plugins (Rhai scripts or coprocessors), (4) configuring telemetry (tracing, metrics, logging), (5) troubleshooting Router performance or connectivity issues, (6) securing the graph with JWT, declarative field-level authorization directives, or persisted-query safelisting, (7) managing router.yaml as version-controlled config with CI\u002FCD validation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3962,3963,3964,3967],{"name":9,"slug":8,"type":16},{"name":3903,"slug":3904,"type":16},{"name":3965,"slug":3966,"type":16},"Deployment","deployment",{"name":14,"slug":15,"type":16},"2026-07-30T05:31:54.665938",{"slug":3970,"name":3970,"fn":3971,"description":3972,"org":3973,"tags":3974,"stars":27,"repoUrl":28,"updatedAt":3983},"apollo-router-plugin-creator","write Apollo Router Rust plugins","Guide for writing Apollo Router native Rust plugins. Use this skill when: (1) users want to create a new router plugin, (2) users want to add service hooks (router_service, supergraph_service, execution_service, subgraph_service), (3) users want to modify an existing router plugin, (4) users need to understand router plugin patterns or the request lifecycle. (5) triggers on requests like \"create a new plugin\", \"add a router plugin\", \"modify the X plugin\", or \"add subgraph_service hook\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3975,3976,3977,3980],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3978,"slug":3979,"type":16},"Plugin Development","plugin-development",{"name":3981,"slug":3982,"type":16},"Rust","rust","2026-04-06T18:01:27.176974",{"slug":4,"name":4,"fn":5,"description":6,"org":3985,"tags":3986,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3987,3988,3989,3990,3991],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":25,"slug":26,"type":16},{"name":18,"slug":19,"type":16},{"slug":3993,"name":3993,"fn":3994,"description":3995,"org":3996,"tags":3997,"stars":27,"repoUrl":28,"updatedAt":4001},"graphql-operations","write GraphQL queries and mutations","Guide for writing GraphQL operations (queries, mutations, fragments) following best practices. Use this skill when: (1) writing GraphQL queries or mutations, (2) organizing operations with fragments, (3) optimizing data fetching patterns, (4) setting up type generation or linting, (5) reviewing operations for efficiency.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3998,3999,4000],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:01:25.530906",{"slug":4003,"name":4003,"fn":4004,"description":4005,"org":4006,"tags":4007,"stars":27,"repoUrl":28,"updatedAt":4012},"graphql-schema","design GraphQL schemas","Guide for designing GraphQL schemas following industry best practices. Use this skill when: (1) designing a new GraphQL schema or API, (2) reviewing existing schema for improvements, (3) deciding on type structures or nullability, (4) implementing pagination or error patterns, (5) ensuring security in schema design.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4008,4009,4010,4011],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":3903,"slug":3904,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:01:19.140592",{"slug":4014,"name":4014,"fn":4015,"description":4016,"org":4017,"tags":4018,"stars":27,"repoUrl":28,"updatedAt":4024},"rover","manage GraphQL schemas with Apollo Rover","Guide for using Apollo Rover CLI to manage GraphQL schemas and federation. Use this skill when: (1) publishing or fetching subgraph\u002Fgraph schemas, (2) composing supergraph schemas locally or via GraphOS, (3) running local supergraph development with rover dev, (4) validating schemas with check and lint commands, (5) configuring Rover authentication and environment, (6) exploring or searching a graph's schema for agent-driven discovery (rover schema describe \u002F rover schema search).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4019,4020,4023],{"name":9,"slug":8,"type":16},{"name":4021,"slug":4022,"type":16},"CLI","cli",{"name":14,"slug":15,"type":16},"2026-07-30T05:31:52.675547",{"items":4026,"total":1252},[4027,4034,4041,4048,4057,4064,4071],{"slug":3867,"name":3867,"fn":3868,"description":3869,"org":4028,"tags":4029,"stars":27,"repoUrl":28,"updatedAt":3880},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4030,4031,4032,4033],{"name":9,"slug":8,"type":16},{"name":3874,"slug":3875,"type":16},{"name":14,"slug":15,"type":16},{"name":3878,"slug":3879,"type":16},{"slug":3882,"name":3882,"fn":3883,"description":3884,"org":4035,"tags":4036,"stars":27,"repoUrl":28,"updatedAt":3893},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4037,4038,4039,4040],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3891,"slug":3892,"type":16},{"slug":3895,"name":3895,"fn":3896,"description":3897,"org":4042,"tags":4043,"stars":27,"repoUrl":28,"updatedAt":3906},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4044,4045,4046,4047],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":3903,"slug":3904,"type":16},{"name":14,"slug":15,"type":16},{"slug":3908,"name":3908,"fn":3909,"description":3910,"org":4049,"tags":4050,"stars":27,"repoUrl":28,"updatedAt":3927},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4051,4052,4053,4054,4055,4056],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3916,"slug":3917,"type":16},{"name":3919,"slug":3920,"type":16},{"name":3922,"slug":3923,"type":16},{"name":3925,"slug":3926,"type":16},{"slug":3929,"name":3929,"fn":3930,"description":3931,"org":4058,"tags":4059,"stars":27,"repoUrl":28,"updatedAt":3942},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4060,4061,4062,4063],{"name":3935,"slug":3936,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3940,"slug":3941,"type":16},{"slug":3944,"name":3944,"fn":3945,"description":3946,"org":4065,"tags":4066,"stars":27,"repoUrl":28,"updatedAt":3955},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4067,4068,4069,4070],{"name":22,"slug":23,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3953,"slug":3954,"type":16},{"slug":3957,"name":3957,"fn":3958,"description":3959,"org":4072,"tags":4073,"stars":27,"repoUrl":28,"updatedAt":3968},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4074,4075,4076,4077],{"name":9,"slug":8,"type":16},{"name":3903,"slug":3904,"type":16},{"name":3965,"slug":3966,"type":16},{"name":14,"slug":15,"type":16}]