@graphql-yoga/plugin-jwt 3.4.11 → 3.4.12-alpha-20250118005344-d4dca2b59cd780de209dcbd18272a663bb7e6455

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/plugin.js CHANGED
@@ -115,39 +115,56 @@ function useJWT(options) {
115
115
  throw e;
116
116
  }
117
117
  };
118
+ async function ensureContext({ request, url, serverContext, extendContext, }) {
119
+ if (normalizedOptions.extendContextFieldName === null) {
120
+ return;
121
+ }
122
+ if (serverContext[normalizedOptions.extendContextFieldName]) {
123
+ return;
124
+ }
125
+ // Ensure the request has been validated before extending the context.
126
+ await lookupAndValidate({
127
+ request,
128
+ url,
129
+ serverContext,
130
+ });
131
+ // Then check the result
132
+ const result = request ? payloadByRequest.get(request) : payloadByContext.get(serverContext);
133
+ if (result && normalizedOptions.extendContextFieldName) {
134
+ extendContext({
135
+ [normalizedOptions.extendContextFieldName]: {
136
+ payload: result.payload,
137
+ token: result.token,
138
+ },
139
+ });
140
+ }
141
+ }
118
142
  let fetchAPI;
119
143
  return {
120
144
  onYogaInit({ yoga }) {
121
145
  logger = yoga.logger;
122
146
  fetchAPI = yoga.fetchAPI;
123
147
  },
124
- async onRequestParse(payload) {
125
- await lookupAndValidate(payload);
148
+ onRequestParse({ request, url, serverContext }) {
149
+ return ensureContext({
150
+ request,
151
+ url,
152
+ serverContext,
153
+ extendContext: newContext => {
154
+ Object.assign(serverContext, newContext);
155
+ },
156
+ });
126
157
  },
127
- async onContextBuilding({ context, extendContext }) {
128
- if (normalizedOptions.extendContextFieldName === null) {
129
- return;
130
- }
131
- // Ensure the request has been validated before extending the context.
132
- await lookupAndValidate({
133
- request: context.request,
158
+ onContextBuilding({ context, extendContext }) {
159
+ const request = context.request;
160
+ return ensureContext({
161
+ request,
134
162
  get url() {
135
- return new fetchAPI.URL(context.request.url);
163
+ return request && new fetchAPI.URL(request.url);
136
164
  },
137
165
  serverContext: context,
166
+ extendContext,
138
167
  });
139
- // Then check the result
140
- const result = context.request
141
- ? payloadByRequest.get(context.request)
142
- : payloadByContext.get(context);
143
- if (result && normalizedOptions.extendContextFieldName) {
144
- extendContext({
145
- [normalizedOptions.extendContextFieldName]: {
146
- payload: result.payload,
147
- token: result.token,
148
- },
149
- });
150
- }
151
168
  },
152
169
  };
153
170
  }
package/esm/plugin.js CHANGED
@@ -111,39 +111,56 @@ export function useJWT(options) {
111
111
  throw e;
112
112
  }
113
113
  };
114
+ async function ensureContext({ request, url, serverContext, extendContext, }) {
115
+ if (normalizedOptions.extendContextFieldName === null) {
116
+ return;
117
+ }
118
+ if (serverContext[normalizedOptions.extendContextFieldName]) {
119
+ return;
120
+ }
121
+ // Ensure the request has been validated before extending the context.
122
+ await lookupAndValidate({
123
+ request,
124
+ url,
125
+ serverContext,
126
+ });
127
+ // Then check the result
128
+ const result = request ? payloadByRequest.get(request) : payloadByContext.get(serverContext);
129
+ if (result && normalizedOptions.extendContextFieldName) {
130
+ extendContext({
131
+ [normalizedOptions.extendContextFieldName]: {
132
+ payload: result.payload,
133
+ token: result.token,
134
+ },
135
+ });
136
+ }
137
+ }
114
138
  let fetchAPI;
115
139
  return {
116
140
  onYogaInit({ yoga }) {
117
141
  logger = yoga.logger;
118
142
  fetchAPI = yoga.fetchAPI;
119
143
  },
120
- async onRequestParse(payload) {
121
- await lookupAndValidate(payload);
144
+ onRequestParse({ request, url, serverContext }) {
145
+ return ensureContext({
146
+ request,
147
+ url,
148
+ serverContext,
149
+ extendContext: newContext => {
150
+ Object.assign(serverContext, newContext);
151
+ },
152
+ });
122
153
  },
123
- async onContextBuilding({ context, extendContext }) {
124
- if (normalizedOptions.extendContextFieldName === null) {
125
- return;
126
- }
127
- // Ensure the request has been validated before extending the context.
128
- await lookupAndValidate({
129
- request: context.request,
154
+ onContextBuilding({ context, extendContext }) {
155
+ const request = context.request;
156
+ return ensureContext({
157
+ request,
130
158
  get url() {
131
- return new fetchAPI.URL(context.request.url);
159
+ return request && new fetchAPI.URL(request.url);
132
160
  },
133
161
  serverContext: context,
162
+ extendContext,
134
163
  });
135
- // Then check the result
136
- const result = context.request
137
- ? payloadByRequest.get(context.request)
138
- : payloadByContext.get(context);
139
- if (result && normalizedOptions.extendContextFieldName) {
140
- extendContext({
141
- [normalizedOptions.extendContextFieldName]: {
142
- payload: result.payload,
143
- token: result.token,
144
- },
145
- });
146
- }
147
164
  },
148
165
  };
149
166
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphql-yoga/plugin-jwt",
3
- "version": "3.4.11",
3
+ "version": "3.4.12-alpha-20250118005344-d4dca2b59cd780de209dcbd18272a663bb7e6455",
4
4
  "description": "jwt plugin for GraphQL Yoga.",
5
5
  "peerDependencies": {
6
6
  "graphql": "^15.2.0 || ^16.0.0",
@@ -3,8 +3,8 @@ import { VerifyOptions } from 'jsonwebtoken';
3
3
  type AtleastOneItem<T> = [T, ...T[]];
4
4
  export type ExtractTokenFunctionParams = {
5
5
  request: Request;
6
- serverContext: Record<string, unknown>;
7
6
  url: URL;
7
+ serverContext: Record<string, unknown>;
8
8
  };
9
9
  export type ExtractTokenFunction = (params: ExtractTokenFunctionParams) => PromiseOrValue<undefined | {
10
10
  token: string;
@@ -3,8 +3,8 @@ import { VerifyOptions } from 'jsonwebtoken';
3
3
  type AtleastOneItem<T> = [T, ...T[]];
4
4
  export type ExtractTokenFunctionParams = {
5
5
  request: Request;
6
- serverContext: Record<string, unknown>;
7
6
  url: URL;
7
+ serverContext: Record<string, unknown>;
8
8
  };
9
9
  export type ExtractTokenFunction = (params: ExtractTokenFunctionParams) => PromiseOrValue<undefined | {
10
10
  token: string;