@nifrajs/graphql 3.3.0 → 4.0.0
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/http.d.ts +17 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +67 -23
- package/dist/http.js.map +1 -1
- package/dist/limits.d.ts +45 -0
- package/dist/limits.d.ts.map +1 -0
- package/dist/limits.js +149 -0
- package/dist/limits.js.map +1 -0
- package/dist/ws.d.ts +12 -0
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +177 -10
- package/dist/ws.js.map +1 -1
- package/package.json +5 -2
- package/src/http.ts +150 -20
- package/src/limits.ts +215 -0
- package/src/ws.ts +217 -13
package/dist/http.d.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* operated concern, not a public-package one).
|
|
17
17
|
*/
|
|
18
18
|
import { type ProtoPoisoning } from "@nifrajs/core/edge-kit";
|
|
19
|
-
import { type GraphQLSchema } from "graphql";
|
|
19
|
+
import { GraphQLError, type GraphQLSchema } from "graphql";
|
|
20
20
|
import { type GraphqlContextBuilder, type NifraContextLike } from "./context.js";
|
|
21
21
|
export interface GraphqlHttpOptions<Context = unknown, Env = unknown> {
|
|
22
22
|
/** The executable schema (types + resolvers), e.g. from `graphql`'s `buildSchema` or a schema builder. */
|
|
@@ -27,6 +27,20 @@ export interface GraphqlHttpOptions<Context = unknown, Env = unknown> {
|
|
|
27
27
|
readonly nifra?: NifraContextLike<Env>;
|
|
28
28
|
/** Maximum request body size in bytes. Default 1 MB. Rejected bodies answer 413. */
|
|
29
29
|
readonly maxBodyBytes?: number;
|
|
30
|
+
/** Maximum UTF-8 query size. Default 64 KiB, applied to POST and GET. */
|
|
31
|
+
readonly maxQueryBytes?: number;
|
|
32
|
+
/** Maximum UTF-8 serialized variables size. Default 256 KiB. */
|
|
33
|
+
readonly maxVariablesBytes?: number;
|
|
34
|
+
/** Maximum expanded field depth. Default 20. */
|
|
35
|
+
readonly maxDepth?: number;
|
|
36
|
+
/** Maximum aliases in one document. Default 100. */
|
|
37
|
+
readonly maxAliases?: number;
|
|
38
|
+
/** Maximum simple field complexity in one document. Default 1,000. */
|
|
39
|
+
readonly maxComplexity?: number;
|
|
40
|
+
/** Maximum operation definitions in one document. Default 10. */
|
|
41
|
+
readonly maxOperations?: number;
|
|
42
|
+
/** Maximum asynchronous resolver execution time. Default 10 seconds. */
|
|
43
|
+
readonly executionTimeoutMs?: number;
|
|
30
44
|
/** Prototype-pollution policy for the parsed JSON body. Default `"reject"`. */
|
|
31
45
|
readonly protoPoisoning?: ProtoPoisoning;
|
|
32
46
|
/** Optional root value passed to the executor. */
|
|
@@ -43,6 +57,8 @@ export interface GraphqlHttpOptions<Context = unknown, Env = unknown> {
|
|
|
43
57
|
readonly authorize?: (request: Request) => boolean | Promise<boolean>;
|
|
44
58
|
/** Emit the legacy always-200 `application/json` response shape instead of `application/graphql-response+json`. */
|
|
45
59
|
readonly legacyJsonResponse?: boolean;
|
|
60
|
+
/** Format request/execution errors. The default masks resolver messages and preserves request errors. */
|
|
61
|
+
readonly formatError?: (error: GraphQLError, phase: "request" | "execution") => unknown;
|
|
46
62
|
}
|
|
47
63
|
/**
|
|
48
64
|
* Handle one GraphQL HTTP request. Never throws - a malformed request becomes a GraphQL error envelope.
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAEL,KAAK,cAAc,EAOpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAEL,KAAK,cAAc,EAOpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAIL,YAAY,EACZ,KAAK,aAAa,EAMnB,MAAM,SAAS,CAAA;AAChB,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAA;AAoBrB,MAAM,WAAW,kBAAkB,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO;IAClE,0GAA0G;IAC1G,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACtD,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACtC,oFAAoF;IACpF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;IACxC,kDAAkD;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,mHAAmH;IACnH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,yGAAyG;IACzG,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,KAAK,OAAO,CAAA;CACxF;AA2PD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,EACnE,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,GACxC,OAAO,CAAC,QAAQ,CAAC,CAmFnB"}
|
package/dist/http.js
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import { EMPTY_RESPONSE_CONTROLS, plainError, queryObjectOf, readBodyFramed, searchOf, toResponse, } from "@nifrajs/core/edge-kit";
|
|
19
19
|
import { execute, GraphQLError, getOperationAST, parse, Source, specifiedRules, validate, } from "graphql";
|
|
20
20
|
import { buildContext, } from "./context.js";
|
|
21
|
+
import { documentLimitError, documentMetrics, graphqlLimits, requestLimitError, safeFormattedError, } from "./limits.js";
|
|
21
22
|
const DEFAULT_MAX_BODY_BYTES = 1_000_000;
|
|
22
23
|
const GRAPHQL_RESPONSE_JSON = "application/graphql-response+json; charset=utf-8";
|
|
23
24
|
const JSON_UTF8 = "application/json; charset=utf-8";
|
|
@@ -31,6 +32,11 @@ function assertByteLimit(value) {
|
|
|
31
32
|
throw new RangeError("GraphQL maxBodyBytes must be a non-negative safe integer");
|
|
32
33
|
}
|
|
33
34
|
}
|
|
35
|
+
function assertExecutionTimeout(value) {
|
|
36
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
37
|
+
throw new RangeError("GraphQL executionTimeoutMs must be a non-negative safe integer");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
34
40
|
function corsFor(request, allowedOrigins) {
|
|
35
41
|
if (allowedOrigins === undefined)
|
|
36
42
|
return { ...CORS_BASE, "access-control-allow-origin": "*" };
|
|
@@ -57,9 +63,9 @@ function graphqlResponse(payload, status, legacy, cors) {
|
|
|
57
63
|
});
|
|
58
64
|
}
|
|
59
65
|
/** A request-level (parse/validate/auth/method) failure: `{ errors: [...] }`, no `data` key. */
|
|
60
|
-
function requestError(message, status, legacy, cors, errors) {
|
|
66
|
+
function requestError(message, status, legacy, cors, errors, formatter) {
|
|
61
67
|
const payload = errors ?? [new GraphQLError(message)];
|
|
62
|
-
return graphqlResponse({ errors: payload.map((e) => e
|
|
68
|
+
return graphqlResponse({ errors: payload.map((e) => safeFormattedError(e, "request", formatter)) }, status, legacy, cors);
|
|
63
69
|
}
|
|
64
70
|
/** Coerce a `?variables=<json>` string (GET) into an object, or throw a GraphQLError on bad JSON. */
|
|
65
71
|
function parseVariables(raw) {
|
|
@@ -104,23 +110,31 @@ function paramsFromQuery(query) {
|
|
|
104
110
|
return { query: q, operationName, variables: parseVariables(query.variables) };
|
|
105
111
|
}
|
|
106
112
|
/** Parse, validate, and execute one already-extracted GraphQL request. */
|
|
107
|
-
async function run(params, request, opts, isGet, legacy, cors) {
|
|
113
|
+
async function run(params, request, opts, isGet, legacy, cors, limits, executionTimeoutMs) {
|
|
114
|
+
const requestLimit = requestLimitError(params.query, params.variables, limits);
|
|
115
|
+
if (requestLimit !== undefined) {
|
|
116
|
+
return requestError(requestLimit, 413, legacy, cors, [new GraphQLError(requestLimit)], opts.formatError);
|
|
117
|
+
}
|
|
108
118
|
let document;
|
|
109
119
|
try {
|
|
110
120
|
document = parse(new Source(params.query, "GraphQL request"));
|
|
111
121
|
}
|
|
112
122
|
catch (err) {
|
|
113
123
|
const gqlErr = err instanceof GraphQLError ? err : new GraphQLError(String(err));
|
|
114
|
-
return requestError("", 400, legacy, cors, [gqlErr]);
|
|
124
|
+
return requestError("", 400, legacy, cors, [gqlErr], opts.formatError);
|
|
115
125
|
}
|
|
116
126
|
const validationErrors = validate(opts.schema, document, specifiedRules);
|
|
117
127
|
if (validationErrors.length > 0) {
|
|
118
|
-
return requestError("", 400, legacy, cors, validationErrors);
|
|
128
|
+
return requestError("", 400, legacy, cors, validationErrors, opts.formatError);
|
|
129
|
+
}
|
|
130
|
+
const documentLimit = documentLimitError(documentMetrics(document), limits);
|
|
131
|
+
if (documentLimit !== undefined) {
|
|
132
|
+
return requestError(documentLimit, 400, legacy, cors, [new GraphQLError(documentLimit)], opts.formatError);
|
|
119
133
|
}
|
|
120
134
|
// GET is idempotent and cacheable, so per the GraphQL-over-HTTP spec it may run queries only.
|
|
121
135
|
const operationAst = getOperationAST(document, params.operationName ?? undefined);
|
|
122
136
|
if (isGet && operationAst != null && operationAst.operation !== "query") {
|
|
123
|
-
return requestError("Only query operations may run over GET.", 405, legacy, { ...cors, allow: "POST" }, [new GraphQLError("Only query operations are allowed over GET.")]);
|
|
137
|
+
return requestError("Only query operations may run over GET.", 405, legacy, { ...cors, allow: "POST" }, [new GraphQLError("Only query operations are allowed over GET.")], opts.formatError);
|
|
124
138
|
}
|
|
125
139
|
const contextInput = opts.nifra !== undefined ? { request, nifra: opts.nifra } : { request };
|
|
126
140
|
let contextValue;
|
|
@@ -129,25 +143,56 @@ async function run(params, request, opts, isGet, legacy, cors) {
|
|
|
129
143
|
}
|
|
130
144
|
catch (err) {
|
|
131
145
|
const gqlErr = err instanceof GraphQLError ? err : new GraphQLError("Failed to build request context.");
|
|
132
|
-
return graphqlResponse({ errors: [gqlErr.
|
|
146
|
+
return graphqlResponse({ errors: [safeFormattedError(gqlErr, "execution", opts.formatError)] }, 500, legacy, cors);
|
|
133
147
|
}
|
|
134
148
|
let result;
|
|
135
149
|
try {
|
|
136
|
-
|
|
150
|
+
const execution = execute({
|
|
137
151
|
schema: opts.schema,
|
|
138
152
|
document,
|
|
139
153
|
rootValue: opts.rootValue,
|
|
140
154
|
contextValue,
|
|
141
155
|
variableValues: params.variables ?? undefined,
|
|
142
156
|
operationName: params.operationName ?? undefined,
|
|
143
|
-
})
|
|
157
|
+
});
|
|
158
|
+
result = (await withExecutionTimeout(execution, executionTimeoutMs));
|
|
144
159
|
}
|
|
145
160
|
catch (err) {
|
|
146
|
-
const gqlErr = err instanceof GraphQLError
|
|
147
|
-
|
|
161
|
+
const gqlErr = err instanceof GraphQLError
|
|
162
|
+
? err
|
|
163
|
+
: err instanceof ExecutionTimeoutError
|
|
164
|
+
? new GraphQLError("Execution timed out.")
|
|
165
|
+
: new GraphQLError("Execution failed.");
|
|
166
|
+
return graphqlResponse({ errors: [safeFormattedError(gqlErr, "execution", opts.formatError)] }, err instanceof ExecutionTimeoutError ? 504 : 500, legacy, cors);
|
|
148
167
|
}
|
|
149
168
|
// Field/execution errors are a normal 200 result with both `data` and `errors`.
|
|
150
|
-
return graphqlResponse(result
|
|
169
|
+
return graphqlResponse(result.errors === undefined
|
|
170
|
+
? result
|
|
171
|
+
: {
|
|
172
|
+
...result,
|
|
173
|
+
errors: result.errors.map((error) => safeFormattedError(error, "execution", opts.formatError)),
|
|
174
|
+
}, 200, legacy, cors);
|
|
175
|
+
}
|
|
176
|
+
class ExecutionTimeoutError extends Error {
|
|
177
|
+
constructor() {
|
|
178
|
+
super("GraphQL execution timed out");
|
|
179
|
+
this.name = "ExecutionTimeoutError";
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
async function withExecutionTimeout(work, timeoutMs) {
|
|
183
|
+
if (!(work instanceof Promise) || timeoutMs === 0)
|
|
184
|
+
return work;
|
|
185
|
+
let timer;
|
|
186
|
+
const timeout = new Promise((_, reject) => {
|
|
187
|
+
timer = setTimeout(() => reject(new ExecutionTimeoutError()), timeoutMs);
|
|
188
|
+
});
|
|
189
|
+
try {
|
|
190
|
+
return await Promise.race([work, timeout]);
|
|
191
|
+
}
|
|
192
|
+
finally {
|
|
193
|
+
if (timer !== undefined)
|
|
194
|
+
clearTimeout(timer);
|
|
195
|
+
}
|
|
151
196
|
}
|
|
152
197
|
/**
|
|
153
198
|
* Handle one GraphQL HTTP request. Never throws - a malformed request becomes a GraphQL error envelope.
|
|
@@ -157,6 +202,9 @@ async function run(params, request, opts, isGet, legacy, cors) {
|
|
|
157
202
|
export async function respondGraphql(request, options) {
|
|
158
203
|
const maxBytes = options.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES;
|
|
159
204
|
assertByteLimit(maxBytes);
|
|
205
|
+
const limits = graphqlLimits(options);
|
|
206
|
+
const executionTimeoutMs = options.executionTimeoutMs ?? 10_000;
|
|
207
|
+
assertExecutionTimeout(executionTimeoutMs);
|
|
160
208
|
const legacy = options.legacyJsonResponse === true;
|
|
161
209
|
const cors = corsFor(request, options.allowedOrigins);
|
|
162
210
|
if (cors === null)
|
|
@@ -166,7 +214,7 @@ export async function respondGraphql(request, options) {
|
|
|
166
214
|
if (options.authorize !== undefined) {
|
|
167
215
|
const ok = await options.authorize(request);
|
|
168
216
|
if (!ok) {
|
|
169
|
-
return requestError("Unauthorized.", 401, legacy, cors, [new GraphQLError("Unauthorized.")]);
|
|
217
|
+
return requestError("Unauthorized.", 401, legacy, cors, [new GraphQLError("Unauthorized.")], options.formatError);
|
|
170
218
|
}
|
|
171
219
|
}
|
|
172
220
|
if (request.method === "GET") {
|
|
@@ -176,14 +224,12 @@ export async function respondGraphql(request, options) {
|
|
|
176
224
|
}
|
|
177
225
|
catch (err) {
|
|
178
226
|
const gqlErr = err instanceof GraphQLError ? err : new GraphQLError(String(err));
|
|
179
|
-
return requestError("", 400, legacy, cors, [gqlErr]);
|
|
227
|
+
return requestError("", 400, legacy, cors, [gqlErr], options.formatError);
|
|
180
228
|
}
|
|
181
|
-
return run(params, request, options, true, legacy, cors);
|
|
229
|
+
return run(params, request, options, true, legacy, cors, limits, executionTimeoutMs);
|
|
182
230
|
}
|
|
183
231
|
if (request.method !== "POST") {
|
|
184
|
-
return requestError("Method not allowed.", 405, legacy, { ...cors, allow: "GET, POST" }, [
|
|
185
|
-
new GraphQLError("Only GET and POST are supported."),
|
|
186
|
-
]);
|
|
232
|
+
return requestError("Method not allowed.", 405, legacy, { ...cors, allow: "GET, POST" }, [new GraphQLError("Only GET and POST are supported.")], options.formatError);
|
|
187
233
|
}
|
|
188
234
|
// Read the JSON body through core's single bounded + proto-guarded framing lane.
|
|
189
235
|
return readBodyFramed(request, maxBytes, options.protoPoisoning ?? "reject", async (parsed) => {
|
|
@@ -193,9 +239,9 @@ export async function respondGraphql(request, options) {
|
|
|
193
239
|
}
|
|
194
240
|
catch (err) {
|
|
195
241
|
const gqlErr = err instanceof GraphQLError ? err : new GraphQLError(String(err));
|
|
196
|
-
return requestError("", 400, legacy, cors, [gqlErr]);
|
|
242
|
+
return requestError("", 400, legacy, cors, [gqlErr], options.formatError);
|
|
197
243
|
}
|
|
198
|
-
return run(params, request, options, false, legacy, cors);
|
|
244
|
+
return run(params, request, options, false, legacy, cors, limits, executionTimeoutMs);
|
|
199
245
|
}, (response) => {
|
|
200
246
|
// readBodyFramed's own rejections (413 too-large, 415, proto-guard) - render + attach CORS.
|
|
201
247
|
const res = render(response);
|
|
@@ -206,9 +252,7 @@ export async function respondGraphql(request, options) {
|
|
|
206
252
|
// A body that failed to read (bad JSON / proto-guard) is a request error, not a crash.
|
|
207
253
|
if (err instanceof Response)
|
|
208
254
|
return err;
|
|
209
|
-
return requestError("Invalid request body.", 400, legacy, cors, [
|
|
210
|
-
new GraphQLError("Request body could not be read as JSON."),
|
|
211
|
-
]);
|
|
255
|
+
return requestError("Invalid request body.", 400, legacy, cors, [new GraphQLError("Request body could not be read as JSON.")], options.formatError);
|
|
212
256
|
}).catch(() => plainErrorResponse(cors));
|
|
213
257
|
}
|
|
214
258
|
/** Last-resort framing fallback so the handler contract ("never throws") holds even on an edge-kit change. */
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/limits.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type DocumentNode, type GraphQLError } from "graphql";
|
|
2
|
+
export declare const DEFAULT_GRAPHQL_LIMITS: Readonly<{
|
|
3
|
+
maxQueryBytes: number;
|
|
4
|
+
maxVariablesBytes: number;
|
|
5
|
+
maxDepth: 20;
|
|
6
|
+
maxAliases: 100;
|
|
7
|
+
maxComplexity: 1000;
|
|
8
|
+
maxOperations: 10;
|
|
9
|
+
}>;
|
|
10
|
+
export interface GraphqlLimitsOptions {
|
|
11
|
+
readonly maxQueryBytes?: number;
|
|
12
|
+
readonly maxVariablesBytes?: number;
|
|
13
|
+
readonly maxDepth?: number;
|
|
14
|
+
readonly maxAliases?: number;
|
|
15
|
+
readonly maxComplexity?: number;
|
|
16
|
+
readonly maxOperations?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface GraphqlLimits {
|
|
19
|
+
readonly maxQueryBytes: number;
|
|
20
|
+
readonly maxVariablesBytes: number;
|
|
21
|
+
readonly maxDepth: number;
|
|
22
|
+
readonly maxAliases: number;
|
|
23
|
+
readonly maxComplexity: number;
|
|
24
|
+
readonly maxOperations: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function graphqlLimits(options?: GraphqlLimitsOptions): GraphqlLimits;
|
|
27
|
+
export declare function utf8Bytes(value: string): number;
|
|
28
|
+
export declare function variablesBytes(value: Record<string, unknown> | null): number;
|
|
29
|
+
export interface GraphqlDocumentMetrics {
|
|
30
|
+
readonly operations: number;
|
|
31
|
+
readonly depth: number;
|
|
32
|
+
readonly aliases: number;
|
|
33
|
+
readonly complexity: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Each fragment is measured once and reused at every spread. Expanding spreads in place costs a visit
|
|
37
|
+
* per expanded field, and a document whose fragments each spread the one before twice turns n short
|
|
38
|
+
* lines into 2^n visits, all of it synchronous before any limit can refuse the document.
|
|
39
|
+
*/
|
|
40
|
+
export declare function documentMetrics(document: DocumentNode): GraphqlDocumentMetrics;
|
|
41
|
+
export declare function requestLimitError(query: string, variables: Record<string, unknown> | null, limits: GraphqlLimits): string | undefined;
|
|
42
|
+
export declare function documentLimitError(metrics: GraphqlDocumentMetrics, limits: GraphqlLimits): string | undefined;
|
|
43
|
+
export declare function maskExecutionError(error: GraphQLError): Record<string, unknown>;
|
|
44
|
+
export declare function safeFormattedError(error: GraphQLError, phase: "request" | "execution", formatter?: (error: GraphQLError, phase: "request" | "execution") => unknown): unknown;
|
|
45
|
+
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAA4B,MAAM,SAAS,CAAA;AAExF,eAAO,MAAM,sBAAsB;;;;;;;EAOjC,CAAA;AAEF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAUD,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CA6B/E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,MAAM,CAE5E;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAqCD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,CAmC9E;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACzC,MAAM,EAAE,aAAa,GACpB,MAAM,GAAG,SAAS,CAQpB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,aAAa,GACpB,MAAM,GAAG,SAAS,CAcpB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM/E;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,SAAS,GAAG,WAAW,EAC9B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,KAAK,OAAO,GAC3E,OAAO,CAST"}
|
package/dist/limits.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Kind } from "graphql";
|
|
2
|
+
export const DEFAULT_GRAPHQL_LIMITS = Object.freeze({
|
|
3
|
+
maxQueryBytes: 64 * 1024,
|
|
4
|
+
maxVariablesBytes: 256 * 1024,
|
|
5
|
+
maxDepth: 20,
|
|
6
|
+
maxAliases: 100,
|
|
7
|
+
maxComplexity: 1_000,
|
|
8
|
+
maxOperations: 10,
|
|
9
|
+
});
|
|
10
|
+
function limit(value, fallback, name, minimum) {
|
|
11
|
+
const result = value ?? fallback;
|
|
12
|
+
if (!Number.isSafeInteger(result) || result < minimum) {
|
|
13
|
+
throw new RangeError(`GraphQL ${name} must be a safe integer >= ${minimum}`);
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
export function graphqlLimits(options = {}) {
|
|
18
|
+
return {
|
|
19
|
+
maxQueryBytes: limit(options.maxQueryBytes, DEFAULT_GRAPHQL_LIMITS.maxQueryBytes, "maxQueryBytes", 1),
|
|
20
|
+
maxVariablesBytes: limit(options.maxVariablesBytes, DEFAULT_GRAPHQL_LIMITS.maxVariablesBytes, "maxVariablesBytes", 0),
|
|
21
|
+
maxDepth: limit(options.maxDepth, DEFAULT_GRAPHQL_LIMITS.maxDepth, "maxDepth", 1),
|
|
22
|
+
maxAliases: limit(options.maxAliases, DEFAULT_GRAPHQL_LIMITS.maxAliases, "maxAliases", 0),
|
|
23
|
+
maxComplexity: limit(options.maxComplexity, DEFAULT_GRAPHQL_LIMITS.maxComplexity, "maxComplexity", 1),
|
|
24
|
+
maxOperations: limit(options.maxOperations, DEFAULT_GRAPHQL_LIMITS.maxOperations, "maxOperations", 1),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function utf8Bytes(value) {
|
|
28
|
+
return new TextEncoder().encode(value).byteLength;
|
|
29
|
+
}
|
|
30
|
+
export function variablesBytes(value) {
|
|
31
|
+
return value === null ? 0 : utf8Bytes(JSON.stringify(value));
|
|
32
|
+
}
|
|
33
|
+
const NO_SELECTIONS = { depth: 0, aliases: 0, complexity: 0 };
|
|
34
|
+
/** `depth` counts from the selection set's own level, so one fragment measure holds at every spread. */
|
|
35
|
+
function selectionsMetrics(selections, fragment) {
|
|
36
|
+
let depth = 0;
|
|
37
|
+
let aliases = 0;
|
|
38
|
+
let complexity = 0;
|
|
39
|
+
for (const selection of selections) {
|
|
40
|
+
let nested;
|
|
41
|
+
if (selection.kind === Kind.FIELD) {
|
|
42
|
+
complexity += 1;
|
|
43
|
+
if (selection.alias !== undefined)
|
|
44
|
+
aliases += 1;
|
|
45
|
+
nested =
|
|
46
|
+
selection.selectionSet === undefined
|
|
47
|
+
? NO_SELECTIONS
|
|
48
|
+
: selectionsMetrics(selection.selectionSet.selections, fragment);
|
|
49
|
+
depth = Math.max(depth, nested.depth + 1);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
nested =
|
|
53
|
+
selection.kind === Kind.INLINE_FRAGMENT
|
|
54
|
+
? selectionsMetrics(selection.selectionSet.selections, fragment)
|
|
55
|
+
: fragment(selection.name.value);
|
|
56
|
+
depth = Math.max(depth, nested.depth);
|
|
57
|
+
}
|
|
58
|
+
aliases += nested.aliases;
|
|
59
|
+
complexity += nested.complexity;
|
|
60
|
+
}
|
|
61
|
+
return { depth, aliases, complexity };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Each fragment is measured once and reused at every spread. Expanding spreads in place costs a visit
|
|
65
|
+
* per expanded field, and a document whose fragments each spread the one before twice turns n short
|
|
66
|
+
* lines into 2^n visits, all of it synchronous before any limit can refuse the document.
|
|
67
|
+
*/
|
|
68
|
+
export function documentMetrics(document) {
|
|
69
|
+
const definitions = new Map();
|
|
70
|
+
for (const definition of document.definitions) {
|
|
71
|
+
if (definition.kind === Kind.FRAGMENT_DEFINITION) {
|
|
72
|
+
definitions.set(definition.name.value, definition.selectionSet.selections);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const measured = new Map();
|
|
76
|
+
const measuring = new Set();
|
|
77
|
+
const fragment = (name) => {
|
|
78
|
+
const known = measured.get(name);
|
|
79
|
+
if (known !== undefined)
|
|
80
|
+
return known;
|
|
81
|
+
const selections = definitions.get(name);
|
|
82
|
+
// An unknown fragment and a cycle back into one being measured, both refused by validation,
|
|
83
|
+
// add nothing.
|
|
84
|
+
if (selections === undefined || measuring.has(name))
|
|
85
|
+
return NO_SELECTIONS;
|
|
86
|
+
measuring.add(name);
|
|
87
|
+
const metrics = selectionsMetrics(selections, fragment);
|
|
88
|
+
measuring.delete(name);
|
|
89
|
+
measured.set(name, metrics);
|
|
90
|
+
return metrics;
|
|
91
|
+
};
|
|
92
|
+
let operations = 0;
|
|
93
|
+
let depth = 0;
|
|
94
|
+
let aliases = 0;
|
|
95
|
+
let complexity = 0;
|
|
96
|
+
for (const definition of document.definitions) {
|
|
97
|
+
if (definition.kind !== Kind.OPERATION_DEFINITION)
|
|
98
|
+
continue;
|
|
99
|
+
operations += 1;
|
|
100
|
+
const metrics = selectionsMetrics(definition.selectionSet.selections, fragment);
|
|
101
|
+
depth = Math.max(depth, metrics.depth);
|
|
102
|
+
aliases += metrics.aliases;
|
|
103
|
+
complexity += metrics.complexity;
|
|
104
|
+
}
|
|
105
|
+
return { operations, depth, aliases, complexity };
|
|
106
|
+
}
|
|
107
|
+
export function requestLimitError(query, variables, limits) {
|
|
108
|
+
if (utf8Bytes(query) > limits.maxQueryBytes) {
|
|
109
|
+
return `GraphQL query exceeds the ${limits.maxQueryBytes}-byte limit.`;
|
|
110
|
+
}
|
|
111
|
+
if (variablesBytes(variables) > limits.maxVariablesBytes) {
|
|
112
|
+
return `GraphQL variables exceed the ${limits.maxVariablesBytes}-byte limit.`;
|
|
113
|
+
}
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
export function documentLimitError(metrics, limits) {
|
|
117
|
+
if (metrics.operations > limits.maxOperations) {
|
|
118
|
+
return `GraphQL document exceeds the ${limits.maxOperations}-operation limit.`;
|
|
119
|
+
}
|
|
120
|
+
if (metrics.depth > limits.maxDepth) {
|
|
121
|
+
return `GraphQL document exceeds the depth limit of ${limits.maxDepth}.`;
|
|
122
|
+
}
|
|
123
|
+
if (metrics.aliases > limits.maxAliases) {
|
|
124
|
+
return `GraphQL document exceeds the ${limits.maxAliases}-alias limit.`;
|
|
125
|
+
}
|
|
126
|
+
if (metrics.complexity > limits.maxComplexity) {
|
|
127
|
+
return `GraphQL document exceeds the complexity limit of ${limits.maxComplexity}.`;
|
|
128
|
+
}
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
export function maskExecutionError(error) {
|
|
132
|
+
return {
|
|
133
|
+
message: "Internal server error.",
|
|
134
|
+
...(error.locations === undefined ? {} : { locations: error.locations }),
|
|
135
|
+
...(error.path === undefined ? {} : { path: error.path }),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export function safeFormattedError(error, phase, formatter) {
|
|
139
|
+
if (formatter !== undefined) {
|
|
140
|
+
try {
|
|
141
|
+
return formatter(error, phase);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return phase === "execution" ? maskExecutionError(error) : error.toJSON();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return phase === "execution" ? maskExecutionError(error) : error.toJSON();
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"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"}
|
package/dist/ws.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ interface GraphqlWsConnection {
|
|
|
23
23
|
dispatch?: (message: string) => void | Promise<void>;
|
|
24
24
|
/** Tear the graphql-ws connection down (graphql-ws's `opened()` return value). */
|
|
25
25
|
closed?: (code: number, reason: string) => void | Promise<void>;
|
|
26
|
+
readonly subscriptions: Set<string>;
|
|
26
27
|
}
|
|
27
28
|
export interface GraphqlWsOptions<Context extends Record<string, unknown> = Record<string, unknown>> {
|
|
28
29
|
/** The executable schema. */
|
|
@@ -36,6 +37,17 @@ export interface GraphqlWsOptions<Context extends Record<string, unknown> = Reco
|
|
|
36
37
|
readonly onConnect?: (payload: ConnectionInitMessage["payload"], request: Request) => boolean | Promise<boolean>;
|
|
37
38
|
/** Additional raw `graphql-ws` server options merged last (advanced escape hatch). */
|
|
38
39
|
readonly serverOptions?: Partial<ServerOptions>;
|
|
40
|
+
/** Same query/complexity limits as the HTTP transport. */
|
|
41
|
+
readonly maxQueryBytes?: number;
|
|
42
|
+
readonly maxVariablesBytes?: number;
|
|
43
|
+
readonly maxDepth?: number;
|
|
44
|
+
readonly maxAliases?: number;
|
|
45
|
+
readonly maxComplexity?: number;
|
|
46
|
+
readonly maxOperations?: number;
|
|
47
|
+
/** Maximum concurrent subscription operation ids per connection. Default 20. */
|
|
48
|
+
readonly maxSubscriptions?: number;
|
|
49
|
+
/** Maximum time for initial execute/subscribe setup. Default 10 seconds. */
|
|
50
|
+
readonly executionTimeoutMs?: number;
|
|
39
51
|
}
|
|
40
52
|
/**
|
|
41
53
|
* Build a nifra {@link WebSocketHandler} that terminates the `graphql-transport-ws` protocol. Register
|
package/dist/ws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAoC,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAoC,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAKL,KAAK,aAAa,EAKnB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,KAAK,qBAAqB,EAI1B,KAAK,aAAa,EACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAA;AASvE,2EAA2E;AAC3E,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,kFAAkF;IAClF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB,CAC/B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjE,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACjD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CACnB,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,EACzC,OAAO,EAAE,OAAO,KACb,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,sFAAsF;IACtF,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAC/C,0DAA0D;IAC1D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CACrC;AA4HD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChG,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GACjC,gBAAgB,CAAC,mBAAmB,CAAC,CAsHvC"}
|