postgraphile 4.12.11 → 5.0.0-0.3
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 +46 -0
- package/LICENSE.md +15 -20
- package/README.md +20 -171
- package/dist/cli-run.d.ts +3 -0
- package/dist/cli-run.d.ts.map +1 -0
- package/dist/cli-run.js +7 -0
- package/dist/cli-run.js.map +1 -0
- package/dist/cli.d.ts +21 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +180 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +88 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/PgV4BehaviorPlugin.d.ts +11 -0
- package/dist/plugins/PgV4BehaviorPlugin.d.ts.map +1 -0
- package/dist/plugins/PgV4BehaviorPlugin.js +73 -0
- package/dist/plugins/PgV4BehaviorPlugin.js.map +1 -0
- package/dist/plugins/PgV4InflectionPlugin.d.ts +11 -0
- package/dist/plugins/PgV4InflectionPlugin.d.ts.map +1 -0
- package/dist/plugins/PgV4InflectionPlugin.js +91 -0
- package/dist/plugins/PgV4InflectionPlugin.js.map +1 -0
- package/dist/plugins/PgV4NoIgnoreIndexes.d.ts +2 -0
- package/dist/plugins/PgV4NoIgnoreIndexes.d.ts.map +1 -0
- package/dist/plugins/PgV4NoIgnoreIndexes.js +72 -0
- package/dist/plugins/PgV4NoIgnoreIndexes.js.map +1 -0
- package/dist/plugins/PgV4SmartTagsPlugin.d.ts +11 -0
- package/dist/plugins/PgV4SmartTagsPlugin.d.ts.map +1 -0
- package/dist/plugins/PgV4SmartTagsPlugin.js +190 -0
- package/dist/plugins/PgV4SmartTagsPlugin.js.map +1 -0
- package/dist/presets/amber.d.ts +5 -0
- package/dist/presets/amber.d.ts.map +1 -0
- package/dist/presets/amber.js +38 -0
- package/dist/presets/amber.js.map +1 -0
- package/dist/presets/v4.d.ts +34 -0
- package/dist/presets/v4.d.ts.map +1 -0
- package/dist/presets/v4.js +142 -0
- package/dist/presets/v4.js.map +1 -0
- package/dist/schema.d.ts +34 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +82 -0
- package/dist/schema.js.map +1 -0
- package/package.json +77 -154
- package/build/assets/favicon.ico.d.ts +0 -3
- package/build/assets/favicon.ico.js +0 -6
- package/build/assets/graphiql.html.d.ts +0 -2
- package/build/assets/graphiql.html.js +0 -6
- package/build/index.d.ts +0 -8
- package/build/index.js +0 -34
- package/build/interfaces.d.ts +0 -162
- package/build/interfaces.js +0 -3
- package/build/plugins.d.ts +0 -3
- package/build/plugins.js +0 -53
- package/build/postgraphile/cli.d.ts +0 -3
- package/build/postgraphile/cli.js +0 -541
- package/build/postgraphile/extendedFormatError.d.ts +0 -9
- package/build/postgraphile/extendedFormatError.js +0 -51
- package/build/postgraphile/http/createPostGraphileHttpRequestHandler.d.ts +0 -11
- package/build/postgraphile/http/createPostGraphileHttpRequestHandler.js +0 -974
- package/build/postgraphile/http/frameworks.d.ts +0 -110
- package/build/postgraphile/http/frameworks.js +0 -258
- package/build/postgraphile/http/liveSubscribe.d.ts +0 -22
- package/build/postgraphile/http/liveSubscribe.js +0 -89
- package/build/postgraphile/http/mapAsyncIterator.d.ts +0 -15
- package/build/postgraphile/http/mapAsyncIterator.js +0 -71
- package/build/postgraphile/http/setupServerSentEvents.d.ts +0 -9
- package/build/postgraphile/http/setupServerSentEvents.js +0 -51
- package/build/postgraphile/http/subscriptions.d.ts +0 -7
- package/build/postgraphile/http/subscriptions.js +0 -410
- package/build/postgraphile/index.d.ts +0 -5
- package/build/postgraphile/index.js +0 -14
- package/build/postgraphile/pluginHook.d.ts +0 -104
- package/build/postgraphile/pluginHook.js +0 -100
- package/build/postgraphile/postgraphile.d.ts +0 -20
- package/build/postgraphile/postgraphile.js +0 -332
- package/build/postgraphile/postgraphilerc.d.ts +0 -2
- package/build/postgraphile/postgraphilerc.js +0 -16
- package/build/postgraphile/schema/exportPostGraphileSchema.d.ts +0 -6
- package/build/postgraphile/schema/exportPostGraphileSchema.js +0 -45
- package/build/postgraphile/shutdownActions.d.ts +0 -41
- package/build/postgraphile/shutdownActions.js +0 -87
- package/build/postgraphile/withPostGraphileContext.d.ts +0 -55
- package/build/postgraphile/withPostGraphileContext.js +0 -457
- package/build/postgres/inventory/pgClientFromContext.d.ts +0 -8
- package/build/postgres/inventory/pgClientFromContext.js +0 -21
- package/build-turbo/assets/favicon.ico.d.ts +0 -3
- package/build-turbo/assets/favicon.ico.js +0 -6
- package/build-turbo/assets/graphiql.html.d.ts +0 -2
- package/build-turbo/assets/graphiql.html.js +0 -6
- package/build-turbo/index.d.ts +0 -8
- package/build-turbo/index.js +0 -34
- package/build-turbo/interfaces.d.ts +0 -162
- package/build-turbo/interfaces.js +0 -3
- package/build-turbo/plugins.d.ts +0 -3
- package/build-turbo/plugins.js +0 -53
- package/build-turbo/postgraphile/cli.d.ts +0 -3
- package/build-turbo/postgraphile/cli.js +0 -572
- package/build-turbo/postgraphile/extendedFormatError.d.ts +0 -9
- package/build-turbo/postgraphile/extendedFormatError.js +0 -61
- package/build-turbo/postgraphile/http/createPostGraphileHttpRequestHandler.d.ts +0 -11
- package/build-turbo/postgraphile/http/createPostGraphileHttpRequestHandler.js +0 -982
- package/build-turbo/postgraphile/http/frameworks.d.ts +0 -110
- package/build-turbo/postgraphile/http/frameworks.js +0 -258
- package/build-turbo/postgraphile/http/liveSubscribe.d.ts +0 -22
- package/build-turbo/postgraphile/http/liveSubscribe.js +0 -89
- package/build-turbo/postgraphile/http/mapAsyncIterator.d.ts +0 -15
- package/build-turbo/postgraphile/http/mapAsyncIterator.js +0 -71
- package/build-turbo/postgraphile/http/setupServerSentEvents.d.ts +0 -9
- package/build-turbo/postgraphile/http/setupServerSentEvents.js +0 -51
- package/build-turbo/postgraphile/http/subscriptions.d.ts +0 -7
- package/build-turbo/postgraphile/http/subscriptions.js +0 -409
- package/build-turbo/postgraphile/index.d.ts +0 -5
- package/build-turbo/postgraphile/index.js +0 -14
- package/build-turbo/postgraphile/pluginHook.d.ts +0 -104
- package/build-turbo/postgraphile/pluginHook.js +0 -100
- package/build-turbo/postgraphile/postgraphile.d.ts +0 -20
- package/build-turbo/postgraphile/postgraphile.js +0 -337
- package/build-turbo/postgraphile/postgraphilerc.d.ts +0 -2
- package/build-turbo/postgraphile/postgraphilerc.js +0 -16
- package/build-turbo/postgraphile/schema/exportPostGraphileSchema.d.ts +0 -6
- package/build-turbo/postgraphile/schema/exportPostGraphileSchema.js +0 -45
- package/build-turbo/postgraphile/shutdownActions.d.ts +0 -41
- package/build-turbo/postgraphile/shutdownActions.js +0 -87
- package/build-turbo/postgraphile/withPostGraphileContext.d.ts +0 -55
- package/build-turbo/postgraphile/withPostGraphileContext.js +0 -466
- package/build-turbo/postgres/inventory/pgClientFromContext.d.ts +0 -8
- package/build-turbo/postgres/inventory/pgClientFromContext.js +0 -21
- package/cli.js +0 -6
- package/index.js +0 -5
- package/isTurbo.js +0 -11
- package/plugins.d.ts +0 -1
- package/plugins.js +0 -5
- package/sponsors.json +0 -150
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { PassThrough, Stream } from 'stream';
|
|
3
|
-
import type { IncomingMessage, ServerResponse } from 'http';
|
|
4
|
-
/******************************************************************************/
|
|
5
|
-
export interface CompatFastifyReply {
|
|
6
|
-
raw: ServerResponse;
|
|
7
|
-
status(statusCode: number): CompatFastifyReply;
|
|
8
|
-
headers(values: {
|
|
9
|
-
[key: string]: any;
|
|
10
|
-
}): CompatFastifyReply;
|
|
11
|
-
send(payload?: any): CompatFastifyReply;
|
|
12
|
-
}
|
|
13
|
-
export interface CompatFastifyRequest {
|
|
14
|
-
raw: IncomingMessage;
|
|
15
|
-
body: unknown;
|
|
16
|
-
readonly headers: {
|
|
17
|
-
[key: string]: unknown;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/******************************************************************************/
|
|
21
|
-
/******************************************************************************/
|
|
22
|
-
export interface CompatKoaContext {
|
|
23
|
-
[key: string]: any;
|
|
24
|
-
req: IncomingMessage;
|
|
25
|
-
res: ServerResponse;
|
|
26
|
-
}
|
|
27
|
-
/******************************************************************************/
|
|
28
|
-
declare module 'http' {
|
|
29
|
-
interface IncomingMessage {
|
|
30
|
-
_koaCtx?: CompatKoaContext;
|
|
31
|
-
_fastifyRequest?: CompatFastifyRequest;
|
|
32
|
-
_body?: boolean;
|
|
33
|
-
body?: any;
|
|
34
|
-
originalUrl?: string;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
declare type Headers = {
|
|
38
|
-
[header: string]: string;
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* The base class for PostGraphile responses; collects headers, status code and
|
|
42
|
-
* body, and then hands to the relevant adaptor at the correct time.
|
|
43
|
-
*/
|
|
44
|
-
export declare abstract class PostGraphileResponse {
|
|
45
|
-
private _headers;
|
|
46
|
-
private _body;
|
|
47
|
-
private _setHeaders;
|
|
48
|
-
statusCode: number;
|
|
49
|
-
private _setHeadersOnce;
|
|
50
|
-
setHeader(header: string, value: string): void;
|
|
51
|
-
/**
|
|
52
|
-
* Use `endWithStream` or `end`; not both.
|
|
53
|
-
*/
|
|
54
|
-
endWithStream(): PassThrough;
|
|
55
|
-
/**
|
|
56
|
-
* Use `endWithStream` or `end`; not both
|
|
57
|
-
*/
|
|
58
|
-
end(moreBody?: Buffer | string | null): void;
|
|
59
|
-
/**
|
|
60
|
-
* Returns the `res` object that the underlying HTTP server would have.
|
|
61
|
-
*/
|
|
62
|
-
abstract getNodeServerRequest(): IncomingMessage;
|
|
63
|
-
abstract getNodeServerResponse(): ServerResponse;
|
|
64
|
-
abstract setHeaders(statusCode: number, headers: Headers): void;
|
|
65
|
-
abstract setBody(body: Stream | Buffer | string | undefined): void;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Suitable for Node's HTTP server, but also connect, express, restify and fastify v2.
|
|
69
|
-
*/
|
|
70
|
-
export declare class PostGraphileResponseNode extends PostGraphileResponse {
|
|
71
|
-
private _req;
|
|
72
|
-
private _res;
|
|
73
|
-
private _next;
|
|
74
|
-
constructor(req: IncomingMessage, res: ServerResponse, next: (e?: 'route' | Error) => void);
|
|
75
|
-
getNodeServerRequest(): IncomingMessage;
|
|
76
|
-
getNodeServerResponse(): ServerResponse;
|
|
77
|
-
getNextCallback(): (e?: Error | "route" | undefined) => void;
|
|
78
|
-
setHeaders(statusCode: number, headers: Headers): void;
|
|
79
|
-
setBody(body: Stream | Buffer | string | undefined): void;
|
|
80
|
-
}
|
|
81
|
-
export declare type CompatKoaNext = (error?: Error) => Promise<any>;
|
|
82
|
-
/**
|
|
83
|
-
* Suitable for Koa.
|
|
84
|
-
*/
|
|
85
|
-
export declare class PostGraphileResponseKoa extends PostGraphileResponse {
|
|
86
|
-
private _ctx;
|
|
87
|
-
private _next;
|
|
88
|
-
constructor(ctx: CompatKoaContext, next: CompatKoaNext);
|
|
89
|
-
getNodeServerRequest(): IncomingMessage;
|
|
90
|
-
getNodeServerResponse(): ServerResponse;
|
|
91
|
-
getNextCallback(): CompatKoaNext;
|
|
92
|
-
setHeaders(statusCode: number, headers: Headers): void;
|
|
93
|
-
endWithStream(): PassThrough;
|
|
94
|
-
setBody(body: Stream | Buffer | string | undefined): void;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Suitable for Fastify v3 (use PostGraphileResponseNode and middleware
|
|
98
|
-
* approach for Fastify v2)
|
|
99
|
-
*/
|
|
100
|
-
export declare class PostGraphileResponseFastify3 extends PostGraphileResponse {
|
|
101
|
-
private _request;
|
|
102
|
-
private _reply;
|
|
103
|
-
constructor(request: CompatFastifyRequest, reply: CompatFastifyReply);
|
|
104
|
-
getNodeServerRequest(): IncomingMessage;
|
|
105
|
-
getNodeServerResponse(): ServerResponse;
|
|
106
|
-
setHeaders(statusCode: number, headers: Headers): void;
|
|
107
|
-
endWithStream(): PassThrough;
|
|
108
|
-
setBody(body: Stream | Buffer | string | undefined): void;
|
|
109
|
-
}
|
|
110
|
-
export {};
|
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PostGraphileResponseFastify3 = exports.PostGraphileResponseKoa = exports.PostGraphileResponseNode = exports.PostGraphileResponse = void 0;
|
|
4
|
-
const stream_1 = require("stream");
|
|
5
|
-
/**
|
|
6
|
-
* The base class for PostGraphile responses; collects headers, status code and
|
|
7
|
-
* body, and then hands to the relevant adaptor at the correct time.
|
|
8
|
-
*/
|
|
9
|
-
class PostGraphileResponse {
|
|
10
|
-
constructor() {
|
|
11
|
-
this._headers = {};
|
|
12
|
-
this._setHeaders = false;
|
|
13
|
-
this.statusCode = 200;
|
|
14
|
-
}
|
|
15
|
-
_setHeadersOnce() {
|
|
16
|
-
if (!this._setHeaders) {
|
|
17
|
-
this._setHeaders = true;
|
|
18
|
-
this.setHeaders(this.statusCode, this._headers);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
setHeader(header, value) {
|
|
22
|
-
if (this._setHeaders) {
|
|
23
|
-
throw new Error(`Cannot set a header '${header}' when headers already sent`);
|
|
24
|
-
}
|
|
25
|
-
this._headers[header] = value;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Use `endWithStream` or `end`; not both.
|
|
29
|
-
*/
|
|
30
|
-
endWithStream() {
|
|
31
|
-
if (this._body != null) {
|
|
32
|
-
throw new Error("Cannot return a stream when there's already a response body");
|
|
33
|
-
}
|
|
34
|
-
this._setHeadersOnce();
|
|
35
|
-
this._body = new stream_1.PassThrough();
|
|
36
|
-
this.setBody(this._body);
|
|
37
|
-
return this._body;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Use `endWithStream` or `end`; not both
|
|
41
|
-
*/
|
|
42
|
-
end(moreBody) {
|
|
43
|
-
if (moreBody) {
|
|
44
|
-
if (this._body != null) {
|
|
45
|
-
if (typeof this._body === 'string') {
|
|
46
|
-
if (Buffer.isBuffer(moreBody)) {
|
|
47
|
-
throw new Error('Cannot mix string and buffer');
|
|
48
|
-
}
|
|
49
|
-
this._body = this._body + moreBody;
|
|
50
|
-
}
|
|
51
|
-
else if (Buffer.isBuffer(this._body)) {
|
|
52
|
-
if (typeof moreBody === 'string') {
|
|
53
|
-
throw new Error('Cannot mix buffer and string');
|
|
54
|
-
}
|
|
55
|
-
this._body = Buffer.concat([this._body, moreBody]);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
throw new Error("Can't `.end(string)` when body is a stream");
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
this._body = moreBody;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// If possible, set Content-Length to avoid unnecessary chunked encoding
|
|
66
|
-
if (typeof this._body === 'string') {
|
|
67
|
-
// String length is not reliable due to multi-byte characters; calculate via Buffer
|
|
68
|
-
this.setHeader('Content-Length', String(Buffer.byteLength(this._body, 'utf8')));
|
|
69
|
-
}
|
|
70
|
-
else if (Buffer.isBuffer(this._body)) {
|
|
71
|
-
this.setHeader('Content-Length', String(this._body.byteLength));
|
|
72
|
-
}
|
|
73
|
-
this._setHeadersOnce();
|
|
74
|
-
this.setBody(this._body);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.PostGraphileResponse = PostGraphileResponse;
|
|
78
|
-
/**
|
|
79
|
-
* Suitable for Node's HTTP server, but also connect, express, restify and fastify v2.
|
|
80
|
-
*/
|
|
81
|
-
class PostGraphileResponseNode extends PostGraphileResponse {
|
|
82
|
-
constructor(req, res, next) {
|
|
83
|
-
super();
|
|
84
|
-
this._req = req;
|
|
85
|
-
this._res = res;
|
|
86
|
-
this._next = next;
|
|
87
|
-
}
|
|
88
|
-
getNodeServerRequest() {
|
|
89
|
-
return this._req;
|
|
90
|
-
}
|
|
91
|
-
getNodeServerResponse() {
|
|
92
|
-
return this._res;
|
|
93
|
-
}
|
|
94
|
-
getNextCallback() {
|
|
95
|
-
return this._next;
|
|
96
|
-
}
|
|
97
|
-
setHeaders(statusCode, headers) {
|
|
98
|
-
for (const key in headers) {
|
|
99
|
-
if (Object.hasOwnProperty.call(headers, key)) {
|
|
100
|
-
this._res.setHeader(key, headers[key]);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
this._res.statusCode = statusCode;
|
|
104
|
-
}
|
|
105
|
-
setBody(body) {
|
|
106
|
-
if (typeof body === 'string') {
|
|
107
|
-
this._res.end(body);
|
|
108
|
-
}
|
|
109
|
-
else if (Buffer.isBuffer(body)) {
|
|
110
|
-
this._res.end(body);
|
|
111
|
-
}
|
|
112
|
-
else if (!body) {
|
|
113
|
-
this._res.end();
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
// Must be a stream
|
|
117
|
-
// It'd be really nice if we could just:
|
|
118
|
-
//
|
|
119
|
-
// body.pipe(this._res);
|
|
120
|
-
//
|
|
121
|
-
// however we need to support running within the compression middleware
|
|
122
|
-
// which requires special handling for server-sent events:
|
|
123
|
-
// https://github.com/expressjs/compression#server-sent-events
|
|
124
|
-
//
|
|
125
|
-
// Because of this, we must handle the data streaming manually so we can
|
|
126
|
-
// flush:
|
|
127
|
-
const writeData = (data) => {
|
|
128
|
-
this._res.write(data);
|
|
129
|
-
// Technically we should see if `.write()` returned false, and if so we
|
|
130
|
-
// should pause the stream. However, since our stream is coming from
|
|
131
|
-
// watch mode, we find it unlikely that a significant amount of data
|
|
132
|
-
// will be buffered (and we don't recommend watch mode in production),
|
|
133
|
-
// so it doesn't feel like we need this currently. If it turns out you
|
|
134
|
-
// need this, a PR would be welcome.
|
|
135
|
-
if (typeof this._res.flush === 'function') {
|
|
136
|
-
// https://github.com/expressjs/compression#server-sent-events
|
|
137
|
-
this._res.flush();
|
|
138
|
-
}
|
|
139
|
-
else if (typeof this._res.flushHeaders === 'function') {
|
|
140
|
-
this._res.flushHeaders();
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
let clean = false;
|
|
144
|
-
const cleanup = () => {
|
|
145
|
-
if (clean)
|
|
146
|
-
return;
|
|
147
|
-
clean = true;
|
|
148
|
-
body.removeListener('data', writeData);
|
|
149
|
-
body.removeListener('end', cleanup);
|
|
150
|
-
this._req.removeListener('close', cleanup);
|
|
151
|
-
this._req.removeListener('end', cleanup);
|
|
152
|
-
this._req.removeListener('error', cleanup);
|
|
153
|
-
};
|
|
154
|
-
body.on('data', writeData);
|
|
155
|
-
body.on('end', () => {
|
|
156
|
-
cleanup();
|
|
157
|
-
this._res.end();
|
|
158
|
-
});
|
|
159
|
-
this._req.on('close', cleanup);
|
|
160
|
-
this._req.on('end', cleanup);
|
|
161
|
-
this._req.on('error', cleanup);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
exports.PostGraphileResponseNode = PostGraphileResponseNode;
|
|
166
|
-
/**
|
|
167
|
-
* Suitable for Koa.
|
|
168
|
-
*/
|
|
169
|
-
class PostGraphileResponseKoa extends PostGraphileResponse {
|
|
170
|
-
constructor(ctx, next) {
|
|
171
|
-
super();
|
|
172
|
-
this._ctx = ctx;
|
|
173
|
-
this._next = next;
|
|
174
|
-
const req = this.getNodeServerRequest();
|
|
175
|
-
// For backwards compatibility, and to allow getting "back" to the Koa
|
|
176
|
-
// context from pgSettings, etc (this is a documented interface)
|
|
177
|
-
req._koaCtx = ctx;
|
|
178
|
-
// Make `koa-bodyparser` trigger skipping of our `body-parser`
|
|
179
|
-
if (ctx.request.body) {
|
|
180
|
-
req._body = true;
|
|
181
|
-
req.body = ctx.request.body;
|
|
182
|
-
}
|
|
183
|
-
// In case you're using koa-mount or similar
|
|
184
|
-
req.originalUrl = ctx.request.originalUrl;
|
|
185
|
-
}
|
|
186
|
-
getNodeServerRequest() {
|
|
187
|
-
return this._ctx.req;
|
|
188
|
-
}
|
|
189
|
-
getNodeServerResponse() {
|
|
190
|
-
return this._ctx.res;
|
|
191
|
-
}
|
|
192
|
-
getNextCallback() {
|
|
193
|
-
return this._next;
|
|
194
|
-
}
|
|
195
|
-
setHeaders(statusCode, headers) {
|
|
196
|
-
this._ctx.status = statusCode;
|
|
197
|
-
this._ctx.set(headers);
|
|
198
|
-
// DO NOT `this._ctx.flushHeaders()` as it will interfere with the compress
|
|
199
|
-
// middleware.
|
|
200
|
-
}
|
|
201
|
-
endWithStream() {
|
|
202
|
-
// We're going to assume this is the EventStream which we want to
|
|
203
|
-
// be realtime for watch mode, and there's no value in compressing it.
|
|
204
|
-
this._ctx.compress = false;
|
|
205
|
-
// TODO: find a better way of flushing the event stream on write.
|
|
206
|
-
return super.endWithStream();
|
|
207
|
-
}
|
|
208
|
-
setBody(body) {
|
|
209
|
-
this._ctx.body = body || '';
|
|
210
|
-
this._next();
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
exports.PostGraphileResponseKoa = PostGraphileResponseKoa;
|
|
214
|
-
/**
|
|
215
|
-
* Suitable for Fastify v3 (use PostGraphileResponseNode and middleware
|
|
216
|
-
* approach for Fastify v2)
|
|
217
|
-
*/
|
|
218
|
-
class PostGraphileResponseFastify3 extends PostGraphileResponse {
|
|
219
|
-
constructor(request, reply) {
|
|
220
|
-
super();
|
|
221
|
-
this._request = request;
|
|
222
|
-
this._reply = reply;
|
|
223
|
-
// For backwards compatibility, and to allow getting "back" to the Fastify
|
|
224
|
-
// request from pgSettings, etc
|
|
225
|
-
const req = this.getNodeServerRequest();
|
|
226
|
-
req._fastifyRequest = this._request;
|
|
227
|
-
// Make Fastify's body parsing trigger skipping of our `body-parser`
|
|
228
|
-
if (this._request.body) {
|
|
229
|
-
req._body = true;
|
|
230
|
-
req.body = this._request.body;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
getNodeServerRequest() {
|
|
234
|
-
return this._request.raw;
|
|
235
|
-
}
|
|
236
|
-
getNodeServerResponse() {
|
|
237
|
-
return this._reply.raw;
|
|
238
|
-
}
|
|
239
|
-
setHeaders(statusCode, headers) {
|
|
240
|
-
this._reply.status(statusCode);
|
|
241
|
-
this._reply.headers(headers);
|
|
242
|
-
}
|
|
243
|
-
endWithStream() {
|
|
244
|
-
// We're going to assume this is the EventStream which we want to
|
|
245
|
-
// be realtime for watch mode, and there's no value in compressing it.
|
|
246
|
-
// Fastify will disable compression if we set the relevant request header
|
|
247
|
-
// (see:
|
|
248
|
-
// https://github.com/fastify/fastify-compress/blob/068c673fc0bd50da1f4d9f3fd2423b482c364a89/index.js#L217-L218)
|
|
249
|
-
this._request.headers['x-no-compression'] = '1';
|
|
250
|
-
// TODO: find a better way of flushing the event stream on write.
|
|
251
|
-
return super.endWithStream();
|
|
252
|
-
}
|
|
253
|
-
setBody(body) {
|
|
254
|
-
this._reply.send(body);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
exports.PostGraphileResponseFastify3 = PostGraphileResponseFastify3;
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3Jrcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wb3N0Z3JhcGhpbGUvaHR0cC9mcmFtZXdvcmtzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUE2QztBQThEN0M7OztHQUdHO0FBQ0gsTUFBc0Isb0JBQW9CO0lBQTFDO1FBQ1UsYUFBUSxHQUFZLEVBQUUsQ0FBQztRQUV2QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsR0FBRyxDQUFDO0lBd0UxQixDQUFDO0lBdEVTLGVBQWU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYyxFQUFFLEtBQWE7UUFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE1BQU0sNkJBQTZCLENBQUMsQ0FBQztTQUM5RTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7U0FDaEY7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLG9CQUFXLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7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
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains code that is derived from code copyright (c) Facebook,
|
|
3
|
-
* Inc. and its affiliates; released under the MIT license.
|
|
4
|
-
*
|
|
5
|
-
* The original code can be seen at the following URL, which includes a
|
|
6
|
-
* reference to the original license:
|
|
7
|
-
*
|
|
8
|
-
* https://github.com/graphql/graphql-js/blob/f56905bd6b030d5912092a1239ed21f73fbdd408/src/subscription/subscribe.js
|
|
9
|
-
*/
|
|
10
|
-
import type { subscribe } from 'graphql';
|
|
11
|
-
import { CreateRequestHandlerOptions } from '../../interfaces';
|
|
12
|
-
import { PluginHookFn } from '../pluginHook';
|
|
13
|
-
/**
|
|
14
|
-
* This method returns a function compatible with the `subscribe` function from
|
|
15
|
-
* GraphQL.js, but with enhancements to support live queries.
|
|
16
|
-
*
|
|
17
|
-
* @internal
|
|
18
|
-
*/
|
|
19
|
-
export declare function makeLiveSubscribe(params: {
|
|
20
|
-
options: CreateRequestHandlerOptions;
|
|
21
|
-
pluginHook: PluginHookFn;
|
|
22
|
-
}): typeof subscribe;
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* This file contains code that is derived from code copyright (c) Facebook,
|
|
4
|
-
* Inc. and its affiliates; released under the MIT license.
|
|
5
|
-
*
|
|
6
|
-
* The original code can be seen at the following URL, which includes a
|
|
7
|
-
* reference to the original license:
|
|
8
|
-
*
|
|
9
|
-
* https://github.com/graphql/graphql-js/blob/f56905bd6b030d5912092a1239ed21f73fbdd408/src/subscription/subscribe.js
|
|
10
|
-
*/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.makeLiveSubscribe = void 0;
|
|
13
|
-
/* tslint:disable no-any */
|
|
14
|
-
const graphql_1 = require("graphql");
|
|
15
|
-
const mapAsyncIterator_1 = require("./mapAsyncIterator");
|
|
16
|
-
const iterall_1 = require("iterall");
|
|
17
|
-
/**
|
|
18
|
-
* This method returns a function compatible with the `subscribe` function from
|
|
19
|
-
* GraphQL.js, but with enhancements to support live queries.
|
|
20
|
-
*
|
|
21
|
-
* @internal
|
|
22
|
-
*/
|
|
23
|
-
function makeLiveSubscribe(params) {
|
|
24
|
-
const { pluginHook } = params;
|
|
25
|
-
return function liveSubscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {
|
|
26
|
-
/* eslint-enable no-redeclare */
|
|
27
|
-
// Extract arguments from object args if provided.
|
|
28
|
-
return arguments.length === 1
|
|
29
|
-
? liveSubscribeImpl(argsOrSchema.schema, argsOrSchema.document, argsOrSchema.rootValue, argsOrSchema.contextValue, argsOrSchema.variableValues, argsOrSchema.operationName, argsOrSchema.fieldResolver, argsOrSchema.subscribeFieldResolver)
|
|
30
|
-
: liveSubscribeImpl(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver);
|
|
31
|
-
};
|
|
32
|
-
function liveSubscribeImpl(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {
|
|
33
|
-
const sourcePromise = graphql_1.createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, subscribeFieldResolver);
|
|
34
|
-
// For each payload yielded from a subscription, map it over the normal
|
|
35
|
-
// GraphQL `execute` function, with `payload` as the rootValue.
|
|
36
|
-
// This implements the "MapSourceToResponseEvent" algorithm described in
|
|
37
|
-
// the GraphQL specification. The `execute` function provides the
|
|
38
|
-
// "ExecuteSubscriptionEvent" algorithm, as it is nearly identical to the
|
|
39
|
-
// "ExecuteQuery" algorithm, for which `execute` is also used.
|
|
40
|
-
const mapSourceToResponse = async (payload) => {
|
|
41
|
-
/*
|
|
42
|
-
* GRAPHILE FORK
|
|
43
|
-
*
|
|
44
|
-
* We need to tell Graphile Engine when the execution has completed
|
|
45
|
-
* (because we cannot detect this from inside the GraphQL execution) so
|
|
46
|
-
* that it can clean up old listeners; we do this with the `finally` block.
|
|
47
|
-
*/
|
|
48
|
-
try {
|
|
49
|
-
const executionResult = graphql_1.execute(schema, document, payload, contextValue, variableValues, operationName, fieldResolver);
|
|
50
|
-
const hookedExecutionResult = pluginHook('postgraphile:liveSubscribe:executionResult', executionResult, {
|
|
51
|
-
schema,
|
|
52
|
-
document,
|
|
53
|
-
rootValue,
|
|
54
|
-
contextValue,
|
|
55
|
-
variableValues,
|
|
56
|
-
operationName,
|
|
57
|
-
fieldResolver,
|
|
58
|
-
subscribeFieldResolver,
|
|
59
|
-
});
|
|
60
|
-
return await hookedExecutionResult;
|
|
61
|
-
}
|
|
62
|
-
finally {
|
|
63
|
-
if (payload && typeof payload.release === 'function') {
|
|
64
|
-
payload.release();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
// Resolve the Source Stream, then map every source value to a
|
|
69
|
-
// ExecutionResult value as described above.
|
|
70
|
-
return sourcePromise.then(resultOrStream =>
|
|
71
|
-
// Note: Flow can't refine isAsyncIterable, so explicit casts are used.
|
|
72
|
-
iterall_1.isAsyncIterable(resultOrStream)
|
|
73
|
-
? mapAsyncIterator_1.default(resultOrStream, mapSourceToResponse, reportGraphQLError)
|
|
74
|
-
: resultOrStream, reportGraphQLError);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.makeLiveSubscribe = makeLiveSubscribe;
|
|
78
|
-
/**
|
|
79
|
-
* This function checks if the error is a GraphQLError. If it is, report it as
|
|
80
|
-
* an ExecutionResult, containing only errors and no data. Otherwise treat the
|
|
81
|
-
* error as a system-class error and re-throw it.
|
|
82
|
-
*/
|
|
83
|
-
function reportGraphQLError(error) {
|
|
84
|
-
if (error instanceof graphql_1.GraphQLError) {
|
|
85
|
-
return { errors: [error] };
|
|
86
|
-
}
|
|
87
|
-
throw error;
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZVN1YnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wb3N0Z3JhcGhpbGUvaHR0cC9saXZlU3Vic2NyaWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7R0FRRzs7O0FBRUgsMkJBQTJCO0FBQzNCLHFDQVFpQjtBQUVqQix5REFBa0Q7QUFDbEQscUNBQTBDO0FBTTFDOzs7OztHQUtHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsTUFHakM7SUFDQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTlCLE9BQU8sU0FBUyxhQUFhLENBQzNCLFlBQWlDLEVBQ2pDLFFBQXVCLEVBQ3ZCLFNBQWUsRUFDZixZQUFrQixFQUNsQixjQUF1QyxFQUN2QyxhQUFzQixFQUN0QixhQUE4QyxFQUM5QyxzQkFBdUQ7UUFFdkQsZ0NBQWdDO1FBQ2hDLGtEQUFrRDtRQUNsRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUMzQixDQUFDLENBQUMsaUJBQWlCLENBQ2YsWUFBWSxDQUFDLE1BQU0sRUFDbkIsWUFBWSxDQUFDLFFBQVEsRUFDckIsWUFBWSxDQUFDLFNBQVMsRUFDdEIsWUFBWSxDQUFDLFlBQVksRUFDekIsWUFBWSxDQUFDLGNBQWMsRUFDM0IsWUFBWSxDQUFDLGFBQWEsRUFDMUIsWUFBWSxDQUFDLGFBQWEsRUFDMUIsWUFBWSxDQUFDLHNCQUFzQixDQUNwQztZQUNILENBQUMsQ0FBQyxpQkFBaUIsQ0FDZixZQUFZLEVBQ1osUUFBd0IsRUFDeEIsU0FBUyxFQUNULFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLGFBQWEsRUFDYixzQkFBc0IsQ0FDdkIsQ0FBQztJQUNSLENBQUMsQ0FBQztJQUVGLFNBQVMsaUJBQWlCLENBQ3hCLE1BQXFCLEVBQ3JCLFFBQXNCLEVBQ3RCLFNBQWUsRUFDZixZQUFrQixFQUNsQixjQUF1QyxFQUN2QyxhQUFzQixFQUN0QixhQUE4QyxFQUM5QyxzQkFBdUQ7UUFFdkQsTUFBTSxhQUFhLEdBQUcsaUNBQXVCLENBQzNDLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLHNCQUFzQixDQUN2QixDQUFDO1FBRUYsdUVBQXVFO1FBQ3ZFLCtEQUErRDtRQUMvRCx3RUFBd0U7UUFDeEUsaUVBQWlFO1FBQ2pFLHlFQUF5RTtRQUN6RSw4REFBOEQ7UUFDOUQsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7WUFDakQ7Ozs7OztlQU1HO1lBQ0gsSUFBSTtnQkFDRixNQUFNLGVBQWUsR0FBRyxpQkFBTyxDQUM3QixNQUFNLEVBQ04sUUFBUSxFQUNSLE9BQU8sRUFDUCxZQUFZLEVBQ1osY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLENBQ2QsQ0FBQztnQkFFRixNQUFNLHFCQUFxQixHQUFHLFVBQVUsQ0FDdEMsNENBQTRDLEVBQzVDLGVBQWUsRUFDZjtvQkFDRSxNQUFNO29CQUNOLFFBQVE7b0JBQ1IsU0FBUztvQkFDVCxZQUFZO29CQUNaLGNBQWM7b0JBQ2QsYUFBYTtvQkFDYixhQUFhO29CQUNiLHNCQUFzQjtpQkFDdkIsQ0FDRixDQUFDO2dCQUVGLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQzthQUNwQztvQkFBUztnQkFDUixJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO29CQUNwRCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ25CO2FBQ0Y7UUFDSCxDQUFDLENBQUM7UUFFRiw4REFBOEQ7UUFDOUQsNENBQTRDO1FBQzVDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FDdkIsY0FBYyxDQUFDLEVBQUU7UUFDZix1RUFBdUU7UUFDdkUseUJBQWUsQ0FBQyxjQUFjLENBQUM7WUFDN0IsQ0FBQyxDQUFDLDBCQUFnQixDQUNiLGNBQThDLEVBQy9DLG1CQUFtQixFQUNuQixrQkFBa0IsQ0FDbkI7WUFDSCxDQUFDLENBQUcsY0FBMEMsRUFDbEQsa0JBQWtCLENBQ25CLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQTVIRCw4Q0E0SEM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxLQUFVO0lBQ3BDLElBQUksS0FBSyxZQUFZLHNCQUFZLEVBQUU7UUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7S0FDNUI7SUFDRCxNQUFNLEtBQUssQ0FBQztBQUNkLENBQUMifQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
* @flow strict
|
|
8
|
-
*/
|
|
9
|
-
declare type PromiseOrValue<T> = T | Promise<T>;
|
|
10
|
-
/**
|
|
11
|
-
* Given an AsyncIterable and a callback function, return an AsyncIterator
|
|
12
|
-
* which produces values mapped via calling the callback function.
|
|
13
|
-
*/
|
|
14
|
-
export default function mapAsyncIterator<T, U>(iterable: AsyncIterable<T>, callback: (val: T) => PromiseOrValue<U>, rejectCallback?: (val: any) => PromiseOrValue<U>): AsyncIterableIterator<U>;
|
|
15
|
-
export {};
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// This file is a copy from the GraphQL codebase, modified to work in TypeScript:
|
|
3
|
-
// https://github.com/graphql/graphql-js/blob/f56905bd6b030d5912092a1239ed21f73fbdd408/src/subscription/mapAsyncIterator.js
|
|
4
|
-
/* tslint:disable no-any */
|
|
5
|
-
/**
|
|
6
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
7
|
-
*
|
|
8
|
-
* This source code is licensed under the MIT license found in the
|
|
9
|
-
* LICENSE file in the root directory of this source tree.
|
|
10
|
-
*
|
|
11
|
-
* @flow strict
|
|
12
|
-
*/
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
const iterall_1 = require("iterall");
|
|
15
|
-
/**
|
|
16
|
-
* Given an AsyncIterable and a callback function, return an AsyncIterator
|
|
17
|
-
* which produces values mapped via calling the callback function.
|
|
18
|
-
*/
|
|
19
|
-
function mapAsyncIterator(iterable, callback, rejectCallback) {
|
|
20
|
-
const iterator = iterall_1.getAsyncIterator(iterable);
|
|
21
|
-
let $return;
|
|
22
|
-
let abruptClose;
|
|
23
|
-
// $FlowFixMe(>=0.68.0)
|
|
24
|
-
if (typeof iterator.return === 'function') {
|
|
25
|
-
$return = iterator.return;
|
|
26
|
-
abruptClose = (error) => {
|
|
27
|
-
const rethrow = () => Promise.reject(error);
|
|
28
|
-
return $return.call(iterator).then(rethrow, rethrow);
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function mapResult(result) {
|
|
32
|
-
return result.done
|
|
33
|
-
? result
|
|
34
|
-
: asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);
|
|
35
|
-
}
|
|
36
|
-
let mapReject;
|
|
37
|
-
if (rejectCallback) {
|
|
38
|
-
// Capture rejectCallback to ensure it cannot be null.
|
|
39
|
-
const reject = rejectCallback;
|
|
40
|
-
mapReject = (error) => asyncMapValue(error, reject).then(iteratorResult, abruptClose);
|
|
41
|
-
}
|
|
42
|
-
const mappedIterator = {
|
|
43
|
-
next() {
|
|
44
|
-
return iterator.next().then(mapResult, mapReject);
|
|
45
|
-
},
|
|
46
|
-
return() {
|
|
47
|
-
return $return
|
|
48
|
-
? $return.call(iterator).then(mapResult, mapReject)
|
|
49
|
-
: Promise.resolve({ value: undefined, done: true });
|
|
50
|
-
},
|
|
51
|
-
throw(error) {
|
|
52
|
-
if (typeof iterator.throw === 'function') {
|
|
53
|
-
return iterator.throw(error).then(mapResult, mapReject);
|
|
54
|
-
}
|
|
55
|
-
return Promise.reject(error).catch(abruptClose);
|
|
56
|
-
},
|
|
57
|
-
// @ts-ignore TypeScript doesn't seem to understand that this is really `Symbol.asyncIterator`
|
|
58
|
-
[iterall_1.$$asyncIterator]() {
|
|
59
|
-
return this;
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
return mappedIterator;
|
|
63
|
-
}
|
|
64
|
-
exports.default = mapAsyncIterator;
|
|
65
|
-
function asyncMapValue(value, callback) {
|
|
66
|
-
return new Promise(resolve => resolve(callback(value)));
|
|
67
|
-
}
|
|
68
|
-
function iteratorResult(value) {
|
|
69
|
-
return { value, done: false };
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwQXN5bmNJdGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wb3N0Z3JhcGhpbGUvaHR0cC9tYXBBc3luY0l0ZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRkFBaUY7QUFDakYsNkhBQTZIO0FBQzdILDJCQUEyQjtBQUMzQjs7Ozs7OztHQU9HOztBQUVILHFDQUE0RDtBQUc1RDs7O0dBR0c7QUFDSCxTQUF3QixnQkFBZ0IsQ0FDdEMsUUFBMEIsRUFDMUIsUUFBdUMsRUFDdkMsY0FBZ0Q7SUFFaEQsTUFBTSxRQUFRLEdBQUcsMEJBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsSUFBSSxPQUFZLENBQUM7SUFDakIsSUFBSSxXQUFnQixDQUFDO0lBQ3JCLHVCQUF1QjtJQUN2QixJQUFJLE9BQU8sUUFBUSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUU7UUFDekMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUIsV0FBVyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDM0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUM7S0FDSDtJQUVELFNBQVMsU0FBUyxDQUFDLE1BQVc7UUFDNUIsT0FBTyxNQUFNLENBQUMsSUFBSTtZQUNoQixDQUFDLENBQUMsTUFBTTtZQUNSLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLGNBQWMsRUFBRTtRQUNsQixzREFBc0Q7UUFDdEQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDO1FBQzlCLFNBQVMsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQzVGO0lBRUQsTUFBTSxjQUFjLEdBQTZCO1FBQy9DLElBQUk7WUFDRixPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxNQUFNO1lBQ0osT0FBTyxPQUFPO2dCQUNaLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLO1lBQ1QsSUFBSSxPQUFPLFFBQVEsQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO2dCQUN4QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUN6RDtZQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELDhGQUE4RjtRQUM5RixDQUFDLHlCQUFlLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FDRixDQUFDO0lBQ0YsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQW5ERCxtQ0FtREM7QUFFRCxTQUFTLGFBQWEsQ0FBTyxLQUFRLEVBQUUsUUFBdUM7SUFDNUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBSSxLQUFRO0lBQ2pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ2hDLENBQUMifQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { CreateRequestHandlerOptions } from '../../interfaces';
|
|
2
|
-
import { PostGraphileResponse } from './frameworks';
|
|
3
|
-
/**
|
|
4
|
-
* Sets the headers and streams a body for server-sent events (primarily used
|
|
5
|
-
* by watch mode).
|
|
6
|
-
*
|
|
7
|
-
* @internal
|
|
8
|
-
*/
|
|
9
|
-
export default function setupServerSentEvents(res: PostGraphileResponse, options: CreateRequestHandlerOptions): void;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* Sets the headers and streams a body for server-sent events (primarily used
|
|
5
|
-
* by watch mode).
|
|
6
|
-
*
|
|
7
|
-
* @internal
|
|
8
|
-
*/
|
|
9
|
-
function setupServerSentEvents(res, options) {
|
|
10
|
-
const req = res.getNodeServerRequest();
|
|
11
|
-
const { _emitter, watchPg } = options;
|
|
12
|
-
// Making sure these options are set.
|
|
13
|
-
req.socket.setTimeout(0);
|
|
14
|
-
req.socket.setNoDelay(true);
|
|
15
|
-
req.socket.setKeepAlive(true);
|
|
16
|
-
// Set headers for Server-Sent Events.
|
|
17
|
-
res.statusCode = 200;
|
|
18
|
-
// Don't buffer EventStream in nginx
|
|
19
|
-
res.setHeader('X-Accel-Buffering', 'no');
|
|
20
|
-
res.setHeader('Content-Type', 'text/event-stream');
|
|
21
|
-
res.setHeader('Cache-Control', 'no-cache, no-transform');
|
|
22
|
-
if (req.httpVersionMajor >= 2) {
|
|
23
|
-
// NOOP
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
res.setHeader('Connection', 'keep-alive');
|
|
27
|
-
}
|
|
28
|
-
// Creates a stream for the response
|
|
29
|
-
const stream = res.endWithStream();
|
|
30
|
-
// Notify client that connection is open.
|
|
31
|
-
stream.write('event: open\n\n');
|
|
32
|
-
// Setup listeners.
|
|
33
|
-
const schemaChangedCb = () => stream.write('event: change\ndata: schema\n\n');
|
|
34
|
-
if (watchPg)
|
|
35
|
-
_emitter.on('schemas:changed', schemaChangedCb);
|
|
36
|
-
// Clean up when connection closes.
|
|
37
|
-
const cleanup = () => {
|
|
38
|
-
req.removeListener('close', cleanup);
|
|
39
|
-
req.removeListener('finish', cleanup);
|
|
40
|
-
req.removeListener('error', cleanup);
|
|
41
|
-
_emitter.removeListener('test:close', cleanup);
|
|
42
|
-
_emitter.removeListener('schemas:changed', schemaChangedCb);
|
|
43
|
-
stream.end();
|
|
44
|
-
};
|
|
45
|
-
req.on('close', cleanup);
|
|
46
|
-
req.on('finish', cleanup);
|
|
47
|
-
req.on('error', cleanup);
|
|
48
|
-
_emitter.on('test:close', cleanup);
|
|
49
|
-
}
|
|
50
|
-
exports.default = setupServerSentEvents;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBTZXJ2ZXJTZW50RXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Bvc3RncmFwaGlsZS9odHRwL3NldHVwU2VydmVyU2VudEV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBOzs7OztHQUtHO0FBQ0gsU0FBd0IscUJBQXFCLENBQzNDLEdBQXlCLEVBQ3pCLE9BQW9DO0lBRXBDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXRDLHFDQUFxQztJQUNyQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU5QixzQ0FBc0M7SUFDdEMsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7SUFDckIsb0NBQW9DO0lBQ3BDLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNuRCxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3pELElBQUksR0FBRyxDQUFDLGdCQUFnQixJQUFJLENBQUMsRUFBRTtRQUM3QixPQUFPO0tBQ1I7U0FBTTtRQUNMLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO0tBQzNDO0lBRUQsb0NBQW9DO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUVuQyx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWhDLG1CQUFtQjtJQUNuQixNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFFOUUsSUFBSSxPQUFPO1FBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUU3RCxtQ0FBbUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ25CLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLFFBQVEsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBQ0YsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekIsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQWhERCx3Q0FnREMifQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Server, IncomingMessage, ServerResponse } from 'http';
|
|
3
|
-
import { HttpRequestHandler } from '../../interfaces';
|
|
4
|
-
export declare function enhanceHttpServerWithWebSockets<Request extends IncomingMessage = IncomingMessage, Response extends ServerResponse = ServerResponse>(websocketServer: Server, postgraphileMiddleware: HttpRequestHandler, subscriptionServerOptions?: {
|
|
5
|
-
keepAlive?: number;
|
|
6
|
-
graphqlRoute?: string;
|
|
7
|
-
}): Promise<void>;
|