@webda/graphql 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # <%= name %>
2
+
3
+ <%= description %>
@@ -0,0 +1,101 @@
1
+ import { Application, CoreModelDefinition, DeepPartial, DomainServiceParameters, ModelGraph, Service, ServiceParameters, WebContext } from "@webda/core";
2
+ import { FieldNode, GraphQLSchema } from "graphql";
3
+ import { Handler } from "graphql-http";
4
+ import { JSONSchema7 } from "json-schema";
5
+ export interface GraphQLContextExtension {
6
+ /**
7
+ * Get the current count of operation for this request
8
+ */
9
+ count?: number;
10
+ }
11
+ /**
12
+ * Parameters for the GraphQL service
13
+ */
14
+ export declare class GraphQLParameters extends DomainServiceParameters {
15
+ /**
16
+ * Max number of requests allowed within a graphql query or mutation
17
+ *
18
+ * @default 10
19
+ */
20
+ maxOperationsPerRequest: number;
21
+ /**
22
+ * User model to expose
23
+ * @default User
24
+ */
25
+ userModel: string;
26
+ /**
27
+ * Expose current user in the context with me
28
+ * @default true
29
+ */
30
+ exposeMe: boolean;
31
+ constructor(params: any);
32
+ }
33
+ /**
34
+ * Implement a GraphQL service
35
+ *
36
+ * It will expose all your exposed models as GraphQL types
37
+ * Dynamically generate the schema
38
+ *
39
+ * @WebdaModda
40
+ */
41
+ export declare class GraphQLService<T extends GraphQLParameters = GraphQLParameters> extends Service<T> {
42
+ schema: GraphQLSchema;
43
+ handler: Handler;
44
+ modelsMap: {};
45
+ app: Application;
46
+ loadParameters(params: DeepPartial<T>): ServiceParameters;
47
+ /**
48
+ *
49
+ * @param prop
50
+ * @param definitions
51
+ * @returns
52
+ */
53
+ getJsonSchemaDefinition(prop: JSONSchema7, definitions: any): JSONSchema7;
54
+ /**
55
+ *
56
+ * @param schema
57
+ * @param defaultName
58
+ * @returns
59
+ */
60
+ getGraphQLSchemaFromSchema(schema: JSONSchema7, defaultName: string): any;
61
+ /**
62
+ * Add the GraphQL schema results
63
+ * @param type
64
+ * @returns
65
+ */
66
+ getGraphQLQueryResult(type: any): any;
67
+ /**
68
+ *
69
+ * @param schema
70
+ * @param defaultName
71
+ * @param webdaGraph
72
+ * @returns
73
+ */
74
+ getGraphQLFieldsFromSchema(schema: JSONSchema7, defaultName: string, webdaGraph?: ModelGraph): any;
75
+ loadModelInstance(knownFieldsOrId: string | {
76
+ uuid: string;
77
+ [key: string]: any;
78
+ }, model: CoreModelDefinition, context: WebContext, info?: FieldNode): Promise<import("@webda/core/lib/models/coremodel").CoreModel | {
79
+ [key: string]: any;
80
+ uuid: string;
81
+ }>;
82
+ /**
83
+ * Count the number of operations done with graphql
84
+ * @param context
85
+ */
86
+ countOperation(context: WebContext, increment?: number): void;
87
+ /**
88
+ * Generate GraphQL schema
89
+ */
90
+ generateSchema(): void;
91
+ /**
92
+ * @override
93
+ */
94
+ init(): Promise<this>;
95
+ /**
96
+ * Endpoint for the GraphQL schema
97
+ * @param ctx
98
+ * @returns
99
+ */
100
+ endpoint(ctx: WebContext<any>): Promise<void>;
101
+ }
package/lib/graphql.js ADDED
@@ -0,0 +1,399 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { DomainServiceParameters, Route, Service } from "@webda/core";
8
+ import { GraphQLBoolean, GraphQLError, GraphQLInt, GraphQLList, GraphQLObjectType, GraphQLSchema, GraphQLString, printSchema } from "graphql";
9
+ import { createHandler } from "graphql-http";
10
+ /**
11
+ * Parameters for the GraphQL service
12
+ */
13
+ export class GraphQLParameters extends DomainServiceParameters {
14
+ constructor(params) {
15
+ super(params);
16
+ this.url ?? (this.url = "/graphql");
17
+ this.maxOperationsPerRequest ?? (this.maxOperationsPerRequest = 10);
18
+ this.userModel ?? (this.userModel = "User");
19
+ this.exposeMe ?? (this.exposeMe = true);
20
+ }
21
+ }
22
+ /**
23
+ * Implement a GraphQL service
24
+ *
25
+ * It will expose all your exposed models as GraphQL types
26
+ * Dynamically generate the schema
27
+ *
28
+ * @WebdaModda
29
+ */
30
+ export class GraphQLService extends Service {
31
+ loadParameters(params) {
32
+ return new GraphQLParameters(params);
33
+ }
34
+ /**
35
+ *
36
+ * @param prop
37
+ * @param definitions
38
+ * @returns
39
+ */
40
+ getJsonSchemaDefinition(prop, definitions) {
41
+ if (prop.type) {
42
+ if (prop.type === "array" && prop.items["$ref"]) {
43
+ prop.items = this.getJsonSchemaDefinition(prop.items, definitions);
44
+ }
45
+ return prop;
46
+ }
47
+ while (prop && prop.$ref) {
48
+ prop = definitions[decodeURIComponent(prop.$ref.replace("#/definitions/", ""))];
49
+ }
50
+ return prop || { type: "null" };
51
+ }
52
+ /**
53
+ *
54
+ * @param schema
55
+ * @param defaultName
56
+ * @returns
57
+ */
58
+ getGraphQLSchemaFromSchema(schema, defaultName) {
59
+ let type;
60
+ if (!schema.type) {
61
+ return;
62
+ }
63
+ else if (schema.type === "string") {
64
+ type = GraphQLString;
65
+ }
66
+ else if (schema.type === "boolean") {
67
+ type = GraphQLBoolean;
68
+ }
69
+ else if (schema.type === "array") {
70
+ type = new GraphQLList(this.getGraphQLSchemaFromSchema(schema.items, schema.title || defaultName).type);
71
+ }
72
+ else if (schema.type === "integer" || schema.type === "number") {
73
+ type = GraphQLInt;
74
+ }
75
+ else if (schema.type === "null") {
76
+ return undefined;
77
+ }
78
+ else if (schema.type === "object") {
79
+ const fields = {};
80
+ for (let i in schema.properties) {
81
+ let res = this.getGraphQLSchemaFromSchema(this.getJsonSchemaDefinition(schema.properties[i], schema.definitions), `${schema.title || defaultName}_${i}`);
82
+ if (!res)
83
+ continue;
84
+ fields[i] = res;
85
+ }
86
+ if (Object.keys(fields).length === 0) {
87
+ return undefined;
88
+ }
89
+ type = new GraphQLObjectType({
90
+ fields,
91
+ name: schema.title || defaultName
92
+ });
93
+ }
94
+ return { type, description: schema.description };
95
+ }
96
+ /**
97
+ * Add the GraphQL schema results
98
+ * @param type
99
+ * @returns
100
+ */
101
+ getGraphQLQueryResult(type) {
102
+ var _a;
103
+ const name = `${type.name}QueryResult`;
104
+ (_a = this.modelsMap)[name] ?? (_a[name] = new GraphQLObjectType({
105
+ fields: {
106
+ results: {
107
+ type: new GraphQLList(type)
108
+ },
109
+ continuationToken: {
110
+ type: GraphQLString
111
+ }
112
+ },
113
+ name
114
+ }));
115
+ return this.modelsMap[name];
116
+ }
117
+ /**
118
+ *
119
+ * @param schema
120
+ * @param defaultName
121
+ * @param webdaGraph
122
+ * @returns
123
+ */
124
+ getGraphQLFieldsFromSchema(schema, defaultName, webdaGraph) {
125
+ const fields = {};
126
+ const skipFields = [];
127
+ const attributeFilter = (skip = false) => info => {
128
+ if (!this.modelsMap[info.model] && skip) {
129
+ skipFields.push(info.attribute);
130
+ this.log("INFO", `Skipping field ${info.attribute} as model ${info.model} is not exposed`);
131
+ }
132
+ return this.modelsMap[info.model];
133
+ };
134
+ if (webdaGraph) {
135
+ // In graphql parent should not be displayed
136
+ if (webdaGraph.parent) {
137
+ fields[webdaGraph.parent.attribute] = {
138
+ type: this.modelsMap[webdaGraph.parent.model],
139
+ resolve: async (source, _args, context, info) => {
140
+ this.countOperation(context);
141
+ // Check permission and model exists
142
+ return this.loadModelInstance(source[webdaGraph.parent.attribute] || "", this.app.getModel(webdaGraph.parent.model), context, info.fieldNodes?.find(node => node.name.value === webdaGraph.parent.attribute));
143
+ }
144
+ };
145
+ }
146
+ // Links should probably not be displayed
147
+ (webdaGraph.links || []).filter(attributeFilter()).forEach(link => {
148
+ if (link.type === "LINK") {
149
+ fields[link.attribute] = {
150
+ type: this.modelsMap[link.model],
151
+ resolve: async (source, _, context, info) => {
152
+ // Check permission and model exists
153
+ return this.loadModelInstance(source[link.attribute] || "", this.app.getModel(link.model), context, info.fieldNodes.find(node => node.name.value === link.attribute));
154
+ }
155
+ };
156
+ }
157
+ else {
158
+ fields[link.attribute] = {
159
+ type: new GraphQLList(this.modelsMap[link.model]),
160
+ args: {
161
+ filter: {
162
+ type: GraphQLString
163
+ }
164
+ },
165
+ resolve: async (source, args, context, info) => {
166
+ return Promise.all(source[link.attribute].map(i => this.loadModelInstance(i, source[link.attribute].model, context, info.fieldNodes.find(node => node.name.value === link.attribute))));
167
+ }
168
+ };
169
+ }
170
+ });
171
+ (webdaGraph.maps || []).filter(attributeFilter()).forEach(map => {
172
+ fields[map.attribute] = {
173
+ type: new GraphQLList(this.modelsMap[map.model]),
174
+ args: {
175
+ filter: {
176
+ type: GraphQLString
177
+ }
178
+ },
179
+ resolve: async (source, args, context, info) => {
180
+ let modelDefinition = this.app.getModel(map.model);
181
+ return Promise.all(source[map.attribute].map(i => this.loadModelInstance(i, modelDefinition, context, info.fieldNodes.find(node => node.name.value === map.attribute))));
182
+ }
183
+ };
184
+ });
185
+ (webdaGraph.queries || []).filter(attributeFilter(true)).forEach(query => {
186
+ fields[query.attribute] = {
187
+ type: this.getGraphQLQueryResult(this.modelsMap[query.model]),
188
+ args: {
189
+ query: {
190
+ type: GraphQLString
191
+ }
192
+ },
193
+ resolve: async (source, args, context, info) => {
194
+ let res = await source[query.attribute].query(args.query, context);
195
+ this.countOperation(context, res.results.length);
196
+ return res;
197
+ }
198
+ };
199
+ });
200
+ }
201
+ for (let i in schema.properties) {
202
+ // Was initiated by the known graph
203
+ if (fields[i] || skipFields.includes(i)) {
204
+ continue;
205
+ }
206
+ let prop = this.getGraphQLSchemaFromSchema(this.getJsonSchemaDefinition(schema.properties[i], schema.definitions), `${defaultName}_${i}`);
207
+ if (!prop) {
208
+ continue;
209
+ }
210
+ fields[i] = prop;
211
+ }
212
+ return fields;
213
+ }
214
+ async loadModelInstance(knownFieldsOrId, model, context, info) {
215
+ let res = typeof knownFieldsOrId === "string" ? { uuid: knownFieldsOrId } : knownFieldsOrId;
216
+ let operation =
217
+ // Check if we have a valid selection set
218
+ info === undefined ||
219
+ info.selectionSet === undefined ||
220
+ info.selectionSet.selections === undefined ||
221
+ info.selectionSet.selections.filter(node => node.kind === "Field").length === 0;
222
+ // Check if know all fields already
223
+ for (let field of (info?.selectionSet?.selections || []).filter(node => node.kind === "Field")) {
224
+ if (res[field.name.value] === undefined) {
225
+ operation = true;
226
+ break;
227
+ }
228
+ }
229
+ // We already know the whole answer so no more request needed
230
+ if (!operation) {
231
+ return res;
232
+ }
233
+ // Count the operation then and retrieve the model
234
+ this.countOperation(context);
235
+ let modelInstance = await model.store().get(res.uuid || "");
236
+ if (!modelInstance) {
237
+ throw new GraphQLError("Object not found", {
238
+ extensions: {
239
+ code: "NOT_FOUND"
240
+ }
241
+ });
242
+ }
243
+ if ((await modelInstance.canAct(context, "get")) !== true) {
244
+ throw new GraphQLError("Permission denied", {
245
+ extensions: {
246
+ code: "PERMISSION_DENIED"
247
+ }
248
+ });
249
+ }
250
+ return modelInstance;
251
+ }
252
+ /**
253
+ * Count the number of operations done with graphql
254
+ * @param context
255
+ */
256
+ countOperation(context, increment = 1) {
257
+ let ext = context.getExtension("graphql");
258
+ if (ext.count === this.parameters.maxOperationsPerRequest) {
259
+ throw new GraphQLError("Too many operations", {
260
+ extensions: {
261
+ code: "TOO_MANY_OPERATIONS"
262
+ }
263
+ });
264
+ }
265
+ ext.count += increment;
266
+ }
267
+ /**
268
+ * Generate GraphQL schema
269
+ */
270
+ generateSchema() {
271
+ const rootFields = {
272
+ ping: {
273
+ type: GraphQLString,
274
+ resolve: async () => `pong:${Date.now()}`
275
+ }
276
+ };
277
+ const models = this.app.getModels();
278
+ const graph = this.app.getGraph();
279
+ const roots = this.app.getRootExposedModels();
280
+ this.modelsMap = {};
281
+ for (let i in models) {
282
+ const model = models[i];
283
+ // Not exposed
284
+ if (!model.Expose) {
285
+ continue;
286
+ }
287
+ const schema = model.getSchema();
288
+ if (!schema) {
289
+ continue;
290
+ }
291
+ let name = this.app.getShortId(i).replace("/", "_");
292
+ this.log("INFO", "Add GraphQL type", name);
293
+ this.modelsMap[i] = new GraphQLObjectType({
294
+ fields: () => this.getGraphQLFieldsFromSchema(schema, name, graph[i]),
295
+ name
296
+ });
297
+ }
298
+ for (let i of roots) {
299
+ this.log("INFO", "Add GraphQL root query", i);
300
+ const model = models[i];
301
+ const schema = model?.getSchema();
302
+ if (!schema) {
303
+ continue;
304
+ }
305
+ rootFields[this.app.getModelPlural(i).split("/").pop()] = {
306
+ type: this.getGraphQLQueryResult(this.modelsMap[i]),
307
+ args: {
308
+ query: {
309
+ type: GraphQLString
310
+ }
311
+ },
312
+ resolve: async (_, args, context) => {
313
+ return await model.query(args.query || "", true, context);
314
+ }
315
+ };
316
+ rootFields[i.split("/")[1]] = {
317
+ type: this.modelsMap[i],
318
+ args: {
319
+ [model.getUuidField()]: {
320
+ type: GraphQLString
321
+ }
322
+ },
323
+ resolve: async (_, args, context, info) => {
324
+ this.countOperation(context);
325
+ return this.loadModelInstance(args.uuid || "", model, context);
326
+ }
327
+ };
328
+ }
329
+ // Expose the current user under me
330
+ if (this.parameters.exposeMe) {
331
+ const userGraph = this.app.completeNamespace(this.parameters.userModel);
332
+ let model = this.app.getModel(this.parameters.userModel);
333
+ if (this.modelsMap[userGraph] && model.Expose && model.Expose.restrict.get !== true) {
334
+ rootFields.Me = {
335
+ type: this.modelsMap[userGraph],
336
+ resolve: async (_, _args, context) => {
337
+ this.countOperation(context);
338
+ return context.getCurrentUser();
339
+ }
340
+ };
341
+ }
342
+ else {
343
+ this.log("WARN", "Cannot expose me, user model is not exposed or get is restricted or type is not unavailable");
344
+ }
345
+ }
346
+ this.schema = new GraphQLSchema({
347
+ query: new GraphQLObjectType({
348
+ name: "Query",
349
+ fields: rootFields
350
+ }),
351
+ types: Object.values(this.modelsMap),
352
+ mutation: null
353
+ });
354
+ }
355
+ /**
356
+ * @override
357
+ */
358
+ async init() {
359
+ await super.init();
360
+ this.app = this.getWebda().getApplication();
361
+ this.generateSchema();
362
+ // Generate GraphQL schema
363
+ this.handler = createHandler({
364
+ schema: this.schema,
365
+ context: (req, _) => {
366
+ return req.context;
367
+ }
368
+ });
369
+ return this;
370
+ }
371
+ /**
372
+ * Endpoint for the GraphQL schema
373
+ * @param ctx
374
+ * @returns
375
+ */
376
+ async endpoint(ctx) {
377
+ const httpContext = ctx.getHttpContext();
378
+ if (httpContext.getMethod() === "GET") {
379
+ ctx.writeHead(200, { "Content-Type": "application/graphql" });
380
+ ctx.write(printSchema(this.schema));
381
+ return;
382
+ }
383
+ ctx.setExtension("graphql", { count: 0 });
384
+ const [body, init] = await this.handler({
385
+ url: httpContext.getUrl(),
386
+ method: httpContext.getMethod(),
387
+ headers: httpContext.getHeaders(),
388
+ body: await ctx.getInput(),
389
+ raw: ctx,
390
+ context: ctx
391
+ });
392
+ ctx.writeHead(init.status, init.headers);
393
+ ctx.write(body);
394
+ }
395
+ }
396
+ __decorate([
397
+ Route(".", ["POST", "GET"])
398
+ ], GraphQLService.prototype, "endpoint", null);
399
+ //# sourceMappingURL=graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@webda/graphql",
3
+ "version": "3.0.0",
4
+ "description": "GraphQL endpoint for your Webda Application",
5
+ "main": "lib/index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "build": "webda build",
9
+ "pretest": "npm run build",
10
+ "test": "c8 mocha --recursive --exit --timeout=100000 -r ../../node_modules/ts-node/register src/**/*.spec.ts",
11
+ "test:debug": "mocha --recursive --exit --timeout=100000 src/**/*.spec.ts src/*.spec.ts",
12
+ "new-model": "webda init webda:model",
13
+ "new-service": "webda init webda:service",
14
+ "lint": "lerna run lint --parallel",
15
+ "lint:fix": "lerna run lint:fix --parallel"
16
+ },
17
+ "keywords": [
18
+ "webda-module"
19
+ ],
20
+ "files": [
21
+ "lib",
22
+ "webda.module.json",
23
+ "package.json"
24
+ ],
25
+ "dependencies": {
26
+ "@types/node": "^18.15.3",
27
+ "@webda/core": "^3.0.0",
28
+ "graphql": "^16.6.0",
29
+ "graphql-http": "^1.16.0"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^18.15.3",
33
+ "@webda/shell": "^2.4.3",
34
+ "c8": "^7.13.0",
35
+ "glob": "^10.0.0",
36
+ "js-beautify": "^1.14.7",
37
+ "mocha": "^10.2.0",
38
+ "prettier": "^2.8.4",
39
+ "source-map-support": "^0.5.21",
40
+ "ts-node": "^10.9.1",
41
+ "typescript": "^5.0.2"
42
+ },
43
+ "c8": {
44
+ "extends": "@istanbuljs/nyc-config-typescript",
45
+ "report-dir": "./reports",
46
+ "reporter": [
47
+ "html",
48
+ "lcov",
49
+ "json",
50
+ "text"
51
+ ],
52
+ "exclude": [
53
+ "**/*.spec.ts",
54
+ "test/**/*"
55
+ ]
56
+ },
57
+ "webda": {
58
+ "namespace": "Webda"
59
+ },
60
+ "bugs": {
61
+ "url": "https://github.com/loopingz/webda.io/issues"
62
+ },
63
+ "homepage": "https://github.com/loopingz/webda.io#readme",
64
+ "repository": "git://github.com/loopingz/webda.io.git",
65
+ "license": "MIT",
66
+ "nx": {
67
+ "implicitDependencies": [
68
+ "@webda/core",
69
+ "@webda/shell"
70
+ ]
71
+ }
72
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "moddas": {
3
+ "Webda/GraphQLService": "lib/graphql:GraphQLService"
4
+ },
5
+ "beans": {},
6
+ "models": {},
7
+ "deployers": {},
8
+ "schemas": {
9
+ "Webda/GraphQLService": {
10
+ "type": "object",
11
+ "properties": {
12
+ "type": {
13
+ "type": "string",
14
+ "description": "Type of the service"
15
+ },
16
+ "url": {
17
+ "type": "string",
18
+ "description": "URL on which to serve the content"
19
+ },
20
+ "operations": {
21
+ "type": "boolean",
22
+ "description": "Expose objects as operations too"
23
+ },
24
+ "nameTransfomer": {
25
+ "type": "string",
26
+ "enum": [
27
+ "camelCase",
28
+ "lowercase",
29
+ "none"
30
+ ],
31
+ "description": "Transform the name of the model to be used in the URL"
32
+ },
33
+ "queryMethod": {
34
+ "type": "string",
35
+ "enum": [
36
+ "PUT",
37
+ "GET"
38
+ ],
39
+ "description": "Method used for query objects",
40
+ "default": "PUT"
41
+ },
42
+ "models": {
43
+ "type": "array",
44
+ "items": {
45
+ "type": "string"
46
+ },
47
+ "description": "List of models to include\n\nIf model is prefixed with a ! it will be excluded",
48
+ "default": [
49
+ "*"
50
+ ]
51
+ },
52
+ "maxOperationsPerRequest": {
53
+ "type": "number",
54
+ "description": "Max number of requests allowed within a graphql query or mutation",
55
+ "default": 10
56
+ },
57
+ "userModel": {
58
+ "type": "string",
59
+ "description": "User model to expose",
60
+ "default": "User"
61
+ },
62
+ "exposeMe": {
63
+ "type": "boolean",
64
+ "description": "Expose current user in the context with me",
65
+ "default": true
66
+ },
67
+ "openapi": {
68
+ "type": "object",
69
+ "additionalProperties": true
70
+ }
71
+ },
72
+ "required": [
73
+ "exposeMe",
74
+ "maxOperationsPerRequest",
75
+ "models",
76
+ "nameTransfomer",
77
+ "operations",
78
+ "queryMethod",
79
+ "type",
80
+ "userModel"
81
+ ],
82
+ "description": "Parameters for the GraphQL service",
83
+ "$schema": "http://json-schema.org/draft-07/schema#",
84
+ "title": "GraphQLService"
85
+ }
86
+ }
87
+ }