@orion-js/graphql 4.2.1 → 4.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +182 -165
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +186 -169
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -19,6 +19,20 @@ function getChannelName_default(name, params) {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// src/subscription/index.ts
|
|
22
|
+
var unauthorizedIterator = {
|
|
23
|
+
async next() {
|
|
24
|
+
return { value: void 0, done: true };
|
|
25
|
+
},
|
|
26
|
+
async return() {
|
|
27
|
+
return { value: void 0, done: true };
|
|
28
|
+
},
|
|
29
|
+
async throw(error) {
|
|
30
|
+
throw error;
|
|
31
|
+
},
|
|
32
|
+
[Symbol.asyncIterator]() {
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
22
36
|
var createSubscription = (options) => {
|
|
23
37
|
const subscription = {};
|
|
24
38
|
const getSubscriptionName = () => {
|
|
@@ -38,13 +52,13 @@ var createSubscription = (options) => {
|
|
|
38
52
|
if (options.canSubscribe) {
|
|
39
53
|
const canSubscribe = await options.canSubscribe(params, viewer);
|
|
40
54
|
if (!canSubscribe) {
|
|
41
|
-
return
|
|
55
|
+
return unauthorizedIterator;
|
|
42
56
|
}
|
|
43
57
|
}
|
|
44
58
|
const channelName = getChannelName_default(getSubscriptionName(), params);
|
|
45
59
|
return pubsub2.asyncIterator(channelName);
|
|
46
60
|
} catch (_error) {
|
|
47
|
-
return
|
|
61
|
+
return unauthorizedIterator;
|
|
48
62
|
}
|
|
49
63
|
};
|
|
50
64
|
subscription.params = getSchemaFromAnyOrionForm(options.params) ?? {};
|
|
@@ -260,14 +274,164 @@ import { GraphQLSchema } from "graphql";
|
|
|
260
274
|
// src/buildSchema/getQuery.ts
|
|
261
275
|
import { GraphQLObjectType as GraphQLObjectType2 } from "graphql";
|
|
262
276
|
|
|
263
|
-
// src/buildSchema/
|
|
264
|
-
import {
|
|
277
|
+
// src/buildSchema/getResolvers/index.ts
|
|
278
|
+
import { runWithOrionAsyncContext as runWithOrionAsyncContext2 } from "@orion-js/logger";
|
|
279
|
+
|
|
280
|
+
// src/errorHandler.ts
|
|
281
|
+
import crypto from "crypto";
|
|
282
|
+
import { GraphQLError } from "graphql";
|
|
283
|
+
function errorHandler(error, data) {
|
|
284
|
+
const message = `Error in resolver "${data.name}" ${data.schema ? `of model "${data.schema.__modelName}"` : ""}`;
|
|
285
|
+
const hash = crypto.createHash("sha1").update(error.message, "utf8").digest("hex").substring(0, 10);
|
|
286
|
+
error.hash = hash;
|
|
287
|
+
if (error == null ? void 0 : error.isOrionError) {
|
|
288
|
+
console.warn(message, error);
|
|
289
|
+
throw new GraphQLError(error.message, {
|
|
290
|
+
originalError: error,
|
|
291
|
+
extensions: {
|
|
292
|
+
isOrionError: !!error.isOrionError,
|
|
293
|
+
isValidationError: !!error.isValidationError,
|
|
294
|
+
code: error.code,
|
|
295
|
+
hash,
|
|
296
|
+
info: error.getInfo()
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
console.error(message, error);
|
|
301
|
+
throw new GraphQLError(`${error.message} [${hash}]`, {
|
|
302
|
+
// originalError: error,
|
|
303
|
+
extensions: {
|
|
304
|
+
isOrionError: false,
|
|
305
|
+
isValidationError: false,
|
|
306
|
+
code: "INTERNAL_SERVER_ERROR",
|
|
307
|
+
hash
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// src/buildSchema/getArgs/getField.ts
|
|
313
|
+
import { GraphQLInputObjectType, GraphQLList } from "graphql";
|
|
265
314
|
import {
|
|
266
|
-
getFieldType
|
|
267
|
-
getSchemaWithMetadataFromAnyOrionForm
|
|
268
|
-
isSchemaLike
|
|
315
|
+
getFieldType,
|
|
316
|
+
getSchemaWithMetadataFromAnyOrionForm,
|
|
317
|
+
isSchemaLike
|
|
269
318
|
} from "@orion-js/schema";
|
|
270
319
|
|
|
320
|
+
// src/buildSchema/getType/BigIntScalar.ts
|
|
321
|
+
import { GraphQLScalarType } from "graphql";
|
|
322
|
+
var MAX_INT = Number.MAX_SAFE_INTEGER;
|
|
323
|
+
var MIN_INT = Number.MIN_SAFE_INTEGER;
|
|
324
|
+
var coerceBigInt = function coerceBigInt2(value) {
|
|
325
|
+
if (value === "") {
|
|
326
|
+
throw new TypeError("BigInt cannot represent non 53-bit signed integer value: (empty string)");
|
|
327
|
+
}
|
|
328
|
+
const num = Number(value);
|
|
329
|
+
if (num > MAX_INT || num < MIN_INT) {
|
|
330
|
+
throw new TypeError("BigInt cannot represent non 53-bit signed integer value: " + String(value));
|
|
331
|
+
}
|
|
332
|
+
const int = Math.floor(num);
|
|
333
|
+
if (int !== num) {
|
|
334
|
+
throw new TypeError("BigInt cannot represent non-integer value: " + String(value));
|
|
335
|
+
}
|
|
336
|
+
return int;
|
|
337
|
+
};
|
|
338
|
+
var BigIntScalar_default = new GraphQLScalarType({
|
|
339
|
+
name: "BigInt",
|
|
340
|
+
description: "The `BigInt` scalar type represents non-fractional signed whole numeric values. BigInt can represent values between -(2^53) + 1 and 2^53 - 1. ",
|
|
341
|
+
serialize: coerceBigInt,
|
|
342
|
+
parseValue: coerceBigInt,
|
|
343
|
+
parseLiteral(ast) {
|
|
344
|
+
if (ast.kind === "IntValue") {
|
|
345
|
+
const num = parseInt(ast.value, 10);
|
|
346
|
+
if (num <= MAX_INT && num >= MIN_INT) {
|
|
347
|
+
return num;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
// src/buildSchema/getType/DateScalar.ts
|
|
355
|
+
import { GraphQLScalarType as GraphQLScalarType2 } from "graphql";
|
|
356
|
+
import { GraphQLDateTime } from "graphql-scalars";
|
|
357
|
+
var DateScalar_default = new GraphQLScalarType2({
|
|
358
|
+
name: "Date",
|
|
359
|
+
serialize: GraphQLDateTime.serialize,
|
|
360
|
+
parseValue: GraphQLDateTime.parseValue,
|
|
361
|
+
parseLiteral: GraphQLDateTime.parseLiteral
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
// src/buildSchema/getType/JSONScalar.ts
|
|
365
|
+
import { GraphQLScalarType as GraphQLScalarType3, Kind } from "graphql";
|
|
366
|
+
function identity(value) {
|
|
367
|
+
return value;
|
|
368
|
+
}
|
|
369
|
+
function parseLiteral(ast, variables) {
|
|
370
|
+
switch (ast.kind) {
|
|
371
|
+
case Kind.STRING:
|
|
372
|
+
case Kind.BOOLEAN:
|
|
373
|
+
return ast.value;
|
|
374
|
+
case Kind.INT:
|
|
375
|
+
case Kind.FLOAT:
|
|
376
|
+
return parseFloat(ast.value);
|
|
377
|
+
case Kind.OBJECT: {
|
|
378
|
+
const value = /* @__PURE__ */ Object.create(null);
|
|
379
|
+
ast.fields.forEach((field) => {
|
|
380
|
+
value[field.name.value] = parseLiteral(field.value, variables);
|
|
381
|
+
});
|
|
382
|
+
return value;
|
|
383
|
+
}
|
|
384
|
+
case Kind.LIST:
|
|
385
|
+
return ast.values.map((n) => parseLiteral(n, variables));
|
|
386
|
+
case Kind.NULL:
|
|
387
|
+
return null;
|
|
388
|
+
case Kind.VARIABLE: {
|
|
389
|
+
const name = ast.name.value;
|
|
390
|
+
return variables ? variables[name] : void 0;
|
|
391
|
+
}
|
|
392
|
+
default:
|
|
393
|
+
return void 0;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
var JSONScalar_default = new GraphQLScalarType3({
|
|
397
|
+
name: "JSON",
|
|
398
|
+
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).",
|
|
399
|
+
serialize: identity,
|
|
400
|
+
parseValue: identity,
|
|
401
|
+
parseLiteral
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
// src/buildSchema/getType/getScalar.ts
|
|
405
|
+
import * as GraphQL from "graphql";
|
|
406
|
+
var { GraphQLFloat, GraphQLString, GraphQLID, GraphQLBoolean } = GraphQL;
|
|
407
|
+
var fieldMap = {
|
|
408
|
+
string: GraphQLString,
|
|
409
|
+
email: GraphQLString,
|
|
410
|
+
date: DateScalar_default,
|
|
411
|
+
integer: BigIntScalar_default,
|
|
412
|
+
number: GraphQLFloat,
|
|
413
|
+
ID: GraphQLID,
|
|
414
|
+
boolean: GraphQLBoolean,
|
|
415
|
+
blackbox: JSONScalar_default,
|
|
416
|
+
any: JSONScalar_default
|
|
417
|
+
};
|
|
418
|
+
function getScalar_default(fieldType) {
|
|
419
|
+
if (fieldMap[fieldType.name]) {
|
|
420
|
+
return fieldMap[fieldType.name];
|
|
421
|
+
}
|
|
422
|
+
if (fieldType.name.startsWith("typedId:")) {
|
|
423
|
+
return fieldMap.string;
|
|
424
|
+
}
|
|
425
|
+
if (fieldType.toGraphQLType) {
|
|
426
|
+
const result = fieldType.toGraphQLType(GraphQL);
|
|
427
|
+
if (result.then) {
|
|
428
|
+
throw new Error("toGraphQLType cant return a promise");
|
|
429
|
+
}
|
|
430
|
+
return result;
|
|
431
|
+
}
|
|
432
|
+
throw new Error(`Field type "${fieldType.name}" has no convertion to GraphQLType`);
|
|
433
|
+
}
|
|
434
|
+
|
|
271
435
|
// ../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js
|
|
272
436
|
function type(input) {
|
|
273
437
|
if (input === null) {
|
|
@@ -451,129 +615,6 @@ function isEmpty(input) {
|
|
|
451
615
|
return false;
|
|
452
616
|
}
|
|
453
617
|
|
|
454
|
-
// src/buildSchema/getType/BigIntScalar.ts
|
|
455
|
-
import { GraphQLScalarType } from "graphql";
|
|
456
|
-
var MAX_INT = Number.MAX_SAFE_INTEGER;
|
|
457
|
-
var MIN_INT = Number.MIN_SAFE_INTEGER;
|
|
458
|
-
var coerceBigInt = function coerceBigInt2(value) {
|
|
459
|
-
if (value === "") {
|
|
460
|
-
throw new TypeError("BigInt cannot represent non 53-bit signed integer value: (empty string)");
|
|
461
|
-
}
|
|
462
|
-
const num = Number(value);
|
|
463
|
-
if (num > MAX_INT || num < MIN_INT) {
|
|
464
|
-
throw new TypeError("BigInt cannot represent non 53-bit signed integer value: " + String(value));
|
|
465
|
-
}
|
|
466
|
-
const int = Math.floor(num);
|
|
467
|
-
if (int !== num) {
|
|
468
|
-
throw new TypeError("BigInt cannot represent non-integer value: " + String(value));
|
|
469
|
-
}
|
|
470
|
-
return int;
|
|
471
|
-
};
|
|
472
|
-
var BigIntScalar_default = new GraphQLScalarType({
|
|
473
|
-
name: "BigInt",
|
|
474
|
-
description: "The `BigInt` scalar type represents non-fractional signed whole numeric values. BigInt can represent values between -(2^53) + 1 and 2^53 - 1. ",
|
|
475
|
-
serialize: coerceBigInt,
|
|
476
|
-
parseValue: coerceBigInt,
|
|
477
|
-
parseLiteral(ast) {
|
|
478
|
-
if (ast.kind === "IntValue") {
|
|
479
|
-
const num = parseInt(ast.value, 10);
|
|
480
|
-
if (num <= MAX_INT && num >= MIN_INT) {
|
|
481
|
-
return num;
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
return null;
|
|
485
|
-
}
|
|
486
|
-
});
|
|
487
|
-
|
|
488
|
-
// src/buildSchema/getType/DateScalar.ts
|
|
489
|
-
import { GraphQLScalarType as GraphQLScalarType2 } from "graphql";
|
|
490
|
-
import { GraphQLDateTime } from "graphql-scalars";
|
|
491
|
-
var DateScalar_default = new GraphQLScalarType2({
|
|
492
|
-
name: "Date",
|
|
493
|
-
serialize: GraphQLDateTime.serialize,
|
|
494
|
-
parseValue: GraphQLDateTime.parseValue,
|
|
495
|
-
parseLiteral: GraphQLDateTime.parseLiteral
|
|
496
|
-
});
|
|
497
|
-
|
|
498
|
-
// src/buildSchema/getType/JSONScalar.ts
|
|
499
|
-
import { GraphQLScalarType as GraphQLScalarType3, Kind } from "graphql";
|
|
500
|
-
function identity(value) {
|
|
501
|
-
return value;
|
|
502
|
-
}
|
|
503
|
-
function parseLiteral(ast, variables) {
|
|
504
|
-
switch (ast.kind) {
|
|
505
|
-
case Kind.STRING:
|
|
506
|
-
case Kind.BOOLEAN:
|
|
507
|
-
return ast.value;
|
|
508
|
-
case Kind.INT:
|
|
509
|
-
case Kind.FLOAT:
|
|
510
|
-
return parseFloat(ast.value);
|
|
511
|
-
case Kind.OBJECT: {
|
|
512
|
-
const value = /* @__PURE__ */ Object.create(null);
|
|
513
|
-
ast.fields.forEach((field) => {
|
|
514
|
-
value[field.name.value] = parseLiteral(field.value, variables);
|
|
515
|
-
});
|
|
516
|
-
return value;
|
|
517
|
-
}
|
|
518
|
-
case Kind.LIST:
|
|
519
|
-
return ast.values.map((n) => parseLiteral(n, variables));
|
|
520
|
-
case Kind.NULL:
|
|
521
|
-
return null;
|
|
522
|
-
case Kind.VARIABLE: {
|
|
523
|
-
const name = ast.name.value;
|
|
524
|
-
return variables ? variables[name] : void 0;
|
|
525
|
-
}
|
|
526
|
-
default:
|
|
527
|
-
return void 0;
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
var JSONScalar_default = new GraphQLScalarType3({
|
|
531
|
-
name: "JSON",
|
|
532
|
-
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).",
|
|
533
|
-
serialize: identity,
|
|
534
|
-
parseValue: identity,
|
|
535
|
-
parseLiteral
|
|
536
|
-
});
|
|
537
|
-
|
|
538
|
-
// src/buildSchema/getType/getScalar.ts
|
|
539
|
-
import * as GraphQL from "graphql";
|
|
540
|
-
var { GraphQLFloat, GraphQLString, GraphQLID, GraphQLBoolean } = GraphQL;
|
|
541
|
-
var fieldMap = {
|
|
542
|
-
string: GraphQLString,
|
|
543
|
-
email: GraphQLString,
|
|
544
|
-
date: DateScalar_default,
|
|
545
|
-
integer: BigIntScalar_default,
|
|
546
|
-
number: GraphQLFloat,
|
|
547
|
-
ID: GraphQLID,
|
|
548
|
-
boolean: GraphQLBoolean,
|
|
549
|
-
blackbox: JSONScalar_default,
|
|
550
|
-
any: JSONScalar_default
|
|
551
|
-
};
|
|
552
|
-
function getScalar_default(fieldType) {
|
|
553
|
-
if (fieldMap[fieldType.name]) {
|
|
554
|
-
return fieldMap[fieldType.name];
|
|
555
|
-
}
|
|
556
|
-
if (fieldType.name.startsWith("typedId:")) {
|
|
557
|
-
return fieldMap.string;
|
|
558
|
-
}
|
|
559
|
-
if (fieldType.toGraphQLType) {
|
|
560
|
-
const result = fieldType.toGraphQLType(GraphQL);
|
|
561
|
-
if (result.then) {
|
|
562
|
-
throw new Error("toGraphQLType cant return a promise");
|
|
563
|
-
}
|
|
564
|
-
return result;
|
|
565
|
-
}
|
|
566
|
-
throw new Error(`Field type "${fieldType.name}" has no convertion to GraphQLType`);
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
// src/buildSchema/getArgs/getField.ts
|
|
570
|
-
import { GraphQLInputObjectType, GraphQLList } from "graphql";
|
|
571
|
-
import {
|
|
572
|
-
getFieldType,
|
|
573
|
-
getSchemaWithMetadataFromAnyOrionForm,
|
|
574
|
-
isSchemaLike
|
|
575
|
-
} from "@orion-js/schema";
|
|
576
|
-
|
|
577
618
|
// src/resolversSchemas/getStaticFields.ts
|
|
578
619
|
function getStaticFields(schema) {
|
|
579
620
|
if (!schema) return [];
|
|
@@ -663,37 +704,13 @@ function getArgs_default(params, options) {
|
|
|
663
704
|
return fields;
|
|
664
705
|
}
|
|
665
706
|
|
|
666
|
-
// src/
|
|
667
|
-
import
|
|
668
|
-
import {
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
if (error == null ? void 0 : error.isOrionError) {
|
|
674
|
-
console.warn(message, error);
|
|
675
|
-
throw new GraphQLError(error.message, {
|
|
676
|
-
originalError: error,
|
|
677
|
-
extensions: {
|
|
678
|
-
isOrionError: !!error.isOrionError,
|
|
679
|
-
isValidationError: !!error.isValidationError,
|
|
680
|
-
code: error.code,
|
|
681
|
-
hash,
|
|
682
|
-
info: error.getInfo()
|
|
683
|
-
}
|
|
684
|
-
});
|
|
685
|
-
}
|
|
686
|
-
console.error(message, error);
|
|
687
|
-
throw new GraphQLError(`${error.message} [${hash}]`, {
|
|
688
|
-
// originalError: error,
|
|
689
|
-
extensions: {
|
|
690
|
-
isOrionError: false,
|
|
691
|
-
isValidationError: false,
|
|
692
|
-
code: "INTERNAL_SERVER_ERROR",
|
|
693
|
-
hash
|
|
694
|
-
}
|
|
695
|
-
});
|
|
696
|
-
}
|
|
707
|
+
// src/buildSchema/getType/index.ts
|
|
708
|
+
import { GraphQLList as GraphQLList2, GraphQLObjectType } from "graphql";
|
|
709
|
+
import {
|
|
710
|
+
getFieldType as getFieldType2,
|
|
711
|
+
getSchemaWithMetadataFromAnyOrionForm as getSchemaWithMetadataFromAnyOrionForm2,
|
|
712
|
+
isSchemaLike as isSchemaLike2
|
|
713
|
+
} from "@orion-js/schema";
|
|
697
714
|
|
|
698
715
|
// src/buildSchema/getType/getTypeAsResolver.ts
|
|
699
716
|
import { runWithOrionAsyncContext } from "@orion-js/logger";
|
|
@@ -843,17 +860,17 @@ function getGraphQLType(type2, options) {
|
|
|
843
860
|
var resolversStore = {};
|
|
844
861
|
|
|
845
862
|
// src/buildSchema/getResolvers/index.ts
|
|
846
|
-
import { runWithOrionAsyncContext as runWithOrionAsyncContext2 } from "@orion-js/logger";
|
|
847
863
|
async function getResolvers_default(options, mutation) {
|
|
848
864
|
const { resolvers } = options;
|
|
849
|
-
const filteredResolvers = Object.keys(resolvers).map((key) => {
|
|
850
|
-
return {
|
|
851
|
-
name: key,
|
|
852
|
-
resolver: resolvers[key]
|
|
853
|
-
};
|
|
854
|
-
}).filter(({ resolver }) => !!resolver.mutation === !!mutation).filter(({ resolver }) => !resolver.private);
|
|
855
865
|
const fields = {};
|
|
856
|
-
for (const
|
|
866
|
+
for (const name of Object.keys(resolvers)) {
|
|
867
|
+
const resolver = resolvers[name];
|
|
868
|
+
if (!!resolver.mutation !== !!mutation) {
|
|
869
|
+
continue;
|
|
870
|
+
}
|
|
871
|
+
if (resolver.private) {
|
|
872
|
+
continue;
|
|
873
|
+
}
|
|
857
874
|
resolversStore[name] = resolver;
|
|
858
875
|
const type2 = await getGraphQLType(resolver.returns, options);
|
|
859
876
|
const args = await getArgs_default(resolver.params, options);
|