@nifrajs/graphql 4.0.0 → 5.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/README.md +13 -2
- package/dist/http.d.ts +14 -4
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +32 -11
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -9
- package/dist/index.js.map +1 -1
- package/dist/limits.d.ts +19 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +110 -1
- package/dist/limits.js.map +1 -1
- package/dist/pubsub.d.ts +12 -2
- package/dist/pubsub.d.ts.map +1 -1
- package/dist/pubsub.js +41 -6
- package/dist/pubsub.js.map +1 -1
- package/dist/ws.d.ts +15 -1
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +102 -21
- package/dist/ws.js.map +1 -1
- package/package.json +2 -2
- package/src/http.ts +71 -21
- package/src/index.ts +50 -10
- package/src/limits.ts +124 -1
- package/src/pubsub.ts +55 -6
- package/src/ws.ts +148 -35
package/README.md
CHANGED
|
@@ -65,6 +65,15 @@ Resolvers read it as their third argument.
|
|
|
65
65
|
|
|
66
66
|
Subscriptions run over the same route via `graphql-transport-ws`. Bring a subscription source - the bundled in-memory `createPubSub` is the reference implementation; swap in a durable bus (Redis, a Durable Object, NATS) that exposes the same `{ publish, subscribe }` shape for multi-instance deploys.
|
|
67
67
|
|
|
68
|
+
Each reference subscriber queues at most 1024 events by default. If publication outruns consumption,
|
|
69
|
+
the overloaded iterator detaches, clears its queued values, and its next pull rejects with
|
|
70
|
+
`GraphqlPubSubOverflowError` (`code: "graphql_pubsub_overflow"`). Configure
|
|
71
|
+
`createPubSub({ maxQueuedEvents: 256, overflow: "error" })` to change the finite limit. Explicit
|
|
72
|
+
`"drop-oldest"` and `"drop-newest"` policies support consumers that accept missing events. Returning or
|
|
73
|
+
throwing into an iterator clears its queue and terminates delivery. This is an event-count bound;
|
|
74
|
+
publishers remain responsible for payload sizes. Synchronous `publish` does not provide producer
|
|
75
|
+
backpressure or cross-instance delivery.
|
|
76
|
+
|
|
68
77
|
```ts
|
|
69
78
|
import { server } from "@nifrajs/core"
|
|
70
79
|
import { websocket } from "@nifrajs/core/ws"
|
|
@@ -87,6 +96,8 @@ pubsub.publish("count", 1)
|
|
|
87
96
|
|
|
88
97
|
The route must negotiate the `graphql-transport-ws` subprotocol at the WebSocket layer for a browser `graphql-ws` client to connect.
|
|
89
98
|
|
|
99
|
+
With `subscriptions: true`, a socket is admitted only when `authorize` accepts its upgrade request, and operations over it get the same query limits as HTTP. A browser cannot set headers on a WebSocket upgrade, so cookie auth carries over and bearer-header auth does not; for a token sent in `connection_init`, pass WS options with `onConnect` instead. When `authorize` is set, WS options must have their own `authorize` or `onConnect` (`onConnect: () => true` admits every socket on purpose), or `mountGraphql` throws.
|
|
100
|
+
|
|
90
101
|
## Options
|
|
91
102
|
|
|
92
103
|
| Option | Default | Purpose |
|
|
@@ -99,12 +110,12 @@ The route must negotiate the `graphql-transport-ws` subprotocol at the WebSocket
|
|
|
99
110
|
| `allowedOrigins` | reflect `*` | CORS origin allowlist. |
|
|
100
111
|
| `authorize` | - | Per-request guard; return `false` for 401. |
|
|
101
112
|
| `enableGet` | `true` | Serve `GET /graphql` (queries only). |
|
|
102
|
-
| `subscriptions` | `false` | `true` (reuse schema
|
|
113
|
+
| `subscriptions` | `false` | `true` (reuse schema, context, `authorize` and limits) or explicit WS options. |
|
|
103
114
|
| `legacyJsonResponse` | `false` | Old always-200 `application/json` shape. |
|
|
104
115
|
|
|
105
116
|
## Responses
|
|
106
117
|
|
|
107
|
-
By default responses use the `application/graphql-response+json` media type with spec status codes: `200` for an executed result (including field errors in `errors`), `400` for a parse or validation failure, `401` for a rejected `authorize`, `405` for a mutation attempted over GET. Set `legacyJsonResponse: true` for the older always-`200` `application/json` behavior some clients expect.
|
|
118
|
+
By default responses use the `application/graphql-response+json` media type with spec status codes: `200` for an executed result (including field errors in `errors`), `400` for a parse or validation failure, `401` for a rejected `authorize`, `405` for a mutation attempted over GET, `415` for a POST whose body is not `application/json` (or another `+json` type). The last keeps a cross-site HTML form, which can send only urlencoded, multipart or plain-text bodies, from posting a mutation with the visitor's cookies. Set `legacyJsonResponse: true` for the older always-`200` `application/json` behavior some clients expect.
|
|
108
119
|
|
|
109
120
|
## License
|
|
110
121
|
|
package/dist/http.d.ts
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* (`@nifrajs/core/edge-kit`'s {@link readBodyFramed}).
|
|
7
7
|
*
|
|
8
8
|
* Spec: https://graphql.github.io/graphql-over-http/draft/. POST carries `{query, operationName?,
|
|
9
|
-
* variables?, extensions?}` as `application/json
|
|
9
|
+
* variables?, extensions?}` as `application/json` (any other media type answers 415, so a cross-site
|
|
10
|
+
* form cannot post a mutation); GET carries them as query-string params and may run
|
|
10
11
|
* **queries only** (never a mutation) so it stays a safe, cacheable idempotent method. Responses use the
|
|
11
12
|
* `application/graphql-response+json` media type with spec status codes by default; set
|
|
12
13
|
* `legacyJsonResponse` for the old always-200 `application/json` shape older clients expect.
|
|
@@ -39,7 +40,16 @@ export interface GraphqlHttpOptions<Context = unknown, Env = unknown> {
|
|
|
39
40
|
readonly maxComplexity?: number;
|
|
40
41
|
/** Maximum operation definitions in one document. Default 10. */
|
|
41
42
|
readonly maxOperations?: number;
|
|
42
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Maximum pairs of fields sharing a response name in one selection set, counted through fragments.
|
|
45
|
+
* Validation compares every such pair, so this bounds its cost. Default 2,000.
|
|
46
|
+
*/
|
|
47
|
+
readonly maxFieldOverlaps?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Maximum asynchronous resolver execution time. Default 10 seconds. The execution's abort signal,
|
|
50
|
+
* which a resolver reads through `info.getAbortSignal()`, is aborted at this deadline and when the
|
|
51
|
+
* request itself is aborted.
|
|
52
|
+
*/
|
|
43
53
|
readonly executionTimeoutMs?: number;
|
|
44
54
|
/** Prototype-pollution policy for the parsed JSON body. Default `"reject"`. */
|
|
45
55
|
readonly protoPoisoning?: ProtoPoisoning;
|
|
@@ -51,8 +61,8 @@ export interface GraphqlHttpOptions<Context = unknown, Env = unknown> {
|
|
|
51
61
|
*/
|
|
52
62
|
readonly allowedOrigins?: readonly string[];
|
|
53
63
|
/**
|
|
54
|
-
* Per-request authorization, run after the
|
|
55
|
-
* `401` with a GraphQL error envelope
|
|
64
|
+
* Per-request authorization, run after the origin check and before the body is read or parsed; a
|
|
65
|
+
* CORS preflight (`OPTIONS`) skips it. Return `false` to answer `401` with a GraphQL error envelope.
|
|
56
66
|
*/
|
|
57
67
|
readonly authorize?: (request: Request) => boolean | Promise<boolean>;
|
|
58
68
|
/** Emit the legacy always-200 `application/json` response shape instead of `application/graphql-response+json`. */
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;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;AAqBrB,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;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC;;;;OAIG;IACH,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;AAqRD;;;;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,CAgGnB"}
|
package/dist/http.js
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* (`@nifrajs/core/edge-kit`'s {@link readBodyFramed}).
|
|
7
7
|
*
|
|
8
8
|
* Spec: https://graphql.github.io/graphql-over-http/draft/. POST carries `{query, operationName?,
|
|
9
|
-
* variables?, extensions?}` as `application/json
|
|
9
|
+
* variables?, extensions?}` as `application/json` (any other media type answers 415, so a cross-site
|
|
10
|
+
* form cannot post a mutation); GET carries them as query-string params and may run
|
|
10
11
|
* **queries only** (never a mutation) so it stays a safe, cacheable idempotent method. Responses use the
|
|
11
12
|
* `application/graphql-response+json` media type with spec status codes by default; set
|
|
12
13
|
* `legacyJsonResponse` for the old always-200 `application/json` shape older clients expect.
|
|
@@ -18,7 +19,7 @@
|
|
|
18
19
|
import { EMPTY_RESPONSE_CONTROLS, plainError, queryObjectOf, readBodyFramed, searchOf, toResponse, } from "@nifrajs/core/edge-kit";
|
|
19
20
|
import { execute, GraphQLError, getOperationAST, parse, Source, specifiedRules, validate, } from "graphql";
|
|
20
21
|
import { buildContext, } from "./context.js";
|
|
21
|
-
import { documentLimitError, documentMetrics, graphqlLimits, requestLimitError, safeFormattedError, } from "./limits.js";
|
|
22
|
+
import { documentLimitError, documentMetrics, graphqlLimits, overlapLimitError, requestLimitError, safeFormattedError, } from "./limits.js";
|
|
22
23
|
const DEFAULT_MAX_BODY_BYTES = 1_000_000;
|
|
23
24
|
const GRAPHQL_RESPONSE_JSON = "application/graphql-response+json; charset=utf-8";
|
|
24
25
|
const JSON_UTF8 = "application/json; charset=utf-8";
|
|
@@ -89,6 +90,11 @@ function parseVariables(raw) {
|
|
|
89
90
|
}
|
|
90
91
|
return parsed;
|
|
91
92
|
}
|
|
93
|
+
/** `application/json` or a structured `+json` type, parameters ignored. */
|
|
94
|
+
function isJsonMediaType(header) {
|
|
95
|
+
const essence = header?.split(";", 1)[0]?.trim().toLowerCase() ?? "";
|
|
96
|
+
return essence === "application/json" || /^application\/[a-z0-9.+-]+\+json$/.test(essence);
|
|
97
|
+
}
|
|
92
98
|
/** Read `{query, operationName, variables}` from a parsed POST body. Throws GraphQLError when malformed. */
|
|
93
99
|
function paramsFromBody(body) {
|
|
94
100
|
if (body === null || typeof body !== "object" || Array.isArray(body)) {
|
|
@@ -123,14 +129,16 @@ async function run(params, request, opts, isGet, legacy, cors, limits, execution
|
|
|
123
129
|
const gqlErr = err instanceof GraphQLError ? err : new GraphQLError(String(err));
|
|
124
130
|
return requestError("", 400, legacy, cors, [gqlErr], opts.formatError);
|
|
125
131
|
}
|
|
132
|
+
// Every limit runs before validate(): its overlap rule is quadratic, so a small document within the
|
|
133
|
+
// byte limit can hold the event loop for seconds.
|
|
134
|
+
const documentLimit = documentLimitError(documentMetrics(document), limits) ?? overlapLimitError(document, limits);
|
|
135
|
+
if (documentLimit !== undefined) {
|
|
136
|
+
return requestError(documentLimit, 400, legacy, cors, [new GraphQLError(documentLimit)], opts.formatError);
|
|
137
|
+
}
|
|
126
138
|
const validationErrors = validate(opts.schema, document, specifiedRules);
|
|
127
139
|
if (validationErrors.length > 0) {
|
|
128
140
|
return requestError("", 400, legacy, cors, validationErrors, opts.formatError);
|
|
129
141
|
}
|
|
130
|
-
const documentLimit = documentLimitError(documentMetrics(document), limits);
|
|
131
|
-
if (documentLimit !== undefined) {
|
|
132
|
-
return requestError(documentLimit, 400, legacy, cors, [new GraphQLError(documentLimit)], opts.formatError);
|
|
133
|
-
}
|
|
134
142
|
// GET is idempotent and cacheable, so per the GraphQL-over-HTTP spec it may run queries only.
|
|
135
143
|
const operationAst = getOperationAST(document, params.operationName ?? undefined);
|
|
136
144
|
if (isGet && operationAst != null && operationAst.operation !== "query") {
|
|
@@ -147,15 +155,15 @@ async function run(params, request, opts, isGet, legacy, cors, limits, execution
|
|
|
147
155
|
}
|
|
148
156
|
let result;
|
|
149
157
|
try {
|
|
150
|
-
|
|
158
|
+
result = await withExecutionTimeout((abortSignal) => execute({
|
|
151
159
|
schema: opts.schema,
|
|
152
160
|
document,
|
|
153
161
|
rootValue: opts.rootValue,
|
|
154
162
|
contextValue,
|
|
155
163
|
variableValues: params.variables ?? undefined,
|
|
156
164
|
operationName: params.operationName ?? undefined,
|
|
157
|
-
|
|
158
|
-
|
|
165
|
+
abortSignal,
|
|
166
|
+
}), request.signal, executionTimeoutMs);
|
|
159
167
|
}
|
|
160
168
|
catch (err) {
|
|
161
169
|
const gqlErr = err instanceof GraphQLError
|
|
@@ -179,12 +187,20 @@ class ExecutionTimeoutError extends Error {
|
|
|
179
187
|
this.name = "ExecutionTimeoutError";
|
|
180
188
|
}
|
|
181
189
|
}
|
|
182
|
-
|
|
190
|
+
/** Run `start` under a deadline. A timeout rejects and aborts the signal resolvers were given. */
|
|
191
|
+
async function withExecutionTimeout(start, outer, timeoutMs) {
|
|
192
|
+
const controller = new AbortController();
|
|
193
|
+
const work = start(AbortSignal.any([outer, controller.signal]));
|
|
183
194
|
if (!(work instanceof Promise) || timeoutMs === 0)
|
|
184
195
|
return work;
|
|
185
196
|
let timer;
|
|
186
197
|
const timeout = new Promise((_, reject) => {
|
|
187
|
-
timer = setTimeout(() =>
|
|
198
|
+
timer = setTimeout(() => {
|
|
199
|
+
const error = new ExecutionTimeoutError();
|
|
200
|
+
// Rejected first: the abort can reject the work, and the race must settle on the timeout.
|
|
201
|
+
reject(error);
|
|
202
|
+
controller.abort(error);
|
|
203
|
+
}, timeoutMs);
|
|
188
204
|
});
|
|
189
205
|
try {
|
|
190
206
|
return await Promise.race([work, timeout]);
|
|
@@ -231,6 +247,11 @@ export async function respondGraphql(request, options) {
|
|
|
231
247
|
if (request.method !== "POST") {
|
|
232
248
|
return requestError("Method not allowed.", 405, legacy, { ...cors, allow: "GET, POST" }, [new GraphQLError("Only GET and POST are supported.")], options.formatError);
|
|
233
249
|
}
|
|
250
|
+
// Checked before the body is read: urlencoded, multipart and text/plain are what a browser sends
|
|
251
|
+
// cross-site without a preflight, so accepting one would let a form run a mutation with cookies.
|
|
252
|
+
if (!isJsonMediaType(request.headers.get("content-type"))) {
|
|
253
|
+
return requestError("Unsupported media type.", 415, legacy, cors, [new GraphQLError("A POST body must be sent as application/json.")], options.formatError);
|
|
254
|
+
}
|
|
234
255
|
// Read the JSON body through core's single bounded + proto-guarded framing lane.
|
|
235
256
|
return readBodyFramed(request, maxBytes, options.protoPoisoning ?? "reject", async (parsed) => {
|
|
236
257
|
let params;
|
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/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { type GraphqlWsOptions } from "./ws.js";
|
|
|
16
16
|
export type { GraphqlContextBuilder, GraphqlContextInput, NifraContextLike, } from "./context.js";
|
|
17
17
|
export { buildContext } from "./context.js";
|
|
18
18
|
export { type GraphqlHttpOptions, respondGraphql } from "./http.js";
|
|
19
|
-
export { createPubSub, type GraphqlPubSub } from "./pubsub.js";
|
|
19
|
+
export { createPubSub, type GraphqlPubSub, type GraphqlPubSubOptions, GraphqlPubSubOverflowError, } from "./pubsub.js";
|
|
20
20
|
export { type GraphqlWsOptions, graphqlWebSocket } from "./ws.js";
|
|
21
21
|
/** The structural slice of a nifra server `mountGraphql` needs. Kept loose so core stays a peer dep. */
|
|
22
22
|
interface RouteContextLike<Env = unknown> extends NifraContextLike<Env> {
|
|
@@ -33,8 +33,10 @@ export interface MountGraphqlOptions<Context = unknown, Env = unknown> extends O
|
|
|
33
33
|
/** Enable `GET /graphql` (queries only). Default `true`. */
|
|
34
34
|
readonly enableGet?: boolean;
|
|
35
35
|
/**
|
|
36
|
-
* Enable `graphql-transport-ws` subscriptions on the same path. Pass
|
|
37
|
-
*
|
|
36
|
+
* Enable `graphql-transport-ws` subscriptions on the same path. Pass `true` to reuse `schema`,
|
|
37
|
+
* `context`, `authorize` (run on the upgrade request) and the query limits, or pass the WS options.
|
|
38
|
+
* With `authorize` set, WS options must bring their own `authorize` or `onConnect`; the mount throws
|
|
39
|
+
* otherwise, since every socket would be admitted. Requires `.use(websocket())` and `graphql-ws`.
|
|
38
40
|
*/
|
|
39
41
|
readonly subscriptions?: boolean | GraphqlWsOptions<Record<string, unknown>>;
|
|
40
42
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,KAAK,kBAAkB,EAAkB,MAAM,WAAW,CAAA;AACnE,OAAO,EAAE,KAAK,gBAAgB,EAAoB,MAAM,SAAS,CAAA;AAEjE,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,KAAK,kBAAkB,EAAkB,MAAM,WAAW,CAAA;AACnE,OAAO,EAAE,KAAK,gBAAgB,EAAoB,MAAM,SAAS,CAAA;AAEjE,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EACL,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEjE,wGAAwG;AACxG,UAAU,gBAAgB,CAAC,GAAG,GAAG,OAAO,CAAE,SAAQ,gBAAgB,CAAC,GAAG,CAAC;IACrE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CACtB;AAED,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO;IAClC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAA;IAC/F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAA;IAChG,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAA;CAC7C;AAED,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,CACnE,SAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IACvD,yCAAyC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAC7E;AA8BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,EAC3D,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EACtB,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,GACzC,IAAI,CA+BN"}
|
package/dist/index.js
CHANGED
|
@@ -14,8 +14,33 @@ import { respondGraphql } from "./http.js";
|
|
|
14
14
|
import { graphqlWebSocket } from "./ws.js";
|
|
15
15
|
export { buildContext } from "./context.js";
|
|
16
16
|
export { respondGraphql } from "./http.js";
|
|
17
|
-
export { createPubSub } from "./pubsub.js";
|
|
17
|
+
export { createPubSub, GraphqlPubSubOverflowError, } from "./pubsub.js";
|
|
18
18
|
export { graphqlWebSocket } from "./ws.js";
|
|
19
|
+
const SHARED_LIMITS = [
|
|
20
|
+
"maxQueryBytes",
|
|
21
|
+
"maxVariablesBytes",
|
|
22
|
+
"maxDepth",
|
|
23
|
+
"maxAliases",
|
|
24
|
+
"maxComplexity",
|
|
25
|
+
"maxOperations",
|
|
26
|
+
"maxFieldOverlaps",
|
|
27
|
+
"executionTimeoutMs",
|
|
28
|
+
];
|
|
29
|
+
/** The socket transport of `subscriptions: true`: the HTTP endpoint's schema, context, authorization and limits. */
|
|
30
|
+
function sharedWsOptions(options) {
|
|
31
|
+
const shared = { schema: options.schema };
|
|
32
|
+
const ctx = options.context;
|
|
33
|
+
if (ctx !== undefined)
|
|
34
|
+
shared.context = ctx;
|
|
35
|
+
if (options.authorize !== undefined)
|
|
36
|
+
shared.authorize = options.authorize;
|
|
37
|
+
for (const limit of SHARED_LIMITS) {
|
|
38
|
+
const value = options[limit];
|
|
39
|
+
if (value !== undefined)
|
|
40
|
+
shared[limit] = value;
|
|
41
|
+
}
|
|
42
|
+
return shared;
|
|
43
|
+
}
|
|
19
44
|
/**
|
|
20
45
|
* Mount a GraphQL endpoint. Wires `POST` (and `GET`, unless disabled) on `path`, injecting the nifra
|
|
21
46
|
* route context into your resolver context, and - when `subscriptions` is set - a `graphql-ws` WebSocket
|
|
@@ -46,14 +71,13 @@ export function mountGraphql(app, options) {
|
|
|
46
71
|
if (typeof app.ws !== "function") {
|
|
47
72
|
throw new Error("mountGraphql: subscriptions require a WebSocket-enabled app - call `.use(websocket())` first.");
|
|
48
73
|
}
|
|
49
|
-
|
|
50
|
-
if (options.
|
|
51
|
-
|
|
52
|
-
wsOptions
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
wsOptions = options.subscriptions;
|
|
74
|
+
const wsOptions = options.subscriptions === true ? sharedWsOptions(options) : options.subscriptions;
|
|
75
|
+
if (options.authorize !== undefined &&
|
|
76
|
+
wsOptions.authorize === undefined &&
|
|
77
|
+
wsOptions.onConnect === undefined) {
|
|
78
|
+
throw new Error("mountGraphql: `authorize` guards the HTTP endpoint only, and these subscription options " +
|
|
79
|
+
"admit every socket. Give them their own `authorize` or `onConnect`, or pass " +
|
|
80
|
+
"`subscriptions: true` to reuse `authorize`.");
|
|
57
81
|
}
|
|
58
82
|
app.ws(path, graphqlWebSocket(wsOptions));
|
|
59
83
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAA2B,cAAc,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EAAyB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAOjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAA2B,cAAc,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAA2B,cAAc,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EAAyB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAOjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAA2B,cAAc,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EACL,YAAY,EAGZ,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAyB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AA8BjE,MAAM,aAAa,GAAG;IACpB,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,YAAY;IACZ,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,oBAAoB;CACZ,CAAA;AAEV,oHAAoH;AACpH,SAAS,eAAe,CACtB,OAA0C;IAE1C,MAAM,MAAM,GAAwD,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;IAC9F,MAAM,GAAG,GAAG,OAAO,CAAC,OAAqE,CAAA;IACzF,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,GAAG,CAAA;IAC3C,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACzE,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;IAChD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAsB,EACtB,OAA0C;IAE1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAA;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK,CAAA;IAE7C,MAAM,MAAM,GAAG,CAAC,CAAwB,EAAqB,EAAE,CAC7D,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IAEjD,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACtB,IAAI,SAAS;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAEpC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAA;QACH,CAAC;QACD,MAAM,SAAS,GACb,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAA;QACnF,IACE,OAAO,CAAC,SAAS,KAAK,SAAS;YAC/B,SAAS,CAAC,SAAS,KAAK,SAAS;YACjC,SAAS,CAAC,SAAS,KAAK,SAAS,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,0FAA0F;gBACxF,8EAA8E;gBAC9E,6CAA6C,CAChD,CAAA;QACH,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC"}
|
package/dist/limits.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const DEFAULT_GRAPHQL_LIMITS: Readonly<{
|
|
|
6
6
|
maxAliases: 100;
|
|
7
7
|
maxComplexity: 1000;
|
|
8
8
|
maxOperations: 10;
|
|
9
|
+
maxFieldOverlaps: 2000;
|
|
9
10
|
}>;
|
|
10
11
|
export interface GraphqlLimitsOptions {
|
|
11
12
|
readonly maxQueryBytes?: number;
|
|
@@ -14,6 +15,7 @@ export interface GraphqlLimitsOptions {
|
|
|
14
15
|
readonly maxAliases?: number;
|
|
15
16
|
readonly maxComplexity?: number;
|
|
16
17
|
readonly maxOperations?: number;
|
|
18
|
+
readonly maxFieldOverlaps?: number;
|
|
17
19
|
}
|
|
18
20
|
export interface GraphqlLimits {
|
|
19
21
|
readonly maxQueryBytes: number;
|
|
@@ -22,6 +24,7 @@ export interface GraphqlLimits {
|
|
|
22
24
|
readonly maxAliases: number;
|
|
23
25
|
readonly maxComplexity: number;
|
|
24
26
|
readonly maxOperations: number;
|
|
27
|
+
readonly maxFieldOverlaps: number;
|
|
25
28
|
}
|
|
26
29
|
export declare function graphqlLimits(options?: GraphqlLimitsOptions): GraphqlLimits;
|
|
27
30
|
export declare function utf8Bytes(value: string): number;
|
|
@@ -39,6 +42,22 @@ export interface GraphqlDocumentMetrics {
|
|
|
39
42
|
*/
|
|
40
43
|
export declare function documentMetrics(document: DocumentNode): GraphqlDocumentMetrics;
|
|
41
44
|
export declare function requestLimitError(query: string, variables: Record<string, unknown> | null, limits: GraphqlLimits): string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Pairs of same-named fields across every selection set, the work graphql-js's
|
|
47
|
+
* OverlappingFieldsCanBeMerged rule does: it compares every two fields that share a response name in
|
|
48
|
+
* one selection set, counting the fields its fragment spreads and inline fragments bring in. A few
|
|
49
|
+
* thousand bytes of `b(x: 1) b(x: 2) ...` hold within the depth and complexity limits yet cost seconds
|
|
50
|
+
* of synchronous validation, so this is counted, and refused, before `validate()` runs. Measured
|
|
51
|
+
* once {@link documentLimitError} passes and no fragment is unused, the fields it walks are bounded
|
|
52
|
+
* by `maxComplexity`.
|
|
53
|
+
*/
|
|
54
|
+
export declare function fieldOverlaps(document: DocumentNode): number;
|
|
55
|
+
/**
|
|
56
|
+
* Refuses, before `validate()`, the documents whose overlap validation is expensive: too many
|
|
57
|
+
* same-named field pairs, or a fragment no operation uses (its fields escape `maxComplexity`). Run it
|
|
58
|
+
* after {@link documentLimitError} passes.
|
|
59
|
+
*/
|
|
60
|
+
export declare function overlapLimitError(document: DocumentNode, limits: GraphqlLimits): string | undefined;
|
|
42
61
|
export declare function documentLimitError(metrics: GraphqlDocumentMetrics, limits: GraphqlLimits): string | undefined;
|
|
43
62
|
export declare function maskExecutionError(error: GraphQLError): Record<string, unknown>;
|
|
44
63
|
export declare function safeFormattedError(error: GraphQLError, phase: "request" | "execution", formatter?: (error: GraphQLError, phase: "request" | "execution") => unknown): unknown;
|
package/dist/limits.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EAKlB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,sBAAsB;;;;;;;;EAQjC,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;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;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;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAClC;AAUD,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAmC/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;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAkD5D;AAgCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,aAAa,GACpB,MAAM,GAAG,SAAS,CAMpB;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
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Kind } from "graphql";
|
|
1
|
+
import { Kind, visit, } from "graphql";
|
|
2
2
|
export const DEFAULT_GRAPHQL_LIMITS = Object.freeze({
|
|
3
3
|
maxQueryBytes: 64 * 1024,
|
|
4
4
|
maxVariablesBytes: 256 * 1024,
|
|
@@ -6,6 +6,7 @@ export const DEFAULT_GRAPHQL_LIMITS = Object.freeze({
|
|
|
6
6
|
maxAliases: 100,
|
|
7
7
|
maxComplexity: 1_000,
|
|
8
8
|
maxOperations: 10,
|
|
9
|
+
maxFieldOverlaps: 2_000,
|
|
9
10
|
});
|
|
10
11
|
function limit(value, fallback, name, minimum) {
|
|
11
12
|
const result = value ?? fallback;
|
|
@@ -22,6 +23,7 @@ export function graphqlLimits(options = {}) {
|
|
|
22
23
|
maxAliases: limit(options.maxAliases, DEFAULT_GRAPHQL_LIMITS.maxAliases, "maxAliases", 0),
|
|
23
24
|
maxComplexity: limit(options.maxComplexity, DEFAULT_GRAPHQL_LIMITS.maxComplexity, "maxComplexity", 1),
|
|
24
25
|
maxOperations: limit(options.maxOperations, DEFAULT_GRAPHQL_LIMITS.maxOperations, "maxOperations", 1),
|
|
26
|
+
maxFieldOverlaps: limit(options.maxFieldOverlaps, DEFAULT_GRAPHQL_LIMITS.maxFieldOverlaps, "maxFieldOverlaps", 0),
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
29
|
export function utf8Bytes(value) {
|
|
@@ -113,6 +115,113 @@ export function requestLimitError(query, variables, limits) {
|
|
|
113
115
|
}
|
|
114
116
|
return undefined;
|
|
115
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Pairs of same-named fields across every selection set, the work graphql-js's
|
|
120
|
+
* OverlappingFieldsCanBeMerged rule does: it compares every two fields that share a response name in
|
|
121
|
+
* one selection set, counting the fields its fragment spreads and inline fragments bring in. A few
|
|
122
|
+
* thousand bytes of `b(x: 1) b(x: 2) ...` hold within the depth and complexity limits yet cost seconds
|
|
123
|
+
* of synchronous validation, so this is counted, and refused, before `validate()` runs. Measured
|
|
124
|
+
* once {@link documentLimitError} passes and no fragment is unused, the fields it walks are bounded
|
|
125
|
+
* by `maxComplexity`.
|
|
126
|
+
*/
|
|
127
|
+
export function fieldOverlaps(document) {
|
|
128
|
+
const fragments = new Map();
|
|
129
|
+
for (const definition of document.definitions) {
|
|
130
|
+
if (definition.kind === Kind.FRAGMENT_DEFINITION) {
|
|
131
|
+
fragments.set(definition.name.value, definition.selectionSet.selections);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const fragmentNames = new Map();
|
|
135
|
+
const expanding = new Set();
|
|
136
|
+
const add = (selections, names, spread) => {
|
|
137
|
+
for (const selection of selections) {
|
|
138
|
+
if (selection.kind === Kind.FIELD) {
|
|
139
|
+
const name = selection.alias?.value ?? selection.name.value;
|
|
140
|
+
names.set(name, (names.get(name) ?? 0) + 1);
|
|
141
|
+
}
|
|
142
|
+
else if (selection.kind === Kind.INLINE_FRAGMENT) {
|
|
143
|
+
add(selection.selectionSet.selections, names, spread);
|
|
144
|
+
}
|
|
145
|
+
else if (!spread.has(selection.name.value)) {
|
|
146
|
+
spread.add(selection.name.value);
|
|
147
|
+
for (const [name, count] of fragmentNamesOf(selection.name.value)) {
|
|
148
|
+
names.set(name, (names.get(name) ?? 0) + count);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
// An unknown fragment and a cycle, both refused by validation, contribute nothing.
|
|
154
|
+
const fragmentNamesOf = (fragment) => {
|
|
155
|
+
const known = fragmentNames.get(fragment);
|
|
156
|
+
if (known !== undefined)
|
|
157
|
+
return known;
|
|
158
|
+
const selections = fragments.get(fragment);
|
|
159
|
+
if (selections === undefined || expanding.has(fragment))
|
|
160
|
+
return new Map();
|
|
161
|
+
expanding.add(fragment);
|
|
162
|
+
const names = new Map();
|
|
163
|
+
add(selections, names, new Set([fragment]));
|
|
164
|
+
expanding.delete(fragment);
|
|
165
|
+
fragmentNames.set(fragment, names);
|
|
166
|
+
return names;
|
|
167
|
+
};
|
|
168
|
+
let pairs = 0;
|
|
169
|
+
visit(document, {
|
|
170
|
+
SelectionSet(node) {
|
|
171
|
+
const names = new Map();
|
|
172
|
+
add(node.selections, names, new Set());
|
|
173
|
+
for (const count of names.values())
|
|
174
|
+
pairs += (count * (count - 1)) / 2;
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
return pairs;
|
|
178
|
+
}
|
|
179
|
+
/** The first fragment no operation reaches; graphql-js refuses it, and no limit above counts it. */
|
|
180
|
+
function unusedFragment(document) {
|
|
181
|
+
const spreads = new Map();
|
|
182
|
+
const pending = [];
|
|
183
|
+
const spreadsIn = (node) => {
|
|
184
|
+
const names = [];
|
|
185
|
+
visit(node, {
|
|
186
|
+
FragmentSpread(spread) {
|
|
187
|
+
names.push(spread.name.value);
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
return names;
|
|
191
|
+
};
|
|
192
|
+
for (const definition of document.definitions) {
|
|
193
|
+
if (definition.kind === Kind.FRAGMENT_DEFINITION) {
|
|
194
|
+
spreads.set(definition.name.value, spreadsIn(definition));
|
|
195
|
+
}
|
|
196
|
+
else if (definition.kind === Kind.OPERATION_DEFINITION) {
|
|
197
|
+
pending.push(...spreadsIn(definition));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
const reached = new Set();
|
|
201
|
+
for (let name = pending.pop(); name !== undefined; name = pending.pop()) {
|
|
202
|
+
if (reached.has(name))
|
|
203
|
+
continue;
|
|
204
|
+
reached.add(name);
|
|
205
|
+
pending.push(...(spreads.get(name) ?? []));
|
|
206
|
+
}
|
|
207
|
+
for (const name of spreads.keys())
|
|
208
|
+
if (!reached.has(name))
|
|
209
|
+
return name;
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Refuses, before `validate()`, the documents whose overlap validation is expensive: too many
|
|
214
|
+
* same-named field pairs, or a fragment no operation uses (its fields escape `maxComplexity`). Run it
|
|
215
|
+
* after {@link documentLimitError} passes.
|
|
216
|
+
*/
|
|
217
|
+
export function overlapLimitError(document, limits) {
|
|
218
|
+
const unused = unusedFragment(document);
|
|
219
|
+
if (unused !== undefined)
|
|
220
|
+
return `Fragment "${unused}" is never used.`;
|
|
221
|
+
return fieldOverlaps(document) > limits.maxFieldOverlaps
|
|
222
|
+
? `GraphQL document repeats field names in one selection set beyond the limit of ${limits.maxFieldOverlaps} same-named field pairs.`
|
|
223
|
+
: undefined;
|
|
224
|
+
}
|
|
116
225
|
export function documentLimitError(metrics, limits) {
|
|
117
226
|
if (metrics.operations > limits.maxOperations) {
|
|
118
227
|
return `GraphQL document exceeds the ${limits.maxOperations}-operation limit.`;
|
package/dist/limits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,IAAI,EAGJ,KAAK,GACN,MAAM,SAAS,CAAA;AAEhB,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,aAAa,EAAE,EAAE,GAAG,IAAI;IACxB,iBAAiB,EAAE,GAAG,GAAG,IAAI;IAC7B,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,KAAK;CACxB,CAAC,CAAA;AAsBF,SAAS,KAAK,CAAC,KAAyB,EAAE,QAAgB,EAAE,IAAY,EAAE,OAAe;IACvF,MAAM,MAAM,GAAG,KAAK,IAAI,QAAQ,CAAA;IAChC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAAC,WAAW,IAAI,8BAA8B,OAAO,EAAE,CAAC,CAAA;IAC9E,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAgC,EAAE;IAC9D,OAAO;QACL,aAAa,EAAE,KAAK,CAClB,OAAO,CAAC,aAAa,EACrB,sBAAsB,CAAC,aAAa,EACpC,eAAe,EACf,CAAC,CACF;QACD,iBAAiB,EAAE,KAAK,CACtB,OAAO,CAAC,iBAAiB,EACzB,sBAAsB,CAAC,iBAAiB,EACxC,mBAAmB,EACnB,CAAC,CACF;QACD,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACjF,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,sBAAsB,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QACzF,aAAa,EAAE,KAAK,CAClB,OAAO,CAAC,aAAa,EACrB,sBAAsB,CAAC,aAAa,EACpC,eAAe,EACf,CAAC,CACF;QACD,aAAa,EAAE,KAAK,CAClB,OAAO,CAAC,aAAa,EACrB,sBAAsB,CAAC,aAAa,EACpC,eAAe,EACf,CAAC,CACF;QACD,gBAAgB,EAAE,KAAK,CACrB,OAAO,CAAC,gBAAgB,EACxB,sBAAsB,CAAC,gBAAgB,EACvC,kBAAkB,EAClB,CAAC,CACF;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAqC;IAClE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAC9D,CAAC;AAWD,MAAM,aAAa,GAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;AAE/E,wGAAwG;AACxG,SAAS,iBAAiB,CACxB,UAAoC,EACpC,QAA4C;IAE5C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAwB,CAAA;QAC5B,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,UAAU,IAAI,CAAC,CAAA;YACf,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,CAAA;YAC/C,MAAM;gBACJ,SAAS,CAAC,YAAY,KAAK,SAAS;oBAClC,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YACpE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM;gBACJ,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe;oBACrC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;oBAChE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC;QACD,OAAO,IAAI,MAAM,CAAC,OAAO,CAAA;QACzB,UAAU,IAAI,MAAM,CAAC,UAAU,CAAA;IACjC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAsB;IACpD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoC,CAAA;IAC/D,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjD,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAA;IACpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAoB,EAAE;QAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACrC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,4FAA4F;QAC5F,eAAe;QACf,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,aAAa,CAAA;QACzE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACvD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IACD,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB;YAAE,SAAQ;QAC3D,UAAU,IAAI,CAAC,CAAA;QACf,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC/E,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACtC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAA;QAC1B,UAAU,IAAI,OAAO,CAAC,UAAU,CAAA;IAClC,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,SAAyC,EACzC,MAAqB;IAErB,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,6BAA6B,MAAM,CAAC,aAAa,cAAc,CAAA;IACxE,CAAC;IACD,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACzD,OAAO,gCAAgC,MAAM,CAAC,iBAAiB,cAAc,CAAA;IAC/E,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoC,CAAA;IAC7D,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjD,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuC,CAAA;IACpE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,GAAG,GAAG,CACV,UAAoC,EACpC,KAA0B,EAC1B,MAAmB,EACb,EAAE;QACR,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAA;gBAC3D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAC7C,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnD,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;YACvD,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAChC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IACD,mFAAmF;IACnF,MAAM,eAAe,GAAG,CAAC,QAAgB,EAA+B,EAAE;QACxE,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACzC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACrC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1C,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,GAAG,EAAE,CAAA;QACzE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;QACvC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3C,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAClC,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IACD,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,CAAC,QAAQ,EAAE;QACd,YAAY,CAAC,IAAsB;YACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;YACvC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACtC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACxE,CAAC;KACF,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,oGAAoG;AACpG,SAAS,cAAc,CAAC,QAAsB;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAA;IACpD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,SAAS,GAAG,CAAC,IAAyC,EAAY,EAAE;QACxE,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,CAAC,IAAI,EAAE;YACV,cAAc,CAAC,MAAM;gBACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/B,CAAC;SACF,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IACD,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;QAC3D,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACxE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IACtE,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,MAAqB;IAErB,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,aAAa,MAAM,kBAAkB,CAAA;IACtE,OAAO,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,gBAAgB;QACtD,CAAC,CAAC,iFAAiF,MAAM,CAAC,gBAAgB,0BAA0B;QACpI,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAA+B,EAC/B,MAAqB;IAErB,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC9C,OAAO,gCAAgC,MAAM,CAAC,aAAa,mBAAmB,CAAA;IAChF,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO,+CAA+C,MAAM,CAAC,QAAQ,GAAG,CAAA;IAC1E,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,gCAAgC,MAAM,CAAC,UAAU,eAAe,CAAA;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC9C,OAAO,oDAAoD,MAAM,CAAC,aAAa,GAAG,CAAA;IACpF,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAmB;IACpD,OAAO;QACL,OAAO,EAAE,wBAAwB;QACjC,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;KAC1D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAmB,EACnB,KAA8B,EAC9B,SAA4E;IAE5E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;AAC3E,CAAC"}
|
package/dist/pubsub.d.ts
CHANGED
|
@@ -16,6 +16,16 @@ export interface GraphqlPubSub<Event = unknown> {
|
|
|
16
16
|
/** An async iterator that yields each future `publish(topic, ...)` until it is returned/closed. */
|
|
17
17
|
subscribe(topic: string): AsyncIterableIterator<Event>;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
export interface GraphqlPubSubOptions {
|
|
20
|
+
/** Maximum queued events per subscriber. Positive safe integer; default 1024. */
|
|
21
|
+
readonly maxQueuedEvents?: number;
|
|
22
|
+
/** A full queue closes with an error by default. Dropping requires explicit opt-in. */
|
|
23
|
+
readonly overflow?: "error" | "drop-oldest" | "drop-newest";
|
|
24
|
+
}
|
|
25
|
+
export declare class GraphqlPubSubOverflowError extends Error {
|
|
26
|
+
readonly code = "graphql_pubsub_overflow";
|
|
27
|
+
constructor();
|
|
28
|
+
}
|
|
29
|
+
/** Create an in-memory {@link GraphqlPubSub} with finite subscriber queues. */
|
|
30
|
+
export declare function createPubSub<Event = unknown>(options?: GraphqlPubSubOptions): GraphqlPubSub<Event>;
|
|
21
31
|
//# sourceMappingURL=pubsub.d.ts.map
|
package/dist/pubsub.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../src/pubsub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,wGAAwG;AACxG,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,OAAO;IAC5C,wDAAwD;IACxD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,IAAI,CAAA;IAC5C,mGAAmG;IACnG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;CACvD;AAED,
|
|
1
|
+
{"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../src/pubsub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,wGAAwG;AACxG,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,OAAO;IAC5C,wDAAwD;IACxD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,IAAI,CAAA;IAC5C,mGAAmG;IACnG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;CACvD;AAED,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,aAAa,CAAA;CAC5D;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,IAAI,6BAA4B;;CAM1C;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,KAAK,GAAG,OAAO,EAC1C,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAAC,KAAK,CAAC,CAiCtB"}
|