@reventlessdev/reventless-local 3.0.0-alpha.138 → 3.0.0-alpha.140

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.
@@ -1,257 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Ws from "ws";
4
- import * as Http from "http";
5
- import * as GraphqlYoga from "graphql-yoga";
6
- import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
7
- import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
8
- import * as Logger$ReventlessCore from "@reventlessdev/reventless-core/src/util/Logger.res.mjs";
9
- import * as Ws$1 from "graphql-ws/lib/use/ws";
10
- import * as GraphQL_Stitcher$ReventlessCore from "@reventlessdev/reventless-core/src/components/Api/GraphQL_Stitcher.res.mjs";
11
-
12
- let log = Logger$ReventlessCore.fromEnv();
13
-
14
- let debug = Stdlib_Option.isSome(process.env["GRAPHQL_DEBUG"]);
15
-
16
- function extractFieldName(sdlField) {
17
- let trimmed = sdlField.trim();
18
- return Stdlib_Option.getOr(Stdlib_Option.getOr(trimmed.split("(")[0], "").trim().split(":")[0], "").trim();
19
- }
20
-
21
- function make(labelOpt) {
22
- let label = labelOpt !== undefined ? labelOpt : "GraphQL";
23
- let mutationResolvers = {
24
- contents: {}
25
- };
26
- let queryResolvers = {
27
- contents: {}
28
- };
29
- let subscriptionResolvers = {
30
- contents: {}
31
- };
32
- let mutationFields = {
33
- contents: []
34
- };
35
- let queryFields = {
36
- contents: []
37
- };
38
- let subscriptionFields = {
39
- contents: []
40
- };
41
- let typeDefinitions = {
42
- contents: []
43
- };
44
- let activeServer = {
45
- contents: undefined
46
- };
47
- let activeSchema = {
48
- contents: undefined
49
- };
50
- let lastFullSdl = {
51
- contents: undefined
52
- };
53
- let registerMutations = (sdlFields, resolvers) => {
54
- mutationFields.contents = mutationFields.contents.concat(sdlFields);
55
- Object.entries(resolvers).forEach(param => {
56
- mutationResolvers.contents[param[0]] = param[1];
57
- });
58
- };
59
- let registerQueries = (sdlFields, resolvers) => {
60
- queryFields.contents = queryFields.contents.concat(sdlFields);
61
- Object.entries(resolvers).forEach(param => {
62
- queryResolvers.contents[param[0]] = param[1];
63
- });
64
- };
65
- let registerSubscriptions = (sdlFields, resolvers) => {
66
- subscriptionFields.contents = subscriptionFields.contents.concat(sdlFields);
67
- Object.entries(resolvers).forEach(param => {
68
- subscriptionResolvers.contents[param[0]] = param[1];
69
- });
70
- };
71
- let registerTypes = sdlTypes => {
72
- typeDefinitions.contents = typeDefinitions.contents.concat(sdlTypes);
73
- };
74
- let getMutationResolver = fieldName => mutationResolvers.contents[fieldName];
75
- let getQueryResolver = fieldName => queryResolvers.contents[fieldName];
76
- let buildSdl = () => {
77
- let typesSdl = typeDefinitions.contents.length !== 0 ? typeDefinitions.contents.join("\n\n") : "";
78
- let mutations = mutationFields.contents.length !== 0 ? mutationFields.contents.join("\n") : " _noop: String";
79
- let queries = queryFields.contents.length !== 0 ? queryFields.contents.join("\n") : " _noop: String";
80
- let queriesMutationsSdl = `type Query {
81
- ` + queries + `
82
- }
83
- type Mutation {
84
- ` + mutations + `
85
- }`;
86
- let subscriptionsSdl = subscriptionFields.contents.length !== 0 ? `\n\ntype Subscription {\n` + subscriptionFields.contents.join("\n") + `\n}` : "";
87
- let base = typesSdl.length > 0 ? typesSdl + "\n\n" + queriesMutationsSdl : queriesMutationsSdl;
88
- return base + subscriptionsSdl;
89
- };
90
- let stop = () => {
91
- let server = activeServer.contents;
92
- if (server !== undefined) {
93
- Primitive_option.valFromOption(server).close(() => {});
94
- activeServer.contents = undefined;
95
- activeSchema.contents = undefined;
96
- return;
97
- }
98
- };
99
- let start = (portOpt, contextFactory, param) => {
100
- let port = portOpt !== undefined ? portOpt : 4000;
101
- let resolvers = {};
102
- resolvers["Query"] = queryResolvers.contents;
103
- resolvers["Mutation"] = mutationResolvers.contents;
104
- if (Object.keys(subscriptionResolvers.contents).length !== 0) {
105
- resolvers["Subscription"] = subscriptionResolvers.contents;
106
- }
107
- let sdl = buildSdl();
108
- lastFullSdl.contents = sdl;
109
- let schema = GraphqlYoga.createSchema({
110
- typeDefs: sdl,
111
- resolvers: resolvers
112
- });
113
- activeSchema.contents = Primitive_option.some(schema);
114
- let yoga = contextFactory !== undefined ? GraphqlYoga.createYoga({
115
- schema: schema,
116
- graphiql: true,
117
- logging: debug,
118
- maskedErrors: !debug,
119
- context: contextFactory
120
- }) : GraphqlYoga.createYoga({
121
- schema: schema,
122
- graphiql: true,
123
- logging: debug,
124
- maskedErrors: !debug
125
- });
126
- let server = Http.createServer(yoga);
127
- server.listen(port, () => log.info(label, undefined, `listening on http://localhost:` + port.toString() + `/graphql`));
128
- if (Object.keys(subscriptionResolvers.contents).length !== 0) {
129
- let wss = new Ws.WebSocketServer({
130
- server: server,
131
- path: "/graphql"
132
- });
133
- Ws$1.useServer({
134
- schema: schema
135
- }, wss);
136
- log.info(label, undefined, `graphql-ws subscriptions on ws://localhost:` + port.toString() + `/graphql`);
137
- }
138
- activeServer.contents = Primitive_option.some(server);
139
- };
140
- let reset = () => {
141
- mutationResolvers.contents = {};
142
- queryResolvers.contents = {};
143
- subscriptionResolvers.contents = {};
144
- mutationFields.contents = [];
145
- queryFields.contents = [];
146
- subscriptionFields.contents = [];
147
- typeDefinitions.contents = [];
148
- activeSchema.contents = undefined;
149
- lastFullSdl.contents = undefined;
150
- };
151
- let getFullSdl = () => lastFullSdl.contents;
152
- let getSchema = () => activeSchema.contents;
153
- let diagnostics = () => {
154
- let mutFieldNames = mutationFields.contents.map(extractFieldName).filter(n => n !== "_noop");
155
- let queryFieldNames = queryFields.contents.map(extractFieldName).filter(n => n !== "_noop");
156
- let mutResolverNames = Object.keys(mutationResolvers.contents);
157
- let queryResolverNames = Object.keys(queryResolvers.contents);
158
- let mismatches = [];
159
- let mutResolverSet = new Set(mutResolverNames);
160
- mutFieldNames.forEach(name => {
161
- if (!mutResolverSet.has(name)) {
162
- mismatches.push(`Mutation "` + name + `": SDL field but no resolver`);
163
- return;
164
- }
165
- });
166
- let queryResolverSet = new Set(queryResolverNames);
167
- queryFieldNames.forEach(name => {
168
- if (!queryResolverSet.has(name)) {
169
- mismatches.push(`Query "` + name + `": SDL field but no resolver`);
170
- return;
171
- }
172
- });
173
- let mutFieldSet = new Set(mutFieldNames);
174
- mutResolverNames.forEach(name => {
175
- if (!mutFieldSet.has(name)) {
176
- mismatches.push(`Mutation "` + name + `": resolver but no SDL field`);
177
- return;
178
- }
179
- });
180
- let queryFieldSet = new Set(queryFieldNames);
181
- queryResolverNames.forEach(name => {
182
- if (!queryFieldSet.has(name)) {
183
- mismatches.push(`Query "` + name + `": resolver but no SDL field`);
184
- return;
185
- }
186
- });
187
- let typeNames = typeDefinitions.contents.map(GraphQL_Stitcher$ReventlessCore.extractLeadingName);
188
- return {
189
- registeredTypeDefinitions: typeNames,
190
- registeredMutationFields: mutFieldNames,
191
- registeredQueryFields: queryFieldNames,
192
- registeredMutationResolvers: mutResolverNames,
193
- registeredQueryResolvers: queryResolverNames,
194
- typeCount: typeNames.length,
195
- sdlMutationCount: mutFieldNames.length,
196
- sdlQueryCount: queryFieldNames.length,
197
- resolverMutationCount: mutResolverNames.length,
198
- resolverQueryCount: queryResolverNames.length,
199
- mismatches: mismatches,
200
- fullSdl: lastFullSdl.contents,
201
- serverRunning: Stdlib_Option.isSome(activeServer.contents)
202
- };
203
- };
204
- let printDiagnostics = () => {
205
- let p = s => log.info(label, undefined, s);
206
- let d = diagnostics();
207
- p("Diagnostics");
208
- p(` Types: ` + d.typeCount.toString());
209
- p(` Mutations: ` + d.sdlMutationCount.toString() + ` SDL fields, ` + d.resolverMutationCount.toString() + ` resolvers`);
210
- p(` Queries: ` + d.sdlQueryCount.toString() + ` SDL fields, ` + d.resolverQueryCount.toString() + ` resolvers`);
211
- if (d.mismatches.length !== 0) {
212
- p(` Mismatches (` + d.mismatches.length.toString() + `):`);
213
- d.mismatches.forEach(m => p(` - ` + m));
214
- } else {
215
- p(" No mismatches");
216
- }
217
- p(` Server running: ` + (
218
- d.serverRunning ? "yes" : "no"
219
- ));
220
- let sdl = d.fullSdl;
221
- if (sdl !== undefined) {
222
- p("");
223
- p("--- Full SDL ---");
224
- sdl.split("\n").forEach(p);
225
- return p("--- End ---");
226
- } else {
227
- return p(" No SDL recorded");
228
- }
229
- };
230
- return {
231
- registerMutations: registerMutations,
232
- registerQueries: registerQueries,
233
- registerSubscriptions: registerSubscriptions,
234
- registerTypes: registerTypes,
235
- getMutationResolver: getMutationResolver,
236
- getQueryResolver: getQueryResolver,
237
- start: start,
238
- stop: stop,
239
- reset: reset,
240
- buildSdl: buildSdl,
241
- getFullSdl: getFullSdl,
242
- getSchema: getSchema,
243
- diagnostics: diagnostics,
244
- printDiagnostics: printDiagnostics
245
- };
246
- }
247
-
248
- let YG;
249
-
250
- export {
251
- YG,
252
- log,
253
- debug,
254
- extractFieldName,
255
- make,
256
- }
257
- /* log Not a pure module */