Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
ardatan committed Jan 15, 2025
1 parent 50e03ff commit 8a753d2
Show file tree
Hide file tree
Showing 14 changed files with 65 additions and 61 deletions.
12 changes: 6 additions & 6 deletions examples/bun-yoga-ws/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { setTimeout as setTimeout$ } from 'node:timers/promises';
import Bun from 'bun';
import { makeHandler } from 'graphql-ws/lib/use/bun';
import { makeHandler } from 'graphql-ws/use/bun';
import { createSchema, createYoga } from 'graphql-yoga';

const schema = createSchema({
Expand Down Expand Up @@ -46,19 +46,19 @@ export const websocketHandler = makeHandler({
schema,
execute: args => args.rootValue.execute(args),
subscribe: args => args.rootValue.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } = yoga.getEnveloped({
...ctx,
req: ctx.extra.request,
socket: ctx.extra.socket,
params: msg.payload,
params,
});

const args = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
rootValue: {
execute,
Expand Down
10 changes: 5 additions & 5 deletions examples/graphql-ws/__integration-tests__/graphql-ws.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createServer } from 'node:http';
import { AddressInfo } from 'node:net';
import { createClient } from 'graphql-ws';
import { useServer } from 'graphql-ws/lib/use/ws';
import { useServer } from 'graphql-ws/use/ws';
import { createSchema, createYoga } from 'graphql-yoga';
import WebSocket from 'ws';
import { buildApp } from '../src/app.js';
Expand Down Expand Up @@ -122,15 +122,15 @@ describe('graphql-ws example integration', () => {
execute: (args: any) => args.execute(args),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
subscribe: (args: any) => args.subscribe(args),
onSubscribe: async (_ctx, msg) => {
onSubscribe: async (_ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } =
yoga.getEnveloped(); // <- malformed/missing context

const args = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
execute,
subscribe,
Expand Down
12 changes: 6 additions & 6 deletions examples/graphql-ws/src/app.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { createServer } from 'node:http';
import { Socket } from 'node:net';
import { useServer } from 'graphql-ws/lib/use/ws';
import { useServer } from 'graphql-ws/use/ws';
import { createSchema, createYoga } from 'graphql-yoga';
import { WebSocketServer } from 'ws';

Expand Down Expand Up @@ -57,19 +57,19 @@ export function buildApp() {
execute: (args: any) => args.execute(args),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
subscribe: (args: any) => args.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } = yoga.getEnveloped({
...ctx,
req: ctx.extra.request,
socket: ctx.extra.socket,
params: msg.payload,
params,
});

const args = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
execute,
subscribe,
Expand Down
4 changes: 2 additions & 2 deletions examples/graphql-ws/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"compilerOptions": {
"target": "esnext",
"moduleResolution": "node",
"module": "commonjs",
"moduleResolution": "bundler",
"module": "esnext",
"sourceMap": true,
"lib": ["esnext", "DOM", "DOM.Iterable"],
"allowSyntheticDefaultImports": true,
Expand Down
12 changes: 6 additions & 6 deletions examples/nextjs-ws/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
const { createServer } = require('node:http');
const { WebSocketServer } = require('ws');
const { createYoga, createSchema } = require('graphql-yoga');
const { useServer } = require('graphql-ws/lib/use/ws');
const { useServer } = require('graphql-ws/use/ws');
const { parse } = require('node:url');
const next = require('next');
const { setTimeout: setTimeout$ } = require('node:timers/promises');
Expand Down Expand Up @@ -106,20 +106,20 @@ async function start(port, handle) {
execute: args => args.rootValue.execute(args),
/** @param {EnvelopedExecutionArgs} args */
subscribe: args => args.rootValue.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } = yoga.getEnveloped({
...ctx,
req: ctx.extra.request,
socket: ctx.extra.socket,
params: msg.payload,
params,
});

/** @type EnvelopedExecutionArgs */
const args = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
rootValue: {
execute,
Expand Down
10 changes: 5 additions & 5 deletions examples/uwebsockets/src/app.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { execute, ExecutionArgs, subscribe } from 'graphql';
import { makeBehavior } from 'graphql-ws/lib/use/uWebSockets';
import { makeBehavior } from 'graphql-ws/use/uWebSockets';
import { createSchema, createYoga, Repeater } from 'graphql-yoga';
import { App, HttpRequest, HttpResponse } from 'uWebSockets.js';

Expand Down Expand Up @@ -55,14 +55,14 @@ type EnvelopedExecutionArgs = ExecutionArgs & {
const wsHandler = makeBehavior({
execute: args => (args as EnvelopedExecutionArgs).rootValue.execute(args),
subscribe: args => (args as EnvelopedExecutionArgs).rootValue.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } = yoga.getEnveloped(ctx);

const args: EnvelopedExecutionArgs = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
rootValue: {
execute,
Expand Down
12 changes: 6 additions & 6 deletions packages/plugins/jwt/src/__tests__/jwt.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { createHmac } from 'node:crypto';
import { createServer, Server } from 'node:http';
import { AddressInfo } from 'node:net';
import { createClient } from 'graphql-ws';
import { useServer } from 'graphql-ws/lib/use/ws';
import { useServer } from 'graphql-ws/use/ws';
import { createSchema, createYoga, Plugin } from 'graphql-yoga';
import jwt, { Algorithm, SignOptions } from 'jsonwebtoken';
import WebSocket from 'ws';
Expand Down Expand Up @@ -650,20 +650,20 @@ describe('jwt plugin', () => {
execute: (args: any) => args.execute(args),

subscribe: (args: any) => args.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } =
test.yoga.getEnveloped({
...ctx,
req: ctx.extra.request,
socket: ctx.extra.socket,
params: msg.payload,
params,
});

const args = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
execute,
subscribe,
Expand Down
1 change: 1 addition & 0 deletions packages/plugins/jwt/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { createGraphQLError } from 'graphql-yoga';
import { JwksClient, type Options as JwksClientOptions } from 'jwks-rsa';
import { GetSigningKeyFunction, type ExtractTokenFunction } from './config.js';
import '@whatwg-node/server-plugin-cookies';

export function extractFromHeader(options: {
name: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createServer, type Server } from 'node:http';
import { AddressInfo } from 'node:net';
import { Client, createClient } from 'graphql-ws';
import { useServer } from 'graphql-ws/lib/use/ws';
import { useServer } from 'graphql-ws/use/ws';
import { createSchema, createYoga } from 'graphql-yoga';
import { register as registry } from 'prom-client';
import WebSocket from 'ws';
Expand Down Expand Up @@ -64,21 +64,21 @@ describe('GraphQL WS & Prometheus integration', () => {
execute: (args: any) => args.execute(args),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
subscribe: (args: any) => args.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } = yoga.getEnveloped(
{
...ctx,
req: ctx.extra.request,
socket: ctx.extra.socket,
params: msg.payload,
params,
},
);

const args = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
execute,
subscribe,
Expand Down
5 changes: 4 additions & 1 deletion tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"declaration": true,
"verbatimModuleSyntax": false
"verbatimModuleSyntax": false,
"moduleResolution": "node"
},
"exclude": [
"**/node_modules",
Expand All @@ -11,6 +12,8 @@
"**/scripts",
"**/test/*.ts",
"**/tests/*.ts",
"**/__tests__",
"**/__integration-tests__",
"*.spec.ts",
"*.test.ts"
]
Expand Down
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"experimentalDecorators": true,
"target": "es2022",
"module": "esnext",
"moduleResolution": "node",
"moduleResolution": "bundler",
"lib": ["esnext"],
"emitDecoratorMetadata": true,
"sourceMap": false,
Expand Down
12 changes: 6 additions & 6 deletions website/src/pages/docs/features/subscriptions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ use WebSockets instead of Server-Sent Events within GraphiQL.

```ts filename="yoga-with-ws.ts"
import { createServer } from 'node:http'
import { useServer } from 'graphql-ws/lib/use/ws'
import { useServer } from 'graphql-ws/use/ws'
import { createYoga } from 'graphql-yoga'
import { WebSocketServer } from 'ws'

Expand All @@ -214,19 +214,19 @@ useServer(
{
execute: (args: any) => args.rootValue.execute(args),
subscribe: (args: any) => args.rootValue.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } = yogaApp.getEnveloped({
...ctx,
req: ctx.extra.request,
socket: ctx.extra.socket,
params: msg.payload
params
})

const args = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
rootValue: {
execute,
Expand Down
12 changes: 6 additions & 6 deletions website/src/pages/docs/integrations/integration-with-nextjs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ npm i graphql-yoga graphql ws graphql-ws
const { createServer } = require('http')
const { WebSocketServer } = require('ws')
const { createYoga, createSchema } = require('graphql-yoga')
const { useServer } = require('graphql-ws/lib/use/ws')
const { useServer } = require('graphql-ws/use/ws')
const { parse } = require('url')
const next = require('next')
const { setTimeout: setTimeout$ } = require('timers/promises')
Expand Down Expand Up @@ -194,19 +194,19 @@ const yoga = createYoga({
{
execute: args => args.rootValue.execute(args),
subscribe: args => args.rootValue.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } = yoga.getEnveloped({
...ctx,
req: ctx.extra.request,
socket: ctx.extra.socket,
params: msg.payload
params
})

const args = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
rootValue: {
execute,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ npm i graphql-ws

```ts filename="index.ts"
import { execute, ExecutionArgs, subscribe } from 'graphql'
import { makeBehavior } from 'graphql-ws/lib/use/uWebSockets'
import { makeBehavior } from 'graphql-ws/use/uWebSockets'
import { createSchema, createYoga, Repeater } from 'graphql-yoga'
import { App, HttpRequest, HttpResponse } from 'uWebSockets.js'

Expand Down Expand Up @@ -118,14 +118,14 @@ type EnvelopedExecutionArgs = ExecutionArgs & {
const wsHandler = makeBehavior({
execute: args => (args as EnvelopedExecutionArgs).rootValue.execute(args),
subscribe: args => (args as EnvelopedExecutionArgs).rootValue.subscribe(args),
onSubscribe: async (ctx, msg) => {
onSubscribe: async (ctx, _id, params) => {
const { schema, execute, subscribe, contextFactory, parse, validate } = yoga.getEnveloped(ctx)

const args: EnvelopedExecutionArgs = {
schema,
operationName: msg.payload.operationName,
document: parse(msg.payload.query),
variableValues: msg.payload.variables,
operationName: params.operationName,
document: parse(params.query),
variableValues: params.variables,
contextValue: await contextFactory(),
rootValue: {
execute,
Expand Down

0 comments on commit 8a753d2

Please sign in to comment.