@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.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 pubsub2.asyncIterator("unauthorized");
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 pubsub2.asyncIterator("unauthorized");
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/getType/index.ts
264
- import { GraphQLList as GraphQLList2, GraphQLObjectType } from "graphql";
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 as getFieldType2,
267
- getSchemaWithMetadataFromAnyOrionForm as getSchemaWithMetadataFromAnyOrionForm2,
268
- isSchemaLike as isSchemaLike2
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/errorHandler.ts
667
- import crypto from "crypto";
668
- import { GraphQLError } from "graphql";
669
- function errorHandler(error, data) {
670
- const message = `Error in resolver "${data.name}" ${data.schema ? `of model "${data.schema.__modelName}"` : ""}`;
671
- const hash = crypto.createHash("sha1").update(error.message, "utf8").digest("hex").substring(0, 10);
672
- error.hash = hash;
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 { resolver, name } of filteredResolvers) {
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);