@orion-js/graphql 4.0.0-next.2 → 4.0.0-next.4
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/LICENSE +21 -0
- package/dist/index.cjs +477 -469
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +58 -27
- package/dist/index.d.ts +58 -27
- package/dist/index.js +490 -470
- package/dist/index.js.map +1 -1
- package/package.json +12 -12
package/dist/index.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/pubsub.ts
|
|
5
2
|
var pubsub = null;
|
|
6
|
-
var setPubsub =
|
|
3
|
+
var setPubsub = function(newPubsub) {
|
|
7
4
|
pubsub = newPubsub;
|
|
8
|
-
}
|
|
9
|
-
var getPubsub =
|
|
5
|
+
};
|
|
6
|
+
var getPubsub = function() {
|
|
10
7
|
return pubsub;
|
|
11
|
-
}
|
|
8
|
+
};
|
|
12
9
|
|
|
13
10
|
// src/subscription/getChannelName.ts
|
|
14
11
|
import { hashObject } from "@orion-js/helpers";
|
|
@@ -17,29 +14,26 @@ function getChannelName_default(name, params) {
|
|
|
17
14
|
const channelName = `${name}_${hash}`;
|
|
18
15
|
return channelName;
|
|
19
16
|
}
|
|
20
|
-
__name(getChannelName_default, "default");
|
|
21
17
|
|
|
22
18
|
// src/subscription/index.ts
|
|
23
|
-
import {
|
|
24
|
-
|
|
19
|
+
import {
|
|
20
|
+
checkPermissions as checkResolverPermissions,
|
|
21
|
+
cleanParams,
|
|
22
|
+
cleanReturns
|
|
23
|
+
} from "@orion-js/resolvers";
|
|
24
|
+
var createSubscription = function(options) {
|
|
25
25
|
const subscription = {
|
|
26
26
|
name: options.name
|
|
27
27
|
};
|
|
28
28
|
subscription.publish = async (params, data) => {
|
|
29
29
|
const pubsub2 = getPubsub();
|
|
30
30
|
const channelName = getChannelName_default(subscription.name, params);
|
|
31
|
-
await pubsub2.publish(channelName, {
|
|
32
|
-
[subscription.name]: data
|
|
33
|
-
});
|
|
31
|
+
await pubsub2.publish(channelName, { [subscription.name]: data });
|
|
34
32
|
};
|
|
35
33
|
subscription.subscribe = async (params, viewer) => {
|
|
36
34
|
const pubsub2 = getPubsub();
|
|
37
35
|
try {
|
|
38
|
-
await checkResolverPermissions({
|
|
39
|
-
params,
|
|
40
|
-
viewer,
|
|
41
|
-
options: null
|
|
42
|
-
}, options);
|
|
36
|
+
await checkResolverPermissions({ params, viewer, options: null }, options);
|
|
43
37
|
const channelName = getChannelName_default(subscription.name, params);
|
|
44
38
|
return pubsub2.asyncIterator(channelName);
|
|
45
39
|
} catch (error) {
|
|
@@ -49,7 +43,7 @@ var createSubscription = /* @__PURE__ */ __name(function(options) {
|
|
|
49
43
|
subscription.params = cleanParams(options.params);
|
|
50
44
|
subscription.returns = cleanReturns(options.returns);
|
|
51
45
|
return subscription;
|
|
52
|
-
}
|
|
46
|
+
};
|
|
53
47
|
var subscription_default = createSubscription;
|
|
54
48
|
|
|
55
49
|
// src/startGraphiQL.ts
|
|
@@ -57,8 +51,7 @@ import { registerRoute, route } from "@orion-js/http";
|
|
|
57
51
|
function safeSerialize(data) {
|
|
58
52
|
return data ? JSON.stringify(data).replace(/\//g, "\\/") : null;
|
|
59
53
|
}
|
|
60
|
-
|
|
61
|
-
var getHTML = /* @__PURE__ */ __name(function(apolloOptions, options, data) {
|
|
54
|
+
var getHTML = function(apolloOptions, options, data) {
|
|
62
55
|
const GRAPHIQL_VERSION = "0.11.11";
|
|
63
56
|
const endpointURL = "/graphql";
|
|
64
57
|
const subscriptionsEndpoint = "/subscriptions";
|
|
@@ -239,19 +232,20 @@ var getHTML = /* @__PURE__ */ __name(function(apolloOptions, options, data) {
|
|
|
239
232
|
</script>
|
|
240
233
|
</body>
|
|
241
234
|
</html>`;
|
|
242
|
-
}
|
|
235
|
+
};
|
|
243
236
|
function startGraphiQL_default(apolloOptions, options) {
|
|
244
|
-
registerRoute(
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
237
|
+
registerRoute(
|
|
238
|
+
route({
|
|
239
|
+
path: "/graphiql",
|
|
240
|
+
method: "get",
|
|
241
|
+
async resolve(req) {
|
|
242
|
+
return {
|
|
243
|
+
body: getHTML(apolloOptions, options, req.query)
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
})
|
|
247
|
+
);
|
|
253
248
|
}
|
|
254
|
-
__name(startGraphiQL_default, "default");
|
|
255
249
|
|
|
256
250
|
// src/buildSchema/index.ts
|
|
257
251
|
import { GraphQLSchema } from "graphql";
|
|
@@ -260,16 +254,19 @@ import { GraphQLSchema } from "graphql";
|
|
|
260
254
|
import { GraphQLObjectType as GraphQLObjectType2 } from "graphql";
|
|
261
255
|
|
|
262
256
|
// src/buildSchema/getType/index.ts
|
|
263
|
-
import isPlainObject2 from "lodash/isPlainObject";
|
|
264
257
|
import isArray2 from "lodash/isArray";
|
|
265
258
|
import { GraphQLList as GraphQLList2, GraphQLObjectType } from "graphql";
|
|
266
|
-
import {
|
|
259
|
+
import {
|
|
260
|
+
getFieldType as getFieldType2,
|
|
261
|
+
getSchemaWithMetadataFromAnyOrionForm,
|
|
262
|
+
isSchemaLike
|
|
263
|
+
} from "@orion-js/schema";
|
|
267
264
|
|
|
268
265
|
// src/buildSchema/getType/BigIntScalar.ts
|
|
269
266
|
import { GraphQLScalarType } from "graphql";
|
|
270
267
|
var MAX_INT = Number.MAX_SAFE_INTEGER;
|
|
271
268
|
var MIN_INT = Number.MIN_SAFE_INTEGER;
|
|
272
|
-
var coerceBigInt =
|
|
269
|
+
var coerceBigInt = function coerceBigInt2(value) {
|
|
273
270
|
if (value === "") {
|
|
274
271
|
throw new TypeError("BigInt cannot represent non 53-bit signed integer value: (empty string)");
|
|
275
272
|
}
|
|
@@ -282,7 +279,7 @@ var coerceBigInt = /* @__PURE__ */ __name(function coerceBigInt2(value) {
|
|
|
282
279
|
throw new TypeError("BigInt cannot represent non-integer value: " + String(value));
|
|
283
280
|
}
|
|
284
281
|
return int;
|
|
285
|
-
}
|
|
282
|
+
};
|
|
286
283
|
var BigIntScalar_default = new GraphQLScalarType({
|
|
287
284
|
name: "BigInt",
|
|
288
285
|
description: "The `BigInt` scalar type represents non-fractional signed whole numeric values. BigInt can represent values between -(2^53) + 1 and 2^53 - 1. ",
|
|
@@ -314,7 +311,6 @@ import { GraphQLScalarType as GraphQLScalarType3, Kind } from "graphql";
|
|
|
314
311
|
function identity(value) {
|
|
315
312
|
return value;
|
|
316
313
|
}
|
|
317
|
-
__name(identity, "identity");
|
|
318
314
|
function parseLiteral(ast, variables) {
|
|
319
315
|
switch (ast.kind) {
|
|
320
316
|
case Kind.STRING:
|
|
@@ -342,7 +338,6 @@ function parseLiteral(ast, variables) {
|
|
|
342
338
|
return void 0;
|
|
343
339
|
}
|
|
344
340
|
}
|
|
345
|
-
__name(parseLiteral, "parseLiteral");
|
|
346
341
|
var JSONScalar_default = new GraphQLScalarType3({
|
|
347
342
|
name: "JSON",
|
|
348
343
|
description: "The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).",
|
|
@@ -378,7 +373,6 @@ function getScalar_default(fieldType) {
|
|
|
378
373
|
}
|
|
379
374
|
throw new Error(`Field type "${fieldType.name}" has no convertion to GraphQLType`);
|
|
380
375
|
}
|
|
381
|
-
__name(getScalar_default, "default");
|
|
382
376
|
|
|
383
377
|
// src/buildSchema/getArgs/getField.ts
|
|
384
378
|
import isPlainObject from "lodash/isPlainObject";
|
|
@@ -387,9 +381,11 @@ import { GraphQLList, GraphQLInputObjectType } from "graphql";
|
|
|
387
381
|
import { getFieldType } from "@orion-js/schema";
|
|
388
382
|
|
|
389
383
|
// src/resolversSchemas/getStaticFields.ts
|
|
390
|
-
function getStaticFields(
|
|
391
|
-
const schema = model.getSchema();
|
|
384
|
+
function getStaticFields(schema) {
|
|
392
385
|
if (!schema) return [];
|
|
386
|
+
if (schema.getSchema) {
|
|
387
|
+
schema = schema.getSchema();
|
|
388
|
+
}
|
|
393
389
|
const keys = Object.keys(schema).filter((key) => !key.startsWith("__"));
|
|
394
390
|
return keys.map((key) => {
|
|
395
391
|
const field = schema[key];
|
|
@@ -399,72 +395,75 @@ function getStaticFields(model) {
|
|
|
399
395
|
};
|
|
400
396
|
}).filter((field) => !field.private);
|
|
401
397
|
}
|
|
402
|
-
__name(getStaticFields, "getStaticFields");
|
|
403
398
|
|
|
404
399
|
// src/buildSchema/getArgs/getField.ts
|
|
400
|
+
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
405
401
|
var storedModelInput = {};
|
|
406
|
-
var
|
|
407
|
-
if (storedModelInput[model.name]) {
|
|
408
|
-
|
|
402
|
+
var getCachedModelInput = (model, fields) => {
|
|
403
|
+
if (!storedModelInput[model.name]) {
|
|
404
|
+
storedModelInput[model.name] = new GraphQLInputObjectType({
|
|
405
|
+
name: `${model.name}Input`,
|
|
406
|
+
fields
|
|
407
|
+
});
|
|
409
408
|
}
|
|
410
|
-
storedModelInput[model.name] = new GraphQLInputObjectType({
|
|
411
|
-
name: model.name + "Input",
|
|
412
|
-
fields
|
|
413
|
-
});
|
|
414
409
|
return storedModelInput[model.name];
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
410
|
+
};
|
|
411
|
+
var resolveModelFields = (model) => {
|
|
412
|
+
const fields = {};
|
|
413
|
+
for (const field of getStaticFields(model)) {
|
|
414
|
+
fields[field.key] = { type: resolveType(field.type) };
|
|
419
415
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
for (const field of getStaticFields(model)) {
|
|
428
|
-
fields[field.key] = {
|
|
429
|
-
type: getParams(field.type)
|
|
430
|
-
};
|
|
431
|
-
}
|
|
432
|
-
return getModelInput(model, fields);
|
|
433
|
-
} else {
|
|
434
|
-
const schemaType = getFieldType(type);
|
|
435
|
-
const graphQLType = getScalar_default(schemaType);
|
|
436
|
-
return graphQLType;
|
|
416
|
+
return fields;
|
|
417
|
+
};
|
|
418
|
+
var resolveArrayType = (type) => new GraphQLList(resolveType(type[0]));
|
|
419
|
+
var resolvePlainObjectOrModelType = (type) => {
|
|
420
|
+
const model = type.__isModel ? type : type.__model;
|
|
421
|
+
if (!model || !model.__isModel) {
|
|
422
|
+
throw new Error("A type is not a Model");
|
|
437
423
|
}
|
|
438
|
-
|
|
439
|
-
|
|
424
|
+
const fields = resolveModelFields(model);
|
|
425
|
+
return getCachedModelInput(model, fields);
|
|
426
|
+
};
|
|
427
|
+
var resolveType = (type) => {
|
|
428
|
+
var _a;
|
|
429
|
+
if (!type) throw new Error("No type specified");
|
|
430
|
+
if ((_a = type == null ? void 0 : type[Symbol.metadata]) == null ? void 0 : _a._getModel) {
|
|
431
|
+
const model = type[Symbol.metadata]._getModel();
|
|
432
|
+
return resolveType(model);
|
|
433
|
+
}
|
|
434
|
+
if (isArray(type)) return resolveArrayType(type);
|
|
435
|
+
if (!type.__isFieldType && (isPlainObject(type) || type.__isModel)) {
|
|
436
|
+
return resolvePlainObjectOrModelType(type);
|
|
437
|
+
}
|
|
438
|
+
const schemaType = getFieldType(type);
|
|
439
|
+
return getScalar_default(schemaType);
|
|
440
|
+
};
|
|
441
|
+
var getField_default = resolveType;
|
|
440
442
|
|
|
441
443
|
// src/buildSchema/getArgs/index.ts
|
|
442
|
-
function getArgs_default(params) {
|
|
444
|
+
async function getArgs_default(params) {
|
|
443
445
|
if (!params) return;
|
|
444
446
|
if (Object.keys(params).length === 0) return;
|
|
445
447
|
const fields = {};
|
|
446
448
|
for (const key of Object.keys(params)) {
|
|
447
449
|
try {
|
|
448
|
-
const type =
|
|
449
|
-
fields[key] = {
|
|
450
|
-
type
|
|
451
|
-
};
|
|
450
|
+
const type = getField_default(params[key].type);
|
|
451
|
+
fields[key] = { type };
|
|
452
452
|
} catch (error) {
|
|
453
453
|
throw new Error(`Error creating GraphQL resolver params argument ${key}: ${error.message}`);
|
|
454
454
|
}
|
|
455
455
|
}
|
|
456
456
|
return fields;
|
|
457
457
|
}
|
|
458
|
-
__name(getArgs_default, "default");
|
|
459
458
|
|
|
460
459
|
// src/errorHandler.ts
|
|
461
460
|
import crypto from "crypto";
|
|
462
461
|
import { GraphQLError } from "graphql";
|
|
463
462
|
function errorHandler(error, data) {
|
|
464
|
-
const message = `Error in resolver "${data.name}" ${data.
|
|
463
|
+
const message = `Error in resolver "${data.name}" ${data.schema ? `of model "${data.schema.__modelName}"` : ""}`;
|
|
465
464
|
const hash = crypto.createHash("sha1").update(error.message, "utf8").digest("hex").substring(0, 10);
|
|
466
465
|
error.hash = hash;
|
|
467
|
-
if (error
|
|
466
|
+
if (error == null ? void 0 : error.isOrionError) {
|
|
468
467
|
console.warn(message, error);
|
|
469
468
|
throw new GraphQLError(error.message, {
|
|
470
469
|
originalError: error,
|
|
@@ -476,148 +475,151 @@ function errorHandler(error, data) {
|
|
|
476
475
|
info: error.getInfo()
|
|
477
476
|
}
|
|
478
477
|
});
|
|
479
|
-
} else {
|
|
480
|
-
console.error(message, error);
|
|
481
|
-
throw new GraphQLError(`${error.message} [${hash}]`, {
|
|
482
|
-
// originalError: error,
|
|
483
|
-
extensions: {
|
|
484
|
-
isOrionError: false,
|
|
485
|
-
isValidationError: false,
|
|
486
|
-
code: "INTERNAL_SERVER_ERROR",
|
|
487
|
-
hash
|
|
488
|
-
}
|
|
489
|
-
});
|
|
490
478
|
}
|
|
479
|
+
console.error(message, error);
|
|
480
|
+
throw new GraphQLError(`${error.message} [${hash}]`, {
|
|
481
|
+
// originalError: error,
|
|
482
|
+
extensions: {
|
|
483
|
+
isOrionError: false,
|
|
484
|
+
isValidationError: false,
|
|
485
|
+
code: "INTERNAL_SERVER_ERROR",
|
|
486
|
+
hash
|
|
487
|
+
}
|
|
488
|
+
});
|
|
491
489
|
}
|
|
492
|
-
__name(errorHandler, "errorHandler");
|
|
493
490
|
|
|
494
491
|
// src/buildSchema/getType/getTypeAsResolver.ts
|
|
495
|
-
function getTypeAsResolver_default({ resolver:
|
|
496
|
-
const type = getGraphQLType2(
|
|
497
|
-
const args = getArgs_default(
|
|
492
|
+
function getTypeAsResolver_default({ resolver: resolver2, getGraphQLType: getGraphQLType2, options, schema }) {
|
|
493
|
+
const type = getGraphQLType2(resolver2.returns, options);
|
|
494
|
+
const args = getArgs_default(resolver2.params);
|
|
498
495
|
return {
|
|
499
496
|
type,
|
|
500
497
|
args,
|
|
501
498
|
async resolve(item, params, context, info) {
|
|
502
499
|
try {
|
|
503
|
-
const result = await
|
|
500
|
+
const result = await resolver2.resolve(item, params, context, info);
|
|
504
501
|
return result;
|
|
505
502
|
} catch (error) {
|
|
506
|
-
errorHandler(error, {
|
|
507
|
-
context,
|
|
508
|
-
resolver: resolver4,
|
|
509
|
-
options,
|
|
510
|
-
model
|
|
511
|
-
});
|
|
503
|
+
errorHandler(error, { context, resolver: resolver2, options, schema });
|
|
512
504
|
throw error;
|
|
513
505
|
}
|
|
514
506
|
}
|
|
515
507
|
};
|
|
516
508
|
}
|
|
517
|
-
__name(getTypeAsResolver_default, "default");
|
|
518
509
|
|
|
519
510
|
// src/resolversSchemas/getDynamicFields.ts
|
|
520
|
-
function
|
|
521
|
-
|
|
511
|
+
function getResolvers(schema) {
|
|
512
|
+
if (typeof schema.getResolvers === "function") {
|
|
513
|
+
console.warn("Models are deprecated");
|
|
514
|
+
return schema.getResolvers();
|
|
515
|
+
}
|
|
516
|
+
if (schema.__resolvers) {
|
|
517
|
+
return schema.__resolvers;
|
|
518
|
+
}
|
|
519
|
+
return {};
|
|
520
|
+
}
|
|
521
|
+
function getDynamicFields(schema) {
|
|
522
|
+
const resolvers = getResolvers(schema);
|
|
522
523
|
if (!resolvers) return [];
|
|
523
524
|
const keys = Object.keys(resolvers);
|
|
524
525
|
return keys.map((key) => {
|
|
525
|
-
const
|
|
526
|
+
const resolver2 = resolvers[key];
|
|
526
527
|
return {
|
|
527
|
-
...
|
|
528
|
+
...resolver2,
|
|
528
529
|
key
|
|
529
530
|
};
|
|
530
|
-
}).filter((
|
|
531
|
+
}).filter((resolver2) => !resolver2.private);
|
|
531
532
|
}
|
|
532
|
-
__name(getDynamicFields, "getDynamicFields");
|
|
533
533
|
|
|
534
534
|
// src/resolversSchemas/getModelLoadedResolvers.ts
|
|
535
|
-
function getModelLoadedResolvers(
|
|
535
|
+
function getModelLoadedResolvers(schema, options) {
|
|
536
536
|
if (!options.modelResolvers) return [];
|
|
537
|
-
const resolvers = options.modelResolvers[
|
|
537
|
+
const resolvers = options.modelResolvers[schema.__modelName];
|
|
538
538
|
if (!resolvers) return [];
|
|
539
539
|
const keys = Object.keys(resolvers);
|
|
540
540
|
return keys.map((key) => {
|
|
541
|
-
const
|
|
541
|
+
const resolver2 = resolvers[key];
|
|
542
542
|
return {
|
|
543
|
-
...
|
|
543
|
+
...resolver2,
|
|
544
544
|
key
|
|
545
545
|
};
|
|
546
|
-
}).filter((
|
|
546
|
+
}).filter((resolver2) => !resolver2.private);
|
|
547
547
|
}
|
|
548
|
-
__name(getModelLoadedResolvers, "getModelLoadedResolvers");
|
|
549
548
|
|
|
550
549
|
// src/buildSchema/getType/index.ts
|
|
550
|
+
import { isEqual } from "lodash";
|
|
551
|
+
var createGraphQLObjectType = (modelName, schema, options) => new GraphQLObjectType({
|
|
552
|
+
name: modelName,
|
|
553
|
+
fields: () => buildFields(schema, options)
|
|
554
|
+
});
|
|
555
|
+
var buildFields = (schema, options) => {
|
|
556
|
+
const fields = {};
|
|
557
|
+
const addStaticFields = () => {
|
|
558
|
+
for (const field of getStaticFields(schema)) {
|
|
559
|
+
try {
|
|
560
|
+
fields[field.key] = field.graphQLResolver ? getTypeAsResolver_default({ resolver: field.graphQLResolver, getGraphQLType, options, schema }) : { type: getGraphQLType(field.type, options) };
|
|
561
|
+
} catch (error) {
|
|
562
|
+
throw new Error(`Error getting type for ${field.key}: ${error.message}`);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
};
|
|
566
|
+
const addDynamicFields = () => {
|
|
567
|
+
for (const resolver2 of getDynamicFields(schema)) {
|
|
568
|
+
try {
|
|
569
|
+
fields[resolver2.key] = getTypeAsResolver_default({ resolver: resolver2, getGraphQLType, options, schema });
|
|
570
|
+
} catch (error) {
|
|
571
|
+
throw new Error(
|
|
572
|
+
`Error getting resolver type for resolver "${resolver2.key}": ${error.message}`
|
|
573
|
+
);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
};
|
|
577
|
+
const addModelLoadedResolvers = () => {
|
|
578
|
+
for (const resolver2 of getModelLoadedResolvers(schema, options)) {
|
|
579
|
+
try {
|
|
580
|
+
fields[resolver2.key] = getTypeAsResolver_default({ resolver: resolver2, getGraphQLType, options, schema });
|
|
581
|
+
} catch (error) {
|
|
582
|
+
throw new Error(
|
|
583
|
+
`Error getting resolver type for resolver "${resolver2.key}": ${error.message}`
|
|
584
|
+
);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
};
|
|
588
|
+
addStaticFields();
|
|
589
|
+
addDynamicFields();
|
|
590
|
+
addModelLoadedResolvers();
|
|
591
|
+
return fields;
|
|
592
|
+
};
|
|
593
|
+
var registeredGraphQLTypes = /* @__PURE__ */ new Map();
|
|
551
594
|
function getGraphQLType(type, options) {
|
|
552
|
-
if (!type)
|
|
553
|
-
throw new Error("Type is undefined");
|
|
554
|
-
}
|
|
595
|
+
if (!type) throw new Error("Type is undefined");
|
|
555
596
|
if (isArray2(type)) {
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
fields[field.key] = {
|
|
579
|
-
type: getGraphQLType(field.type, options)
|
|
580
|
-
};
|
|
581
|
-
}
|
|
582
|
-
} catch (error) {
|
|
583
|
-
throw new Error(`Error getting type for ${field.key} ${error.message}`);
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
for (const resolver4 of getDynamicFields(model)) {
|
|
587
|
-
try {
|
|
588
|
-
fields[resolver4.key] = getTypeAsResolver_default({
|
|
589
|
-
resolver: resolver4,
|
|
590
|
-
getGraphQLType,
|
|
591
|
-
options,
|
|
592
|
-
model
|
|
593
|
-
});
|
|
594
|
-
} catch (error) {
|
|
595
|
-
throw new Error(`Error getting resolver type for resolver "${resolver4.key}": ${error.message}`);
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
for (const resolver4 of getModelLoadedResolvers(model, options)) {
|
|
599
|
-
try {
|
|
600
|
-
fields[resolver4.key] = getTypeAsResolver_default({
|
|
601
|
-
resolver: resolver4,
|
|
602
|
-
getGraphQLType,
|
|
603
|
-
options,
|
|
604
|
-
model
|
|
605
|
-
});
|
|
606
|
-
} catch (error) {
|
|
607
|
-
throw new Error(`Error getting resolver type for resolver "${resolver4.key}": ${error.message}`);
|
|
608
|
-
}
|
|
609
|
-
}
|
|
610
|
-
return fields;
|
|
611
|
-
}, "fields")
|
|
612
|
-
});
|
|
613
|
-
return model.graphQLType;
|
|
614
|
-
} else {
|
|
615
|
-
const schemaType = getFieldType2(type);
|
|
616
|
-
const graphQLType = getScalar_default(schemaType);
|
|
597
|
+
return new GraphQLList2(getGraphQLType(type[0], options));
|
|
598
|
+
}
|
|
599
|
+
if (isSchemaLike(type)) {
|
|
600
|
+
const schema = getSchemaWithMetadataFromAnyOrionForm(type);
|
|
601
|
+
const modelName = schema.__modelName;
|
|
602
|
+
if (schema.__graphQLType) {
|
|
603
|
+
return schema.__graphQLType;
|
|
604
|
+
}
|
|
605
|
+
if (!modelName) {
|
|
606
|
+
throw new Error(
|
|
607
|
+
`Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`
|
|
608
|
+
);
|
|
609
|
+
}
|
|
610
|
+
if (registeredGraphQLTypes.has(modelName)) {
|
|
611
|
+
const { graphQLType: graphQLType2, schema: registeredSchema } = registeredGraphQLTypes.get(modelName);
|
|
612
|
+
if (isEqual(registeredSchema, schema)) {
|
|
613
|
+
return graphQLType2;
|
|
614
|
+
}
|
|
615
|
+
throw new Error(`Schema named "${modelName}" already registered`);
|
|
616
|
+
}
|
|
617
|
+
const graphQLType = createGraphQLObjectType(modelName, schema, options);
|
|
618
|
+
registeredGraphQLTypes.set(modelName, { schema, graphQLType });
|
|
617
619
|
return graphQLType;
|
|
618
620
|
}
|
|
621
|
+
return getScalar_default(getFieldType2(type));
|
|
619
622
|
}
|
|
620
|
-
__name(getGraphQLType, "getGraphQLType");
|
|
621
623
|
|
|
622
624
|
// src/buildSchema/getResolvers/resolversStore.ts
|
|
623
625
|
var resolversStore = {};
|
|
@@ -630,26 +632,21 @@ async function getResolvers_default(options, mutation) {
|
|
|
630
632
|
name: key,
|
|
631
633
|
resolver: resolvers[key]
|
|
632
634
|
};
|
|
633
|
-
}).filter(({ resolver:
|
|
635
|
+
}).filter(({ resolver: resolver2 }) => !!resolver2.mutation === !!mutation).filter(({ resolver: resolver2 }) => !resolver2.private);
|
|
634
636
|
const fields = {};
|
|
635
|
-
for (const { resolver:
|
|
636
|
-
resolversStore[name] =
|
|
637
|
-
const type = await getGraphQLType(
|
|
638
|
-
const args = await getArgs_default(
|
|
637
|
+
for (const { resolver: resolver2, name } of filteredResolvers) {
|
|
638
|
+
resolversStore[name] = resolver2;
|
|
639
|
+
const type = await getGraphQLType(resolver2.returns, options);
|
|
640
|
+
const args = await getArgs_default(resolver2.params);
|
|
639
641
|
fields[name] = {
|
|
640
642
|
type,
|
|
641
643
|
args,
|
|
642
|
-
async resolve(
|
|
644
|
+
async resolve(_root, params, context, info) {
|
|
643
645
|
try {
|
|
644
|
-
const result = await
|
|
646
|
+
const result = await resolver2.resolve(params, context, info);
|
|
645
647
|
return result;
|
|
646
648
|
} catch (error) {
|
|
647
|
-
errorHandler(error, {
|
|
648
|
-
context,
|
|
649
|
-
resolver: resolver4,
|
|
650
|
-
options,
|
|
651
|
-
name
|
|
652
|
-
});
|
|
649
|
+
errorHandler(error, { context, resolver: resolver2, options, name });
|
|
653
650
|
throw error;
|
|
654
651
|
}
|
|
655
652
|
}
|
|
@@ -657,7 +654,6 @@ async function getResolvers_default(options, mutation) {
|
|
|
657
654
|
}
|
|
658
655
|
return fields;
|
|
659
656
|
}
|
|
660
|
-
__name(getResolvers_default, "default");
|
|
661
657
|
|
|
662
658
|
// src/buildSchema/getQuery.ts
|
|
663
659
|
import isEmpty from "lodash/isEmpty";
|
|
@@ -669,7 +665,6 @@ async function getQuery_default(options) {
|
|
|
669
665
|
fields
|
|
670
666
|
});
|
|
671
667
|
}
|
|
672
|
-
__name(getQuery_default, "default");
|
|
673
668
|
|
|
674
669
|
// src/buildSchema/getMutation.ts
|
|
675
670
|
import { GraphQLObjectType as GraphQLObjectType3 } from "graphql";
|
|
@@ -682,7 +677,6 @@ async function getMutation_default(options) {
|
|
|
682
677
|
fields
|
|
683
678
|
});
|
|
684
679
|
}
|
|
685
|
-
__name(getMutation_default, "default");
|
|
686
680
|
|
|
687
681
|
// src/buildSchema/getSubscription.ts
|
|
688
682
|
import { GraphQLObjectType as GraphQLObjectType4 } from "graphql";
|
|
@@ -706,7 +700,6 @@ async function getSubscriptions_default(options) {
|
|
|
706
700
|
}
|
|
707
701
|
return fields;
|
|
708
702
|
}
|
|
709
|
-
__name(getSubscriptions_default, "default");
|
|
710
703
|
|
|
711
704
|
// src/buildSchema/getSubscription.ts
|
|
712
705
|
async function getSubscription_default(options) {
|
|
@@ -717,27 +710,19 @@ async function getSubscription_default(options) {
|
|
|
717
710
|
fields
|
|
718
711
|
});
|
|
719
712
|
}
|
|
720
|
-
__name(getSubscription_default, "default");
|
|
721
713
|
|
|
722
714
|
// src/buildSchema/index.ts
|
|
723
715
|
async function buildSchema_default(options) {
|
|
724
716
|
const query = await getQuery_default(options);
|
|
725
717
|
const mutation = await getMutation_default(options);
|
|
726
718
|
const subscription = await getSubscription_default(options);
|
|
727
|
-
const schema = new GraphQLSchema({
|
|
728
|
-
query,
|
|
729
|
-
mutation,
|
|
730
|
-
subscription
|
|
731
|
-
});
|
|
719
|
+
const schema = new GraphQLSchema({ query, mutation, subscription });
|
|
732
720
|
return schema;
|
|
733
721
|
}
|
|
734
|
-
__name(buildSchema_default, "default");
|
|
735
722
|
|
|
736
723
|
// src/getApolloOptions/formatError.ts
|
|
737
724
|
function formatError_default(apolloError) {
|
|
738
|
-
let response = {
|
|
739
|
-
...apolloError
|
|
740
|
-
};
|
|
725
|
+
let response = { ...apolloError };
|
|
741
726
|
const error = apolloError.originalError;
|
|
742
727
|
if (error && error.isValidationError) {
|
|
743
728
|
response.validationErrors = error.validationErrors;
|
|
@@ -747,7 +732,6 @@ function formatError_default(apolloError) {
|
|
|
747
732
|
}
|
|
748
733
|
return response;
|
|
749
734
|
}
|
|
750
|
-
__name(formatError_default, "default");
|
|
751
735
|
|
|
752
736
|
// src/getApolloOptions/index.ts
|
|
753
737
|
import { omit } from "lodash";
|
|
@@ -768,7 +752,6 @@ async function getApolloOptions_default(options) {
|
|
|
768
752
|
formatError: formatError_default
|
|
769
753
|
};
|
|
770
754
|
}
|
|
771
|
-
__name(getApolloOptions_default, "default");
|
|
772
755
|
|
|
773
756
|
// src/startWebsocket.ts
|
|
774
757
|
import { PubSub } from "graphql-subscriptions";
|
|
@@ -777,7 +760,7 @@ import { useServer } from "graphql-ws/lib/use/ws";
|
|
|
777
760
|
|
|
778
761
|
// src/websockerViewer.ts
|
|
779
762
|
global.getWebsocketViewerRef = () => null;
|
|
780
|
-
var getWebsockerViewer =
|
|
763
|
+
var getWebsockerViewer = async (connectionParams) => {
|
|
781
764
|
try {
|
|
782
765
|
const viewer = await global.getWebsocketViewerRef(connectionParams);
|
|
783
766
|
if (!viewer) return {};
|
|
@@ -785,10 +768,10 @@ var getWebsockerViewer = /* @__PURE__ */ __name(async (connectionParams) => {
|
|
|
785
768
|
} catch {
|
|
786
769
|
return {};
|
|
787
770
|
}
|
|
788
|
-
}
|
|
789
|
-
var setGetWebsockerViewer =
|
|
771
|
+
};
|
|
772
|
+
var setGetWebsockerViewer = (getViewerFunc) => {
|
|
790
773
|
global.getWebsocketViewerRef = getViewerFunc;
|
|
791
|
-
}
|
|
774
|
+
};
|
|
792
775
|
|
|
793
776
|
// src/startWebsocket.ts
|
|
794
777
|
import { getServer } from "@orion-js/http";
|
|
@@ -804,12 +787,15 @@ function startWebsocket_default(apolloOptions, options, wsServer) {
|
|
|
804
787
|
path: "/subscriptions"
|
|
805
788
|
});
|
|
806
789
|
}
|
|
807
|
-
const serverCleanup = useServer(
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
790
|
+
const serverCleanup = useServer(
|
|
791
|
+
{
|
|
792
|
+
schema: apolloOptions.schema,
|
|
793
|
+
context: async (ctx, msg, args) => {
|
|
794
|
+
return getWebsockerViewer(ctx.connectionParams);
|
|
795
|
+
}
|
|
796
|
+
},
|
|
797
|
+
wsServer
|
|
798
|
+
);
|
|
813
799
|
return [
|
|
814
800
|
// Proper shutdown for the WebSocket server.
|
|
815
801
|
{
|
|
@@ -823,7 +809,6 @@ function startWebsocket_default(apolloOptions, options, wsServer) {
|
|
|
823
809
|
}
|
|
824
810
|
];
|
|
825
811
|
}
|
|
826
|
-
__name(startWebsocket_default, "default");
|
|
827
812
|
|
|
828
813
|
// src/startGraphQL.ts
|
|
829
814
|
import { getApp, getServer as getServer2, registerRoute as registerRoute2, route as route2 } from "@orion-js/http";
|
|
@@ -838,167 +823,156 @@ async function startGraphQL_default(options) {
|
|
|
838
823
|
startGraphiQL_default(apolloOptions, options);
|
|
839
824
|
}
|
|
840
825
|
const subPlugins = startWebsocket_default(apolloOptions, options);
|
|
841
|
-
const drainPlugins = httpServer ? [
|
|
842
|
-
ApolloServerPluginDrainHttpServer({
|
|
843
|
-
httpServer
|
|
844
|
-
})
|
|
845
|
-
] : [];
|
|
826
|
+
const drainPlugins = httpServer ? [ApolloServerPluginDrainHttpServer({ httpServer })] : [];
|
|
846
827
|
const server = new ApolloServer({
|
|
847
828
|
...apolloOptions,
|
|
848
|
-
plugins: [
|
|
849
|
-
...apolloOptions.plugins || [],
|
|
850
|
-
...drainPlugins,
|
|
851
|
-
...subPlugins
|
|
852
|
-
]
|
|
829
|
+
plugins: [...apolloOptions.plugins || [], ...drainPlugins, ...subPlugins]
|
|
853
830
|
});
|
|
854
831
|
await server.start();
|
|
855
832
|
const middleware = expressMiddleware(server, {
|
|
856
833
|
// @ts-expect-error
|
|
857
|
-
context:
|
|
834
|
+
context: ({ req, res }) => req._viewer
|
|
858
835
|
});
|
|
859
|
-
registerRoute2(
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
req
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
836
|
+
registerRoute2(
|
|
837
|
+
route2({
|
|
838
|
+
app,
|
|
839
|
+
method: "all",
|
|
840
|
+
path: "/graphql",
|
|
841
|
+
bodyParser: "json",
|
|
842
|
+
async resolve(req, res, viewer) {
|
|
843
|
+
;
|
|
844
|
+
req._viewer = viewer;
|
|
845
|
+
return middleware(req, res, req.next);
|
|
846
|
+
}
|
|
847
|
+
})
|
|
848
|
+
);
|
|
869
849
|
}
|
|
870
|
-
__name(startGraphQL_default, "default");
|
|
871
850
|
|
|
872
851
|
// src/resolversSchemas/params.ts
|
|
873
|
-
import {
|
|
852
|
+
import { createResolver } from "@orion-js/resolvers";
|
|
874
853
|
import { UserError } from "@orion-js/helpers";
|
|
875
854
|
|
|
855
|
+
// src/resolversSchemas/ResolverParamsInfo.ts
|
|
856
|
+
import { schemaWithName } from "@orion-js/schema";
|
|
857
|
+
var ResolverParamsInfo_default = schemaWithName("ResolverParams", {
|
|
858
|
+
name: {
|
|
859
|
+
type: "string"
|
|
860
|
+
},
|
|
861
|
+
params: {
|
|
862
|
+
type: "blackbox"
|
|
863
|
+
},
|
|
864
|
+
result: {
|
|
865
|
+
type: "string"
|
|
866
|
+
},
|
|
867
|
+
basicResultQuery: {
|
|
868
|
+
type: "string"
|
|
869
|
+
}
|
|
870
|
+
});
|
|
871
|
+
|
|
872
|
+
// src/resolversSchemas/serializeSchema.ts
|
|
873
|
+
import { getSchemaFromAnyOrionForm } from "@orion-js/schema";
|
|
874
|
+
|
|
876
875
|
// src/resolversSchemas/getField.ts
|
|
877
|
-
import
|
|
878
|
-
|
|
879
|
-
|
|
876
|
+
import {
|
|
877
|
+
getFieldType as getFieldType3,
|
|
878
|
+
getSchemaWithMetadataFromAnyOrionForm as getSchemaWithMetadataFromAnyOrionForm2,
|
|
879
|
+
isSchemaLike as isSchemaLike2
|
|
880
|
+
} from "@orion-js/schema";
|
|
880
881
|
import omit2 from "lodash/omit";
|
|
881
|
-
async function
|
|
882
|
-
|
|
883
|
-
if (
|
|
884
|
-
const
|
|
885
|
-
return await getParams2({
|
|
886
|
-
...field,
|
|
887
|
-
type: model
|
|
888
|
-
});
|
|
889
|
-
} else if (isArray3(type)) {
|
|
890
|
-
const serialized = await getParams2({
|
|
891
|
-
...field,
|
|
892
|
-
type: type[0]
|
|
893
|
-
});
|
|
882
|
+
async function getParams(field) {
|
|
883
|
+
const { type } = field;
|
|
884
|
+
if (Array.isArray(type)) {
|
|
885
|
+
const serialized = await getParams({ ...field, type: type[0] });
|
|
894
886
|
return {
|
|
895
887
|
...serialized,
|
|
896
|
-
type: [
|
|
897
|
-
serialized.type
|
|
898
|
-
],
|
|
888
|
+
type: [serialized.type],
|
|
899
889
|
__graphQLType: `[${serialized.__graphQLType}]`
|
|
900
890
|
};
|
|
901
|
-
}
|
|
902
|
-
|
|
903
|
-
|
|
891
|
+
}
|
|
892
|
+
const isSchema = isSchemaLike2(type);
|
|
893
|
+
if (isSchema) {
|
|
894
|
+
const schemaOfType = getSchemaWithMetadataFromAnyOrionForm2(type);
|
|
895
|
+
const modelName = schemaOfType.__modelName;
|
|
896
|
+
if (!modelName) {
|
|
897
|
+
throw new Error("The schema needs a model name to be serialized for GraphQL");
|
|
898
|
+
}
|
|
904
899
|
const fields = {};
|
|
905
|
-
for (const field2 of getStaticFields(
|
|
906
|
-
fields[field2.key] = await
|
|
900
|
+
for (const field2 of getStaticFields(schemaOfType)) {
|
|
901
|
+
fields[field2.key] = await getParams(field2);
|
|
907
902
|
}
|
|
908
903
|
return {
|
|
909
904
|
...omit2(field, "key"),
|
|
910
905
|
type: fields,
|
|
911
|
-
__graphQLType:
|
|
912
|
-
};
|
|
913
|
-
} else {
|
|
914
|
-
const schemaType = await getFieldType3(type);
|
|
915
|
-
const graphQLType = await getScalar_default(schemaType);
|
|
916
|
-
return {
|
|
917
|
-
...omit2(field, "key"),
|
|
918
|
-
type: schemaType.name,
|
|
919
|
-
__graphQLType: graphQLType.name
|
|
906
|
+
__graphQLType: `${modelName}Input`
|
|
920
907
|
};
|
|
921
908
|
}
|
|
909
|
+
const schemaType = getFieldType3(type);
|
|
910
|
+
const graphQLType = await getScalar_default(schemaType);
|
|
911
|
+
return {
|
|
912
|
+
...omit2(field, "key"),
|
|
913
|
+
type: schemaType.name,
|
|
914
|
+
__graphQLType: graphQLType.name
|
|
915
|
+
};
|
|
922
916
|
}
|
|
923
|
-
__name(getParams2, "getParams");
|
|
924
917
|
|
|
925
918
|
// src/resolversSchemas/serializeSchema.ts
|
|
919
|
+
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
926
920
|
async function serializeSchema(params) {
|
|
927
921
|
if (!params) return;
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
}
|
|
931
|
-
if (Object.keys(params).length === 0) return;
|
|
922
|
+
const schema = getSchemaFromAnyOrionForm(params);
|
|
923
|
+
if (Object.keys(schema).length === 0) return;
|
|
932
924
|
const fields = {};
|
|
933
|
-
for (const key of Object.keys(
|
|
934
|
-
const field =
|
|
935
|
-
fields[key] = await
|
|
925
|
+
for (const key of Object.keys(schema).filter((key2) => !key2.startsWith("__"))) {
|
|
926
|
+
const field = schema[key];
|
|
927
|
+
fields[key] = await getParams(field);
|
|
936
928
|
}
|
|
937
929
|
return fields;
|
|
938
930
|
}
|
|
939
|
-
|
|
931
|
+
|
|
932
|
+
// src/resolversSchemas/params.ts
|
|
933
|
+
import { getSchemaFromAnyOrionForm as getSchemaFromAnyOrionForm3, isSchemaLike as isSchemaLike4 } from "@orion-js/schema";
|
|
940
934
|
|
|
941
935
|
// src/resolversSchemas/getBasicResultQuery.ts
|
|
942
|
-
import
|
|
936
|
+
import isArray3 from "lodash/isArray";
|
|
937
|
+
import { getSchemaFromAnyOrionForm as getSchemaFromAnyOrionForm2, isSchemaLike as isSchemaLike3 } from "@orion-js/schema";
|
|
943
938
|
async function getBasicQuery(field) {
|
|
944
939
|
if (!field.type) return "";
|
|
945
|
-
if (
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
return `${key}{ ${fields.join(" ")} }`;
|
|
953
|
-
} else {
|
|
940
|
+
if (isArray3(field.type)) {
|
|
941
|
+
return getBasicQuery({
|
|
942
|
+
...field,
|
|
943
|
+
type: field.type[0]
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
if (!isSchemaLike3(field.type)) {
|
|
954
947
|
return field.key;
|
|
955
948
|
}
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
import { createModel } from "@orion-js/models";
|
|
961
|
-
import { resolver } from "@orion-js/resolvers";
|
|
962
|
-
import { isArray as isArray5 } from "lodash";
|
|
963
|
-
var resolverReturnsIsModel = /* @__PURE__ */ __name((returns) => {
|
|
964
|
-
return returns && returns.__isModel;
|
|
965
|
-
}, "resolverReturnsIsModel");
|
|
966
|
-
var ResolverParamsInfo_default = createModel({
|
|
967
|
-
name: "ResolverParams",
|
|
968
|
-
schema: {
|
|
969
|
-
name: {
|
|
970
|
-
type: String
|
|
971
|
-
}
|
|
972
|
-
},
|
|
973
|
-
resolvers: {
|
|
974
|
-
params: resolver({
|
|
975
|
-
returns: "blackbox",
|
|
976
|
-
resolve: /* @__PURE__ */ __name(async function({ resolver: resolver4 }) {
|
|
977
|
-
return await serializeSchema(resolver4.params);
|
|
978
|
-
}, "resolve")
|
|
979
|
-
}),
|
|
980
|
-
result: resolver({
|
|
981
|
-
returns: String,
|
|
982
|
-
resolve: /* @__PURE__ */ __name(async function({ resolver: resolver4 }) {
|
|
983
|
-
const returns = isArray5(resolver4.returns) ? resolver4.returns[0] : resolver4.returns;
|
|
984
|
-
if (resolverReturnsIsModel(returns)) return returns.name;
|
|
985
|
-
return;
|
|
986
|
-
}, "resolve")
|
|
987
|
-
}),
|
|
988
|
-
basicResultQuery: resolver({
|
|
989
|
-
returns: String,
|
|
990
|
-
resolve: /* @__PURE__ */ __name(async function({ resolver: resolver4 }) {
|
|
991
|
-
const returns = isArray5(resolver4.returns) ? resolver4.returns[0] : resolver4.returns;
|
|
992
|
-
return await getBasicQuery({
|
|
993
|
-
type: resolverReturnsIsModel(returns) ? returns.getSchema() : ""
|
|
994
|
-
});
|
|
995
|
-
}, "resolve")
|
|
996
|
-
})
|
|
949
|
+
const schema = getSchemaFromAnyOrionForm2(field.type);
|
|
950
|
+
const fields = [];
|
|
951
|
+
for (const field2 of getStaticFields(schema)) {
|
|
952
|
+
fields.push(await getBasicQuery(field2));
|
|
997
953
|
}
|
|
998
|
-
}
|
|
954
|
+
const key = field.key ? `${field.key} ` : "";
|
|
955
|
+
return `${key}{ ${fields.join(" ")} }`;
|
|
956
|
+
}
|
|
999
957
|
|
|
1000
958
|
// src/resolversSchemas/params.ts
|
|
1001
|
-
|
|
959
|
+
function getResultTypeName(type) {
|
|
960
|
+
const returns = Array.isArray(type) ? type[0] : type;
|
|
961
|
+
const schema = getSchemaFromAnyOrionForm3(returns);
|
|
962
|
+
if (schema == null ? void 0 : schema.__modelName) return schema.__modelName;
|
|
963
|
+
return;
|
|
964
|
+
}
|
|
965
|
+
async function getInternalBasicResultQuery(type) {
|
|
966
|
+
const returns = Array.isArray(type) ? type[0] : type;
|
|
967
|
+
if (isSchemaLike4(returns)) {
|
|
968
|
+
const schema = getSchemaFromAnyOrionForm3(returns);
|
|
969
|
+
return await getBasicQuery({
|
|
970
|
+
type: schema
|
|
971
|
+
});
|
|
972
|
+
}
|
|
973
|
+
return "";
|
|
974
|
+
}
|
|
975
|
+
var params_default = createResolver({
|
|
1002
976
|
params: {
|
|
1003
977
|
name: {
|
|
1004
978
|
type: "ID"
|
|
@@ -1009,19 +983,24 @@ var params_default = resolver2({
|
|
|
1009
983
|
},
|
|
1010
984
|
returns: ResolverParamsInfo_default,
|
|
1011
985
|
mutation: false,
|
|
1012
|
-
|
|
1013
|
-
const
|
|
1014
|
-
if (!
|
|
1015
|
-
throw new UserError(
|
|
986
|
+
async resolve({ mutation, name }) {
|
|
987
|
+
const resolver2 = resolversStore[name];
|
|
988
|
+
if (!resolver2) {
|
|
989
|
+
throw new UserError(
|
|
990
|
+
"notFound",
|
|
991
|
+
`${mutation ? "Mutation" : "Query"} named "${name}" not found`
|
|
992
|
+
);
|
|
1016
993
|
}
|
|
1017
|
-
if (!!
|
|
994
|
+
if (!!resolver2.mutation !== !!mutation) {
|
|
1018
995
|
throw new UserError("incorrectType", `"${name}" is ${mutation ? "not" : ""} a mutation`);
|
|
1019
996
|
}
|
|
1020
997
|
return {
|
|
1021
|
-
|
|
1022
|
-
|
|
998
|
+
name,
|
|
999
|
+
basicResultQuery: await getInternalBasicResultQuery(resolver2.returns),
|
|
1000
|
+
params: await serializeSchema(resolver2.params),
|
|
1001
|
+
result: getResultTypeName(resolver2.returns)
|
|
1023
1002
|
};
|
|
1024
|
-
}
|
|
1003
|
+
}
|
|
1025
1004
|
});
|
|
1026
1005
|
|
|
1027
1006
|
// src/resolversSchemas/index.ts
|
|
@@ -1033,183 +1012,224 @@ var resolversSchemas_default = {
|
|
|
1033
1012
|
import * as GraphQL2 from "graphql";
|
|
1034
1013
|
|
|
1035
1014
|
// src/types/subscription.ts
|
|
1036
|
-
var
|
|
1015
|
+
var OrionSubscription = class {
|
|
1037
1016
|
name;
|
|
1038
1017
|
params;
|
|
1039
1018
|
subscribe;
|
|
1040
1019
|
returns;
|
|
1041
1020
|
publish;
|
|
1042
1021
|
};
|
|
1043
|
-
__name(_OrionSubscription, "OrionSubscription");
|
|
1044
|
-
var OrionSubscription = _OrionSubscription;
|
|
1045
1022
|
|
|
1046
1023
|
// src/service/global.ts
|
|
1047
1024
|
import { getInstance, Service } from "@orion-js/services";
|
|
1048
|
-
import { resolver
|
|
1049
|
-
import { UserError as UserError2 } from "@orion-js/helpers";
|
|
1025
|
+
import { resolver } from "@orion-js/resolvers";
|
|
1050
1026
|
|
|
1051
|
-
// src/service/
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
};
|
|
1064
|
-
};
|
|
1027
|
+
// src/service/middlewares.ts
|
|
1028
|
+
var resolversMetadata = /* @__PURE__ */ new WeakMap();
|
|
1029
|
+
function addTargetMetadata(target, propertyKey, metadataKey, metadata, isArray4 = false) {
|
|
1030
|
+
const targetMetadata = resolversMetadata.get(target) || {};
|
|
1031
|
+
targetMetadata[propertyKey] = targetMetadata[propertyKey] || {};
|
|
1032
|
+
if (isArray4) {
|
|
1033
|
+
targetMetadata[propertyKey][metadataKey] = targetMetadata[propertyKey][metadataKey] || [];
|
|
1034
|
+
targetMetadata[propertyKey][metadataKey].unshift(metadata);
|
|
1035
|
+
} else {
|
|
1036
|
+
targetMetadata[propertyKey][metadataKey] = metadata;
|
|
1037
|
+
}
|
|
1038
|
+
resolversMetadata.set(target, targetMetadata);
|
|
1065
1039
|
}
|
|
1066
|
-
__name(createRegisterResolverMetadata, "createRegisterResolverMetadata");
|
|
1067
1040
|
function getTargetMetadata(target, propertyKey, metadataKey) {
|
|
1068
|
-
|
|
1069
|
-
|
|
1041
|
+
var _a;
|
|
1042
|
+
const targetMetadata = resolversMetadata.get(target) || {};
|
|
1043
|
+
return (_a = targetMetadata[propertyKey]) == null ? void 0 : _a[metadataKey];
|
|
1044
|
+
}
|
|
1045
|
+
function UseMiddleware(params) {
|
|
1046
|
+
return (method, context) => {
|
|
1047
|
+
const propertyKey = String(context.name);
|
|
1048
|
+
addTargetMetadata(method, propertyKey, "middlewares", params, true);
|
|
1049
|
+
return method;
|
|
1050
|
+
};
|
|
1051
|
+
}
|
|
1052
|
+
function ResolverParams(params) {
|
|
1053
|
+
return (method, context) => {
|
|
1054
|
+
const propertyKey = String(context.name);
|
|
1055
|
+
addTargetMetadata(method, propertyKey, "params", params, false);
|
|
1056
|
+
return method;
|
|
1057
|
+
};
|
|
1058
|
+
}
|
|
1059
|
+
function ResolverReturns(returns) {
|
|
1060
|
+
return (method, context) => {
|
|
1061
|
+
const propertyKey = String(context.name);
|
|
1062
|
+
addTargetMetadata(method, propertyKey, "returns", returns, false);
|
|
1063
|
+
return method;
|
|
1064
|
+
};
|
|
1070
1065
|
}
|
|
1071
|
-
__name(getTargetMetadata, "getTargetMetadata");
|
|
1072
|
-
var UseMiddleware = createRegisterResolverMetadata("middlewares", true);
|
|
1073
|
-
var ResolverParams = createRegisterResolverMetadata("params");
|
|
1074
|
-
var ResolverReturns = createRegisterResolverMetadata("returns");
|
|
1075
1066
|
|
|
1076
1067
|
// src/service/global.ts
|
|
1068
|
+
var serviceMetadata = /* @__PURE__ */ new WeakMap();
|
|
1069
|
+
var resolversMetadata2 = /* @__PURE__ */ new WeakMap();
|
|
1077
1070
|
function Resolvers() {
|
|
1078
|
-
return (target) => {
|
|
1079
|
-
Service()(target);
|
|
1080
|
-
|
|
1071
|
+
return (target, context) => {
|
|
1072
|
+
Service()(target, context);
|
|
1073
|
+
context.addInitializer(function() {
|
|
1074
|
+
serviceMetadata.set(this, { _serviceType: "resolvers" });
|
|
1075
|
+
});
|
|
1081
1076
|
};
|
|
1082
1077
|
}
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
}, "resolve")
|
|
1078
|
+
function Query(options = {}) {
|
|
1079
|
+
return (method, context) => {
|
|
1080
|
+
const propertyKey = String(context.name);
|
|
1081
|
+
context.addInitializer(function() {
|
|
1082
|
+
const resolvers = resolversMetadata2.get(this) || {};
|
|
1083
|
+
resolvers[propertyKey] = resolver({
|
|
1084
|
+
resolverId: propertyKey,
|
|
1085
|
+
params: getTargetMetadata(method, propertyKey, "params") || {},
|
|
1086
|
+
returns: getTargetMetadata(method, propertyKey, "returns") || "string",
|
|
1087
|
+
middlewares: getTargetMetadata(method, propertyKey, "middlewares") || [],
|
|
1088
|
+
...options,
|
|
1089
|
+
resolve: this[propertyKey].bind(this)
|
|
1090
|
+
});
|
|
1091
|
+
resolversMetadata2.set(this, resolvers);
|
|
1098
1092
|
});
|
|
1093
|
+
return method;
|
|
1099
1094
|
};
|
|
1100
1095
|
}
|
|
1101
|
-
__name(Query, "Query");
|
|
1102
1096
|
function Mutation(options) {
|
|
1103
|
-
return (
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1097
|
+
return (method, context) => {
|
|
1098
|
+
const propertyKey = String(context.name);
|
|
1099
|
+
context.addInitializer(function() {
|
|
1100
|
+
const resolvers = resolversMetadata2.get(this) || {};
|
|
1101
|
+
resolvers[propertyKey] = resolver({
|
|
1102
|
+
resolverId: propertyKey,
|
|
1103
|
+
params: getTargetMetadata(method, propertyKey, "params") || {},
|
|
1104
|
+
returns: getTargetMetadata(method, propertyKey, "returns") || "string",
|
|
1105
|
+
middlewares: getTargetMetadata(method, propertyKey, "middlewares") || [],
|
|
1106
|
+
...options,
|
|
1107
|
+
mutation: true,
|
|
1108
|
+
resolve: this[propertyKey].bind(this)
|
|
1109
|
+
});
|
|
1110
|
+
resolversMetadata2.set(this, resolvers);
|
|
1117
1111
|
});
|
|
1112
|
+
return method;
|
|
1118
1113
|
};
|
|
1119
1114
|
}
|
|
1120
|
-
__name(Mutation, "Mutation");
|
|
1121
1115
|
function getServiceResolvers(target) {
|
|
1122
|
-
|
|
1123
|
-
|
|
1116
|
+
const instance = getInstance(target);
|
|
1117
|
+
if (!serviceMetadata.has(instance.constructor)) {
|
|
1118
|
+
throw new Error("You must pass a class decorated with @Resolvers to getServiceResolvers");
|
|
1119
|
+
}
|
|
1120
|
+
const instanceMetadata = serviceMetadata.get(instance.constructor);
|
|
1121
|
+
if (instanceMetadata._serviceType !== "resolvers") {
|
|
1122
|
+
throw new Error("You must pass a class decorated with @Resolvers to getServiceResolvers");
|
|
1124
1123
|
}
|
|
1125
|
-
|
|
1124
|
+
const resolversMap = resolversMetadata2.get(instance) || {};
|
|
1125
|
+
return resolversMap;
|
|
1126
1126
|
}
|
|
1127
|
-
__name(getServiceResolvers, "getServiceResolvers");
|
|
1128
1127
|
|
|
1129
1128
|
// src/service/model.ts
|
|
1130
1129
|
import { getInstance as getInstance2, Service as Service2 } from "@orion-js/services";
|
|
1131
|
-
import {
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1130
|
+
import {
|
|
1131
|
+
modelResolver
|
|
1132
|
+
} from "@orion-js/resolvers";
|
|
1133
|
+
var serviceMetadata2 = /* @__PURE__ */ new WeakMap();
|
|
1134
|
+
var modelResolversMetadata = /* @__PURE__ */ new WeakMap();
|
|
1135
|
+
function ModelResolvers(typedSchema, options = {}) {
|
|
1136
|
+
return (target, context) => {
|
|
1137
|
+
Service2()(target, context);
|
|
1138
|
+
const modelName = options.modelName || typedSchema.name;
|
|
1139
|
+
context.addInitializer(function() {
|
|
1140
|
+
serviceMetadata2.set(this, {
|
|
1141
|
+
_serviceType: "modelResolvers",
|
|
1142
|
+
options,
|
|
1143
|
+
_typedSchema: typedSchema,
|
|
1144
|
+
_modelName: modelName
|
|
1145
|
+
});
|
|
1146
1146
|
});
|
|
1147
1147
|
};
|
|
1148
1148
|
}
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1149
|
+
function ModelResolver(options) {
|
|
1150
|
+
return (method, context) => {
|
|
1151
|
+
const propertyKey = String(context.name);
|
|
1152
|
+
context.addInitializer(function() {
|
|
1153
|
+
const modelResolvers = modelResolversMetadata.get(this) || {};
|
|
1154
|
+
modelResolvers[propertyKey] = modelResolver({
|
|
1155
|
+
params: getTargetMetadata(method, propertyKey, "params") || {},
|
|
1156
|
+
returns: getTargetMetadata(method, propertyKey, "returns") || "string",
|
|
1157
|
+
middlewares: getTargetMetadata(method, propertyKey, "middlewares") || [],
|
|
1158
|
+
...options,
|
|
1159
|
+
resolve: this[propertyKey].bind(this)
|
|
1160
|
+
});
|
|
1161
|
+
modelResolversMetadata.set(this, modelResolvers);
|
|
1162
|
+
});
|
|
1163
|
+
return method;
|
|
1160
1164
|
};
|
|
1161
1165
|
}
|
|
1162
|
-
__name(ModelResolvers, "ModelResolvers");
|
|
1163
1166
|
function getServiceModelResolvers(target) {
|
|
1164
|
-
|
|
1165
|
-
|
|
1167
|
+
const instance = getInstance2(target);
|
|
1168
|
+
if (!serviceMetadata2.has(instance.constructor)) {
|
|
1169
|
+
throw new Error(
|
|
1170
|
+
"You must pass a class decorated with @ModelResolvers to getServiceModelResolvers"
|
|
1171
|
+
);
|
|
1172
|
+
}
|
|
1173
|
+
const instanceMetadata = serviceMetadata2.get(instance.constructor);
|
|
1174
|
+
if (instanceMetadata._serviceType !== "modelResolvers") {
|
|
1175
|
+
throw new Error(
|
|
1176
|
+
"You must pass a class decorated with @ModelResolvers to getServiceModelResolvers"
|
|
1177
|
+
);
|
|
1166
1178
|
}
|
|
1179
|
+
const modelResolversMap = modelResolversMetadata.get(instance) || {};
|
|
1167
1180
|
return {
|
|
1168
|
-
[
|
|
1181
|
+
[instanceMetadata._modelName]: modelResolversMap
|
|
1169
1182
|
};
|
|
1170
1183
|
}
|
|
1171
|
-
__name(getServiceModelResolvers, "getServiceModelResolvers");
|
|
1172
1184
|
|
|
1173
1185
|
// src/service/subscription.ts
|
|
1174
|
-
import {
|
|
1175
|
-
|
|
1186
|
+
import { getInstance as getInstance3, Service as Service3 } from "@orion-js/services";
|
|
1187
|
+
var serviceMetadata3 = /* @__PURE__ */ new WeakMap();
|
|
1188
|
+
var subscriptionsMetadata = /* @__PURE__ */ new WeakMap();
|
|
1176
1189
|
function Subscriptions() {
|
|
1177
|
-
return (target) => {
|
|
1178
|
-
Service3()(target);
|
|
1179
|
-
|
|
1180
|
-
|
|
1190
|
+
return (target, context) => {
|
|
1191
|
+
Service3()(target, context);
|
|
1192
|
+
context.addInitializer(function() {
|
|
1193
|
+
serviceMetadata3.set(this, { _serviceType: "subscriptions" });
|
|
1194
|
+
});
|
|
1181
1195
|
};
|
|
1182
1196
|
}
|
|
1183
|
-
__name(Subscriptions, "Subscriptions");
|
|
1184
1197
|
function Subscription(options) {
|
|
1185
|
-
return (
|
|
1186
|
-
const
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
}, "value")
|
|
1198
|
+
return (_target, context) => {
|
|
1199
|
+
const propertyKey = String(context.name);
|
|
1200
|
+
context.addInitializer(function() {
|
|
1201
|
+
const repo = serviceMetadata3.get(this.constructor);
|
|
1202
|
+
if (!repo || repo._serviceType !== "subscriptions") {
|
|
1203
|
+
throw new Error(
|
|
1204
|
+
"You must pass a class decorated with @Subscriptions if you want to use @Subscription"
|
|
1205
|
+
);
|
|
1206
|
+
}
|
|
1207
|
+
const subscriptions = subscriptionsMetadata.get(this) || {};
|
|
1208
|
+
subscriptions[propertyKey] = subscription_default({
|
|
1209
|
+
name: propertyKey,
|
|
1210
|
+
...options
|
|
1211
|
+
});
|
|
1212
|
+
subscriptionsMetadata.set(this, subscriptions);
|
|
1213
|
+
this[propertyKey] = subscriptions[propertyKey];
|
|
1202
1214
|
});
|
|
1203
1215
|
};
|
|
1204
1216
|
}
|
|
1205
|
-
__name(Subscription, "Subscription");
|
|
1206
1217
|
function getServiceSubscriptions(target) {
|
|
1207
|
-
|
|
1208
|
-
|
|
1218
|
+
const instance = getInstance3(target);
|
|
1219
|
+
if (!serviceMetadata3.has(instance.constructor)) {
|
|
1220
|
+
throw new Error(
|
|
1221
|
+
"You must pass a class decorated with @Subscriptions to getServiceSubscriptions"
|
|
1222
|
+
);
|
|
1223
|
+
}
|
|
1224
|
+
const instanceMetadata = serviceMetadata3.get(instance.constructor);
|
|
1225
|
+
if (instanceMetadata._serviceType !== "subscriptions") {
|
|
1226
|
+
throw new Error(
|
|
1227
|
+
"You must pass a class decorated with @Subscriptions to getServiceSubscriptions"
|
|
1228
|
+
);
|
|
1209
1229
|
}
|
|
1210
|
-
|
|
1230
|
+
const subscriptionsMap = subscriptionsMetadata.get(instance) || {};
|
|
1231
|
+
return subscriptionsMap;
|
|
1211
1232
|
}
|
|
1212
|
-
__name(getServiceSubscriptions, "getServiceSubscriptions");
|
|
1213
1233
|
export {
|
|
1214
1234
|
GraphQL2 as GraphQL,
|
|
1215
1235
|
ModelResolver,
|