nuxt-graphql-middleware 3.1.0-beta.1 → 3.1.0-beta.2
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/dist/module.d.ts +101 -102
- package/dist/module.json +2 -2
- package/dist/module.mjs +10 -7
- package/dist/runtime/composables/index.mjs +2 -0
- package/dist/runtime/serverHandler/index.mjs +2 -1
- package/dist/runtime/serverOptions/defineGraphqlServerOptions.d.ts +2 -0
- package/dist/runtime/serverOptions/defineGraphqlServerOptions.mjs +3 -0
- package/dist/runtime/serverOptions/index.d.ts +2 -2
- package/dist/runtime/serverOptions/index.mjs +2 -3
- package/package.json +13 -15
package/dist/module.d.ts
CHANGED
|
@@ -1,13 +1,110 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as _nuxt_schema from '@nuxt/schema';
|
|
2
|
+
import { TypeScriptDocumentsPluginConfig } from '@graphql-codegen/typescript-operations';
|
|
2
3
|
import { H3Event } from 'h3';
|
|
3
4
|
import { FetchOptions, FetchResponse, FetchError } from 'ofetch';
|
|
4
|
-
import { TypeScriptDocumentsPluginConfig } from '@graphql-codegen/typescript-operations';
|
|
5
5
|
|
|
6
6
|
type GraphqlMiddlewareGraphqlEndpointMethod = (event?: H3Event, operation?: string, operationName?: string) => string | Promise<string> | void;
|
|
7
7
|
type GraphqlMiddlewareServerFetchOptionsMethod = (event?: H3Event, operation?: string, operationName?: string) => FetchOptions | Promise<FetchOptions>;
|
|
8
8
|
type GraphqlMiddlewareOnServerResponseMethod = (event: H3Event, response: FetchResponse<any>, operation?: string, operationName?: string) => any | Promise<any>;
|
|
9
9
|
type GraphqlMiddlewareOnServerErrorMethod = (event: H3Event, error: FetchError, operation?: string, operationName?: string) => any | Promise<any>;
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Configuration options during runtime.
|
|
12
|
+
*/
|
|
13
|
+
type GraphqlMiddlewareServerOptions = {
|
|
14
|
+
/**
|
|
15
|
+
* Custom callback to return the GraphQL endpoint per request.
|
|
16
|
+
*
|
|
17
|
+
* @default undefined
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* function graphqlEndpoint(event, operation, operationName) {
|
|
22
|
+
* const language = getLanguageFromRequest(event)
|
|
23
|
+
* return `https://api.example.com/${language}/graphql`
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
graphqlEndpoint?: GraphqlMiddlewareGraphqlEndpointMethod;
|
|
28
|
+
/**
|
|
29
|
+
* Provide the options for the ofetch request to the GraphQL server.
|
|
30
|
+
*
|
|
31
|
+
* @default undefined
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { getHeader } from 'h3'
|
|
36
|
+
*
|
|
37
|
+
* // Pass the cookie from the client request to the GraphQL request.
|
|
38
|
+
* function serverFetchOptions(event, operation, operationName) {
|
|
39
|
+
* return {
|
|
40
|
+
* headers: {
|
|
41
|
+
* Cookie: getHeader(event, 'cookie')
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
serverFetchOptions?: GraphqlMiddlewareServerFetchOptionsMethod;
|
|
48
|
+
/**
|
|
49
|
+
* Handle the response from the GraphQL server.
|
|
50
|
+
*
|
|
51
|
+
* You can alter the response, add additional properties to the data, get
|
|
52
|
+
* and set headers, etc.
|
|
53
|
+
*
|
|
54
|
+
* ```ts
|
|
55
|
+
* import type { H3Event } from 'h3'
|
|
56
|
+
* import type { FetchResponse } from 'ofetch'
|
|
57
|
+
*
|
|
58
|
+
* function onServerResponse(event: H3Event, graphqlResponse: FetchResponse) {
|
|
59
|
+
* // Set a static header.
|
|
60
|
+
* event.node.res.setHeader('x-nuxt-custom-header', 'A custom header value')
|
|
61
|
+
*
|
|
62
|
+
* // Pass the set-cookie header from the GraphQL response to the client.
|
|
63
|
+
* const setCookie = graphqlResponse.headers.get('set-cookie')
|
|
64
|
+
* if (setCookie) {
|
|
65
|
+
* event.node.res.setHeader('set-cookie', setCookie)
|
|
66
|
+
* }
|
|
67
|
+
*
|
|
68
|
+
* // Add additional properties to the response.
|
|
69
|
+
* graphqlResponse._data.__customProperty = ['My', 'values']
|
|
70
|
+
*
|
|
71
|
+
* // Return the GraphQL response.
|
|
72
|
+
* return graphqlResponse._data
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
onServerResponse?: GraphqlMiddlewareOnServerResponseMethod;
|
|
77
|
+
/**
|
|
78
|
+
* Handle a fetch error from the GraphQL request.
|
|
79
|
+
*
|
|
80
|
+
* Note that errors are only thrown for responses that are not status
|
|
81
|
+
* 200-299. See https://github.com/unjs/ofetch#%EF%B8%8F-handling-errors for
|
|
82
|
+
* more information.
|
|
83
|
+
*
|
|
84
|
+
* ```ts
|
|
85
|
+
* import { createError } from 'h3'
|
|
86
|
+
* import type { H3Event } from 'h3'
|
|
87
|
+
* import type { FetchError } from 'ofetch'
|
|
88
|
+
*
|
|
89
|
+
* function onServerError(
|
|
90
|
+
* event: H3Event,
|
|
91
|
+
* error: FetchError,
|
|
92
|
+
* operation: string,
|
|
93
|
+
* operationName: string,
|
|
94
|
+
* ) {
|
|
95
|
+
* // Throw a h3 error.
|
|
96
|
+
* throw createError({
|
|
97
|
+
* statusCode: 500,
|
|
98
|
+
* statusMessage: `Couldn't execute GraphQL ${operation} "${operationName}".`,
|
|
99
|
+
* data: error.message
|
|
100
|
+
* })
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
onServerError?: GraphqlMiddlewareOnServerErrorMethod;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
interface ModuleOptions {
|
|
11
108
|
/**
|
|
12
109
|
* File glob patterns for the auto import feature.
|
|
13
110
|
*
|
|
@@ -116,105 +213,7 @@ interface GraphqlMiddlewareConfig {
|
|
|
116
213
|
*/
|
|
117
214
|
codegenConfig?: TypeScriptDocumentsPluginConfig;
|
|
118
215
|
}
|
|
119
|
-
/**
|
|
120
|
-
* Configuration options during runtime.
|
|
121
|
-
*/
|
|
122
|
-
type GraphqlMiddlewareServerOptions = {
|
|
123
|
-
/**
|
|
124
|
-
* Custom callback to return the GraphQL endpoint per request.
|
|
125
|
-
*
|
|
126
|
-
* @default undefined
|
|
127
|
-
*
|
|
128
|
-
* @example
|
|
129
|
-
* ```ts
|
|
130
|
-
* function graphqlEndpoint(event, operation, operationName) {
|
|
131
|
-
* const language = getLanguageFromRequest(event)
|
|
132
|
-
* return `https://api.example.com/${language}/graphql`
|
|
133
|
-
* }
|
|
134
|
-
* ```
|
|
135
|
-
*/
|
|
136
|
-
graphqlEndpoint?: GraphqlMiddlewareGraphqlEndpointMethod;
|
|
137
|
-
/**
|
|
138
|
-
* Provide the options for the ofetch request to the GraphQL server.
|
|
139
|
-
*
|
|
140
|
-
* @default undefined
|
|
141
|
-
*
|
|
142
|
-
* @example
|
|
143
|
-
* ```ts
|
|
144
|
-
* import { getHeader } from 'h3'
|
|
145
|
-
*
|
|
146
|
-
* // Pass the cookie from the client request to the GraphQL request.
|
|
147
|
-
* function serverFetchOptions(event, operation, operationName) {
|
|
148
|
-
* return {
|
|
149
|
-
* headers: {
|
|
150
|
-
* Cookie: getHeader(event, 'cookie')
|
|
151
|
-
* }
|
|
152
|
-
* }
|
|
153
|
-
* }
|
|
154
|
-
* ```
|
|
155
|
-
*/
|
|
156
|
-
serverFetchOptions?: GraphqlMiddlewareServerFetchOptionsMethod;
|
|
157
|
-
/**
|
|
158
|
-
* Handle the response from the GraphQL server.
|
|
159
|
-
*
|
|
160
|
-
* You can alter the response, add additional properties to the data, get
|
|
161
|
-
* and set headers, etc.
|
|
162
|
-
*
|
|
163
|
-
* ```ts
|
|
164
|
-
* import type { H3Event } from 'h3'
|
|
165
|
-
* import type { FetchResponse } from 'ofetch'
|
|
166
|
-
*
|
|
167
|
-
* function onServerResponse(event: H3Event, graphqlResponse: FetchResponse) {
|
|
168
|
-
* // Set a static header.
|
|
169
|
-
* event.node.res.setHeader('x-nuxt-custom-header', 'A custom header value')
|
|
170
|
-
*
|
|
171
|
-
* // Pass the set-cookie header from the GraphQL response to the client.
|
|
172
|
-
* const setCookie = graphqlResponse.headers.get('set-cookie')
|
|
173
|
-
* if (setCookie) {
|
|
174
|
-
* event.node.res.setHeader('set-cookie', setCookie)
|
|
175
|
-
* }
|
|
176
|
-
*
|
|
177
|
-
* // Add additional properties to the response.
|
|
178
|
-
* graphqlResponse._data.__customProperty = ['My', 'values']
|
|
179
|
-
*
|
|
180
|
-
* // Return the GraphQL response.
|
|
181
|
-
* return graphqlResponse._data
|
|
182
|
-
* }
|
|
183
|
-
* ```
|
|
184
|
-
*/
|
|
185
|
-
onServerResponse?: GraphqlMiddlewareOnServerResponseMethod;
|
|
186
|
-
/**
|
|
187
|
-
* Handle a fetch error from the GraphQL request.
|
|
188
|
-
*
|
|
189
|
-
* Note that errors are only thrown for responses that are not status
|
|
190
|
-
* 200-299. See https://github.com/unjs/ofetch#%EF%B8%8F-handling-errors for
|
|
191
|
-
* more information.
|
|
192
|
-
*
|
|
193
|
-
* ```ts
|
|
194
|
-
* import { createError } from 'h3'
|
|
195
|
-
* import type { H3Event } from 'h3'
|
|
196
|
-
* import type { FetchError } from 'ofetch'
|
|
197
|
-
*
|
|
198
|
-
* function onServerError(
|
|
199
|
-
* event: H3Event,
|
|
200
|
-
* error: FetchError,
|
|
201
|
-
* operation: string,
|
|
202
|
-
* operationName: string,
|
|
203
|
-
* ) {
|
|
204
|
-
* // Throw a h3 error.
|
|
205
|
-
* throw createError({
|
|
206
|
-
* statusCode: 500,
|
|
207
|
-
* statusMessage: `Couldn't execute GraphQL ${operation} "${operationName}".`,
|
|
208
|
-
* data: error.message
|
|
209
|
-
* })
|
|
210
|
-
* }
|
|
211
|
-
* ```
|
|
212
|
-
*/
|
|
213
|
-
onServerError?: GraphqlMiddlewareOnServerErrorMethod;
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
type ModuleOptions = GraphqlMiddlewareConfig;
|
|
217
216
|
type ModuleHooks = {};
|
|
218
|
-
declare const _default: NuxtModule<
|
|
217
|
+
declare const _default: _nuxt_schema.NuxtModule<ModuleOptions>;
|
|
219
218
|
|
|
220
219
|
export { GraphqlMiddlewareServerOptions, ModuleHooks, ModuleOptions, _default as default };
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -17,7 +17,7 @@ import { oldVisit } from '@graphql-codegen/plugin-helpers';
|
|
|
17
17
|
import { pascalCase } from 'change-case-all';
|
|
18
18
|
|
|
19
19
|
const name = "nuxt-graphql-middleware";
|
|
20
|
-
const version = "3.1.0-beta.
|
|
20
|
+
const version = "3.1.0-beta.2";
|
|
21
21
|
|
|
22
22
|
var GraphqlMiddlewareTemplate = /* @__PURE__ */ ((GraphqlMiddlewareTemplate2) => {
|
|
23
23
|
GraphqlMiddlewareTemplate2["OperationTypes"] = "graphql-operations.d.ts";
|
|
@@ -255,7 +255,7 @@ function validateDeprecated(options) {
|
|
|
255
255
|
);
|
|
256
256
|
if (key === "graphqlEndpoint") {
|
|
257
257
|
logger.info(`
|
|
258
|
-
import { defineGraphqlServerOptions } from '
|
|
258
|
+
import { defineGraphqlServerOptions } from '#graphql-server-options'
|
|
259
259
|
import { getHeader } from 'h3'
|
|
260
260
|
import acceptLanguageParser from 'accept-language-parser';
|
|
261
261
|
|
|
@@ -273,7 +273,7 @@ export default defineGraphqlServerOptions({
|
|
|
273
273
|
}
|
|
274
274
|
if (key === "serverFetchOptions") {
|
|
275
275
|
logger.info(`
|
|
276
|
-
import { defineGraphqlServerOptions } from '
|
|
276
|
+
import { defineGraphqlServerOptions } from '#graphql-server-options'
|
|
277
277
|
import { getHeader } from 'h3'
|
|
278
278
|
|
|
279
279
|
// Pass the cookie from the client request to the GraphQL request.
|
|
@@ -289,7 +289,7 @@ export default defineGraphqlServerOptions({
|
|
|
289
289
|
}
|
|
290
290
|
if (key === "onServerResponse") {
|
|
291
291
|
logger.info(`
|
|
292
|
-
import { defineGraphqlServerOptions } from '
|
|
292
|
+
import { defineGraphqlServerOptions } from '#graphql-server-options'
|
|
293
293
|
import type { H3Event } from 'h3'
|
|
294
294
|
import type { FetchResponse } from 'ofetch'
|
|
295
295
|
|
|
@@ -314,7 +314,7 @@ export default defineGraphqlServerOptions({
|
|
|
314
314
|
}
|
|
315
315
|
if (key === "onServerError") {
|
|
316
316
|
logger.info(`
|
|
317
|
-
import { defineGraphqlServerOptions } from '
|
|
317
|
+
import { defineGraphqlServerOptions } from '#graphql-server-options'
|
|
318
318
|
import type { H3Event } from 'h3'
|
|
319
319
|
import type { FetchError } from 'ofetch'
|
|
320
320
|
|
|
@@ -494,7 +494,7 @@ const module = defineNuxtModule({
|
|
|
494
494
|
configKey: "graphqlMiddleware",
|
|
495
495
|
version,
|
|
496
496
|
compatibility: {
|
|
497
|
-
nuxt: "^3.
|
|
497
|
+
nuxt: "^3.1.0"
|
|
498
498
|
}
|
|
499
499
|
},
|
|
500
500
|
defaults: defaultOptions,
|
|
@@ -609,6 +609,9 @@ declare module '#graphql-documents' {
|
|
|
609
609
|
`;
|
|
610
610
|
}
|
|
611
611
|
});
|
|
612
|
+
nuxt.options.alias["#graphql-server-options"] = moduleResolver(
|
|
613
|
+
"runtime/serverOptions"
|
|
614
|
+
);
|
|
612
615
|
const extensions = ["js", "mjs", "ts"];
|
|
613
616
|
const resolvedPath = "~/app/graphqlMiddleware.serverOptions".replace(/^(~~|@@)/, nuxt.options.rootDir).replace(/^(~|@)/, nuxt.options.srcDir);
|
|
614
617
|
const template = (() => {
|
|
@@ -630,7 +633,7 @@ declare module '#graphql-documents' {
|
|
|
630
633
|
nuxt.options.nitro.externals = nuxt.options.nitro.externals || {};
|
|
631
634
|
nuxt.options.nitro.externals.inline = nuxt.options.nitro.externals.inline || [];
|
|
632
635
|
nuxt.options.nitro.externals.inline.push(template.dst);
|
|
633
|
-
nuxt.options.alias["#graphql-middleware-server-options"] = template.dst;
|
|
636
|
+
nuxt.options.alias["#graphql-middleware-server-options-build"] = template.dst;
|
|
634
637
|
addServerHandler({
|
|
635
638
|
handler: moduleResolver("./runtime/serverHandler/index"),
|
|
636
639
|
route: options.serverApiPrefix + "/:operation/:name"
|
|
@@ -18,6 +18,7 @@ export function useGraphqlQuery(...args) {
|
|
|
18
18
|
const state2 = useGraphqlState();
|
|
19
19
|
return $fetch(getEndpoint("query", name), {
|
|
20
20
|
params: buildRequestParams(args[1]),
|
|
21
|
+
// @todo: Remove any once https://github.com/unjs/nitro/pull/883 is released.
|
|
21
22
|
...state2.fetchOptions
|
|
22
23
|
});
|
|
23
24
|
}
|
|
@@ -29,6 +30,7 @@ export function useGraphqlMutation(...args) {
|
|
|
29
30
|
return Promise.reject(new Error("Invalid mutation name"));
|
|
30
31
|
}
|
|
31
32
|
return $fetch(getEndpoint("mutation", name), {
|
|
33
|
+
// @todo: Remove any once https://github.com/unjs/nitro/pull/883 is released.
|
|
32
34
|
method: "post",
|
|
33
35
|
body,
|
|
34
36
|
...state2.fetchOptions
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import { GraphqlMiddlewareOperation } from "./../settings/index.mjs";
|
|
11
11
|
import { documents } from "#graphql-documents";
|
|
12
12
|
import { useRuntimeConfig } from "#imports";
|
|
13
|
-
import serverOptions from "#graphql-middleware-server-options";
|
|
13
|
+
import serverOptions from "#graphql-middleware-server-options-build";
|
|
14
14
|
export default defineEventHandler(async (event) => {
|
|
15
15
|
const method = getMethod(event);
|
|
16
16
|
const operation = event.context.params.operation;
|
|
@@ -33,6 +33,7 @@ export default defineEventHandler(async (event) => {
|
|
|
33
33
|
);
|
|
34
34
|
const variables = operation === GraphqlMiddlewareOperation.Query ? queryParamToVariables(getQuery(event)) : await readBody(event);
|
|
35
35
|
return $fetch.raw(endpoint, {
|
|
36
|
+
// @todo: Remove any once https://github.com/unjs/nitro/pull/883 is released.
|
|
36
37
|
method: "POST",
|
|
37
38
|
body: {
|
|
38
39
|
query,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
export
|
|
1
|
+
import { defineGraphqlServerOptions } from './defineGraphqlServerOptions';
|
|
2
|
+
export { defineGraphqlServerOptions };
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
1
|
+
import { defineGraphqlServerOptions } from "./defineGraphqlServerOptions.mjs";
|
|
2
|
+
export { defineGraphqlServerOptions };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-graphql-middleware",
|
|
3
|
-
"version": "3.1.0-beta.
|
|
3
|
+
"version": "3.1.0-beta.2",
|
|
4
4
|
"description": "Module to perform GraphQL requests as a server middleware.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,9 +12,7 @@
|
|
|
12
12
|
".": {
|
|
13
13
|
"import": "./dist/module.mjs",
|
|
14
14
|
"require": "./dist/module.cjs"
|
|
15
|
-
}
|
|
16
|
-
"./server": "./dist/runtime/serverOptions/index.mjs",
|
|
17
|
-
"./server/*": "./dist/runtime/serverOptions/*.mjs"
|
|
15
|
+
}
|
|
18
16
|
},
|
|
19
17
|
"main": "./dist/module.cjs",
|
|
20
18
|
"types": "./dist/types.d.ts",
|
|
@@ -37,11 +35,11 @@
|
|
|
37
35
|
"test:coverage": "vitest run --coverage"
|
|
38
36
|
},
|
|
39
37
|
"dependencies": {
|
|
40
|
-
"@graphql-codegen/cli": "^2.
|
|
41
|
-
"@graphql-codegen/schema-ast": "^2.
|
|
42
|
-
"@graphql-codegen/typescript": "^2.8.
|
|
38
|
+
"@graphql-codegen/cli": "^2.16.4",
|
|
39
|
+
"@graphql-codegen/schema-ast": "^2.6.1",
|
|
40
|
+
"@graphql-codegen/typescript": "^2.8.7",
|
|
43
41
|
"@graphql-codegen/typescript-generic-sdk": "^3.0.4",
|
|
44
|
-
"@graphql-codegen/typescript-operations": "^2.5.
|
|
42
|
+
"@graphql-codegen/typescript-operations": "^2.5.12",
|
|
45
43
|
"@graphql-fragment-import/lib": "^2.0.0",
|
|
46
44
|
"@graphql-tools/utils": "^9.1.1",
|
|
47
45
|
"@nuxt/kit": "^3.0.0",
|
|
@@ -51,21 +49,21 @@
|
|
|
51
49
|
"devDependencies": {
|
|
52
50
|
"@nuxt/module-builder": "^0.2.1",
|
|
53
51
|
"@nuxt/schema": "^3.0.0",
|
|
54
|
-
"@nuxt/test-utils": "^3.
|
|
52
|
+
"@nuxt/test-utils": "^3.1.1",
|
|
55
53
|
"@nuxtjs/eslint-config-typescript": "^12.0.0",
|
|
56
54
|
"@types/capture-console": "^1.0.1",
|
|
57
55
|
"@types/cli-table": "^0.3.1",
|
|
58
56
|
"@types/inquirer": "^9.0.3",
|
|
59
|
-
"@vitest/coverage-c8": "^0.25.
|
|
57
|
+
"@vitest/coverage-c8": "^0.25.8",
|
|
60
58
|
"cypress": "^11.2.0",
|
|
61
|
-
"eslint": "^8.
|
|
62
|
-
"eslint-config-prettier": "^8.
|
|
59
|
+
"eslint": "^8.33.0",
|
|
60
|
+
"eslint-config-prettier": "^8.6.0",
|
|
63
61
|
"eslint-plugin-prettier": "^4.2.1",
|
|
64
62
|
"jsdoc-to-markdown": "^8.0.0",
|
|
65
|
-
"nuxt": "^3.
|
|
66
|
-
"prettier": "^2.8.
|
|
63
|
+
"nuxt": "^3.1.1",
|
|
64
|
+
"prettier": "^2.8.3",
|
|
67
65
|
"strip-ansi": "^7.0.1",
|
|
68
|
-
"typedoc": "^0.23.
|
|
66
|
+
"typedoc": "^0.23.24",
|
|
69
67
|
"typedoc-plugin-markdown": "^3.14.0",
|
|
70
68
|
"vitepress": "^1.0.0-alpha.30",
|
|
71
69
|
"vitest": "^0.25.3"
|