grafserv 0.0.1-0.2 → 0.0.1-0.21
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/CHANGELOG.md +220 -0
- package/README.md +248 -3
- package/dist/accept.d.ts +8 -0
- package/dist/accept.d.ts.map +1 -0
- package/dist/accept.js +419 -0
- package/dist/accept.js.map +1 -0
- package/dist/core/base.d.ts +38 -0
- package/dist/core/base.d.ts.map +1 -0
- package/dist/core/base.js +440 -0
- package/dist/core/base.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +176 -23
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +2 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/mapIterator.d.ts +2 -0
- package/dist/mapIterator.d.ts.map +1 -0
- package/dist/mapIterator.js +65 -0
- package/dist/mapIterator.js.map +1 -0
- package/dist/middleware/graphiql.d.ts +3 -3
- package/dist/middleware/graphiql.d.ts.map +1 -1
- package/dist/middleware/graphiql.js +14 -4
- package/dist/middleware/graphiql.js.map +1 -1
- package/dist/middleware/graphql.d.ts +8 -3
- package/dist/middleware/graphql.d.ts.map +1 -1
- package/dist/middleware/graphql.js +325 -23
- package/dist/middleware/graphql.js.map +1 -1
- package/dist/options.d.ts +23 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +114 -0
- package/dist/options.js.map +1 -0
- package/dist/servers/express/v4/index.d.ts +24 -0
- package/dist/servers/express/v4/index.d.ts.map +1 -0
- package/dist/servers/express/v4/index.js +62 -0
- package/dist/servers/express/v4/index.js.map +1 -0
- package/dist/servers/fastify/v4/index.d.ts +21 -0
- package/dist/servers/fastify/v4/index.d.ts.map +1 -0
- package/dist/servers/fastify/v4/index.js +198 -0
- package/dist/servers/fastify/v4/index.js.map +1 -0
- package/dist/servers/koa/v2/index.d.ts +25 -0
- package/dist/servers/koa/v2/index.d.ts.map +1 -0
- package/dist/servers/koa/v2/index.js +137 -0
- package/dist/servers/koa/v2/index.js.map +1 -0
- package/dist/servers/node/index.d.ts +32 -0
- package/dist/servers/node/index.d.ts.map +1 -0
- package/dist/servers/node/index.js +269 -0
- package/dist/servers/node/index.js.map +1 -0
- package/dist/utils.d.ts +19 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +145 -0
- package/dist/utils.js.map +1 -0
- package/package.json +42 -8
- package/dist/middleware/index.d.ts +0 -12
- package/dist/middleware/index.d.ts.map +0 -1
- package/dist/middleware/index.js +0 -431
- package/dist/middleware/index.js.map +0 -1
- package/dist/middleware/interfaces.d.ts +0 -40
- package/dist/middleware/interfaces.d.ts.map +0 -1
- package/dist/middleware/interfaces.js +0 -3
- package/dist/middleware/interfaces.js.map +0 -1
package/dist/accept.js
ADDED
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeAcceptMatcher = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const lru_1 = tslib_1.__importDefault(require("@graphile/lru"));
|
|
6
|
+
/**
|
|
7
|
+
* Returns a function that returns the (first, if multiple equal matches) type
|
|
8
|
+
* from mediaTypes that best matches the accept query specified by the given
|
|
9
|
+
* `acceptHeader`. If no Accept header is present then the first mediaType will
|
|
10
|
+
* be returned. If no match is possible, `null` will be returned.
|
|
11
|
+
*/
|
|
12
|
+
function makeAcceptMatcher(mediaTypes) {
|
|
13
|
+
const typeDigests = mediaTypes.map((t) => {
|
|
14
|
+
// TODO: this parsing is super lazy and isn't 100% reliable; e.g. it could
|
|
15
|
+
// be broken by `foo/bar;baz="\\";frog"`. We're only handling values passed
|
|
16
|
+
// by our own code though, and we ain't passing this kind of nonsense.
|
|
17
|
+
const [spec, ...params] = t.split(";");
|
|
18
|
+
const parameters = Object.create(null);
|
|
19
|
+
for (const param of params) {
|
|
20
|
+
const [key, val] = param.split("=");
|
|
21
|
+
parameters[key] = val;
|
|
22
|
+
}
|
|
23
|
+
const [type, subtype] = spec.split("/");
|
|
24
|
+
return {
|
|
25
|
+
type,
|
|
26
|
+
subtype,
|
|
27
|
+
parameters,
|
|
28
|
+
q: 1,
|
|
29
|
+
originalType: t,
|
|
30
|
+
noParams: Object.keys(parameters).length === 0,
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
const lru = new lru_1.default({ maxLength: 50 });
|
|
34
|
+
return function preferredAccept(acceptHeader) {
|
|
35
|
+
if (acceptHeader === undefined) {
|
|
36
|
+
return mediaTypes[0];
|
|
37
|
+
}
|
|
38
|
+
const existing = lru.get(acceptHeader);
|
|
39
|
+
if (existing !== undefined) {
|
|
40
|
+
return existing;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const specs = parseAccepts(acceptHeader);
|
|
44
|
+
// Find the first spec that matches each, then pick the one with the
|
|
45
|
+
// highest q.
|
|
46
|
+
let bestQ = 0;
|
|
47
|
+
let bestMediaType = null;
|
|
48
|
+
for (const digest of typeDigests) {
|
|
49
|
+
const highestPrecedenceSpecMatch = specs.find((spec) => {
|
|
50
|
+
return ((spec.type === "*" ||
|
|
51
|
+
(spec.type === digest.type &&
|
|
52
|
+
(spec.subtype === "*" || spec.subtype === digest.subtype))) &&
|
|
53
|
+
(spec.noParams ||
|
|
54
|
+
(!digest.noParams &&
|
|
55
|
+
matchesParameters(spec.parameters, digest.parameters))));
|
|
56
|
+
});
|
|
57
|
+
if (highestPrecedenceSpecMatch) {
|
|
58
|
+
if (bestMediaType === null || highestPrecedenceSpecMatch.q > bestQ) {
|
|
59
|
+
bestQ = highestPrecedenceSpecMatch.q;
|
|
60
|
+
bestMediaType = digest.originalType;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
lru.set(acceptHeader, bestMediaType);
|
|
65
|
+
return bestMediaType;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
exports.makeAcceptMatcher = makeAcceptMatcher;
|
|
70
|
+
function matchesParameters(required, given) {
|
|
71
|
+
for (const key in required) {
|
|
72
|
+
if (given[key] !== required[key]) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
const SPACE = " ".charCodeAt(0);
|
|
79
|
+
const HORIZONTAL_TAB = "\t".charCodeAt(0);
|
|
80
|
+
const ASTERISK = "*".charCodeAt(0);
|
|
81
|
+
const SLASH = "/".charCodeAt(0);
|
|
82
|
+
const COMMA = ",".charCodeAt(0);
|
|
83
|
+
const SEMICOLON = ";".charCodeAt(0);
|
|
84
|
+
const EQUALS = "=".charCodeAt(0);
|
|
85
|
+
const DOUBLE_QUOTE = '"'.charCodeAt(0);
|
|
86
|
+
const BACKSLASH = "\\".charCodeAt(0);
|
|
87
|
+
/*
|
|
88
|
+
* Whitespace:
|
|
89
|
+
* 9 (tab)
|
|
90
|
+
* 10 (line feed)
|
|
91
|
+
* 11 (vertical tab)
|
|
92
|
+
* 12 (form feed)
|
|
93
|
+
* 13 (carriage return)
|
|
94
|
+
* 32 (space)
|
|
95
|
+
*/
|
|
96
|
+
const WHITESPACE_START = 9;
|
|
97
|
+
const WHITESPACE_END = 13;
|
|
98
|
+
/** We're more forgiving in whitespace in most cases */
|
|
99
|
+
function isWhitespace(charCode) {
|
|
100
|
+
return (charCode === SPACE ||
|
|
101
|
+
(charCode >= WHITESPACE_START && charCode <= WHITESPACE_END));
|
|
102
|
+
}
|
|
103
|
+
/** is Optional White Space */
|
|
104
|
+
function isOWS(charCode) {
|
|
105
|
+
return charCode === SPACE || charCode === HORIZONTAL_TAB;
|
|
106
|
+
}
|
|
107
|
+
/*
|
|
108
|
+
"!" / "#" / "$" / "%" / "&" / "'" / "*"
|
|
109
|
+
/ "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
|
|
110
|
+
/ DIGIT / ALPHA
|
|
111
|
+
|
|
112
|
+
33|35-39|42|43|45-57|65-90|94-122|124|126
|
|
113
|
+
|
|
114
|
+
>=33 && <= 126 && !34|40|41|44|58-64|91-93|123|125
|
|
115
|
+
*/
|
|
116
|
+
// Matches ordered from most likely to least likely for content types.
|
|
117
|
+
function isToken(charCode) {
|
|
118
|
+
return (
|
|
119
|
+
// ^_`a-z
|
|
120
|
+
(charCode >= 94 && charCode <= 122) ||
|
|
121
|
+
// symbols and numbers
|
|
122
|
+
(charCode >= 35 &&
|
|
123
|
+
charCode <= 57 &&
|
|
124
|
+
charCode !== 40 &&
|
|
125
|
+
charCode !== 41 &&
|
|
126
|
+
charCode !== 44) ||
|
|
127
|
+
// A-Z
|
|
128
|
+
(charCode >= 65 && charCode <= 90) ||
|
|
129
|
+
// !
|
|
130
|
+
charCode === 33 ||
|
|
131
|
+
// |
|
|
132
|
+
charCode === 124 ||
|
|
133
|
+
// ~
|
|
134
|
+
charCode === 126);
|
|
135
|
+
}
|
|
136
|
+
var State;
|
|
137
|
+
(function (State) {
|
|
138
|
+
State[State["EXPECT_TYPE"] = 0] = "EXPECT_TYPE";
|
|
139
|
+
State[State["CONTINUE_TYPE"] = 1] = "CONTINUE_TYPE";
|
|
140
|
+
State[State["EXPECT_SUBTYPE"] = 2] = "EXPECT_SUBTYPE";
|
|
141
|
+
State[State["CONTINUE_SUBTYPE"] = 3] = "CONTINUE_SUBTYPE";
|
|
142
|
+
State[State["EXPECT_COMMA_OR_SEMICOLON"] = 4] = "EXPECT_COMMA_OR_SEMICOLON";
|
|
143
|
+
State[State["EXPECT_PARAMETER_NAME"] = 5] = "EXPECT_PARAMETER_NAME";
|
|
144
|
+
State[State["CONTINUE_PARAMETER_NAME"] = 6] = "CONTINUE_PARAMETER_NAME";
|
|
145
|
+
State[State["EXPECT_PARAMETER_VALUE"] = 7] = "EXPECT_PARAMETER_VALUE";
|
|
146
|
+
State[State["CONTINUE_PARAMETER_VALUE"] = 8] = "CONTINUE_PARAMETER_VALUE";
|
|
147
|
+
State[State["CONTINUE_QUOTED_PARAMETER_VALUE"] = 9] = "CONTINUE_QUOTED_PARAMETER_VALUE";
|
|
148
|
+
})(State || (State = {}));
|
|
149
|
+
// PERF: we could increase the speed of this significantly by checking the
|
|
150
|
+
// type/subtype against the supported types/subtypes, and if a match is not
|
|
151
|
+
// found then skip `i` right up to the next `,` without adding the entry to
|
|
152
|
+
// `accepts`
|
|
153
|
+
/**
|
|
154
|
+
* Parser based on https://httpwg.org/specs/rfc9110.html#rfc.section.12.5.1
|
|
155
|
+
*
|
|
156
|
+
* @remarks
|
|
157
|
+
*
|
|
158
|
+
* Why must you always write your own parsers, Benjie?
|
|
159
|
+
*/
|
|
160
|
+
function parseAccepts(acceptHeader) {
|
|
161
|
+
const accepts = [];
|
|
162
|
+
let state = State.EXPECT_TYPE;
|
|
163
|
+
let currentAccept = null;
|
|
164
|
+
let currentParameterName = "";
|
|
165
|
+
let currentParameterValue = "";
|
|
166
|
+
function next() {
|
|
167
|
+
if (currentAccept.parameters.q) {
|
|
168
|
+
const q = parseFloat(currentAccept.parameters.q);
|
|
169
|
+
if (Number.isNaN(q) || q < 0 || q > 1) {
|
|
170
|
+
throw new Error("q out of range");
|
|
171
|
+
}
|
|
172
|
+
delete currentAccept.parameters.q;
|
|
173
|
+
currentAccept.q = q;
|
|
174
|
+
}
|
|
175
|
+
accepts.push(currentAccept);
|
|
176
|
+
currentAccept = null;
|
|
177
|
+
state = State.EXPECT_TYPE;
|
|
178
|
+
}
|
|
179
|
+
for (let i = 0, l = acceptHeader.length; i < l; i++) {
|
|
180
|
+
const charCode = acceptHeader.charCodeAt(i);
|
|
181
|
+
switch (state) {
|
|
182
|
+
case State.EXPECT_TYPE: {
|
|
183
|
+
if ( /*@__INLINE__*/isWhitespace(charCode)) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
else if (charCode === ASTERISK) {
|
|
187
|
+
// `*/*`
|
|
188
|
+
currentAccept = {
|
|
189
|
+
type: "*",
|
|
190
|
+
subtype: "*",
|
|
191
|
+
q: 1,
|
|
192
|
+
parameters: Object.create(null),
|
|
193
|
+
noParams: true,
|
|
194
|
+
};
|
|
195
|
+
const nextCharCode = acceptHeader.charCodeAt(++i);
|
|
196
|
+
if (nextCharCode !== SLASH) {
|
|
197
|
+
throw new Error("Expected '/' after '*'");
|
|
198
|
+
}
|
|
199
|
+
const nextNextCharCode = acceptHeader.charCodeAt(++i);
|
|
200
|
+
if (nextNextCharCode !== ASTERISK) {
|
|
201
|
+
throw new Error("Expected '*' after '*/'");
|
|
202
|
+
}
|
|
203
|
+
state = State.EXPECT_COMMA_OR_SEMICOLON;
|
|
204
|
+
}
|
|
205
|
+
else if ( /*@__INLINE__*/isToken(charCode)) {
|
|
206
|
+
currentAccept = {
|
|
207
|
+
type: acceptHeader[i],
|
|
208
|
+
subtype: "",
|
|
209
|
+
q: 1,
|
|
210
|
+
parameters: Object.create(null),
|
|
211
|
+
noParams: true,
|
|
212
|
+
};
|
|
213
|
+
state = State.CONTINUE_TYPE;
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
217
|
+
}
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
case State.CONTINUE_TYPE: {
|
|
221
|
+
if (charCode === SLASH) {
|
|
222
|
+
state = State.EXPECT_SUBTYPE;
|
|
223
|
+
}
|
|
224
|
+
else if ( /*@__INLINE__*/isToken(charCode)) {
|
|
225
|
+
currentAccept.type += acceptHeader[i];
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
229
|
+
}
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
case State.EXPECT_SUBTYPE: {
|
|
233
|
+
if (charCode === ASTERISK) {
|
|
234
|
+
currentAccept.subtype = "*";
|
|
235
|
+
state = State.EXPECT_COMMA_OR_SEMICOLON;
|
|
236
|
+
}
|
|
237
|
+
else if ( /*@__INLINE__*/isToken(charCode)) {
|
|
238
|
+
currentAccept.subtype = acceptHeader[i];
|
|
239
|
+
state = State.CONTINUE_SUBTYPE;
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
243
|
+
}
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
case State.CONTINUE_SUBTYPE: {
|
|
247
|
+
if (charCode === SEMICOLON) {
|
|
248
|
+
// Parameters
|
|
249
|
+
state = State.EXPECT_PARAMETER_NAME;
|
|
250
|
+
}
|
|
251
|
+
else if (charCode === COMMA) {
|
|
252
|
+
/*@__INLINE__*/ next();
|
|
253
|
+
}
|
|
254
|
+
else if ( /*@__INLINE__*/isToken(charCode)) {
|
|
255
|
+
currentAccept.subtype += acceptHeader[i];
|
|
256
|
+
}
|
|
257
|
+
else if ( /*@__INLINE__*/isWhitespace(charCode)) {
|
|
258
|
+
state = State.EXPECT_COMMA_OR_SEMICOLON;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
262
|
+
}
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
case State.EXPECT_COMMA_OR_SEMICOLON: {
|
|
266
|
+
if ( /*@__INLINE__*/isWhitespace(charCode)) {
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
else if (charCode === SEMICOLON) {
|
|
270
|
+
state = State.EXPECT_PARAMETER_NAME;
|
|
271
|
+
}
|
|
272
|
+
else if (charCode === COMMA) {
|
|
273
|
+
/*@__INLINE__*/ next();
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
277
|
+
}
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
case State.EXPECT_PARAMETER_NAME: {
|
|
281
|
+
if (charCode === SEMICOLON) {
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
else if (charCode === COMMA) {
|
|
285
|
+
/*@__INLINE__*/ next();
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
else if ( /*@__INLINE__*/isOWS(charCode)) {
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
else if ( /*@__INLINE__*/isToken(charCode)) {
|
|
292
|
+
currentParameterName = acceptHeader[i];
|
|
293
|
+
currentParameterValue = "";
|
|
294
|
+
state = State.CONTINUE_PARAMETER_NAME;
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
298
|
+
}
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
case State.CONTINUE_PARAMETER_NAME: {
|
|
302
|
+
if (charCode === EQUALS) {
|
|
303
|
+
state = State.EXPECT_PARAMETER_VALUE;
|
|
304
|
+
/*
|
|
305
|
+
if (currentAccept?.parameters[currentParameterName]) {
|
|
306
|
+
throw new Error("Overriding parameter!");
|
|
307
|
+
}
|
|
308
|
+
*/
|
|
309
|
+
// "q" is not a valid parameter name; it's just used for weighting.
|
|
310
|
+
if (currentParameterName !== "q") {
|
|
311
|
+
currentAccept.noParams = false;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
else if ( /*@__INLINE__*/isToken(charCode)) {
|
|
315
|
+
currentParameterName += acceptHeader[i];
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
319
|
+
}
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
case State.EXPECT_PARAMETER_VALUE: {
|
|
323
|
+
if (charCode === DOUBLE_QUOTE) {
|
|
324
|
+
state = State.CONTINUE_QUOTED_PARAMETER_VALUE;
|
|
325
|
+
}
|
|
326
|
+
else if ( /*@__INLINE__*/isToken(charCode)) {
|
|
327
|
+
state = State.CONTINUE_PARAMETER_VALUE;
|
|
328
|
+
currentParameterValue += acceptHeader[i];
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
332
|
+
}
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
case State.CONTINUE_QUOTED_PARAMETER_VALUE: {
|
|
336
|
+
if (charCode === DOUBLE_QUOTE) {
|
|
337
|
+
currentAccept.parameters[currentParameterName] =
|
|
338
|
+
currentParameterValue;
|
|
339
|
+
state = State.EXPECT_COMMA_OR_SEMICOLON;
|
|
340
|
+
}
|
|
341
|
+
else if (charCode === BACKSLASH) {
|
|
342
|
+
const char = acceptHeader[++i];
|
|
343
|
+
if (char === undefined) {
|
|
344
|
+
throw new Error(`Unexpected terminating backslash`);
|
|
345
|
+
}
|
|
346
|
+
// From the spec:
|
|
347
|
+
//
|
|
348
|
+
// > A sender SHOULD NOT generate a quoted-pair in a quoted-string
|
|
349
|
+
// > except where necessary to quote DQUOTE and backslash octets
|
|
350
|
+
// > occurring within that string. A sender SHOULD NOT generate a
|
|
351
|
+
// > quoted-pair in a comment except where necessary to quote
|
|
352
|
+
// > parentheses ["(" and ")"] and backslash octets occurring within
|
|
353
|
+
// > that comment.
|
|
354
|
+
//
|
|
355
|
+
// i.e. this isn't for `\n` and `\t` and similar, those would just
|
|
356
|
+
// come out as "n" and "t" in the output. This is specifically for
|
|
357
|
+
// escaping quote marks, parenthesis, backslashes.
|
|
358
|
+
// TODO: Technically we should respect `quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )`
|
|
359
|
+
currentParameterValue += char;
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
// TODO: Technically we should respect `qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text`
|
|
363
|
+
currentParameterValue += acceptHeader[i];
|
|
364
|
+
}
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
case State.CONTINUE_PARAMETER_VALUE: {
|
|
368
|
+
if (charCode === SEMICOLON) {
|
|
369
|
+
currentAccept.parameters[currentParameterName] =
|
|
370
|
+
currentParameterValue;
|
|
371
|
+
// Parameters
|
|
372
|
+
state = State.EXPECT_PARAMETER_NAME;
|
|
373
|
+
}
|
|
374
|
+
else if (charCode === COMMA) {
|
|
375
|
+
currentAccept.parameters[currentParameterName] =
|
|
376
|
+
currentParameterValue;
|
|
377
|
+
/*@__INLINE__*/ next();
|
|
378
|
+
}
|
|
379
|
+
else if ( /*@__INLINE__*/isToken(charCode)) {
|
|
380
|
+
currentParameterValue += acceptHeader[i];
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
throw new Error(`Unexpected character '${acceptHeader[i]}'`);
|
|
384
|
+
}
|
|
385
|
+
break;
|
|
386
|
+
}
|
|
387
|
+
default: {
|
|
388
|
+
const never = state;
|
|
389
|
+
throw new Error(`Unhandled state '${never}'`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
if (state !== State.EXPECT_TYPE) {
|
|
394
|
+
/*@__INLINE__*/ next();
|
|
395
|
+
}
|
|
396
|
+
// Sort `accepts` by precedence. Precedence is how accurate the match is:
|
|
397
|
+
// a/b;c=d
|
|
398
|
+
// a/b
|
|
399
|
+
// a/*
|
|
400
|
+
// */*
|
|
401
|
+
const score = (accept) => {
|
|
402
|
+
let val = 0;
|
|
403
|
+
if (accept.type !== "*") {
|
|
404
|
+
val += 1_000;
|
|
405
|
+
}
|
|
406
|
+
if (accept.subtype !== "*") {
|
|
407
|
+
val += 1_000_000;
|
|
408
|
+
}
|
|
409
|
+
val += Object.keys(accept.parameters).length;
|
|
410
|
+
return val;
|
|
411
|
+
};
|
|
412
|
+
accepts.sort((a, z) => {
|
|
413
|
+
const scoreA = score(a);
|
|
414
|
+
const scoreZ = score(z);
|
|
415
|
+
return scoreZ - scoreA;
|
|
416
|
+
});
|
|
417
|
+
return accepts;
|
|
418
|
+
}
|
|
419
|
+
//# sourceMappingURL=accept.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accept.js","sourceRoot":"","sources":["../src/accept.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { PromiseOrDirect, TypedEventEmitter } from "grafast";
|
|
2
|
+
import type { GraphQLSchema } from "graphql";
|
|
3
|
+
import type { ErrorResult, GrafservConfig, HandlerResult, RequestDigest, Result, SchemaChangeEvent } from "../interfaces.js";
|
|
4
|
+
import { makeGraphiQLHandler } from "../middleware/graphiql.js";
|
|
5
|
+
import { makeGraphQLHandler } from "../middleware/graphql.js";
|
|
6
|
+
import type { OptionsFromConfig } from "../options.js";
|
|
7
|
+
export declare class GrafservBase {
|
|
8
|
+
private releaseHandlers;
|
|
9
|
+
private releasing;
|
|
10
|
+
/** @internal */
|
|
11
|
+
dynamicOptions: OptionsFromConfig;
|
|
12
|
+
resolvedPreset: GraphileConfig.ResolvedPreset;
|
|
13
|
+
protected schema: GraphQLSchema | PromiseLike<GraphQLSchema> | null;
|
|
14
|
+
protected schemaError: PromiseLike<GraphQLSchema> | null;
|
|
15
|
+
protected eventEmitter: TypedEventEmitter<{
|
|
16
|
+
"schema:ready": GraphQLSchema;
|
|
17
|
+
"schema:error": any;
|
|
18
|
+
}>;
|
|
19
|
+
private initialized;
|
|
20
|
+
graphqlHandler: ReturnType<typeof makeGraphQLHandler>;
|
|
21
|
+
graphiqlHandler: ReturnType<typeof makeGraphiQLHandler>;
|
|
22
|
+
constructor(config: GrafservConfig);
|
|
23
|
+
private _processRequest;
|
|
24
|
+
protected processRequest(request: RequestDigest): PromiseOrDirect<Result | null>;
|
|
25
|
+
getPreset(): GraphileConfig.ResolvedPreset;
|
|
26
|
+
getSchema(): PromiseOrDirect<GraphQLSchema>;
|
|
27
|
+
release(): Promise<void>;
|
|
28
|
+
onRelease(cb: () => PromiseOrDirect<void>): void;
|
|
29
|
+
setPreset(newPreset: GraphileConfig.Preset): void;
|
|
30
|
+
setSchema(newSchema: GraphQLSchema): void;
|
|
31
|
+
private refreshHandlers;
|
|
32
|
+
makeStream(): AsyncIterableIterator<SchemaChangeEvent>;
|
|
33
|
+
}
|
|
34
|
+
export declare function convertHandlerResultToResult(handlerResult: HandlerResult | null): PromiseOrDirect<Result | null>;
|
|
35
|
+
export declare const handleError: (error: Error & {
|
|
36
|
+
statusCode?: number;
|
|
37
|
+
}) => ErrorResult;
|
|
38
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/core/base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,OAAO,KAAK,EAEV,WAAW,EAEX,cAAc,EACd,aAAa,EAIb,aAAa,EACb,MAAM,EACN,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAoB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA4CvD,qBAAa,YAAY;IACvB,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,SAAS,CAAS;IAC1B,gBAAgB;IACT,cAAc,EAAG,iBAAiB,CAAC;IACnC,cAAc,EAAG,cAAc,CAAC,cAAc,CAAC;IACtD,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IACpE,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IACzD,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;QACxC,cAAc,EAAE,aAAa,CAAC;QAC9B,cAAc,EAAE,GAAG,CAAC;KACrB,CAAC,CAAC;IACH,OAAO,CAAC,WAAW,CAAS;IACrB,cAAc,EAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACvD,eAAe,EAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;gBAEpD,MAAM,EAAE,cAAc;IAwBlC,OAAO,CAAC,eAAe;IAuDvB,SAAS,CAAC,cAAc,CACtB,OAAO,EAAE,aAAa,GACrB,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;IAuB1B,SAAS,IAAI,cAAc,CAAC,cAAc;IAI1C,SAAS,IAAI,eAAe,CAAC,aAAa,CAAC;IAIrC,OAAO;IAeb,SAAS,CAAC,EAAE,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC;IASzC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM;IAS1C,SAAS,CAAC,SAAS,EAAE,aAAa;IAuBzC,OAAO,CAAC,eAAe;IAiBhB,UAAU,IAAI,qBAAqB,CAAC,iBAAiB,CAAC;CAyD9D;AAQD,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,aAAa,GAAG,IAAI,GAClC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,CAoLhC;AAED,eAAO,MAAM,WAAW,UACf,KAAK,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,KACrC,WASF,CAAC"}
|