@webda/graphql 3.6.2 → 3.7.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/lib/graphql.d.ts +58 -7
- package/lib/graphql.js +486 -43
- package/lib/graphql.js.map +1 -1
- package/lib/types/any.d.ts +2 -0
- package/lib/types/any.js +21 -0
- package/lib/types/any.js.map +1 -0
- package/lib/types/date.d.ts +2 -0
- package/lib/types/date.js +26 -0
- package/lib/types/date.js.map +1 -0
- package/lib/types/long.d.ts +2 -0
- package/lib/types/long.js +31 -0
- package/lib/types/long.js.map +1 -0
- package/package.json +9 -6
- package/webda.module.json +5 -0
package/README.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @webda/graphql
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Implements the GraphQL protocol with subscriptions and mutations
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
// Add a ping to subscription (useful for testing)
|
|
7
|
+
setInterval(() => this.emit("Ping", Date.now()), this.parameters.pingInterval);
|
|
8
|
+
subscriptions["Ping"] = {
|
|
9
|
+
type: GraphQLLong,
|
|
10
|
+
subscribe: async (source, args, context: any, info: GraphQLResolveInfo) => {
|
|
11
|
+
return new EventIterator(this, "Ping", "Ping", Date.now()).iterate();
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
```
|
package/lib/graphql.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { Application, CoreModel, CoreModelDefinition, DeepPartial, DomainService, DomainServiceParameters, ModelGraph, WebContext } from "@webda/core";
|
|
2
|
-
import { FieldNode, GraphQLFieldConfig, GraphQLSchema, ThunkObjMap } from "graphql";
|
|
1
|
+
import { Application, CoreModel, CoreModelDefinition, DeepPartial, DomainService, DomainServiceParameters, ModelGraph, WebContext, WebdaQL } from "@webda/core";
|
|
2
|
+
import { FieldNode, GraphQLFieldConfig, GraphQLResolveInfo, GraphQLSchema, GraphQLType, ThunkObjMap } from "graphql";
|
|
3
3
|
import { Handler } from "graphql-http";
|
|
4
|
+
import { Server as GraphQLWSServer } from "graphql-ws";
|
|
4
5
|
import { JSONSchema7 } from "json-schema";
|
|
6
|
+
import { WebSocketServer } from "ws";
|
|
5
7
|
export interface GraphQLContextExtension {
|
|
6
8
|
/**
|
|
7
9
|
* Get the current count of operation for this request
|
|
@@ -32,6 +34,10 @@ export declare class GraphQLParameters extends DomainServiceParameters {
|
|
|
32
34
|
* Expose the schema
|
|
33
35
|
*/
|
|
34
36
|
exposeGraphiQL: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Expose a aggregation of all available subscriptions
|
|
39
|
+
*/
|
|
40
|
+
globalSubscription: boolean;
|
|
35
41
|
constructor(params: any);
|
|
36
42
|
}
|
|
37
43
|
/**
|
|
@@ -47,6 +53,9 @@ export declare class GraphQLService<T extends GraphQLParameters = GraphQLParamet
|
|
|
47
53
|
handler: Handler;
|
|
48
54
|
modelsMap: {};
|
|
49
55
|
app: Application;
|
|
56
|
+
wss: WebSocketServer;
|
|
57
|
+
wsHandler: GraphQLWSServer;
|
|
58
|
+
modelListeners: any;
|
|
50
59
|
loadParameters(params: DeepPartial<T>): GraphQLParameters;
|
|
51
60
|
/**
|
|
52
61
|
*
|
|
@@ -54,14 +63,17 @@ export declare class GraphQLService<T extends GraphQLParameters = GraphQLParamet
|
|
|
54
63
|
* @param definitions
|
|
55
64
|
* @returns
|
|
56
65
|
*/
|
|
57
|
-
getJsonSchemaDefinition(prop: JSONSchema7, definitions
|
|
66
|
+
getJsonSchemaDefinition(prop: JSONSchema7, definitions?: {}): JSONSchema7;
|
|
58
67
|
/**
|
|
59
68
|
*
|
|
60
69
|
* @param schema
|
|
61
70
|
* @param defaultName
|
|
62
71
|
* @returns
|
|
63
72
|
*/
|
|
64
|
-
getGraphQLSchemaFromSchema(schema: JSONSchema7, defaultName: string):
|
|
73
|
+
getGraphQLSchemaFromSchema(schema: JSONSchema7, defaultName: string, input?: boolean): {
|
|
74
|
+
type: GraphQLType;
|
|
75
|
+
description?: string;
|
|
76
|
+
};
|
|
65
77
|
/**
|
|
66
78
|
* Add the GraphQL schema results
|
|
67
79
|
* @param type
|
|
@@ -75,11 +87,19 @@ export declare class GraphQLService<T extends GraphQLParameters = GraphQLParamet
|
|
|
75
87
|
* @param webdaGraph
|
|
76
88
|
* @returns
|
|
77
89
|
*/
|
|
78
|
-
getGraphQLFieldsFromSchema(schema: JSONSchema7, defaultName: string, webdaGraph?: ModelGraph): any;
|
|
90
|
+
getGraphQLFieldsFromSchema(schema: JSONSchema7, defaultName: string, webdaGraph?: ModelGraph, input?: boolean): any;
|
|
91
|
+
/**
|
|
92
|
+
* Load model with filter on attributes
|
|
93
|
+
* @param knownFieldsOrId
|
|
94
|
+
* @param model
|
|
95
|
+
* @param context
|
|
96
|
+
* @param info
|
|
97
|
+
* @returns
|
|
98
|
+
*/
|
|
79
99
|
loadModelInstance(knownFieldsOrId: string | {
|
|
80
100
|
uuid: string;
|
|
81
101
|
[key: string]: any;
|
|
82
|
-
}, model: CoreModelDefinition, context: WebContext, info?: FieldNode): Promise<CoreModel | {
|
|
102
|
+
}, model: CoreModelDefinition, context: WebContext, info?: FieldNode, filter?: WebdaQL.PartialValidator): Promise<CoreModel | {
|
|
83
103
|
[key: string]: any;
|
|
84
104
|
uuid: string;
|
|
85
105
|
}>;
|
|
@@ -88,17 +108,48 @@ export declare class GraphQLService<T extends GraphQLParameters = GraphQLParamet
|
|
|
88
108
|
* @param context
|
|
89
109
|
*/
|
|
90
110
|
countOperation(context: WebContext, increment?: number): void;
|
|
111
|
+
resolve(): this;
|
|
91
112
|
/**
|
|
92
113
|
* Generate GraphQL schema
|
|
93
114
|
*/
|
|
94
115
|
generateSchema(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Return the events to subscribe to
|
|
118
|
+
* @param info
|
|
119
|
+
* @returns
|
|
120
|
+
*/
|
|
121
|
+
getSubscribedEvents(info: GraphQLResolveInfo): string[];
|
|
122
|
+
/**
|
|
123
|
+
*
|
|
124
|
+
* @param model
|
|
125
|
+
* @param arg1
|
|
126
|
+
* @param context
|
|
127
|
+
* @returns
|
|
128
|
+
*/
|
|
129
|
+
registerAsyncIteratorQuery(model: CoreModelDefinition<CoreModel>, plural: string, query: string, context: any): Promise<AsyncIterator<any>>;
|
|
130
|
+
/**
|
|
131
|
+
*
|
|
132
|
+
* @param model
|
|
133
|
+
* @param uuid
|
|
134
|
+
* @param context
|
|
135
|
+
* @returns
|
|
136
|
+
*/
|
|
137
|
+
registerAsyncIterator(model: CoreModelDefinition<CoreModel>, uuid: any, context: any, identifier?: string): Promise<AsyncIterator<any>>;
|
|
138
|
+
/**
|
|
139
|
+
*
|
|
140
|
+
* @param model
|
|
141
|
+
* @param uuid
|
|
142
|
+
* @param context
|
|
143
|
+
* @returns
|
|
144
|
+
*/
|
|
145
|
+
registerAsyncEventIterator(model: CoreModelDefinition<CoreModel>, uuid: string | null, events: string[], context: any, identifier: string): Promise<AsyncIterator<any>>;
|
|
95
146
|
/**
|
|
96
147
|
*
|
|
97
148
|
* @param rootFields
|
|
98
149
|
* @param mutation
|
|
99
150
|
* @returns
|
|
100
151
|
*/
|
|
101
|
-
getGraphQLSchema(rootFields: ThunkObjMap<GraphQLFieldConfig<any, any, any>>, mutations?: ThunkObjMap<GraphQLFieldConfig<any, any, any>>): GraphQLSchema;
|
|
152
|
+
getGraphQLSchema(rootFields: ThunkObjMap<GraphQLFieldConfig<any, any, any>>, mutations?: ThunkObjMap<GraphQLFieldConfig<any, any, any>>, subscription?: ThunkObjMap<GraphQLFieldConfig<any, any, any>>): GraphQLSchema;
|
|
102
153
|
/**
|
|
103
154
|
* @override
|
|
104
155
|
*/
|
package/lib/graphql.js
CHANGED
|
@@ -4,9 +4,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { DomainService, DomainServiceParameters, Route, WebdaError } from "@webda/core";
|
|
8
|
-
import {
|
|
7
|
+
import { Core, DomainService, DomainServiceParameters, Route, WebdaError, WebdaQL } from "@webda/core";
|
|
8
|
+
import { EventIterator, MergedIterator } from "@webda/runtime";
|
|
9
|
+
import { GraphQLBoolean, GraphQLError, GraphQLInputObjectType, GraphQLList, GraphQLObjectType, GraphQLSchema, GraphQLString, printSchema } from "graphql";
|
|
9
10
|
import { createHandler } from "graphql-http";
|
|
11
|
+
import { CloseCode, makeServer } from "graphql-ws";
|
|
12
|
+
import { nextTick } from "process";
|
|
13
|
+
import { WebSocketServer } from "ws";
|
|
14
|
+
import { AnyScalarType } from "./types/any.js";
|
|
15
|
+
import { DateScalar } from "./types/date.js";
|
|
16
|
+
import { GraphQLLong } from "./types/long.js";
|
|
10
17
|
const GraphIQL = `
|
|
11
18
|
<!doctype html>
|
|
12
19
|
<html lang="en">
|
|
@@ -56,7 +63,10 @@ const GraphIQL = `
|
|
|
56
63
|
src="https://unpkg.com/@graphiql/plugin-explorer/dist/index.umd.js"
|
|
57
64
|
crossorigin
|
|
58
65
|
></script>
|
|
59
|
-
|
|
66
|
+
<script
|
|
67
|
+
src="https://unpkg.com/graphql-ws/umd/graphql-ws.min.js"
|
|
68
|
+
type="application/javascript"
|
|
69
|
+
></script>
|
|
60
70
|
<link
|
|
61
71
|
rel="stylesheet"
|
|
62
72
|
href="https://unpkg.com/@graphiql/plugin-explorer/dist/style.css"
|
|
@@ -69,6 +79,7 @@ const GraphIQL = `
|
|
|
69
79
|
const root = ReactDOM.createRoot(document.getElementById('graphiql'));
|
|
70
80
|
const fetcher = GraphiQL.createFetcher({
|
|
71
81
|
url: '{{URL}}',
|
|
82
|
+
subscriptionUrl: '{{WSURL}}',
|
|
72
83
|
headers: { 'X-GraphiQL-Schema': 'true' },
|
|
73
84
|
});
|
|
74
85
|
const explorerPlugin = GraphiQLPluginExplorer.explorerPlugin();
|
|
@@ -93,6 +104,7 @@ export class GraphQLParameters extends DomainServiceParameters {
|
|
|
93
104
|
this.maxOperationsPerRequest ?? (this.maxOperationsPerRequest = 10);
|
|
94
105
|
this.userModel ?? (this.userModel = "User");
|
|
95
106
|
this.exposeMe ?? (this.exposeMe = true);
|
|
107
|
+
this.globalSubscription ?? (this.globalSubscription = true);
|
|
96
108
|
}
|
|
97
109
|
}
|
|
98
110
|
/**
|
|
@@ -113,7 +125,7 @@ export class GraphQLService extends DomainService {
|
|
|
113
125
|
* @param definitions
|
|
114
126
|
* @returns
|
|
115
127
|
*/
|
|
116
|
-
getJsonSchemaDefinition(prop, definitions) {
|
|
128
|
+
getJsonSchemaDefinition(prop, definitions = {}) {
|
|
117
129
|
if (prop?.type) {
|
|
118
130
|
if (prop.type === "array" && prop.items["$ref"]) {
|
|
119
131
|
prop.items = this.getJsonSchemaDefinition(prop.items, definitions);
|
|
@@ -131,38 +143,50 @@ export class GraphQLService extends DomainService {
|
|
|
131
143
|
* @param defaultName
|
|
132
144
|
* @returns
|
|
133
145
|
*/
|
|
134
|
-
getGraphQLSchemaFromSchema(schema, defaultName) {
|
|
146
|
+
getGraphQLSchemaFromSchema(schema, defaultName, input) {
|
|
135
147
|
let type;
|
|
136
148
|
if (!schema || !schema.type) {
|
|
137
|
-
|
|
149
|
+
type = AnyScalarType;
|
|
138
150
|
}
|
|
139
151
|
else if (schema.type === "string") {
|
|
140
|
-
|
|
152
|
+
if (schema.format === "date-time") {
|
|
153
|
+
type = DateScalar;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
type = GraphQLString;
|
|
157
|
+
}
|
|
141
158
|
}
|
|
142
159
|
else if (schema.type === "boolean") {
|
|
143
160
|
type = GraphQLBoolean;
|
|
144
161
|
}
|
|
145
162
|
else if (schema.type === "array") {
|
|
146
|
-
type = new GraphQLList(this.getGraphQLSchemaFromSchema(schema.items, schema.title || defaultName)?.type ||
|
|
163
|
+
type = new GraphQLList(this.getGraphQLSchemaFromSchema(schema.items, schema.title || defaultName, input)?.type ||
|
|
164
|
+
GraphQLString);
|
|
147
165
|
}
|
|
148
166
|
else if (schema.type === "integer" || schema.type === "number") {
|
|
149
|
-
|
|
167
|
+
// Use long to handle 2^52
|
|
168
|
+
type = GraphQLLong;
|
|
150
169
|
}
|
|
151
170
|
else if (schema.type === "null") {
|
|
152
171
|
return undefined;
|
|
153
172
|
}
|
|
154
173
|
else if (schema.type === "object") {
|
|
155
174
|
const fields = {};
|
|
175
|
+
// Map does not fit well with graphql
|
|
176
|
+
if (!schema.properties) {
|
|
177
|
+
return { type: AnyScalarType, description: "Map" };
|
|
178
|
+
}
|
|
156
179
|
for (let i in schema.properties) {
|
|
157
|
-
let res = this.getGraphQLSchemaFromSchema(this.getJsonSchemaDefinition(schema.properties[i], schema.definitions), `${schema.title || defaultName}_${i}
|
|
180
|
+
let res = this.getGraphQLSchemaFromSchema(this.getJsonSchemaDefinition(schema.properties[i], schema.definitions), `${schema.title || defaultName}_${i}`, input);
|
|
158
181
|
if (!res)
|
|
159
182
|
continue;
|
|
160
183
|
fields[i] = res;
|
|
161
184
|
}
|
|
162
185
|
if (Object.keys(fields).length === 0) {
|
|
163
|
-
|
|
186
|
+
this.log("DEBUG", "Return map for", defaultName, "because no fields");
|
|
187
|
+
return { type: AnyScalarType, description: "Map" };
|
|
164
188
|
}
|
|
165
|
-
type = new GraphQLObjectType({
|
|
189
|
+
type = new (input ? GraphQLInputObjectType : GraphQLObjectType)({
|
|
166
190
|
fields,
|
|
167
191
|
name: schema.title || defaultName
|
|
168
192
|
});
|
|
@@ -197,7 +221,7 @@ export class GraphQLService extends DomainService {
|
|
|
197
221
|
* @param webdaGraph
|
|
198
222
|
* @returns
|
|
199
223
|
*/
|
|
200
|
-
getGraphQLFieldsFromSchema(schema, defaultName, webdaGraph) {
|
|
224
|
+
getGraphQLFieldsFromSchema(schema, defaultName, webdaGraph, input) {
|
|
201
225
|
const fields = {};
|
|
202
226
|
const skipFields = [];
|
|
203
227
|
const attributeFilter = (skip = false) => info => {
|
|
@@ -207,7 +231,7 @@ export class GraphQLService extends DomainService {
|
|
|
207
231
|
}
|
|
208
232
|
return this.modelsMap[info.model];
|
|
209
233
|
};
|
|
210
|
-
if (webdaGraph) {
|
|
234
|
+
if (webdaGraph && !input) {
|
|
211
235
|
// In graphql parent should not be displayed
|
|
212
236
|
if (webdaGraph.parent) {
|
|
213
237
|
fields[webdaGraph.parent.attribute] = {
|
|
@@ -239,7 +263,8 @@ export class GraphQLService extends DomainService {
|
|
|
239
263
|
}
|
|
240
264
|
},
|
|
241
265
|
resolve: async (source, args, context, info) => {
|
|
242
|
-
|
|
266
|
+
let src = link.type === "LINKS_MAP" ? Object.values(source[link.attribute]) : source[link.attribute];
|
|
267
|
+
return (await Promise.all(src.map(i => this.loadModelInstance(i, this.getWebda().getModel(link.model), context, info.fieldNodes.find(node => node.name.value === link.attribute), args.filter ? new WebdaQL.PartialValidator(WebdaQL.unsanitize(args.filter)) : undefined)))).filter(i => i !== null);
|
|
243
268
|
}
|
|
244
269
|
};
|
|
245
270
|
}
|
|
@@ -254,7 +279,7 @@ export class GraphQLService extends DomainService {
|
|
|
254
279
|
},
|
|
255
280
|
resolve: async (source, args, context, info) => {
|
|
256
281
|
let modelDefinition = this.app.getModel(map.model);
|
|
257
|
-
return Promise.all(source[map.attribute].map(i => this.loadModelInstance(i, modelDefinition, context, info.fieldNodes.find(node => node.name.value === map.attribute))));
|
|
282
|
+
return (await Promise.all(source[map.attribute].map(i => this.loadModelInstance(i, modelDefinition, context, info.fieldNodes.find(node => node.name.value === map.attribute), args.filter ? new WebdaQL.PartialValidator(WebdaQL.unsanitize(args.filter)) : undefined)))).filter(i => i !== null);
|
|
258
283
|
}
|
|
259
284
|
};
|
|
260
285
|
});
|
|
@@ -267,7 +292,7 @@ export class GraphQLService extends DomainService {
|
|
|
267
292
|
}
|
|
268
293
|
},
|
|
269
294
|
resolve: async (source, args, context, info) => {
|
|
270
|
-
let res = await source[query.attribute].query(args.query, context);
|
|
295
|
+
let res = await source[query.attribute].query(WebdaQL.unsanitize(args.query || ""), context);
|
|
271
296
|
this.countOperation(context, res.results.length);
|
|
272
297
|
return res;
|
|
273
298
|
}
|
|
@@ -276,10 +301,10 @@ export class GraphQLService extends DomainService {
|
|
|
276
301
|
}
|
|
277
302
|
for (let i in schema.properties) {
|
|
278
303
|
// Was initiated by the known graph
|
|
279
|
-
if (fields[i] || skipFields.includes(i)) {
|
|
304
|
+
if (fields[i] || skipFields.includes(i) || (schema.properties[i].readOnly && input)) {
|
|
280
305
|
continue;
|
|
281
306
|
}
|
|
282
|
-
let prop = this.getGraphQLSchemaFromSchema(this.getJsonSchemaDefinition(schema.properties[i], schema.definitions), `${defaultName}_${i}
|
|
307
|
+
let prop = this.getGraphQLSchemaFromSchema(this.getJsonSchemaDefinition(schema.properties[i], schema.definitions), `${defaultName}_${i}`, input);
|
|
283
308
|
if (!prop) {
|
|
284
309
|
continue;
|
|
285
310
|
}
|
|
@@ -287,8 +312,19 @@ export class GraphQLService extends DomainService {
|
|
|
287
312
|
}
|
|
288
313
|
return fields;
|
|
289
314
|
}
|
|
290
|
-
|
|
315
|
+
/**
|
|
316
|
+
* Load model with filter on attributes
|
|
317
|
+
* @param knownFieldsOrId
|
|
318
|
+
* @param model
|
|
319
|
+
* @param context
|
|
320
|
+
* @param info
|
|
321
|
+
* @returns
|
|
322
|
+
*/
|
|
323
|
+
async loadModelInstance(knownFieldsOrId, model, context, info, filter) {
|
|
291
324
|
let res = typeof knownFieldsOrId === "string" ? { uuid: knownFieldsOrId } : knownFieldsOrId;
|
|
325
|
+
if (filter && !filter.eval(res)) {
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
292
328
|
let operation =
|
|
293
329
|
// Check if we have a valid selection set
|
|
294
330
|
info === undefined ||
|
|
@@ -303,7 +339,7 @@ export class GraphQLService extends DomainService {
|
|
|
303
339
|
}
|
|
304
340
|
}
|
|
305
341
|
// We already know the whole answer so no more request needed
|
|
306
|
-
if (!operation) {
|
|
342
|
+
if (!operation && (!filter || !filter.wasPartialMatch())) {
|
|
307
343
|
return res;
|
|
308
344
|
}
|
|
309
345
|
// Count the operation then and retrieve the model
|
|
@@ -323,6 +359,9 @@ export class GraphQLService extends DomainService {
|
|
|
323
359
|
}
|
|
324
360
|
});
|
|
325
361
|
}
|
|
362
|
+
if (filter && !filter.eval(modelInstance, false)) {
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
326
365
|
return modelInstance;
|
|
327
366
|
}
|
|
328
367
|
/**
|
|
@@ -331,23 +370,46 @@ export class GraphQLService extends DomainService {
|
|
|
331
370
|
*/
|
|
332
371
|
countOperation(context, increment = 1) {
|
|
333
372
|
let ext = context.getExtension("graphql");
|
|
334
|
-
if (ext
|
|
373
|
+
if (ext?.count === this.parameters.maxOperationsPerRequest) {
|
|
335
374
|
throw new GraphQLError("Too many operations", {
|
|
336
375
|
extensions: {
|
|
337
376
|
code: "TOO_MANY_OPERATIONS"
|
|
338
377
|
}
|
|
339
378
|
});
|
|
340
379
|
}
|
|
341
|
-
ext
|
|
380
|
+
if (ext) {
|
|
381
|
+
ext.count ?? (ext.count = 0);
|
|
382
|
+
ext.count += increment;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
resolve() {
|
|
386
|
+
super.resolve();
|
|
387
|
+
// Set-up ws server
|
|
388
|
+
this.wss = new WebSocketServer({ noServer: true });
|
|
389
|
+
this.getWebda().on("Webda.Init.Http", (http) => {
|
|
390
|
+
http.on("upgrade", (req, socket, head) => {
|
|
391
|
+
if (req.url === this.parameters.url) {
|
|
392
|
+
(async () => {
|
|
393
|
+
req.webdaContext ?? (req.webdaContext = await Core.get().getContextFromRequest(req));
|
|
394
|
+
await req.webdaContext.init();
|
|
395
|
+
this.wss.handleUpgrade(req, socket, head, ws => {
|
|
396
|
+
this.wss.emit("connection", ws, req);
|
|
397
|
+
});
|
|
398
|
+
})();
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
return this;
|
|
342
403
|
}
|
|
343
404
|
/**
|
|
344
405
|
* Generate GraphQL schema
|
|
345
406
|
*/
|
|
346
407
|
generateSchema() {
|
|
347
408
|
const rootFields = {};
|
|
409
|
+
const mutations = {};
|
|
410
|
+
const subscriptions = {};
|
|
348
411
|
const models = this.app.getModels();
|
|
349
412
|
const graph = this.app.getGraph();
|
|
350
|
-
const roots = this.app.getRootExposedModels();
|
|
351
413
|
this.modelsMap = {};
|
|
352
414
|
for (let i in models) {
|
|
353
415
|
const model = models[i];
|
|
@@ -365,29 +427,164 @@ export class GraphQLService extends DomainService {
|
|
|
365
427
|
fields: () => this.getGraphQLFieldsFromSchema(schema, name, graph[i]),
|
|
366
428
|
name
|
|
367
429
|
});
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
if (!
|
|
373
|
-
|
|
430
|
+
let input = new GraphQLInputObjectType({
|
|
431
|
+
fields: this.getGraphQLFieldsFromSchema(schema, name + "Input", graph[i], true),
|
|
432
|
+
name: name + "Input"
|
|
433
|
+
});
|
|
434
|
+
if (!model.Expose.restrict.create) {
|
|
435
|
+
mutations[`create${name}`] = {
|
|
436
|
+
type: this.modelsMap[i],
|
|
437
|
+
args: {
|
|
438
|
+
[name]: { type: input }
|
|
439
|
+
},
|
|
440
|
+
resolve: async (_, args, context) => {
|
|
441
|
+
let object = new model().load(args[name]);
|
|
442
|
+
this.log("INFO", "Create", object, context.getCurrentUserId());
|
|
443
|
+
if ((await object.canAct(context, "create")) !== true) {
|
|
444
|
+
throw new GraphQLError("Permission denied", {
|
|
445
|
+
extensions: {
|
|
446
|
+
code: "PERMISSION_DENIED"
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
await object.save();
|
|
451
|
+
return object;
|
|
452
|
+
}
|
|
453
|
+
};
|
|
374
454
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
455
|
+
if (!model.Expose.restrict.update) {
|
|
456
|
+
mutations[`update${name}`] = {
|
|
457
|
+
type: this.modelsMap[i],
|
|
458
|
+
args: {
|
|
459
|
+
[name]: { type: input },
|
|
460
|
+
uuid: {
|
|
461
|
+
type: GraphQLString
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
resolve: async (_, args, context) => {
|
|
465
|
+
let object = await model.ref(args.uuid).get();
|
|
466
|
+
if ((await object?.canAct(context, "update")) !== true) {
|
|
467
|
+
throw new GraphQLError("Permission denied", {
|
|
468
|
+
extensions: {
|
|
469
|
+
code: "PERMISSION_DENIED"
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
return object.load(args[name]).save();
|
|
474
|
+
}
|
|
475
|
+
};
|
|
379
476
|
}
|
|
380
|
-
|
|
477
|
+
// check for actions
|
|
478
|
+
if (!model.Expose.restrict.delete) {
|
|
479
|
+
mutations[`delete${name}`] = {
|
|
480
|
+
type: new GraphQLObjectType({ name: `delete${name}`, fields: { success: { type: GraphQLBoolean } } }),
|
|
481
|
+
args: {
|
|
482
|
+
uuid: {
|
|
483
|
+
type: GraphQLString
|
|
484
|
+
}
|
|
485
|
+
},
|
|
486
|
+
resolve: async (_, args, context) => {
|
|
487
|
+
let object = await model.ref(args.uuid).get();
|
|
488
|
+
if ((await object?.canAct(context, "delete")) !== true) {
|
|
489
|
+
throw new GraphQLError("Permission denied", {
|
|
490
|
+
extensions: {
|
|
491
|
+
code: "PERMISSION_DENIED"
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
await object.delete();
|
|
496
|
+
return {
|
|
497
|
+
success: true
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
// Retrieval
|
|
503
|
+
let plural = this.transformName(this.app.getModelPlural(i).split("/").pop());
|
|
504
|
+
rootFields[plural] = {
|
|
381
505
|
type: this.getGraphQLQueryResult(this.modelsMap[i]),
|
|
382
506
|
args: {
|
|
383
507
|
query: {
|
|
384
|
-
type: GraphQLString
|
|
508
|
+
type: GraphQLString,
|
|
509
|
+
defaultValue: ""
|
|
385
510
|
}
|
|
386
511
|
},
|
|
387
512
|
resolve: async (_, args, context) => {
|
|
388
|
-
return await model.query(args.query || "", true, context);
|
|
513
|
+
return await model.query(WebdaQL.unsanitize(args.query || ""), true, context);
|
|
514
|
+
},
|
|
515
|
+
subscribe: async (_source, args, context) => {
|
|
516
|
+
this.log("DEBUG", "Subscription called on", args);
|
|
517
|
+
return this.registerAsyncIteratorQuery(model, plural, WebdaQL.unsanitize(args.query || ""), context);
|
|
389
518
|
}
|
|
390
519
|
};
|
|
520
|
+
/**
|
|
521
|
+
* Subscription for a specific object
|
|
522
|
+
*/
|
|
523
|
+
subscriptions[this.transformName(i.split("/").pop())] = {
|
|
524
|
+
type: this.modelsMap[i],
|
|
525
|
+
args: {
|
|
526
|
+
[model.getUuidField()]: {
|
|
527
|
+
type: GraphQLString
|
|
528
|
+
}
|
|
529
|
+
},
|
|
530
|
+
subscribe: async (_source, args, context) => {
|
|
531
|
+
this.log("DEBUG", "Subscription called on", args);
|
|
532
|
+
return this.registerAsyncIterator(model, args[model.getUuidField()], context);
|
|
533
|
+
}
|
|
534
|
+
};
|
|
535
|
+
const events = model.getClientEvents();
|
|
536
|
+
const modelEvents = events
|
|
537
|
+
.filter(e => typeof e !== "string" && e.global)
|
|
538
|
+
.map((e) => e.name);
|
|
539
|
+
const instanceEvents = events
|
|
540
|
+
.filter(e => typeof e === "string" || !e.global)
|
|
541
|
+
.map(e => (typeof e === "string" ? e : e.name));
|
|
542
|
+
if (modelEvents.length) {
|
|
543
|
+
const eventTypes = {};
|
|
544
|
+
modelEvents.forEach(e => {
|
|
545
|
+
eventTypes[e] = {
|
|
546
|
+
type: AnyScalarType
|
|
547
|
+
};
|
|
548
|
+
});
|
|
549
|
+
eventTypes["latestEventTime"] = { type: GraphQLLong };
|
|
550
|
+
/**
|
|
551
|
+
* Subscription for all events on a class of objects
|
|
552
|
+
*/
|
|
553
|
+
subscriptions[plural + "Events"] = {
|
|
554
|
+
type: new GraphQLObjectType({ fields: eventTypes, name: plural + "Events" }),
|
|
555
|
+
subscribe: async (_source, args, context, info) => {
|
|
556
|
+
let subscribedEvents = this.getSubscribedEvents(info);
|
|
557
|
+
this.log("DEBUG", "Subscription called on", model, args[model.getUuidField()], subscribedEvents);
|
|
558
|
+
return this.registerAsyncEventIterator(model, null, subscribedEvents, context, plural + "Events");
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
if (instanceEvents.length) {
|
|
563
|
+
const eventTypes = {};
|
|
564
|
+
instanceEvents.forEach(e => {
|
|
565
|
+
eventTypes[e] = { type: AnyScalarType };
|
|
566
|
+
});
|
|
567
|
+
eventTypes["latestEventTime"] = { type: GraphQLLong };
|
|
568
|
+
/**
|
|
569
|
+
* Subscription for event on a specific object
|
|
570
|
+
*/
|
|
571
|
+
subscriptions[this.transformName(i.split("/").pop()) + "Events"] = {
|
|
572
|
+
type: new GraphQLObjectType({ fields: eventTypes, name: this.transformName(i.split("/").pop()) + "Events2" }),
|
|
573
|
+
args: {
|
|
574
|
+
[model.getUuidField()]: {
|
|
575
|
+
type: GraphQLString
|
|
576
|
+
}
|
|
577
|
+
},
|
|
578
|
+
subscribe: async (_source, args, context, info) => {
|
|
579
|
+
let subscribedEvents = this.getSubscribedEvents(info);
|
|
580
|
+
this.log("DEBUG", "Subscription called on", model, args[model.getUuidField()], subscribedEvents);
|
|
581
|
+
return this.registerAsyncEventIterator(model, args[model.getUuidField()], subscribedEvents, context, this.transformName(i.split("/").pop()) + "Events");
|
|
582
|
+
}
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Query for a specific object
|
|
587
|
+
*/
|
|
391
588
|
rootFields[this.transformName(i.split("/").pop())] = {
|
|
392
589
|
type: this.modelsMap[i],
|
|
393
590
|
args: {
|
|
@@ -395,9 +592,9 @@ export class GraphQLService extends DomainService {
|
|
|
395
592
|
type: GraphQLString
|
|
396
593
|
}
|
|
397
594
|
},
|
|
398
|
-
resolve: async (
|
|
595
|
+
resolve: async (_source, args, context, _info) => {
|
|
399
596
|
this.countOperation(context);
|
|
400
|
-
return this.loadModelInstance(args.
|
|
597
|
+
return this.loadModelInstance(args[model.getUuidField()] || "", model, context);
|
|
401
598
|
}
|
|
402
599
|
};
|
|
403
600
|
}
|
|
@@ -413,12 +610,214 @@ export class GraphQLService extends DomainService {
|
|
|
413
610
|
return context.getCurrentUser();
|
|
414
611
|
}
|
|
415
612
|
};
|
|
613
|
+
subscriptions["Me"] = {
|
|
614
|
+
type: this.modelsMap[userGraph],
|
|
615
|
+
subscribe: async (_source, _args, context) => {
|
|
616
|
+
if (!context.getCurrentUserId()) {
|
|
617
|
+
throw new GraphQLError("Permission denied", {
|
|
618
|
+
extensions: {
|
|
619
|
+
code: "PERMISSION_DENIED"
|
|
620
|
+
}
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
const user = await context.getCurrentUser();
|
|
624
|
+
return this.registerAsyncIterator(user.__class, context.getCurrentUserId(), context, "Me");
|
|
625
|
+
}
|
|
626
|
+
};
|
|
627
|
+
const events = model.getClientEvents();
|
|
628
|
+
const instanceEvents = events
|
|
629
|
+
.filter(e => typeof e === "string" || !e.global)
|
|
630
|
+
.map(e => (typeof e === "string" ? e : e.name));
|
|
631
|
+
if (instanceEvents.length) {
|
|
632
|
+
const eventTypes = {};
|
|
633
|
+
instanceEvents.forEach(e => {
|
|
634
|
+
eventTypes[e] = { type: AnyScalarType };
|
|
635
|
+
});
|
|
636
|
+
subscriptions["MeEvents"] = {
|
|
637
|
+
type: new GraphQLObjectType({ fields: eventTypes, name: "MeEvents" }),
|
|
638
|
+
subscribe: async (_source, args, context, info) => {
|
|
639
|
+
if (!context.getCurrentUserId()) {
|
|
640
|
+
throw new GraphQLError("Permission denied", {
|
|
641
|
+
extensions: {
|
|
642
|
+
code: "PERMISSION_DENIED"
|
|
643
|
+
}
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
const subscribedEvents = (info.fieldNodes[0].selectionSet?.selections || [])
|
|
647
|
+
.filter(node => node.kind === "Field")
|
|
648
|
+
.map(n => n.name.value);
|
|
649
|
+
const user = await context.getCurrentUser();
|
|
650
|
+
return this.registerAsyncEventIterator(user.__class, context.getCurrentUserId(), subscribedEvents, context, "MeEvents");
|
|
651
|
+
}
|
|
652
|
+
};
|
|
653
|
+
}
|
|
416
654
|
}
|
|
417
655
|
else {
|
|
418
656
|
this.log("WARN", "Cannot expose me, user model is not exposed or get is restricted or type is not unavailable");
|
|
419
657
|
}
|
|
420
658
|
}
|
|
421
|
-
|
|
659
|
+
// Copy the rootFields without resolver
|
|
660
|
+
for (let i in rootFields) {
|
|
661
|
+
subscriptions[i] ?? (subscriptions[i] = { ...rootFields[i], resolve: undefined });
|
|
662
|
+
}
|
|
663
|
+
if (this.parameters.globalSubscription) {
|
|
664
|
+
// Create global type based on all previous subscriptions
|
|
665
|
+
subscriptions["Aggregate"] = {
|
|
666
|
+
type: new GraphQLObjectType({
|
|
667
|
+
fields: subscriptions,
|
|
668
|
+
name: "AggregateSubscriptions"
|
|
669
|
+
}),
|
|
670
|
+
subscribe: async (_source, args2, context, info) => {
|
|
671
|
+
let iterators = {};
|
|
672
|
+
let p = [];
|
|
673
|
+
// Check if know all fields already
|
|
674
|
+
for (let field of (info.fieldNodes[0].selectionSet?.selections || []).filter(node => node.kind === "Field")) {
|
|
675
|
+
const name = field.name.value;
|
|
676
|
+
const args = {};
|
|
677
|
+
field.arguments?.forEach(arg => {
|
|
678
|
+
// @ts-ignore
|
|
679
|
+
args[arg.name.value] = arg.value.value;
|
|
680
|
+
});
|
|
681
|
+
p.push((async () => {
|
|
682
|
+
iterators[name] = await subscriptions[name].subscribe(_source, args, context, {
|
|
683
|
+
fieldNodes: [field] // Abusing a bit the builder currently
|
|
684
|
+
});
|
|
685
|
+
})());
|
|
686
|
+
}
|
|
687
|
+
await Promise.all(p);
|
|
688
|
+
return MergedIterator.iterate({
|
|
689
|
+
Aggregate: MergedIterator.iterate(iterators, true, data => {
|
|
690
|
+
return Object.values(data).pop();
|
|
691
|
+
})
|
|
692
|
+
});
|
|
693
|
+
}
|
|
694
|
+
};
|
|
695
|
+
}
|
|
696
|
+
this.schema = this.getGraphQLSchema(rootFields, mutations, subscriptions);
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* Return the events to subscribe to
|
|
700
|
+
* @param info
|
|
701
|
+
* @returns
|
|
702
|
+
*/
|
|
703
|
+
getSubscribedEvents(info) {
|
|
704
|
+
return (info.fieldNodes[0].selectionSet?.selections || [])
|
|
705
|
+
.filter(node => node.kind === "Field" && node.name.value !== "latestEventTime")
|
|
706
|
+
.map(n => n.name.value);
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
*
|
|
710
|
+
* @param model
|
|
711
|
+
* @param arg1
|
|
712
|
+
* @param context
|
|
713
|
+
* @returns
|
|
714
|
+
*/
|
|
715
|
+
async registerAsyncIteratorQuery(model, plural, query, context) {
|
|
716
|
+
let result = await model.query(query, true, context);
|
|
717
|
+
let queryInfo = new WebdaQL.QueryValidator(query);
|
|
718
|
+
const updatedCallback = async (evt) => {
|
|
719
|
+
this.log("INFO", "Event from", evt.emitterId, evt.object_id);
|
|
720
|
+
if (!result.results.find(e => evt.object_id === e.getUuid()))
|
|
721
|
+
return;
|
|
722
|
+
// We rely on the cache of the store to get the full object
|
|
723
|
+
// We let the other listeners finish before returning the object
|
|
724
|
+
await new Promise(resolve => nextTick(resolve));
|
|
725
|
+
return {
|
|
726
|
+
continuationToken: result.continuationToken,
|
|
727
|
+
results: await Promise.all(result.results.map(r => (r.getUuid() === evt.object_id ? model.ref(evt.object_id).get() : r)))
|
|
728
|
+
};
|
|
729
|
+
};
|
|
730
|
+
const events = {
|
|
731
|
+
"Store.Updated": updatedCallback,
|
|
732
|
+
// Deleted is different as we need to return null
|
|
733
|
+
"Store.Deleted": async (evt) => {
|
|
734
|
+
if (!result.results.find(e => evt.object_id === e.getUuid()))
|
|
735
|
+
return;
|
|
736
|
+
result = await model.query(query, true, context);
|
|
737
|
+
return result;
|
|
738
|
+
},
|
|
739
|
+
"Store.Saved": async (evt) => {
|
|
740
|
+
// If object match the query and is not in the result and can be read by the user
|
|
741
|
+
if (queryInfo.eval(evt.object) && !queryInfo.getOffset() && evt.object.canAct(context, "get")) {
|
|
742
|
+
// Should check with the order by of the query to see if we need to recompute
|
|
743
|
+
result = await model.query(query, true, context);
|
|
744
|
+
return result;
|
|
745
|
+
}
|
|
746
|
+
return;
|
|
747
|
+
},
|
|
748
|
+
"Store.PatchUpdated": updatedCallback,
|
|
749
|
+
"Store.PartialUpdated": updatedCallback
|
|
750
|
+
};
|
|
751
|
+
return new EventIterator(model.store(), events, plural, result).iterate();
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
*
|
|
755
|
+
* @param model
|
|
756
|
+
* @param uuid
|
|
757
|
+
* @param context
|
|
758
|
+
* @returns
|
|
759
|
+
*/
|
|
760
|
+
async registerAsyncIterator(model, uuid, context, identifier) {
|
|
761
|
+
const updatedCallback = async (evt) => {
|
|
762
|
+
this.log("INFO", "Event from", evt.emitterId, evt.object_id);
|
|
763
|
+
if (evt.object_id !== uuid)
|
|
764
|
+
return;
|
|
765
|
+
// We rely on the cache of the store to get the full object
|
|
766
|
+
// We let the other listeners finish before returning the object
|
|
767
|
+
await new Promise(resolve => nextTick(resolve));
|
|
768
|
+
return model.ref(evt.object_id).get();
|
|
769
|
+
};
|
|
770
|
+
const events = {
|
|
771
|
+
"Store.Updated": updatedCallback,
|
|
772
|
+
// Deleted is different as we need to return null
|
|
773
|
+
"Store.Deleted": evt => {
|
|
774
|
+
if (evt.object_id !== uuid)
|
|
775
|
+
return;
|
|
776
|
+
return null;
|
|
777
|
+
},
|
|
778
|
+
"Store.PatchUpdated": updatedCallback,
|
|
779
|
+
"Store.PartialUpdated": updatedCallback
|
|
780
|
+
};
|
|
781
|
+
let modelInstance = await model.ref(uuid).get();
|
|
782
|
+
// Ensure we have the permission to get the object
|
|
783
|
+
if ((await modelInstance?.canAct(context, "get")) !== true) {
|
|
784
|
+
throw new GraphQLError("Permission denied", {
|
|
785
|
+
extensions: {
|
|
786
|
+
code: "PERMISSION_DENIED"
|
|
787
|
+
}
|
|
788
|
+
});
|
|
789
|
+
}
|
|
790
|
+
return new EventIterator(model.store(), events, identifier || model.getIdentifier(), modelInstance).iterate();
|
|
791
|
+
}
|
|
792
|
+
/**
|
|
793
|
+
*
|
|
794
|
+
* @param model
|
|
795
|
+
* @param uuid
|
|
796
|
+
* @param context
|
|
797
|
+
* @returns
|
|
798
|
+
*/
|
|
799
|
+
async registerAsyncEventIterator(model, uuid, events, context, identifier) {
|
|
800
|
+
const updatedCallback = eventName => async (evt) => {
|
|
801
|
+
if (uuid === null || evt.object_id !== uuid)
|
|
802
|
+
return;
|
|
803
|
+
// We rely on the cache of the store to get the full object
|
|
804
|
+
// We let the other listeners finish before returning the object
|
|
805
|
+
return { latestEventTime: Date.now(), [eventName]: evt };
|
|
806
|
+
};
|
|
807
|
+
const eventsMap = {};
|
|
808
|
+
let modelInstance = uuid !== null ? await model.ref(uuid).get() : undefined;
|
|
809
|
+
events
|
|
810
|
+
.filter(e => model.authorizeClientEvent(e, context, modelInstance))
|
|
811
|
+
.forEach(e => (eventsMap[e] = updatedCallback(e)));
|
|
812
|
+
// Ensure we have the permission to listen to the object
|
|
813
|
+
if (Object.keys(eventsMap).length === 0) {
|
|
814
|
+
throw new GraphQLError("Permission denied", {
|
|
815
|
+
extensions: {
|
|
816
|
+
code: "PERMISSION_DENIED"
|
|
817
|
+
}
|
|
818
|
+
});
|
|
819
|
+
}
|
|
820
|
+
return new EventIterator(model.store(), eventsMap, identifier, { logout: { evt: "nok?" } }).iterate();
|
|
422
821
|
}
|
|
423
822
|
/**
|
|
424
823
|
*
|
|
@@ -426,11 +825,12 @@ export class GraphQLService extends DomainService {
|
|
|
426
825
|
* @param mutation
|
|
427
826
|
* @returns
|
|
428
827
|
*/
|
|
429
|
-
getGraphQLSchema(rootFields, mutations = {}) {
|
|
828
|
+
getGraphQLSchema(rootFields, mutations = {}, subscription = {}) {
|
|
430
829
|
// Emit Webda.GraphQL.Schema to allow other services to contribute
|
|
431
830
|
this.emit("Webda.GraphQL.Schema", {
|
|
432
831
|
rootFields,
|
|
433
|
-
mutations
|
|
832
|
+
mutations,
|
|
833
|
+
subscription
|
|
434
834
|
});
|
|
435
835
|
return new GraphQLSchema({
|
|
436
836
|
query: new GraphQLObjectType({
|
|
@@ -438,6 +838,9 @@ export class GraphQLService extends DomainService {
|
|
|
438
838
|
fields: rootFields
|
|
439
839
|
}),
|
|
440
840
|
types: Object.values(this.modelsMap),
|
|
841
|
+
subscription: Object.keys({ ...subscription }).length > 0
|
|
842
|
+
? new GraphQLObjectType({ fields: { ...subscription }, name: "Subscription" })
|
|
843
|
+
: null,
|
|
441
844
|
mutation: Object.keys(mutations).length > 0 ? new GraphQLObjectType({ fields: mutations, name: "Mutations" }) : null
|
|
442
845
|
});
|
|
443
846
|
}
|
|
@@ -458,6 +861,46 @@ export class GraphQLService extends DomainService {
|
|
|
458
861
|
return req.context;
|
|
459
862
|
}
|
|
460
863
|
});
|
|
864
|
+
// Define the mechanism to handle the websocket
|
|
865
|
+
this.wsHandler = makeServer({
|
|
866
|
+
schema: this.schema,
|
|
867
|
+
context: async (req) => {
|
|
868
|
+
// @ts-ignore
|
|
869
|
+
return req.extra?.context || {};
|
|
870
|
+
}
|
|
871
|
+
});
|
|
872
|
+
this.wss.on("connection", async (socket, request) => {
|
|
873
|
+
// a new socket opened, let graphql-ws take over
|
|
874
|
+
const closed = this.wsHandler.opened({
|
|
875
|
+
protocol: socket.protocol, // will be validated
|
|
876
|
+
send: data => new Promise((resolve, reject) => {
|
|
877
|
+
socket.send(data, err => (err ? reject(err) : resolve()));
|
|
878
|
+
}), // control your data flow by timing the promise resolve
|
|
879
|
+
close: (code, reason) => socket.close(code, reason), // there are protocol standard closures
|
|
880
|
+
onMessage: cb => socket.on("message", async (event) => {
|
|
881
|
+
try {
|
|
882
|
+
// wait for the the operation to complete
|
|
883
|
+
// - if init message, waits for connect
|
|
884
|
+
// - if query/mutation, waits for result
|
|
885
|
+
// - if subscription, waits for complete
|
|
886
|
+
await cb(event.toString());
|
|
887
|
+
}
|
|
888
|
+
catch (err) {
|
|
889
|
+
// all errors that could be thrown during the
|
|
890
|
+
// execution of operations will be caught here
|
|
891
|
+
socket.close(CloseCode.InternalServerError, err.message);
|
|
892
|
+
}
|
|
893
|
+
})
|
|
894
|
+
},
|
|
895
|
+
// pass values to the `extra` field in the context
|
|
896
|
+
{ socket, request, context: request.webdaContext });
|
|
897
|
+
this.log("INFO", "Socket once closed");
|
|
898
|
+
// notify server that the socket closed
|
|
899
|
+
socket.once("close", (code, reason) => {
|
|
900
|
+
this.log("INFO", "Socket closed - clean up Iterators");
|
|
901
|
+
closed(code, reason.toString());
|
|
902
|
+
});
|
|
903
|
+
});
|
|
461
904
|
return this;
|
|
462
905
|
}
|
|
463
906
|
handleModel(model, name, context) {
|
|
@@ -479,7 +922,7 @@ export class GraphQLService extends DomainService {
|
|
|
479
922
|
}
|
|
480
923
|
else {
|
|
481
924
|
ctx.writeHead(200, { "Content-Type": "text/html" });
|
|
482
|
-
ctx.write(GraphIQL.replace("{{URL}}", httpContext.getAbsoluteUrl()));
|
|
925
|
+
ctx.write(GraphIQL.replace("{{URL}}", httpContext.getAbsoluteUrl()).replace("{{WSURL}}", httpContext.getAbsoluteUrl().replace("http", "ws")));
|
|
483
926
|
}
|
|
484
927
|
}
|
|
485
928
|
/**
|
package/lib/graphql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"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"}
|
package/lib/types/any.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GraphQLScalarType, Kind } from "graphql";
|
|
2
|
+
function coerceAny(value) {
|
|
3
|
+
return typeof value === "object" ? value : typeof value === "string" ? JSON.parse(value) : null;
|
|
4
|
+
}
|
|
5
|
+
export const AnyScalarType = new GraphQLScalarType({
|
|
6
|
+
name: "Object",
|
|
7
|
+
description: "Arbitrary object",
|
|
8
|
+
parseValue: coerceAny,
|
|
9
|
+
serialize: coerceAny,
|
|
10
|
+
parseLiteral: ast => {
|
|
11
|
+
switch (ast.kind) {
|
|
12
|
+
case Kind.STRING:
|
|
13
|
+
return JSON.parse(ast.value);
|
|
14
|
+
case Kind.OBJECT:
|
|
15
|
+
throw new Error(`Not sure what to do with OBJECT for ObjectScalarType`);
|
|
16
|
+
default:
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=any.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"any.js","sourceRoot":"","sources":["../../src/types/any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAElD,SAAS,SAAS,CAAC,KAAU;IAC3B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClG,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC;IACjD,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,GAAG,CAAC,EAAE;QAClB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,MAAM;gBACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,MAAM;gBACd,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { GraphQLScalarType, Kind } from "graphql";
|
|
2
|
+
export const DateScalar = new GraphQLScalarType({
|
|
3
|
+
name: "Date",
|
|
4
|
+
description: "Date custom scalar type",
|
|
5
|
+
serialize(value) {
|
|
6
|
+
if (value instanceof Date) {
|
|
7
|
+
return value.toISOString(); // Convert outgoing Date to integer for JSON
|
|
8
|
+
}
|
|
9
|
+
throw Error("GraphQL Date Scalar serializer expected a `Date` object");
|
|
10
|
+
},
|
|
11
|
+
parseValue(value) {
|
|
12
|
+
if (typeof value === "string") {
|
|
13
|
+
return new Date(value); // Convert incoming integer to Date
|
|
14
|
+
}
|
|
15
|
+
throw new Error("GraphQL Date Scalar parser expected a `string`");
|
|
16
|
+
},
|
|
17
|
+
parseLiteral(ast) {
|
|
18
|
+
if (ast.kind === Kind.STRING) {
|
|
19
|
+
// Convert hard-coded AST string to integer and then to Date
|
|
20
|
+
return new Date(ast.value);
|
|
21
|
+
}
|
|
22
|
+
// Invalid hard-coded value (not an integer)
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/types/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,yBAAyB;IACtC,SAAS,CAAC,KAAK;QACb,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,4CAA4C;QAC1E,CAAC;QACD,MAAM,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IACD,UAAU,CAAC,KAAK;QACd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,mCAAmC;QAC7D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,YAAY,CAAC,GAAG;QACd,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,4DAA4D;YAC5D,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,4CAA4C;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { GraphQLScalarType, Kind } from "graphql";
|
|
2
|
+
// Code from https://github.com/fibjs/fib-app/commit/dfb8421f80e5c6f806dfd62cb313cf544c42d60c
|
|
3
|
+
const MAX_LONG = Number.MAX_SAFE_INTEGER;
|
|
4
|
+
const MIN_LONG = Number.MIN_SAFE_INTEGER;
|
|
5
|
+
function coerceLong(value) {
|
|
6
|
+
if (value === "") {
|
|
7
|
+
throw new TypeError("Long cannot represent non 52-bit signed integer value: (empty string)");
|
|
8
|
+
}
|
|
9
|
+
const num = Number(value);
|
|
10
|
+
if (num === num && num <= MAX_LONG && num >= MIN_LONG) {
|
|
11
|
+
return num < 0 ? Math.ceil(num) : Math.floor(num);
|
|
12
|
+
}
|
|
13
|
+
throw new TypeError("Long cannot represent non 52-bit signed integer value: " + String(value));
|
|
14
|
+
}
|
|
15
|
+
function parseLiteral(ast) {
|
|
16
|
+
if (ast.kind === Kind.INT) {
|
|
17
|
+
const num = parseInt(ast.value, 10);
|
|
18
|
+
if (num <= MAX_LONG && num >= MIN_LONG) {
|
|
19
|
+
return num;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
export const GraphQLLong = new GraphQLScalarType({
|
|
25
|
+
name: "Long",
|
|
26
|
+
description: "The `Long` scalar type represents 52-bit integers",
|
|
27
|
+
serialize: coerceLong,
|
|
28
|
+
parseValue: coerceLong,
|
|
29
|
+
parseLiteral: parseLiteral
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=long.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"long.js","sourceRoot":"","sources":["../../src/types/long.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAElD,6FAA6F;AAC7F,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEzC,SAAS,UAAU,CAAC,KAAU;IAC5B,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,SAAS,CAAC,uEAAuE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QACtD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,yDAAyD,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,YAAY,CAAC,GAAQ;IAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;YACvC,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;IAC/C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,mDAAmD;IAChE,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,UAAU;IACtB,YAAY,EAAE,YAAY;CAC3B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webda/graphql",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "GraphQL endpoint for your Webda Application",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -23,16 +23,19 @@
|
|
|
23
23
|
"package.json"
|
|
24
24
|
],
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@webda/core": "^3.
|
|
26
|
+
"@webda/core": "^3.12.0",
|
|
27
|
+
"@webda/runtime": "^3.2.0",
|
|
27
28
|
"graphql": "^16.6.0",
|
|
28
29
|
"graphql-http": "^1.16.0",
|
|
29
|
-
"
|
|
30
|
+
"graphql-ws": "^5.14.2",
|
|
31
|
+
"json-schema": "^0.4.0",
|
|
32
|
+
"ws": "^8.14.2"
|
|
30
33
|
},
|
|
31
34
|
"devDependencies": {
|
|
32
35
|
"@testdeck/mocha": "^0.3.3",
|
|
33
36
|
"@types/node": "18.11.13",
|
|
34
|
-
"@webda/shell": "^3.
|
|
35
|
-
"c8": "^
|
|
37
|
+
"@webda/shell": "^3.9.0",
|
|
38
|
+
"c8": "^9.0.0",
|
|
36
39
|
"glob": "^10.0.0",
|
|
37
40
|
"js-beautify": "^1.14.7",
|
|
38
41
|
"mocha": "^10.2.0",
|
|
@@ -73,5 +76,5 @@
|
|
|
73
76
|
"engines": {
|
|
74
77
|
"node": ">=18.0.0"
|
|
75
78
|
},
|
|
76
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "167f6b86b33867ef2ab10cc02624bc0441965632"
|
|
77
80
|
}
|
package/webda.module.json
CHANGED
|
@@ -109,6 +109,10 @@
|
|
|
109
109
|
"type": "boolean",
|
|
110
110
|
"description": "Expose the schema"
|
|
111
111
|
},
|
|
112
|
+
"globalSubscription": {
|
|
113
|
+
"type": "boolean",
|
|
114
|
+
"description": "Expose a aggregation of all available subscriptions"
|
|
115
|
+
},
|
|
112
116
|
"openapi": {
|
|
113
117
|
"type": "object",
|
|
114
118
|
"additionalProperties": true
|
|
@@ -117,6 +121,7 @@
|
|
|
117
121
|
"required": [
|
|
118
122
|
"exposeGraphiQL",
|
|
119
123
|
"exposeMe",
|
|
124
|
+
"globalSubscription",
|
|
120
125
|
"maxOperationsPerRequest",
|
|
121
126
|
"models",
|
|
122
127
|
"nameTransfomer",
|